runtime(matchparen): Add matchparen_disable_cursor_hl config option

Commit: 
https://github.com/vim/vim/commit/59834ba6df10dc48565bf55ac6c8e8a4aa40210b
Author: Matteo Landi <mat...@matteolandi.net>
Date:   Mon Nov 4 20:46:54 2024 +0100

    runtime(matchparen): Add matchparen_disable_cursor_hl config option
    
    Set the "matchparen_disable_cursor_hl" config variable to disable
    highlighting the cursor with the MatchParen highlighting group.
    
    closes: #15984
    
    Signed-off-by: Matteo Landi <mat...@matteolandi.net>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/doc/pi_paren.txt b/runtime/doc/pi_paren.txt
index 719353fa9..049889699 100644
--- a/runtime/doc/pi_paren.txt
+++ b/runtime/doc/pi_paren.txt
@@ -1,4 +1,4 @@
-*pi_paren.txt*  For Vim version 9.1.  Last change: 2013 May 08
+*pi_paren.txt*  For Vim version 9.1.  Last change: 2024 Nov 04
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -10,6 +10,7 @@ The functionality mentioned here is a |standard-plugin|.
 This plugin is only available if 'compatible' is not set.
 
 You can avoid loading this plugin by setting the "loaded_matchparen" variable: 
>
+
        :let loaded_matchparen = 1
 
 The plugin installs CursorMoved, CursorMovedI and WinEnter autocommands to
@@ -29,6 +30,16 @@ the ":highlight" command.  Example: >
 
        :hi MatchParen ctermbg=blue guibg=lightblue
 
+By default the plugin will highlight both the paren under the cursor and the
+matching one using the |hl-MatchParen| highlighting group.  This may result in
+the cursor briefly disappearing from the screen as the MatchParen colors take
+over the cursor highlight.  To prevent this from happening and have the plugin
+only highlight the matching paren and not the one under the cursor
+(effectively leaving the cursor style unchanged), you can set the
+"matchparen_disable_cursor_hl" variable: >
+
+       :let matchparen_disable_cursor_hl = 1
+
 The characters to be matched come from the 'matchpairs' option.  You can
 change the value to highlight different matches.  Note that not everything is
 possible.  For example, you can't highlight single or double quotes, because
@@ -46,10 +57,10 @@ are:
   closed folds.
 - 'synmaxcol' times 2 bytes before or after the cursor to avoid a delay
   in a long line with syntax highlighting.
-- A timeout of 300 msec (60 msec in Insert mode). This can be changed with the
-  g:matchparen_timeout and g:matchparen_insert_timeout variables and their
-  buffer-local equivalents b:matchparen_timeout and
-  b:matchparen_insert_timeout.
+- A timeout of 300 msec (60 msec in Insert mode).  This can be changed with
+  the "g:matchparen_timeout" and "g:matchparen_insert_timeout" variables and
+  their buffer-local equivalents "b:matchparen_timeout" and
+  "b:matchparen_insert_timeout".
 
 If you would like the |%| command to work better, the matchit plugin can be
 used, see |matchit-install|.  This plugin also helps to skip matches in
diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim
index 2899612dc..661a34b57 100644
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -17,6 +17,9 @@ endif
 if !exists("g:matchparen_insert_timeout")
   let g:matchparen_insert_timeout = 60
 endif
+if !exists("g:matchparen_disable_cursor_hl")
+  let g:matchparen_disable_cursor_hl = 0
+endif
 
 let s:has_matchaddpos = exists('*matchaddpos')
 
@@ -189,10 +192,18 @@ func s:Highlight_Matching_Pair()
   " If a match is found setup match highlighting.
   if m_lnum > 0 && m_lnum >= stoplinetop && m_lnum <= stoplinebottom 
     if s:has_matchaddpos
-      call add(w:matchparen_ids, matchaddpos('MatchParen', [[c_lnum, c_col - 
before], [m_lnum, m_col]], 10))
+      if !g:matchparen_disable_cursor_hl
+        call add(w:matchparen_ids, matchaddpos('MatchParen', [[c_lnum, c_col - 
before], [m_lnum, m_col]], 10))
+      else
+        call add(w:matchparen_ids, matchaddpos('MatchParen', [[m_lnum, 
m_col]], 10))
+      endif
     else
-      exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) .
-           \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
+      if !g:matchparen_disable_cursor_hl
+        exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) .
+              \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
+      else
+        exe '3match MatchParen /\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
+      endif
       call add(w:matchparen_ids, 3)
     endif
     let w:paren_hl_on = 1

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1t83F5-00EGSk-C9%40256bit.org.

Raspunde prin e-mail lui