Mercurial > vim
changeset 36396:687c036113dd draft
runtime(defaults): Detect putty terminal and switch to dark background
Commit: https://github.com/vim/vim/commit/2abec431e1ab5f4f6e21c2bb490241732622a8c5
Author: Christian Brabandt <cb@256bit.org>
Date: Sun Oct 27 21:33:09 2024 +0100
runtime(defaults): Detect putty terminal and switch to dark background
Vim tries to determine the default background and checks for $TERM
and even checks for the "putty" value. But unfortunately, putty by
default uses "xterm" as $TERM value and as such Vim uses a "light"
background.
So use a TermResponse autocommand to set the background for putty back
to dark.
Note: this only works on non-tiny builds and when defaults.vim is in
use.
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 27 Oct 2024 21:45:03 +0100 |
parents | 0c633a798a06 |
children | f1bc71099682 |
files | runtime/defaults.vim runtime/doc/autocmd.txt runtime/doc/version9.txt src/testdir/test_cmdline.vim |
diffstat | 4 files changed, 24 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/defaults.vim +++ b/runtime/defaults.vim @@ -115,6 +115,11 @@ if 1 \ | execute "normal! g`\"" \ | endif + " Set the default background for putty to dark. Putty usually sets the + " $TERM to xterm and by default it starts with a dark background which + " makes syntax highlighting often hard to read with bg=light + " undo this using: ":au! vimStartup TermResponse" + autocmd TermResponse * if v:termresponse == "\e[>0;136;0c" | set bg=dark | endif augroup END " Quite a few people accidentally type "q:" instead of ":q" and get confused
--- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 9.1. Last change: 2024 Aug 18 +*autocmd.txt* For Vim version 9.1. Last change: 2024 Oct 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1254,10 +1254,19 @@ TerminalWinOpen Just after a terminal TermResponse After the response to |t_RV| is received from the terminal. The value of |v:termresponse| can be used to do things depending on the - terminal version. Note that this event may be - triggered halfway executing another event, - especially if file I/O, a shell command or - anything else that takes time is involved. + terminal version. + This is used in |defaults.vim| to detect + putty terminal and set a dark background: > + + au TermResponse * + \ if v:termresponse == "\e[>0;136;0c" + \ set bg=dark + \ endif +< + Note: that this event may be triggered halfway + executing another event, especially if file + I/O, a shell command or anything else that + takes time is involved. *TermResponseAll* TermResponseAll After the response to |t_RV|, |t_RC|, |t_RS|, |t_RB|, |t_RF|, or |t_u7| are received from
--- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,4 +1,4 @@ -*version9.txt* For Vim version 9.1. Last change: 2024 Oct 22 +*version9.txt* For Vim version 9.1. Last change: 2024 Oct 27 VIM REFERENCE MANUAL by Bram Moolenaar @@ -41600,6 +41600,8 @@ Changed~ - |:keeppatterns| preserves the last substitute pattern when used with |:s| - |setqflist()| and |setloclist()| can optionally try to preserve the current selection in the quickfix list with the "u" action. +- the putty terminal is detected using an |TermResponse| autocommand in + |defaults.vim| and Vim switches to a dark background *added-9.2* Added ~
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -1701,6 +1701,8 @@ func Test_verbose_option() CheckScreendump let lines =<< trim [SCRIPT] + " clear the TermResponse autocommand from defaults.vim + au! vimStartup TermResponse command DoSomething echo 'hello' |set ts=4 |let v = '123' |echo v call feedkeys("\r", 't') " for the hit-enter prompt set verbose=20