Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Mon, 12 May 2014 19:52:03 UTC Commit: d8aaa59f9ab506e92f474bd9007127a6dbac016c https://github.com/geany/geany/commit/d8aaa59f9ab506e92f474bd9007127a6dbac01...
Log Message: ----------- Python: fix parsing of variables assigned to triple quoted strings
Fixes #262.
Modified Paths: -------------- tagmanager/ctags/python.c tests/ctags/bug1906062.py.tags
Modified: tagmanager/ctags/python.c 66 lines changed, 32 insertions(+), 34 deletions(-) =================================================================== @@ -727,6 +727,38 @@ static void findPythonTags (void) checkParent(nesting_levels, indent, parent);
+ /* Find global and class variables */ + variable = findVariable(line); + if (variable) + { + const char *start = variable; + char *arglist; + boolean parent_is_class; + + vStringClear (name); + while (isIdentifierCharacter ((int) *start)) + { + vStringPut (name, (int) *start); + ++start; + } + vStringTerminate (name); + + parent_is_class = constructParentString(nesting_levels, indent, parent); + if (varIsLambda (variable, &arglist)) + { + /* show class members or top-level script lambdas only */ + if (parent_is_class || vStringLength(parent) == 0) + makeFunctionTag (name, parent, parent_is_class, arglist); + eFree (arglist); + } + else + { + /* skip variables in methods */ + if (parent_is_class || vStringLength(parent) == 0) + makeVariableTag (name, parent); + } + } + /* Deal with multiline string start. */ longstring = find_triple_start(cp, &longStringLiteral); if (longstring) @@ -787,40 +819,6 @@ static void findPythonTags (void) addNestingLevel(nesting_levels, indent, name, is_class); } } - /* Find global and class variables */ - variable = findVariable(line); - if (variable) - { - const char *start = variable; - char *arglist; - boolean parent_is_class; - - vStringClear (name); - while (isIdentifierCharacter ((int) *start)) - { - vStringPut (name, (int) *start); - ++start; - } - vStringTerminate (name); - - parent_is_class = constructParentString(nesting_levels, indent, parent); - if (varIsLambda (variable, &arglist)) - { - /* show class members or top-level script lambdas only */ - if (parent_is_class || vStringLength(parent) == 0) - makeFunctionTag (name, parent, parent_is_class, arglist); - if (arglist != NULL) - eFree (arglist); - } - else - { - /* skip variables in methods */ - if (! parent_is_class && vStringLength(parent) > 0) - continue; - - makeVariableTag (name, parent); - } - } /* Find and parse imports */ parseImports(line); }
Modified: tests/ctags/bug1906062.py.tags 1 lines changed, 1 insertions(+), 0 deletions(-) =================================================================== @@ -1,2 +1,3 @@ # format=tagmanager dummyÌ1Ö0 +include_fileÌ16384Ö0
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).