1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 14:50:04 +08:00
SpaceVim/bundle/vim-mundo/autoload/mundo/util.py

51 lines
1.4 KiB
Python
Raw Normal View History

2020-10-31 15:52:34 +08:00
# import vim
normal = lambda s: vim().command('normal %s' % s)
normal_silent = lambda s: vim().command('silent! normal %s' % s)
def vim():
""" call Vim.
This is wrapped so that it can easily be mocked.
"""
import vim
return vim
def _goto_window_for_buffer(expr):
""" Moves the cursor to the first window associated with buffer b in the
current tab page (only).
Arguments
---------
expr : int or str
The target buffer - either a buffer number (int) or a file-pattern
(str). See :h bufwinnr for a more detailed description.
"""
if not isinstance(expr, int) and not isinstance(expr, str):
raise TypeError('b has invalid type, str or int expected.')
if isinstance(expr, str):
expr = "'{0}'".format(expr)
winnr = int(vim().eval('bufwinnr({0})'.format(expr)))
assert winnr != -1
vim().command('%dwincmd w' % int(winnr))
# Rendering utility functions
def _output_preview_text(lines):
""" Output a list of lines to the mundo preview window. """
_goto_window_for_buffer('__Mundo_Preview__')
vim().command('setlocal modifiable')
vim().current.buffer[:] = [line.rstrip() for line in lines]
vim().command('setlocal nomodifiable')
def _undo_to(n):
n = int(n)
if n == 0:
vim().command('silent earlier %s' % (int(vim().eval('&undolevels')) + 1))
else:
vim().command('silent undo %d' % int(n))