aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--autoload/todo/motion.vim30
-rw-r--r--ftplugin/todo.vim42
2 files changed, 68 insertions, 4 deletions
diff --git a/autoload/todo/motion.vim b/autoload/todo/motion.vim
index 82dd092..ea97b16 100644
--- a/autoload/todo/motion.vim
+++ b/autoload/todo/motion.vim
@@ -14,26 +14,48 @@
" along with Twodo. If not, see <http://www.gnu.org/licenses/>.
let s:INCOMPLETE_MATCHER = '^\s*[\-_!] '
+let s:REGULAR_MATCHER = '^\s*- '
+let s:IMPORTANT_MATCHER = '^\s*! '
-function! s:Incomplete(extra_search_flags)
+function! s:Search(pattern, extra_search_flags)
let cnt = v:count1
let search_flags = 's' . a:extra_search_flags
let i = 0
while i < cnt
- call search(s:INCOMPLETE_MATCHER, search_flags)
+ call search(a:pattern, search_flags)
let i += 1
endwhile
endfunction
function! todo#motion#NextIncomplete()
- call s:Incomplete('')
+ call s:Search(s:INCOMPLETE_MATCHER, '')
endfunction
function! todo#motion#PreviousIncomplete()
- call s:Incomplete('b')
+ call s:Search(s:INCOMPLETE_MATCHER, 'b')
+endfunction
+
+
+function! todo#motion#NextRegular()
+ call s:Search(s:REGULAR_MATCHER, '')
+endfunction
+
+
+function! todo#motion#PreviousRegular()
+ call s:Search(s:REGULAR_MATCHER, 'b')
+endfunction
+
+
+function! todo#motion#NextImportant()
+ call s:Search(s:IMPORTANT_MATCHER, '')
+endfunction
+
+
+function! todo#motion#PreviousImportant()
+ call s:Search(s:IMPORTANT_MATCHER, 'b')
endfunction
diff --git a/ftplugin/todo.vim b/ftplugin/todo.vim
index e1b3ddb..9ad32dd 100644
--- a/ftplugin/todo.vim
+++ b/ftplugin/todo.vim
@@ -36,6 +36,16 @@ nnoremap <silent> <buffer> <Plug>TwodoPreviousIncomplete :<c-u>call todo#motion#
onoremap <silent> <buffer> <Plug>TwodoNextIncomplete :<c-u>call todo#motion#NextIncomplete()<cr>
onoremap <silent> <buffer> <Plug>TwodoPreviousIncomplete :<c-u>call todo#motion#PreviousIncomplete()<cr>
+nnoremap <silent> <buffer> <Plug>TwodoNextRegular :<c-u>call todo#motion#NextRegular()<cr>
+nnoremap <silent> <buffer> <Plug>TwodoPreviousRegular :<c-u>call todo#motion#PreviousRegular()<cr>
+onoremap <silent> <buffer> <Plug>TwodoNextRegular :<c-u>call todo#motion#NextRegular()<cr>
+onoremap <silent> <buffer> <Plug>TwodoPreviousRegular :<c-u>call todo#motion#PreviousRegular()<cr>
+
+nnoremap <silent> <buffer> <Plug>TwodoNextImportant :<c-u>call todo#motion#NextImportant()<cr>
+nnoremap <silent> <buffer> <Plug>TwodoPreviousImportant :<c-u>call todo#motion#PreviousImportant()<cr>
+onoremap <silent> <buffer> <Plug>TwodoNextImportant :<c-u>call todo#motion#NextImportant()<cr>
+onoremap <silent> <buffer> <Plug>TwodoPreviousImportant :<c-u>call todo#motion#PreviousImportant()<cr>
+
if !hasmapto('<Plug>TwodoNewTodoBelow') && !maparg('<LocalLeader>n', 'n')
nmap <silent> <buffer> <LocalLeader>n <Plug>TwodoNewTodoBelow
endif
@@ -83,3 +93,35 @@ endif
if !hasmapto('<Plug>TwodoPreviousIncomplete', 'o') && !maparg('[u', 'o')
omap <buffer> [u <Plug>TwodoPreviousIncomplete
endif
+
+if !hasmapto('<Plug>TwodoNextRegular', 'n') && !maparg(']o', 'n')
+ nmap <buffer> ]o <Plug>TwodoNextRegular
+endif
+
+if !hasmapto('<Plug>TwodoNextRegular', 'o') && !maparg(']o', 'o')
+ omap <buffer> ]o <Plug>TwodoNextRegular
+endif
+
+if !hasmapto('<Plug>TwodoPreviousRegular', 'n') && !maparg('[o', 'n')
+ nmap <buffer> [o <Plug>TwodoPreviousRegular
+endif
+
+if !hasmapto('<Plug>TwodoPreviousRegular', 'o') && !maparg('[o', 'o')
+ omap <buffer> [o <Plug>TwodoPreviousRegular
+endif
+
+if !hasmapto('<Plug>TwodoNextImportant', 'n') && !maparg(']y', 'n')
+ nmap <buffer> ]y <Plug>TwodoNextImportant
+endif
+
+if !hasmapto('<Plug>TwodoNextImportant', 'o') && !maparg(']y', 'o')
+ omap <buffer> ]y <Plug>TwodoNextImportant
+endif
+
+if !hasmapto('<Plug>TwodoPreviousImportant', 'n') && !maparg('[y', 'n')
+ nmap <buffer> [y <Plug>TwodoPreviousImportant
+endif
+
+if !hasmapto('<Plug>TwodoPreviousImportant', 'o') && !maparg('[y', 'o')
+ omap <buffer> [y <Plug>TwodoPreviousImportant
+endif