From ddda5e0a488bce19c86e04fa823069b755fac779 Mon Sep 17 00:00:00 2001 From: itchyny Date: Tue, 20 Feb 2024 20:57:13 +0900 Subject: [PATCH] feat(help): hide filename of "gO" outline using conceal #27547 Help outlines, invoked by `gO`, displays the help section titles in the location list window. This feature is implemented by setting the buffer lines after opening the window, but this implementation breaks the assumption that the quickfix window texts are consistently constructed by the quickfix list items. I think we can use the conceal feature here. Using conceal here improves interoperability between quickfix plugins, and also simplifies the outline implementation. Originally reported at https://github.com/itchyny/vim-qfedit/issues/12 --- runtime/ftplugin/help.vim | 4 ++-- runtime/ftplugin/qf.vim | 23 ----------------------- runtime/syntax/qf.vim | 6 ++++++ 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/runtime/ftplugin/help.vim b/runtime/ftplugin/help.vim index a6a6652b2f..a188e45cb4 100644 --- a/runtime/ftplugin/help.vim +++ b/runtime/ftplugin/help.vim @@ -71,7 +71,7 @@ if !exists('g:no_plugin_maps') if indent(lnum) <= indent(l) let level = has_section + has_sub_section - let add_text = matchstr(text, '\S.*') + let add_text = matchstr(text, '\S.\{-}\ze\s\=\~$') endif endif @@ -79,7 +79,7 @@ if !exists('g:no_plugin_maps') if !empty(add_text) && last_added != lnum let last_added = lnum call add(toc, {'bufnr': bufnr('%'), 'lnum': lnum, - \ 'text': repeat(' ', level) . add_text}) + \ 'text': repeat("\u00a0\u00a0", level) . add_text}) endif let lnum = nextnonblank(lnum + 1) endwhile diff --git a/runtime/ftplugin/qf.vim b/runtime/ftplugin/qf.vim index a3dfce0e76..85fb9f6125 100644 --- a/runtime/ftplugin/qf.vim +++ b/runtime/ftplugin/qf.vim @@ -16,26 +16,3 @@ if !get(g:, 'qf_disable_statusline') " Display the command that produced the list in the quickfix window: setlocal stl=%t%{exists('w:quickfix_title')?\ '\ '.w:quickfix_title\ :\ ''}\ %=%-15(%l,%c%V%)\ %P endif - -function! s:setup_toc() abort - if get(w:, 'quickfix_title') !~# '\ call s:setup_toc() -augroup END diff --git a/runtime/syntax/qf.vim b/runtime/syntax/qf.vim index 6f2ea6a92e..3131caccd8 100644 --- a/runtime/syntax/qf.vim +++ b/runtime/syntax/qf.vim @@ -15,6 +15,12 @@ syn match qfSeparator "|" nextgroup=qfLineNr contained syn match qfLineNr "[^|]*" contained contains=qfError syn match qfError "error" contained +" Hide file name and line number for help outline (TOC). +if has_key(w:, 'qf_toc') || get(w:, 'quickfix_title') =~# '\