From: Phạm Bình An Date: Mon, 12 May 2025 18:39:24 +0000 (+0200) Subject: patch 9.1.1384: still some problem with the new tutors filetype plugin X-Git-Tag: v9.1.1384^0 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=13bea589a25707c8f9e29b2920410bdcccd79bc5;p=thirdparty%2Fvim.git 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 Signed-off-by: Christian Brabandt --- diff --git a/runtime/autoload/tutor.vim b/runtime/autoload/tutor.vim index 3265fdde36..6ab796020d 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, "\n") 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 call tutor#ApplyMarksOnChanged() + augroup END + else + setlocal buftype< + setlocal concealcursor< + setlocal conceallevel< + if exists('#tutor_interactive') + autocmd! tutor_interactive * + endif + endif +endfunction diff --git a/runtime/ftplugin/tutor.vim b/runtime/ftplugin/tutor.vim index 5660cbf649..92bca8d198 100644 --- a/runtime/ftplugin/tutor.vim +++ b/runtime/ftplugin/tutor.vim @@ -6,21 +6,13 @@ " Original Author: Felipe Morales " 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 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 b79ba93093..495f31704c 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 " Original Author: Felipe Morales -" 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() diff --git a/runtime/tutor/tutor.tutor b/runtime/tutor/tutor.tutor index b46fcc4836..cdef5d55ce 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 de4e30f754..88bf5c3de0 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 0000000000..61cea3faff --- /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 4a9ad83dd9..55860d2d60 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, /**/