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 - мне это просто нравится.

Другие вопросы по тегам