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 <[email protected]>
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 <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
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 [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1uID1L-009PD3-CK%40256bit.org.