2013-05-22 15 views

risposta

5

Hai ragione; una variabile speciale come v:vimmode sarebbe utile, ma non credo che esista attualmente una cosa del genere. Perché non sollevarlo su vim_dev mailing list?!

Nel frattempo, è necessario rilevare la modalità attraverso il risultato di invocare qualcosa che è vietato in modalità limitata. La mia idea migliore che è il meno intrusivo in caso di successo è invocare writefile() con un nome file vuoto:

silent! call writefile([], '') 
" In restricted mode, this fails with E145: Shell commands not allowed in rvim 
" In non-restricted mode, this fails with E482: Can't create file <empty> 
let isRestricted = (v:errmsg =~# '^E145:') 
2

Non sono sicuro se questa è una buona idea:

restricted-mode disabili comandi esterni (anche alcune funzioni correlate). Se chiamiamo un comando esterno o alcune funzioni in una rvim, otteniamo l'errore E145.

Quindi potresti chiamare semplicemente un comando esterno fittizio tramite system(), quindi prendere l'eccezione E145. per distinguere se è in modalità limitata. per esempio.

try 
    call system("echo x") "or even call system("") 
catch /E145/ 
"your codes 
endtry 

Speranza che aiuta

Problemi correlati