From 3cf1c70c702786d7921438113818be3a1a2f8bd5 Mon Sep 17 00:00:00 2001 From: belkka Date: Thu, 16 May 2024 12:34:58 +0000 Subject: [PATCH 1/2] refactor(ftplugin/man.vim): rearrange `setlocal` commands Problem: 1. multiple `setlocal` commands are spread across the script. 2. several options, apparently, serve the same purpose (hide UI columns) which may not be immediately clear. more options may be required to fullfill the same purpose or they could be removed all together as a group if better solution is found later 3. `setlocal nofoldenable` may be overriden by conditional block later in the script. Solution: 1. move 'colorcolumn' and 'nolist' to the group of other options at the beginning 2. add an explanatory comment about options that disable UI columns 3. move 'nofoldenable' to the if-else block to keep relevant commands coupled --- runtime/ftplugin/man.vim | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim index fdeaae4c3f..5f7d37fb79 100644 --- a/runtime/ftplugin/man.vim +++ b/runtime/ftplugin/man.vim @@ -8,14 +8,16 @@ let b:did_ftplugin = 1 setlocal noexpandtab tabstop=8 softtabstop=8 shiftwidth=8 setlocal wrap breakindent linebreak +setlocal colorcolumn=0 nolist " Parentheses and '-' for references like `git-ls-files(1)`; '@' for systemd " pages; ':' for Perl and C++ pages. Here, I intentionally omit the locale " specific characters matched by `@`. setlocal iskeyword=@-@,:,a-z,A-Z,48-57,_,.,-,(,) -setlocal nonumber norelativenumber -setlocal foldcolumn=0 colorcolumn=0 nolist nofoldenable +" man page content is likely preformatted for the terminal width, so +" narrowing display by any additional columns leads to Embarrassing Line Wrap +setlocal nonumber norelativenumber foldcolumn=0 setlocal tagfunc=v:lua.require'man'.goto_tag @@ -35,6 +37,8 @@ if get(g:, 'ft_man_folding_enable', 0) setlocal foldenable setlocal foldmethod=indent setlocal foldnestmax=1 +else + setlocal nofoldenable endif let b:undo_ftplugin = '' From 2c160f39d3299ff7f9853e4856cefff567f8fbde Mon Sep 17 00:00:00 2001 From: belkka Date: Thu, 16 May 2024 13:12:27 +0000 Subject: [PATCH 2/2] fix(ftplugin/man.vim): hide signcolumn (auto) Problem: It's a common practice to set 'signcolumn=yes' (always show) instead of default 'signcolumn=auto' in order to prevent annoying horizontal shifting in editable buffers when using some popular plugins that add/remove signs on the fly. This makes signcolumn always visible and breaks the text flow of pre-formatted man pages, even when no signs are actually defined. Some other options are already tweaked in man.vim to address the issue (e.g. 'nonumber'), but not signcolumn. Solution: set 'signcolumn=auto' in ftplugin/man.vim. By default there is no |signs| in man pages anyway (and I am not aware of any plugins that could define them in man pages), so 'signcolumn=auto' should behave like 'signcolumn=no', i.e. hide the empty column in order to keep buffer width same as terminal width. In a (rare?) case when user does define some signs in man pages, signcolumn will appear (breaking the text flow). --- runtime/ftplugin/man.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim index 5f7d37fb79..37667477f3 100644 --- a/runtime/ftplugin/man.vim +++ b/runtime/ftplugin/man.vim @@ -17,7 +17,7 @@ setlocal iskeyword=@-@,:,a-z,A-Z,48-57,_,.,-,(,) " man page content is likely preformatted for the terminal width, so " narrowing display by any additional columns leads to Embarrassing Line Wrap -setlocal nonumber norelativenumber foldcolumn=0 +setlocal nonumber norelativenumber foldcolumn=0 signcolumn=auto setlocal tagfunc=v:lua.require'man'.goto_tag