Branch: refs/heads/master Author: RPG rpg@scriptumplus.ru Committer: RPG rpg@scriptumplus.ru Date: Thu, 14 Nov 2013 10:07:27 UTC Commit: 6f48dac8b2e9d83b3b0ec782458ebb3916ad0708 https://github.com/geany/geany-plugins/commit/6f48dac8b2e9d83b3b0ec782458ebb...
Log Message: ----------- Merge pull request #2 from kugel-/autoclose-v0.2
Autoclose v0.2
Modified Paths: -------------- addons/src/ao_xmltagging.c autoclose/src/autoclose.c geanylatex/src/geanylatex.c geanylatex/src/templates.c geanysendmail/src/geanysendmail.c updatechecker/src/updatechecker.c
Modified: addons/src/ao_xmltagging.c 28 files changed, 14 insertions(+), 14 deletions(-) =================================================================== @@ -44,8 +44,6 @@ void ao_xmltagging(void)
if (sci_has_selection(doc->editor->sci) == TRUE) { - gchar *selection = NULL; - gchar *replacement = NULL; GtkWidget *dialog = NULL; GtkWidget *vbox = NULL; GtkWidget *hbox = NULL; @@ -84,38 +82,40 @@ void ao_xmltagging(void)
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { - gchar *tag = NULL; + GString *tag = NULL; + gchar *selection = NULL; + gchar *replacement = NULL;
+ /* Getting the selection and setting the undo flag */ selection = sci_get_selection_contents(doc->editor->sci); sci_start_undo_action(doc->editor->sci);
- tag = g_strdup(gtk_entry_get_text(GTK_ENTRY(textbox))); - if (NZV(tag)) + /* Getting the tag */ + tag = g_string_new(gtk_entry_get_text(GTK_ENTRY(textbox))); + + if (tag->len > 0) { gsize end = 0; - GString *tmp = NULL; gchar *end_tag;
/* First we check for %s and replace it with selection*/ - tmp = g_string_new(tag); - utils_string_replace_all(tmp, "%s", selection); - tag = g_string_free(tmp, FALSE); + utils_string_replace_all(tag, "%s", selection);
/* We try to find a space inside the inserted tag as we * only need to close the tag with part until first space. * */ - while (!g_ascii_isspace(tag[end]) && tag[end] != '\0') + while (end < tag->len && !g_ascii_isspace(tag->str[end]) ) end++;
if (end > 0) { - end_tag = g_strndup(tag, end); + end_tag = g_strndup(tag->str, end); } else { - end_tag = tag; + end_tag = tag->str; } - replacement = g_strconcat("<", tag, ">", + replacement = g_strconcat("<", tag->str, ">", selection, "</", end_tag, ">", NULL); g_free(end_tag); } @@ -124,7 +124,7 @@ void ao_xmltagging(void) sci_end_undo_action(doc->editor->sci); g_free(selection); g_free(replacement); - g_free(tag); + g_string_free(tag, TRUE); } gtk_widget_destroy(dialog); }
Modified: autoclose/src/autoclose.c 26 files changed, 6 insertions(+), 20 deletions(-) =================================================================== @@ -410,7 +410,7 @@ if (char_is_curly_bracket(ch)) { if (line_start == line_end) - return AC_CONTINUE_ACTION; + goto final; if (line_start > line_end) { line = line_end; @@ -433,6 +433,7 @@ unindent_line(sci, i, indent_width); } } +final: sci_end_undo_action(sci); return AC_STOP_ACTION; } @@ -779,9 +780,8 @@ struct_semicolon( if (!ac_info->jump_on_tab) return; g_return_if_fail(data); - g_return_if_fail(DOC_VALID(data->doc));
- ScintillaObject *sci = data->doc->editor->sci; + ScintillaObject *sci = SCINTILLA(obj); /* reset jump_on_tab state when user clicked away */ gboolean updated_sel = nt->updated & SC_UPDATE_SELECTION; gboolean updated_text = nt->updated & SC_UPDATE_CONTENT; @@ -800,8 +800,6 @@ struct_semicolon( data->last_line = new_line; }
-#define AC_GOBJECT_KEY "autoclose-userdata" - static void on_document_open(GObject *obj, GeanyDocument *doc, gpointer user_data) { @@ -813,29 +811,17 @@ struct_semicolon( data = g_new0(AutocloseUserData, 1); data->doc = doc; plugin_signal_connect(geany_plugin, G_OBJECT(sci), "sci-notify", - FALSE, G_CALLBACK(on_sci_notify), data); + FALSE, G_CALLBACK(on_sci_notify), data); plugin_signal_connect(geany_plugin, G_OBJECT(sci), "key-press-event", FALSE, G_CALLBACK(on_key_press), data); - /* save data pointer via GObject too for on_document_close() */ - g_object_set_data(G_OBJECT(sci), AC_GOBJECT_KEY, data); -} - -static void -on_document_close(GObject *obj, GeanyDocument *doc, gpointer user_data) -{ - /* free the AutocloseUserData instance and disconnect the handler */ - ScintillaObject *sci = doc->editor->sci; - AutocloseUserData *data = g_object_steal_data(G_OBJECT(sci), AC_GOBJECT_KEY); - /* no plugin_signal_disconnect() ?? */ - g_signal_handlers_disconnect_by_func(G_OBJECT(sci), G_CALLBACK(on_sci_notify), data); - g_free(data); + /* This will free the data when the sci is destroyed */ + g_object_set_data_full(G_OBJECT(sci), "autoclose-userdata", data, g_free); }
PluginCallback plugin_callbacks[] = { { "document-open", (GCallback) &on_document_open, FALSE, NULL }, { "document-new", (GCallback) &on_document_open, FALSE, NULL }, - { "document-close", (GCallback) &on_document_close, FALSE, NULL }, { NULL, NULL, FALSE, NULL } };
Modified: geanylatex/src/geanylatex.c 4 files changed, 2 insertions(+), 2 deletions(-) =================================================================== @@ -1,7 +1,7 @@ /* * geanylatex.c - Plugin to let Geany better work together with LaTeX * - * Copyright 2007-2012 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> + * Copyright 2007-2013 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> * Copyright 2005-2009 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de> * Copyright 2006-2009 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com> * @@ -971,7 +971,7 @@ static void glatex_kblatex_toggle(G_GNUC_UNUSED guint key_id) if (ref_string != NULL) g_free(ref_string); if (template_string != NULL) - g_free(template_string); + g_string_free(template_string, TRUE); } }
Modified: geanylatex/src/templates.c 4 files changed, 3 insertions(+), 1 deletions(-) =================================================================== @@ -1,7 +1,7 @@ /* * templates.c * - * Copyright 2009-2012 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> + * Copyright 2009-2013 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -81,6 +81,8 @@ GPtrArray* glatex_init_custom_templates(void) g_slist_foreach(file_list, (GFunc)glatex_init_cutom_template_item, templates); g_slist_foreach(file_list, (GFunc) g_free, NULL); g_slist_free(file_list); + + g_free(tmp_basedir); return templates; }
Modified: geanysendmail/src/geanysendmail.c 6 files changed, 5 insertions(+), 1 deletions(-) =================================================================== @@ -1,7 +1,7 @@ /* * geanysendmail.c * - * Copyright 2007-2011 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> + * Copyright 2007-2011, 2013 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> * Copyright 2007 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de> * Copyright 2007, 2008 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com> * Copyright 2008, 2009 Timothy Boronczyk <tboronczyk(at)gmail(dot)com> @@ -111,6 +111,8 @@ enum } else { + g_free(cmd_str); + g_free(locale_filename); return; }
@@ -170,6 +172,8 @@ enum { ui_set_statusbar(FALSE, _("File has to be saved before sending.")); } + + g_free(config); }
static void key_send_as_attachment(G_GNUC_UNUSED guint key_id)
Modified: updatechecker/src/updatechecker.c 2 files changed, 1 insertions(+), 1 deletions(-) =================================================================== @@ -143,7 +143,7 @@ static void parse_version_string(const gchar *ver, gint *major, gint *minor, } else { - major = 0; + *major = 0; } g_strfreev(vers); }
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).