0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00

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>
This commit is contained in:
Christian Brabandt 2024-10-27 21:33:09 +01:00
parent ce35ee8986
commit 2abec431e1
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
4 changed files with 24 additions and 6 deletions

View File

@ -115,6 +115,11 @@ if 1
\ | execute "normal! g`\"" \ | execute "normal! g`\""
\ | endif \ | 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 augroup END
" Quite a few people accidentally type "q:" instead of ":q" and get confused " Quite a few people accidentally type "q:" instead of ":q" and get confused

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -1254,10 +1254,19 @@ TerminalWinOpen Just after a terminal buffer was created, with
TermResponse After the response to |t_RV| is received from TermResponse After the response to |t_RV| is received from
the terminal. The value of |v:termresponse| the terminal. The value of |v:termresponse|
can be used to do things depending on the can be used to do things depending on the
terminal version. Note that this event may be terminal version.
triggered halfway executing another event, This is used in |defaults.vim| to detect
especially if file I/O, a shell command or putty terminal and set a dark background: >
anything else that takes time is involved.
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*
TermResponseAll After the response to |t_RV|, |t_RC|, |t_RS|, TermResponseAll After the response to |t_RV|, |t_RC|, |t_RS|,
|t_RB|, |t_RF|, or |t_u7| are received from |t_RB|, |t_RF|, or |t_u7| are received from

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -41600,6 +41600,8 @@ Changed~
- |:keeppatterns| preserves the last substitute pattern when used with |:s| - |:keeppatterns| preserves the last substitute pattern when used with |:s|
- |setqflist()| and |setloclist()| can optionally try to preserve the current - |setqflist()| and |setloclist()| can optionally try to preserve the current
selection in the quickfix list with the "u" action. 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-9.2*
Added ~ Added ~

View File

@ -1701,6 +1701,8 @@ func Test_verbose_option()
CheckScreendump CheckScreendump
let lines =<< trim [SCRIPT] 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 command DoSomething echo 'hello' |set ts=4 |let v = '123' |echo v
call feedkeys("\r", 't') " for the hit-enter prompt call feedkeys("\r", 't') " for the hit-enter prompt
set verbose=20 set verbose=20