patch 9.1.1384: still some problem with the new tutors filetype plugin Commit: https://github.com/vim/vim/commit/13bea589a25707c8f9e29b2920410bdcccd79bc5 Author: Phạm Bình An <phambinhanctb2...@gmail.com> Date: Mon May 12 20:39:24 2025 +0200
patch 9.1.1384: still some problem with the new tutors filetype plugin Problem: still some problem with the new tutors filetype plugin Solution: refactor code to enable/disable tutor mode into tutor#EnableInteractive() function, include a test (Phạm Bình An) I find it annoying that Tutor's interactive mode is always on (or debug mode is off) even when I open a tutor file with :edit command. I think it makes more sense to make this "interactive mode": - Always on when it is opened with :Tutor command - Off otherwise For more references, see `:help` feature, it is a much better than :Tutor, since I don't have to run `:let g:help_debug = 1` just to be able to edit and save a help file Therefore, I remove `g:tutor_debug` closes: #17299 Signed-off-by: Phạm Bình An <phambinhanctb2...@gmail.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/runtime/autoload/tutor.vim b/runtime/autoload/tutor.vim index 3265fdde3..6ab796020 100644 --- a/runtime/autoload/tutor.vim +++ b/runtime/autoload/tutor.vim @@ -210,6 +210,7 @@ function! tutor#TutorCmd(tutor_name) call tutor#SetupVim() exe "edit ".l:to_open + call tutor#EnableInteractive(v:true) endfunction function! tutor#TutorCmdComplete(lead,line,pos) @@ -217,3 +218,24 @@ function! tutor#TutorCmdComplete(lead,line,pos) let l:names = uniq(sort(map(l:tutors, 'fnamemodify(v:val, ":t:r")'), 's:Sort')) return join(l:names, " ") endfunction + +" Enables/disables interactive mode. +function! tutor#EnableInteractive(enable) + let enable = a:enable + if enable + setlocal buftype=nofile + setlocal concealcursor+=inv + setlocal conceallevel=2 + call tutor#ApplyMarks() + augroup tutor_interactive + autocmd! TextChanged,TextChangedI <buffer> call tutor#ApplyMarksOnChanged() + augroup END + else + setlocal buftype< + setlocal concealcursor< + setlocal conceallevel< + if exists('#tutor_interactive') + autocmd! tutor_interactive * <buffer> + endif + endif +endfunction diff --git a/runtime/ftplugin/tutor.vim b/runtime/ftplugin/tutor.vim index 5660cbf64..92bca8d19 100644 --- a/runtime/ftplugin/tutor.vim +++ b/runtime/ftplugin/tutor.vim @@ -6,21 +6,13 @@ " Original Author: Felipe Morales <hel.sh...@gmail.com> " Last Change: " 2025 May 10 set b:undo_ftplugin +" 2025 May 12 update b:undo_ftplugin " Base: {{{1 call tutor#SetupVim() " Buffer Settings: {{{1 setlocal noreadonly -if !exists('g:tutor_debug') || g:tutor_debug == 0 - setlocal buftype=nofile - setlocal concealcursor+=inv - setlocal conceallevel=2 -else - setlocal buftype= - setlocal concealcursor& - setlocal conceallevel=0 -endif setlocal noundofile setlocal keywordprg=:help @@ -46,14 +38,7 @@ call tutor#SetNormalMappings() sign define tutorok text=✓ texthl=tutorOK sign define tutorbad text=✗ texthl=tutorX -if !exists('g:tutor_debug') || g:tutor_debug == 0 - call tutor#ApplyMarks() - autocmd! TextChanged,TextChangedI <buffer> call tutor#ApplyMarksOnChanged() -endif - -let b:undo_ftplugin = 'unlet! g:tutor_debug |' -let b:undo_ftplugin ..= 'setl concealcursor< conceallevel< |' -let b:undo_ftplugin ..= 'setl foldmethod< foldexpr< foldlevel< |' -let b:undo_ftplugin ..= 'setl buftype< undofile< keywordprg< iskeyword< |' +let b:undo_ftplugin = "setl foldmethod< foldexpr< foldlevel< undofile< keywordprg< iskeyword< |" + \ . "call tutor#EnableInteractive(v:false) |" " vim: fdm=marker diff --git a/runtime/plugin/tutor.vim b/runtime/plugin/tutor.vim index b79ba9309..495f31704 100644 --- a/runtime/plugin/tutor.vim +++ b/runtime/plugin/tutor.vim @@ -2,16 +2,11 @@ " Maintainer: This runtime file is looking for a new maintainer. " Contributors: Phạm Bình An <phambinhanctb2...@gmail.com> " Original Author: Felipe Morales <hel.sh...@gmail.com> -" Date: 2025 May 10 +" Date: 2025 May 12 if exists('g:loaded_tutor_mode_plugin') || &compatible finish endif let g:loaded_tutor_mode_plugin = 1 -" Define this variable so that users get cmdline completion. -if !exists('g:tutor_debug') - let g:tutor_debug = 0 -endif - command! -nargs=? -complete=custom,tutor#TutorCmdComplete Tutor call tutor#TutorCmd(<q-args>) diff --git a/runtime/tutor/tutor.tutor b/runtime/tutor/tutor.tutor index b46fcc483..cdef5d55c 100644 --- a/runtime/tutor/tutor.tutor +++ b/runtime/tutor/tutor.tutor @@ -17,15 +17,8 @@ Table of contents: ## SETTING UP *setting-up* -First, you'll need to enable "debug" mode -~~~ cmd - :let g:tutor_debug = 1 -~~~ -This will allow saving changes to the tutor files and will disable conceals, so -you can more easily check your changes. - -After this, create a new .tutor file (we will be practicing on this very file, so you -don't need to do this now): +Create a new .tutor file (we will be practicing on this very file, so you don't +need to do this now): ~~~ cmd :e new-tutorial.tutor ~~~ diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index de4e30f75..88bf5c3de 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -245,6 +245,7 @@ NEW_TESTS = \ test_plugin_matchparen \ test_plugin_termdebug \ test_plugin_tohtml \ + test_plugin_tutor \ test_plugin_zip \ test_plus_arg_edit \ test_popup \ @@ -511,6 +512,7 @@ NEW_TESTS_RES = \ test_plugin_matchparen.res \ test_plugin_termdebug.res \ test_plugin_tohtml.res \ + test_plugin_tutor.res \ test_plugin_zip.res \ test_plus_arg_edit.res \ test_popup.res \ diff --git a/src/testdir/test_plugin_tutor.vim b/src/testdir/test_plugin_tutor.vim new file mode 100644 index 000000000..61cea3faf --- /dev/null +++ b/src/testdir/test_plugin_tutor.vim @@ -0,0 +1,16 @@ +" Test for the new-tutor plugin + +func SetUp() + set nocompatible + runtime plugin/tutor.vim +endfunc + +func Test_auto_enable_interactive() + Tutor + call assert_equal('nofile', &buftype) + call assert_match('tutor#EnableInteractive', b:undo_ftplugin) + + edit Xtutor/Xtest.tutor + call assert_true(empty(&buftype)) + call assert_match('tutor#EnableInteractive', b:undo_ftplugin) +endfunc diff --git a/src/version.c b/src/version.c index 4a9ad83dd..55860d2d6 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1384, /**/ 1383, /**/ -- -- 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/E1uEY9G-006UD7-Rx%40256bit.org.