SF.net SVN: geany: [2773] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Sun Jul 13 10:52:39 UTC 2008


Revision: 2773
          http://geany.svn.sourceforge.net/geany/?rev=2773&view=rev
Author:   eht16
Date:     2008-07-13 03:52:38 -0700 (Sun, 13 Jul 2008)

Log Message:
-----------
Add support to use template wildcards in snippets.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/data/snippets.conf
    trunk/doc/geany.html
    trunk/doc/geany.txt
    trunk/src/editor.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-07-12 11:46:59 UTC (rev 2772)
+++ trunk/ChangeLog	2008-07-13 10:52:38 UTC (rev 2773)
@@ -1,3 +1,9 @@
+2008-07-13  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * data/snippets.conf, doc/geany.html, doc/geany.txt, src/editor.c:
+   Add support to use template wildcards in snippets.
+
+
 2008-07-12  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * plugins/classbuilder.c:

Modified: trunk/data/snippets.conf
===================================================================
--- trunk/data/snippets.conf	2008-07-12 11:46:59 UTC (rev 2772)
+++ trunk/data/snippets.conf	2008-07-13 10:52:38 UTC (rev 2773)
@@ -6,10 +6,14 @@
 # use %key% for all keys defined in the [Special] section
 # you can define a section for each supported filetype to overwrite default settings, the section
 # name must match exactly the internal filetype name, run 'geany --ft-names' for a full list
+#
+# Additionally, you can use most of the template wildcards like {developer} or {date} in the snippets.
+# See the documentation for details.
 
 # filetype names:
-# C, C++, D, Java, Pascal, ASM, Fortran, CAML, Haskell, VHDL, Perl, PHP, Javascript, Python, Ruby,
-# Tcl, Lua, Ferite, Sh, Make, O-Matrix, XML, Docbook, HTML, CSS, SQL, LaTeX, Diff, Conf, None
+# ASM, C, C++, C#, CAML, D, Fortran, FreeBasic, Haskell, Haxe, Java, Pascal, VHDL, Ferite, Javascript,
+# Lua, Make, O-Matrix, Perl, PHP, Python, Ruby, Sh, Tcl, CSS, Docbook, HTML, XML, Conf, Diff, LaTeX,
+# reStructuredText, SQL, None
 
 # Default is used for all filetypes and keys can be overwritten by [filetype] sections
 [Default]

Modified: trunk/doc/geany.html
===================================================================
--- trunk/doc/geany.html	2008-07-12 11:46:59 UTC (rev 2772)
+++ trunk/doc/geany.html	2008-07-13 10:52:38 UTC (rev 2773)
@@ -6,7 +6,7 @@
 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
 <title>Geany</title>
 <meta name="authors" content="Enrico Tröger  Nick Treleaven  Frank Lanitz" />
