diff --git a/autoload/SpaceVim/autocmds.vim b/autoload/SpaceVim/autocmds.vim index 8aff669ba..919593394 100644 --- a/autoload/SpaceVim/autocmds.vim +++ b/autoload/SpaceVim/autocmds.vim @@ -27,6 +27,7 @@ function! SpaceVim#autocmds#init() abort autocmd BufEnter,WinEnter,InsertLeave * setl cursorcolumn autocmd BufLeave,WinLeave,InsertEnter * setl nocursorcolumn endif + autocmd WinLeave * call SpaceVim#layers#core#statusline#remove_section('search status') autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal! g`\"" | diff --git a/autoload/SpaceVim/layers/core/statusline.vim b/autoload/SpaceVim/layers/core/statusline.vim index d887e82da..e58e91c37 100644 --- a/autoload/SpaceVim/layers/core/statusline.vim +++ b/autoload/SpaceVim/layers/core/statusline.vim @@ -654,5 +654,19 @@ function! SpaceVim#layers#core#statusline#register_sections(name, func) endfunction +function! SpaceVim#layers#core#statusline#check_section(name) abort + return (index(s:loaded_sections_l, a:name) != -1 + \ || index(s:loaded_sections_r, a:name) != -1) +endfunction + +function! SpaceVim#layers#core#statusline#remove_section(name) abort + if index(s:loaded_sections_l, a:name) != -1 + call remove(s:loaded_sections_l, index(s:loaded_sections_l, a:name)) + endif + if index(s:loaded_sections_r, a:name) != -1 + call remove(s:loaded_sections_r, index(s:loaded_sections_l, a:name)) + endif + let &l:statusline = SpaceVim#layers#core#statusline#get(1) +endfunction " vim:set et sw=2 cc=80 nowrap: diff --git a/autoload/SpaceVim/layers/incsearch.vim b/autoload/SpaceVim/layers/incsearch.vim index 4eb8dd97c..f12a7ed68 100644 --- a/autoload/SpaceVim/layers/incsearch.vim +++ b/autoload/SpaceVim/layers/incsearch.vim @@ -86,26 +86,23 @@ endfunction let s:si_flag = 0 function! s:update_search_index(key) abort - if a:key == 'd' - if mapcheck("(incsearch-nohl-n)") !=# '' + if a:key ==# 'd' + if mapcheck('(incsearch-nohl-n)') !=# '' call feedkeys("\(incsearch-nohl-n)") else normal! n endif - normal! ml - elseif a:key == 'r' - if mapcheck("(incsearch-nohl-N)") !=# '' + elseif a:key ==# 'r' + if mapcheck('(incsearch-nohl-N)') !=# '' call feedkeys("\(incsearch-nohl-N)") else normal! N endif - normal! ml endif - if s:si_flag == 0 - call SpaceVim#layers#core#statusline#toggle_section('search status') - let s:si_flag = 1 - else - let &l:statusline = SpaceVim#layers#core#statusline#get(1) + normal! ml + if !SpaceVim#layers#core#statusline#check_section('search status') + call SpaceVim#layers#core#statusline#toggle_section('search status') endif + let &l:statusline = SpaceVim#layers#core#statusline#get(1) normal! `l endfunction