mirror of
https://github.com/powerline/powerline.git
synced 2025-07-27 07:44:36 +02:00
Move listers to powerline.listers.vim module
This commit is contained in:
parent
9ba37d9a62
commit
642ced97bc
@ -4,6 +4,7 @@
|
|||||||
"left": [
|
"left": [
|
||||||
{
|
{
|
||||||
"type": "segment_list",
|
"type": "segment_list",
|
||||||
|
"module": "powerline.listers.vim",
|
||||||
"name": "tabbuflister",
|
"name": "tabbuflister",
|
||||||
"segments": [
|
"segments": [
|
||||||
{
|
{
|
||||||
|
0
powerline/listers/__init__.py
Normal file
0
powerline/listers/__init__.py
Normal file
104
powerline/listers/vim.py
Normal file
104
powerline/listers/vim.py
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
# vim:fileencoding=utf-8:noet
|
||||||
|
|
||||||
|
from __future__ import unicode_literals, absolute_import, division
|
||||||
|
|
||||||
|
try:
|
||||||
|
import vim
|
||||||
|
except ImportError:
|
||||||
|
vim = {} # NOQA
|
||||||
|
|
||||||
|
from powerline.theme import requires_segment_info
|
||||||
|
from powerline.bindings.vim import (current_tabpage, list_tabpages)
|
||||||
|
|
||||||
|
|
||||||
|
def tabpage_updated_segment_info(segment_info, tabpage):
|
||||||
|
segment_info = segment_info.copy()
|
||||||
|
window = tabpage.window
|
||||||
|
buffer = window.buffer
|
||||||
|
segment_info.update(
|
||||||
|
tabpage=tabpage,
|
||||||
|
tabnr=tabpage.number,
|
||||||
|
window=window,
|
||||||
|
winnr=window.number,
|
||||||
|
window_id=int(window.vars.get('powerline_window_id', -1)),
|
||||||
|
buffer=buffer,
|
||||||
|
bufnr=buffer.number,
|
||||||
|
)
|
||||||
|
return segment_info
|
||||||
|
|
||||||
|
|
||||||
|
@requires_segment_info
|
||||||
|
def tablister(pl, segment_info):
|
||||||
|
'''List all tab pages in segment_info format
|
||||||
|
|
||||||
|
Specifically generates a list of segment info dictionaries with ``window``,
|
||||||
|
``winnr``, ``window_id``, ``buffer`` and ``bufnr`` keys set to tab-local
|
||||||
|
ones and additional ``tabpage`` and ``tabnr`` keys.
|
||||||
|
|
||||||
|
Sets segment ``mode`` to either ``tab`` (for current tab page) or ``nc``
|
||||||
|
(for all other tab pages).
|
||||||
|
|
||||||
|
Works best with vim-7.4 or later: earlier versions miss tabpage object and
|
||||||
|
thus window objects are not available as well.
|
||||||
|
'''
|
||||||
|
cur_tabpage = current_tabpage()
|
||||||
|
cur_tabnr = cur_tabpage.number
|
||||||
|
|
||||||
|
def add_multiplier(tabpage, dct):
|
||||||
|
dct['priority_multiplier'] = 1 + (0.001 * abs(tabpage.number - cur_tabnr))
|
||||||
|
return dct
|
||||||
|
|
||||||
|
return [
|
||||||
|
(
|
||||||
|
tabpage_updated_segment_info(segment_info, tabpage),
|
||||||
|
add_multiplier(tabpage, {'mode': ('tab' if tabpage == cur_tabpage else 'nc')})
|
||||||
|
)
|
||||||
|
for tabpage in list_tabpages()
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def buffer_updated_segment_info(segment_info, buffer):
|
||||||
|
segment_info = segment_info.copy()
|
||||||
|
segment_info.update(
|
||||||
|
window=None,
|
||||||
|
winnr=None,
|
||||||
|
window_id=None,
|
||||||
|
buffer=buffer,
|
||||||
|
bufnr=buffer.number,
|
||||||
|
)
|
||||||
|
return segment_info
|
||||||
|
|
||||||
|
|
||||||
|
@requires_segment_info
|
||||||
|
def bufferlister(pl, segment_info):
|
||||||
|
'''List all buffers in segment_info format
|
||||||
|
|
||||||
|
Specifically generates a list of segment info dictionaries with ``buffer``
|
||||||
|
and ``bufnr`` keys set to buffer-specific ones, ``window``, ``winnr`` and
|
||||||
|
``window_id`` keys unset.
|
||||||
|
|
||||||
|
Sets segment ``mode`` to either ``buf`` (for current buffer) or ``nc``
|
||||||
|
(for all other buffers).
|
||||||
|
'''
|
||||||
|
cur_buffer = vim.current.buffer
|
||||||
|
cur_bufnr = cur_buffer.number
|
||||||
|
|
||||||
|
def add_multiplier(buffer, dct):
|
||||||
|
dct['priority_multiplier'] = 1 + (0.001 * abs(buffer.number - cur_bufnr))
|
||||||
|
return dct
|
||||||
|
|
||||||
|
return [
|
||||||
|
(
|
||||||
|
buffer_updated_segment_info(segment_info, buffer),
|
||||||
|
add_multiplier(buffer, {'mode': ('tab' if buffer == cur_buffer else 'nc')})
|
||||||
|
)
|
||||||
|
for buffer in vim.buffers
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@requires_segment_info
|
||||||
|
def tabbuflister(*args, **kwargs):
|
||||||
|
if len(list_tabpages()) == 1:
|
||||||
|
return bufferlister(*args, **kwargs)
|
||||||
|
else:
|
||||||
|
return tablister(*args, **kwargs)
|
@ -4,15 +4,13 @@ from __future__ import unicode_literals, absolute_import, division
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import vim
|
import vim
|
||||||
except ImportError:
|
except ImportError:
|
||||||
vim = {} # NOQA
|
vim = {} # NOQA
|
||||||
|
|
||||||
try:
|
from collections import defaultdict
|
||||||
from __builtin__ import xrange as range
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
from powerline.bindings.vim import (vim_get_func, getbufvar, vim_getbufoption,
|
from powerline.bindings.vim import (vim_get_func, getbufvar, vim_getbufoption,
|
||||||
buffer_name, vim_getwinvar,
|
buffer_name, vim_getwinvar,
|
||||||
@ -23,7 +21,11 @@ from powerline.lib import add_divider_highlight_group
|
|||||||
from powerline.lib.vcs import guess, tree_status
|
from powerline.lib.vcs import guess, tree_status
|
||||||
from powerline.lib.humanize_bytes import humanize_bytes
|
from powerline.lib.humanize_bytes import humanize_bytes
|
||||||
from powerline.lib import wraps_saveargs as wraps
|
from powerline.lib import wraps_saveargs as wraps
|
||||||
from collections import defaultdict
|
|
||||||
|
try:
|
||||||
|
from __builtin__ import xrange as range
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
vim_funcs = {
|
vim_funcs = {
|
||||||
@ -629,96 +631,3 @@ def single_tab(pl, single_text='Bufs', multiple_text='Tabs'):
|
|||||||
'contents': multiple_text,
|
'contents': multiple_text,
|
||||||
'highlight_group': ['many_tabs'],
|
'highlight_group': ['many_tabs'],
|
||||||
}]
|
}]
|
||||||
|
|
||||||
|
|
||||||
def tabpage_updated_segment_info(segment_info, tabpage):
|
|
||||||
segment_info = segment_info.copy()
|
|
||||||
window = tabpage.window
|
|
||||||
buffer = window.buffer
|
|
||||||
segment_info.update(
|
|
||||||
tabpage=tabpage,
|
|
||||||
tabnr=tabpage.number,
|
|
||||||
window=window,
|
|
||||||
winnr=window.number,
|
|
||||||
window_id=int(window.vars.get('powerline_window_id', -1)),
|
|
||||||
buffer=buffer,
|
|
||||||
bufnr=buffer.number,
|
|
||||||
)
|
|
||||||
return segment_info
|
|
||||||
|
|
||||||
|
|
||||||
@requires_segment_info
|
|
||||||
def tablister(pl, segment_info):
|
|
||||||
'''List all tab pages in segment_info format
|
|
||||||
|
|
||||||
Specifically generates a list of segment info dictionaries with ``window``,
|
|
||||||
``winnr``, ``window_id``, ``buffer`` and ``bufnr`` keys set to tab-local
|
|
||||||
ones and additional ``tabpage`` and ``tabnr`` keys.
|
|
||||||
|
|
||||||
Sets segment ``mode`` to either ``tab`` (for current tab page) or ``nc``
|
|
||||||
(for all other tab pages).
|
|
||||||
|
|
||||||
Works best with vim-7.4 or later: earlier versions miss tabpage object and
|
|
||||||
thus window objects are not available as well.
|
|
||||||
'''
|
|
||||||
cur_tabpage = current_tabpage()
|
|
||||||
cur_tabnr = cur_tabpage.number
|
|
||||||
|
|
||||||
def add_multiplier(tabpage, dct):
|
|
||||||
dct['priority_multiplier'] = 1 + (0.001 * abs(tabpage.number - cur_tabnr))
|
|
||||||
return dct
|
|
||||||
|
|
||||||
return [
|
|
||||||
(
|
|
||||||
tabpage_updated_segment_info(segment_info, tabpage),
|
|
||||||
add_multiplier(tabpage, {'mode': ('tab' if tabpage == cur_tabpage else 'nc')})
|
|
||||||
)
|
|
||||||
for tabpage in list_tabpages()
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def buffer_updated_segment_info(segment_info, buffer):
|
|
||||||
segment_info = segment_info.copy()
|
|
||||||
segment_info.update(
|
|
||||||
window=None,
|
|
||||||
winnr=None,
|
|
||||||
window_id=None,
|
|
||||||
buffer=buffer,
|
|
||||||
bufnr=buffer.number,
|
|
||||||
)
|
|
||||||
return segment_info
|
|
||||||
|
|
||||||
|
|
||||||
@requires_segment_info
|
|
||||||
def bufferlister(pl, segment_info):
|
|
||||||
'''List all buffers in segment_info format
|
|
||||||
|
|
||||||
Specifically generates a list of segment info dictionaries with ``buffer``
|
|
||||||
and ``bufnr`` keys set to buffer-specific ones, ``window``, ``winnr`` and
|
|
||||||
``window_id`` keys unset.
|
|
||||||
|
|
||||||
Sets segment ``mode`` to either ``buf`` (for current buffer) or ``nc``
|
|
||||||
(for all other buffers).
|
|
||||||
'''
|
|
||||||
cur_buffer = vim.current.buffer
|
|
||||||
cur_bufnr = cur_buffer.number
|
|
||||||
|
|
||||||
def add_multiplier(buffer, dct):
|
|
||||||
dct['priority_multiplier'] = 1 + (0.001 * abs(buffer.number - cur_bufnr))
|
|
||||||
return dct
|
|
||||||
|
|
||||||
return [
|
|
||||||
(
|
|
||||||
buffer_updated_segment_info(segment_info, buffer),
|
|
||||||
add_multiplier(buffer, {'mode': ('tab' if buffer == cur_buffer else 'nc')})
|
|
||||||
)
|
|
||||||
for buffer in vim.buffers
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
@requires_segment_info
|
|
||||||
def tabbuflister(*args, **kwargs):
|
|
||||||
if len(list_tabpages()) == 1:
|
|
||||||
return bufferlister(*args, **kwargs)
|
|
||||||
else:
|
|
||||||
return tablister(*args, **kwargs)
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user