Skip to content

Commit 69934ed

Browse files
amaanqjustinmk
authored andcommitted
fix: argument in "vim.foo({bar})"
Problem: In "vim.foo({bar})", {bar} is not recognized as (argument). Solution: Add more special-cases for plain (word). Closes #102
1 parent 755b801 commit 69934ed

File tree

7 files changed

+74
-2
lines changed

7 files changed

+74
-2
lines changed

corpus/arguments.txt

+46
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ list of { uri:string, name: string } tables
3737
(word)
3838
(word)
3939
(word)
40+
(word)
4041
(word))))
4142

4243
================================================================================
@@ -61,13 +62,58 @@ multiple arguments on the same line
6162
argument in parentheses
6263
================================================================================
6364
({aaa})
65+
vim.foo({bar})
66+
vim.foo( {bar})
67+
nvim_foo({bar})
68+
nvim_foo({bar},{baz})
69+
nvim_foo({bar}, {baz})
70+
nvim_buf_detach_event[{buf}]
6471

6572

6673
--------------------------------------------------------------------------------
6774

6875
(help_file
6976
(block
7077
(line
78+
(word)
79+
(argument
80+
(word))
81+
(word))
82+
(line
83+
(word)
84+
(word)
85+
(argument
86+
(word))
87+
(word))
88+
(line
89+
(word)
90+
(word)
91+
(argument
92+
(word))
93+
(word))
94+
(line
95+
(word)
96+
(argument
97+
(word))
98+
(word))
99+
(line
100+
(word)
101+
(argument
102+
(word))
103+
(word)
104+
(argument
105+
(word))
106+
(word))
107+
(line
108+
(word)
109+
(argument
110+
(word))
111+
(word)
112+
(argument
113+
(word))
114+
(word))
115+
(line
116+
(word)
71117
(word)
72118
(argument
73119
(word))

corpus/codeblock.txt

+5
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ text
9090
(word)
9191
(taglink
9292
(word))
93+
(word)
9394
(word))
9495
(line
9596
(codeblock
@@ -331,6 +332,7 @@ To test for a non-empty string, use empty(): >
331332
(word)
332333
(word)
333334
(word)
335+
(word)
334336
(word))
335337
(line
336338
(word)
@@ -352,6 +354,8 @@ To test for a non-empty string, use empty(): >
352354
(word)
353355
(word)
354356
(word)
357+
(word)
358+
(word)
355359
(codeblock
356360
(code
357361
(line))))))
@@ -393,6 +397,7 @@ codeblock stop and start on same line
393397
(tag
394398
(word)))
395399
(line
400+
(word)
396401
(word)
397402
(word)
398403
(word))

corpus/line_block.txt

+1
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ li continues
113113
(line))
114114
(line_li
115115
(line
116+
(word)
116117
(word))
117118
(line)
118119
(line

corpus/optionlink.txt

+3
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Regular / :help /[
7878
(word)
7979
(word))
8080
(line
81+
(word)
8182
(word)
8283
(word)
8384
(word))
@@ -95,6 +96,7 @@ Regular / :help /[
9596
(word)
9697
(word)
9798
(word)
99+
(word)
98100
(ERROR
99101
(word))
100102
(word)
@@ -120,6 +122,7 @@ Regular / :help /[
120122
(word)
121123
(word)
122124
(word)
125+
(word)
123126
(word))))
124127

125128
================================================================================

corpus/taglink.txt

+2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ Hello |world| hello
5656
(taglink
5757
(word))
5858
(word)
59+
(word)
60+
(word)
5961
(word))
6062
(line
6163
(taglink

corpus/url.txt

+9
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,16 @@ markdown: [https://neovim.io/doc/user/#yay](https://neovim.io/doc/user/#yay).
5151
(word)
5252
(url
5353
(word))
54+
(word)
5455
(word))
5556
(line
5657
(word)
58+
(word)
59+
(url
60+
(word))
61+
(word)
62+
(word)
63+
(url
64+
(word))
65+
(word)
5766
(word))))

grammar.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ module.exports = grammar({
3232
word: ($) => choice(
3333
// Try the more-restrictive pattern at higher relative precedence, so that things like
3434
// "foo({a})" parse as "(word) (argument)" instead of "(word)".
35-
token(prec(-1, /[^\n\t{ ][^\n\t ]*/)),
35+
token(prec(-1, /[^{,(\[\n\t ][^,(\[\n\t ]*/)),
3636
token(prec(-2, /[^\n\t ]+/)),
3737
$._word_common,
3838
),
@@ -43,7 +43,7 @@ module.exports = grammar({
4343
),
4444
word_noli: ($) => choice(
4545
// Lines contained by line_li must not start with a listitem symbol.
46-
token(prec(-1, /[^-\n\t ][^\n\t ]*/)),
46+
token(prec(-1, /[^-\n\t ][^(\[\n\t ]*/)),
4747
token(prec(-1, /[-][^\n\t ]+/)),
4848
$._word_common,
4949
),
@@ -80,10 +80,16 @@ module.exports = grammar({
8080
'{}',
8181
/\{\{+[0-9]*/,
8282
'(',
83+
')',
84+
'[',
85+
']',
86+
"['",
87+
"']",
8388
/\w+\(/,
8489
'~',
8590
// NOT codeblock: random ">" in middle of the motherflippin text.
8691
'>',
92+
',',
8793
),
8894

8995
keycode: () => choice(

0 commit comments

Comments
 (0)