2013-05-22 16 views

Odpowiedz

5

Masz rację; specjalna zmienna, taka jak v:vimmode, byłaby pomocna, ale nie sądzę, aby coś takiego istniało. Dlaczego nie podnieść tego na vim_dev mailing list?!

W międzyczasie musisz wykryć tryb poprzez wywołanie czegoś, co jest zabronione w trybie ograniczonym. Mój najlepszy pomysł, który jest najmniej inwazyjnym na sukces jest wywoływanie writefile() z pustym Nazwa pliku:

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

nie jestem pewien, czy to dobry pomysł:

restricted-mode niepełnosprawnych polecenia zewnętrzne (także niektóre związane z nimi funkcje). Jeśli wywołasz zewnętrzne polecenie lub pewne określone funkcje w rvim, otrzymamy błąd E145.

Więc może po prostu zadzwonić do jakiegoś obojętnego polecenia zewnętrznego przez system(), a następnie złapać wyjątek E145. aby odróżnić, czy jest w trybie ograniczonym. na przykład

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

nadzieję, że pomoże

Powiązane problemy