SF.net SVN: geany: [1397] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Thu Mar 15 12:52:16 UTC 2007
Revision: 1397
http://svn.sourceforge.net/geany/?rev=1397&view=rev
Author: ntrel
Date: 2007-03-15 05:52:16 -0700 (Thu, 15 Mar 2007)
Log Message:
-----------
Add Goto Previous/Next Marker keybindings (Ctrl-, and Ctrl-.).
Make sci_marker_next() and sci_marker_previous() return marker line
number.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/keybindings.c
trunk/src/keybindings.h
trunk/src/sciwrappers.c
trunk/src/sciwrappers.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-03-14 12:47:32 UTC (rev 1396)
+++ trunk/ChangeLog 2007-03-15 12:52:16 UTC (rev 1397)
@@ -1,3 +1,12 @@
+2007-03-15 Nick Treleaven <nick.treleaven at btinternet.com>
+
+ * src/keybindings.c, src/keybindings.h, src/sciwrappers.c,
+ src/sciwrappers.h:
+ Add Goto Previous/Next Marker keybindings (Ctrl-, and Ctrl-.).
+ Make sci_marker_next() and sci_marker_previous() return marker line
+ number.
+
+
2007-03-14 Nick Treleaven <nick.treleaven at btinternet.com>
* src/callbacks.c:
Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c 2007-03-14 12:47:32 UTC (rev 1396)
+++ trunk/src/keybindings.c 2007-03-15 12:52:16 UTC (rev 1397)
@@ -239,6 +239,12 @@
keys[GEANY_KEYS_EDIT_GOTOMATCHINGBRACE] = fill(cb_func_edit,
GDK_less, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "edit_gotomatchingbrace",
_("Goto matching brace"));
+ keys[GEANY_KEYS_EDIT_GOTONEXTMARKER] = fill(cb_func_edit,
+ GDK_period, GDK_CONTROL_MASK, "edit_gotonextmarker",
+ _("Goto next marker"));
+ keys[GEANY_KEYS_EDIT_GOTOPREVIOUSMARKER] = fill(cb_func_edit,
+ GDK_comma, GDK_CONTROL_MASK, "edit_gotopreviousmarker",
+ _("Goto previous marker"));
keys[GEANY_KEYS_EDIT_AUTOCOMPLETE] = fill(cb_func_edit,
GDK_space, GDK_CONTROL_MASK, "edit_autocomplete", _("Complete word"));
#ifdef G_OS_WIN32
@@ -819,11 +825,14 @@
static void cb_func_edit(guint key_id)
{
gint idx = document_get_cur_idx();
+ gint cur_line;
GtkWidget *focusw = gtk_window_get_focus(GTK_WINDOW(app->window));
// edit keybindings only valid when scintilla widget has focus
if (! DOC_IDX_VALID(idx) || focusw != GTK_WIDGET(doc_list[idx].sci)) return;
+ cur_line = sci_get_current_line(doc_list[idx].sci, -1);
+
switch (key_id)
{
case GEANY_KEYS_EDIT_DUPLICATELINE:
@@ -859,6 +868,28 @@
case GEANY_KEYS_EDIT_GOTOMATCHINGBRACE:
goto_matching_brace(idx);
break;
+ case GEANY_KEYS_EDIT_GOTONEXTMARKER:
+ {
+ gint mline = sci_marker_next(doc_list[idx].sci, cur_line + 1, 1 << 1, TRUE);
+
+ if (mline != -1)
+ {
+ sci_goto_line(doc_list[idx].sci, mline, TRUE);
+ doc_list[idx].scroll_percent = 0.5F;
+ }
+ break;
+ }
+ case GEANY_KEYS_EDIT_GOTOPREVIOUSMARKER:
+ {
+ gint mline = sci_marker_previous(doc_list[idx].sci, cur_line - 1, 1 << 1, TRUE);
+
+ if (mline != -1)
+ {
+ sci_goto_line(doc_list[idx].sci, mline, TRUE);
+ doc_list[idx].scroll_percent = 0.5F;
+ }
+ break;
+ }
case GEANY_KEYS_EDIT_TOLOWERCASE:
on_to_lower_case1_activate(NULL, NULL);
break;
Modified: trunk/src/keybindings.h
===================================================================
--- trunk/src/keybindings.h 2007-03-14 12:47:32 UTC (rev 1396)
+++ trunk/src/keybindings.h 2007-03-15 12:52:16 UTC (rev 1397)
@@ -105,6 +105,8 @@
GEANY_KEYS_EDIT_SENDTOCMD2,
GEANY_KEYS_EDIT_SENDTOCMD3,
GEANY_KEYS_EDIT_GOTOMATCHINGBRACE,
+ GEANY_KEYS_EDIT_GOTONEXTMARKER,
+ GEANY_KEYS_EDIT_GOTOPREVIOUSMARKER,
GEANY_KEYS_EDIT_AUTOCOMPLETE,
GEANY_KEYS_EDIT_CALLTIP,
GEANY_KEYS_EDIT_MACROLIST,
Modified: trunk/src/sciwrappers.c
===================================================================
--- trunk/src/sciwrappers.c 2007-03-14 12:47:32 UTC (rev 1396)
+++ trunk/src/sciwrappers.c 2007-03-15 12:52:16 UTC (rev 1397)
@@ -331,33 +331,36 @@
}
-gboolean sci_marker_next(ScintillaObject* sci, gint line, gint marker_mask)
+/* Returns the line number of the next marker that matches marker_mask, or -1.
+ * marker_mask is a bitor of 1 << marker_index. (See MarkerHandleSet::MarkValue()).
+ * Note: If there is a marker on the line, it returns the same line. */
+gint sci_marker_next(ScintillaObject* sci, gint line, gint marker_mask, gboolean wrap)
{
gint marker_line;
marker_line = SSM(sci, SCI_MARKERNEXT, line, marker_mask);
-
- if( marker_line != -1 ){
- SSM(sci,SCI_GOTOLINE,marker_line,0);
- return TRUE;
- }else{
- return FALSE;
- }
+ if (wrap && marker_line == -1)
+ marker_line = SSM(sci, SCI_MARKERNEXT, 0, marker_mask);
+ return marker_line;
}
-gboolean sci_marker_prev(ScintillaObject* sci, gint line, gint marker_mask)
+/* Returns the line number of the previous marker that matches marker_mask, or -1.
+ * marker_mask is a bitor of 1 << marker_index. (See MarkerHandleSet::MarkValue()).
+ * Note: If there is a marker on the line, it returns the same line. */
+gint sci_marker_previous(ScintillaObject* sci, gint line, gint marker_mask, gboolean wrap)
{
gint marker_line;
marker_line = SSM(sci, SCI_MARKERPREVIOUS, line, marker_mask);
+ if (wrap && marker_line == -1)
+ {
+ gint len = sci_get_length(sci);
+ gint last_line = sci_get_line_from_position(sci, len - 1);
- if( marker_line != -1 ){
- SSM(sci,SCI_GOTOLINE,marker_line,0);
- return TRUE;
- }else{
- return FALSE;
+ marker_line = SSM(sci, SCI_MARKERPREVIOUS, last_line, marker_mask);
}
+ return marker_line;
}
Modified: trunk/src/sciwrappers.h
===================================================================
--- trunk/src/sciwrappers.h 2007-03-14 12:47:32 UTC (rev 1396)
+++ trunk/src/sciwrappers.h 2007-03-15 12:52:16 UTC (rev 1397)
@@ -62,8 +62,8 @@
void sci_zoom_off (ScintillaObject* sci);
void sci_set_marker_at_line (ScintillaObject* sci, gint line_number, gboolean set, gint marker );
gboolean sci_is_marker_set_at_line (ScintillaObject* sci, gint line, gint marker);
-gboolean sci_marker_next (ScintillaObject* sci, gint line, gint marker_mask);
-gboolean sci_marker_prev (ScintillaObject* sci, gint line, gint marker_mask);
+gint sci_marker_next (ScintillaObject* sci, gint line, gint marker_mask, gboolean wrap);
+gint sci_marker_previous (ScintillaObject* sci, gint line, gint marker_mask, gboolean wrap);
gint sci_get_col_from_position (ScintillaObject* sci, gint position);
gint sci_get_line_from_position (ScintillaObject* sci, gint position);
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