Skip to content

Commit 5917e57

Browse files
committed
Merge pull request #48 from equalsraf/tb-buffer-delitem
Support Buffer.__delitem__()
2 parents 3f01963 + dfd443f commit 5917e57

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

neovim/api/buffer.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,16 @@ def __iter__(self):
9393
for line in lines:
9494
yield line
9595

96+
def __delitem__(self, idx):
97+
"""Delete line or slice of lines from the buffer.
98+
99+
This is the same as __setitem__(idx, [])
100+
"""
101+
if not isinstance(idx, slice):
102+
self.__setitem__(idx, None)
103+
else:
104+
self.__setitem__(idx, [])
105+
96106
def get_line_slice(self, start, stop, start_incl, end_incl):
97107
"""More flexible wrapper for retrieving slices."""
98108
return self._session.request('buffer_get_line_slice', self, start,

test/test_buffer.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ def test_get_set_del_line():
2727
eq(vim.current.buffer[0], 'line2')
2828
vim.current.buffer[0] = None
2929
eq(vim.current.buffer[0], '')
30+
# __delitem__
31+
vim.current.buffer[:] = ['line1', 'line2', 'line3']
32+
eq(vim.current.buffer[2], 'line3')
33+
del vim.current.buffer[0]
34+
eq(vim.current.buffer[0], 'line2')
35+
eq(vim.current.buffer[1], 'line3')
36+
del vim.current.buffer[-1]
37+
eq(vim.current.buffer[0], 'line2')
38+
eq(len(vim.current.buffer), 1)
3039

3140

3241
@with_setup(setup=cleanup)
@@ -49,6 +58,15 @@ def test_get_set_del_slice():
4958
eq(vim.current.buffer[:], ['a', 'b', 'c'])
5059
vim.current.buffer[:] = None
5160
eq(vim.current.buffer[:], [''])
61+
# __delitem__
62+
vim.current.buffer[:] = ['a', 'b', 'c']
63+
del vim.current.buffer[:]
64+
eq(vim.current.buffer[:], [''])
65+
vim.current.buffer[:] = ['a', 'b', 'c']
66+
del vim.current.buffer[:1]
67+
eq(vim.current.buffer[:], ['b', 'c'])
68+
del vim.current.buffer[:-1]
69+
eq(vim.current.buffer[:], ['c'])
5270

5371

5472
@with_setup(setup=cleanup)

0 commit comments

Comments
 (0)