Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Sun, 15 May 2016 13:58:05 UTC Commit: 96818888069f8c5d7a1b5d3e1d3f9a4d73c7ffb7 https://github.com/geany/geany/commit/96818888069f8c5d7a1b5d3e1d3f9a4d73c7ff...
Log Message: ----------- Merge pull request #1014 from b4n/streamline-builtin-tags
Streamline builtin tags
Modified Paths: -------------- data/Makefile.am data/tags/entities.html.tags data/tags/std.pas.tags data/tags/std.php.tags data/tags/std.py.tags data/tags/std99.c.tags src/editor.c src/symbols.c src/symbols.h src/utils.c src/utils.h
Modified: data/Makefile.am 10 lines changed, 5 insertions(+), 5 deletions(-) =================================================================== @@ -73,11 +73,11 @@ filetypes = \ filedefs/filetypes.zephir
tagfiles = \ - tags/c99.tags \ - tags/php.tags \ - tags/python.tags \ - tags/pascal.tags \ - tags/html_entities.tags + tags/std99.c.tags \ + tags/std.php.tags \ + tags/std.py.tags \ + tags/std.pas.tags \ + tags/entities.html.tags
template_files = \ templates/files/file.html \
Modified: data/tags/entities.html.tags 3 lines changed, 1 insertions(+), 2 deletions(-) =================================================================== @@ -1,5 +1,4 @@ -# each of the following lines represent a html entity -# used in HTML and PHP files when typing &... +#format=tagmanager Á á Â
Modified: data/tags/std.pas.tags 0 lines changed, 0 insertions(+), 0 deletions(-) =================================================================== No diff available, check online
Modified: data/tags/std.php.tags 0 lines changed, 0 insertions(+), 0 deletions(-) =================================================================== No diff available, check online
Modified: data/tags/std.py.tags 0 lines changed, 0 insertions(+), 0 deletions(-) =================================================================== No diff available, check online
Modified: data/tags/std99.c.tags 0 lines changed, 0 insertions(+), 0 deletions(-) =================================================================== No diff available, check online
Modified: src/editor.c 48 lines changed, 4 insertions(+), 44 deletions(-) =================================================================== @@ -2076,56 +2076,16 @@ gchar *editor_get_calltip_text(GeanyEditor *editor, const TMTag *tag) }
-/* HTML entities auto completion from html_entities.tags text file */ -static gboolean -autocomplete_html(ScintillaObject *sci, const gchar *root, gsize rootlen) -{ - guint i; - gboolean found = FALSE; - GString *words; - const gchar **entities = symbols_get_html_entities(); - - if (*root != '&' || entities == NULL) - return FALSE; - - words = g_string_sized_new(500); - for (i = 0; ; i++) - { - if (entities[i] == NULL) - break; - else if (entities[i][0] == '#') - continue; - - if (! strncmp(entities[i], root, rootlen)) - { - if (words->len) - g_string_append_c(words, '\n'); - - g_string_append(words, entities[i]); - found = TRUE; - } - } - if (found) - show_autocomplete(sci, rootlen, words); - - g_string_free(words, TRUE); - return found; -} - - /* Current document & global tags autocompletion */ static gboolean -autocomplete_tags(GeanyEditor *editor, const gchar *root, gsize rootlen) +autocomplete_tags(GeanyEditor *editor, GeanyFiletype *ft, const gchar *root, gsize rootlen) { GPtrArray *tags; - GeanyDocument *doc; gboolean found;
g_return_val_if_fail(editor, FALSE);
- doc = editor->document; - - tags = tm_workspace_find_prefix(root, doc->file_type->lang, editor_prefs.autocompletion_max_entries); + tags = tm_workspace_find_prefix(root, ft->lang, editor_prefs.autocompletion_max_entries); found = tags->len > 0; if (found) show_tags_list(editor, tags, rootlen); @@ -2164,7 +2124,7 @@ static gboolean autocomplete_check_html(GeanyEditor *editor, gint style, gint po tmp = strchr(root, '&'); if (tmp != NULL) { - return autocomplete_html(editor->sci, tmp, strlen(tmp)); + return autocomplete_tags(editor, filetypes_index(GEANY_FILETYPES_HTML), tmp, strlen(tmp)); } } return FALSE; @@ -2338,7 +2298,7 @@ gboolean editor_start_auto_complete(GeanyEditor *editor, gint pos, gboolean forc { /* complete tags, except if forcing when completion is already visible */ if (!(force && SSM(sci, SCI_AUTOCACTIVE, 0, 0))) - ret = autocomplete_tags(editor, root, rootlen); + ret = autocomplete_tags(editor, editor->document->file_type, root, rootlen);
/* If forcing and there's nothing else to show, complete from words in document */ if (!ret && (force || editor_prefs.autocomplete_doc_words))
Modified: src/symbols.c 93 lines changed, 4 insertions(+), 89 deletions(-) =================================================================== @@ -64,36 +64,6 @@ #include <stdlib.h>
-static gchar **html_entities = NULL; - -typedef struct -{ - gboolean tags_loaded; - const gchar *tag_file; -} TagFileInfo; - -/* Check before adding any more tags files, usually they should be downloaded separately. */ -enum /* Geany tag files */ -{ - GTF_C, - GTF_PASCAL, - GTF_PHP, - GTF_HTML_ENTITIES, - GTF_LATEX, - GTF_PYTHON, - GTF_MAX -}; - -static TagFileInfo tag_file_info[GTF_MAX] = -{ - {FALSE, "c99.tags"}, - {FALSE, "pascal.tags"}, - {FALSE, "php.tags"}, - {FALSE, "html_entities.tags"}, - {FALSE, "latex.tags"}, - {FALSE, "python.tags"} -}; - static GPtrArray *top_level_iter_names = NULL;
enum @@ -138,7 +108,6 @@ static struct } symbol_menu;
-static void html_tags_loaded(void); static void load_user_tags(GeanyFiletypeID ft_id);
/* get the tags_ignore list, exported by tagmanager's options.c */ @@ -201,9 +170,6 @@ static gboolean symbols_load_global_tags(const gchar *tags_file, GeanyFiletype * * This provides autocompletion, calltips, etc. */ void symbols_global_tags_loaded(guint file_type_idx) { - TagFileInfo *tfi; - gint tag_type; - /* load ignore list for C/C++ parser */ if ((file_type_idx == GEANY_FILETYPES_C || file_type_idx == GEANY_FILETYPES_CPP) && c_tags_ignore == NULL) @@ -221,53 +187,12 @@ void symbols_global_tags_loaded(guint file_type_idx)
switch (file_type_idx) { - case GEANY_FILETYPES_PHP: - case GEANY_FILETYPES_HTML: - html_tags_loaded(); - } - switch (file_type_idx) - { case GEANY_FILETYPES_CPP: symbols_global_tags_loaded(GEANY_FILETYPES_C); /* load C global tags */ - /* no C++ tagfile yet */ - return; - case GEANY_FILETYPES_C: tag_type = GTF_C; break; - case GEANY_FILETYPES_PASCAL:tag_type = GTF_PASCAL; break; - case GEANY_FILETYPES_PHP: tag_type = GTF_PHP; break; - case GEANY_FILETYPES_LATEX: tag_type = GTF_LATEX; break; - case GEANY_FILETYPES_PYTHON:tag_type = GTF_PYTHON; break; - default: - return; - } - tfi = &tag_file_info[tag_type]; - - if (! tfi->tags_loaded) - { - gchar *fname = g_build_filename(app->datadir, GEANY_TAGS_SUBDIR, tfi->tag_file, NULL); - - symbols_load_global_tags(fname, filetypes[file_type_idx]); - tfi->tags_loaded = TRUE; - g_free(fname); - } -} - - -/* HTML tagfile is just a list of entities for autocompletion (e.g. '&') */ -static void html_tags_loaded(void) -{ - TagFileInfo *tfi; - - if (cl_options.ignore_global_tags) - return; - - tfi = &tag_file_info[GTF_HTML_ENTITIES]; - if (! tfi->tags_loaded) - { - gchar *file = g_build_filename(app->datadir, GEANY_TAGS_SUBDIR, tfi->tag_file, NULL); - - html_entities = utils_read_file_in_array(file); - tfi->tags_loaded = TRUE; - g_free(file); + break; + case GEANY_FILETYPES_PHP: + symbols_global_tags_loaded(GEANY_FILETYPES_HTML); /* load HTML global tags */ + break; } }
@@ -326,15 +251,6 @@ const gchar *symbols_get_context_separator(gint ft_id) }
-const gchar **symbols_get_html_entities(void) -{ - if (html_entities == NULL) - html_tags_loaded(); /* if not yet created, force creation of the array but shouldn't occur */ - - return (const gchar **) html_entities; -} - - /* sort by name, then line */ static gint compare_symbol(const TMTag *tag_a, const TMTag *tag_b) { @@ -2634,7 +2550,6 @@ void symbols_finalize(void) { guint i;
- g_strfreev(html_entities); g_strfreev(c_tags_ignore);
for (i = 0; i < G_N_ELEMENTS(symbols_icons); i++)
Modified: src/symbols.h 2 lines changed, 0 insertions(+), 2 deletions(-) =================================================================== @@ -52,8 +52,6 @@ void symbols_global_tags_loaded(guint file_type_idx);
GString *symbols_find_typenames_as_string(TMParserType lang, gboolean global);
-const gchar **symbols_get_html_entities(void); - gboolean symbols_recreate_tag_list(GeanyDocument *doc, gint sort_mode);
gint symbols_generate_global_tags(gint argc, gchar **argv, gboolean want_preprocess);
Modified: src/utils.c 19 lines changed, 0 insertions(+), 19 deletions(-) =================================================================== @@ -1060,25 +1060,6 @@ GIOChannel *utils_set_up_io_channel( }
-gchar **utils_read_file_in_array(const gchar *filename) -{ - gchar **result = NULL; - gchar *data; - - g_return_val_if_fail(filename != NULL, NULL); - - g_file_get_contents(filename, &data, NULL, NULL); - - if (data != NULL) - { - result = g_strsplit_set(data, "\r\n", -1); - g_free(data); - } - - return result; -} - - /* Contributed by Stefan Oltmanns, thanks. * Replaces \, \r, \n, \t and \uXXX by their real counterparts. * keep_backslash is used for regex strings to leave '\' and '?' in place */
Modified: src/utils.h 2 lines changed, 0 insertions(+), 2 deletions(-) =================================================================== @@ -289,8 +289,6 @@ gchar *utils_get_current_time_string(void); GIOChannel *utils_set_up_io_channel(gint fd, GIOCondition cond, gboolean nblock, GIOFunc func, gpointer data);
-gchar **utils_read_file_in_array(const gchar *filename); - gboolean utils_str_replace_escape(gchar *string, gboolean keep_backslash);
gboolean utils_wrap_string(gchar *string, gint wrapstart);
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).