40 lines
695 B
VimL
40 lines
695 B
VimL
|
let s:self = {}
|
||
|
|
||
|
|
||
|
let s:self.begin = ''
|
||
|
let s:self.end = ''
|
||
|
let s:self.content_func = ''
|
||
|
let s:self.autoformat = 0
|
||
|
|
||
|
|
||
|
function! s:self._find_position() abort
|
||
|
let start = search(self.begin,'bwnc')
|
||
|
let end = search(self.end,'bnwc')
|
||
|
return sort([start, end], 'n')
|
||
|
endfunction
|
||
|
|
||
|
|
||
|
function! s:self.update(...) abort
|
||
|
let [start, end] = self._find_position()
|
||
|
if start != 0 && end != 0
|
||
|
if end - start > 1
|
||
|
exe (start + 1) . ',' . (end - 1) . 'delete'
|
||
|
endif
|
||
|
call append(start, call(self.content_func, a:000))
|
||
|
if self.autoformat
|
||
|
silent! Neoformat
|
||
|
endif
|
||
|
endif
|
||
|
endfunction
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
function! SpaceVim#api#dev#autodoc#get() abort
|
||
|
return deepcopy(s:self)
|
||
|
endfunction
|