2012-04-01 16 views
3

Ich benutze MacVim (Art von gvim für OSX) und versuche, das slimv Plugin zu bekommen. Leider funktioniert es nicht aus der Box. Tatsächlich fängt es überhaupt nicht an.MacVim: Slimv startet nicht

Mein Setup:

  • MacVim (32bit cause of this) (vim 7,3)
  • : script nicht ftplugin/slimv.vim auflistet, während plugin/paredit.vim
  • aufgeführt ist: set ft? zeigt filetype=lisp für .lisp Dateien
  • : Nachrichten zeigt keine Fehler
  • : filetypefiletype detection:ON plugin:ON indent:ON
  • : echo g: paredit_loaded1
  • : echo g: slimv_loadedE121: Undefined variable: g:slimv_loaded \ E15: Invalid expression: g:slimv_loaded
  • kompiliert mit + python (2.7)

SBCL und Schleim sind installiert - funktioniert einwandfrei mit Emacs. Ich versuchte es mit und ohne let g:slimv_swank_cmd = ... in .vimrc und änderte die auf der Plugin-Seite empfohlen Linie von

let g:slimv_swank_cmd = '!osascript -e "tell application \"Terminal\" to do script \"sbcl --load ~/.vim/slime/start-swank.lisp\""' 

zu

let g:slimv_swank_cmd = '!sh -c "sbcl --load /Applications/MacVim.app/Contents/Resources/vim/runtime/slime/start-swank.lisp" &' 

da die osascript nicht funktioniert und ich weiß nicht, wie man repariere es. Aber ein ähnlicher Aufruf an xterm ist ausreichend für Linux, so dass mein sh-Anruf in Ordnung sein sollte. Nun, ich habe keine Ahnung, was ich als nächstes versuchen soll. :

Das Problem wurde gelöst durch die Installation von slimv zu ~/.vim anstelle der vim in MacVim eingebettet. Vielleicht eine Art Käfer? Common Lisp + vim - ich liebe es einfach.

+0

Wenn ich mich richtig erinnere, wenn ich Slimv eingerichtet habe, kann VIM nicht der Elternprozess des minderwertigen LISP sein. Emacs hat ein Konzept von Kind-Prozessen, aber VIM nicht. Sie müssen also die Instanz von LISP von woanders aus starten. Deshalb hat der Standard einen 'osascript' Befehl - der ein neues Terminal-Fenster öffnet, das die LISP-Sitzung besitzt. –

+0

Die Verwendung des Standardbefehls öffnet kein Terminal (nichts passiert) und selbst das Starten des Prozesses von Hand hilft nicht. – Julian

+0

In meiner '.vimrc' Datei habe ich' g: slimv_swank_cmd = "! Osaskript -e 'der Anwendung \" Terminal \ "mitteilen, Skript zu machen \"/sw/opt/sbcl-1.0.47/bin/sbcl - load ~/.vim/slime/start-swank.lisp \ "'" '- Sie müssen Terminal anweisen, das Skript zu starten, nicht MacVIM wie Ihre erste Zeile zeigt. Versuchen Sie alternativ, den Befehl 'sbcl --load .../start-swank.lisp' zuerst in einem Terminal-Fenster auszuführen und dann slimv zu starten. Es sollte in der Lage sein, eine Verbindung zu einer bereits laufenden Instanz herzustellen, anstatt eine eigene Instanz zu starten. –

Antwort

2

Da das Verschieben des Slimv-Plugin zu ~/.vim es behoben, vermute ich das Problem ist, dass MacVim Standard /Applications/MacVim.app/Contents/Resources/vim/runtime/ftplugin/lisp.vim wird vor der 10 Datei mit SlimV bezogen wird.

Diese beiden Dateien (lisp.vim und slimv-lisp.vim) mit Code wie folgt beginnen:

" 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 

und so je nachdem, welche Datei zuerst die andere Datei wird verhindert, dass bezogen wird vom Laufen da vim tut finish (tritt aus dem Skript), wenn Es erkennt, dass zuvor ein anderes * lisp * .vim-Skript ausgeführt wurde, und setzt daher die pufferlokale Variable b:did_ftplugin.

können Sie sagen, dies geschieht MacVim von der Kommandozeile mit den Argumenten:

-V20macvim-log.txt hello.lisp 

dann die MacVim Sitzung beenden, die startet, und sehen Sie die MacVim-Datei log.txt es erstellt.

Suche nach b:did_ftplugin und Sie werden sehen, es jedes Mal lisp.vim oder slimv-lisp.vim Läufe verwiesen, und Sie können zunächst, dass lisp.vim Läufe sehen, die slimv-lisp.vim von der Arbeit verhindert.

Transportieren slimv vom /Applications/MacVim.app/ dir zu deinem ~/.vim Installationsverzeichnis wird die Reihenfolge ändern, so dass slimv-lisp.vim vor lisp.vim bezogen ist, und dann wird slimv arbeiten.

2

Wenn slimv.vim nicht in :scriptnames aufgeführt ist und g:slimv_loaded nicht definiert ist, dann haben Sie das Plugin überhaupt nicht geladen. Ich glaube, Sie haben keine Dateityp-Plugins aktiviert. PaRedit ist ein allgemeines Plugin, aber slimv.vim ist ein Dateityp-Plugin und Dateityp-/Einzug-Plugins müssen explizit aktiviert werden. Versuchen Sie, diese Zeilen zu Ihrer .vimrc hinzuzufügen:

filetype plugin on 
filetype indent on 
+0

Beide werden meiner .vimrc ohne Erfolg hinzugefügt. Das Problem wurde jedoch gelöst, indem das Plugin in ~/.vim anstelle von MacVim's embedded vim installiert wurde. Trotzdem danke. :) – Julian

0

Das Problem durch die Installation slimv zu ~/.vim anstelle des vim ebedded in MacVim gelöst wurde. Vielleicht eine Art Käfer? Allerdings Common Lisp + Vim - ich liebe es einfach.