Ich habe das cmake-mode
Paket gerade in Emacs 24 installiert mit:
M-x package-install cmake-mode
Ich kann das Paket unter: sehen ~/.emacs.d/elpa/cmake-mode-20110824
und es mit der Anweisung im Commentary:
Abschnitt ~/.emacs.d/elpa/cmake-mode-20110824/cmake-mode.el
: laden.
;; Add this code to your .emacs file to use the mode:
;;
;; (setq load-path (cons (expand-file-name "/dir/with/cmake-mode") load-path))
;; (require 'cmake-mode)
;; (setq auto-mode-alist
;; (append '(("CMakeLists\\.txt\\'" . cmake-mode)
;; ("\\.cmake\\'" . cmake-mode))
;; auto-mode-alist))
Dies widerspricht jedoch der Gebrauchsanweisung auf der EmacsWiki-Seite von ELPA:
... Pakete werden initialisiert, nachdem die Datei init.el geladen wurde. Dies bedeutet, dass Sie KEINE paketspezifische Initialisierung in Ihre init.el ...
Ich stimme dieser Anweisung eher zu, da ich meiner ~/.gnu-emacs
Datei eine Zeile wie die folgende hinzufüge :
(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
ist hässlich und wird kaputt gehen, wenn ich das Paket aktualisiere. Ohne diese Leitung kann ich sie jedoch nicht verwenden cmake-mode
.
Vermisse ich hier etwas?
Anmerkungen:
- Ich habe nichts Seltsames gemacht
package-enable-at-startup
und sein Wert istt
. - Ich benutze den Auftakt .
user-emacs-directory
Wert ist"~/.emacs.d/"
(Danke @lawlist für den Vorschlag)package-user-dir
Wert ist"~/.emacs.d/elpa"
quelle
default-directory
oder desuser-emacs-directory
so geändert haben , dass daselpa
Verzeichnis nicht geladen wird? Erstelltpackage-install
einelpa
Verzeichnis und die Autoloads-Datei, die während der Installation erstellt wird, basiert auf diesem Speicherort.elpa
Verzeichnis verschoben haben - dh~/.emacs.d/cmake-mode-20110824/
nicht dort, wo die Autoloads-Datei dies erwartet.~/.emacs.d/elpa/cmake-mode-20110824/
. Das Problem bleibt bestehen.Antworten:
Ich habe den cmake-Modus mit dem Marmeladen-Repo installiert und mir cmake-mode-autoloads.el angesehen. Es scheint, dass der Autor eine bewusste Entscheidung getroffen hat,
not
alles, was für das Setup benötigt wird, in die Autoloads-Datei aufzunehmen. Die Anweisungen in den Zeilen 25 bis 30 von cmake-mode.el sind jedoch korrekt, die Sie in Ihrer Frage zitiert haben. Wenn Sie die Zeilen 25 bis 30 verwenden und den Pfad korrekt einstellen, benötigen Sie KEINE zusätzliche Codezeile wie z(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
.Natürlich möchten Sie nicht verwenden
/dir/with/cmake-mode
- Sie möchten~/.emacs.d/elpa/cmake-mode-20110824
ohne Vorwärtsspiel am Ende verwenden.Möglicherweise müssen Sie das Verzeichnis c-make-mode ... löschen und eine Neuinstallation versuchen, wenn der obige Code nicht funktioniert (unter Verwendung Ihres eigenen Pfads).
quelle
(package-initialize)
eine andere laden. Liege ich falsch? Ich meine, ich habe ELPA nicht viel benutzt und muss noch irgendwelche Pakete damit aktualisieren, also könnte ich mich irren. Und natürlich ist es auf keinen Fall ein großes Problem, aber warum nicht ganz vermeiden?Angesichts der Natur des Wikis als halbes Code-Repository, halbes Aide-Memoire für Emacs-Hacker haben Sie diesen Punkt verständlicherweise übersehen:
Das ist was ich mache; Eine der ersten Dateien, die von meinem benutzerdefinierten Init-Skript geladen wurden (deren Erstellung, soweit ich das beurteilen kann, das Pons Asinorum der ernsthaften Verwendung von Emacs 1 ist )
und von dort habe ich einfach
(require)
welche ELPA-pakete ich brauche. Dies hat auch den Vorteil, dass das Verhalten von ELPA-installierten Paketen genauer gesteuert werden kann. Wenn ich beispielsweise ein bestimmtes Paket für den Moment deaktivieren, aber nicht vollständig deinstallieren(require)
möchte, muss lediglich der entsprechende Aufruf auskommentiert werden, bei dem das Standardverhalten das vollständige Verschieben des Pakets aus meinem ELPA-Verzeichnis erfordern würde.(1. Trotz fast überwältigender Versuchung weigerte ich mich, mein benutzerdefiniertes Init-Skript zu benennen
lightsaber.el
.)quelle
Sie können einfach Ihre gesamte Initialisierung durchführen, nachdem Pakete mit geladen wurden
after-init-hook
. Aus EmacsWiki :quelle
Ich hatte ein ähnliches Problem, als ich anfing, ELPA zu verwenden. In meinem Fall hatte ich mehrere lokale Pakete, da diese in ELPA nicht vorhanden waren.
Und so hatte ich den Lastweg geändert. Aus irgendeinem Grund wird der Ladepfad von package.el nicht ordnungsgemäß aktualisiert. Um das Problem zu lösen, musste ich
(setq load-path (cons "~/.emacs.d" load-path))
nach dem Anruf an setzenpackage-initialize
quelle