diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt index e1dde76aca..f5d3eee7a9 100644 --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -210,10 +210,10 @@ The 'spellsuggest' option influences how the list of suggestions is generated and sorted. See 'spellsuggest'. The 'spellcapcheck' option is used to check the first word of a sentence -starts with a capital. This doesn't work for the first word in the file. -When there is a line break right after a sentence the highlighting of the next -line may be postponed. Use |CTRL-L| when needed. Also see |set-spc-auto| for -how it can be set automatically when 'spelllang' is set. +starts with a capital. When there is a line break right after a sentence the +highlighting of the next line may be postponed. Use |CTRL-L| when needed. +Also see |set-spc-auto| for how it can be set automatically when 'spelllang' +is set. The 'spelloptions' option has a few more flags that influence the way spell checking works. For example, "camel" splits CamelCased words so that each diff --git a/runtime/doc/vimfn.txt b/runtime/doc/vimfn.txt index 7eccc6011d..cc5e21c08c 100644 --- a/runtime/doc/vimfn.txt +++ b/runtime/doc/vimfn.txt @@ -2269,6 +2269,10 @@ expandcmd({string} [, {options}]) *expandcmd()* like with |expand()|, and environment variables, anywhere in {string}. "~user" and "~/path" are only expanded at the start. + The expansion is done in two steps: the special keywords are + evaluated first, then "~" and environment variables are + expanded in the result. Thus `expand('%:~')` keeps the "~", + while `expandcmd('%:~')` returns the full path. The following items are supported in the {options} Dict argument: diff --git a/runtime/lua/vim/_meta/vimfn.gen.lua b/runtime/lua/vim/_meta/vimfn.gen.lua index 3d9b12bbda..5bc52d2219 100644 --- a/runtime/lua/vim/_meta/vimfn.gen.lua +++ b/runtime/lua/vim/_meta/vimfn.gen.lua @@ -1993,6 +1993,10 @@ function vim.fn.expand(string, nosuf, list) end --- like with |expand()|, and environment variables, anywhere in --- {string}. "~user" and "~/path" are only expanded at the --- start. +--- The expansion is done in two steps: the special keywords are +--- evaluated first, then "~" and environment variables are +--- expanded in the result. Thus `expand('%:~')` keeps the "~", +--- while `expandcmd('%:~')` returns the full path. --- --- The following items are supported in the {options} Dict --- argument: diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim index 044f2a9e3e..52d50df853 100644 --- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -3,7 +3,7 @@ " Maintainer: This runtime file is looking for a new maintainer. " Previous Maintainers: Charles E. Campbell " Lennart Schultz -" Last Change: 2026 May 17 by Vim Project +" Last Change: 2026 Jul 25 by Vim Project " Version: 208 " Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " For options and settings, please use: :help ft-sh-syntax @@ -598,12 +598,12 @@ syn match shVariable "\<\h\w*\ze=" nextgroup=shVarAssign if exists("b:is_bash") " The subscript form for array values, e.g. "foo=([2]=10 [4]=100)". syn region shArrayValue contained start="\[\%(..\{-}\]=\)\@=" end="\]=\@=" contains=@shArrayValueList nextgroup=shVarAssign - syn cluster shArrayValueList contains=shArithmetic,shArithParen,shCommandSub,shDeref,shDerefSimple,shExpr,shNumber,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shSpecial,shParen,bashSpecialVariables,shParenError + syn cluster shArrayValueList contains=shArithmetic,shArithParen,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shNumber,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shSpecial,shParen,bashSpecialVariables,shParenError syn region shArrayRegion contained matchgroup=shShellVariables start="(" skip='\\\\\|\\.' end=")" contains=@shArrayValueList,shArrayValue,shComment elseif (exists("b:is_kornshell") && !exists("b:is_ksh88")) " The subscript form for array values, e.g. "foo=([2]=10 [4]=100)". syn region shArrayValue contained start="\[\%(..\{-}\]=\)\@=" end="\]=\@=" contains=@shArrayValueList nextgroup=shVarAssign - syn cluster shArrayValueList contains=shArithmetic,shArithParen,shCommandSub,shDeref,shDerefSimple,shExpr,shNumber,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shSpecial,shParen,kshSpecialVariables,shParenError + syn cluster shArrayValueList contains=shArithmetic,shArithParen,shCommandSub,shDeref,shDerefSimple,shEscape,shExpr,shNumber,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shSpecial,shParen,kshSpecialVariables,shParenError syn region shArrayRegion contained matchgroup=shShellVariables start="(" skip='\\\\\|\\.' end=")" contains=@shArrayValueList,shArrayValue,shComment,shArrayRegion endif if exists("b:is_bash") || exists("b:is_kornshell") diff --git a/src/nvim/eval.lua b/src/nvim/eval.lua index 7323fef2a6..f95dc53190 100644 --- a/src/nvim/eval.lua +++ b/src/nvim/eval.lua @@ -2518,6 +2518,10 @@ M.funcs = { like with |expand()|, and environment variables, anywhere in {string}. "~user" and "~/path" are only expanded at the start. + The expansion is done in two steps: the special keywords are + evaluated first, then "~" and environment variables are + expanded in the result. Thus `expand('%:~')` keeps the "~", + while `expandcmd('%:~')` returns the full path. The following items are supported in the {options} Dict argument: