Mercurial > vim
comparison runtime/ftplugin/sh.vim @ 35122:739aaccbca74
runtime(sh,zsh): clear $MANPAGER in ftplugin before shelling out
Commit: https://github.com/vim/vim/commit/8d8cb45756cb7e6fda17013b8347be3a11b29610
Author: D. Ben Knoble <ben.knoble+github@gmail.com>
Date: Mon May 6 19:52:53 2024 +0200
runtime(sh,zsh): clear $MANPAGER in ftplugin before shelling out
Say you use Vim and set MANPAGER='vim -M +MANPAGER --not-a-term -'; then
:{Zs,S}hKeywordPrg (or K) will crap out and spew terminal garbage into
less when bash's "help" fails. This was introduced by 2f25e40b1
(runtime: configure keywordpg for some file types (#5566), 2023-08-23)
and may be present in other files touched by that commit.
Make the "man" invocation sensible by unsetting MANPAGER in the
environment.
Note that changing MANPAGER for `:terminal` is not needed; Vim within
Vim is perfectly fine.
closes: #14679
Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 06 May 2024 20:00:09 +0200 |
parents | 85d7e01f64b7 |
children | a34e38182b6e |
comparison
equal
deleted
inserted
replaced
35121:28f2e09012ac | 35122:739aaccbca74 |
---|---|
2 " Language: sh | 2 " Language: sh |
3 " Maintainer: Doug Kearns <dougkearns@gmail.com> | 3 " Maintainer: Doug Kearns <dougkearns@gmail.com> |
4 " Previous Maintainer: Dan Sharp | 4 " Previous Maintainer: Dan Sharp |
5 " Contributor: Enno Nagel <ennonagel+vim@gmail.com> | 5 " Contributor: Enno Nagel <ennonagel+vim@gmail.com> |
6 " Eisuke Kawashima | 6 " Eisuke Kawashima |
7 " Last Change: 2024 Feb 27 | 7 " Last Change: 2024 May 06 by Vim Project (MANPAGER=) |
8 | 8 |
9 if exists("b:did_ftplugin") | 9 if exists("b:did_ftplugin") |
10 finish | 10 finish |
11 endif | 11 endif |
12 let b:did_ftplugin = 1 | 12 let b:did_ftplugin = 1 |
44 let b:undo_ftplugin ..= " | unlet! b:browsefilter" | 44 let b:undo_ftplugin ..= " | unlet! b:browsefilter" |
45 endif | 45 endif |
46 | 46 |
47 if get(b:, "is_bash", 0) | 47 if get(b:, "is_bash", 0) |
48 if !has("gui_running") && executable("less") | 48 if !has("gui_running") && executable("less") |
49 command! -buffer -nargs=1 ShKeywordPrg silent exe '!bash -c "{ help "<args>" 2>/dev/null || man "<args>"; } | LESS= less"' | redraw! | 49 command! -buffer -nargs=1 ShKeywordPrg silent exe '!bash -c "{ help "<args>" 2>/dev/null || MANPAGER= man "<args>"; } | LESS= less"' | redraw! |
50 elseif has("terminal") | 50 elseif has("terminal") |
51 command! -buffer -nargs=1 ShKeywordPrg silent exe ':term bash -c "help "<args>" 2>/dev/null || man "<args>""' | 51 command! -buffer -nargs=1 ShKeywordPrg silent exe ':term bash -c "help "<args>" 2>/dev/null || man "<args>""' |
52 else | 52 else |
53 command! -buffer -nargs=1 ShKeywordPrg echo system('bash -c "help <args>" 2>/dev/null || man "<args>"') | 53 command! -buffer -nargs=1 ShKeywordPrg echo system('bash -c "help <args>" 2>/dev/null || MANPAGER= man "<args>"') |
54 endif | 54 endif |
55 setlocal keywordprg=:ShKeywordPrg | 55 setlocal keywordprg=:ShKeywordPrg |
56 let b:undo_ftplugin ..= " | setl kp< | sil! delc -buffer ShKeywordPrg" | 56 let b:undo_ftplugin ..= " | setl kp< | sil! delc -buffer ShKeywordPrg" |
57 endif | 57 endif |
58 | 58 |