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=+ TodoAdd call TodoAdd(<q-args>)
command! -nargs=* -complete=customlist,CompleteTodoList TodoList call TodoList(<q-args>)
command! -nargs=0 TodoListProjects call TodoListProj()
command! -nargs=0 TodoListContexts call TodoListCon()
nnoremap <Leader>tl :TodoList<ENTER>
nnoremap <Leader>ta :TodoAdd
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>
execute 'nnoremap <buffer> r :silent TodoList ' . a:args . '<ENTER>'
execute 'nnoremap <buffer> d :silent call TodoDoneCurrent()<ENTER>:silent TodoList ' . a:args . '<ENTER>'
execute 'nnoremap <buffer> p :call TodoPriorityCurrent()<ENTER>:silent TodoList ' . a:args . '<ENTER>'
execute 'nnoremap <buffer> P :call TodoAppendProjectCurrent()<ENTER>:silent TodoList ' . a:args . '<ENTER>'
execute 'nnoremap <buffer> C :call TodoAppendContextCurrent()<ENTER>:silent TodoList ' . a:args . '<ENTER>'
execute 'nnoremap <buffer> o :call TodoAddInput()<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> r :silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> d :silent call TodoDoneCurrent()<ENTER>:silent TodoList ' . list_args . '<ENTER>'
execute 'nnoremap <buffer> D :silent call TodoDeleteCurrent()<ENTER>:silent TodoList ' . list_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
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()
let row = split(getline('.'))
return row[0]
@@ -25,10 +61,15 @@ function! TodoDoneCurrent()
call TodoAction('do ' . id)
endfunction
function! TodoDeleteCurrent()
let id = TodoCurrentLineId()
call TodoAction('rm ' . id)
endfunction
function! TodoPriorityCurrent()
let id = TodoCurrentLineId()
call inputsave()
let priority = input("Priority?", "A")
let priority = input("Priority (A-Z): ", "A")
call inputrestore()
call TodoAction('pri ' . id . ' ' . priority)
endfunction
@@ -58,7 +99,7 @@ function! TodoListCon()
endfunction
function! TodoAdd(args)
call TodoAction('add "' . a:args . '"')
call TodoAction('add "' . a:args . ' ' . g:todo_project_context . '"')
endfunction
function! CompleteTodo(type, arg_lead, cmd_line, cursor_pos)
@@ -105,9 +146,9 @@ function! s:SystemTodo(args)
endfunction
function! s:DefaultTodoArgs()
let args = ""
let args = '-p'
if exists('g:todotxt_cfg_file') && strlen(g:todotxt_cfg_file)
args += '-d ' . g:todotxt_cfg_file
args += ' -d ' . g:todotxt_cfg_file
endif
return args
endfunction