[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53410] trunk/blender: patch [#33609] Syntax highlighting for OSL in Text Editor
Campbell Barton
ideasman42 at gmail.com
Sat Dec 29 19:25:09 CET 2012
Revision: 53410
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53410
Author: campbellbarton
Date: 2012-12-29 18:25:03 +0000 (Sat, 29 Dec 2012)
Log Message:
-----------
patch [#33609] Syntax highlighting for OSL in Text Editor
from Patrick Boelens (senshi). with modifications to split it into its own function.
also added C style multi-line comment support /* ... */
I've left out the part of this patch that sets the language in the space, since I think this might be better stored in the text block.
For now it simply uses OSL syntax highlighting when the extension is '.osl'.
Modified Paths:
--------------
trunk/blender/doc/python_api/sphinx_doc_gen.py
trunk/blender/source/blender/blenkernel/BKE_blender.h
trunk/blender/source/blender/editors/include/UI_resources.h
trunk/blender/source/blender/editors/interface/resources.c
trunk/blender/source/blender/editors/space_text/CMakeLists.txt
trunk/blender/source/blender/editors/space_text/space_text.c
trunk/blender/source/blender/editors/space_text/text_draw.c
trunk/blender/source/blender/editors/space_text/text_format.c
trunk/blender/source/blender/editors/space_text/text_format.h
trunk/blender/source/blender/makesdna/DNA_text_types.h
trunk/blender/source/blender/makesdna/DNA_userdef_types.h
trunk/blender/source/blender/makesrna/intern/rna_userdef.c
Added Paths:
-----------
trunk/blender/source/blender/editors/space_text/text_format_osl.c
Modified: trunk/blender/doc/python_api/sphinx_doc_gen.py
===================================================================
--- trunk/blender/doc/python_api/sphinx_doc_gen.py 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/doc/python_api/sphinx_doc_gen.py 2012-12-29 18:25:03 UTC (rev 53410)
@@ -612,6 +612,10 @@
'''
function or class method to sphinx
'''
+
+ if type(py_func) == type(bpy.types.Space.draw_handler_add):
+ return
+
arg_str = inspect.formatargspec(*inspect.getargspec(py_func))
if not is_class:
Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h 2012-12-29 18:25:03 UTC (rev 53410)
@@ -42,7 +42,7 @@
* and keep comment above the defines.
* Use STRINGIFY() rather than defining with quotes */
#define BLENDER_VERSION 265
-#define BLENDER_SUBVERSION 3
+#define BLENDER_SUBVERSION 4
/* 262 was the last editmesh release but it has compatibility code for bmesh data */
#define BLENDER_MINVERSION 262
Modified: trunk/blender/source/blender/editors/include/UI_resources.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_resources.h 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/source/blender/editors/include/UI_resources.h 2012-12-29 18:25:03 UTC (rev 53410)
@@ -122,8 +122,10 @@
TH_SYNTAX_B,
TH_SYNTAX_V,
+ TH_SYNTAX_R,
TH_SYNTAX_C,
TH_SYNTAX_L,
+ TH_SYNTAX_D,
TH_SYNTAX_N,
TH_BONE_SOLID,
Modified: trunk/blender/source/blender/editors/interface/resources.c
===================================================================
--- trunk/blender/source/blender/editors/interface/resources.c 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/source/blender/editors/interface/resources.c 2012-12-29 18:25:03 UTC (rev 53410)
@@ -358,6 +358,10 @@
cp = ts->syntaxc; break;
case TH_SYNTAX_L:
cp = ts->syntaxl; break;
+ case TH_SYNTAX_D:
+ cp = ts->syntaxd; break;
+ case TH_SYNTAX_R:
+ cp = ts->syntaxr; break;
case TH_SYNTAX_N:
cp = ts->syntaxn; break;
@@ -880,10 +884,12 @@
/* syntax highlighting */
rgba_char_args_set(btheme->text.syntaxn, 0, 0, 200, 255); /* Numbers Blue*/
- rgba_char_args_set(btheme->text.syntaxl, 100, 0, 0, 255); /* Strings red */
- rgba_char_args_set(btheme->text.syntaxc, 0, 100, 50, 255); /* Comments greenish */
- rgba_char_args_set(btheme->text.syntaxv, 95, 95, 0, 255); /* Special */
- rgba_char_args_set(btheme->text.syntaxb, 128, 0, 80, 255); /* Builtin, red-purple */
+ rgba_char_args_set(btheme->text.syntaxl, 100, 0, 0, 255); /* Strings Red */
+ rgba_char_args_set(btheme->text.syntaxc, 0, 100, 50, 255); /* Comments Greenish */
+ rgba_char_args_set(btheme->text.syntaxv, 95, 95, 0, 255); /* Special Yellow*/
+ rgba_char_args_set(btheme->text.syntaxd, 50, 0, 140, 255); /* Decorator/Preprocessor Dir. Blue-purple */
+ rgba_char_args_set(btheme->text.syntaxr, 140, 60, 0, 255); /* Reserved Orange*/
+ rgba_char_args_set(btheme->text.syntaxb, 128, 0, 80, 255); /* Builtin Red-purple */
/* space oops */
btheme->toops = btheme->tv3d;
@@ -2081,6 +2087,14 @@
}
}
}
+
+ if (!MAIN_VERSION_ATLEAST(bmain, 266, 4)) {
+ bTheme *btheme;
+ for (btheme = U.themes.first; btheme; btheme = btheme->next) {
+ rgba_char_args_set(btheme->text.syntaxd, 50, 0, 140, 255); /* Decorator/Preprocessor Dir. Blue-purple */
+ rgba_char_args_set(btheme->text.syntaxr, 140, 60, 0, 255); /* Reserved Orange */
+ }
+ }
if (U.pixelsize == 0.0f)
U.pixelsize = 1.0f;
Modified: trunk/blender/source/blender/editors/space_text/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/editors/space_text/CMakeLists.txt 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/source/blender/editors/space_text/CMakeLists.txt 2012-12-29 18:25:03 UTC (rev 53410)
@@ -38,6 +38,7 @@
space_text.c
text_draw.c
text_format.c
+ text_format_osl.c
text_format_py.c
text_header.c
text_ops.c
Modified: trunk/blender/source/blender/editors/space_text/space_text.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/space_text.c 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/source/blender/editors/space_text/space_text.c 2012-12-29 18:25:03 UTC (rev 53410)
@@ -555,5 +555,6 @@
/* register formatters */
ED_text_format_register_py();
+ ED_text_format_register_osl();
}
Modified: trunk/blender/source/blender/editors/space_text/text_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_draw.c 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/source/blender/editors/space_text/text_draw.c 2012-12-29 18:25:03 UTC (rev 53410)
@@ -131,9 +131,15 @@
case 'l': /* Strings */
UI_ThemeColor(TH_SYNTAX_L);
break;
+ case 'd': /* Preprocessor directive */
+ UI_ThemeColor(TH_SYNTAX_D);
+ break;
case 'v': /* Specials: class, def */
UI_ThemeColor(TH_SYNTAX_V);
break;
+ case 'r': /* Reserved keywords */
+ UI_ThemeColor(TH_SYNTAX_R);
+ break;
case 'b': /* Keywords: for, print, etc. */
UI_ThemeColor(TH_SYNTAX_B);
break;
Modified: trunk/blender/source/blender/editors/space_text/text_format.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_format.c 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/source/blender/editors/space_text/text_format.c 2012-12-29 18:25:03 UTC (rev 53410)
@@ -147,10 +147,16 @@
BLI_addtail(&tft_lb, tft);
}
-TextFormatType *ED_text_format_get(Text *UNUSED(text))
+TextFormatType *ED_text_format_get(Text *text)
{
/* NOTE: once more types are added we'll need to return some type based on 'text'
* for now this function is more of a placeholder */
- return tft_lb.first;
+ /* XXX, wrong, but OK for testing */
+ if (BLI_testextensie(text->id.name + 2, ".osl")) {
+ return tft_lb.last;
+ }
+ else {
+ return tft_lb.first;
+ }
}
Modified: trunk/blender/source/blender/editors/space_text/text_format.h
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_format.h 2012-12-29 18:20:14 UTC (rev 53409)
+++ trunk/blender/source/blender/editors/space_text/text_format.h 2012-12-29 18:25:03 UTC (rev 53410)
@@ -60,7 +60,9 @@
* '!' Punctuation and other symbols
* 'n' Numerals
* 'l' String letters
+ * 'd' Decorator / Preprocessor directive
* 'v' Special variables (class, def)
+ * 'r' Reserved keywords currently not in use, but still prohibited (OSL -> switch e.g.)
* 'b' Built-in names (print, for, etc.)
* 'q' Other text (identifiers, etc.)
* It is terminated with a null-terminator '\0' followed by a continuation
@@ -75,6 +77,7 @@
/* formatters */
void ED_text_format_register_py(void);
+void ED_text_format_register_osl(void);
#define STR_LITERAL_STARTSWITH(str, str_literal, len_var) \
(strncmp(str, str_literal, len_var = (sizeof(str_literal) - 1)) == 0)
Added: trunk/blender/source/blender/editors/space_text/text_format_osl.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_format_osl.c (rev 0)
+++ trunk/blender/source/blender/editors/space_text/text_format_osl.c 2012-12-29 18:25:03 UTC (rev 53410)
@@ -0,0 +1,331 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/editors/space_text/text_format_py.c
+ * \ingroup sptext
+ */
+
+#include <string.h>
+
+#include "BLI_blenlib.h"
+
+#include "DNA_text_types.h"
+#include "DNA_space_types.h"
+
+#include "BKE_text.h"
+
+#include "text_format.h"
+
+/* *** Local Functions (for format_line) *** */
+
+static int txtfmt_osl_find_builtinfunc(const char *string)
+{
+ int i, len;
+ /* list is from...
+ * XXX - link to docs!
+ */
+ if (STR_LITERAL_STARTSWITH(string, "break", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "closure", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "color", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "continue", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "do", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "else", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "emit", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "float", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "for", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "if", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "illuminance", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "illuminate", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "int", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "matrix", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "normal", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "output", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "point", len)) i = len;
+ else if (STR_LITERAL_STARTSWITH(string, "public", len)) i = len;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list