mirror of
https://github.com/machakann/vim-sandwich.git
synced 2026-05-28 00:26:34 +02:00
68 lines
1.6 KiB
VimL
68 lines
1.6 KiB
VimL
" messenger object - managing messages and errors.
|
|
|
|
function! sandwich#messenger#new() abort "{{{
|
|
let s:messenger = deepcopy(s:messenger_prototype)
|
|
return s:messenger
|
|
endfunction
|
|
"}}}
|
|
function! sandwich#messenger#get() abort "{{{
|
|
return s:messenger
|
|
endfunction
|
|
"}}}
|
|
|
|
" s:messenger_prototype "{{{
|
|
let s:messenger_prototype = {
|
|
\ 'error' : {'flag': 0, 'string': ''},
|
|
\ 'notice': {'flag': 0, 'list': []},
|
|
\ }
|
|
"}}}
|
|
function! s:messenger_prototype.initialize() dict abort "{{{
|
|
let self.error.flag = 0
|
|
let self.error.string = ''
|
|
let self.notice.flag = 0
|
|
let self.notice.list = []
|
|
endfunction
|
|
"}}}
|
|
function! s:messenger_prototype.notify(prefix) dict abort "{{{
|
|
if self.error.flag
|
|
call self.error.echoerr(a:prefix)
|
|
elseif self.notice.flag
|
|
call self.notice.echo(a:prefix)
|
|
endif
|
|
endfunction
|
|
"}}}
|
|
function! s:messenger_prototype.error.echoerr(prefix) dict abort "{{{
|
|
echoerr a:prefix . self.string
|
|
endfunction
|
|
"}}}
|
|
function! s:messenger_prototype.notice.echo(prefix) dict abort "{{{
|
|
let queue = []
|
|
if self.list != []
|
|
for line in self.list
|
|
let queue += [[a:prefix, 'MoreMsg']]
|
|
let queue += [line]
|
|
let queue += [["\n", 'NONE']]
|
|
endfor
|
|
call remove(queue, -1)
|
|
endif
|
|
call sandwich#util#echo(queue)
|
|
endfunction
|
|
"}}}
|
|
function! s:messenger_prototype.error.set(errmes) dict abort "{{{
|
|
let self.flag = 1
|
|
let self.string = a:errmes
|
|
endfunction
|
|
"}}}
|
|
function! s:messenger_prototype.notice.queue(line) dict abort "{{{
|
|
let self.flag = 1
|
|
call add(self.list, a:line)
|
|
endfunction
|
|
"}}}
|
|
|
|
call sandwich#messenger#new()
|
|
|
|
|
|
" vim:set foldmethod=marker:
|
|
" vim:set commentstring="%s:
|
|
" vim:set ts=2 sts=2 sw=2:
|