Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Fri, 01 Aug 2014 15:34:24 UTC Commit: 4cfe71a487dfabdc3a4ce79bfa924567101c8838 https://github.com/geany/geany/commit/4cfe71a487dfabdc3a4ce79bfa924567101c88...
Log Message: ----------- Merge branch 'tm/faster-current-tag'
This makes tm_get_current_tag() roughly 4.5 times faster.
Modified Paths: -------------- tagmanager/src/tm_workspace.c
Modified: tagmanager/src/tm_workspace.c 14 lines changed, 5 insertions(+), 9 deletions(-) =================================================================== @@ -745,27 +745,23 @@ tm_workspace_find_scoped (const char *name, const char *scope, gint type, const TMTag * tm_get_current_tag (GPtrArray * file_tags, const gulong line, const guint tag_types) { - GPtrArray *const local = tm_tags_extract (file_tags, tag_types); TMTag *matching_tag = NULL; - if (local && local->len) + if (file_tags && file_tags->len) { guint i; gulong matching_line = 0; - glong delta;
- for (i = 0; (i < local->len); ++i) + for (i = 0; (i < file_tags->len); ++i) { - TMTag *tag = TM_TAG (local->pdata[i]); - delta = line - tag->atts.entry.line; - if (delta >= 0 && (gulong)delta < line - matching_line) + TMTag *tag = TM_TAG (file_tags->pdata[i]); + if (tag && tag->type & tag_types && + tag->atts.entry.line <= line && tag->atts.entry.line > matching_line) { matching_tag = tag; matching_line = tag->atts.entry.line; } } } - if (local) - g_ptr_array_free (local, TRUE); return matching_tag; }
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).