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