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.

Raspunde prin e-mail lui