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