[geany/geany] 5bed3b: make: Support for variable expansions in target names
Colomban Wendling
git-noreply at xxxxx
Mon Apr 20 17:42:38 UTC 2015
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Mon, 20 Apr 2015 17:42:38 UTC
Commit: 5bed3b58f337c95f7069ffbc9fbd23e83f55ad04
https://github.com/geany/geany/commit/5bed3b58f337c95f7069ffbc9fbd23e83f55ad04
Log Message:
-----------
make: Support for variable expansions in target names
Modified Paths:
--------------
tagmanager/ctags/make.c
tests/ctags/Makefile.am
tests/ctags/make-target-with-parentheses.mak
tests/ctags/make-target-with-parentheses.mak.tags
tests/ctags/simple.mak.tags
Modified: tagmanager/ctags/make.c
37 lines changed, 8 insertions(+), 29 deletions(-)
===================================================================
@@ -70,7 +70,7 @@ static int skipToNonWhite (void)
static boolean isIdentifier (int c)
{
- return (boolean)(c != '\0' && (isalnum (c) || strchr (".-_/", c) != NULL));
+ return (boolean)(c != '\0' && (isalnum (c) || strchr (".-_/$(){}", c) != NULL));
}
static boolean isSpecialTarget (vString *const name)
@@ -118,14 +118,19 @@ static void newMacroFromDefine (vString *const name)
static void readIdentifier (const int first, vString *const id)
{
+ int depth = 0;
int c = first;
int c_prev = first;
int c_next = first;
vStringClear (id);
- while (isIdentifier (c) || c == ' ')
+ while (isIdentifier (c) || c == ' ' || (depth > 0 && c != EOF && c != '\n'))
{
c_next = nextChar ();
- if (c == ' ') {
+ if (c == '(' || c == '}')
+ depth++;
+ else if (depth > 0 && (c == ')' || c == '}'))
+ depth--;
+ if (depth < 1 && c == ' ') {
/* add the space character only if the previous and
* next character are valid identifiers */
if (isIdentifier (c_prev) && isIdentifier (c_next))
@@ -141,28 +146,6 @@ static void readIdentifier (const int first, vString *const id)
vStringTerminate (id);
}
-static void skipToMatch (const char *const pair)
-{
- const int begin = pair [0], end = pair [1];
- const unsigned long inputLineNumber = getInputLineNumber ();
- int matchLevel = 1;
- int c = '\0';
-
- while (matchLevel > 0)
- {
- c = nextChar ();
- if (c == begin)
- ++matchLevel;
- else if (c == end)
- --matchLevel;
- else if (c == '\n' || c == EOF)
- break;
- }
- if (c == EOF)
- verbose ("%s: failed to find match for '%c' at line %lu\n",
- getInputFileName (), begin, inputLineNumber);
-}
-
static void findMakeTags (void)
{
vString *name = vStringNew ();
@@ -195,10 +178,6 @@ static void findMakeTags (void)
continue;
else if (c == '#')
skipLine ();
- else if (c == '(')
- skipToMatch ("()");
- else if (c == '{')
- skipToMatch ("{}");
else if (c == ':')
{
variable_possible = TRUE;
Modified: tests/ctags/Makefile.am
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -200,6 +200,7 @@ test_sources = \
line_directives.c \
local.c \
macros.c \
+ make-target-with-parentheses.mak \
make-variable-on-cmdline.mak \
masm.asm \
matlab_backtracking.m \
Modified: tests/ctags/make-target-with-parentheses.mak
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1 @@
+$(obj)/raid6int1.c: F := 6
Modified: tests/ctags/make-target-with-parentheses.mak.tags
3 lines changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,3 @@
+# format=tagmanager
+$(obj)/raid6int1.c�16�0
+F�65536�0
Modified: tests/ctags/simple.mak.tags
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -1,4 +1,5 @@
# format=tagmanager
+$(obj)/raid6int1.c�16�0
A�65536�0
B�65536�0
C�65536�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