diff --git a/README.markdown b/README.markdown index a70d1be..51a835d 100644 --- a/README.markdown +++ b/README.markdown @@ -95,7 +95,7 @@ adding the next lines to your vimrc: The TodoComplete function is designed to complete projects (starting by '+') and context (starting by '@'). If you use it on a regular word, it will do a -normal buffer completion. +normal keyword completion (on all buffers). If you try to complete a project, it will propose all projects in all open buffers and for each of them, it will show their context and the name of the buffers in which they appears in the preview window. @@ -125,3 +125,6 @@ sorted by at the beginning of the file, the rest of the file is not modified. `x` is a toggle which allow you to unmark a task as done. Syntax highlighting for couples key:value + +If the current buffer is a done.txt file, the basic sort sorts on completion +date. diff --git a/doc/todo.txt b/doc/todo.txt index 15e036b..15d62e2 100644 --- a/doc/todo.txt +++ b/doc/todo.txt @@ -86,7 +86,7 @@ COMPLETION *todo-complete* The TodoComplete function is designed to complete projects (starting by '+') and context (starting by '@'). If you use it on a regular word, it will do a -normal buffer completion. +normal keyword completion (on all buffers). If you try to complete a project, it will propose all projects in all open buffers and for each of them, it will show their context and the name of the buffers in which they appears in the preview window. diff --git a/ftplugin/todo.vim b/ftplugin/todo.vim index ccbd368..edf1dfb 100644 --- a/ftplugin/todo.vim +++ b/ftplugin/todo.vim @@ -3,7 +3,7 @@ " Author: David Beniamine , Leandro Freitas " License: Vim license " Website: http://github.com/dbeniamine/todo.txt-vim -" Version: 0.7 +" Version: 0.7.1 " Save context {{{1 let s:save_cpo = &cpo @@ -79,9 +79,15 @@ endfunction function! TodoTxtSort() " vim :sort is usually stable " we sort first on contexts, then on projects and then on priority - sort /@[a-zA-Z]*/ r - ssort /+[a-zA-Z]*/ r - sort /\v\([A-Z]\)/ r + if expand('%')=~'done.txt' + silent! %s/\(x\s*\d\{4}\)-\(\d\{2}\)-\(\d\{2}\)/\1\2\3/g + sort n /^x\s*/ + silent! %s/\(x\s*\d\{4}\)\(\d\{2}\)/\1-\2-/g + else + sort /@[a-zA-Z]*/ r + sort /+[a-zA-Z]*/ r + sort /\v\([A-Z]\)/ r + endif endfunction function! TodoTxtSortDue() @@ -269,6 +275,24 @@ function! TodoFoldText() \ . ' Completed tasks ' endfunction +" Simple keyword completion on all buffers +function! TodoKeywordComplete(base) + " Search for matchs + let res = [] + for bufnr in range(1,bufnr('$')) + let lines=getbufline(bufnr,1,"$") + for line in lines + if line =~ a:base + " init temporary item + let item={} + let item.word=substitute(line,'.*\('.a:base.'\S*\).*','\1',"") + call add(res,item) + endif + endfor + endfor + return res +endfunction + " Intelligent completion for projects and Contexts fun! TodoComplete(findstart, base) if a:findstart @@ -279,6 +303,9 @@ fun! TodoComplete(findstart, base) endwhile return start else + if a:base !~ '^+' && a:base !~ '^@' + return TodoKeywordComplete(a:base) + endif " Opposite sign let opp=a:base=~'+'?'@':'+' " Search for matchs