SF.net SVN: geany:[2983] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Mon Sep 22 15:29:25 UTC 2008
Revision: 2983
http://geany.svn.sourceforge.net/geany/?rev=2983&view=rev
Author: ntrel
Date: 2008-09-22 15:29:25 +0000 (Mon, 22 Sep 2008)
Log Message:
-----------
Rename get_indent() read_indent().
Fix possible overflow in auto_table().
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/editor.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-09-22 11:57:14 UTC (rev 2982)
+++ trunk/ChangeLog 2008-09-22 15:29:25 UTC (rev 2983)
@@ -8,8 +8,10 @@
* src/editor.c:
Fix HTML table autocompletion when the indent type is 'Tabs &
Spaces' (#2118289).
- Add some useful functions count_indent_size(),
- string_append_indent_width().
+ Add functions count_indent_size(), string_append_indent_width().
+ * src/editor.c:
+ Rename get_indent() read_indent().
+ Fix possible overflow in auto_table().
2008-09-21 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c 2008-09-22 11:57:14 UTC (rev 2982)
+++ trunk/src/editor.c 2008-09-22 15:29:25 UTC (rev 2983)
@@ -82,7 +82,6 @@
static void on_new_line_added(GeanyEditor *editor);
static gboolean handle_xml(GeanyEditor *editor, gchar ch);
-static void get_indent(GeanyEditor *editor, gint pos);
static void insert_indent_after_line(GeanyEditor *editor, gint line);
static void auto_multiline(GeanyEditor *editor, gint pos);
static gboolean is_code_style(gint lexer, gint style);
@@ -859,7 +858,7 @@
/* Read indent chars for the line that pos is on into indent global variable.
* Note: Use sci_get_line_indentation() and get_whitespace() instead in any new code. */
-static void get_indent(GeanyEditor *editor, gint pos)
+static void read_indent(GeanyEditor *editor, gint pos)
{
ScintillaObject *sci = editor->sci;
guint i, len, j = 0;
@@ -1569,7 +1568,7 @@
/* get the indentation */
if (editor->auto_indent)
- get_indent(editor, pos);
+ read_indent(editor, pos);
eol = g_strconcat(editor_get_eol_char(doc), indent, NULL);
construct = g_strdup_printf("%s\\end%s{%s}", eol, full_cmd, env);
@@ -1676,7 +1675,7 @@
return FALSE;
}
- get_indent(editor, pos);
+ read_indent(editor, pos);
lindent = g_strconcat(editor_get_eol_char(editor->document), indent, NULL);
whitespace = get_single_indent(editor);
@@ -1963,17 +1962,19 @@
if (SSM(sci, SCI_GETLEXER, 0, 0) != SCLEX_HTML) return;
- get_indent(editor, pos);
+ read_indent(editor, pos);
indent_pos = sci_get_line_indent_position(sci, sci_get_line_from_position(sci, pos));
if ((pos - 7) != indent_pos) /* 7 == strlen("<table>") */
{
- gint i, x;
+ gint i;
+ guint x;
+
x = strlen(indent);
/* find the start of the <table tag */
i = 1;
while (i <= pos && sci_get_char_at(sci, pos - i) != '<') i++;
/* add all non whitespace before the tag to the indent string */
- while ((pos - i) != indent_pos)
+ while ((pos - i) != indent_pos && x < sizeof(indent) - 1)
{
indent[x++] = ' ';
i++;
@@ -2345,7 +2346,7 @@
gint a = (first_line_was_comment) ? - co_len : co_len;
/* don't modify sel_start when the selection starts within indentation */
- get_indent(doc->editor, sel_start);
+ read_indent(doc->editor, sel_start);
if ((sel_start - first_line_start) <= (gint) strlen(indent))
a = 0;
@@ -2887,7 +2888,7 @@
if (editor->auto_indent &&
! have_multiline_comment && doc->file_type->comment_use_indent)
{
- get_indent(editor, editor_info.click_pos);
+ read_indent(editor, editor_info.click_pos);
text = g_strdup_printf("%s\n%s\n%s\n", indent, indent, indent);
text_len = strlen(text);
}
@@ -3099,8 +3100,13 @@
/* simple indentation to indent the current line with the same indent as the previous one */
static void smart_line_indentation(GeanyDocument *doc, gint first_line, gint last_line)
{
+ GeanyEditor *editor = doc->editor;
gint i, sel_start = 0, sel_end = 0;
+ /* get previous line and use it for read_indent to use that line
+ * (otherwise it would fail on a line only containing "{" in advanced indentation mode) */
+ read_indent(editor, sci_get_position_from_line(editor->sci, first_line - 1));
+
for (i = first_line; i <= last_line; i++)
{
/* skip the first line or if the indentation of the previous and current line are equal */
@@ -3145,10 +3151,6 @@
SSM(sci, SCI_BEGINUNDOACTION, 0, 0);
- /* get previous line and use it for get_indent to use that line
- * (otherwise it would fail on a line only containing "{" in advanced indentation mode) */
- get_indent(doc->editor, sci_get_position_from_line(sci, first_line - 1));
-
smart_line_indentation(doc, first_line, last_line);
/* set cursor position if there was no selection */
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