Revision: 1514 http://svn.sourceforge.net/geany/?rev=1514&view=rev Author: eht16 Date: 2007-05-08 09:03:07 -0700 (Tue, 08 May 2007)
Log Message: ----------- Added sci_get_line_indentation() and sci_set_line_indentation(). Fixed broken increase/decrease indentation when using only spaces for indentation.
Modified Paths: -------------- trunk/ChangeLog trunk/src/callbacks.c trunk/src/sciwrappers.c trunk/src/sciwrappers.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2007-05-07 15:36:43 UTC (rev 1513) +++ trunk/ChangeLog 2007-05-08 16:03:07 UTC (rev 1514) @@ -1,3 +1,11 @@ +2007-05-08 Enrico Tröger enrico.troeger@uvena.de + + * src/sciwrappers.c, src/sciwrappers.h: + Added sci_get_line_indentation() and sci_set_line_indentation(). + * src/callbacks.c: Fixed broken increase/decrease indentation when + using only spaces for indentation. + + 2007-05-07 Enrico Tröger enrico.troeger@uvena.de
* data/filetypes.haskell: Added build instructions.
Modified: trunk/src/callbacks.c =================================================================== --- trunk/src/callbacks.c 2007-05-07 15:36:43 UTC (rev 1513) +++ trunk/src/callbacks.c 2007-05-08 16:03:07 UTC (rev 1514) @@ -1863,7 +1863,7 @@ gpointer user_data) { gint idx = document_get_cur_idx(); - if (idx == -1 || ! doc_list[idx].is_valid) return; + if (! DOC_IDX_VALID(idx)) return;
if (sci_get_lines_selected(doc_list[idx].sci) > 1) { @@ -1871,16 +1871,18 @@ } else { - gint line, ind_pos, old_pos; + gint line, ind_pos, old_pos, new_pos, step;
old_pos = sci_get_current_position(doc_list[idx].sci); line = sci_get_current_line(doc_list[idx].sci, old_pos); ind_pos = sci_get_line_indent_position(doc_list[idx].sci, line); + // when using tabs increase cur pos by 1, when using space increase it by tab_width + step = (app->pref_editor_use_tabs) ? 1 : app->pref_editor_tab_width; + new_pos = (old_pos > ind_pos) ? old_pos + step : old_pos;
sci_set_current_position(doc_list[idx].sci, ind_pos, TRUE); sci_cmd(doc_list[idx].sci, SCI_TAB); - sci_set_current_position(doc_list[idx].sci, - (old_pos > ind_pos) ? old_pos + 1 : old_pos, TRUE); + sci_set_current_position(doc_list[idx].sci, new_pos, TRUE); } }
@@ -1890,7 +1892,7 @@ gpointer user_data) { gint idx = document_get_cur_idx(); - if (idx == -1 || ! doc_list[idx].is_valid) return; + if (! DOC_IDX_VALID(idx)) return;
if (sci_get_lines_selected(doc_list[idx].sci) > 1) { @@ -1898,18 +1900,25 @@ } else { - gint line, ind_pos, old_pos; + gint line, ind_pos, old_pos, new_pos, step, indent;
old_pos = sci_get_current_position(doc_list[idx].sci); line = sci_get_current_line(doc_list[idx].sci, old_pos); ind_pos = sci_get_line_indent_position(doc_list[idx].sci, line); + step = (app->pref_editor_use_tabs) ? 1 : app->pref_editor_tab_width; + new_pos = (old_pos >= ind_pos) ? old_pos - step : old_pos;
if (ind_pos == sci_get_position_from_line(doc_list[idx].sci, line)) return; + sci_set_current_position(doc_list[idx].sci, ind_pos, TRUE); - sci_cmd(doc_list[idx].sci, SCI_BACKTAB); - sci_set_current_position(doc_list[idx].sci, - (old_pos >= ind_pos) ? old_pos - 1 : old_pos, TRUE); + indent = sci_get_line_indentation(doc_list[idx].sci, line); + indent -= app->pref_editor_tab_width; + if (indent < 0) + indent = 0; + sci_set_line_indentation(doc_list[idx].sci, line, indent); + + sci_set_current_position(doc_list[idx].sci, new_pos, TRUE); } }
Modified: trunk/src/sciwrappers.c =================================================================== --- trunk/src/sciwrappers.c 2007-05-07 15:36:43 UTC (rev 1513) +++ trunk/src/sciwrappers.c 2007-05-08 16:03:07 UTC (rev 1514) @@ -941,3 +941,13 @@ SSM(sci, SCI_SETVSCROLLBAR, visible, 0); }
+void sci_set_line_indentation(ScintillaObject *sci, gint line, gint indent) +{ + SSM(sci, SCI_SETLINEINDENTATION, line, indent); +} + +int sci_get_line_indentation(ScintillaObject *sci, gint line) +{ + return SSM(sci, SCI_GETLINEINDENTATION, line, 0); +} +
Modified: trunk/src/sciwrappers.h =================================================================== --- trunk/src/sciwrappers.h 2007-05-07 15:36:43 UTC (rev 1513) +++ trunk/src/sciwrappers.h 2007-05-08 16:03:07 UTC (rev 1514) @@ -167,6 +167,8 @@ void sci_start_styling (ScintillaObject * sci, gint pos, gint mask); 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); +int sci_get_line_indentation (ScintillaObject * sci, gint line); void sci_set_autoc_max_height (ScintillaObject * sci, gint val); gint sci_find_bracematch (ScintillaObject * sci, gint pos);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.