Acabei de instalar o cmake-mode
pacote no Emacs 24 usando:
M-x package-install cmake-mode
Eu posso ver o pacote em: ~/.emacs.d/elpa/cmake-mode-20110824
e posso carregá-lo usando as instruções na Commentary:
seção ~/.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))
No entanto, isso contradiz as instruções de uso na página EmacsWiki do ELPA:
... os pacotes são inicializados APÓS o init.el ser carregado. Isso significa que você NÃO deve colocar a inicialização específica do pacote em seu init.el ...
Costumo concordar com esta instrução, pois adicionei ao meu ~/.gnu-emacs
arquivo uma linha como:
(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
é feio e quebrará se e quando atualizarei o pacote. No entanto, sem essa linha, eu sou incapaz de usar cmake-mode
.
Estou faltando alguma coisa aqui?
Notas:
- Não fiz nada de estranho
package-enable-at-startup
e seu valor ét
. - Eu estou usando prelúdio .
user-emacs-directory
value is"~/.emacs.d/"
(Obrigado @lawlist pela sugestão)package-user-dir
o valor é"~/.emacs.d/elpa"
emacs
package-management
elpa
cmake
Chen Levy
fonte
fonte
default-directory
ou deuser-emacs-directory
tal modo que oelpa
diretório não esteja sendo carregado?package-install
cria umelpa
diretório e o arquivo de carregamento automático criado durante a instalação é baseado nesse local.elpa
diretório - ou seja,~/.emacs.d/cmake-mode-20110824/
não é onde o arquivo de carregamento automático espera que esteja.~/.emacs.d/elpa/cmake-mode-20110824/
. O problema persiste.Respostas:
Instalei o cmake-mode com o marmalade-repo e dei uma olhada no cmake-mode-autoloads.el. Parece que o autor tomou uma decisão consciente,
not
incluindo tudo o necessário para a instalação no arquivo de carregamentos automáticos. No entanto, as instruções nas linhas 25 a 30 do cmake-mode.el estão corretas, citadas na sua pergunta. Se você usar as linhas 25 a 30 e definir o caminho corretamente, NÃO precisará de uma linha extra de código, como(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
.Obviamente, você não gostaria de usar
/dir/with/cmake-mode
- você deseja usar~/.emacs.d/elpa/cmake-mode-20110824
sem um ataque no final.Pode ser necessário excluir o diretório c-make-mode ... e tentar reinstalar se o código acima não funcionar (usando seu próprio caminho).
fonte
(package-initialize)
está carregando outra. Estou errado? Quero dizer, não usei muito o ELPA e ainda não atualizei nenhum pacote com ele, para poder estar errado. E, com certeza, não é uma grande preocupação em nenhum caso, mas por que não evitá-la completamente?Dada a natureza do wiki como meio repositório de código, meio memorando para hackers do Emacs, você ignorou esse ponto:
Isto é o que eu faço; um dos primeiros arquivos carregados pelo meu script de inicialização personalizada (cuja criação, a partir de tudo o que eu pude perceber, é o pons Asinorum de Emacs graves usar 1 ) faz
e de lá eu simplesmente do
(require)
que pacotes ELPA eu preciso. Isso também tem o benefício de permitir um controle mais preciso sobre o comportamento dos pacotes instalados pelo ELPA; se, por exemplo, quero desabilitar um determinado pacote no momento, mas não desinstalá-lo completamente, é uma simples questão de comentar a(require)
chamada relevante , onde o comportamento padrão exigiria mover o pacote totalmente do meu diretório ELPA.(1. Apesar da tentação quase esmagadora, eu me recusei a nomear meu script de inicialização personalizado
lightsaber.el
.)fonte
Você pode fazer toda a sua inicialização após o carregamento dos pacotes
after-init-hook
. No EmacsWiki :fonte
Eu tive um problema semelhante quando comecei a usar o ELPA. No meu caso, tive vários pacotes locais, pois eles não estavam presentes no ELPA.
E assim eu alterei o caminho de carregamento. Por alguma razão, o caminho de carregamento não é atualizado corretamente pelo package.el. Para resolver o problema, tive que colocar
(setq load-path (cons "~/.emacs.d" load-path))
após a chamada parapackage-initialize
fonte