SF.net SVN: geany:[4015] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Thu Jul 23 16:23:28 UTC 2009
Revision: 4015
http://geany.svn.sourceforge.net/geany/?rev=4015&view=rev
Author: ntrel
Date: 2009-07-23 16:23:28 +0000 (Thu, 23 Jul 2009)
Log Message:
-----------
For the Tabs indent type, remove spaces when unindenting (only) if
there are no tabs on the line.
Group undo actions for (un)indenting of multiple lines.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/editor.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-07-23 16:01:45 UTC (rev 4014)
+++ trunk/ChangeLog 2009-07-23 16:23:28 UTC (rev 4015)
@@ -8,6 +8,10 @@
src/printing.c, src/callbacks.c:
Rename utils_str_replace() utils_str_replace_all(), setting a
'gchar **haystack' argument instead of returning a new string.
+ * src/editor.c:
+ For the Tabs indent type, remove spaces when unindenting (only) if
+ there are no tabs on the line.
+ Group undo actions for (un)indenting of multiple lines.
2009-07-21 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c 2009-07-23 16:01:45 UTC (rev 4014)
+++ trunk/src/editor.c 2009-07-23 16:23:28 UTC (rev 4015)
@@ -4785,8 +4785,9 @@
/* This is for tab-indents, space aligns formatted code. Spaces should be preserved. */
-static void change_tab_indentation(ScintillaObject *sci, gint line, gboolean increase)
+static void change_tab_indentation(GeanyEditor *editor, gint line, gboolean increase)
{
+ ScintillaObject *sci = editor->sci;
gint pos = sci_get_position_from_line(sci, line);
if (increase)
@@ -4800,6 +4801,13 @@
sci_set_selection(sci, pos, pos + 1);
sci_replace_sel(sci, "");
}
+ else /* remove spaces only if no tabs */
+ {
+ gint width = sci_get_line_indentation(sci, line);
+
+ width -= editor_get_indent_prefs(editor)->width;
+ sci_set_line_indentation(sci, line, width);
+ }
}
}
@@ -4809,8 +4817,8 @@
const GeanyIndentPrefs *iprefs = editor_get_indent_prefs(editor);
ScintillaObject *sci = editor->sci;
- if (iprefs->type == GEANY_INDENT_TYPE_TABS /* && iprefs->ignore_spaces */)
- change_tab_indentation(sci, line, increase);
+ if (iprefs->type == GEANY_INDENT_TYPE_TABS)
+ change_tab_indentation(editor, line, increase);
else
{
gint width = sci_get_line_indentation(sci, line);
@@ -4841,10 +4849,14 @@
if (end == sci_get_length(sci))
lend++; /* for last line with text on it */
+ sci_start_undo_action(sci);
for (line = lstart; line < lend; line++)
{
editor_change_line_indent(editor, line, increase);
}
+ sci_end_undo_action(sci);
+
+ /* set cursor/selection */
if (lend > lstart)
{
sci_set_selection_start(sci, start);
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