Branch: refs/heads/master Author: Alexander Eberspächer alex.eberspaecher@gmail.com Committer: Alexander Eberspächer alex.eberspaecher@gmail.com Date: Mon, 15 Jul 2013 08:06:37 UTC Commit: e6878e5cbf47f1e7a000952380f1d6a3a7a63aa2 https://github.com/geany/geany/commit/e6878e5cbf47f1e7a000952380f1d6a3a7a63a...
Log Message: ----------- Fix ctags for complex Cython type declarations
Cython allows the use NumPy arrays on a C level. In that context, a typical return type declaration could be e.g. "cpdef numpy.ndarray[dtype=double, ndim=1] name". This now generates a tag for the function. Previously, the equal sign prevented that.
Modified Paths: -------------- tagmanager/ctags/python.c
Modified: tagmanager/ctags/python.c 8 files changed, 7 insertions(+), 1 deletions(-) =================================================================== @@ -576,7 +576,13 @@ static const char *skipTypeDecl (const char *cp, boolean *is_class) } /* limit so that we don't pick off "int item=obj()" */ while (*ptr && loopCount++ < 2) { - while (*ptr && *ptr != '=' && *ptr != '(' && !isspace(*ptr)) ptr++; + while (*ptr && *ptr != '=' && *ptr != '(' && !isspace(*ptr)) { + /* skip over e.g. 'cpdef numpy.ndarray[dtype=double, ndim=1]' */ + if(*ptr == '[') { + while(*ptr && *ptr != ']') ptr++; + } + ptr++; + } if (!*ptr || *ptr == '=') return NULL; if (*ptr == '(') { return lastStart; /* if we stopped on a '(' we are done */
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).