-<meta name="date" content="2008-06-19" />
+<meta name="date" content="2008-06-24" />
 <style type="text/css">
 
 /*
@@ -139,7 +139,7 @@
 <br />Nick Treleaven
 <br />Frank Lanitz</td></tr>
 <tr><th class="docinfo-name">Date:</th>
-<td>2008-06-19</td></tr>
+<td>2008-06-24</td></tr>
 <tr><th class="docinfo-name">Version:</th>
 <td>0.15</td></tr>
 </tbody>
@@ -1098,6 +1098,15 @@
 <p>Everytime you write <tt class="docutils literal"><span class="pre">myname</span></tt> <TAB> in Geany, it will replace "myname"
 with "Enrico Tröger". The key to start auto completion can be changed
 in the preferences dialog, by default it is TAB.</p>
+<p>Since Geany 0.15 you can also use most of the available templates wildcards
+listed in <a class="reference" href="#template-wildcards">Template wildcards</a>. All wildcards which are listed as
+<cite>available in snippets</cite> can be used. For instance to improve the above example:</p>
+<pre class="literal-block">
+[Default]
+myname=My name is {developer}
+</pre>
+<p>this will replace <tt class="docutils literal"><span class="pre">myname</span></tt> with "My name is " and the value of the template
+preference <tt class="docutils literal"><span class="pre">developer</span></tt>.</p>
 <p>You may change the behaviour Geany recognizes the word to complete,
 i.e. where define the start and end of a word. The section "Special" may
 contain a key "wordchars" which lists all characters a string may contain
@@ -3288,43 +3297,43 @@
 <td>The name of the developer.</td>
 <td>filetypes, file header, function
 description, ChangeLog entry, bsd,
-gpl</td>
+gpl, snippets</td>
 </tr>
 <tr><td>initial</td>
 <td>The developer's initials, e.g. "ET" for
 Enrico Tröger or "JFD" for John Foobar Doe.</td>
 <td>filetypes, file header, function
 description, ChangeLog entry, bsd,
-gpl</td>
+gpl, snippets</td>
 </tr>
 <tr><td>mail</td>
 <td>The email address of the developer.</td>
 <td>file header, function description,
-ChangeLog entry, bsd, gpl</td>
+ChangeLog entry, bsd, gpl, snippets</td>
 </tr>
 <tr><td>company</td>
 <td>The company the developer is working for.</td>
 <td>filetypes, file header, function
 description, ChangeLog entry, bsd,
-gpl</td>
+gpl, snippets</td>
 </tr>
 <tr><td>year</td>
 <td>The current year in the format: YYYY.</td>
 <td>filetypes, file header, function
 description, ChangeLog entry, bsd,
-gpl</td>
+gpl, snippets</td>
 </tr>
 <tr><td>version</td>
 <td>The initial version of a new file.</td>
 <td>filetypes, file header, function
 description, ChangeLog entry, bsd,
-gpl</td>
+gpl, snippets</td>
 </tr>
 <tr><td>date</td>
 <td>The current date in the format: YYYY-MM-DD.</td>
 <td>filetypes, file header, function
 description, ChangeLog entry, bsd,
-gpl</td>
+gpl, snippets</td>
 </tr>
 <tr><td>untitled</td>
 <td>The string "untitled" (this will be
@@ -3332,23 +3341,24 @@
 filetype templates.</td>
 <td>filetypes, file header, function
 description, ChangeLog entry, bsd,
-gpl</td>
+gpl, snippets</td>
 </tr>
 <tr><td>geanyversion</td>
 <td>The actual Geany version, e.g.
 "Geany 0.15".</td>
 <td>filetypes, file header, function
 description, ChangeLog entry, bsd,
-gpl</td>
+gpl, snippets</td>
 </tr>
 <tr><td>datetime</td>
 <td>The current date and time in the format:
 DD.MM.YYYY HH:mm:ss ZZZZ.</td>
-<td>file header, function description</td>
+<td>file header, function description,
+snippets</td>
 </tr>
 <tr><td>filename</td>
 <td>The filename of the current file.</td>
-<td>file header</td>
+<td>file header, snippets</td>
 </tr>
 <tr><td>gpl</td>
 <td>This wildcard inserts a short GPL notice.</td>
@@ -4141,7 +4151,7 @@
 <div class="footer">
 <hr class="footer" />
 <a class="reference" href="geany.txt">View document source</a>.
-Generated on: 2008-06-24 14:28 UTC.
+Generated on: 2008-07-13 10:38 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	2008-07-12 11:46:59 UTC (rev 2772)
+++ trunk/doc/geany.txt	2008-07-13 10:52:38 UTC (rev 2773)
@@ -794,6 +794,16 @@
 with "Enrico Tröger". The key to start auto completion can be changed
 in the preferences dialog, by default it is TAB.
 
+Since Geany 0.15 you can also use most of the available templates wildcards
+listed in `Template wildcards`_. All wildcards which are listed as
+`available in snippets` can be used. For instance to improve the above example::
+
+    [Default]
+    myname=My name is {developer}
+
+this will replace ``myname`` with "My name is " and the value of the template
+preference ``developer``.
+
 You may change the behaviour Geany recognizes the word to complete,
 i.e. where define the start and end of a word. The section "Special" may
 contain a key "wordchars" which lists all characters a string may contain
@@ -2994,43 +3004,43 @@
 ============== ============================================= ==============
 developer      The name of the developer.                    filetypes, file header, function
                                                              description, ChangeLog entry, bsd,
-                                                             gpl
+                                                             gpl, snippets
 
 initial        The developer's initials, e.g. "ET" for       filetypes, file header, function
                Enrico Tröger or "JFD" for John Foobar Doe.   description, ChangeLog entry, bsd,
-                                                             gpl
+                                                             gpl, snippets
 
 mail           The email address of the developer.           file header, function description,
-                                                             ChangeLog entry, bsd, gpl
+                                                             ChangeLog entry, bsd, gpl, snippets
 
 company        The company the developer is working for.     filetypes, file header, function
                                                              description, ChangeLog entry, bsd,
-                                                             gpl
+                                                             gpl, snippets
 
 year           The current year in the format: YYYY.         filetypes, file header, function
                                                              description, ChangeLog entry, bsd,
-                                                             gpl
+                                                             gpl, snippets
 
 version        The initial version of a new file.            filetypes, file header, function
                                                              description, ChangeLog entry, bsd,
-                                                             gpl
+                                                             gpl, snippets
 
 date           The current date in the format: YYYY-MM-DD.   filetypes, file header, function
                                                              description, ChangeLog entry, bsd,
-                                                             gpl
+                                                             gpl, snippets
 
 untitled       The string "untitled" (this will be           filetypes, file header, function
                translated to your locale), used in           description, ChangeLog entry, bsd,
-               filetype templates.                           gpl
+               filetype templates.                           gpl, snippets
 
 geanyversion   The actual Geany version, e.g.                filetypes, file header, function
                "Geany |(version)|".                          description, ChangeLog entry, bsd,
-                                                             gpl
+                                                             gpl, snippets
 
-datetime       The current date and time in the format:      file header, function description
-               DD.MM.YYYY HH:mm:ss ZZZZ.
+datetime       The current date and time in the format:      file header, function description,
+               DD.MM.YYYY HH:mm:ss ZZZZ.                     snippets
 
-filename       The filename of the current file.             file header
+filename       The filename of the current file.             file header, snippets
 
 gpl            This wildcard inserts a short GPL notice.     file header
 

Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c	2008-07-12 11:46:59 UTC (rev 2772)
+++ trunk/src/editor.c	2008-07-13 10:52:38 UTC (rev 2773)
@@ -48,6 +48,7 @@
 #include "symbols.h"
 #include "callbacks.h"
 #include "geanyobject.h"
+#include "templates.h"
 
 
 /* holds word under the mouse or keyboard cursor */
