SF.net SVN: geany:[3991] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sat Jul 18 14:45:43 UTC 2009
Revision: 3991
http://geany.svn.sourceforge.net/geany/?rev=3991&view=rev
Author: eht16
Date: 2009-07-18 14:45:43 +0000 (Sat, 18 Jul 2009)
Log Message:
-----------
Improve inserting of comment templates like File header or licence notices. The comment information are now read from the filetype configuration files.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/templates.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-07-18 14:45:30 UTC (rev 3990)
+++ trunk/ChangeLog 2009-07-18 14:45:43 UTC (rev 3991)
@@ -5,6 +5,10 @@
Apply changes in the toolbar editor instantly.
Show icons in the toolbar editor.
Speed up toolbar editor dialog creation.
+ * src/templates.c:
+ Improve inserting of comment templates like File header or licence
+ notices. The comment information are now read from the filetype
+ configuration files.
2009-07-16 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c 2009-07-18 14:45:30 UTC (rev 3990)
+++ trunk/src/templates.c 2009-07-18 14:45:43 UTC (rev 3991)
@@ -591,122 +591,46 @@
* 6 characters are filled with whitespace when the comment characters include " *" */
static gchar *make_comment_block(const gchar *comment_text, gint filetype_idx, guint indent)
{
- gchar *frame_start = ""; /* to add before comment_text */
- gchar *frame_end = ""; /* to add after comment_text */
- gchar *line_prefix; /* to add before every line in comment_text */
+ gchar *frame_start; /* to add before comment_text */
+ gchar *frame_end; /* to add after comment_text */
+ gchar *line_prefix; /* to add before every line in comment_text */
gchar *result;
gchar *tmp;
gchar *prefix;
gchar **lines;
guint i, len;
+ GeanyFiletype *ft = filetypes_index(filetype_idx);
- /* TODO the following switch could be replaced by some intelligent code which reads
- * frame_start, frame_end and line_prefix from the filetype definition files */
- switch (filetype_idx)
+ g_return_val_if_fail(ft != NULL, NULL);
+
+ if (NZV(ft->comment_open))
{
- case GEANY_FILETYPES_HTML:
- case GEANY_FILETYPES_XML:
- case GEANY_FILETYPES_DOCBOOK:
+ if (NZV(ft->comment_close))
{
- frame_start = "<!--\n";
- frame_end = "-->\n";
+ frame_start = g_strconcat(ft->comment_open, "\n", NULL);
+ frame_end = g_strconcat(ft->comment_close, "\n", NULL);
line_prefix = "";
- break;
}
-
- case GEANY_FILETYPES_PYTHON:
- case GEANY_FILETYPES_R:
- case GEANY_FILETYPES_RUBY:
- case GEANY_FILETYPES_SH:
- case GEANY_FILETYPES_MAKE:
- case GEANY_FILETYPES_PERL:
- case GEANY_FILETYPES_DIFF:
- case GEANY_FILETYPES_TCL:
- case GEANY_FILETYPES_CONF:
- case GEANY_FILETYPES_PO:
- case GEANY_FILETYPES_YAML:
- case GEANY_FILETYPES_CMAKE:
+ else
{
- line_prefix = "#";
- break;
+ frame_start = NULL;
+ frame_end = NULL;
+ line_prefix = ft->comment_open;
}
+ }
+ else
+ { /* use C-like multi-line comments as fallback */
+ frame_start = g_strdup("/*\n");
+ frame_end = g_strdup("*/\n");
+ line_prefix = "";
+ }
- case GEANY_FILETYPES_JS:
- case GEANY_FILETYPES_HAXE:
- {
- line_prefix = "//";
- break;
- }
-
- case GEANY_FILETYPES_LATEX:
- case GEANY_FILETYPES_MATLAB:
- {
- line_prefix = "%";
- break;
- }
-
- case GEANY_FILETYPES_ADA:
- case GEANY_FILETYPES_HASKELL:
- case GEANY_FILETYPES_VHDL:
- case GEANY_FILETYPES_LUA:
- {
- line_prefix = "--";
- break;
- }
-
- case GEANY_FILETYPES_FORTRAN:
- {
- line_prefix = "!";
- break;
- }
-
- case GEANY_FILETYPES_F77:
- {
- line_prefix = "c";
- break;
- }
-
- case GEANY_FILETYPES_ASM:
- case GEANY_FILETYPES_NSIS:
- {
- line_prefix = ";";
- break;
- }
-
- case GEANY_FILETYPES_BASIC:
- {
- line_prefix = "'";
- break;
- }
-
- case GEANY_FILETYPES_PASCAL:
- {
- frame_start = "{\n";
- frame_end = "}\n";
- line_prefix = "";
- break;
- }
-
- case GEANY_FILETYPES_CAML:
- {
- frame_start = "(*\n";
- frame_end = " *)\n";
- line_prefix = " *";
- break;
- }
-
- case GEANY_FILETYPES_NONE:
- {
- line_prefix = "";
- break;
- }
-
- default: /* assume C-like multi-line comment is appropriate */
- {
- frame_start = "/*\n";
- frame_end = " */\n";
- line_prefix = " *";
- }
+ /* do some magic to nicely format C-like multi-line comments */
+ if (NZV(frame_start) && frame_start[1] == '*')
+ {
+ /* prefix the string with a space */
+ setptr(frame_end, g_strconcat(" ", frame_end, NULL));
+ line_prefix = " *";
}
/* construct the real prefix with given amount of whitespace */
@@ -715,7 +639,6 @@
prefix = g_strconcat(line_prefix, tmp, NULL);
g_free(tmp);
-
/* add line_prefix to every line of comment_text */
lines = g_strsplit(comment_text, "\n", -1);
len = g_strv_length(lines) - 1;
@@ -728,10 +651,12 @@
tmp = g_strjoinv("\n", lines);
/* add frame_start and frame_end */
- result = g_strconcat(frame_start, tmp, frame_end, NULL);
+ if (frame_start != NULL)
+ result = g_strconcat(frame_start, tmp, frame_end, NULL);
+ else
+ result = g_strconcat(tmp, frame_end, NULL);
- g_free(prefix);
- g_free(tmp);
+ utils_free_pointers(4, prefix, tmp, frame_start, frame_end, NULL);
g_strfreev(lines);
return result;
}
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