Add tabbuflister and buflister listers
This commit is contained in:
parent
85f252652e
commit
2acefc9ac9
|
@ -4,12 +4,13 @@
|
|||
"left": [
|
||||
{
|
||||
"type": "segment_list",
|
||||
"name": "tablister",
|
||||
"name": "tabbuflister",
|
||||
"segments": [
|
||||
{
|
||||
"name": "tabnr",
|
||||
"after": " ",
|
||||
"draw_soft_divider": false,
|
||||
"exclude_modes": ["tab", "buf"],
|
||||
"priority": 5
|
||||
},
|
||||
{
|
||||
|
|
|
@ -548,3 +548,50 @@ def tablister(pl, segment_info):
|
|||
)
|
||||
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…
Reference in New Issue