mirror of
https://github.com/powerline/powerline.git
synced 2025-07-22 05:14:58 +02:00
Rework API for custom vim events
This commit is contained in:
parent
a021916428
commit
127a600e1b
@ -40,8 +40,6 @@ catch
|
|||||||
endif
|
endif
|
||||||
endtry
|
endtry
|
||||||
endtry
|
endtry
|
||||||
exec s:powerline_pycmd 'powerline = VimPowerline()'
|
|
||||||
exec s:powerline_pycmd 'del VimPowerline'
|
|
||||||
|
|
||||||
if !get(g:, 'powerline_debugging_pyeval') && exists('*'. s:powerline_pyeval)
|
if !get(g:, 'powerline_debugging_pyeval') && exists('*'. s:powerline_pyeval)
|
||||||
let s:pyeval = function(s:powerline_pyeval)
|
let s:pyeval = function(s:powerline_pyeval)
|
||||||
@ -80,18 +78,19 @@ endfunction
|
|||||||
function! PowerlineRegisterCachePurgerEvent(event)
|
function! PowerlineRegisterCachePurgerEvent(event)
|
||||||
exec s:powerline_pycmd 'from powerline.segments.vim import launchevent as powerline_launchevent'
|
exec s:powerline_pycmd 'from powerline.segments.vim import launchevent as powerline_launchevent'
|
||||||
augroup Powerline
|
augroup Powerline
|
||||||
exec 'autocmd!' a:event '*' s:powerline_pycmd.' powerline_launchevent("'.a:event.'")'
|
exec 'autocmd' a:event '*' s:powerline_pycmd.' powerline_launchevent("'.a:event.'")'
|
||||||
augroup END
|
augroup END
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
augroup Powerline
|
||||||
|
autocmd! ColorScheme * :exec s:powerline_pycmd 'powerline.renderer.reset_highlight()'
|
||||||
|
autocmd! VimEnter * :redrawstatus!
|
||||||
|
autocmd! VimLeave * :exec s:powerline_pycmd 'powerline.renderer.shutdown()'
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
exec s:powerline_pycmd 'powerline = VimPowerline()'
|
||||||
|
exec s:powerline_pycmd 'del VimPowerline'
|
||||||
" Is immediately changed when PowerlineNew() function is run. Good for global
|
" Is immediately changed when PowerlineNew() function is run. Good for global
|
||||||
" value.
|
" value.
|
||||||
set statusline=%!PowerlineNew()
|
set statusline=%!PowerlineNew()
|
||||||
call PowerlineNew()
|
call PowerlineNew()
|
||||||
|
|
||||||
augroup Powerline
|
|
||||||
autocmd!
|
|
||||||
autocmd ColorScheme * :exec s:powerline_pycmd 'powerline.renderer.reset_highlight()'
|
|
||||||
autocmd VimEnter * :redrawstatus!
|
|
||||||
autocmd VimLeave * :exec s:powerline_pycmd 'powerline.renderer.shutdown()'
|
|
||||||
augroup END
|
|
||||||
|
@ -47,34 +47,32 @@ vim_modes = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
eventcaches = defaultdict(lambda: [])
|
eventfuncs = defaultdict(lambda: [])
|
||||||
bufeventcaches = defaultdict(lambda: [])
|
bufeventfuncs = defaultdict(lambda: [])
|
||||||
|
defined_events = set()
|
||||||
|
|
||||||
|
|
||||||
def purgeonevents_reg(events, eventcaches=bufeventcaches):
|
def purgeonevents_reg(func, events, is_buffer_event=False):
|
||||||
def cache_reg_func(cache):
|
if is_buffer_event:
|
||||||
for event in events:
|
cureventfuncs = bufeventfuncs
|
||||||
if event not in eventcaches:
|
else:
|
||||||
vim.eval('PowerlineRegisterCachePurgerEvent("' + event + '")')
|
cureventfuncs = eventfuncs
|
||||||
eventcaches[event].append(cache)
|
for event in events:
|
||||||
return cache_reg_func
|
if event not in defined_events:
|
||||||
|
vim.eval('PowerlineRegisterCachePurgerEvent("' + event + '")')
|
||||||
purgeall_on_shell = purgeonevents_reg(('ShellCmdPost', 'ShellFilterPost', 'FocusGained'), eventcaches=eventcaches)
|
defined_events.add(event)
|
||||||
purgebuf_on_shell_and_write = purgeonevents_reg(('BufWritePost', 'ShellCmdPost', 'ShellFilterPost', 'FocusGained'))
|
cureventfuncs[event].append(func)
|
||||||
|
|
||||||
|
|
||||||
def launchevent(event):
|
def launchevent(event):
|
||||||
global eventcaches
|
global eventfuncs
|
||||||
global bufeventcaches
|
global bufeventfuncs
|
||||||
for cache in eventcaches[event]:
|
for func in eventfuncs[event]:
|
||||||
cache.clear()
|
func()
|
||||||
if bufeventcaches[event]:
|
if bufeventfuncs[event]:
|
||||||
buf = int(vim_funcs['expand']('<abuf>'))
|
buffer = vim.buffers[int(vim_funcs['expand']('<abuf>')) - 1]
|
||||||
for cache in bufeventcaches[event]:
|
for func in bufeventfuncs[event]:
|
||||||
try:
|
func(buffer)
|
||||||
cache.pop(buf)
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
# TODO Remove cache when needed
|
# TODO Remove cache when needed
|
||||||
|
Loading…
x
Reference in New Issue
Block a user