Branch: refs/heads/master Author: Markus Heidelberg markus.heidelberg@web.de Committer: Colomban Wendling ban@herbesfolles.org Date: Wed, 11 Feb 2015 17:28:59 UTC Commit: be2b280377b0479db749cfcf573ff7b35d70693b https://github.com/geany/geany/commit/be2b280377b0479db749cfcf573ff7b35d7069...
Log Message: ----------- python: do not ignore the character after a skipped string
Regression for the triple start string issue has been introduced in SVN revision 669 (fishman git a314e11158307db84c0dadb758846b2302fe69cd) on 2008-06-11. In ctags 5.7 it did work, in 5.8 not anymore. See also http://sourceforge.net/p/ctags/bugs/229/ for the original bug, which led to the old fix.
The other issue with normal strings in skipEverything() is even older.
Modified Paths: -------------- tagmanager/ctags/python.c tests/ctags/Makefile.am tests/ctags/py-skipped-string.py tests/ctags/py-skipped-string.py.tags
Modified: tagmanager/ctags/python.c 3 lines changed, 3 insertions(+), 0 deletions(-) =================================================================== @@ -266,6 +266,8 @@ static const char *skipEverything (const char *cp) } if (isIdentifierFirstCharacter ((int) *cp)) return cp; + if (match) + cp--; /* avoid jumping over the character after a skipped string */ } return cp; } @@ -536,6 +538,7 @@ static char const *find_triple_start(char const *string, char const **which) } cp = skipString(cp); if (!*cp) break; + cp--; /* avoid jumping over the character after a skipped string */ } } return NULL;
Modified: tests/ctags/Makefile.am 1 lines changed, 1 insertions(+), 0 deletions(-) =================================================================== @@ -228,6 +228,7 @@ test_sources = \ prototype.h \ pure_elem.f95 \ py_constructor_arglist.py \ + py-skipped-string.py \ qualified_types.f90 \ random.sql \ readlob.sql \
Modified: tests/ctags/py-skipped-string.py 30 lines changed, 30 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,30 @@ +# triple start string immediately after a normal string not detected + +def f1(): + ''""" + The string above was not detected as triple start string, + but the one below instead. + """ + print "f1" + +def f2(): + ''""" + The string above was then detected as end string, + and the one below as start string again. + """ + print "f2" + +def f3(): + """ + The string below is prepared so that ctags with the bug does not start a + new triple string. For a clean precondition for the next test. + ''""" + print "f3" + +# normal string immediately after a normal string not detected + +''" import os\ +" + +""' def fX():\ +'
Modified: tests/ctags/py-skipped-string.py.tags 4 lines changed, 4 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,4 @@ +# format=tagmanager +f1�16�()�0 +f2�16�()�0 +f3�16�()�0
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).