added some additional mappings, plus a project context

This commit is contained in:
Brian Phillips
2009-12-02 14:37:36 -06:00
parent 9a56bdd4ed
commit b8ced51a22
2 changed files with 64 additions and 13 deletions

View File

@@ -1,20 +1,56 @@
if !exists('g:todo_project_context')
let g:todo_project_context = ''
endif
command! -nargs=* Todo call Todo(<q-args>) command! -nargs=* Todo call Todo(<q-args>)
command! -nargs=+ TodoAdd call TodoAdd(<q-args>) command! -nargs=+ TodoAdd call TodoAdd(<q-args>)
command! -nargs=* -complete=customlist,CompleteTodoList TodoList call TodoList(<q-args>) command! -nargs=* -complete=customlist,CompleteTodoList TodoList call TodoList(<q-args>)
command! -nargs=0 TodoListProjects call TodoListProj() command! -nargs=0 TodoListProjects call TodoListProj()
command! -nargs=0 TodoListContexts call TodoListCon() command! -nargs=0 TodoListContexts call TodoListCon()
nnoremap <Leader>tl :TodoList<ENTER> nnoremap <Leader>tl :TodoList<ENTER>
nnoremap <Leader>ta :TodoAdd
function! TodoList(args) function! TodoList(args)
call Todo('list ' . a:args) let list_args = a:args . ' ' . g:todo_project_context
call Todo('list ' . list_args)
nnoremap <buffer> q :q<ENTER> nnoremap <buffer> q :q<ENTER>
execute 'nnoremap <buffer> r :silent TodoList ' . a:args . '<ENTER>' execute 'nnoremap <buffer> o :call TodoAddInput()<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> d :silent call TodoDoneCurrent()<ENTER>:silent TodoList ' . a:args . '<ENTER>' execute 'nnoremap <buffer> r :silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> p :call TodoPriorityCurrent()<ENTER>:silent TodoList ' . a:args . '<ENTER>' execute 'nnoremap <buffer> d :silent call TodoDoneCurrent()<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> P :call TodoAppendProjectCurrent()<ENTER>:silent TodoList ' . a:args . '<ENTER>' execute 'nnoremap <buffer> D :silent call TodoDeleteCurrent()<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> C :call TodoAppendContextCurrent()<ENTER>:silent TodoList ' . a:args . '<ENTER>' execute 'nnoremap <buffer> p :call TodoPriorityCurrent()<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> P :call TodoAppendProjectCurrent()<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> C :call TodoAppendContextCurrent()<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> + :silent call TodoPriorityAdjust(1)<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> - :silent call TodoPriorityAdjust(-1)<ENTER>:silent TodoList ' . list_args . '<ENTER>'
endfunction endfunction
function! TodoPriorityAdjust(amount)
let id = TodoCurrentLineId()
let item = getline('.')
let priorities = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
let index = 0
while index < len(priorities)
let p = priorities[index]
if match(item, "(" . p . ")") > -1
if index + a:amount >= len(priorities)
call TodoAction('pri ' . id . ' ' . priorities[0])
else
call TodoAction('pri ' . id . ' ' . priorities[index + a:amount])
endif
break
endif
let index += 1
endwhile
endfunction
function! TodoAddInput()
call inputsave()
let task = input("Task: ")
call inputrestore()
call TodoAction('add "' . task . '"')
endfunction
function! TodoCurrentLineId() function! TodoCurrentLineId()
let row = split(getline('.')) let row = split(getline('.'))
return row[0] return row[0]
@@ -25,10 +61,15 @@ function! TodoDoneCurrent()
call TodoAction('do ' . id) call TodoAction('do ' . id)
endfunction endfunction
function! TodoDeleteCurrent()
let id = TodoCurrentLineId()
call TodoAction('rm ' . id)
endfunction
function! TodoPriorityCurrent() function! TodoPriorityCurrent()
let id = TodoCurrentLineId() let id = TodoCurrentLineId()
call inputsave() call inputsave()
let priority = input("Priority?", "A") let priority = input("Priority (A-Z): ", "A")
call inputrestore() call inputrestore()
call TodoAction('pri ' . id . ' ' . priority) call TodoAction('pri ' . id . ' ' . priority)
endfunction endfunction
@@ -58,7 +99,7 @@ function! TodoListCon()
endfunction endfunction
function! TodoAdd(args) function! TodoAdd(args)
call TodoAction('add "' . a:args . '"') call TodoAction('add "' . a:args . ' ' . g:todo_project_context . '"')
endfunction endfunction
function! CompleteTodo(type, arg_lead, cmd_line, cursor_pos) function! CompleteTodo(type, arg_lead, cmd_line, cursor_pos)
@@ -105,9 +146,9 @@ function! s:SystemTodo(args)
endfunction endfunction
function! s:DefaultTodoArgs() function! s:DefaultTodoArgs()
let args = "" let args = '-p'
if exists('g:todotxt_cfg_file') && strlen(g:todotxt_cfg_file) if exists('g:todotxt_cfg_file') && strlen(g:todotxt_cfg_file)
args += '-d ' . g:todotxt_cfg_file args += ' -d ' . g:todotxt_cfg_file
endif endif
return args return args
endfunction endfunction

View File

@@ -3,16 +3,26 @@ if exists("b:current_syntax")
endif endif
syntax match todoItemID /^\d\+/ contained syntax match todoItemID /^\d\+/ contained
syntax match todoItemPriorityA /(A)/ contained
syntax match todoItemPriorityB /(B)/ contained
syntax match todoItemPriorityC /(C)/ contained
syntax match todoItemPriority /([D-Z])/ contained
syntax match todoItemProject /+[^ ]\+/ contained syntax match todoItemProject /+[^ ]\+/ contained
syntax match todoItemContext /@[^ ]\+/ contained syntax match todoItemContext /@[^ ]\+/ contained
syntax match todoItemText /^\d\+ .*$/ contains=todoItemID,todoItemProject,todoItemContext syntax match todoItemText /^\d\+ .*$/ contains=todoItemID,todoItemProject,todoItemContext,todoItemPriority,todoItemPriorityA,todoItemPriorityB,todoItemPriorityC
syntax match todoItemSeparator +--+ syntax match todoItemSeparator +--+
syntax match todoItemSummary /^TODO:.*/ syntax match todoItemSummary /^TODO:.*/
hi link todoItemID Statement hi link todoItemID Statement
hi link todoItemProject SpecialKey hi link todoItemProject Identifier
hi link todoItemContext Title hi link todoItemContext Type
hi link todoItemText Comment hi link todoItemText Comment
hi link todoItemPriority Constant
hi link todoItemPriorityA Todo
hi link todoItemPriorityB Visual
hi link todoItemPriorityC DiffAdd
hi link todoItemSeparator Ignore hi link todoItemSeparator Ignore
hi link todoItemSummary Ignore hi link todoItemSummary Ignore