SF.net SVN: geany:[4591] branches/geany-0.18.1

frlan at users.sourceforge.net frlan at xxxxx
Fri Jan 29 19:16:08 UTC 2010


Revision: 4591
          http://geany.svn.sourceforge.net/geany/?rev=4591&view=rev
Author:   frlan
Date:     2010-01-29 19:16:08 +0000 (Fri, 29 Jan 2010)

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

Modified Paths:
--------------
    branches/geany-0.18.1/ChangeLog
    branches/geany-0.18.1/src/editor.c

Modified: branches/geany-0.18.1/ChangeLog
===================================================================
--- branches/geany-0.18.1/ChangeLog	2010-01-29 19:15:12 UTC (rev 4590)
+++ branches/geany-0.18.1/ChangeLog	2010-01-29 19:16:08 UTC (rev 4591)
@@ -1,9 +1,15 @@
 2010-01-18  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
-
  * doc/plugins.dox:
    Add gcc commands to build a plugin to the HowTo.
 
 
+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-11-30  Frank Lanitz  <frank(at)frank(dot)uvena(dot)de>
 
  * data/latex.tags:

Modified: branches/geany-0.18.1/src/editor.c
===================================================================
--- branches/geany-0.18.1/src/editor.c	2010-01-29 19:15:12 UTC (rev 4590)
+++ branches/geany-0.18.1/src/editor.c	2010-01-29 19:16:08 UTC (rev 4591)
@@ -1986,6 +1986,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