SF.net SVN: geany: [1105] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Sat Dec 16 17:18:53 UTC 2006
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 at 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.
More information about the Commits
mailing list