- Fixed syntax highlighting for ksh93 namespace variables starting
with '${.'
- Added support for the alarm, eloop, fds, mkservice, pids, poll and
sha2sum builtins (which are indeed ksh93 builtins, albeit whether or
not they are available depends on the ksh release and the compiled
SHOPT options).
- Added support for the many Unix commands provided by ksh93's libcmd
as builtin commands (since these are general commands, scripts for
other shells like bash will also highlight these).
- The dumps for the sh_0{2,5,6,8,9}.sh were recreated due to this
change affecting commands those scripts call (e.g. 'wc').
- Enabled ${parameter/pattern/string} and friends for ksh syntax.
- Enabled case modification for ksh. See also:
https://github.com/ksh93/ksh/commit/c1762e03
- Enabled ;;& support for ksh. See also:
https://github.com/ksh93/ksh/commit/fc89d20a
- Added many special ksh variables using 93u+m's data/variables.c
as a reference.
If vim can't figure out which ksh release is in play using e.g.
the hashbang path, in such a case a generic default that enables
everything and the kitchen sink will be used. Otherwise, features will
be disabled if it's absolutely known a certain feature will not be
present. Examples:
- ERRNO is ksh88 specific, so that is locked to ksh88.
- Only 93u+m (assumed for generic) has SRANDOM, and only 93u+m
and 93v- have case modification support.
- 93u+ and 93v- have VPATH and CSWIDTH variables (the latter
is vestigal, but still present in the hardcoded variable table).
- 93v- and ksh2020 have (buggy and near unusable) implementations
of compgen and complete.
- Only mksh provides function substitutions, i.e. ${|command;}.
This took the better part of my day to implement. It seems to work well
enough though. (Also had to regenerate the dumps again while testing
it, as now there are dup scripts with mere hashbang differences, used
solely for testing syntax highlighting differences.)
closes: vim/vim#17348b0691b46bd
Co-authored-by: Johnothan King <johnothanking@protonmail.com>
- Default to POSIX supported classes.
- Add a KornShell specific class list.
- Remove "or" from the Bash class list, presumably a typo.
closes: vim/vim#17293839b79eeb3
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Ignore single-quoted backslash escape sequences in parameter expansions.
\' is not an escaped single quote in ${foo:-'word\'}.
closes: vim/vim#17261fe22867ef5
Co-authored-by: Doug Kearns <dougkearns@gmail.com>
Also, do not set g:is_kornshell when g:is_posix is set. BSD shells are
POSIX but many are derived from the ash shell.
closes: vim/vim#1693951a06ecee0
Co-authored-by: Mohamed Akram <mohd.akram@outlook.com>
runtime(sh): Add handling for ksh93 shared-state comsubs and mksh valsubs (vim/vim#13884)
This commit adds support for ksh93 shared-state command
substitutions (syntax: ${ command; }) and mksh's value
substitutions (syntax: ${|command;}) in the sh syntax script.
Also add a syntax test for ksh subshares with dumps included
to make sure it doesn't regress.
fixes: vim/vim#9514add31baeda
Co-authored-by: Johnothan King <johnothanking@protonmail.com>
runtime(sh): Update sh syntax and add local keyword for bash (vim/vim#13806)
add `local` in shStatement
b16fc98055
Co-authored-by: Lucien Grondin <grondilu@yahoo.fr>
runtime(sh): Update sh syntax and add shDerefOffset to shDerefVarArray for bash (vim/vim#13480)
Add shDerefOffset to shDerefVarArray.
Example code:
```bash
declare -a a=({a..z})
echo "${a[@]:1:3}"
```
ce3b0136c6
Co-authored-by: Lucien Grondin <grondilu@yahoo.fr>
runtime(sh): add shDblParen to shLoopList for bash (vim/vim#13445)
add shDblParen to shLoopList to correctly highlight
arithmetic expressions for Bash and Ksh
This should allow code such as:
```bash
declare -i i j
for i in foo bar
do ((j = 1 << j))
done
```
a390e984db
Co-authored-by: Lucien Grondin <grondilu@yahoo.fr>
Update runtime files
86b4816766
vim-patch:9.0.1029: autoload directory missing from distribution
Problem: Autoload directory missing from distribution.
Solution: Add the autoload/zig directory to the list of distributed files.
84dbf855fb
Co-authored-by: Bram Moolenaar <Bram@vim.org>