patch 9.1.1404: wrong link to Chapter 2 in new-tutor Commit: https://github.com/vim/vim/commit/e8302da74aee55fe8f6496b5b711fed7d92318c5 Author: Phạm Bình An <111893501+brianhus...@users.noreply.github.com> Date: Thu May 22 22:53:28 2025 +0200
patch 9.1.1404: wrong link to Chapter 2 in new-tutor Problem: wrong link to Chapter 2 in vim-01-beginner.tutor Solution: Fix the link to Chapter 2, add test for links in tutor files (Phạm Bình An) In order to write the test, I expose the function `s:GlobTutorials` as `tutor#GlobTutorials` and make it also accept a `locale` argument. closes: #17356 Signed-off-by: Phạm Bình An <111893501+brianhus...@users.noreply.github.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/runtime/autoload/tutor.vim b/runtime/autoload/tutor.vim index 6ab796020..b21e20f81 100644 --- a/runtime/autoload/tutor.vim +++ b/runtime/autoload/tutor.vim @@ -157,12 +157,14 @@ function! s:Sort(a, b) return retval endfunction -function! s:GlobTutorials(name) +" returns a list of all tutor files matching the given name +function! tutor#GlobTutorials(name, locale) + let locale = a:locale " search for tutorials: " 1. non-localized let l:tutors = s:GlobPath(&rtp, 'tutor/'.a:name.'.tutor') " 2. localized for current locale - let l:locale_tutors = s:GlobPath(&rtp, 'tutor/'.s:Locale()[0].'/'.a:name.'.tutor') + let l:locale_tutors = s:GlobPath(&rtp, 'tutor/'.locale.'/'.a:name.'.tutor') " 3. fallback to 'en' if len(l:locale_tutors) == 0 let l:locale_tutors = s:GlobPath(&rtp, 'tutor/en/'.a:name.'.tutor') @@ -187,7 +189,7 @@ function! tutor#TutorCmd(tutor_name) let l:tutor_name = fnamemodify(l:tutor_name, ':r') endif - let l:tutors = s:GlobTutorials(l:tutor_name) + let l:tutors = tutor#GlobTutorials(l:tutor_name, s:Locale()[0]) if len(l:tutors) == 0 echom "No tutorial with that name found" @@ -214,7 +216,7 @@ function! tutor#TutorCmd(tutor_name) endfunction function! tutor#TutorCmdComplete(lead,line,pos) - let l:tutors = s:GlobTutorials('*') + let l:tutors = tutor#GlobTutorials('*', s:Locale()[0]) let l:names = uniq(sort(map(l:tutors, 'fnamemodify(v:val, ":t:r")'), 's:Sort')) return join(l:names, " ") endfunction diff --git a/runtime/tutor/en/vim-01-beginner.tutor b/runtime/tutor/en/vim-01-beginner.tutor index 86efa7856..8af5d465c 100644 --- a/runtime/tutor/en/vim-01-beginner.tutor +++ b/runtime/tutor/en/vim-01-beginner.tutor @@ -970,7 +970,7 @@ NOTE: Completion works for many commands. It is especially useful for # CONCLUSION This concludes Chapter 1 of the Vim Tutor. Consider continuing with -[Chapter 2](@tutor:tutor:vim-02-beginner). +[Chapter 2](@tutor:vim-02-beginner). This was intended to give a brief overview of the Vim editor, just enough to allow you to use the editor fairly easily. It is far from complete as Vim has diff --git a/src/testdir/test_plugin_tutor.vim b/src/testdir/test_plugin_tutor.vim index 61cea3faf..3dc46fd16 100644 --- a/src/testdir/test_plugin_tutor.vim +++ b/src/testdir/test_plugin_tutor.vim @@ -14,3 +14,21 @@ func Test_auto_enable_interactive() call assert_true(empty(&buftype)) call assert_match('tutor#EnableInteractive', b:undo_ftplugin) endfunc + +func Test_tutor_link() + let tutor_files = globpath($VIMRUNTIME, 'tutor/**/*.tutor', 0, 1) + let pattern = '\[.\{-}@tutor:\zs[^)\]]*\ze[)\]]' + + for tutor_file in tutor_files + let lang = fnamemodify(tutor_file, ':h:t') + if lang == 'tutor' + let lang = 'en' + endif + + let text = readfile(tutor_file) + let links = matchstrlist(text, pattern)->map({_, v -> v.text}) + for link in links + call assert_true(tutor#GlobTutorials(link, lang)->len() > 0) + endfor + endfor +endfunc diff --git a/src/version.c b/src/version.c index f94dbe3e4..9cecc0be8 100644 --- a/src/version.c +++ b/src/version.c @@ -709,6 +709,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1404, /**/ 1403, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1uID1L-009PD3-CK%40256bit.org.