Python: fix parsing of variables assigned to triple quoted strings

Fixes #262.
This commit is contained in:
Colomban Wendling 2014-05-12 21:46:09 +02:00
parent 0e5d699a13
commit d8aaa59f9a
2 changed files with 33 additions and 34 deletions

View File

@ -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);
}

View File

@ -1,2 +1,3 @@
# format=tagmanager
dummyÌ1Ö0
include_fileÌ16384Ö0