SF.net SVN: geany-plugins:[1352] trunk/geanylatex
frlan at users.sourceforge.net
frlan at xxxxx
Sat May 15 20:08:03 UTC 2010
Revision: 1352
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1352&view=rev
Author: frlan
Date: 2010-05-15 20:08:03 +0000 (Sat, 15 May 2010)
Log Message:
-----------
GeanyLaTeX: Add a feature which is inserting {} automaticly once a new line is entered and an command seems to don't have some.
Modified Paths:
--------------
trunk/geanylatex/ChangeLog
trunk/geanylatex/TODO
trunk/geanylatex/doc/geanylatex.pdf
trunk/geanylatex/doc/geanylatex.tex
trunk/geanylatex/src/geanylatex.c
trunk/geanylatex/src/latexutils.c
trunk/geanylatex/src/latexutils.h
Modified: trunk/geanylatex/ChangeLog
===================================================================
--- trunk/geanylatex/ChangeLog 2010-05-15 16:37:07 UTC (rev 1351)
+++ trunk/geanylatex/ChangeLog 2010-05-15 20:08:03 UTC (rev 1352)
@@ -1,3 +1,9 @@
+2010-05-15 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
+
+ * Add a feature which is inserting {} automaticly once a new line is
+ entered and an command seems to don't have some.
+
+
2010-05-10 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
* Fix indention on inserting list environments.
Modified: trunk/geanylatex/TODO
===================================================================
--- trunk/geanylatex/TODO 2010-05-15 16:37:07 UTC (rev 1351)
+++ trunk/geanylatex/TODO 2010-05-15 20:08:03 UTC (rev 1352)
@@ -25,5 +25,4 @@
* Code examples for very common problems
* Make special characters extensible through files
* Improve behaviour of levelup and leveldown of structures
-* Autoinserting {} when typing \command+return
* Adding a font size chooser to toolbar
Modified: trunk/geanylatex/doc/geanylatex.pdf
===================================================================
(Binary files differ)
Modified: trunk/geanylatex/doc/geanylatex.tex
===================================================================
--- trunk/geanylatex/doc/geanylatex.tex 2010-05-15 16:37:07 UTC (rev 1351)
+++ trunk/geanylatex/doc/geanylatex.tex 2010-05-15 20:08:03 UTC (rev 1352)
@@ -109,11 +109,13 @@
\item Autocompletion of \texttt{\textbackslash{}end\{\}}
and \texttt{\textbackslash{}endgroup\{\}}
\end{itemize}
- \item Proceeded to Geany Plugin API v166
+ \item Proceeded to Geany Plugin API v184
\item Made reference insertion configurable.
\item Added an function to insert \textbackslash{}usepackage\{\} into
header of file
\item Automatic adding of \{\} after typing of \_{} and \symbol{94}
+ \item Added automatic inserting of \{\} after typing a command and
+ hitting return in case of none pair is already present
\end{itemize}
\subsection*{GeanyLaTeX{} 0.4 -- 2009-05-26}
@@ -707,7 +709,7 @@
\subsubsection{Autocompletion of \{\} after \_ and \symbol{94}}
-
+\label{sec:autoadding_of_braces}
Geany\LaTeX{} is able to autocomplete \{\} after typing \_ and
\symbol{94}. This might by useful on typing mathematic text and
formula. However, as this option is turn on by default and it might
@@ -728,6 +730,17 @@
\textbf{Note:} The feature in general is only working, if
\texttt{glatex\_set\_autocompletion=true} is also set to \texttt{true}.
+\subsubsection{Autoadding of \{\} after a command}
+
+The plugin can autoadd a pair of braces \{\} on hitting return after typing a
+command. The function will search for a \textbackslash{} and will
+stop once it founds a space, some \{\} or a second \textbackslash{}
+as on \textbackslash{} \textbackslash{}. This can be configured also
+by using the hidden preference \texttt{glatex\_set\_autobraces}
+described in chapter \ref{sec:autoadding_of_braces}, page \pageref
+{sec:autoadding_of_braces}.
+
+
\section{Contribution to the plugin}
If you like the plugin, there are a number of ways, how to
contribute to the development of the plugin.
Modified: trunk/geanylatex/src/geanylatex.c
===================================================================
--- trunk/geanylatex/src/geanylatex.c 2010-05-15 16:37:07 UTC (rev 1351)
+++ trunk/geanylatex/src/geanylatex.c 2010-05-15 20:08:03 UTC (rev 1352)
@@ -453,7 +453,7 @@
while (isspace(buf[start]) && buf[start] != '\0')
start++;
- /* check for begin */
+ /* check for begin for autocompletion of \end{} and \endgr*/
if (strncmp(buf + start, "\\begin", 6) == 0)
{
gchar full_cmd[15];
@@ -523,13 +523,56 @@
construct = g_strdup_printf("\t\n\\end%s{%s}", full_cmd, env);
editor_insert_text_block(editor, construct, pos,
1, -1, TRUE);
- /* ... and setting the indention */
+ /* ... and setting the indention */
sci_set_line_indentation(sci, sci_get_current_line(sci) + 1,
indent);
g_free(construct);
}
}
- break;
+
+ /* Now we are handling the case, a new line has been inserted
+ * but no closing braces */
+ else if (glatex_autobraces_active == TRUE)
+ {
+ gint line = sci_get_line_from_position(sci, pos -
+ (editor_get_eol_char_len (editor) + 1));
+ gint line_len = sci_get_line_length(sci, line) -
+ editor_get_eol_char_len (editor);
+ gint i;
+ gchar *buf;
+
+ /* Catching current line which has been 'finished'*/
+ buf = sci_get_line(sci, line);
+
+ /* Searching for either \ or " ", {, } from end of
+ * line back to start */
+ for (i = line_len; i >= 0 ; i--)
+ {
+ if (buf[i] == '\\')
+ {
+ if ((i > 0 && buf[i-1] != '\\') ||
+ (i == 0))
+ {
+ sci_insert_text(sci,
+ pos - (editor_get_eol_char_len (editor)), "{}");
+ }
+ /* We will stop here in any case */
+ break;
+ }
+ /* Else we want to stop once we found a space,
+ * some closing braces somewhere before as we
+ * are assuming, manipulating something here
+ * would cause a bigger mass. */
+ else if (buf[i] == ' ' ||
+ buf[i] == '}' ||
+ buf[i] == '{')
+ {
+ break;
+ }
+ }
+ g_free(buf);
+ }
+ break;
} /* Closing case \r or \n */
case '_':
case '^':
@@ -769,7 +812,7 @@
cmd_str = g_strdup_printf("\\%s{", cmd);
glatex_insert_string(cmd_str, TRUE);
- /* This shall put the cursor inside the braces */
+ /* This shall put the cursor inside the braces */
glatex_insert_string("}", FALSE);
sci_end_undo_action(doc->editor->sci);
@@ -781,7 +824,7 @@
}
-
+
void
glatex_insert_ref_activated(G_GNUC_UNUSED GtkMenuItem * menuitem,
G_GNUC_UNUSED gpointer gdata)
Modified: trunk/geanylatex/src/latexutils.c
===================================================================
--- trunk/geanylatex/src/latexutils.c 2010-05-15 16:37:07 UTC (rev 1351)
+++ trunk/geanylatex/src/latexutils.c 2010-05-15 20:08:03 UTC (rev 1352)
@@ -118,3 +118,9 @@
editor_insert_text_block(doc->editor, string, pos, len, 0, TRUE);
}
}
+
+
+void glatex_insert_braces()
+{
+ glatex_insert_string("{}", FALSE);
+}
Modified: trunk/geanylatex/src/latexutils.h
===================================================================
--- trunk/geanylatex/src/latexutils.h 2010-05-15 16:37:07 UTC (rev 1351)
+++ trunk/geanylatex/src/latexutils.h 2010-05-15 20:08:03 UTC (rev 1352)
@@ -27,5 +27,6 @@
void glatex_usepackage(const gchar *pkg, const gchar *options);
void glatex_enter_key_pressed_in_entry(G_GNUC_UNUSED GtkWidget *widget, gpointer dialog);
void glatex_insert_string(gchar *string, gboolean reset_position);
+void glatex_insert_braces();
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list