MacVim: SlimV не запускается
Я использую MacVim (разновидность gvim для OSX) и пытаюсь запустить плагин slimv. К сожалению, это не работает из коробки. На самом деле он вообще не запускается.
Моя настройка:
- MacVim (32-битная причина этого) (vim 7.3)
- : scriptnames не отображается
ftplugin/slimv.vim
в то время какplugin/paredit.vim
в списке - : установить фут? шоу
filetype=lisp
для файлов.lisp - : сообщения не показывают ошибок
- :тип файла
filetype detection:ON plugin:ON indent:ON
- : echo g: paredit_loaded
1
- : echo g: slimv_loaded
E121: Undefined variable: g:slimv_loaded \ E15: Invalid expression: g:slimv_loaded
- скомпилировано с + python (2.7)
SBCL и slime установлены - работает безупречно с emacs. Я пробовал с и без let g:slimv_swank_cmd = ...
в.vimrc и изменил строку, рекомендованную на странице плагина от
let g:slimv_swank_cmd = '!osascript -e "tell application \"Terminal\" to do script \"sbcl --load ~/.vim/slime/start-swank.lisp\""'
в
let g:slimv_swank_cmd = '!sh -c "sbcl --load /Applications/MacVim.app/Contents/Resources/vim/runtime/slime/start-swank.lisp" &'
так как osascript не работал, и я не знаю, как это исправить. Но аналогичного вызова xterm достаточно для Linux, поэтому мой вызов sh должен быть в порядке. Ну, я понятия не имею, что попробовать дальше.:/
Проблема была решена установкой slimv в ~/.vim вместо vim ebedded в MacVim. Может быть, какая-то ошибка? Впрочем, Common Lisp + vim - мне это просто нравится.
3 ответа
Потому что переместить плагин SlimV в ~/.vim
я решил, что проблема в том, что MacVim по умолчанию /Applications/MacVim.app/Contents/Resources/vim/runtime/ftplugin/lisp.vim
в настоящее время поставляется до ftplugin/lisp/slimv-lisp.vim
файл предоставляется с SlimV.
Оба этих файла (lisp.vim
а также slimv-lisp.vim
) начнем с кода, подобного следующему:
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
" Don't load another plugin for this buffer
let b:did_ftplugin = 1
и поэтому, какой бы файл не был получен первым, он не сможет работать, так как vim finish
(выходит из сценария), если обнаруживает, что ранее был запущен другой сценарий *lisp*.vim, и поэтому устанавливает b:did_ftplugin
буферная локальная переменная.
Вы можете сказать, что это происходит, запустив MacVim из командной строки с аргументами:
-V20macvim-log.txt hello.lisp
Затем выйдите из сеанса MacVim, который запускается, и посмотрите на файл macvim-log.txt, который он создал.
Ищи b:did_ftplugin
и вы увидите, что на него ссылаются каждый раз lisp.vim
или же slimv-lisp.vim
работает, и вы можете видеть, что lisp.vim
запускается первым, что мешает slimv-lisp.vim
с работы.
Перемещение вашего Slimv установки с /Applications/MacVim.app/
DIR к вашему ~/.vim
dir изменит порядок так, чтобы slimv-lisp.vim
поставлено раньше lisp.vim
, а то SlimV будет работать.
Если slimv.vim не указан в :scriptnames
а также g:slimv_loaded
не определено, тогда у вас вообще не загружается плагин. Я полагаю, у вас не включены подключаемые модули для типов файлов. Paredit - это общий плагин, но slimv.vim - это плагин файлового типа, и плагины filetype/indent должны быть явно включены. Попробуйте добавить эти строки в свой .vimrc
:
filetype plugin on
filetype indent on
Проблема была решена установкой slimv в ~/.vim вместо vim ebedded в MacVim. Может быть, какая-то ошибка? Впрочем, Common Lisp + vim - мне это просто нравится.