SF.net SVN: geany:[5809] branches/sm
statc at users.sourceforge.net
statc at xxxxx
Sat May 21 08:59:27 UTC 2011
Revision: 5809
http://geany.svn.sourceforge.net/geany/?rev=5809&view=rev
Author: statc
Date: 2011-05-21 08:59:27 +0000 (Sat, 21 May 2011)
Log Message:
-----------
Merge trunk (revisions 5701..5708)
Conflicts:
src/document.c
src/filetypes.c
src/keyfile.c
Modified Paths:
--------------
branches/sm/ChangeLog
branches/sm/THANKS
branches/sm/doc/pluginsignals.c
branches/sm/plugins/filebrowser.c
branches/sm/plugins/geanyfunctions.h
branches/sm/src/about.c
branches/sm/src/document.c
branches/sm/src/document.h
branches/sm/src/editor.c
branches/sm/src/filetypes.c
branches/sm/src/filetypes.h
branches/sm/src/geanyobject.c
branches/sm/src/geanyobject.h
branches/sm/src/keyfile.c
branches/sm/src/plugindata.h
branches/sm/src/plugins.c
branches/sm/src/search.c
branches/sm/src/symbols.c
branches/sm/src/ui_utils.c
branches/sm/src/ui_utils.h
branches/sm/tagmanager/sql.c
Modified: branches/sm/ChangeLog
===================================================================
--- branches/sm/ChangeLog 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/ChangeLog 2011-05-21 08:59:27 UTC (rev 5809)
@@ -1,3 +1,33 @@
+2011-04-11 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * plugins/filebrowser.c:
+ Update path when saving a new document for the first time if the
+ follow path option is enabled.
+ * src/about.c, src/keyfile.c, THANKS:
+ Store VTE path with the session (based on patch by Nicolas
+ Sierro, thanks).
+ There's still a bug with loading a project at startup; closing the
+ project doesn't restore old VTE path.
+ * src/filetypes.c, src/filetypes.h:
+ Refactor with filetypes_get_filename().
+ Make filetypes_get_conf_extension() static.
+
+
+2011-04-10 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/editor.c:
+ Ignore scrolling events in on_update_ui().
+ * src/geanyobject.c, src/plugindata.h, src/geanyobject.h,
+ src/document.c, doc/pluginsignals.c:
+ Add and use signal "document-reload" to the plugin API.
+ * src/symbols.c, tagmanager/sql.c:
+ Fix mapping of SQL tags for Geany's symbol list (closes #3216474).
+ * src/ui_utils.h, src/plugindata.h, src/document.c, src/plugins.c,
+ src/document.h, src/ui_utils.c, plugins/geanyfunctions.h:
+ Add ui_menu_add_document_items_sorted() and
+ document_sort_by_display_name() to the plugin API.
+
+
2011-04-08 Colomban Wendling <colomban(at)geany(dot)org>
* scintilla/lexers/LexCPP.cxx:
Modified: branches/sm/THANKS
===================================================================
--- branches/sm/THANKS 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/THANKS 2011-05-21 08:59:27 UTC (rev 5809)
@@ -88,6 +88,7 @@
Taylor Venable <taylor(at)metasyntax(dot)net> - Erlang filetype
Manuel Bua <manuel(dot)bua(at)gmail(dot)com> - Ensure consistent line endings pref.
Matthew Brush <codebrainz(at)users(dot)sourceforge(dot)net> - Various patches.
+Nicolas Sierro <nicolas at sierro.net> - store VTE path with session patch
Translators:
------------
Modified: branches/sm/doc/pluginsignals.c
===================================================================
--- branches/sm/doc/pluginsignals.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/doc/pluginsignals.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -82,6 +82,18 @@
*/
signal void (*document_open)(GObject *obj, GeanyDocument *doc, gpointer user_data);
+/** Sent when an existing document is reloaded.
+ *
+ * You need to include "document.h" for the declaration of GeanyDocument.
+ *
+ * @param obj a GeanyObject instance, should be ignored.
+ * @param doc the re-opened document.
+ * @param user_data user data.
+ *
+ * @since 0.21
+ */
+signal void (*document_reload)(GObject *obj, GeanyDocument *doc, gpointer user_data);
+
/** Sent before a document is saved.
*
* You need to include "document.h" for the declaration of GeanyDocument.
Modified: branches/sm/plugins/filebrowser.c
===================================================================
--- branches/sm/plugins/filebrowser.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/plugins/filebrowser.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -97,6 +97,7 @@
static void project_change_cb(GObject *obj, GKeyFile *config, gpointer data);
+/* note: other callbacks connected in plugin_init */
PluginCallback plugin_callbacks[] =
{
{ "project-open", (GCallback) &project_change_cb, TRUE, NULL },
@@ -1042,11 +1043,15 @@
}
+static gpointer last_activate_path = NULL;
+
static void document_activate_cb(G_GNUC_UNUSED GObject *obj, GeanyDocument *doc,
G_GNUC_UNUSED gpointer data)
{
gchar *new_dir;
+ last_activate_path = doc->real_path;
+
if (! fb_follow_path || doc->file_name == NULL || ! g_path_is_absolute(doc->file_name))
return;
@@ -1063,6 +1068,13 @@
}
+static void document_save_cb(GObject *obj, GeanyDocument *doc, gpointer user_data)
+{
+ if (!last_activate_path)
+ document_activate_cb(obj, doc, user_data);
+}
+
+
static void kb_activate(guint key_id)
{
gtk_notebook_set_current_page(GTK_NOTEBOOK(geany->main_widgets->sidebar_notebook), page_number);
@@ -1125,6 +1137,8 @@
plugin_signal_connect(geany_plugin, NULL, "document-activate", TRUE,
(GCallback) &document_activate_cb, NULL);
+ plugin_signal_connect(geany_plugin, NULL, "document-save", TRUE,
+ (GCallback) &document_save_cb, NULL);
}
Modified: branches/sm/plugins/geanyfunctions.h
===================================================================
--- branches/sm/plugins/geanyfunctions.h 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/plugins/geanyfunctions.h 2011-05-21 08:59:27 UTC (rev 5809)
@@ -72,6 +72,8 @@
geany_functions->p_document->document_get_basename_for_display
#define document_get_notebook_page \
geany_functions->p_document->document_get_notebook_page
+#define document_sort_by_display_name \
+ geany_functions->p_document->document_sort_by_display_name
#define editor_get_indent_prefs \
geany_functions->p_editor->editor_get_indent_prefs
#define editor_create_widget \
@@ -292,6 +294,8 @@
geany_functions->p_ui->ui_get_gtk_settings_integer
#define ui_combo_box_add_to_history \
geany_functions->p_ui->ui_combo_box_add_to_history
+#define ui_menu_add_document_items_sorted \
+ geany_functions->p_ui->ui_menu_add_document_items_sorted
#define dialogs_show_question \
geany_functions->p_dialogs->dialogs_show_question
#define dialogs_show_msgbox \
Modified: branches/sm/src/about.c
===================================================================
--- branches/sm/src/about.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/about.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -98,7 +98,8 @@
"John Gabriele, Jon Senior, Jon Strait, Josef Whiter, "
"Jörn Reder, Kelvin Gardiner, Kevin Ellwood, Kristoffer A. Tjernås, Lex Trotman, "
"Manuel Bua, Mário Silva, Marko Peric, Matthew Brush, Matti Mårds, "
-"Moritz Barsnick, Ondrej Donek, Peter Strand, Philipp Gildein, Pierre Joye, Rob van der Linde, "
+"Moritz Barsnick, Nicolas Sierro, Ondrej Donek, Peter Strand, Philipp Gildein, "
+"Pierre Joye, Rob van der Linde, "
"Robert McGinley, Roland Baudin, Ross McKay, S Jagannathan, Saleem Abdulrasool, "
"Sebastian Kraft, Shiv, Slava Semushin, Stefan Oltmanns, Tamim, Taylor Venable, "
"Thomas Huth, Thomas Martitz, Tomás Vírseda, "
Modified: branches/sm/src/document.c
===================================================================
--- branches/sm/src/document.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/document.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -1255,18 +1255,21 @@
if (! main_status.opening_session_files)
ui_add_recent_file(utf8_filename, update_recent_files_config);
- if (! reload)
- g_signal_emit_by_name(geany_object, "document-open", doc);
-
if (reload)
+ {
+ g_signal_emit_by_name(geany_object, "document-reload", doc);
ui_set_statusbar(TRUE, _("File %s reloaded."), display_filename);
+ }
else
+ {
+ g_signal_emit_by_name(geany_object, "document-open", doc);
/* For translators: this is the status window message for opening a file. %d is the number
* of the newly opened file, %s indicates whether the file is opened read-only
* (it is replaced with the string ", read-only"). */
msgwin_status_add(_("File %s opened(%d%s)."),
display_filename, gtk_notebook_get_n_pages(GTK_NOTEBOOK(main_widgets.notebook)),
(readonly) ? _(", read-only") : "");
+ }
}
g_free(display_filename);
@@ -3022,3 +3025,32 @@
}
return ret;
}
+
+
+/** GCompareFunc-like sort function to sort documents, e.g. in a GPtrArray by
+ * their display names.
+ * Display names means the base name of the document's file.
+ *
+ * @param a @c document a.
+ * @param b @c document b.
+ * @return negative value if a < b; zero if a = b; positive value if a > b.
+ *
+ * @since 0.21
+ */
+gint document_sort_by_display_name(gconstpointer a, gconstpointer b)
+{
+ GeanyDocument *doc_a = (GeanyDocument*) ((GPtrArray*) a)->pdata;
+ GeanyDocument *doc_b = (GeanyDocument*) ((GPtrArray*) b)->pdata;
+ gchar *base_name_a, *base_name_b;
+ gint result;
+
+ base_name_a = g_path_get_basename(DOC_FILENAME(doc_a));
+ base_name_b = g_path_get_basename(DOC_FILENAME(doc_b));
+
+ result = strcmp(base_name_a, base_name_b);
+
+ g_free(base_name_a);
+ g_free(base_name_b);
+
+ return result;
+}
Modified: branches/sm/src/document.h
===================================================================
--- branches/sm/src/document.h 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/document.h 2011-05-21 08:59:27 UTC (rev 5809)
@@ -262,4 +262,6 @@
void document_apply_indent_settings(GeanyDocument *doc);
+gint document_sort_by_display_name(gconstpointer a, gconstpointer b);
+
#endif
Modified: branches/sm/src/editor.c
===================================================================
--- branches/sm/src/editor.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/editor.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -515,6 +515,11 @@
ScintillaObject *sci = editor->sci;
gint pos = sci_get_current_position(sci);
+ /* since Scintilla 2.24, SCN_UPDATEUI is also sent on scrolling though we don't need to handle
+ * this and so ignore every SCN_UPDATEUI events except for content and selection changes */
+ if (! (nt->updated & SC_UPDATE_CONTENT) && ! (nt->updated & SC_UPDATE_SELECTION))
+ return;
+
/* undo / redo menu update */
ui_update_popup_reundo_items(editor->document);
Modified: branches/sm/src/filetypes.c
===================================================================
--- branches/sm/src/filetypes.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/filetypes.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -63,7 +63,9 @@
static void create_radio_menu_item(GtkWidget *menu, GeanyFiletype *ftype);
+static gchar *filetypes_get_conf_extension(gint filetype_idx);
+
enum TitleType
{
TITLE_SOURCE_FILE,
@@ -1216,23 +1218,39 @@
}
-static void add_group_keys(GKeyFile *kf, const gchar *group, GeanyFiletype *ft)
+static gchar *filetypes_get_filename(GeanyFiletype *ft, gboolean user)
{
- GKeyFile *src = g_key_file_new();
gchar *ext = filetypes_get_conf_extension(ft->id);
const gchar *f;
- f = utils_make_filename(app->datadir, "filetypes.", ext, NULL);
- if (!g_file_test(f, G_FILE_TEST_EXISTS))
+ if (user)
f = utils_make_filename(app->configdir,
GEANY_FILEDEFS_SUBDIR G_DIR_SEPARATOR_S, "filetypes.", ext, NULL);
+ else
+ f = utils_make_filename(app->datadir, "filetypes.", ext, NULL);
+
g_free(ext);
+ return g_strdup(f);
+}
+
+static void add_group_keys(GKeyFile *kf, const gchar *group, GeanyFiletype *ft)
+{
+ GKeyFile *src = g_key_file_new();
+ gchar *f;
+
+ f = filetypes_get_filename(ft, FALSE);
+ if (!g_file_test(f, G_FILE_TEST_EXISTS))
+ f = filetypes_get_filename(ft, TRUE);
+
if (!g_key_file_load_from_file(src, f, G_KEY_FILE_NONE, NULL))
{
geany_debug("Could not read config file %s for [%s=%s]!", f, group, ft->name);
+ g_free(f);
return;
}
+ g_free(f);
+
add_keys(kf, group, src);
}
@@ -1310,15 +1328,14 @@
config_home = g_key_file_new();
{
/* highlighting uses GEANY_FILETYPES_NONE for common settings */
- gchar *ext = filetypes_get_conf_extension(ft_id);
- const gchar *f;
+ gchar *f;
- f = utils_make_filename(app->datadir, "filetypes.", ext, NULL);
+ f = filetypes_get_filename(ft, FALSE);
load_system_keyfile(config, f, G_KEY_FILE_KEEP_COMMENTS, ft);
- f = utils_make_filename(app->configdir,
- GEANY_FILEDEFS_SUBDIR G_DIR_SEPARATOR_S, "filetypes.", ext, NULL);
+
+ setptr(f, filetypes_get_filename(ft, TRUE));
g_key_file_load_from_file(config_home, f, G_KEY_FILE_KEEP_COMMENTS, NULL);
- g_free(ext);
+ g_free(f);
}
/* Copy keys for any groups with [group=C] from system keyfile */
copy_ft_groups(config);
@@ -1356,29 +1373,27 @@
}
-gchar *filetypes_get_conf_extension(gint filetype_idx)
+static gchar *filetypes_get_conf_extension(gint filetype_idx)
{
return get_filetype_conf_extension(filetypes[filetype_idx]);
}
-void filetypes_save_commands(const GeanyFiletype *ft)
+void filetypes_save_commands(GeanyFiletype *ft)
{
- gchar *ext = get_filetype_conf_extension(ft);
- gchar *fname = g_strconcat(app->configdir,
- G_DIR_SEPARATOR_S GEANY_FILEDEFS_SUBDIR G_DIR_SEPARATOR_S "filetypes.", ext, NULL);
+ gchar *fname;
GKeyFile *config_home;
gchar *data;
+ fname = filetypes_get_filename(ft, TRUE);
config_home = g_key_file_new();
g_key_file_load_from_file(config_home, fname, G_KEY_FILE_KEEP_COMMENTS, NULL);
- build_save_menu(config_home, (gpointer)(ft), GEANY_BCS_HOME_FT);
+ build_save_menu(config_home, ft, GEANY_BCS_HOME_FT);
data = g_key_file_to_data(config_home, NULL, NULL);
utils_write_file(fname, data);
g_free(data);
g_key_file_free(config_home);
g_free(fname);
- g_free(ext);
}
Modified: branches/sm/src/filetypes.h
===================================================================
--- branches/sm/src/filetypes.h 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/filetypes.h 2011-05-21 08:59:27 UTC (rev 5809)
@@ -195,7 +195,7 @@
void filetypes_load_config(gint ft_id, gboolean reload);
-void filetypes_save_commands(const GeanyFiletype *ft);
+void filetypes_save_commands(GeanyFiletype *ft);
void filetypes_select_radio_item(const GeanyFiletype *ft);
@@ -203,8 +203,6 @@
GtkFileFilter *filetypes_create_file_filter_all_source(void);
-gchar *filetypes_get_conf_extension(gint filetype_idx);
-
gboolean filetype_has_tags(GeanyFiletype *ft);
gboolean filetypes_parse_error_message(GeanyFiletype *ft, const gchar *message,
Modified: branches/sm/src/geanyobject.c
===================================================================
--- branches/sm/src/geanyobject.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/geanyobject.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -189,6 +189,15 @@
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE, 1,
G_TYPE_POINTER);
+ geany_object_signals[GCB_DOCUMENT_RELOAD] = g_signal_new (
+ "document-reload",
+ G_OBJECT_CLASS_TYPE (g_object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GeanyObjectClass, document_reload),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
geany_object_signals[GCB_DOCUMENT_BEFORE_SAVE] = g_signal_new (
"document-before-save",
G_OBJECT_CLASS_TYPE (g_object_class),
Modified: branches/sm/src/geanyobject.h
===================================================================
--- branches/sm/src/geanyobject.h 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/geanyobject.h 2011-05-21 08:59:27 UTC (rev 5809)
@@ -34,6 +34,7 @@
{
GCB_DOCUMENT_NEW,
GCB_DOCUMENT_OPEN,
+ GCB_DOCUMENT_RELOAD,
GCB_DOCUMENT_BEFORE_SAVE,
GCB_DOCUMENT_SAVE,
GCB_DOCUMENT_FILETYPE_SET,
@@ -82,6 +83,7 @@
void (*document_new)(GeanyDocument *doc);
void (*document_open)(GeanyDocument *doc);
+ void (*document_reload)(GeanyDocument *doc);
void (*document_before_save)(GeanyDocument *doc);
void (*document_save)(GeanyDocument *doc);
void (*document_filetype_set)(GeanyDocument *doc, GeanyFiletype *filetype_old);
Modified: branches/sm/src/keyfile.c
===================================================================
--- branches/sm/src/keyfile.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/keyfile.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -371,6 +371,14 @@
i++;
}
}
+
+#ifdef HAVE_VTE
+ if (vte_info.have_vte)
+ {
+ vte_get_working_directory(); /* refresh vte_info.dir */
+ g_key_file_set_string(config, "VTE", "last_dir", vte_info.dir);
+ }
+#endif
}
@@ -520,8 +528,6 @@
tmp_string = utils_get_hex_from_color(vc->colour_back);
g_key_file_set_string(config, "VTE", "colour_back", tmp_string);
g_free(tmp_string);
- vte_get_working_directory(); /* refresh vte_info.dir */
- g_key_file_set_string(config, "VTE", "last_dir", vte_info.dir);
}
#endif
}
@@ -607,6 +613,13 @@
if (cl_options.load_session)
configuration_save_session_files(config);
+#ifdef HAVE_VTE
+ else if (vte_info.have_vte)
+ {
+ vte_get_working_directory(); /* refresh vte_info.dir */
+ g_key_file_set_string(config, "VTE", "last_dir", vte_info.dir);
+ }
+#endif
}
if (write_recent_files)
@@ -666,6 +679,16 @@
g_ptr_array_add(session_files, tmp_array);
i++;
}
+
+#ifdef HAVE_VTE
+ /* BUG: after loading project at startup, closing project doesn't restore old VTE path */
+ if (vte_info.have_vte)
+ {
+ gchar *tmp_string = utils_get_setting_string(config, "VTE", "last_dir", NULL);
+ vte_cwd(tmp_string,TRUE);
+ g_free(tmp_string);
+ }
+#endif
}
Modified: branches/sm/src/plugindata.h
===================================================================
--- branches/sm/src/plugindata.h 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/plugindata.h 2011-05-21 08:59:27 UTC (rev 5809)
@@ -54,7 +54,7 @@
* @warning You should not test for values below 200 as previously
* @c GEANY_API_VERSION was defined as an enum value, not a macro.
*/
-#define GEANY_API_VERSION 205
+#define GEANY_API_VERSION 207
/** The Application Binary Interface (ABI) version, incremented whenever
* existing fields in the plugin data types have to be changed or reordered.
@@ -310,6 +310,7 @@
const GdkColor* (*document_get_status_color) (struct GeanyDocument *doc);
gchar* (*document_get_basename_for_display) (struct GeanyDocument *doc, gint length);
gint (*document_get_notebook_page) (struct GeanyDocument *doc);
+ gint (*document_sort_by_display_name) (gconstpointer a, gconstpointer b);
}
DocumentFuncs;
@@ -473,6 +474,8 @@
gint (*ui_get_gtk_settings_integer) (const gchar *property_name, gint default_value);
void (*ui_combo_box_add_to_history) (GtkComboBoxEntry *combo_entry,
const gchar *text, gint history_len);
+ void (*ui_menu_add_document_items_sorted) (GtkMenu *menu, struct GeanyDocument *active,
+ GCallback callback, GCompareFunc sort_func);
}
UIUtilsFuncs;
Modified: branches/sm/src/plugins.c
===================================================================
--- branches/sm/src/plugins.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/plugins.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -111,7 +111,8 @@
&document_rename_file,
&document_get_status_color,
&document_get_basename_for_display,
- &document_get_notebook_page
+ &document_get_notebook_page,
+ &document_sort_by_display_name
};
static EditorFuncs editor_funcs = {
@@ -243,7 +244,8 @@
&ui_widget_modify_font_from_string,
&ui_is_keyval_enter_or_return,
&ui_get_gtk_settings_integer,
- &ui_combo_box_add_to_history
+ &ui_combo_box_add_to_history,
+ &ui_menu_add_document_items_sorted
};
static DialogFuncs dialog_funcs = {
Modified: branches/sm/src/search.c
===================================================================
--- branches/sm/src/search.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/search.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -221,11 +221,10 @@
group = stash_group_new("search");
find_prefs = group;
configuration_add_pref_group(group, FALSE);
- /* if case is moved after regexp, the first regexp uncheck will clear it */
- stash_group_add_toggle_button(group, &settings.find_case_sensitive,
- "find_case_sensitive", FALSE, "check_case");
stash_group_add_toggle_button(group, &settings.find_regexp,
"find_regexp", FALSE, "check_regexp");
+ stash_group_add_toggle_button(group, &settings.find_case_sensitive,
+ "find_case_sensitive", FALSE, "check_case");
stash_group_add_toggle_button(group, &settings.find_escape_sequences,
"find_escape_sequences", FALSE, "check_escape");
stash_group_add_toggle_button(group, &settings.find_match_whole_word,
@@ -238,10 +237,10 @@
group = stash_group_new("search");
replace_prefs = group;
configuration_add_pref_group(group, FALSE);
- stash_group_add_toggle_button(group, &settings.replace_case_sensitive,
- "replace_case_sensitive", FALSE, "check_case");
stash_group_add_toggle_button(group, &settings.replace_regexp,
"replace_regexp", FALSE, "check_regexp");
+ stash_group_add_toggle_button(group, &settings.replace_case_sensitive,
+ "replace_case_sensitive", FALSE, "check_case");
stash_group_add_toggle_button(group, &settings.replace_escape_sequences,
"replace_escape_sequences", FALSE, "check_escape");
stash_group_add_toggle_button(group, &settings.replace_match_whole_word,
Modified: branches/sm/src/symbols.c
===================================================================
--- branches/sm/src/symbols.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/symbols.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -946,6 +946,19 @@
&tv_iters.tag_macro, _("Macros"), "classviewer-macro",
NULL);
break;
+ case GEANY_FILETYPES_SQL:
+ {
+ tag_list_add_groups(tag_store,
+ &(tv_iters.tag_function), _("Functions"), "classviewer-method",
+ &(tv_iters.tag_namespace), _("Procedures"), "classviewer-namespace",
+ &(tv_iters.tag_struct), _("Indexes"), "classviewer-struct",
+ &(tv_iters.tag_class), _("Tables"), "classviewer-class",
+ &(tv_iters.tag_macro), _("Triggers"), "classviewer-macro",
+ &(tv_iters.tag_member), _("Views"), "classviewer-var",
+ &(tv_iters.tag_other), _("Other"), "classviewer-other",
+ NULL);
+ break;
+ }
case GEANY_FILETYPES_D:
default:
{
Modified: branches/sm/src/ui_utils.c
===================================================================
--- branches/sm/src/ui_utils.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/ui_utils.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -2446,16 +2446,49 @@
* @since 0.19 */
void ui_menu_add_document_items(GtkMenu *menu, GeanyDocument *active, GCallback callback)
{
+ ui_menu_add_document_items_sorted(menu, active, callback, NULL);
+}
+
+
+/** Adds a list of document items to @a menu.
+ *
+ * @a sort_func might be NULL to not sort the documents in the menu. In this case,
+ * the order of the document tabs is used.
+ *
+ * See document_sort_by_display_name() for an example sort function.
+ *
+ * @param menu Menu.
+ * @param active Which document to highlight, or @c NULL.
+ * @param callback is used for each menu item's @c "activate" signal and will be passed
+ * the corresponding document pointer as @c user_data.
+ * @param sort_func is used to sort the list. Might be @c NULL to not sort the list.
+ * @warning You should check @c doc->is_valid in the callback.
+ * @since 0.21 */
+void ui_menu_add_document_items_sorted(GtkMenu *menu, GeanyDocument *active,
+ GCallback callback, GCompareFunc sort_func)
+{
GtkWidget *menu_item, *menu_item_label, *image;
const GdkColor *color;
GeanyDocument *doc;
guint i, len;
gchar *base_name, *label;
+ GPtrArray *sorted_documents;
len = gtk_notebook_get_n_pages(GTK_NOTEBOOK(main_widgets.notebook));
- for (i = 0; i < len; i++)
+
+ sorted_documents = g_ptr_array_sized_new(len);
+ /* copy the documents_array into the new one */
+ foreach_document(i)
{
- doc = document_get_from_page(i);
+ g_ptr_array_add(sorted_documents, documents[i]);
+ }
+ /* and now sort it */
+ if (sort_func != NULL)
+ g_ptr_array_sort(sorted_documents, sort_func);
+
+ for (i = 0; i < GEANY(sorted_documents)->len; i++)
+ {
+ doc = g_ptr_array_index(sorted_documents, i);
if (! DOC_VALID(doc))
continue;
@@ -2482,6 +2515,7 @@
g_free(base_name);
}
+ g_ptr_array_free(sorted_documents, TRUE);
}
Modified: branches/sm/src/ui_utils.h
===================================================================
--- branches/sm/src/ui_utils.h 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/src/ui_utils.h 2011-05-21 08:59:27 UTC (rev 5809)
@@ -246,6 +246,8 @@
void ui_menu_add_document_items(GtkMenu *menu, GeanyDocument *active, GCallback callback);
+void ui_menu_add_document_items_sorted(GtkMenu *menu, GeanyDocument *active,
+ GCallback callback, GCompareFunc sort_func);
void ui_set_statusbar(gboolean log, const gchar *format, ...) G_GNUC_PRINTF (2, 3);
Modified: branches/sm/tagmanager/sql.c
===================================================================
--- branches/sm/tagmanager/sql.c 2011-05-21 08:58:07 UTC (rev 5808)
+++ branches/sm/tagmanager/sql.c 2011-05-21 08:59:27 UTC (rev 5809)
@@ -182,18 +182,18 @@
{ FALSE, 'l', "local", "local variables" },
{ TRUE, 'L', "label", "block label" },
{ TRUE, 'P', "package", "packages" },
- { TRUE, 'p', "procedure", "procedures" },
+ { TRUE, 'n', "namespace", "procedures" },
{ FALSE, 'r', "record", "records" },
{ TRUE, 's', "subtype", "subtypes" },
- { TRUE, 't', "table", "tables" },
- { TRUE, 'T', "trigger", "triggers" },
+ { TRUE, 't', "class", "tables" },
+ { TRUE, 'T', "macro", "triggers" },
{ TRUE, 'v', "variable", "variables" },
- { TRUE, 'i', "index", "indexes" },
+ { TRUE, 'i', "struct", "indexes" },
{ TRUE, 'e', "event", "events" },
{ TRUE, 'U', "publication", "publications" },
{ TRUE, 'R', "service", "services" },
{ TRUE, 'D', "domain", "domains" },
- { TRUE, 'V', "view", "views" },
+ { TRUE, 'm', "member", "views" },
{ TRUE, 'n', "synonym", "synonyms" },
{ TRUE, 'x', "mltable", "MobiLink Table Scripts" },
{ TRUE, 'y', "mlconn", "MobiLink Conn Scripts" }
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