SF.net SVN: geany:[4852] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Thu Apr 22 13:01:45 UTC 2010


Revision: 4852
          http://geany.svn.sourceforge.net/geany/?rev=4852&view=rev
Author:   ntrel
Date:     2010-04-22 13:01:45 +0000 (Thu, 22 Apr 2010)

Log Message:
-----------
Support {pc} wildcard in snippets to escape percent char.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/doc/geany.html
    trunk/doc/geany.txt
    trunk/src/editor.c
    trunk/src/templates.c
    trunk/src/templates.h

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-04-22 12:25:20 UTC (rev 4851)
+++ trunk/ChangeLog	2010-04-22 13:01:45 UTC (rev 4852)
@@ -6,6 +6,9 @@
  * src/keybindings.c, src/keybindings.h, src/plugindata.h:
    Constify some more string pointers in the API (patch by
    Colomban Wendling, thanks).
+ * src/templates.c, src/templates.h, src/editor.c, doc/geany.txt,
+   doc/geany.html:
+   Support {pc} wildcard in snippets to escape percent char.
 
 
 2010-04-21  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/doc/geany.html
===================================================================
--- trunk/doc/geany.html	2010-04-22 12:25:20 UTC (rev 4851)
+++ trunk/doc/geany.html	2010-04-22 13:01:45 UTC (rev 4852)
@@ -4887,14 +4887,19 @@
 </thead>
 <tbody valign="top">
 <tr><td>ob</td>
-<td>Opening Brace (used to prevent other
+<td>{ Opening Brace (used to prevent other
 wildcards being expanded).</td>
 <td>file templates, file header, snippets.</td>
 </tr>
 <tr><td>cb</td>
-<td>Closing Brace.</td>
+<td>} Closing Brace.</td>
 <td>file templates, file header, snippets.</td>
 </tr>
+<tr><td>pc</td>
+<td>% Percent (used to escape e.g. %block% in
+snippets).</td>
+<td>snippets.</td>
+</tr>
 <tr><td>developer</td>
 <td>The name of the developer.</td>
 <td>file templates, file header,
@@ -5996,7 +6001,7 @@
 <div class="footer">
 <hr class="footer" />
 <a class="reference" href="geany.txt">View document source</a>.
-Generated on: 2010-04-21 17:17 UTC.
+Generated on: 2010-04-22 12:45 UTC.
 Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>

Modified: trunk/doc/geany.txt
===================================================================
--- trunk/doc/geany.txt	2010-04-22 12:25:20 UTC (rev 4851)
+++ trunk/doc/geany.txt	2010-04-22 13:01:45 UTC (rev 4852)
@@ -4230,9 +4230,11 @@
 ============== ============================================= =======================================
 Wildcard       Description                                   Available in
 ============== ============================================= =======================================
-ob             Opening Brace (used to prevent other          file templates, file header, snippets.
+ob             { Opening Brace (used to prevent other        file templates, file header, snippets.
                wildcards being expanded).
-cb             Closing Brace.                                file templates, file header, snippets.
+cb             } Closing Brace.                              file templates, file header, snippets.
+pc             \% Percent (used to escape e.g. %block% in
+               snippets).                                    snippets.
 
 developer      The name of the developer.                    file templates, file header,
                                                              function description, ChangeLog entry,

Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c	2010-04-22 12:25:20 UTC (rev 4851)
+++ trunk/src/editor.c	2010-04-22 13:01:45 UTC (rev 4852)
@@ -2275,7 +2275,7 @@
 		g_hash_table_foreach(specials, snippets_replace_specials, NULL);
 	}
 
-	/* replace any %template% wildcards */
+	/* replace any template {foo} wildcards */
 	templates_replace_common(pattern, editor->document->file_name, editor->document->file_type, NULL);
 
 	/* transform other wildcards */
@@ -2336,6 +2336,10 @@
 	utils_string_replace_all(pattern, "%ws%", whitespace);
 	g_free(whitespace);
 
+	/* escape % last */
+	/* Bug: {ob}pc{cb} will be replaced by % too */
+	templates_replace_valist(pattern, "{pc}", "%", NULL);
+
 	/* We put the cursor positions for the most recent
 	 * parsed snippet first, followed by any remaining positions */
 	i = 0;

Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c	2010-04-22 12:25:20 UTC (rev 4851)
+++ trunk/src/templates.c	2010-04-22 13:01:45 UTC (rev 4852)
@@ -128,9 +128,9 @@
 
 static void replace_static_values(GString *text);
 static gchar *get_template_fileheader(GeanyFiletype *ft);
+
+/* called by templates_replace_common */
 static void templates_replace_default_dates(GString *text);
-static void templates_replace_valist(GString *text,
-	const gchar *first_wildcard, ...) G_GNUC_NULL_TERMINATED;
 static void templates_replace_command(GString *text, const gchar *file_name,
 	const gchar *file_type, const gchar *func_name);
 
@@ -723,7 +723,7 @@
  *      "{another_wildcard}", "another value", NULL);
  *
  * The argument list must be terminated with NULL. */
-static void templates_replace_valist(GString *text, const gchar *first_wildcard, ...)
+void templates_replace_valist(GString *text, const gchar *first_wildcard, ...)
 {
 	va_list args;
 	const gchar *key, *value;

Modified: trunk/src/templates.h
===================================================================
--- trunk/src/templates.h	2010-04-22 12:25:20 UTC (rev 4851)
+++ trunk/src/templates.h	2010-04-22 13:01:45 UTC (rev 4852)
@@ -73,8 +73,11 @@
 gchar *templates_get_template_licence(GeanyDocument *doc, gint licence_type);
 
 void templates_replace_common(GString *template, const gchar *fname,
-							  GeanyFiletype *ft, const gchar *func_name);
+	GeanyFiletype *ft, const gchar *func_name);
 
+void templates_replace_valist(GString *text,
+	const gchar *first_wildcard, ...) G_GNUC_NULL_TERMINATED;
+
 void templates_free_templates(void);
 
 #endif


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