mirror of
https://github.com/powerline/powerline.git
synced 2025-07-31 01:35:40 +02:00
Update tests to work with new functionality
Still no tests for new functionality.
This commit is contained in:
parent
70ae12b512
commit
ff91ff7f92
@ -526,6 +526,7 @@ else:
|
|||||||
buffer=buffer,
|
buffer=buffer,
|
||||||
bufnr=bufnr,
|
bufnr=bufnr,
|
||||||
)
|
)
|
||||||
|
return segment_info
|
||||||
|
|
||||||
list_tabpages = lambda: range(1, int(vim.eval('tabpagenr("$")')) + 1) # NOQA
|
list_tabpages = lambda: range(1, int(vim.eval('tabpagenr("$")')) + 1) # NOQA
|
||||||
current_tabpage = lambda: int(vim.eval('tabpagenr()')) # NOQA
|
current_tabpage = lambda: int(vim.eval('tabpagenr()')) # NOQA
|
||||||
|
@ -32,7 +32,7 @@ class TestConfig(TestCase):
|
|||||||
local_themes_raw = json.load(f)['ext']['vim']['local_themes']
|
local_themes_raw = json.load(f)['ext']['vim']['local_themes']
|
||||||
# Don't run tests on external/plugin segments
|
# Don't run tests on external/plugin segments
|
||||||
local_themes = dict((k, v) for (k, v) in local_themes_raw.items())
|
local_themes = dict((k, v) for (k, v) in local_themes_raw.items())
|
||||||
self.assertEqual(len(buffers), len(local_themes))
|
self.assertEqual(len(buffers), len(local_themes) - 1)
|
||||||
outputs = {}
|
outputs = {}
|
||||||
i = 0
|
i = 0
|
||||||
|
|
||||||
@ -53,6 +53,8 @@ class TestConfig(TestCase):
|
|||||||
outputs[out] = (i, (args, kwargs), mode)
|
outputs[out] = (i, (args, kwargs), mode)
|
||||||
|
|
||||||
with vim_module._with('bufname', '/tmp/foo.txt'):
|
with vim_module._with('bufname', '/tmp/foo.txt'):
|
||||||
|
out = powerline.render()
|
||||||
|
outputs[out] = (-1, (None, None), 'tab')
|
||||||
with vim_module._with('globals', powerline_config_path=cfg_path):
|
with vim_module._with('globals', powerline_config_path=cfg_path):
|
||||||
exclude = set(('no', 'v', 'V', VBLOCK, 's', 'S', SBLOCK, 'R', 'Rv', 'c', 'cv', 'ce', 'r', 'rm', 'r?', '!'))
|
exclude = set(('no', 'v', 'V', VBLOCK, 's', 'S', SBLOCK, 'R', 'Rv', 'c', 'cv', 'ce', 'r', 'rm', 'r?', '!'))
|
||||||
try:
|
try:
|
||||||
|
257
tests/vim.py
257
tests/vim.py
@ -2,12 +2,13 @@
|
|||||||
_log = []
|
_log = []
|
||||||
vars = {}
|
vars = {}
|
||||||
vvars = {'version': 703}
|
vvars = {'version': 703}
|
||||||
_window = 0
|
_tabpage = 0
|
||||||
_mode = 'n'
|
_mode = 'n'
|
||||||
_buf_purge_events = set()
|
_buf_purge_events = set()
|
||||||
options = {
|
options = {
|
||||||
'paste': 0,
|
'paste': 0,
|
||||||
'ambiwidth': 'single',
|
'ambiwidth': 'single',
|
||||||
|
'columns': 80,
|
||||||
}
|
}
|
||||||
_last_bufnr = 0
|
_last_bufnr = 0
|
||||||
_highlights = {}
|
_highlights = {}
|
||||||
@ -29,6 +30,12 @@ def _set_thread_id():
|
|||||||
_set_thread_id()
|
_set_thread_id()
|
||||||
|
|
||||||
|
|
||||||
|
def _print_log():
|
||||||
|
for item in _log:
|
||||||
|
print (item)
|
||||||
|
_log[:] = ()
|
||||||
|
|
||||||
|
|
||||||
def _vim(func):
|
def _vim(func):
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from threading import current_thread
|
from threading import current_thread
|
||||||
@ -67,6 +74,10 @@ class _Buffers(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.d = {}
|
self.d = {}
|
||||||
|
|
||||||
|
@_vim
|
||||||
|
def __len__(self):
|
||||||
|
return len(self.d)
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def __getitem__(self, item):
|
def __getitem__(self, item):
|
||||||
return self.d[item]
|
return self.d[item]
|
||||||
@ -75,6 +86,10 @@ class _Buffers(object):
|
|||||||
def __setitem__(self, item, value):
|
def __setitem__(self, item, value):
|
||||||
self.d[item] = value
|
self.d[item] = value
|
||||||
|
|
||||||
|
@_vim
|
||||||
|
def __iter__(self):
|
||||||
|
return iter(self.d.values())
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def __contains__(self, item):
|
def __contains__(self, item):
|
||||||
return item in self.d
|
return item in self.d
|
||||||
@ -84,29 +99,26 @@ class _Buffers(object):
|
|||||||
return bool(self.d)
|
return bool(self.d)
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def keys(self):
|
def _keys(self):
|
||||||
return self.d.keys()
|
return self.d.keys()
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def pop(self, *args, **kwargs):
|
def _pop(self, *args, **kwargs):
|
||||||
return self.d.pop(*args, **kwargs)
|
return self.d.pop(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
buffers = _Buffers()
|
buffers = _Buffers()
|
||||||
|
|
||||||
|
|
||||||
class _Windows(object):
|
class _ObjList(object):
|
||||||
@_vim
|
@_vim
|
||||||
def __init__(self):
|
def __init__(self, objtype):
|
||||||
self.l = []
|
self.l = []
|
||||||
|
self.objtype = objtype
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def __getitem__(self, item):
|
def __getitem__(self, item):
|
||||||
return self.l[item]
|
return self.l[item - int(item > 0)]
|
||||||
|
|
||||||
@_vim
|
|
||||||
def __setitem__(self, item, value):
|
|
||||||
self.l[item] = value
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
@ -128,13 +140,12 @@ class _Windows(object):
|
|||||||
def _append(self, *args, **kwargs):
|
def _append(self, *args, **kwargs):
|
||||||
return self.l.append(*args, **kwargs)
|
return self.l.append(*args, **kwargs)
|
||||||
|
|
||||||
|
@_vim
|
||||||
windows = _Windows()
|
def _new(self, *args, **kwargs):
|
||||||
|
number = len(self) + 1
|
||||||
|
new_obj = self.objtype(number, *args, **kwargs)
|
||||||
@_vim
|
self._append(new_obj)
|
||||||
def _buffer():
|
return new_obj
|
||||||
return windows[_window - 1].buffer.number
|
|
||||||
|
|
||||||
|
|
||||||
def _construct_result(r):
|
def _construct_result(r):
|
||||||
@ -238,12 +249,32 @@ def eval(expr):
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
winnr = int(match.group(1))
|
winnr = int(match.group(1))
|
||||||
varname = match.group(2)
|
varname = match.group(2)
|
||||||
return 0 + (varname in windows[winnr - 1].vars)
|
return 0 + (varname in current.tabpage.windows[winnr].vars)
|
||||||
elif expr == 'getbufvar("%", "NERDTreeRoot").path.str()':
|
elif expr == 'getbufvar("%", "NERDTreeRoot").path.str()':
|
||||||
import os
|
import os
|
||||||
assert os.path.basename(buffers[_buffer()].name).startswith('NERD_tree_')
|
assert os.path.basename(current.buffer.name).startswith('NERD_tree_')
|
||||||
return '/usr/include'
|
return '/usr/include'
|
||||||
raise NotImplementedError
|
elif expr == 'tabpagenr()':
|
||||||
|
return current.tabpage.number
|
||||||
|
elif expr == 'tabpagenr("$")':
|
||||||
|
return len(tabpages)
|
||||||
|
elif expr.startswith('tabpagewinnr('):
|
||||||
|
tabnr = int(expr[len('tabpagewinnr('):-1])
|
||||||
|
return tabpages[tabnr].window.number
|
||||||
|
elif expr.startswith('tabpagebuflist('):
|
||||||
|
import re
|
||||||
|
match = re.match(r'tabpagebuflist\((\d+)\)\[(\d+)\]', expr)
|
||||||
|
tabnr = int(match.group(1))
|
||||||
|
winnr = int(match.group(2)) + 1
|
||||||
|
return tabpages[tabnr].windows[winnr].buffer.number
|
||||||
|
elif expr.startswith('gettabwinvar('):
|
||||||
|
import re
|
||||||
|
match = re.match(r'gettabwinvar\((\d+), (\d+), "(\w+)"\)', expr)
|
||||||
|
tabnr = int(match.group(1))
|
||||||
|
winnr = int(match.group(2))
|
||||||
|
varname = match.group(3)
|
||||||
|
return tabpages[tabnr].windows[winnr].vars[varname]
|
||||||
|
raise NotImplementedError(expr)
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
@ -277,7 +308,7 @@ def _emul_getbufvar(bufnr, varname):
|
|||||||
import re
|
import re
|
||||||
if varname[0] == '&':
|
if varname[0] == '&':
|
||||||
if bufnr == '%':
|
if bufnr == '%':
|
||||||
bufnr = buffers[_buffer()].number
|
bufnr = current.buffer.number
|
||||||
if bufnr not in buffers:
|
if bufnr not in buffers:
|
||||||
return ''
|
return ''
|
||||||
try:
|
try:
|
||||||
@ -289,7 +320,7 @@ def _emul_getbufvar(bufnr, varname):
|
|||||||
return ''
|
return ''
|
||||||
elif re.match('^[a-zA-Z_]+$', varname):
|
elif re.match('^[a-zA-Z_]+$', varname):
|
||||||
if bufnr == '%':
|
if bufnr == '%':
|
||||||
bufnr = buffers[_buffer()].number
|
bufnr = current.buffer.number
|
||||||
if bufnr not in buffers:
|
if bufnr not in buffers:
|
||||||
return ''
|
return ''
|
||||||
return buffers[bufnr].vars[varname]
|
return buffers[bufnr].vars[varname]
|
||||||
@ -299,25 +330,25 @@ def _emul_getbufvar(bufnr, varname):
|
|||||||
@_vim
|
@_vim
|
||||||
@_str_func
|
@_str_func
|
||||||
def _emul_getwinvar(winnr, varname):
|
def _emul_getwinvar(winnr, varname):
|
||||||
return windows[winnr - 1].vars.get(varname, '')
|
return current.tabpage.windows[winnr].vars.get(varname, '')
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _emul_setwinvar(winnr, varname, value):
|
def _emul_setwinvar(winnr, varname, value):
|
||||||
windows[winnr - 1].vars[varname] = value
|
current.tabpage.windows[winnr].vars[varname] = value
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _emul_virtcol(expr):
|
def _emul_virtcol(expr):
|
||||||
if expr == '.' or isinstance(expr, list):
|
if expr == '.' or isinstance(expr, list):
|
||||||
return windows[_window - 1].cursor[1] + 1
|
return current.window.cursor[1] + 1
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _emul_getpos(expr):
|
def _emul_getpos(expr):
|
||||||
if expr == '.' or expr == 'v':
|
if expr == '.' or expr == 'v':
|
||||||
return [0, windows[_window - 1].cursor[0] + 1, windows[_window - 1].cursor[1] + 1, 0]
|
return [0, current.window.cursor[0] + 1, current.window.cursor[1] + 1, 0]
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
@ -342,7 +373,7 @@ def _emul_fnamemodify(path, modstring):
|
|||||||
def _emul_expand(expr):
|
def _emul_expand(expr):
|
||||||
global _abuf
|
global _abuf
|
||||||
if expr == '<abuf>':
|
if expr == '<abuf>':
|
||||||
return _abuf or _buffer()
|
return _abuf or current.buffer.number
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
@ -362,7 +393,7 @@ def _emul_exists(varname):
|
|||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _emul_line2byte(line):
|
def _emul_line2byte(line):
|
||||||
buflines = _buf_lines[_buffer()]
|
buflines = current.buffer._buf_lines
|
||||||
if line == len(buflines) + 1:
|
if line == len(buflines) + 1:
|
||||||
return sum((len(s) for s in buflines)) + 1
|
return sum((len(s) for s in buflines)) + 1
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
@ -370,8 +401,8 @@ def _emul_line2byte(line):
|
|||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _emul_line(expr):
|
def _emul_line(expr):
|
||||||
cursorline = windows[_window - 1].cursor[0] + 1
|
cursorline = current.window.cursor[0] + 1
|
||||||
numlines = len(_buf_lines[_buffer()])
|
numlines = len(current.buffer._buf_lines)
|
||||||
if expr == 'w0':
|
if expr == 'w0':
|
||||||
return max(cursorline - 5, 1)
|
return max(cursorline - 5, 1)
|
||||||
if expr == 'w$':
|
if expr == 'w$':
|
||||||
@ -395,16 +426,15 @@ def _emul_bufname(bufnr):
|
|||||||
return b''
|
return b''
|
||||||
|
|
||||||
|
|
||||||
_window_ids = [None]
|
|
||||||
_window_id = 0
|
_window_id = 0
|
||||||
|
|
||||||
|
|
||||||
class _Window(object):
|
class _Window(object):
|
||||||
def __init__(self, buffer=None, cursor=(1, 0), width=80):
|
def __init__(self, number, buffer=None, cursor=(1, 0), width=80):
|
||||||
global _window_id
|
global _window_id
|
||||||
self.cursor = cursor
|
self.cursor = cursor
|
||||||
self.width = width
|
self.width = width
|
||||||
self.number = len(windows) + 1
|
self.number = number
|
||||||
if buffer:
|
if buffer:
|
||||||
if type(buffer) is _Buffer:
|
if type(buffer) is _Buffer:
|
||||||
self.buffer = buffer
|
self.buffer = buffer
|
||||||
@ -412,19 +442,39 @@ class _Window(object):
|
|||||||
self.buffer = _Buffer(**buffer)
|
self.buffer = _Buffer(**buffer)
|
||||||
else:
|
else:
|
||||||
self.buffer = _Buffer()
|
self.buffer = _Buffer()
|
||||||
windows._append(self)
|
|
||||||
_window_id += 1
|
_window_id += 1
|
||||||
_window_ids.append(_window_id)
|
self._window_id = _window_id
|
||||||
self.options = {}
|
self.options = {}
|
||||||
self.vars = {}
|
self.vars = {
|
||||||
|
'powerline_window_id': self._window_id,
|
||||||
|
}
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<window ' + str(self.number - 1) + '>'
|
return '<window ' + str(self.number - 1) + '>'
|
||||||
|
|
||||||
|
|
||||||
_buf_lines = {}
|
class _Tabpage(object):
|
||||||
_undostate = {}
|
def __init__(self, number):
|
||||||
_undo_written = {}
|
self.windows = _ObjList(_Window)
|
||||||
|
self.number = number
|
||||||
|
|
||||||
|
def _new_window(self, **kwargs):
|
||||||
|
self.window = self.windows._new(**kwargs)
|
||||||
|
return self.window
|
||||||
|
|
||||||
|
def _close_window(self, winnr):
|
||||||
|
curwinnr = self.window.number
|
||||||
|
win = self.windows._pop(winnr - 1)
|
||||||
|
if self.windows and winnr == curwinnr:
|
||||||
|
self.window = self.windows[-1]
|
||||||
|
else:
|
||||||
|
current.tabpage._new_window()
|
||||||
|
return win
|
||||||
|
|
||||||
|
|
||||||
|
tabpages = _ObjList(_Tabpage)
|
||||||
|
|
||||||
|
|
||||||
_abuf = None
|
_abuf = None
|
||||||
|
|
||||||
|
|
||||||
@ -446,10 +496,9 @@ class _Buffer(object):
|
|||||||
'fileencoding': 'utf-8',
|
'fileencoding': 'utf-8',
|
||||||
'textwidth': 80,
|
'textwidth': 80,
|
||||||
}
|
}
|
||||||
_buf_lines[bufnr] = ['']
|
self._buf_lines = ['']
|
||||||
from copy import copy
|
self._undostate = [self._buf_lines[:]]
|
||||||
_undostate[bufnr] = [copy(_buf_lines[bufnr])]
|
self._undo_written = len(self._undostate)
|
||||||
_undo_written[bufnr] = len(_undostate[bufnr])
|
|
||||||
buffers[bufnr] = self
|
buffers[bufnr] = self
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -471,27 +520,27 @@ class _Buffer(object):
|
|||||||
self._name = os.path.abspath(name)
|
self._name = os.path.abspath(name)
|
||||||
|
|
||||||
def __getitem__(self, line):
|
def __getitem__(self, line):
|
||||||
return _buf_lines[self.number][line]
|
return self._buf_lines[line]
|
||||||
|
|
||||||
def __setitem__(self, line, value):
|
def __setitem__(self, line, value):
|
||||||
self.options['modified'] = 1
|
self.options['modified'] = 1
|
||||||
self.vars['changedtick'] += 1
|
self.vars['changedtick'] += 1
|
||||||
_buf_lines[self.number][line] = value
|
self._buf_lines[line] = value
|
||||||
from copy import copy
|
from copy import copy
|
||||||
_undostate[self.number].append(copy(_buf_lines[self.number]))
|
self._undostate.append(copy(self._buf_lines))
|
||||||
|
|
||||||
def __setslice__(self, *args):
|
def __setslice__(self, *args):
|
||||||
self.options['modified'] = 1
|
self.options['modified'] = 1
|
||||||
self.vars['changedtick'] += 1
|
self.vars['changedtick'] += 1
|
||||||
_buf_lines[self.number].__setslice__(*args)
|
self._buf_lines.__setslice__(*args)
|
||||||
from copy import copy
|
from copy import copy
|
||||||
_undostate[self.number].append(copy(_buf_lines[self.number]))
|
self._undostate.append(copy(self._buf_lines))
|
||||||
|
|
||||||
def __getslice__(self, *args):
|
def __getslice__(self, *args):
|
||||||
return _buf_lines[self.number].__getslice__(*args)
|
return self._buf_lines.__getslice__(*args)
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return len(_buf_lines[self.number])
|
return len(self._buf_lines)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<buffer ' + str(self.name) + '>'
|
return '<buffer ' + str(self.name) + '>'
|
||||||
@ -514,22 +563,20 @@ class _Buffer(object):
|
|||||||
exec(event, __main__.__dict__)
|
exec(event, __main__.__dict__)
|
||||||
finally:
|
finally:
|
||||||
_abuf = None
|
_abuf = None
|
||||||
if _buf_lines:
|
|
||||||
_buf_lines.pop(bufnr)
|
|
||||||
if _undostate:
|
|
||||||
_undostate.pop(bufnr)
|
|
||||||
if _undo_written:
|
|
||||||
_undo_written.pop(bufnr)
|
|
||||||
|
|
||||||
|
|
||||||
class _Current(object):
|
class _Current(object):
|
||||||
@property
|
@property
|
||||||
def buffer(self):
|
def buffer(self):
|
||||||
return buffers[_buffer()]
|
return self.window.buffer
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def window(self):
|
def window(self):
|
||||||
return windows[_window - 1]
|
return self.tabpage.window
|
||||||
|
|
||||||
|
@property
|
||||||
|
def tabpage(self):
|
||||||
|
return tabpages[_tabpage - 1]
|
||||||
|
|
||||||
|
|
||||||
current = _Current()
|
current = _Current()
|
||||||
@ -549,7 +596,7 @@ def _init():
|
|||||||
for varname, value in globals().items():
|
for varname, value in globals().items():
|
||||||
if varname[0] != '_':
|
if varname[0] != '_':
|
||||||
_dict[varname] = value
|
_dict[varname] = value
|
||||||
_new()
|
_tabnew()
|
||||||
return _dict
|
return _dict
|
||||||
|
|
||||||
|
|
||||||
@ -561,12 +608,14 @@ def _get_segment_info():
|
|||||||
}
|
}
|
||||||
mode = _mode
|
mode = _mode
|
||||||
mode = mode_translations.get(mode, mode)
|
mode = mode_translations.get(mode, mode)
|
||||||
|
window = current.window
|
||||||
|
buffer = current.buffer
|
||||||
return {
|
return {
|
||||||
'window': windows[_window - 1],
|
'window': window,
|
||||||
'winnr': _window,
|
'winnr': window.number,
|
||||||
'buffer': buffers[_buffer()],
|
'buffer': buffer,
|
||||||
'bufnr': _buffer(),
|
'bufnr': buffer.number,
|
||||||
'window_id': _window_ids[_window],
|
'window_id': window._window_id,
|
||||||
'mode': mode,
|
'mode': mode,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -588,85 +637,77 @@ def _start_mode(mode):
|
|||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _undo():
|
def _undo():
|
||||||
if len(_undostate[_buffer()]) == 1:
|
if len(current.buffer._undostate) == 1:
|
||||||
return
|
return
|
||||||
_undostate[_buffer()].pop(-1)
|
buffer = current.buffer
|
||||||
_buf_lines[_buffer()] = _undostate[_buffer()][-1]
|
buffer._undostate.pop(-1)
|
||||||
buf = current.buffer
|
buffer._buf_lines = buffer._undostate[-1]
|
||||||
if _undo_written[_buffer()] == len(_undostate[_buffer()]):
|
if buffer._undo_written == len(buffer._undostate):
|
||||||
buf.options['modified'] = 0
|
buffer.options['modified'] = 0
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _edit(name=None):
|
def _edit(name=None):
|
||||||
global _last_bufnr
|
if current.buffer.name is None:
|
||||||
if _buffer() and buffers[_buffer()].name is None:
|
buffer = current.buffer
|
||||||
buf = buffers[_buffer()]
|
buffer.name = name
|
||||||
buf.name = name
|
|
||||||
else:
|
else:
|
||||||
buf = _Buffer(name)
|
buffer = _Buffer(name)
|
||||||
windows[_window - 1].buffer = buf
|
current.window.buffer = buffer
|
||||||
|
|
||||||
|
|
||||||
|
@_vim
|
||||||
|
def _tabnew(name=None):
|
||||||
|
global windows
|
||||||
|
tabpage = tabpages._new()
|
||||||
|
windows = tabpage.windows
|
||||||
|
_tabpage = len(tabpages)
|
||||||
|
_new(name)
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _new(name=None):
|
def _new(name=None):
|
||||||
global _window
|
current.tabpage._new_window(buffer={'name': name})
|
||||||
_Window(buffer={'name': name})
|
|
||||||
_window = len(windows)
|
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _split():
|
def _split():
|
||||||
global _window
|
current.tabpage._new_window(buffer=current.buffer)
|
||||||
_Window(buffer=buffers[_buffer()])
|
|
||||||
_window = len(windows)
|
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
|
||||||
def _del_window(winnr):
|
|
||||||
win = windows._pop(winnr - 1)
|
|
||||||
_window_ids.pop(winnr)
|
|
||||||
return win
|
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _close(winnr, wipe=True):
|
def _close(winnr, wipe=True):
|
||||||
global _window
|
win = current.tabpage._close_window(winnr)
|
||||||
win = _del_window(winnr)
|
|
||||||
if _window == winnr:
|
|
||||||
_window = len(windows)
|
|
||||||
if wipe:
|
if wipe:
|
||||||
for w in windows:
|
for w in current.tabpage.windows:
|
||||||
if w.buffer.number == win.buffer.number:
|
if w.buffer.number == win.buffer.number:
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
_bw(win.buffer.number)
|
_bw(win.buffer.number)
|
||||||
if not windows:
|
|
||||||
_Window()
|
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _bw(bufnr=None):
|
def _bw(bufnr=None):
|
||||||
bufnr = bufnr or _buffer()
|
bufnr = bufnr or current.buffer.number
|
||||||
winnr = 1
|
winnr = 1
|
||||||
for win in windows:
|
for win in current.tabpage.windows:
|
||||||
if win.buffer.number == bufnr:
|
if win.buffer.number == bufnr:
|
||||||
_close(winnr, wipe=False)
|
_close(winnr, wipe=False)
|
||||||
winnr += 1
|
winnr += 1
|
||||||
buffers.pop(bufnr)
|
buffers._pop(bufnr)
|
||||||
if not buffers:
|
if not buffers:
|
||||||
_Buffer()
|
_Buffer()
|
||||||
_b(max(buffers.keys()))
|
_b(max(buffers._keys()))
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _b(bufnr):
|
def _b(bufnr):
|
||||||
windows[_window - 1].buffer = buffers[bufnr]
|
current.window.buffer = buffers[bufnr]
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _set_cursor(line, col):
|
def _set_cursor(line, col):
|
||||||
windows[_window - 1].cursor = (line, col)
|
current.window.cursor = (line, col)
|
||||||
if _mode == 'n':
|
if _mode == 'n':
|
||||||
_launch_event('CursorMoved')
|
_launch_event('CursorMoved')
|
||||||
elif _mode == 'i':
|
elif _mode == 'i':
|
||||||
@ -675,12 +716,12 @@ def _set_cursor(line, col):
|
|||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _get_buffer():
|
def _get_buffer():
|
||||||
return buffers[_buffer()]
|
return current.buffer
|
||||||
|
|
||||||
|
|
||||||
@_vim
|
@_vim
|
||||||
def _set_bufoption(option, value, bufnr=None):
|
def _set_bufoption(option, value, bufnr=None):
|
||||||
buffers[bufnr or _buffer()].options[option] = value
|
buffers[bufnr or current.buffer.number].options[option] = value
|
||||||
if option == 'filetype':
|
if option == 'filetype':
|
||||||
_launch_event('FileType')
|
_launch_event('FileType')
|
||||||
|
|
||||||
@ -691,7 +732,7 @@ class _WithNewBuffer(object):
|
|||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
self.call()
|
self.call()
|
||||||
self.bufnr = _buffer()
|
self.bufnr = current.buffer.number
|
||||||
return _get_segment_info()
|
return _get_segment_info()
|
||||||
|
|
||||||
def __exit__(self, *args):
|
def __exit__(self, *args):
|
||||||
@ -720,7 +761,7 @@ class _WithBufOption(object):
|
|||||||
self.new = new
|
self.new = new
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
self.buffer = buffers[_buffer()]
|
self.buffer = current.buffer
|
||||||
self.old = _set_dict(self.buffer.options, self.new, _set_bufoption)[0]
|
self.old = _set_dict(self.buffer.options, self.new, _set_bufoption)[0]
|
||||||
|
|
||||||
def __exit__(self, *args):
|
def __exit__(self, *args):
|
||||||
@ -768,7 +809,7 @@ class _WithBufName(object):
|
|||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
import os
|
import os
|
||||||
buffer = buffers[_buffer()]
|
buffer = current.buffer
|
||||||
self.buffer = buffer
|
self.buffer = buffer
|
||||||
self.old = buffer.name
|
self.old = buffer.name
|
||||||
buffer.name = self.new
|
buffer.name = self.new
|
||||||
@ -795,7 +836,7 @@ def _with(key, *args, **kwargs):
|
|||||||
elif key == 'globals':
|
elif key == 'globals':
|
||||||
return _WithDict(vars, **kwargs)
|
return _WithDict(vars, **kwargs)
|
||||||
elif key == 'wvars':
|
elif key == 'wvars':
|
||||||
return _WithDict(windows[_window - 1].vars, **kwargs)
|
return _WithDict(current.window.vars, **kwargs)
|
||||||
elif key == 'environ':
|
elif key == 'environ':
|
||||||
return _WithDict(_environ, **kwargs)
|
return _WithDict(_environ, **kwargs)
|
||||||
elif key == 'split':
|
elif key == 'split':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user