changeset 36227:8bfde9d1f48e

runtime(comment): commenting might be off by one column Commit: https://github.com/vim/vim/commit/e021f39b79339385d6f70001cb35a79c611456ff Author: Konfekt <Konfekt@users.noreply.github.com> Date: Tue Oct 1 20:02:15 2024 +0200 runtime(comment): commenting might be off by one column getpos columns start at 1 and not 0 as do arrays closes: #15774 Signed-off-by: Konfekt <Konfekt@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 01 Oct 2024 20:15:03 +0200
parents 653503487a51
children 11bd7f8182fd
files runtime/pack/dist/opt/comment/autoload/comment.vim runtime/pack/dist/opt/comment/doc/comment.txt
diffstat 2 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/pack/dist/opt/comment/autoload/comment.vim
+++ b/runtime/pack/dist/opt/comment/autoload/comment.vim
@@ -22,13 +22,13 @@ export def Toggle(...args: list<string>)
     var cms_l = split(escape(cms, '*.'), '\s*%s\s*')
 
     var first_col = indent(lnum1)
-    var start_col = getpos("'[")[2]
+    var start_col = getpos("'[")[2] - 1
     if len(cms_l) == 1 && lnum1 == lnum2 && first_col < start_col
-        var line_start = getline(lnum1)[0 : max([0, start_col - 2])]
-        var line_end = getline(lnum1)[start_col - 1 : -1]
-        line_end = line_end =~# $'^\s*{cms_l[0]}' ?
-                    \ substitute(line_end, $'^\s*\zs{cms_l[0]}', '', '') :
-                    \ printf(substitute(cms, '%s\@!', '%%', 'g'), line_end)
+        var line_start = getline(lnum1)[0 : start_col - 1]
+        var line_end = getline(lnum1)[start_col : -1]
+        line_end = line_end =~ $'^\s*{cms_l[0]}' ?
+                    \ substitute(line_end, $'^\s*\zs{cms_l[0]}\s\ze\s*', line_end =~ '^\s' ? ' ' : '', '') :
+                    \ printf(substitute(cms, '%s\@!', '%%', ''), line_end)
         setline(lnum1, line_start .. line_end)
         return ''
     endif
--- a/runtime/pack/dist/opt/comment/doc/comment.txt
+++ b/runtime/pack/dist/opt/comment/doc/comment.txt
@@ -1,4 +1,4 @@
-*comment.txt*   For Vim version 9.1.  Last change:  2024 Sep 30
+*comment.txt*   For Vim version 9.1.  Last change:  2024 Oct 01
 
 
 		  VIM REFERENCE MANUAL
@@ -38,6 +38,11 @@ depends on the first line of the range o
 a comment marker, the line will be un-commented, if it doesn't, the line will
 be commented out.  Blank and empty lines are ignored.
 
+The value of 'commentstring' is the same for the entire buffer and determined
+by its filetype (|filetypes|). To adapt it within the buffer for embedded
+languages, you can use a plug-in such as
+https://github.com/suy/vim-context-commentstring.
+
 The comment marker will always be padded with blanks whether or not the
 'commentstring' value contains whitespace around "%s".