diff runtime/doc/autocmd.txt @ 26042:6b39ab99e367 v8.2.3555

patch 8.2.3555: ModeChanged is not triggered on every mode change Commit: https://github.com/vim/vim/commit/25def2c8b8bd7b0c3d5f020207c717a880b05d50 Author: =?UTF-8?q?Magnus=20Gro=C3=9F?= <magnus.gross@rwth-aachen.de> Date: Fri Oct 22 18:56:39 2021 +0100 patch 8.2.3555: ModeChanged is not triggered on every mode change Problem: ModeChanged is not triggered on every mode change. Solution: Also trigger on minor mode changes. (Maguns Gross, closes https://github.com/vim/vim/issues/8999)
author Bram Moolenaar <Bram@vim.org>
date Fri, 22 Oct 2021 20:00:05 +0200
parents 3b34837f4538
children d4d9c7c55a5f
line wrap: on
line diff
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -930,18 +930,23 @@ MenuPopup			Just before showing the popu
 							*ModeChanged*
 ModeChanged			After changing the mode. The pattern is
 				matched against `'old_mode:new_mode'`, for
-				example match against `i:*` to simulate
-				|InsertLeave|.
+				example match against `*:c*` to simulate
+				|CmdlineEnter|.
 				The following values of |v:event| are set:
 				   old_mode	The mode before it changed.
 				   new_mode	The new mode as also returned
-						by |mode()|.
+						by |mode()| called with a
+						non-zero argument.
 				When ModeChanged is triggered, old_mode will
 				have the value of new_mode when the event was
 				last triggered.
+				This will be triggered on every minor mode
+				change.
 				Usage example to use relative line numbers
 				when entering Visual mode: >
-	:autocmd ModeChanged *:v set relativenumber
+	:au ModeChanged [vV\x16]*:* let &l:rnu = mode() =~# '^[vV\x16]'
+	:au ModeChanged *:[vV\x16]* let &l:rnu = mode() =~# '^[vV\x16]'
+	:au WinEnter,WinLeave * let &l:rnu = mode() =~# '^[vV\x16]'
 <							*OptionSet*
 OptionSet			After setting an option.  The pattern is
 				matched against the long option name.