aboutsummaryrefslogtreecommitdiff
path: root/vim
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2017-10-30 15:54:40 +1300
committerTom Ryder <tom@sanctum.geek.nz>2017-10-30 16:01:54 +1300
commite36efd4f542a24fadf689b82418f94f57dd01f1e (patch)
tree692f04014d9c75e1b92db55d15c330f67187e565 /vim
parentCorrect a path in vim/after/syntax/sh.vim (diff)
downloaddotfiles-e36efd4f542a24fadf689b82418f94f57dd01f1e.tar.gz
dotfiles-e36efd4f542a24fadf689b82418f94f57dd01f1e.zip
Rearrange and better explain ksh syntax workaround
Move the rule setting the custom b:is_ksh variable used for this workaround (established in 52615f6) into an ftplugin file, rather than into ftdetect; the latter seems a much more appropriate place since by this point we've definitely decided the file type is "sh". From the revised comment in this changeset: >Setting g:is_posix above also prompts Vim's core syntax/sh.vim script >to set g:is_kornshell and thereby b:is_kornshell to the same value as >g:is_posix. > >That's very confusing, so before it happens we'll copy b:is_kornshell's >value as determined by filetype.vim and ~/.vim/ftdetect/sh.vim into a >custom variable b:is_ksh, before its meaning gets confused. > >b:is_ksh as a name is more inline with b:is_bash and b:is_sh, anyway, >so we'll just treat b:is_kornshell like it's both misnamed and broken. > >We can then switch on our custom variable in ~/.vim/after/syntax/sh.vim >to apply settings that actually *are* unique to Korn shell and its >derivatives.
Diffstat (limited to 'vim')
-rw-r--r--vim/after/syntax/sh.vim7
-rw-r--r--vim/ftdetect/sh.vim9
-rw-r--r--vim/ftplugin/sh.vim23
3 files changed, 23 insertions, 16 deletions
diff --git a/vim/after/syntax/sh.vim b/vim/after/syntax/sh.vim
index b9a1a66f..9da1095d 100644
--- a/vim/after/syntax/sh.vim
+++ b/vim/after/syntax/sh.vim
@@ -1,8 +1,9 @@
" If g:is_posix is set, g:is_kornshell is probably set too, a strange decision
" by sh.vim. No matter; we can tease out whether this is actually a Korn shell
-" script using our own b:is_ksh flag set at the end of ~/.vim/ftdetect/sh.vim,
-" and if it isn't, we'll throw away the highlighting groups for ksh.
-if exists('g:is_posix') && exists('g:is_kornshell') && !exists('b:is_ksh')
+" script using our own b:is_kornshell_proper flag set at the end of
+" ~/.vim/ftdetect/sh.vim, and if it isn't, we'll throw away the highlighting
+" groups for ksh.
+if exists('g:is_kornshell') && !exists('b:is_ksh')
syntax clear kshSpecialVariables
syntax clear kshStatement
endif
diff --git a/vim/ftdetect/sh.vim b/vim/ftdetect/sh.vim
index 236f329c..8b4c10d3 100644
--- a/vim/ftdetect/sh.vim
+++ b/vim/ftdetect/sh.vim
@@ -20,13 +20,4 @@ augroup dfsh
\ let b:is_posix = 1 |
\ setfiletype sh
- " If we determined something is b:is_kornshell, tack on b:is_ksh as well so
- " we can still tease out what is actually a kornshell script after sh.vim is
- " done changing our options for us; it conflates POSIX with Korn shell.
- autocmd BufNewFile,BufRead
- \ *
- \ if exists('b:is_kornshell') |
- \ let b:is_ksh = 1 |
- \ endif
-
augroup END
diff --git a/vim/ftplugin/sh.vim b/vim/ftplugin/sh.vim
index 2b73611e..a6dd62eb 100644
--- a/vim/ftplugin/sh.vim
+++ b/vim/ftplugin/sh.vim
@@ -1,10 +1,25 @@
" Default to POSIX shell, as I never write Bourne, and if I write Bash or Ksh
-" it'll be denoted with either a shebang or an appropriate extension. At the
-" time of writing, changing this also prompts sh.vim to set g:is_kornshell,
-" which is absurd, and requires a bit more massaging in after/syntax/sh.vim to
-" turn off some unwanted stuff.
+" it'll be denoted with either a shebang or an appropriate extension.
let g:is_posix = 1
+"
+" Setting g:is_posix above also prompts Vim's core syntax/sh.vim script to
+" set g:is_kornshell and thereby b:is_kornshell to the same value as g:is_posix.
+"
+" That's very confusing, so before it happens we'll copy b:is_kornshell's
+" value as determined by filetype.vim and ~/.vim/ftdetect/sh.vim into a custom
+" variable b:is_ksh, before its meaning gets confused.
+"
+" b:is_ksh as a name is more inline with b:is_bash and b:is_sh, anyway, so
+" we'll just treat b:is_kornshell like it's both misnamed and broken.
+"
+" We can then switch on our custom variable in ~/.vim/after/syntax/sh.vim to
+" apply settings that actually *are* unique to Korn shell and its derivatives.
+"
+if exists('b:is_kornshell')
+ let b:is_ksh = b:is_kornshell
+endif
+
" Use han(1df) as a man(1) wrapper for Bash files if available
if exists('b:is_bash') && executable('han')
setlocal keywordprg=han