Je viens d'installer le cmake-mode
paquet dans Emacs 24 en utilisant:
M-x package-install cmake-mode
Je peux voir le paquet à:, ~/.emacs.d/elpa/cmake-mode-20110824
et je peux le charger en utilisant les instructions à la Commentary:
section de ~/.emacs.d/elpa/cmake-mode-20110824/cmake-mode.el
:
;; 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))
Cependant, cela contredit les instructions d'utilisation sur la page EmacsWiki d'ELPA:
... les packages sont initialisés APRÈS que l'init.el soit chargé. Cela signifie que vous ne devez PAS mettre d'initialisation spécifique au package dans votre init.el ...
J'ai tendance à être d'accord avec cette instruction, car en ajoutant à mon ~/.gnu-emacs
fichier une ligne telle que:
(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
est moche, et se cassera si et quand je mettrai à jour le paquet. Cependant, sans cette ligne, je ne peux pas utiliser cmake-mode
.
Est-ce que j'ai râté quelque chose?
Remarques:
- Je n'ai rien d'étrange avec
package-enable-at-startup
et sa valeur estt
. - J'utilise un prélude .
user-emacs-directory
la valeur est"~/.emacs.d/"
(Merci @lawlist pour la suggestion)package-user-dir
La valeur est"~/.emacs.d/elpa"
la source
default-directory
ou duuser-emacs-directory
, de sorte que leelpa
répertoire ne soit pas en cours de chargement?package-install
crée unelpa
répertoire et le fichier de chargement automatique créé lors de l'installation est basé sur cet emplacement.elpa
répertoire - c'est-à-dire qu'il~/.emacs.d/cmake-mode-20110824/
n'est pas là où le fichier de chargement automatique s'attend à ce qu'il soit.~/.emacs.d/elpa/cmake-mode-20110824/
. Le problème demeure.Réponses:
J'ai installé cmake-mode avec le marmalade-repo et jeté un œil à cmake-mode-autoloads.el. Il semble que l'auteur ait pris la décision consciente d'
not
inclure tout le nécessaire pour la configuration dans le fichier de chargement automatique. Cependant, les instructions sur les lignes 25 à 30 de cmake-mode.el sont correctes, que vous avez citées dans votre question. Si vous utilisez les lignes 25 à 30 et définissez le chemin correctement, vous n'avez PAS besoin d'une ligne de code supplémentaire telle que(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
.De toute évidence, vous ne voudriez pas utiliser
/dir/with/cmake-mode
- vous voulez utiliser~/.emacs.d/elpa/cmake-mode-20110824
sans une barre oblique vers la fin.Vous devrez peut-être supprimer le répertoire c-make-mode ... et réinstaller si le code ci-dessus ne fonctionne pas (en utilisant votre propre chemin).
la source
(package-initialize)
charge une autre. Ai-je tort? Je veux dire, je n'ai pas beaucoup utilisé ELPA et je n'ai pas encore mis à jour de paquet avec, donc je peux me tromper. Et, bien sûr, ce n'est pas une préoccupation majeure en tout cas, mais pourquoi ne pas l'éviter complètement?Étant donné la nature du wiki en tant que référentiel à moitié de code, à moitié aide-mémoire pour les pirates Emacs, vous avez naturellement oublié ce point:
C'est ce que je fais; l'un des premiers fichiers chargés par mon script d'initialisation personnalisé (dont la création, d'après tout ce que je peux rassembler, est le pons asinorum d'Emacs sérieux utilise 1 )
et à partir de là, j'ai simplement
(require)
besoin des packages ELPA dont j'ai besoin. Cela a également l'avantage de permettre un contrôle plus fin du comportement des packages installés par ELPA; si, par exemple, je souhaite désactiver un package donné pour le moment mais ne pas le désinstaller complètement, il suffit de commenter l'(require)
appel correspondant , où le comportement par défaut nécessiterait de déplacer le package de mon répertoire ELPA entièrement.(1. Malgré une tentation presque écrasante, j'ai refusé avec virilité de nommer mon script d'init personnalisé
lightsaber.el
.)la source
Vous pouvez simplement effectuer toute votre initialisation après le chargement des packages à l'aide de
after-init-hook
. De EmacsWiki :la source
J'ai eu un problème similaire lorsque j'ai commencé à utiliser ELPA. Dans mon cas, j'ai eu plusieurs paquets locaux car ceux-ci n'étaient pas présents dans ELPA.
Et donc j'avais modifié le chemin de chargement. Pour une raison quelconque, le chemin de chargement n'est pas correctement mis à jour par package.el. Pour résoudre le problème que j'ai dû poser
(setq load-path (cons "~/.emacs.d" load-path))
après l'appel àpackage-initialize
la source