diff --git a/runtime/autoload/tutor.vim b/runtime/autoload/tutor.vim index a546f7007e..8e3e524649 100644 --- a/runtime/autoload/tutor.vim +++ b/runtime/autoload/tutor.vim @@ -220,6 +220,7 @@ function! tutor#TutorCmd(tutor_name) call tutor#SetupVim() exe "edit ".l:to_open + call tutor#EnableInteractive(v:true) call tutor#ApplyTransform() endfunction @@ -229,6 +230,27 @@ function! tutor#TutorCmdComplete(lead,line,pos) 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 + function! tutor#ApplyTransform() if has('win32') sil! %s/{unix:(\(.\{-}\)),win:(\(.\{-}\))}/\2/g diff --git a/runtime/ftplugin/tutor.vim b/runtime/ftplugin/tutor.vim index a0e4907692..4477b58123 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 3156b94dbb..afeed09b81 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/test/old/testdir/test_plugin_tutor.vim b/test/old/testdir/test_plugin_tutor.vim new file mode 100644 index 0000000000..61cea3faff --- /dev/null +++ b/test/old/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