SF.net SVN: geany: [1081] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Dec 11 12:26:10 UTC 2006


Revision: 1081
          http://svn.sourceforge.net/geany/?rev=1081&view=rev
Author:   ntrel
Date:     2006-12-11 04:26:10 -0800 (Mon, 11 Dec 2006)

Log Message:
-----------
Make indenting and unindenting keep the same cursor position when
the cursor is within the indentation characters.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/callbacks.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-12-11 12:20:30 UTC (rev 1080)
+++ trunk/ChangeLog	2006-12-11 12:26:10 UTC (rev 1081)
@@ -1,7 +1,10 @@
 2006-12-11  Nick Treleaven  <nick.treleaven at btinternet.com>
 
  * src/main.c:
-   Show GTK+, GLib runtime version debug message, after socket_init().
+   Show GTK+, GLib runtime version debug message after socket_init().
+ * src/callbacks.c:
+   Make indenting and unindenting keep the same cursor position when
+   the cursor is within the indentation characters.
 
 
 2006-12-10  Enrico Tröger  <enrico.troeger at uvena.de>

Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2006-12-11 12:20:30 UTC (rev 1080)
+++ trunk/src/callbacks.c	2006-12-11 12:26:10 UTC (rev 1081)
@@ -1947,15 +1947,16 @@
 	}
 	else
 	{
-		gint line, pos, old_pos;
+		gint line, ind_pos, old_pos;
 
 		old_pos = sci_get_current_position(doc_list[idx].sci);
 		line = sci_get_current_line(doc_list[idx].sci, old_pos);
-		pos = sci_get_line_indent_position(doc_list[idx].sci, line);
+		ind_pos = sci_get_line_indent_position(doc_list[idx].sci, line);
 
-		sci_set_current_position(doc_list[idx].sci, pos);
+		sci_set_current_position(doc_list[idx].sci, ind_pos);
 		sci_cmd(doc_list[idx].sci, SCI_TAB);
-		sci_set_current_position(doc_list[idx].sci, old_pos + 1);
+		sci_set_current_position(doc_list[idx].sci,
+			(old_pos > ind_pos) ? old_pos + 1 : old_pos);
 	}
 }
 
@@ -1973,15 +1974,18 @@
 	}
 	else
 	{
-		gint line, pos, old_pos;
+		gint line, ind_pos, old_pos;
 
 		old_pos = sci_get_current_position(doc_list[idx].sci);
 		line = sci_get_current_line(doc_list[idx].sci, old_pos);
-		pos = sci_get_line_indent_position(doc_list[idx].sci, line);
+		ind_pos = sci_get_line_indent_position(doc_list[idx].sci, line);
 
-		sci_set_current_position(doc_list[idx].sci, 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);
 		sci_cmd(doc_list[idx].sci, SCI_BACKTAB);
-		sci_set_current_position(doc_list[idx].sci, old_pos - 1);
+		sci_set_current_position(doc_list[idx].sci,
+			(old_pos >= ind_pos) ? old_pos - 1 : old_pos);
 	}
 }
 


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