aboutsummaryrefslogtreecommitdiffhomepage
path: root/.vim/my/indent/todolist.vim
diff options
context:
space:
mode:
Diffstat (limited to '.vim/my/indent/todolist.vim')
-rw-r--r--.vim/my/indent/todolist.vim32
1 files changed, 32 insertions, 0 deletions
diff --git a/.vim/my/indent/todolist.vim b/.vim/my/indent/todolist.vim
new file mode 100644
index 0000000..0640a93
--- /dev/null
+++ b/.vim/my/indent/todolist.vim
@@ -0,0 +1,32 @@
+if exists('b:did_indent')
+ finish
+endif
+
+
+setlocal indentexpr=TodolistIndent()
+
+
+function! TodolistIndent()
+ if v:lnum == 0
+ return 0
+ endif
+
+ let line = getline(v:lnum - 1)
+ if s:starts_with_checkbox(line)
+ return indent(v:lnum - 1)
+ else
+ return 0
+ endif
+endfunction
+
+
+function! s:starts_with_checkbox(line)
+ if a:line =~# '^\s*\[[ x]\]'
+ return 1
+ else
+ return 0
+ endif
+endfunction
+
+
+let b:did_indent = 1