Revision: 1105 http://svn.sourceforge.net/geany/?rev=1105&view=rev Author: ntrel Date: 2006-12-16 09:18:53 -0800 (Sat, 16 Dec 2006)
Log Message: ----------- Colourise C enum, union and D/Java interface typenames. Add sci_cb_lexer_get_type_keyword_idx() for use when finding if a lexer supports typename colouring.
Modified Paths: -------------- trunk/ChangeLog trunk/src/document.c trunk/src/highlighting.c trunk/src/sci_cb.c trunk/src/sci_cb.h trunk/src/symbols.c trunk/src/symbols.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-12-16 17:00:41 UTC (rev 1104) +++ trunk/ChangeLog 2006-12-16 17:18:53 UTC (rev 1105) @@ -2,6 +2,11 @@
* src/utils.c: Fix memory leak in utils_check_disk_status(). + * src/highlighting.c, src/sci_cb.c, src/sci_cb.h, src/document.c, + src/symbols.c, src/symbols.h: + Colourise C enum, union and D/Java interface typenames. + Add sci_cb_lexer_get_type_keyword_idx() for use when finding if a lexer + supports typename colouring.
2006-12-15 Enrico Tröger enrico.troeger@uvena.de
Modified: trunk/src/document.c =================================================================== --- trunk/src/document.c 2006-12-16 17:00:41 UTC (rev 1104) +++ trunk/src/document.c 2006-12-16 17:18:53 UTC (rev 1105) @@ -20,7 +20,6 @@ * $Id$ */
-#include "SciLexer.h" #include "geany.h"
#ifdef TIME_WITH_SYS_TIME @@ -1295,8 +1294,7 @@
if (tags_array) { - s = symbols_find_tags_as_string(tags_array, - tm_tag_typedef_t | tm_tag_struct_t | tm_tag_class_t); + s = symbols_find_tags_as_string(tags_array, TM_GLOBAL_TYPE_MASK); } } return s; @@ -1308,28 +1306,31 @@ { gboolean ret = FALSE;
- // For C/C++/Java files, get list of typedefs for colourising - if (sci_cb_lexer_is_c_like(sci_get_lexer(sci))) + if (sci_cb_lexer_get_type_keyword_idx(sci_get_lexer(sci)) != -1) { + guint n; GString *s = get_project_typenames();
- if (s != NULL) + if (s == NULL) return FALSE; + + for (n = 0; n < doc_array->len; n++) { - guint n; + ScintillaObject *wid = doc_list[n].sci;
- for (n = 0; n < doc_array->len; n++) + if (wid) { - ScintillaObject *wid = doc_list[n].sci; + gint keyword_idx = sci_cb_lexer_get_type_keyword_idx(sci_get_lexer(wid));
- if (wid && sci_cb_lexer_is_c_like(sci_get_lexer(wid))) + if (keyword_idx > 0) { - sci_set_keywords(wid, 3, s->str); + sci_set_keywords(wid, keyword_idx, s->str); sci_colourise(wid, 0, -1); + if (sci == wid) + ret = TRUE; } } - g_string_free(s, TRUE); - ret = TRUE; } + g_string_free(s, TRUE); } return ret; }
Modified: trunk/src/highlighting.c =================================================================== --- trunk/src/highlighting.c 2006-12-16 17:00:41 UTC (rev 1104) +++ trunk/src/highlighting.c 2006-12-16 17:18:53 UTC (rev 1105) @@ -355,8 +355,7 @@
if (tags_array) { - s = symbols_find_tags_as_string(tags_array, - tm_tag_typedef_t | tm_tag_struct_t | tm_tag_class_t); + s = symbols_find_tags_as_string(tags_array, TM_GLOBAL_TYPE_MASK); } } return s;
Modified: trunk/src/sci_cb.c =================================================================== --- trunk/src/sci_cb.c 2006-12-16 17:00:41 UTC (rev 1104) +++ trunk/src/sci_cb.c 2006-12-16 17:18:53 UTC (rev 1105) @@ -1754,7 +1754,7 @@ if (style == SCE_C_COMMENT || style == SCE_C_COMMENTLINE || style == SCE_C_COMMENTDOC || - style == SCE_D_COMMENTLINEDOC || + style == SCE_C_COMMENTLINEDOC || style == SCE_C_CHARACTER || style == SCE_C_PREPROCESSOR || style == SCE_C_STRING) @@ -1867,6 +1867,7 @@ }
+#if 0 gboolean sci_cb_lexer_is_c_like(gint lexer) { switch (lexer) @@ -1879,4 +1880,19 @@ return FALSE; } } +#endif
+ +// Returns: -1 if lexer doesn't support type keywords +gint sci_cb_lexer_get_type_keyword_idx(gint lexer) +{ + switch (lexer) + { + case SCLEX_CPP: + case SCLEX_D: + return 3; + + default: + return -1; + } +}
Modified: trunk/src/sci_cb.h =================================================================== --- trunk/src/sci_cb.h 2006-12-16 17:00:41 UTC (rev 1104) +++ trunk/src/sci_cb.h 2006-12-16 17:18:53 UTC (rev 1105) @@ -81,4 +81,6 @@
gboolean sci_cb_lexer_is_c_like(gint lexer);
+gint sci_cb_lexer_get_type_keyword_idx(gint lexer); + #endif
Modified: trunk/src/symbols.c =================================================================== --- trunk/src/symbols.c 2006-12-16 17:00:41 UTC (rev 1104) +++ trunk/src/symbols.c 2006-12-16 17:18:53 UTC (rev 1105) @@ -32,6 +32,11 @@ #include "document.h"
+const guint TM_GLOBAL_TYPE_MASK = + tm_tag_class_t | tm_tag_enum_t | tm_tag_interface_t | + tm_tag_struct_t | tm_tag_typedef_t | tm_tag_union_t; + + enum // Geany tag files { GTF_C, @@ -133,8 +138,9 @@ { if (TM_TAG(typedefs->pdata[j])->name) { + if (j != 0) + g_string_append_c(s, ' '); g_string_append(s, TM_TAG(typedefs->pdata[j])->name); - g_string_append_c(s, ' '); } } }
Modified: trunk/src/symbols.h =================================================================== --- trunk/src/symbols.h 2006-12-16 17:00:41 UTC (rev 1104) +++ trunk/src/symbols.h 2006-12-16 17:18:53 UTC (rev 1105) @@ -25,6 +25,9 @@ #ifndef GEANY_SYMBOLS_H #define GEANY_SYMBOLS_H 1
+extern const guint TM_GLOBAL_TYPE_MASK; + + void symbols_global_tags_loaded(gint file_type_idx);
GString *symbols_find_tags_as_string(GPtrArray *tags_array, guint tag_types);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.