neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

test_help_tagjump.vim (8628B)


      1 " Tests for :help! {subject}
      2 
      3 func Test_help_tagjump()
      4  help
      5  call assert_equal("help", &filetype)
      6  call assert_true(getline('.') =~ '\*help.txt\*')
      7  helpclose
      8 
      9  help |
     10  call assert_equal("help", &filetype)
     11  call assert_true(getline('.') =~ '\*bar\*')
     12  helpclose
     13 
     14  help "
     15  call assert_equal("help", &filetype)
     16  call assert_true(getline('.') =~ '\*quote\*')
     17  helpclose
     18 
     19  help *
     20  call assert_equal("help", &filetype)
     21  call assert_true(getline('.') =~ '\*star\*')
     22  helpclose
     23 
     24  help "*
     25  call assert_equal("help", &filetype)
     26  call assert_true(getline('.') =~ '\*quotestar\*')
     27  helpclose
     28 
     29  " help sm?le
     30  help ch?ckhealth
     31  call assert_equal("help", &filetype)
     32  " call assert_true(getline('.') =~ '\*:smile\*')
     33  call assert_true(getline('.') =~ '\*:checkhealth\*')
     34  helpclose
     35 
     36  help ??
     37  call assert_equal("help", &filetype)
     38  call assert_true(getline('.') =~ '\*??\*')
     39  helpclose
     40 
     41  help :?
     42  call assert_equal("help", &filetype)
     43  call assert_true(getline('.') =~ '\*:?\*')
     44  helpclose
     45 
     46  help q?
     47  call assert_equal("help", &filetype)
     48  call assert_true(getline('.') =~ '\*q?\*')
     49  call assert_true(expand('<cword>') == 'q?')
     50  helpclose
     51 
     52  help -?
     53  call assert_equal("help", &filetype)
     54  call assert_true(getline('.') =~ '\*-?\*')
     55  helpclose
     56 
     57  help v_g?
     58  call assert_equal("help", &filetype)
     59  call assert_true(getline('.') =~ '\*v_g?\*')
     60  helpclose
     61 
     62  help expr-!=?
     63  call assert_equal("help", &filetype)
     64  call assert_true(getline('.') =~ '\*expr-!=?\*')
     65  call assert_true(expand('<cword>') == 'expr-!=?')
     66  helpclose
     67 
     68  help expr-isnot?
     69  call assert_equal("help", &filetype)
     70  call assert_true(getline('.') =~ '\*expr-isnot?\*')
     71  call assert_true(expand('<cword>') == 'expr-isnot?')
     72  helpclose
     73 
     74  help FileW*Post
     75  call assert_equal("help", &filetype)
     76  call assert_true(getline('.') =~ '\*FileWritePost\*')
     77  helpclose
     78 
     79  help `ls`
     80  call assert_equal("help", &filetype)
     81  call assert_true(getline('.') =~ '\*:ls\*')
     82  helpclose
     83 
     84  help ^X
     85  call assert_equal("help", &filetype)
     86  call assert_true(getline('.') =~ '\*CTRL-X\*')
     87  helpclose
     88 
     89  help i_^_CTRL-D
     90  call assert_equal("help", &filetype)
     91  call assert_true(getline('.') =~ '\*i_^_CTRL-D\*')
     92  helpclose
     93 
     94  help i^x^y
     95  call assert_equal("help", &filetype)
     96  call assert_true(getline('.') =~ '\*i_CTRL-X_CTRL-Y\*')
     97  helpclose
     98 
     99  exe "help i\<C-\>\<C-G>"
    100  call assert_equal("help", &filetype)
    101  call assert_true(getline('.') =~ '\*i_CTRL-\\_CTRL-G\*')
    102  helpclose
    103 
    104  exec "help \<C-V>"
    105  call assert_equal("help", &filetype)
    106  call assert_true(getline('.') =~ '\*CTRL-V\*')
    107  helpclose
    108 
    109  help /\|
    110  call assert_equal("help", &filetype)
    111  call assert_true(getline('.') =~ '\*/\\bar\*')
    112  helpclose
    113 
    114  help \_$
    115  call assert_equal("help", &filetype)
    116  call assert_true(getline('.') =~ '\*/\\_$\*')
    117  helpclose
    118 
    119  help CTRL-\_CTRL-N
    120  call assert_equal("help", &filetype)
    121  call assert_true(getline('.') =~ '\*CTRL-\\_CTRL-N\*')
    122  helpclose
    123 
    124  help `:pwd`,
    125  call assert_equal("help", &filetype)
    126  call assert_true(getline('.') =~ '\*:pwd\*')
    127  helpclose
    128 
    129  help `:ls`.
    130  call assert_equal("help", &filetype)
    131  call assert_true(getline('.') =~ '\*:ls\*')
    132  helpclose
    133 
    134  exec "help! ('textwidth'"
    135  call assert_equal("help", &filetype)
    136  call assert_true(getline('.') =~ "\\*'textwidth'\\*")
    137  helpclose
    138 
    139  exec "help! ('buflisted'),"
    140  call assert_equal("help", &filetype)
    141  call assert_true(getline('.') =~ "\\*'buflisted'\\*")
    142  helpclose
    143 
    144  exec "help! abs({expr})"
    145  call assert_equal("help", &filetype)
    146  call assert_true(getline('.') =~ '\*abs()\*')
    147  helpclose
    148 
    149  exec "help! arglistid([{winnr})"
    150  call assert_equal("help", &filetype)
    151  call assert_true(getline('.') =~ '\*arglistid()\*')
    152  helpclose
    153 
    154  exec "help! 'autoindent'."
    155  call assert_equal("help", &filetype)
    156  call assert_true(getline('.') =~ "\\*'autoindent'\\*")
    157  helpclose
    158 
    159  exec "help! {address}."
    160  call assert_equal("help", &filetype)
    161  call assert_true(getline('.') =~ '\*{address}\*')
    162  helpclose
    163 
    164  " Use special patterns in the help tag
    165  for h in ['/\w', '/\%^', '/\%(', '/\zs', '/\@<=', '/\_$', '[++opt]', '/\{']
    166    exec "help! " . h
    167    call assert_equal("help", &filetype)
    168    let pat = '\*' . escape(h, '\$[') . '\*'
    169    call assert_true(getline('.') =~ pat, pat)
    170    helpclose
    171  endfor
    172 
    173  exusage
    174  call assert_equal("help", &filetype)
    175  call assert_true(getline('.') =~ '\*:index\*')
    176  helpclose
    177 
    178  viusage
    179  call assert_equal("help", &filetype)
    180  call assert_true(getline('.') =~ '\*normal-index\*')
    181  helpclose
    182 endfunc
    183 
    184 let s:langs = ['en', 'ab', 'ja']
    185 
    186 func s:doc_config_setup()
    187  let s:helpfile_save = &helpfile
    188  let &helpfile="Xdocdir1/doc-en/doc/testdoc.txt"
    189  let s:rtp_save = &rtp
    190  let &rtp="Xdocdir1/doc-en"
    191  if has('multi_lang')
    192    let s:helplang_save=&helplang
    193  endif
    194 
    195  call delete('Xdocdir1', 'rf')
    196 
    197  for lang in s:langs
    198    if lang ==# 'en'
    199      let tagfname = 'tags'
    200      let docfname = 'testdoc.txt'
    201    else
    202      let tagfname = 'tags-' . lang
    203      let docfname = 'testdoc.' . lang . 'x'
    204    endif
    205    let docdir = "Xdocdir1/doc-" . lang . "/doc"
    206    call mkdir(docdir, "p")
    207    call writefile(["\t*test-char*", "\t*test-col*"], docdir . '/' . docfname)
    208    call writefile(["test-char\t" . docfname . "\t/*test-char*",
    209          \         "test-col\t" . docfname . "\t/*test-col*"],
    210          \         docdir . '/' . tagfname)
    211  endfor
    212 endfunc
    213 
    214 func s:doc_config_teardown()
    215  call delete('Xdocdir1', 'rf')
    216 
    217  let &helpfile = s:helpfile_save
    218  let &rtp = s:rtp_save
    219  if has('multi_lang')
    220    let &helplang = s:helplang_save
    221  endif
    222 endfunc
    223 
    224 func s:get_help_compl_list(cmd)
    225  return getcompletion(a:cmd, 'help')
    226 endfunc
    227 
    228 func Test_help_complete()
    229  try
    230    let list = []
    231    call s:doc_config_setup()
    232 
    233    " 'helplang=' and help file lang is 'en'
    234    if has('multi_lang')
    235      set helplang=
    236    endif
    237    let list = s:get_help_compl_list("test")
    238    call assert_equal(['test-col', 'test-char'], list)
    239 
    240    if has('multi_lang')
    241      " 'helplang=ab' and help file lang is 'en'
    242      set helplang=ab
    243      let list = s:get_help_compl_list("test")
    244      call assert_equal(['test-col', 'test-char'], list)
    245 
    246      " 'helplang=' and help file lang is 'en' and 'ab'
    247      set rtp+=Xdocdir1/doc-ab
    248      set helplang=
    249      let list = s:get_help_compl_list("test")
    250      call assert_equal(sort(['test-col@en', 'test-col@ab',
    251            \             'test-char@en', 'test-char@ab']), sort(list))
    252 
    253      " 'helplang=ab' and help file lang is 'en' and 'ab'
    254      set helplang=ab
    255      let list = s:get_help_compl_list("test")
    256      call assert_equal(sort(['test-col', 'test-col@en',
    257            \             'test-char', 'test-char@en']), sort(list))
    258 
    259      " 'helplang=' and help file lang is 'en', 'ab' and 'ja'
    260      set rtp+=Xdocdir1/doc-ja
    261      set helplang=
    262      let list = s:get_help_compl_list("test")
    263      call assert_equal(sort(['test-col@en', 'test-col@ab',
    264            \             'test-col@ja', 'test-char@en',
    265            \             'test-char@ab', 'test-char@ja']), sort(list))
    266 
    267      " 'helplang=ab' and help file lang is 'en', 'ab' and 'ja'
    268      set helplang=ab
    269      let list = s:get_help_compl_list("test")
    270      call assert_equal(sort(['test-col', 'test-col@en',
    271            \             'test-col@ja', 'test-char',
    272            \             'test-char@en', 'test-char@ja']), sort(list))
    273 
    274      " 'helplang=ab,ja' and help file lang is 'en', 'ab' and 'ja'
    275      set helplang=ab,ja
    276      let list = s:get_help_compl_list("test")
    277      call assert_equal(sort(['test-col', 'test-col@ja',
    278            \             'test-col@en', 'test-char',
    279            \             'test-char@ja', 'test-char@en']), sort(list))
    280    endif
    281  catch
    282    call assert_exception('X')
    283  finally
    284    call s:doc_config_teardown()
    285  endtry
    286 endfunc
    287 
    288 func Test_help_respect_current_file_lang()
    289  try
    290    let list = []
    291    call s:doc_config_setup()
    292 
    293    if has('multi_lang')
    294      function s:check_help_file_ext(help_keyword, ext)
    295        exec 'help ' . a:help_keyword
    296        call assert_equal(a:ext, expand('%:e'))
    297        call feedkeys("\<C-]>", 'tx')
    298        call assert_equal(a:ext, expand('%:e'))
    299        pop
    300        helpclose
    301      endfunc
    302 
    303      set rtp+=Xdocdir1/doc-ab
    304      set rtp+=Xdocdir1/doc-ja
    305 
    306      set helplang=ab
    307      call s:check_help_file_ext('test-char', 'abx')
    308      call s:check_help_file_ext('test-char@ja', 'jax')
    309      set helplang=ab,ja
    310      call s:check_help_file_ext('test-char@ja', 'jax')
    311      call s:check_help_file_ext('test-char@en', 'txt')
    312    endif
    313  catch
    314    call assert_exception('X')
    315  finally
    316    call s:doc_config_teardown()
    317  endtry
    318 endfunc
    319 
    320 " vim: shiftwidth=2 sts=2 expandtab