]> granicus.if.org Git - vim/commitdiff
patch 9.0.0753: some Ex commands are not in the help index v9.0.0753
authorYee Cheng Chin <ychin.git@gmail.com>
Sat, 15 Oct 2022 09:22:19 +0000 (10:22 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 15 Oct 2022 09:22:19 +0000 (10:22 +0100)
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)

runtime/doc/index.txt
src/testdir/Make_all.mak
src/testdir/test_cmd_lists.vim [new file with mode: 0644]
src/version.c

index 8bf341d02391b71788f09ce56a46ec0d9d129b07..4c0d653c75efd072ed906186d8a2df33f9fddc4f 100644 (file)
@@ -1150,7 +1150,7 @@ tag               command         action ~
 |:!!|          :!!             repeat last ":!" command
 |:#|           :#              same as ":number"
 |:&|           :&              repeat last ":substitute"
-|:star|                :*              execute contents of a register
+|:star|                :*              use the last Visual area, like :'<,'>
 |:<|           :<              shift lines one 'shiftwidth' left
 |:=|           :=              print the last line number
 |:>|           :>              shift lines one 'shiftwidth' right
@@ -1277,6 +1277,7 @@ tag               command         action ~
 |: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,6 +1309,7 @@ tag               command         action ~
 |: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 <EOL>
+|: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,6 +1358,7 @@ tag               command         action ~
 |: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
index 743da38e5e72c8d0b96ca5a7242d952714703049..04ccb4804ec7b60919d9b70b48b7b519e3fbfd02 100644 (file)
@@ -91,6 +91,7 @@ NEW_TESTS = \
        test_cjk_linebreak \
        test_clientserver \
        test_close_count \
+       test_cmd_lists \
        test_cmdline \
        test_cmdmods \
        test_cmdwin \
@@ -351,6 +352,7 @@ NEW_TESTS_RES = \
        test_cjk_linebreak.res \
        test_clientserver.res \
        test_close_count.res \
+       test_cmd_lists.res \
        test_cmdline.res \
        test_cmdmods.res \
        test_cmdwin.res \
diff --git a/src/testdir/test_cmd_lists.vim b/src/testdir/test_cmd_lists.vim
new file mode 100644 (file)
index 0000000..4a8904d
--- /dev/null
@@ -0,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
index bedbdc045034f1f231492fec07283f4a67b07ed5..3bb2a2f990a22628b394d65b5646f95be46d4568 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    753,
 /**/
     752,
 /**/