[geany/geany] d8aaa5: Python: fix parsing of variables assigned to triple quoted strings
Colomban Wendling
git-noreply at xxxxx
Mon May 12 19:52:03 UTC 2014
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Mon, 12 May 2014 19:52:03 UTC
Commit: d8aaa59f9ab506e92f474bd9007127a6dbac016c
https://github.com/geany/geany/commit/d8aaa59f9ab506e92f474bd9007127a6dbac016c
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).
More information about the Commits
mailing list