@@ -1518,6 +1519,34 @@
 }
 
 
+static gchar *snippets_replace_wildcards(GeanyDocument *doc, gchar *text)
+{
+	gchar *year = utils_get_date_time("%Y", NULL);
+	gchar *date = utils_get_date_time("%Y-%m-%d", NULL);
+	gchar *datetime = utils_get_date_time("%d.%m.%Y %H:%M:%S %Z", NULL);
+	gchar *basename = g_path_get_basename(DOC_FILENAME(doc));
+
+	text = utils_str_replace(text, "{year}", year);
+	text = utils_str_replace(text, "{date}", date);
+	text = utils_str_replace(text, "{datetime}", datetime);
+	text = utils_str_replace(text, "{version}", template_prefs.version);
+	text = utils_str_replace(text, "{initial}", template_prefs.initials);
+	text = utils_str_replace(text, "{developer}", template_prefs.developer);
+	text = utils_str_replace(text, "{mail}", template_prefs.mail);
+	text = utils_str_replace(text, "{company}", template_prefs.company);
+	text = utils_str_replace(text, "{untitled}", GEANY_STRING_UNTITLED);
+	text = utils_str_replace(text, "{geanyversion}", "Geany " VERSION);
+	text = utils_str_replace(text, "{filename}", basename);
+
+	g_free(year);
+	g_free(date);
+	g_free(datetime);
+	g_free(basename);
+
+	return text;
+}
+
+
 static gboolean snippets_complete_constructs(GeanyDocument *doc, gint pos, const gchar *word)
 {
 	gchar *str;
@@ -1569,6 +1598,9 @@
 	pattern = utils_str_replace(pattern, "\t", "%ws%"); /* to avoid endless replacing of \t */
 	pattern = utils_str_replace(pattern, "%ws%", whitespace);
 
+	/* replace any %template% wildcards */
+	pattern = snippets_replace_wildcards(doc, pattern);
+
 	/* find the %cursor% pos (has to be done after all other operations) */
 	step = utils_strpos(pattern, "%cursor%");
 	if (step != -1)


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