From a446220add4b95f830571a3cd35a836c7a596ff0 Mon Sep 17 00:00:00 2001 From: Wang Shidong Date: Thu, 11 Jul 2019 18:26:29 +0800 Subject: [PATCH] Improve todo manager (#2942) --- .SpaceVim.d/autoload/SpaceVim/dev/todo.vim | 13 ++++++++++--- .SpaceVim.d/init.vim | 5 +++++ .SpaceVim.d/syntax/SpaceVimTodoManager.vim | 4 ++++ config/plugins/neomake.vim | 6 +++--- config/plugins/nerdtree.vim | 2 +- config/plugins/vim-airline.vim | 2 +- lua/spacevim/api/Data/dict.lua | 0 lua/spacevim/api/Data/list.lua | 12 ++++++++++++ lua/spacevim/api/Data/string.lua | 1 + test/config/LeaderF.vader | 4 ++++ test/config/goyo.vader | 2 ++ test/config/java_getset.vader | 3 +++ test/config/neomake.vader | 3 +++ test/config/nerdtree.vader | 3 +++ test/config/vim-airline.vader | 3 +++ test/config/vim-ref.vader | 4 ++++ 16 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 lua/spacevim/api/Data/dict.lua create mode 100644 lua/spacevim/api/Data/list.lua create mode 100644 test/config/LeaderF.vader create mode 100644 test/config/goyo.vader create mode 100644 test/config/java_getset.vader create mode 100644 test/config/neomake.vader create mode 100644 test/config/nerdtree.vader create mode 100644 test/config/vim-airline.vader create mode 100644 test/config/vim-ref.vader diff --git a/.SpaceVim.d/autoload/SpaceVim/dev/todo.vim b/.SpaceVim.d/autoload/SpaceVim/dev/todo.vim index 7102ee6cf..9ff2bd592 100644 --- a/.SpaceVim.d/autoload/SpaceVim/dev/todo.vim +++ b/.SpaceVim.d/autoload/SpaceVim/dev/todo.vim @@ -9,8 +9,8 @@ let s:JOB = SpaceVim#api#import('job') let s:BUFFER = SpaceVim#api#import('vim#buffer') - -let s:labels = map(['todo', 'fixme'], '"@" . v:val') +" @question any other recommanded tag? +let s:labels = map(['fixme', 'question', 'todo', 'idea'], '"@" . v:val') function! SpaceVim#dev#todo#list() abort call s:open_win() @@ -37,7 +37,7 @@ function! s:update_todo_content() abort let s:todos = [] let s:todo = {} " @fixme fix the rg command for todo manager - let argv = ['rg','--hidden', '--no-heading', '--color=never', '--with-filename', '--line-number', '--column', '-e', join(s:labels, '|'), '.'] + let argv = ['rg','--hidden', '--no-heading', '-g', '!.git', '--color=never', '--with-filename', '--line-number', '--column', '-e', join(s:labels, '|'), '.'] call SpaceVim#logger#info('todo cmd:' . string(argv)) let jobid = s:JOB.start(argv, { \ 'on_stdout' : function('s:stdout'), @@ -56,6 +56,7 @@ function! s:stdout(id, data, event) abort let column = matchstr(data, '\(:\d\+\)\@<=:\d\+:')[1:-2] let lebal = matchstr(data, join(s:labels, '\|')) let title = split(data, lebal)[1] + " @todo add time tag call add(s:todos, \ { \ 'file' : file, @@ -75,6 +76,7 @@ endfunction function! s:exit(id, data, event ) abort call SpaceVim#logger#info('todomanager exit: ' . string(a:data)) + let s:todos = sort(s:todos, function('s:compare_todo')) let label_w = max(map(deepcopy(s:todos), 'strlen(v:val.lebal)')) let file_w = max(map(deepcopy(s:todos), 'strlen(v:val.file)')) let expr = "v:val.lebal . repeat(' ', label_w - strlen(v:val.lebal)) . ' ' ." @@ -84,6 +86,11 @@ function! s:exit(id, data, event ) abort call s:BUFFER.buf_set_lines(s:bufnr, 0 , -1, 0, lines) endfunction +function! s:compare_todo(a, b) abort + let a = index(s:labels, a:a.lebal) + let b = index(s:labels, a:b.lebal) + return a == b ? 0 : a > b ? 1 : -1 +endfunction function! s:open_todo() abort let todo = s:todos[line('.') - 1] diff --git a/.SpaceVim.d/init.vim b/.SpaceVim.d/init.vim index 53456163d..093d29e5a 100644 --- a/.SpaceVim.d/init.vim +++ b/.SpaceVim.d/init.vim @@ -16,6 +16,11 @@ call SpaceVim#custom#SPC('nnoremap', ['a', 'o'], 'call SpaceVim#dev#todo#list()' let &runtimepath .= ',' . fnamemodify(g:_spacevim_root_dir, ':p:h') . '/build/vader' +augroup vader_filetype + autocmd! + autocmd FileType vader-result setlocal nobuflisted +augroup END + " vader language specific key bindings function! s:language_specified_mappings() abort diff --git a/.SpaceVim.d/syntax/SpaceVimTodoManager.vim b/.SpaceVim.d/syntax/SpaceVimTodoManager.vim index 81c604172..3805a608c 100644 --- a/.SpaceVim.d/syntax/SpaceVimTodoManager.vim +++ b/.SpaceVim.d/syntax/SpaceVimTodoManager.vim @@ -6,6 +6,8 @@ syntax case ignore syn match FileName /\(@[a-zA-Z]*\s\+\)\@<=[^ ]*/ syn match TODOTAG /^\s*@[a-zA-Z]*/ +syn match TODOQUESTION /^\s*@ques[a-z]*/ +syn match TODOFIXME /^\s*@fixm[a-z]*/ " syn match TODOCHECKBOX /[\d\+/\d\+\]/ syn match TODOINDEX /^\s\+\d\+\.\s/ syn match TODOCHECKBOXPANDING /\s\+โˆš\s\+/ @@ -14,3 +16,5 @@ syn match TODOCHECKBOXNOTE /\s\+ยท\s\+/ syn match TODODUETIME /\d\+[d]$\|\d\+[d]\s\*$/ hi def link FileName Comment hi def link TODOTAG Todo +hi def link TODOQUESTION Question +hi def link TODOFIXME ErrorMsg diff --git a/config/plugins/neomake.vim b/config/plugins/neomake.vim index f7a229020..6ef77b4b1 100644 --- a/config/plugins/neomake.vim +++ b/config/plugins/neomake.vim @@ -21,14 +21,14 @@ let g:neomake_verbose = get(g:, 'neomake_verbose', 0) let g:neomake_java_javac_delete_output = get(g:, 'neomake_java_javac_delete_output', 0) let g:neomake_error_sign = get(g:, 'neomake_error_sign', { \ 'text': get(g:, 'spacevim_error_symbol', 'โœ–'), - \ 'texthl': (g:spacevim_colorscheme ==# 'gruvbox' ? 'GruvboxRedSign' : 'error'), + \ 'texthl': (get(g:, 'spacevim_colorscheme', 'gruvbox') ==# 'gruvbox' ? 'GruvboxRedSign' : 'error'), \ }) let g:neomake_warning_sign = get(g:, 'neomake_warning_sign', { \ 'text': get(g:,'spacevim_warning_symbol', 'โžค'), - \ 'texthl': (g:spacevim_colorscheme ==# 'gruvbox' ? 'GruvboxYellowSign' : 'todo'), + \ 'texthl': (get(g:, 'spacevim_colorscheme', 'gruvbox') ==# 'gruvbox' ? 'GruvboxYellowSign' : 'todo'), \ }) let g:neomake_info_sign = get(g:, 'neomake_info_sign', { \ 'text': get(g:,'spacevim_info_symbol', '๐Ÿ›ˆ'), - \ 'texthl': (g:spacevim_colorscheme ==# 'gruvbox' ? 'GruvboxYellowSign' : 'todo'), + \ 'texthl': (get(g:, 'spacevim_colorscheme', 'gruvbox') ==# 'gruvbox' ? 'GruvboxYellowSign' : 'todo'), \ }) " vim:set et sw=2: diff --git a/config/plugins/nerdtree.vim b/config/plugins/nerdtree.vim index 298f8ef11..8f9b7cc06 100644 --- a/config/plugins/nerdtree.vim +++ b/config/plugins/nerdtree.vim @@ -1,5 +1,5 @@ let s:VCOP = SpaceVim#api#import('vim#compatible') -if g:spacevim_filetree_direction ==# 'right' +if get(g:, 'spacevim_filetree_direction', 'right') ==# 'right' let g:NERDTreeWinPos = 'rightbelow' else let g:NERDTreeWinPos = 'left' diff --git a/config/plugins/vim-airline.vim b/config/plugins/vim-airline.vim index 313df60f3..6d407188b 100644 --- a/config/plugins/vim-airline.vim +++ b/config/plugins/vim-airline.vim @@ -1,5 +1,5 @@ scriptencoding utf-8 -let g:airline_powerline_fonts = g:spacevim_enable_powerline_fonts +let g:airline_powerline_fonts = get(g:, 'spacevim_enable_powerline_fonts', 1) let g:airline_skip_empty_sections = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tmuxline#enabled = 1 diff --git a/lua/spacevim/api/Data/dict.lua b/lua/spacevim/api/Data/dict.lua new file mode 100644 index 000000000..e69de29bb diff --git a/lua/spacevim/api/Data/list.lua b/lua/spacevim/api/Data/list.lua new file mode 100644 index 000000000..a7638ebee --- /dev/null +++ b/lua/spacevim/api/Data/list.lua @@ -0,0 +1,12 @@ +-- @idea add list lua api +-- pop({list}) +local list = {} + + +function list.pop(l) + +end + + +return list + diff --git a/lua/spacevim/api/Data/string.lua b/lua/spacevim/api/Data/string.lua index e69de29bb..50efdfdb9 100644 --- a/lua/spacevim/api/Data/string.lua +++ b/lua/spacevim/api/Data/string.lua @@ -0,0 +1 @@ +-- @todo add lua string api diff --git a/test/config/LeaderF.vader b/test/config/LeaderF.vader new file mode 100644 index 000000000..fe892e180 --- /dev/null +++ b/test/config/LeaderF.vader @@ -0,0 +1,4 @@ +Execute ( Plugin config: LeaderF.vim ): + so config/plugins/LeaderF.vim + + diff --git a/test/config/goyo.vader b/test/config/goyo.vader new file mode 100644 index 000000000..3d1bfd4ce --- /dev/null +++ b/test/config/goyo.vader @@ -0,0 +1,2 @@ +Execute ( Plugin config: goyo.vim ): + so config/plugins/goyo.vim diff --git a/test/config/java_getset.vader b/test/config/java_getset.vader new file mode 100644 index 000000000..30605299d --- /dev/null +++ b/test/config/java_getset.vader @@ -0,0 +1,3 @@ +Execute ( Plugin config: java_getset.vim ): + so config/plugins/java_getset.vim + diff --git a/test/config/neomake.vader b/test/config/neomake.vader new file mode 100644 index 000000000..001193a45 --- /dev/null +++ b/test/config/neomake.vader @@ -0,0 +1,3 @@ +Execute ( Plugin config: neomake.vim ): + so config/plugins/neomake.vim + diff --git a/test/config/nerdtree.vader b/test/config/nerdtree.vader new file mode 100644 index 000000000..baddb47ed --- /dev/null +++ b/test/config/nerdtree.vader @@ -0,0 +1,3 @@ +Execute ( Plugin config: nerdtree.vim ): + so config/plugins/nerdtree.vim + diff --git a/test/config/vim-airline.vader b/test/config/vim-airline.vader new file mode 100644 index 000000000..6475e840a --- /dev/null +++ b/test/config/vim-airline.vader @@ -0,0 +1,3 @@ +Execute ( Plugin config: vim-airline.vim ): + so config/plugins/vim-airline.vim + diff --git a/test/config/vim-ref.vader b/test/config/vim-ref.vader new file mode 100644 index 000000000..9d09ba687 --- /dev/null +++ b/test/config/vim-ref.vader @@ -0,0 +1,4 @@ +Execute ( Plugin config: vim-ref.vim ): + so config/plugins/vim-ref.vim + AssertEqual g:ref_source_webdict_sites.default, 'cn' +