mirror of
https://github.com/vim/vim
synced 2025-07-16 01:01:58 +00:00
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 <phambinhanctb2004@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
8d0e42b710
commit
13bea589a2
@ -210,6 +210,7 @@ function! tutor#TutorCmd(tutor_name)
|
|||||||
|
|
||||||
call tutor#SetupVim()
|
call tutor#SetupVim()
|
||||||
exe "edit ".l:to_open
|
exe "edit ".l:to_open
|
||||||
|
call tutor#EnableInteractive(v:true)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! tutor#TutorCmdComplete(lead,line,pos)
|
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'))
|
let l:names = uniq(sort(map(l:tutors, 'fnamemodify(v:val, ":t:r")'), 's:Sort'))
|
||||||
return join(l:names, "\n")
|
return join(l:names, "\n")
|
||||||
endfunction
|
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
|
||||||
|
@ -6,21 +6,13 @@
|
|||||||
" Original Author: Felipe Morales <hel.sheep@gmail.com>
|
" Original Author: Felipe Morales <hel.sheep@gmail.com>
|
||||||
" Last Change:
|
" Last Change:
|
||||||
" 2025 May 10 set b:undo_ftplugin
|
" 2025 May 10 set b:undo_ftplugin
|
||||||
|
" 2025 May 12 update b:undo_ftplugin
|
||||||
|
|
||||||
" Base: {{{1
|
" Base: {{{1
|
||||||
call tutor#SetupVim()
|
call tutor#SetupVim()
|
||||||
|
|
||||||
" Buffer Settings: {{{1
|
" Buffer Settings: {{{1
|
||||||
setlocal noreadonly
|
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 noundofile
|
||||||
|
|
||||||
setlocal keywordprg=:help
|
setlocal keywordprg=:help
|
||||||
@ -46,14 +38,7 @@ call tutor#SetNormalMappings()
|
|||||||
sign define tutorok text=✓ texthl=tutorOK
|
sign define tutorok text=✓ texthl=tutorOK
|
||||||
sign define tutorbad text=✗ texthl=tutorX
|
sign define tutorbad text=✗ texthl=tutorX
|
||||||
|
|
||||||
if !exists('g:tutor_debug') || g:tutor_debug == 0
|
let b:undo_ftplugin = "setl foldmethod< foldexpr< foldlevel< undofile< keywordprg< iskeyword< |"
|
||||||
call tutor#ApplyMarks()
|
\ . "call tutor#EnableInteractive(v:false) |"
|
||||||
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< |'
|
|
||||||
|
|
||||||
" vim: fdm=marker
|
" vim: fdm=marker
|
||||||
|
@ -2,16 +2,11 @@
|
|||||||
" Maintainer: This runtime file is looking for a new maintainer.
|
" Maintainer: This runtime file is looking for a new maintainer.
|
||||||
" Contributors: Phạm Bình An <phambinhanctb2004@gmail.com>
|
" Contributors: Phạm Bình An <phambinhanctb2004@gmail.com>
|
||||||
" Original Author: Felipe Morales <hel.sheep@gmail.com>
|
" Original Author: Felipe Morales <hel.sheep@gmail.com>
|
||||||
" Date: 2025 May 10
|
" Date: 2025 May 12
|
||||||
|
|
||||||
if exists('g:loaded_tutor_mode_plugin') || &compatible
|
if exists('g:loaded_tutor_mode_plugin') || &compatible
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let g:loaded_tutor_mode_plugin = 1
|
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>)
|
command! -nargs=? -complete=custom,tutor#TutorCmdComplete Tutor call tutor#TutorCmd(<q-args>)
|
||||||
|
@ -17,15 +17,8 @@ Table of contents:
|
|||||||
|
|
||||||
## SETTING UP *setting-up*
|
## SETTING UP *setting-up*
|
||||||
|
|
||||||
First, you'll need to enable "debug" mode
|
Create a new .tutor file (we will be practicing on this very file, so you don't
|
||||||
~~~ cmd
|
need to do this now):
|
||||||
: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):
|
|
||||||
~~~ cmd
|
~~~ cmd
|
||||||
:e new-tutorial.tutor
|
:e new-tutorial.tutor
|
||||||
~~~
|
~~~
|
||||||
|
@ -245,6 +245,7 @@ NEW_TESTS = \
|
|||||||
test_plugin_matchparen \
|
test_plugin_matchparen \
|
||||||
test_plugin_termdebug \
|
test_plugin_termdebug \
|
||||||
test_plugin_tohtml \
|
test_plugin_tohtml \
|
||||||
|
test_plugin_tutor \
|
||||||
test_plugin_zip \
|
test_plugin_zip \
|
||||||
test_plus_arg_edit \
|
test_plus_arg_edit \
|
||||||
test_popup \
|
test_popup \
|
||||||
@ -511,6 +512,7 @@ NEW_TESTS_RES = \
|
|||||||
test_plugin_matchparen.res \
|
test_plugin_matchparen.res \
|
||||||
test_plugin_termdebug.res \
|
test_plugin_termdebug.res \
|
||||||
test_plugin_tohtml.res \
|
test_plugin_tohtml.res \
|
||||||
|
test_plugin_tutor.res \
|
||||||
test_plugin_zip.res \
|
test_plugin_zip.res \
|
||||||
test_plus_arg_edit.res \
|
test_plus_arg_edit.res \
|
||||||
test_popup.res \
|
test_popup.res \
|
||||||
|
16
src/testdir/test_plugin_tutor.vim
Normal file
16
src/testdir/test_plugin_tutor.vim
Normal file
@ -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
|
@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1384,
|
||||||
/**/
|
/**/
|
||||||
1383,
|
1383,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user