SF.net SVN: geany: [506] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Thu Jun 29 18:22:18 UTC 2006


Revision: 506
Author:   eht16
Date:     2006-06-29 11:22:11 -0700 (Thu, 29 Jun 2006)
ViewCVS:  http://svn.sourceforge.net/geany/?rev=506&view=rev

Log Message:
-----------
Added function is_opening_brace().
Use is_opening_brace() for better handling of calltips.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/sci_cb.c
    trunk/src/utils.c
    trunk/src/utils.h
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-06-29 17:14:52 UTC (rev 505)
+++ trunk/ChangeLog	2006-06-29 18:22:11 UTC (rev 506)
@@ -17,6 +17,9 @@
    src/utils.c, src/prefs.c, geany.glade, src/interface.c,
    src/keybindings.c, src/document.c:
    Implemented simple printing support.
+ * src/utils.c: Added function is_opening_brace().
+ * src/sci_cb.c:
+   Use is_opening_brace() for better handling of calltips.
 
 
 2006-06-28  Enrico Tröger  <enrico.troeger at uvena.de>

Modified: trunk/src/sci_cb.c
===================================================================
--- trunk/src/sci_cb.c	2006-06-29 17:14:52 UTC (rev 505)
+++ trunk/src/sci_cb.c	2006-06-29 18:22:11 UTC (rev 506)
@@ -356,18 +356,26 @@
 	const GPtrArray *tags;
 
 	if (sci == NULL) return FALSE;
-	
+
 	lexer = SSM(sci, SCI_GETLEXER, 0, 0);
 	idx = document_find_by_sci(sci);
 	if (idx == -1 || ! doc_list[idx].is_valid || doc_list[idx].file_type == NULL) return FALSE;
-	
+
 	word[0] = '\0';
 	if (pos == -1)
-	{	// position of '(' is unknown, so go backwards to find it
+	{
+		gchar c;
+		// position of '(' is unknown, so go backwards to find it
 		pos = SSM(sci, SCI_GETCURRENTPOS, 0, 0);
-		// I'm not sure if utils_isbrace() is a good idea, but it is the simplest way, but we need
-		// something more intelligent than only check for '(' because e.g. LaTeX uses {, [ or (
-		while (pos >= 0 && ! utils_isbrace(SSM(sci, SCI_GETCHARAT, pos, 0))) pos--;
+		// I'm not sure if utils_is_opening_brace() is a good idea, but it is the simplest way,
+		// but we need something more intelligent than only check for '(' because e.g. LaTeX
+		// uses {, [ or (
+		c = SSM(sci, SCI_GETCHARAT, pos, 0);
+		while (pos > 0 && ! utils_is_opening_brace(c) && c != ';')
+		{
+			c = SSM(sci, SCI_GETCHARAT, pos, 0);
+			pos--;
+		}
 	}
 
 	style = SSM(sci, SCI_GETSTYLEAT, pos, 0);
@@ -680,7 +688,7 @@
 	GString *words;
 
 	if (sci == NULL) return;
-	
+
 	ftags = g_ptr_array_sized_new(50);
 	words = g_string_sized_new(200);
 

Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c	2006-06-29 17:14:52 UTC (rev 505)
+++ trunk/src/utils.c	2006-06-29 18:22:11 UTC (rev 506)
@@ -335,7 +335,7 @@
 		switch (c)
 		{
 			case '<':
-			case '>':	return TRUE;
+			case '>': return TRUE;
 		}
 	}
 
@@ -346,15 +346,37 @@
 		case '{':
 		case '}':
 		case '[':
-		case ']':	return TRUE;
-		default:	return FALSE;
+		case ']': return TRUE;
+		default:  return FALSE;
 	}
 
 	return FALSE;
 }
 
 
+gboolean utils_is_opening_brace(gchar c)
+{
+	// match < only if desired, because I don't like it, but some people do
+	if (app->brace_match_ltgt)
+	{
+		switch (c)
+		{
+			case '<': return TRUE;
+		}
+	}
 
+	switch (c)
+	{
+		case '(':
+		case '{':
+		case '[':  return TRUE;
+		default:  return FALSE;
+	}
+
+	return FALSE;
+}
+
+
 void utils_set_editor_font(const gchar *font_name)
 {
 	gint i, size;

Modified: trunk/src/utils.h
===================================================================
--- trunk/src/utils.h	2006-06-29 17:14:52 UTC (rev 505)
+++ trunk/src/utils.h	2006-06-29 18:22:11 UTC (rev 506)
@@ -54,6 +54,8 @@
 
 gboolean utils_isbrace(gchar c);
 
+gboolean utils_is_opening_brace(gchar c);
+
 /* This sets the window title according to the current filename. */
 void utils_set_window_title(gint index);
 


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