To: vim_dev@googlegroups.com Subject: Patch 9.0.0753 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.0753 Problem: Some Ex commands are not in the help index. Solution: Add the missing commands. Add a script to check all Ex commands are in the help index. (Yee Cheng Chin, closes #11371) Files: runtime/doc/index.txt, src/testdir/Make_all.mak, src/testdir/test_cmd_lists.vim *** ../vim-9.0.0752/runtime/doc/index.txt 2022-06-28 11:21:06.000000000 +0100 --- runtime/doc/index.txt 2022-10-15 10:19:22.218472001 +0100 *************** *** 1150,1156 **** |:!!| :!! repeat last ":!" command |:#| :# same as ":number" |:&| :& repeat last ":substitute" ! |:star| :* execute contents of a register |:<| :< shift lines one 'shiftwidth' left |:=| := print the last line number |:>| :> shift lines one 'shiftwidth' right --- 1150,1156 ---- |:!!| :!! repeat last ":!" command |:#| :# same as ":number" |:&| :& repeat last ":substitute" ! |:star| :* use the last Visual area, like :'<,'> |:<| :< shift lines one 'shiftwidth' left |:=| := print the last line number |:>| :> shift lines one 'shiftwidth' right *************** *** 1277,1282 **** --- 1277,1283 ---- |:debuggreedy| :debugg[reedy] read debug mode commands from normal input |:def| :def define a Vim9 user function |:defcompile| :defc[ompile] compile Vim9 user functions in current script + |:defer| :defer call function when current function is done |:delcommand| :delc[ommand] delete user-defined command |:delfunction| :delf[unction] delete a user function |:delmarks| :delm[arks] delete marks *************** *** 1308,1313 **** --- 1309,1315 ---- |:echohl| :echoh[l] set highlighting for echo commands |:echomsg| :echom[sg] same as :echo, put message in history |:echon| :echon same as :echo, but without + |:echowindow| :echow[indow] same as :echomsg, but use a popup window |:else| :el[se] part of an :if command |:elseif| :elsei[f] part of an :if command |:emenu| :em[enu] execute a menu by name *************** *** 1356,1361 **** --- 1358,1364 ---- |:highlight| :hi[ghlight] specify highlighting methods |:hide| :hid[e] hide current buffer for a command |:history| :his[tory] print a history list + |:horizontal| :hor[izontal] following window command work horizontally |:insert| :i[nsert] insert text |:iabbrev| :ia[bbrev] like ":abbrev" but for Insert mode |:iabclear| :iabc[lear] like ":abclear" but for Insert mode *** ../vim-9.0.0752/src/testdir/Make_all.mak 2022-10-13 12:29:34.233533860 +0100 --- src/testdir/Make_all.mak 2022-10-15 10:13:11.799688620 +0100 *************** *** 91,96 **** --- 91,97 ---- test_cjk_linebreak \ test_clientserver \ test_close_count \ + test_cmd_lists \ test_cmdline \ test_cmdmods \ test_cmdwin \ *************** *** 351,356 **** --- 352,358 ---- test_cjk_linebreak.res \ test_clientserver.res \ test_close_count.res \ + test_cmd_lists.res \ test_cmdline.res \ test_cmdmods.res \ test_cmdwin.res \ *** ../vim-9.0.0752/src/testdir/test_cmd_lists.vim 2022-10-15 10:20:32.582277592 +0100 --- src/testdir/test_cmd_lists.vim 2022-10-15 10:13:11.799688620 +0100 *************** *** 0 **** --- 1,68 ---- + " Test to verify that the cmd list in runtime/doc/index.txt contains all of + " the commands in src/ex_cmds.h. It doesn't map the other way round because + " index.txt contains some shorthands like :!! which are useful to list, but + " they don't exist as an independent entry in src/ex_cmds.h. + " + " Currently this just checks for existence, and we aren't checking for whether + " they are sorted in the index, or whether the substring needed (e.g. + " 'defc[ompile]') is correct or not. + + func Test_cmd_lists() + + " Create a list of the commands in ex_cmds.h:CMD_index. + enew! + read ../ex_cmds.h + 1,/^enum CMD_index$/d + call search('^};$') + .,$d + v/^EXCMD/d + %s/^.*"\(\S\+\)".*$/\1/ + " Special case ':*' because it's represented as ':star' + %s/^\*$/star/ + sort u + let l:command_list = getline(1, '$') + + " Verify that the ':help ex-cmd-index' list contains all known commands. + enew! + if filereadable('../../doc/index.txt') + " unpacked MS-Windows zip archive + read ../../doc/index.txt + else + read ../../runtime/doc/index.txt + endif + call search('\*ex-cmd-index\*') + 1,.d + v/^|:/d + %s/^|:\(\S*\)|.*/\1/ + sort u + norm gg + let l:missing_cmds = [] + for cmd in l:command_list + " Reserved Vim 9 commands or other script-only syntax aren't useful to + " document as Ex commands. + let l:vim9cmds = [ + \ 'abstract', + \ 'class', + \ 'endclass', + \ 'endenum', + \ 'endinterface', + \ 'enum', + \ 'interface', + \ 'static', + \ 'type', + \ '++', + \ '--', + \ '{', + \ '}'] + if index(l:vim9cmds, cmd) != -1 + continue + endif + + if search('^\V' .. cmd .. '\v$', 'cW') == 0 + call add(l:missing_cmds, ':' .. cmd) + endif + endfor + call assert_equal(0, len(l:missing_cmds), "Missing commands from `:help ex-cmd-index`: " .. string(l:missing_cmds)) + endfunc + + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-9.0.0752/src/version.c 2022-10-14 20:24:20.309925391 +0100 --- src/version.c 2022-10-15 10:19:35.034435934 +0100 *************** *** 697,698 **** --- 697,700 ---- { /* Add new patch number below this line */ + /**/ + 753, /**/ -- An indication you must be a manager: You feel sorry for Dilbert's boss. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///