SF.net SVN: geany:[4493] trunk

frlan at users.sourceforge.net frlan at xxxxx
Sun Dec 20 12:03:28 UTC 2009


Revision: 4493
          http://geany.svn.sourceforge.net/geany/?rev=4493&view=rev
Author:   frlan
Date:     2009-12-20 12:03:28 +0000 (Sun, 20 Dec 2009)

Log Message:
-----------
Extend auto_latex() function to check whether an environment has been closed within the next lines to avoid auto adding double \end{}.

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

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-12-12 16:21:17 UTC (rev 4492)
+++ trunk/ChangeLog	2009-12-20 12:03:28 UTC (rev 4493)
@@ -1,3 +1,10 @@
+2009-12-20  Frank Lanitz  <frank(at)frank(dot)uvena(dot)de>
+
+ * src/editor.c:
+   Extend auto_latex() function to check whether an environment has been
+   closed within the next lines to avoid auto adding double \end{}.
+
+
 2009-12-09  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * geany.glade, src/interface.c:

Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c	2009-12-12 16:21:17 UTC (rev 4492)
+++ trunk/src/editor.c	2009-12-20 12:03:28 UTC (rev 4493)
@@ -2043,6 +2043,28 @@
 				}
 			}
 
+			/* Search whether the environment is closed within the next
+			 * lines. We assume, no \end is needed in such cases */
+			/* TODO using sci_find_text() should be way faster than getting
+			 *      the line buffer and performing string comparisons */
+			for (i = 1; i < 5; i++)
+			{
+				gchar *tmp;
+				gchar *end_construct;
+				tmp = sci_get_line(sci, line + i);
+				/* Again get to the first non-blank char */
+				start = 0;
+				while (isspace(buf[start]))
+					start++;
+				end_construct = g_strdup_printf("\\end%s{%s}", full_cmd, env);
+				if (strstr(tmp, end_construct) != NULL)
+				{
+					utils_free_pointers(3, tmp, buf, end_construct, NULL);
+					return;
+				}
+				g_free(tmp);
+			}
+
 			/* get the indentation */
 			if (editor->auto_indent)
 				read_indent(editor, 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