vim-patch:9.1.1607: :apple command detected as :append (#35237)

Problem:  :apple command detected as :append (dai475694450)
Solution: Disallow to define a custom command with lower-case letter,
          correctly detect :insert/:change/:append ex commands
          (Hirohito Higashi).

fixes: vim/vim#17893
closes: vim/vim#17930

efd83d441b

Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
(cherry picked from commit e7dfbf1343)
This commit is contained in:
zeertzjq
2025-08-08 21:58:55 +08:00
committed by github-actions[bot]
parent e299430ff5
commit ced4eed733
2 changed files with 53 additions and 12 deletions

View File

@@ -6813,6 +6813,52 @@ func Test_script_lines()
catch
call assert_exception('Vim(function):E1145: Missing heredoc end marker: .')
endtry
" More test for :append, :change, :insert
let cmds = ["append", "change", "insert"]
let suffixes = ["", "!", "|", "|xyz", " "]
for c in cmds
" Single character (with some accepted trailing characters)
for s in suffixes
let cmd = c[:0] .. s
let line = ["func LinesCheck()", cmd, "", "endfunc", "call LinesCheck()"]
call writefile(line, 'Xfunc', 'D')
call assert_fails('source Xfunc', 'E1145: Missing heredoc end marker: .', $'"{cmd}"')
endfor
" Unnecessary arguments
let cmd = c[:2] .. " end"
let line[1] = cmd
call writefile(line, 'Xfunc', 'D')
call assert_fails('source Xfunc', 'E488: Trailing characters: end:', $'"{cmd}"')
" Extra characters at the end (i.e., other commands)
let cmd = c .. "x"
let line[1] = cmd
call writefile(line, 'Xfunc', 'D')
call assert_fails('source Xfunc', 'E492: Not an editor command:', $'"{cmd}"')
endfor
let line =<< trim END
func AppendCheck()
apple
endfunc
call AppendCheck()
END
call writefile(line, 'Xfunc', 'D')
call assert_fails('source Xfunc', 'E492: Not an editor command: apple')
let line =<< trim END
func AppendCheck()
command! apple :echo "hello apple"
apple
endfunc
call AppendCheck()
END
call writefile(line, 'Xfunc', 'D')
call assert_fails('source Xfunc', 'E183: User defined commands must start with an uppercase letter')
endfunc
"-------------------------------------------------------------------------------