SF.net SVN: geany: [1144] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Sun Dec 24 12:07:35 UTC 2006
Revision: 1144
http://svn.sourceforge.net/geany/?rev=1144&view=rev
Author: ntrel
Date: 2006-12-24 04:07:35 -0800 (Sun, 24 Dec 2006)
Log Message:
-----------
Only call SCI_BRACEMATCH once in sci_cb_highlight_braces().
Separate find_calltip() from sci_cb_show_calltip().
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/sci_cb.c
trunk/src/utils.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2006-12-22 15:59:01 UTC (rev 1143)
+++ trunk/ChangeLog 2006-12-24 12:07:35 UTC (rev 1144)
@@ -1,3 +1,10 @@
+2006-12-24 Nick Treleaven <nick.treleaven at btinternet.com>
+
+ * src/utils.c, src/sci_cb.c:
+ Only call SCI_BRACEMATCH once in sci_cb_highlight_braces().
+ Separate find_calltip() from sci_cb_show_calltip().
+
+
2006-12-22 Nick Treleaven <nick.treleaven at btinternet.com>
* src/utils.c:
Modified: trunk/src/sci_cb.c
===================================================================
--- trunk/src/sci_cb.c 2006-12-22 15:59:01 UTC (rev 1143)
+++ trunk/src/sci_cb.c 2006-12-24 12:07:35 UTC (rev 1144)
@@ -536,14 +536,35 @@
}
+static gchar *find_calltip(const gchar *word, filetype *ft)
+{
+ TMTag *tag;
+ const GPtrArray *tags;
+
+ g_return_val_if_fail(ft && word && *word, NULL);
+
+ tags = tm_workspace_find(word, tm_tag_max_t, NULL, FALSE, ft->lang);
+ if (tags->len == 1 && TM_TAG(tags->pdata[0])->atts.entry.arglist)
+ {
+ tag = TM_TAG(tags->pdata[0]);
+ if (tag->atts.entry.var_type)
+ return g_strconcat(tag->atts.entry.var_type, " ", tag->name,
+ " ", tag->atts.entry.arglist, NULL);
+ else
+ return g_strconcat(tag->name, " ", tag->atts.entry.arglist, NULL);
+ }
+ else
+ return NULL;
+}
+
+
gboolean sci_cb_show_calltip(gint idx, gint pos)
{
gint orig_pos = pos; // the position for the calltip
gint lexer;
gint style;
gchar word[GEANY_MAX_WORD_LENGTH];
- TMTag *tag;
- const GPtrArray *tags;
+ gchar *str;
ScintillaObject *sci;
if (idx == -1 || ! doc_list[idx].is_valid || doc_list[idx].file_type == NULL) return FALSE;
@@ -573,23 +594,17 @@
sci_cb_find_current_word(sci, pos - 1, word, sizeof word);
if (word[0] == '\0') return FALSE;
- tags = tm_workspace_find(word, tm_tag_max_t, NULL, FALSE, doc_list[idx].file_type->lang);
- if (tags->len == 1 && TM_TAG(tags->pdata[0])->atts.entry.arglist)
+ str = find_calltip(word, doc_list[idx].file_type);
+ if (str)
{
- tag = TM_TAG(tags->pdata[0]);
g_free(calltip.text); // free the old calltip
+ calltip.text = str;
calltip.set = TRUE;
- if (tag->atts.entry.var_type)
- calltip.text = g_strconcat(tag->atts.entry.var_type, " ", tag->name,
- " ", tag->atts.entry.arglist, NULL);
- else
- calltip.text = g_strconcat(tag->name, " ", tag->atts.entry.arglist, NULL);
-
utils_wrap_string(calltip.text, -1);
SSM(sci, SCI_CALLTIPSHOW, orig_pos, (sptr_t) calltip.text);
+ return TRUE;
}
-
- return TRUE;
+ return FALSE;
}
@@ -1627,48 +1642,24 @@
void sci_cb_highlight_braces(ScintillaObject *sci, gint cur_pos)
{
-#if 0
- // is it useful (or performant) to check for lexer and style, only to prevent brace highlighting in comments
- gint lexer = SSM(sci, SCI_GETLEXER, 0, 0);
- gint style = SSM(sci, SCI_GETSTYLEAT, cur_pos - 2, 0);
+ gint brace_pos = cur_pos - 1;
+ gint end_pos;
- if (lexer == SCLEX_CPP && (
- style == SCE_C_COMMENT ||
- style == SCE_C_COMMENTLINE ||
- style == SCE_C_COMMENTDOC ||
- style == SCE_C_COMMENTLINEDOC ||
- style == SCE_C_STRING ||
- style == SCE_C_PREPROCESSOR)) return;
- if (lexer == SCLEX_HTML && (style == SCE_HPHP_COMMENT ||
- style == SCE_H_COMMENT ||
- style == SCE_H_SGML_COMMENT ||
- style == SCE_H_XCCOMMENT)) return;
- if (lexer == SCLEX_PASCAL && (
- style == SCE_C_COMMENT ||
- style == SCE_C_COMMENTLINE ||
- style == SCE_C_COMMENTDOC ||
- style == SCE_C_COMMENTLINEDOC)) return;
-#endif
- if (utils_isbrace(sci_get_char_at(sci, cur_pos)) || utils_isbrace(sci_get_char_at(sci, cur_pos - 1)))
+ if (! utils_isbrace(sci_get_char_at(sci, brace_pos)))
{
- gint end_pos = SSM(sci, SCI_BRACEMATCH, cur_pos, 0);
- gint end_pos_prev = SSM(sci, SCI_BRACEMATCH, (cur_pos - 1), 0);
- if (end_pos >= 0)
- SSM(sci, SCI_BRACEHIGHLIGHT, cur_pos, end_pos);
- else if (end_pos_prev >= 0)
- SSM(sci, SCI_BRACEHIGHLIGHT, (cur_pos - 1), end_pos_prev);
- else
+ brace_pos++;
+ if (! utils_isbrace(sci_get_char_at(sci, brace_pos)))
{
- if (utils_isbrace(sci_get_char_at(sci, cur_pos)))
- SSM(sci, SCI_BRACEBADLIGHT, cur_pos, 0);
- if (utils_isbrace(sci_get_char_at(sci, cur_pos - 1)))
- SSM(sci, SCI_BRACEBADLIGHT, cur_pos - 1, 0);
+ SSM(sci, SCI_BRACEBADLIGHT, -1, 0);
+ return;
}
}
+ end_pos = SSM(sci, SCI_BRACEMATCH, brace_pos, 0);
+
+ if (end_pos >= 0)
+ SSM(sci, SCI_BRACEHIGHLIGHT, brace_pos, end_pos);
else
- {
- SSM(sci, SCI_BRACEBADLIGHT, -1, 0);
- }
+ SSM(sci, SCI_BRACEBADLIGHT, brace_pos, 0);
}
Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c 2006-12-22 15:59:01 UTC (rev 1143)
+++ trunk/src/utils.c 2006-12-24 12:07:35 UTC (rev 1144)
@@ -141,18 +141,13 @@
gboolean utils_isbrace(gchar c)
{
- // match < and > only if desired, because I don't like it, but some people do
- if (app->brace_match_ltgt)
- {
- switch (c)
- {
- case '<':
- case '>': return TRUE;
- }
- }
-
switch (c)
{
+ // match < and > only if desired, because I don't like it, but some people do
+ case '<':
+ case '>':
+ return app->brace_match_ltgt;
+
case '(':
case ')':
case '{':
@@ -168,17 +163,12 @@
gboolean utils_is_opening_brace(gchar c)
{
- // match < only if desired, because I don't like it, but some people do
- if (app->brace_match_ltgt)
- {
- switch (c)
- {
- case '<': return TRUE;
- }
- }
-
switch (c)
{
+ // match < only if desired, because I don't like it, but some people do
+ case '<':
+ return app->brace_match_ltgt;
+
case '(':
case '{':
case '[': return TRUE;
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