Revision: 2966 http://geany.svn.sourceforge.net/geany/?rev=2966&view=rev Author: eht16 Date: 2008-09-17 18:05:27 +0000 (Wed, 17 Sep 2008)
Log Message: ----------- Replace the usage of the old Scintilla indicator API by the new modern API and remove old hacks (patch by Jason Oster, thanks). Add new sci_indic_clear() function to the plugin API.
Modified Paths: -------------- trunk/ChangeLog trunk/src/editor.c trunk/src/highlighting.c trunk/src/plugindata.h trunk/src/plugins.c trunk/src/sciwrappers.c trunk/src/sciwrappers.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2008-09-17 18:03:52 UTC (rev 2965) +++ trunk/ChangeLog 2008-09-17 18:05:27 UTC (rev 2966) @@ -11,6 +11,11 @@ Rename sci_find_bracematch() into sci_find_matching_brace(). * src/main.c: Display SVN revision number in version information if available. + * src/editor.c, src/highlighting.c, src/plugindata.h, src/plugins.c, + src/sciwrappers.c, src/sciwrappers.h: + Replace the usage of the old Scintilla indicator API by the new + modern API and remove old hacks (patch by Jason Oster, thanks). + Add new sci_indic_clear() function to the plugin API.
2008-09-17 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/editor.c =================================================================== --- trunk/src/editor.c 2008-09-17 18:03:52 UTC (rev 2965) +++ trunk/src/editor.c 2008-09-17 18:05:27 UTC (rev 2966) @@ -1467,13 +1467,6 @@ lexer = SSM(sci, SCI_GETLEXER, 0, 0); style = SSM(sci, SCI_GETSTYLEAT, pos - 2, 0);
- /** TODO if we use other indicators in the future, we should adjust this code, currently - * it works only for the third indicator (INDIC2_MASK) */ - if (style & INDIC2_MASK) - { /* remove the indicator bit from the style */ - style &= 0x0000000f; - } - /* don't autocomplete in comments and strings */ if (!force && !is_code_style(lexer, style)) return FALSE; @@ -3277,10 +3270,8 @@
last_pos = sci_get_length(editor->sci); if (last_pos > 0) - { - sci_start_styling(editor->sci, 0, INDIC2_MASK); - sci_set_styling(editor->sci, last_pos, 0); - } + sci_indic_clear(editor->sci, 0, last_pos); + sci_marker_delete_all(editor->sci, 0); /* remove the yellow error line marker */ }
@@ -3337,17 +3328,11 @@ **/ void editor_set_indicator(GeanyEditor *editor, gint start, gint end) { - gint current_mask; - if (editor == NULL || start >= end) return;
- current_mask = sci_get_style_at(editor->sci, start); - current_mask &= INDICS_MASK; - current_mask |= INDIC2_MASK; - - sci_start_styling(editor->sci, start, INDIC2_MASK); - sci_set_styling(editor->sci, end - start, current_mask); + sci_set_indic(editor->sci, 0); + sci_indic_fill(editor->sci, start, end - start); }
Modified: trunk/src/highlighting.c =================================================================== --- trunk/src/highlighting.c 2008-09-17 18:03:52 UTC (rev 2965) +++ trunk/src/highlighting.c 2008-09-17 18:05:27 UTC (rev 2966) @@ -459,10 +459,8 @@ SSM(sci, SCI_SETWRAPSTARTINDENT, common_style_set.styling[GCS_LINE_WRAP_INDENT].foreground, 0);
/* indicator settings */ - SSM(sci, SCI_INDICSETSTYLE, 2, INDIC_SQUIGGLE); - /* why? if I let this out, the indicator remains green with PHP */ + SSM(sci, SCI_INDICSETSTYLE, 0, INDIC_SQUIGGLE); SSM(sci, SCI_INDICSETFORE, 0, invert(0x0000ff)); - SSM(sci, SCI_INDICSETFORE, 2, invert(0x0000ff));
/* define marker symbols * 0 -> line marker */
Modified: trunk/src/plugindata.h =================================================================== --- trunk/src/plugindata.h 2008-09-17 18:03:52 UTC (rev 2965) +++ trunk/src/plugindata.h 2008-09-17 18:05:27 UTC (rev 2966) @@ -41,7 +41,7 @@ enum { /** The Application Programming Interface (API) version, incremented * whenever any plugin data types are modified or appended to. */ - GEANY_API_VERSION = 93, + GEANY_API_VERSION = 94,
/** The Application Binary Interface (ABI) version, incremented whenever * existing fields in the plugin data types have to be changed or reordered. */ @@ -275,6 +275,7 @@ gint (*get_current_line) (struct _ScintillaObject *sci); gboolean (*has_selection) (struct _ScintillaObject *sci); gint (*get_tab_width) (struct _ScintillaObject *sci); + gint (*indic_clear) (struct _ScintillaObject *sci, gint start, gint end); } ScintillaFuncs;
Modified: trunk/src/plugins.c =================================================================== --- trunk/src/plugins.c 2008-09-17 18:03:52 UTC (rev 2965) +++ trunk/src/plugins.c 2008-09-17 18:05:27 UTC (rev 2966) @@ -154,7 +154,8 @@ &sci_get_char_at, &sci_get_current_line, &sci_has_selection, - &sci_get_tab_width + &sci_get_tab_width, + &sci_indic_clear };
static TemplateFuncs template_funcs = {
Modified: trunk/src/sciwrappers.c =================================================================== --- trunk/src/sciwrappers.c 2008-09-17 18:03:52 UTC (rev 2965) +++ trunk/src/sciwrappers.c 2008-09-17 18:05:27 UTC (rev 2966) @@ -1010,6 +1010,26 @@ SSM(sci, SCI_STARTSTYLING, pos, mask); }
+gint sci_get_indic(ScintillaObject *sci) +{ + return SSM(sci, SCI_GETINDICATORCURRENT, 0, 0); +} + +void sci_set_indic(ScintillaObject *sci, gint indic) +{ + SSM(sci, SCI_SETINDICATORCURRENT, indic, 0); +} + +void sci_indic_fill(ScintillaObject *sci, gint pos, gint len) +{ + SSM(sci, SCI_INDICATORFILLRANGE, pos, len); +} + +void sci_indic_clear(ScintillaObject *sci, gint pos, gint len) +{ + SSM(sci, SCI_INDICATORCLEARRANGE, pos, len); +} + void sci_select_all(ScintillaObject *sci) { SSM(sci, SCI_SELECTALL, 0, 0);
Modified: trunk/src/sciwrappers.h =================================================================== --- trunk/src/sciwrappers.h 2008-09-17 18:03:52 UTC (rev 2965) +++ trunk/src/sciwrappers.h 2008-09-17 18:05:27 UTC (rev 2966) @@ -161,6 +161,12 @@
void sci_set_styling (ScintillaObject * sci, gint len, gint style); void sci_start_styling (ScintillaObject * sci, gint pos, gint mask); + +gint sci_get_indic (ScintillaObject * sci); +void sci_set_indic (ScintillaObject * sci, gint indic); +void sci_indic_fill (ScintillaObject * sci, gint pos, gint len); +void sci_indic_clear (ScintillaObject * sci, gint pos, gint len); + void sci_select_all (ScintillaObject * sci); gint sci_get_line_indent_position(ScintillaObject * sci, gint line); void sci_set_line_indentation (ScintillaObject * sci, gint line, gint indent);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.