From 0810ba3c4f5b8df94893dca5f5ebd6d7a69c7b3d Mon Sep 17 00:00:00 2001 From: Patrick Ballard Date: Sun, 30 Oct 2022 20:16:29 +0100 Subject: [PATCH 1/2] Improvement of the calculation of the usable width of current window --- autoload/vimtex/fold/envs.vim | 37 +++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/autoload/vimtex/fold/envs.vim b/autoload/vimtex/fold/envs.vim index 54b6483c1e..77c53c28e0 100644 --- a/autoload/vimtex/fold/envs.vim +++ b/autoload/vimtex/fold/envs.vim @@ -81,9 +81,42 @@ function! s:folder.text(line, level) abort dict " {{{1 let caption = self.parse_caption(a:line) endif + " let width = winwidth(0) + " \ - (&number ? &numberwidth : 0) + " \ - str2nr(matchstr(&foldcolumn, '\d\+$')) + let width = winwidth(0) - \ - (&number ? &numberwidth : 0) - \ - str2nr(matchstr(&foldcolumn, '\d\+$')) + let numberwidth = max([&numberwidth, strlen(line('$')) + 1]) + let numwidth = (&number || &relativenumber) ? numberwidth : 0 + let foldwidth = str2nr(matchstr(&foldcolumn, '\d\+$')) + + if &signcolumn == 'yes' + let signwidth = 2 + elseif &signcolumn =~ 'yes' + let signwidth = &signcolumn + let signwidth = split(signwidth, ':')[1] + let signwidth *= 2 " each signcolumn is 2-char wide + elseif &signcolumn == 'auto' + let supports_sign_groups = has('nvim-0.4.2') || has('patch-8.1.614') + let signlist = execute(printf('sign place ' . (supports_sign_groups ? 'group=* ' : '') . 'buffer=%d', bufnr(''))) + let signlist = split(signlist, "\n") + let signwidth = len(signlist) > 2 ? 2 : 0 + elseif &signcolumn =~ 'auto' + let signwidth = 0 + if len(sign_getplaced(bufnr(),{'group':'*'})[0].signs) + let signwidth = 0 + for l:sign in sign_getplaced(bufnr(),{'group':'*'})[0].signs + let lnum = l:sign.lnum + let signs = len(sign_getplaced(bufnr(),{'group':'*', 'lnum':lnum})[0].signs) + let signwidth = (signs > signwidth ? signs : signwidth) + endfor + endif + let signwidth *= 2 " each signcolumn is 2-char wide + else + let signwidth = 0 + endif + + let width = width - numwidth - foldwidth - signwidth " Always make room for the label let width_rhs = 0 From 4f107d50557cc924e4d742bc19196674c995a941 Mon Sep 17 00:00:00 2001 From: Patrick Ballard Date: Sun, 30 Oct 2022 20:23:50 +0100 Subject: [PATCH 2/2] Auto-commit: saved envs.vim --- autoload/vimtex/fold/envs.vim | 4 ---- 1 file changed, 4 deletions(-) diff --git a/autoload/vimtex/fold/envs.vim b/autoload/vimtex/fold/envs.vim index 77c53c28e0..d310a11fa1 100644 --- a/autoload/vimtex/fold/envs.vim +++ b/autoload/vimtex/fold/envs.vim @@ -81,10 +81,6 @@ function! s:folder.text(line, level) abort dict " {{{1 let caption = self.parse_caption(a:line) endif - " let width = winwidth(0) - " \ - (&number ? &numberwidth : 0) - " \ - str2nr(matchstr(&foldcolumn, '\d\+$')) - let width = winwidth(0) let numberwidth = max([&numberwidth, strlen(line('$')) + 1]) let numwidth = (&number || &relativenumber) ? numberwidth : 0