Skip to content

Commit 8509141

Browse files
committed
fix broken indentation of the first checkbox of a heading
1 parent ff64acf commit 8509141

File tree

2 files changed

+29
-19
lines changed

2 files changed

+29
-19
lines changed

ftplugin/orgmode/plugins/EditCheckbox.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,11 @@ def new_checkbox(cls, below=None):
4141
nc._heading = h
4242

4343
# default checkbox level
44-
level = h.level
44+
level = h.level + 1
4545
start = vim.current.window.cursor[0] - 1
4646
# if no checkbox is found, insert at current line with indent level=1
4747
if c is None:
48-
if h.checkboxes:
49-
level = h.first_checkbox.level
50-
h.checkboxes.append(nc)
48+
h.checkboxes.append(nc)
5149
else:
5250
l = c.get_parent_list()
5351
idx = c.get_index_in_parent_list()
@@ -94,12 +92,12 @@ def new_checkbox(cls, below=None):
9492
vim.current.window.cursor = (start + 1, 0)
9593

9694
if below:
97-
vim.command("normal o")
95+
vim.command(u"normal! o")
9896
else:
99-
vim.command("normal O")
97+
vim.command(u"normal! O")
10098

101-
insert_at_cursor(str(nc))
102-
vim.command("call feedkeys('a')")
99+
insert_at_cursor(unicode(nc))
100+
vim.command(u"call feedkeys('a')")
103101

104102
@classmethod
105103
def toggle(cls, checkbox=None):
@@ -197,7 +195,7 @@ def _update_checkboxes_status(cls, checkbox=None):
197195
current_status = None
198196
# the checkbox needs to have status
199197
else:
200-
total += 1
198+
total += 1
201199

202200
# count number of status in this checkbox level
203201
if current_status == Checkbox.STATUS_OFF:

tests/test_plugin_edit_checkbox.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,54 +54,66 @@ def setUp(self):
5454
2. [ ] another main task
5555
""".split(u'\n')
5656

57+
self.c4 = u"""
58+
* heading
59+
""".split(u'\n')
60+
5761
def test_toggle(self):
5862
global bufnr
5963
bufnr += 1
6064
# test on self.c1
6165
set_vim_buffer(buf=self.c1, cursor=(6, 0), bufnr=bufnr)
6266
# update_checkboxes_status
6367
self.editcheckbox.update_checkboxes_status()
64-
self.assertEqual(vim.current.buffer[1], "* heading1 [0%]")
68+
self.assertEqual(vim.current.buffer[1], u"* heading1 [0%]")
6569
# toggle
6670
self.editcheckbox.toggle()
67-
self.assertEqual(vim.current.buffer[5], " - [X] checkbox4")
71+
self.assertEqual(vim.current.buffer[5], u" - [X] checkbox4")
6872

6973
bufnr += 1
7074
set_vim_buffer(buf=self.c1, cursor=(9, 0), bufnr=bufnr)
7175
# toggle and check checkbox status
7276
self.editcheckbox.toggle()
73-
self.assertEqual(vim.current.buffer[8], " - [X] checkbox7")
74-
self.assertEqual(vim.current.buffer[7], " - [-] checkbox6")
75-
self.assertEqual(vim.current.buffer[6], " - [-] checkbox5")
77+
self.assertEqual(vim.current.buffer[8], u" - [X] checkbox7")
78+
self.assertEqual(vim.current.buffer[7], u" - [-] checkbox6")
79+
self.assertEqual(vim.current.buffer[6], u" - [-] checkbox5")
7680

7781
# new_checkbox
7882
vim.current.window.cursor = (10, 0)
7983
self.editcheckbox.new_checkbox(below=True)
80-
self.assertEqual(vim.current.buffer[10], ' - [ ] ')
84+
self.assertEqual(vim.current.buffer[10], u' - [ ] ')
8185
self.editcheckbox.update_checkboxes_status()
8286

8387
def test_no_status_checkbox(self):
8488
global bufnr
8589
bufnr += 1
8690
# test on self.c2
8791
set_vim_buffer(buf=self.c2, bufnr=bufnr)
88-
self.assertEqual(vim.current.buffer[2], " - checkbox [0%]")
92+
self.assertEqual(vim.current.buffer[2], u" - checkbox [0%]")
8993
# toggle
9094
vim.current.window.cursor = (4, 0)
9195
self.editcheckbox.toggle()
92-
self.assertEqual(vim.current.buffer[3], " - [X] test1")
96+
self.assertEqual(vim.current.buffer[3], u" - [X] test1")
9397

9498
# self.editcheckbox.update_checkboxes_status()
9599
# see if the no status checkbox update its status
96-
self.assertEqual(vim.current.buffer[2], " - checkbox [33%]")
100+
self.assertEqual(vim.current.buffer[2], u" - checkbox [33%]")
97101

98102
def test_number_list(self):
99103
global bufnr
100104
bufnr += 1
101105
set_vim_buffer(buf=self.c3, bufnr=bufnr)
102106
vim.current.window.cursor = (6, 0)
103107
self.editcheckbox.toggle()
104-
self.assertEqual(vim.current.buffer[5], " 2. [X] another main task")
108+
self.assertEqual(vim.current.buffer[5], u" 2. [X] another main task")
109+
110+
def test_new_checkbox(self):
111+
global bufnr
112+
bufnr += 1
113+
set_vim_buffer(buf=self.c4, bufnr=bufnr)
114+
vim.current.window.cursor = (3, 1)
115+
self.editcheckbox.new_checkbox(below=True)
116+
self.assertEqual(vim.current.buffer[2], u" - [ ] ")
105117

106118

107119
def suite():

0 commit comments

Comments
 (0)