diff --git a/vim/plugin/todo.vim b/vim/plugin/todo.vim deleted file mode 100644 index b9876df..0000000 --- a/vim/plugin/todo.vim +++ /dev/null @@ -1,177 +0,0 @@ -if !exists('g:todo_project_context') - let g:todo_project_context = '' -endif - -command! -nargs=* Todo call Todo() -command! -nargs=+ TodoAdd call TodoAdd() -command! -nargs=* -complete=customlist,CompleteTodoList TodoList call TodoList() -command! -nargs=0 TodoListProjects call TodoListProj() -command! -nargs=0 TodoListContexts call TodoListCon() -nnoremap tl :TodoList -nnoremap ta :TodoAdd - -function! TodoList(args) - let list_args = a:args - if match(list_args, g:todo_project_context) == -1 - let list_args .= " " . g:todo_project_context - endif - call Todo('list ' . list_args) - nnoremap q :q - execute 'nnoremap o :call TodoAddInput():silent TodoList ' . list_args . '' - execute 'nnoremap r :TodoList ' . list_args . '' - execute 'nnoremap d :silent call TodoDoneCurrent():silent TodoList ' . list_args . '' - execute 'nnoremap D :silent call TodoDeleteCurrent():silent TodoList ' . list_args . '' - execute 'nnoremap p :call TodoPriorityCurrent():silent TodoList ' . list_args . '' - execute 'nnoremap P :call TodoAppendProjectCurrent():silent TodoList ' . list_args . '' - execute 'nnoremap C :call TodoAppendContextCurrent():silent TodoList ' . list_args . '' - execute 'nnoremap + :silent call TodoPriorityAdjust(-1):silent TodoList ' . list_args . '' - execute 'nnoremap - :silent call TodoPriorityAdjust(1):silent TodoList ' . list_args . '' -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 - if index == len(priorities) - call TodoAction('pri ' . id . ' ' . priorities[0]) - endif - -endfunction - -function! TodoAddInput() - call inputsave() - let task = input("Task: ") - if len(g:todo_project_context) > 0 - let task .= " " . g:todo_project_context - endif - call inputrestore() - silent call TodoAction('add "' . task . '"') -endfunction -function! TodoCurrentLineId() - let row = split(getline('.')) - return row[0] -endfunction - -function! TodoDoneCurrent() - let id = TodoCurrentLineId() - 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-Z): ", "A") - call inputrestore() - silent call TodoAction('pri ' . id . ' ' . priority) -endfunction - -function! TodoAppendContextCurrent() - let id = TodoCurrentLineId() - call inputsave() - let context = input("Context: ", "@", "customlist,CompleteTodoContexts") - call inputrestore() - silent call TodoAction('append ' . id . ' ' . context) -endfunction - -function! TodoAppendProjectCurrent() - let id = TodoCurrentLineId() - call inputsave() - let project = input("Project: ", "+", "customlist,CompleteTodoProjects") - call inputrestore() - silent call TodoAction('append ' . id . ' ' . project) -endfunction - -function! TodoListProj() - call TodoAction('listproj') -endfunction - -function! TodoListCon() - call TodoAction('listcon') -endfunction - -function! TodoAdd(args) - call TodoAction('add "' . a:args . ' ' . g:todo_project_context . '"') -endfunction - -function! CompleteTodo(type, arg_lead, cmd_line, cursor_pos) - let opts = split(SystemTodo('list' . a:type)) - return filter(opts, 'match(v:val, ''\V'' . a:arg_lead) == 0') -endfunction - -function! CompleteTodoContexts(arg_lead, cmd_line, cursor_pos) - return CompleteTodo('con', a:arg_lead, a:cmd_line, a:cursor_pos) -endfunction - -function! CompleteTodoProjects(arg_lead, cmd_line, cursor_pos) - return CompleteTodo('proj', a:arg_lead, a:cmd_line, a:cursor_pos) -endfunction - -function! CompleteTodoList(arg_lead, cmd_line, cursor_pos) - let opts = [ ] - if !strlen(a:arg_lead) || a:arg_lead =~ '^+' - let opts += CompleteTodoProjects(a:arg_lead, a:cmd_line, a:cursor_pos) - endif - if !strlen(a:arg_lead) || a:arg_lead =~ '^@' - let opts += CompleteTodoContexts(a:arg_lead, a:cmd_line, a:cursor_pos) - endif - return opts -endfunction - -function! TodoAction(args) - echo SystemTodo(a:args) -endfunction - -function! Todo(args) - let todo_output = SystemTodo(a:args) - if !strlen(todo_output) - echo "No output from todo command" - return - endif - call OpenTodoBuffer(todo_output) - setlocal filetype=todo-list -endfunction - -function! s:SystemTodo(args) - let default_args = DefaultTodoArgs() - return system('todo.sh ' . default_args . ' ' . a:args . ' < /dev/null') -endfunction - -function! s:DefaultTodoArgs() - let args = '-p' - if exists('g:todotxt_cfg_file') && strlen(g:todotxt_cfg_file) - args += ' -d ' . g:todotxt_cfg_file - endif - return args -endfunction - -function! s:OpenTodoBuffer(content) - if exists('b:is_todo_output_buffer') && b:is_todo_output_buffer - enew! - else - 10new - endif - setlocal buftype=nofile readonly modifiable - silent put=a:content - keepjumps 0d - setlocal nomodifiable - setlocal winfixheight - let b:is_todo_output_buffer = 1 -endfunction diff --git a/vim/syntax/todo-list.vim b/vim/syntax/todo-list.vim deleted file mode 100644 index b8974c0..0000000 --- a/vim/syntax/todo-list.vim +++ /dev/null @@ -1,29 +0,0 @@ -if exists("b:current_syntax") - finish -endif - -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 todoItemContext /@[^ ]\+/ contained -syntax match todoItemText /^\d\+ .*$/ contains=todoItemID,todoItemProject,todoItemContext,todoItemPriority,todoItemPriorityA,todoItemPriorityB,todoItemPriorityC -syntax match todoItemSeparator +--+ -syntax match todoItemSummary /^TODO:.*/ - -hi link todoItemID Statement -hi link todoItemProject Identifier -hi link todoItemContext Type -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 todoItemSummary Ignore - -let b:current_syntax = "todo-list"