Skip to content

Commit b498b9b

Browse files
committed
TBW
1 parent 3324642 commit b498b9b

File tree

9 files changed

+65
-15
lines changed

9 files changed

+65
-15
lines changed

Units/parser-rmarkdown.r/frontmatter.d/expected.tags

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ foo input.rmd /^foo <- function () {$/;" function line:9 language:R extras:guest
99
y input.rmd /^ y <- 2$/;" functionVar line:10 language:R function:foo extras:guest end:10
1010
X input.rmd /^X <- func()$/;" globalVar line:14 language:R extras:guest end:14
1111
f input.rmd /^def f():$/;" function line:25 language:Python extras:guest end:27
12-
example for u-ctags input.rmd /^title: example for u-ctags$/;" title line:2 language:FrontMatter extras:subparser
12+
example for u-ctags input.rmd /^title: example for u-ctags$/;" title line:2 language:FrontMatter extras:guest,subparser

Units/parser-sh.r/sh-heredoc-run-guest-parser.d/expected.tags

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,18 @@ JSCODE3 input.sh /^\/usr\/bin\/env \/usr\/bin\/node <<JSCODE3$/;" h line:43 lang
88
JSCODE4 input.sh /^\/usr\/bin\/env dummy node <<JSCODE4$/;" h line:50 language:Sh end:55
99
EOF3 input.sh /^cat > foo.php <<EOF3$/;" h line:57 language:Sh end:62
1010
EOF4 input.sh /^cat <<EOF4 > foo.php$/;" h line:64 language:Sh end:69
11-
sh1 input.sh /^function sh1$/;" f line:71 language:Sh
11+
EOF5 input.sh /^cat > foo.xml <<EOF5$/;" h line:71 language:Sh end:80
12+
sh1 input.sh /^function sh1$/;" f line:82 language:Sh
1213
x input.sh /^$x = 5 \/* + 15 *\/ + 5;$/;" v line:10 language:PHP
1314
y input.sh /^$y = 5 \/* + 15 *\/ + 5;$/;" v line:17 language:PHP
1415
pr1 input.sh /^var pr1 = function (msg) {$/;" f line:23 language:JavaScript
1516
pr2 input.sh /^var pr2 = function (msg) {$/;" f line:30 language:JavaScript
1617
pr3 input.sh /^var pr3 = function (msg) {$/;" f line:44 language:JavaScript
1718
z input.sh /^$z = 5 \/* + 15 *\/ + 5;$/;" v line:59 language:PHP
1819
a input.sh /^$a = 5 \/* + 15 *\/ + 5;$/;" v line:66 language:PHP
20+
ns5e1128f50101 input.sh /^ >$/;" n line:75 language:XML uri:https://ctags.io/root
21+
abc input.sh /^ >$/;" n line:75 language:XML uri:https://ctags.io/nosuchthing
22+
unused input.sh /^ >$/;" n line:75 language:XML uri:https://ctags.io/unused
23+
efg input.sh /^<abc:UnKnownTag id="a" xmlns:efg="https:\/\/ctags.io\/nosuchthing2">$/;" n line:76 language:XML uri:https://ctags.io/nosuchthing2
24+
a input.sh /^<abc:UnKnownTag id="a" xmlns:efg="https:\/\/ctags.io\/nosuchthing2">$/;" i line:76 language:XML
25+
b input.sh /^ <efg:UnKnownTag2 id="b"\/>$/;" i line:77 language:XML

Units/parser-sh.r/sh-heredoc-run-guest-parser.d/input.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,17 @@ echo $a;
6868
?>
6969
EOF4
7070

71+
cat > foo.xml <<EOF5
72+
<input xmlns="https://ctags.io/root"
73+
xmlns:abc="https://ctags.io/nosuchthing"
74+
xmlns:unused="https://ctags.io/unused"
75+
>
76+
<abc:UnKnownTag id="a" xmlns:efg="https://ctags.io/nosuchthing2">
77+
<efg:UnKnownTag2 id="b"/>
78+
</abc:UnKnownTag>
79+
</input>
80+
EOF5
81+
7182
function sh1
7283
{
7384
:

main/lxpath.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@
2626

2727
extern void updateXMLTagLine (tagEntryInfo *e, xmlNode *node)
2828
{
29-
unsigned long lineNumber = XML_GET_LINE (node);
30-
updateTagLine (e, lineNumber, getInputFilePositionForLine (lineNumber));
29+
unsigned long area_start_ln = getCurrentAreaStartLine();
30+
unsigned long ln = (area_start_ln? area_start_ln - 1: 0) + XML_GET_LINE (node);
31+
updateTagLine (e, ln, getInputFilePositionForLine (ln));
3132
}
3233

3334
static void simpleXpathMakeTag (xmlNode *node,

main/promise.c

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "promise_p.h"
1717
#include "ptrarray.h"
1818
#include "debug.h"
19+
#include "read.h"
1920
#include "read_p.h"
2021
#include "trashbox.h"
2122
#include "xtag.h"
@@ -110,11 +111,24 @@ int makePromise (const char *parser,
110111
p = promises + promise_count;
111112
p->parent_promise = current_promise;
112113
p->lang = lang;
113-
p->startLine = startLine;
114-
p->startCharOffset = startCharOffset;
115-
p->endLine = endLine;
116-
p->endCharOffset = endCharOffset;
117-
p->sourceLineOffset = sourceLineOffset;
114+
115+
if (is_thin_stream_spec && doesParserRunAsGuest())
116+
{
117+
getNestedInputStreamInfo (&p->startLine,
118+
&p->startCharOffset,
119+
&p->endLine,
120+
&p->endCharOffset);
121+
p->sourceLineOffset = p->startLine;
122+
}
123+
else
124+
{
125+
p->startLine = startLine;
126+
p->startCharOffset = startCharOffset;
127+
p->endLine = endLine;
128+
p->endCharOffset = endCharOffset;
129+
p->sourceLineOffset = sourceLineOffset;
130+
}
131+
118132
p->modifiers = NULL;
119133

120134
r = promise_count;

main/read.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,10 @@ void mio_getpos_cb (MIO *mio, void *data)
181181
mio_getpos (mio, cb_data->pos);
182182
}
183183

184-
CTAGS_INLINE
185-
void getNestedInputStreamInfo (unsigned long *startLine,
186-
long *startCharOffset,
187-
unsigned long *endLine,
188-
long *endCharOffset)
184+
extern void getNestedInputStreamInfo (unsigned long *startLine,
185+
long *startCharOffset,
186+
unsigned long *endLine,
187+
long *endCharOffset)
189188
{
190189
if (startLine)
191190
*startLine = File.nestedInputStreamInfo.startLine;
@@ -197,6 +196,16 @@ void getNestedInputStreamInfo (unsigned long *startLine,
197196
*endCharOffset = File.nestedInputStreamInfo.endCharOffset;
198197
}
199198

199+
extern unsigned long getCurrentAreaStartLine (void)
200+
{
201+
unsigned long startLine = 0;
202+
203+
if (doesParserRunAsGuest())
204+
getNestedInputStreamInfo (&startLine, NULL, NULL, NULL);
205+
return startLine;
206+
}
207+
208+
200209
CTAGS_INLINE
201210
void callAtNestedInputStreamStart (MIO *mio,
202211
void (* fn) (MIO *, void*),

main/read.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,6 @@ extern char *readLineRaw (vString *const vLine, MIO *const mio);
6464
extern void pushLanguage(const langType language);
6565
extern langType popLanguage (void);
6666

67+
extern unsigned long getCurrentAreaStartLine (void);
68+
6769
#endif /* CTAGS_MAIN_READ_H */

main/read_p.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,9 @@ extern bool isThinStreamSpec(unsigned long startLine, long startCharOffset,
8080
unsigned long endLine, long endCharOffset,
8181
unsigned long sourceLineOffset);
8282

83+
extern void getNestedInputStreamInfo (unsigned long *startLine,
84+
long *startCharOffset,
85+
unsigned long *endLine,
86+
long *endCharOffset);
87+
8388
#endif /* CTAGS_MAIN_READ_PRIVATE_H */

parsers/yaml.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ static void yamlFini (yaml_parser_t *yaml)
7878

7979
extern void attachYamlPosition (tagEntryInfo *tag, yaml_token_t *token, bool asEndPosition)
8080
{
81-
unsigned int ln = token->start_mark.line + 1;
81+
unsigned long area_start_ln = getCurrentAreaStartLine();
82+
unsigned long ln = (area_start_ln? area_start_ln - 1: 0) + token->start_mark.line + 1;
8283

8384
if (asEndPosition)
8485
setTagEndLine (tag, ln);

0 commit comments

Comments
 (0)