[geany/geany-plugins] 02a773: geanyctags: open document automatically only when there is a single result
Jiří Techet
git-noreply at xxxxx
Sun Oct 19 18:18:32 UTC 2014
Branch: refs/heads/master
Author: Jiří Techet <techet at gmail.com>
Committer: Jiří Techet <techet at gmail.com>
Date: Sun, 19 Oct 2014 18:18:32 UTC
Commit: 02a773c55c73245b202ae31bab2ea866fbf8da56
https://github.com/geany/geany-plugins/commit/02a773c55c73245b202ae31bab2ea866fbf8da56
Log Message:
-----------
geanyctags: open document automatically only when there is a single result
If there are several results from the ctags search, opening the first document
isn't the best thing to do because it's most probably not the tag we are
searching for. Instead, don't open the document and just write all the
results to the messages window so the user can choose which one to open.
Modified Paths:
--------------
geanyctags/src/geanyctags.c
Modified: geanyctags/src/geanyctags.c
28 lines changed, 20 insertions(+), 8 deletions(-)
===================================================================
@@ -422,6 +422,8 @@ static void find_tags(const gchar *name, gboolean declaration, gboolean case_sen
{
GPatternSpec *name_pat;
gchar *name_case;
+ gchar *path = NULL;
+ gint num = 0;
if (case_sensitive)
name_case = g_strdup(name);
@@ -433,25 +435,35 @@ static void find_tags(const gchar *name, gboolean declaration, gboolean case_sen
if (!filter_tag(&entry, name_pat, declaration, case_sensitive))
{
- gchar *path = g_build_filename(prj->base_path, entry.file, NULL);
- GeanyDocument *doc = document_open_file(path, FALSE, NULL, NULL);
- if (doc != NULL)
- {
- navqueue_goto_line(document_get_current(), doc, entry.address.lineNumber);
- gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci));
- }
+ path = g_build_filename(prj->base_path, entry.file, NULL);
show_entry(&entry);
- g_free(path);
+ num++;
}
while (find_next(tf, &entry, match_type))
{
if (!filter_tag(&entry, name_pat, declaration, case_sensitive))
+ {
+ if (!path)
+ path = g_build_filename(prj->base_path, entry.file, NULL);
show_entry(&entry);
+ num++;
+ }
+ }
+
+ if (num == 1)
+ {
+ GeanyDocument *doc = document_open_file(path, FALSE, NULL, NULL);
+ if (doc != NULL)
+ {
+ navqueue_goto_line(document_get_current(), doc, entry.address.lineNumber);
+ gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci));
+ }
}
g_pattern_spec_free(name_pat);
g_free(name_case);
+ g_free(path);
}
tagsClose(tf);
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list