Skip to content

Commit e9b8342

Browse files
committed
support 'closure' function attribute :h :func-closure
1 parent 2fff43c commit e9b8342

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

autoload/vimlparser.vim

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,14 +1230,14 @@ function! s:VimLParser.parse_cmd_function()
12301230
return self.parse_cmd_common()
12311231
endif
12321232

1233-
" :function[!] {name}([arguments]) [range] [abort] [dict]
1233+
" :function[!] {name}([arguments]) [range] [abort] [dict] [closure]
12341234
let node = s:Node(s:NODE_FUNCTION)
12351235
let node.pos = self.ea.cmdpos
12361236
let node.body = []
12371237
let node.ea = self.ea
12381238
let node.left = left
12391239
let node.rlist = []
1240-
let node.attr = {'range': 0, 'abort': 0, 'dict': 0}
1240+
let node.attr = {'range': 0, 'abort': 0, 'dict': 0, 'closure': 0}
12411241
let node.endfunction = s:NIL
12421242
call self.reader.getn(1)
12431243
let tokenizer = s:ExprTokenizer.new(self.reader)
@@ -1302,6 +1302,8 @@ function! s:VimLParser.parse_cmd_function()
13021302
let node.attr.abort = 1
13031303
elseif key ==# 'dict'
13041304
let node.attr.dict = 1
1305+
elseif key ==# 'closure'
1306+
let node.attr.closure = 1
13051307
else
13061308
throw s:Err(printf('unexpected token: %s', key), epos)
13071309
endif

test/test_funcattr.ok

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
(function (F))
2+
(function (F))

test/test_funcattr.vim

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function! F() abort
2+
endfunction
3+
4+
function! F() dict abort range closure
5+
endfunction

0 commit comments

Comments
 (0)