MacVim: SlimV не запускается - PullRequest
       45

MacVim: SlimV не запускается

3 голосов
/ 02 апреля 2012

Я использую MacVim (разновидность gvim для OSX) и пытаюсь запустить плагин slimv . К сожалению, это не работает из коробки. На самом деле он вообще не запускается.

Моя настройка:

  • MacVim (32 бита причина этого ) (vim 7.3)
  • : имена сценариев не отображаются ftplugin/slimv.vim, а plugin/paredit.vim в списке
  • : установить ft? показывает filetype=lisp для файлов .lisp
  • : сообщения не показывает ошибок
  • : тип файла filetype detection:ON plugin:ON indent:ON
  • : echo g: paredit_loaded 1
  • : эхо 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, вставленного в MacVim. Может быть, какая-то ошибка? Тем не менее, Common Lisp + vim - мне это просто нравится.

Ответы [ 3 ]

2 голосов
/ 12 сентября 2013

Поскольку перемещение подключаемого модуля 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/ в вашу директорию ~/.vim изменитсяпорядок, чтобыslimv-lisp.vim поставляется до lisp.vim, и тогда будет работать slimv.

2 голосов
/ 02 апреля 2012

Если slimv.vim не указан в :scriptnames и g:slimv_loaded не определен, то у вас вообще не загружен плагин.Я полагаю, у вас не включены подключаемые модули для типов файлов.Paredit - это общий плагин, но slimv.vim - это плагин файлового типа, и плагины filetype / indent должны быть явно включены.Попробуйте добавить эти строки в ваш .vimrc:

filetype plugin on
filetype indent on
0 голосов
/ 02 апреля 2012

Проблема была решена установкой slimv в ~ / .vim вместо vim, скопированного в MacVim.Может быть, какая-то ошибка?Тем не менее, Common Lisp + vim - мне это просто нравится.

...