SF.net SVN: geany-plugins:[1316] trunk/geanygendoc/src
colombanw at users.sourceforge.net
colombanw at xxxxx
Wed Apr 28 21:30:26 UTC 2010
Revision: 1316
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1316&view=rev
Author: colombanw
Date: 2010-04-28 21:30:25 +0000 (Wed, 28 Apr 2010)
Log Message:
-----------
GeanyGenDoc: Indent inserted comment according to insertion position
Indent the inserted comment according to the insertion position
indentation. This can be disabled by a (currently) hidden "indent"
preference.
Also use editor_insert_text_block() in place of sci_insert_text(),
which fixes line endings to be the right ones for the working file.
Modified Paths:
--------------
trunk/geanygendoc/src/ggd-plugin.c
trunk/geanygendoc/src/ggd-plugin.h
trunk/geanygendoc/src/ggd.c
trunk/geanygendoc/src/ggd.h
Modified: trunk/geanygendoc/src/ggd-plugin.c
===================================================================
--- trunk/geanygendoc/src/ggd-plugin.c 2010-04-28 21:29:54 UTC (rev 1315)
+++ trunk/geanygendoc/src/ggd-plugin.c 2010-04-28 21:30:25 UTC (rev 1316)
@@ -80,6 +80,7 @@
/* global plugin options */
gchar *GGD_OPT_doctype = NULL;
gboolean GGD_OPT_save_to_refresh = FALSE;
+gboolean GGD_OPT_indent = TRUE;
@@ -148,6 +149,7 @@
plugin->config = ggd_opt_group_new ("General");
ggd_opt_group_add_string (plugin->config, &GGD_OPT_doctype, "doctype");
ggd_opt_group_add_boolean (plugin->config, &GGD_OPT_save_to_refresh, "save_to_refresh");
+ ggd_opt_group_add_boolean (plugin->config, &GGD_OPT_indent, "indent");
conffile = ggd_get_config_file ("ggd.conf", NULL, GGD_PERM_R, &err);
if (conffile) {
success = ggd_opt_group_load_from_file (plugin->config, conffile, &err);
Modified: trunk/geanygendoc/src/ggd-plugin.h
===================================================================
--- trunk/geanygendoc/src/ggd-plugin.h 2010-04-28 21:29:54 UTC (rev 1315)
+++ trunk/geanygendoc/src/ggd-plugin.h 2010-04-28 21:30:25 UTC (rev 1316)
@@ -45,6 +45,7 @@
/* global plugin options */
extern gchar *GGD_OPT_doctype;
extern gboolean GGD_OPT_save_to_refresh;
+extern gboolean GGD_OPT_indent;
G_END_DECLS
Modified: trunk/geanygendoc/src/ggd.c
===================================================================
--- trunk/geanygendoc/src/ggd.c 2010-04-28 21:29:54 UTC (rev 1315)
+++ trunk/geanygendoc/src/ggd.c 2010-04-28 21:30:25 UTC (rev 1316)
@@ -32,6 +32,14 @@
#include "ggd-plugin.h"
+/* sci_get_line_indentation() is not in the plugin API for now (API v183), then
+ * implement it -- borrowed from Geany's sciwrappers.c */
+#ifndef sci_get_line_indentation
+# define sci_get_line_indentation(sci, line) \
+ (scintilla_send_message (sci, SCI_GETLINEINDENTATION, line, 0))
+#endif /* sci_get_line_indentation */
+
+
/* The value that replace the "cursor" variable in templates, used to find it
* and therefore the cursor position. This should be a value that the user never
* want to output; otherwise it would behave strangely from the user point of
@@ -304,15 +312,16 @@
/* inserts the comment for @tag in @sci according to @setting */
static gboolean
-do_insert_comment (ScintillaObject *sci,
+do_insert_comment (GeanyDocument *doc,
GPtrArray *tag_array,
const TMTag *tag,
GgdFileType *ft,
GgdDocSetting *setting)
{
- gboolean success = FALSE;
- gchar *comment;
- gint cursor_offset = 0;
+ gboolean success = FALSE;
+ gchar *comment;
+ gint cursor_offset = 0;
+ ScintillaObject *sci = doc->editor->sci;
comment = get_comment (ft, setting, tag_array, tag, &cursor_offset);
if (comment) {
@@ -329,6 +338,9 @@
line = tag->atts.entry.line - 1;
line = adjust_start_line (sci, tag_array, tag, line);
pos = sci_get_position_from_line (sci, line);
+ if (GGD_OPT_indent) {
+ pos += sci_get_line_indentation (sci, line);
+ }
break;
}
@@ -336,8 +348,8 @@
pos = sci_get_current_position (sci);
break;
}
- sci_insert_text (sci, pos, comment);
- sci_set_current_position (sci, pos + cursor_offset, TRUE);
+ editor_insert_text_block (doc->editor, comment, pos, cursor_offset,
+ -1, TRUE);
success = TRUE;
}
g_free (comment);
@@ -446,7 +458,7 @@
setting = get_setting_from_tag (doctype, tag_array, tag, &tag);
if (setting && ! g_hash_table_lookup (tag_done_table, tag)) {
- if (! do_insert_comment (sci, tag_array, tag, filetype, setting)) {
+ if (! do_insert_comment (doc, tag_array, tag, filetype, setting)) {
success = FALSE;
break;
} else {
Modified: trunk/geanygendoc/src/ggd.h
===================================================================
--- trunk/geanygendoc/src/ggd.h 2010-04-28 21:29:54 UTC (rev 1315)
+++ trunk/geanygendoc/src/ggd.h 2010-04-28 21:30:25 UTC (rev 1316)
@@ -21,7 +21,7 @@
#define H_GGD
#include <glib.h>
-#include "geanyplugin.h"
+#include <geanyplugin.h>
G_BEGIN_DECLS
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