Revision: 4385 http://geany.svn.sourceforge.net/geany/?rev=4385&view=rev Author: ntrel Date: 2009-10-28 16:32:22 +0000 (Wed, 28 Oct 2009)
Log Message: ----------- Add general function sci_get_string() that works with any string buffer messages that follow the Windows message convention.
Modified Paths: -------------- trunk/ChangeLog trunk/src/editor.c trunk/src/sciwrappers.c trunk/src/sciwrappers.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-10-28 11:33:11 UTC (rev 4384) +++ trunk/ChangeLog 2009-10-28 16:32:22 UTC (rev 4385) @@ -5,6 +5,9 @@ * src/interface.c, src/keybindings.c, src/callbacks.c, src/callbacks.h, geany.glade: Add 'Reflow, Transpose, Smart line indent' Edit->Format menu items. + * src/sciwrappers.c, src/sciwrappers.h, src/editor.c: + Add general function sci_get_string() that works with any string + buffer messages that follow the Windows message convention.
2009-10-27 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/editor.c =================================================================== --- trunk/src/editor.c 2009-10-28 11:33:11 UTC (rev 4384) +++ trunk/src/editor.c 2009-10-28 16:32:22 UTC (rev 4385) @@ -4769,17 +4769,6 @@ }
-/* safe way to read Scintilla string into a buffer */ -static gchar *sci_get_string(ScintillaObject *sci, gint msg) -{ - gint size = SSM(sci, msg, 0, 0) + 1; - gchar *str = g_malloc(size); - - SSM(sci, msg, 0, (sptr_t)str); - return str; -} - - gboolean editor_complete_word_part(GeanyEditor *editor) { gchar *entry; @@ -4789,7 +4778,7 @@ if (!SSM(editor->sci, SCI_AUTOCACTIVE, 0, 0)) return FALSE;
- entry = sci_get_string(editor->sci, SCI_AUTOCGETCURRENTTEXT); + entry = sci_get_string(editor->sci, SCI_AUTOCGETCURRENTTEXT, 0);
/* if no word part, complete normally */ if (!check_partial_completion(editor, entry))
Modified: trunk/src/sciwrappers.c =================================================================== --- trunk/src/sciwrappers.c 2009-10-28 11:33:11 UTC (rev 4384) +++ trunk/src/sciwrappers.c 2009-10-28 16:32:22 UTC (rev 4385) @@ -527,18 +527,26 @@ }
+/* safe way to read Scintilla string into new memory. + * works with any string buffer messages that follow the Windows message convention. */ +gchar *sci_get_string(ScintillaObject *sci, gint msg, gulong wParam) +{ + gint size = SSM(sci, msg, wParam, 0) + 1; + gchar *str = g_malloc(size); + + SSM(sci, msg, wParam, (sptr_t)str); + str[size - 1] = '\0'; /* ensure termination, needed for SCI_GETLINE */ + return str; +} + + /** Get line contents. * @param sci Scintilla widget. * @param line_num Line number. * @return A @c NULL-terminated copy of the line text. */ gchar *sci_get_line(ScintillaObject *sci, gint line_num) { - gint len = sci_get_line_length(sci, line_num); - gchar *linebuf = g_malloc(len + 1); - - SSM(sci, SCI_GETLINE, line_num, (sptr_t) linebuf); - linebuf[len] = '\0'; - return linebuf; + return sci_get_string(sci, SCI_GETLINE, line_num); }
@@ -593,12 +601,7 @@ */ gchar *sci_get_selection_contents(ScintillaObject *sci) { - gint len = sci_get_selected_text_length(sci); - gchar *selection = g_malloc(len + 1); - - SSM(sci, SCI_GETSELTEXT, 0, (sptr_t) selection); - - return selection; + return sci_get_string(sci, SCI_GETSELTEXT, 0); }
Modified: trunk/src/sciwrappers.h =================================================================== --- trunk/src/sciwrappers.h 2009-10-28 11:33:11 UTC (rev 4384) +++ trunk/src/sciwrappers.h 2009-10-28 16:32:22 UTC (rev 4385) @@ -28,6 +28,8 @@ #include "ScintillaWidget.h"
+gchar* sci_get_string (ScintillaObject *sci, gint msg, gulong wParam); + void sci_set_line_numbers (ScintillaObject *sci, gboolean set, gint extra_width); void sci_set_mark_long_lines (ScintillaObject *sci, gint type, gint column, const gchar *color);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.