Revision: 2587 http://geany.svn.sourceforge.net/geany/?rev=2587&view=rev Author: eht16 Date: 2008-05-14 10:58:56 -0700 (Wed, 14 May 2008)
Log Message: ----------- Move indicator functions from document.c into editor.c.
Modified Paths: -------------- trunk/ChangeLog trunk/plugins/pluginmacros.h trunk/src/build.c trunk/src/callbacks.c trunk/src/document.c trunk/src/document.h trunk/src/editor.c trunk/src/editor.h trunk/src/msgwindow.c trunk/src/plugindata.h trunk/src/plugins.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/ChangeLog 2008-05-14 17:58:56 UTC (rev 2587) @@ -20,6 +20,10 @@ the default case. * src/filetypes.c: Add shebang detection for Makefiles. + * src/build.c, src/plugindata.h, src/msgwindow.c, src/callbacks.c, + src/filetypes.c, src/document.c, src/plugins.c, src/document.h, + src/main.c, src/editor.c, src/editor.h, plugins/pluginmacros.h: + Move indicator functions from document.c into editor.c.
2008-05-14 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/plugins/pluginmacros.h =================================================================== --- trunk/plugins/pluginmacros.h 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/plugins/pluginmacros.h 2008-05-14 17:58:56 UTC (rev 2587) @@ -55,6 +55,7 @@ #define p_tm geany_data->tm #define p_ui geany_data->ui #define p_utils geany_data->utils +#define p_editor geany_data->editor
#else
Modified: trunk/src/build.c =================================================================== --- trunk/src/build.c 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/build.c 2008-05-14 17:58:56 UTC (rev 2587) @@ -377,7 +377,7 @@ { case GBO_COMPILE: case GBO_MAKE_OBJECT: - document_clear_indicators(idx); + editor_clear_indicators(idx); break;
case GBO_BUILD: @@ -389,7 +389,7 @@ for (i = 0; i < doc_array->len; i++) { if (doc_list[i].is_valid) - document_clear_indicators(i); + editor_clear_indicators(i); } break; } @@ -855,7 +855,7 @@ { gint idx = document_find_by_filename(filename, FALSE);
- document_set_indicator_on_line(idx, line - 1); /* will check valid idx */ + editor_set_indicator_on_line(idx, line - 1); /* will check valid idx */ color = COLOR_RED; /* error message parsed on the line */ } g_free(filename);
Modified: trunk/src/callbacks.c =================================================================== --- trunk/src/callbacks.c 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/callbacks.c 2008-05-14 17:58:56 UTC (rev 2587) @@ -1535,7 +1535,7 @@
if (! DOC_IDX_VALID(idx)) return; - document_clear_indicators(idx); + editor_clear_indicators(idx); }
Modified: trunk/src/document.c =================================================================== --- trunk/src/document.c 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/document.c 2008-05-14 17:58:56 UTC (rev 2587) @@ -2192,94 +2192,6 @@ }
-/** - * Deletes all currently set indicators in the %document. - * Error indicators (red squiggly underlines) and usual line markers are removed. - * - * @param idx The document index to operate on. - **/ -void document_clear_indicators(gint idx) -{ - glong last_pos; - - g_return_if_fail(DOC_IDX_VALID(idx)); - - last_pos = sci_get_length(doc_list[idx].sci); - if (last_pos > 0) - { - sci_start_styling(doc_list[idx].sci, 0, INDIC2_MASK); - sci_set_styling(doc_list[idx].sci, last_pos, 0); - } - sci_marker_delete_all(doc_list[idx].sci, 0); /* remove the yellow error line marker */ -} - - -/** - * This is a convenience function for document_set_indicator(). It sets an error indicator - * (red squiggly underline) on the whole given line. - * Whitespace at the start and the end of the line is not marked. - * - * @param idx The %document index to operate on. - * @param line The line number which should be marked. - **/ -void document_set_indicator_on_line(gint idx, gint line) -{ - gint start, end; - guint i = 0, len; - gchar *linebuf; - - if (! DOC_IDX_VALID(idx)) - return; - - start = sci_get_position_from_line(doc_list[idx].sci, line); - end = sci_get_position_from_line(doc_list[idx].sci, line + 1); - - /* skip blank lines */ - if ((start + 1) == end || - sci_get_line_length(doc_list[idx].sci, line) == utils_get_eol_char_len(idx)) - return; - - /* don't set the indicator on whitespace */ - len = end - start; - linebuf = sci_get_line(doc_list[idx].sci, line); - - while (isspace(linebuf[i])) i++; - while (len > 1 && len > i && isspace(linebuf[len-1])) - { - len--; - end--; - } - g_free(linebuf); - - document_set_indicator(idx, start + i, end); -} - - -/** - * Sets an error indicator (red squiggly underline) on the range specified by @c start and @c end. - * No error checking or whitespace removal is performed, this should be done by the calling - * function if necessary. - * - * @param idx The %document index to operate on. - * @param start The starting position for the marker. - * @param end The ending position for the marker. - **/ -void document_set_indicator(gint idx, gint start, gint end) -{ - gint current_mask; - - if (! DOC_IDX_VALID(idx) || start >= end) - return; - - current_mask = sci_get_style_at(doc_list[idx].sci, start); - current_mask &= INDICS_MASK; - current_mask |= INDIC2_MASK; - - sci_start_styling(doc_list[idx].sci, start, INDIC2_MASK); - sci_set_styling(doc_list[idx].sci, end - start, current_mask); -} - - void document_replace_tabs(gint idx) { gint search_pos, pos_in_line, current_tab_true_length;
Modified: trunk/src/document.h =================================================================== --- trunk/src/document.h 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/document.h 2008-05-14 17:58:56 UTC (rev 2587) @@ -219,12 +219,6 @@
void document_unfold_all(gint idx);
-void document_set_indicator_on_line(gint idx, gint line); - -void document_set_indicator(gint idx, gint start, gint end); - -void document_clear_indicators(gint idx); - void document_replace_tabs(gint idx);
void document_strip_line_trailing_spaces(gint idx, gint line);
Modified: trunk/src/editor.c =================================================================== --- trunk/src/editor.c 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/editor.c 2008-05-14 17:58:56 UTC (rev 2587) @@ -2860,3 +2860,92 @@ }
+/** + * Deletes all currently set indicators in the %document. + * Error indicators (red squiggly underlines) and usual line markers are removed. + * + * @param idx The document index to operate on. + **/ +void editor_clear_indicators(gint idx) +{ + glong last_pos; + + g_return_if_fail(DOC_IDX_VALID(idx)); + + last_pos = sci_get_length(doc_list[idx].sci); + if (last_pos > 0) + { + sci_start_styling(doc_list[idx].sci, 0, INDIC2_MASK); + sci_set_styling(doc_list[idx].sci, last_pos, 0); + } + sci_marker_delete_all(doc_list[idx].sci, 0); /* remove the yellow error line marker */ +} + + +/** + * This is a convenience function for document_set_indicator(). It sets an error indicator + * (red squiggly underline) on the whole given line. + * Whitespace at the start and the end of the line is not marked. + * + * @param idx The %document index to operate on. + * @param line The line number which should be marked. + **/ +void editor_set_indicator_on_line(gint idx, gint line) +{ + gint start, end; + guint i = 0, len; + gchar *linebuf; + + if (! DOC_IDX_VALID(idx)) + return; + + start = sci_get_position_from_line(doc_list[idx].sci, line); + end = sci_get_position_from_line(doc_list[idx].sci, line + 1); + + /* skip blank lines */ + if ((start + 1) == end || + sci_get_line_length(doc_list[idx].sci, line) == utils_get_eol_char_len(idx)) + return; + + /* don't set the indicator on whitespace */ + len = end - start; + linebuf = sci_get_line(doc_list[idx].sci, line); + + while (isspace(linebuf[i])) i++; + while (len > 1 && len > i && isspace(linebuf[len-1])) + { + len--; + end--; + } + g_free(linebuf); + + editor_set_indicator(idx, start + i, end); +} + + +/** + * Sets an error indicator (red squiggly underline) on the range specified by @c start and @c end. + * No error checking or whitespace removal is performed, this should be done by the calling + * function if necessary. + * + * @param idx The %document index to operate on. + * @param start The starting position for the marker. + * @param end The ending position for the marker. + **/ +void editor_set_indicator(gint idx, gint start, gint end) +{ + gint current_mask; + + if (! DOC_IDX_VALID(idx) || start >= end) + return; + + current_mask = sci_get_style_at(doc_list[idx].sci, start); + current_mask &= INDICS_MASK; + current_mask |= INDIC2_MASK; + + sci_start_styling(doc_list[idx].sci, start, INDIC2_MASK); + sci_set_styling(doc_list[idx].sci, end - start, current_mask); +} + + +
Modified: trunk/src/editor.h =================================================================== --- trunk/src/editor.h 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/editor.h 2008-05-14 17:58:56 UTC (rev 2587) @@ -21,6 +21,15 @@ * $Id$ */
+/** + * @file editor.h + * Callbacks for the Scintilla widget (ScintillaObject). + * Most important is the sci-notify callback, handled in on_editor_notification(). + * This includes auto-indentation, comments, auto-completion, calltips, etc. + * Also some general Scintilla-related functions. + **/ + + #ifndef GEANY_SCI_CB_H #define GEANY_SCI_CB_H 1
@@ -160,4 +169,10 @@
void editor_select_paragraph(ScintillaObject *sci);
+void editor_set_indicator_on_line(gint idx, gint line); + +void editor_set_indicator(gint idx, gint start, gint end); + +void editor_clear_indicators(gint idx); + #endif
Modified: trunk/src/msgwindow.c =================================================================== --- trunk/src/msgwindow.c 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/msgwindow.c 2008-05-14 17:58:56 UTC (rev 2587) @@ -42,6 +42,7 @@ #include "main.h" #include "vte.h" #include "navqueue.h" +#include "editor.h"
#include <string.h> #include <stdlib.h> @@ -542,7 +543,7 @@ if (DOC_IDX_VALID(idx)) { if (! doc_list[idx].changed) /* if modified, line may be wrong */ - document_set_indicator_on_line(idx, line - 1); + editor_set_indicator_on_line(idx, line - 1);
ret = navqueue_goto_line(old_idx, idx, line); }
Modified: trunk/src/plugindata.h =================================================================== --- trunk/src/plugindata.h 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/plugindata.h 2008-05-14 17:58:56 UTC (rev 2587) @@ -176,6 +176,7 @@ struct HighlightingFuncs *highlighting; /**< See highlighting.h */ struct FiletypeFuncs *filetype; /**< See filetypes.h */ struct NavQueueFuncs *navqueue; /**< See navqueue.h */ + struct EditorFuncs *editor; /**< See editor.h */ } GeanyData;
@@ -202,9 +203,6 @@ void (*set_encoding) (gint idx, const gchar *new_encoding); void (*set_text_changed) (gint idx); void (*set_filetype) (gint idx, filetype *type); - void (*set_indicator) (gint idx, gint start, gint end); - void (*set_indicator_on_line) (gint idx, gint line); - void (*clear_indicators) (gint idx); } DocumentFuncs;
@@ -401,6 +399,8 @@ } TagManagerFuncs;
+ +/* See navqueue.h */ typedef struct NavQueueFuncs { gboolean (*goto_line) (gint old_idx, gint new_idx, gint line); @@ -408,6 +408,16 @@ NavQueueFuncs;
+/* See editor.h */ +typedef struct EditorFuncs +{ + void (*set_indicator) (gint idx, gint start, gint end); + void (*set_indicator_on_line) (gint idx, gint line); + void (*clear_indicators) (gint idx); +} +EditorFuncs; + + /* Deprecated aliases */ #ifndef GEANY_DISABLE_DEPRECATED
Modified: trunk/src/plugins.c =================================================================== --- trunk/src/plugins.c 2008-05-14 16:44:18 UTC (rev 2586) +++ trunk/src/plugins.c 2008-05-14 17:58:56 UTC (rev 2587) @@ -113,12 +113,15 @@ &document_reload_file, &document_set_encoding, &document_set_text_changed, - &document_set_filetype, - &document_set_indicator, - &document_set_indicator_on_line, - &document_clear_indicators + &document_set_filetype };
+static EditorFuncs editor_funcs = { + &editor_set_indicator, + &editor_set_indicator_on_line, + &editor_clear_indicators +}; + static ScintillaFuncs sci_funcs = { &scintilla_send_message, &sci_cmd, @@ -264,7 +267,8 @@ &search_funcs, &highlighting_funcs, &filetype_funcs, - &navqueue_funcs + &navqueue_funcs, + &editor_funcs };
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.