以下を使用して、Emacs24にcmake-mode
パッケージをインストールしました。
M-x package-install cmake-mode
パッケージは~/.emacs.d/elpa/cmake-mode-20110824
で確認でき、Commentary:
の~/.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))
ただし、これはELPAのEmacsWikiページの 使用方法 と矛盾します。
...パッケージは、init.elがロードされた後に初期化されます。これは、パッケージ固有の初期化をinit.elに入れてはならないことを意味します...
~/.gnu-emacs
ファイルに次のような行を追加するため、この指示に同意する傾向があります。
(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
醜いです、そして私がパッケージをアップグレードするならばそしていつ壊れます。ただし、この行がないと、cmake-mode
を使用できません。
ここで何かが足りませんか?
注:
package-enable-at-startup
で何も奇妙なことはしませんでしたが、その値はt
です。user-emacs-directory
値は"~/.emacs.d/"
(提案をありがとう@lawlist)package-user-dir
値は"~/.emacs.d/elpa"
ですMarmalade-repoを使用してcmake-modeをインストールし、cmake-mode-autoloads.elを確認しました。作成者が意識的に決定したようですnot
は、セットアップに必要なすべてのものをautoloadsファイルに含めます。ただし、cmake-mode.elの25行目から30行目の説明は正しいものであり、質問で引用しました。 25〜30行目を使用してパスを正しく設定した場合は、[〜#〜] not [〜#〜](add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
などの追加のコード行が必要になります。
明らかに、/dir/with/cmake-mode
を使用したくないでしょう-末尾にフォワードスラッシュなしで~/.emacs.d/elpa/cmake-mode-20110824
を使用したいです。
(setq load-path (cons (expand-file-name "~/.emacs.d/elpa/cmake-mode-20110824") load-path))
(require 'cmake-mode)
(setq auto-mode-alist
(append '(("CMakeLists\\.txt\\'" . cmake-mode)
("\\.cmake\\'" . cmake-mode))
auto-mode-alist))
上記のコードが機能しない場合は、c-make-mode ...ディレクトリを削除して、再インストールする必要がある場合があります(独自のパスを使用)。
Emacsハッカーの半分のコードリポジトリ、半分aide-memoireとしてのウィキの性質を考えると、あなたは当然のことながらこの点を見落としていました:
パッケージの初期化を起動時に別のポイントに移動するだけで、ELPAパッケージを(必須)できるようにする方が簡単な場合があります。これにより、説明されている問題の多くが処理されます。
これが私がすることです;私のカスタムinitスクリプトによってロードされた最初のファイルの1つ(私が収集できるすべてのものから、その作成は、深刻なEmacsが使用するpons asinorumです1)します
(require 'package)
(setq package-enable-at-startup nil)
(package-initialize)
そこから、必要なELPAパッケージを(require)
するだけです。これには、ELPAがインストールされたパッケージの動作をより細かく制御できるという利点もあります。たとえば、特定のパッケージを今のところ無効にしたいが、完全にアンインストールしたくない場合は、関連する(require)
呼び出しをコメントアウトするだけです。デフォルトの動作では、パッケージをELPAから移動する必要があります。ディレクトリ全体。
(1.ほとんど圧倒的な誘惑にもかかわらず、私は自分のカスタムinitスクリプトに名前を付けることを巧みに拒否しました lightsaber.el
。)
after-init-hook
を使用して、パッケージのロード後にすべての初期化を行うことができます。から EmacsWiki :
;; init.el
(add-hook 'after-init-hook (lambda () (load "<real init file>")))
ELPAを使い始めたときも同様の問題がありました。私の場合、ELPAに存在しなかったため、いくつかのローカルパッケージがありました。
したがって、ロードパスを変更しました。何らかの理由で、load-pathがpackage.elによって適切に更新されません。この問題を解決するには、(setq load-path (cons "~/.emacs.d" load-path))
afterpackage-initialize
を呼び出す必要がありました。