10

重複の可能性:
Emacs 24 パッケージ システムの初期化の問題

私は Emacs 24 を使用しています。ELPA と Marmalade リポジトリが追加されています。「パッケージ」を使用して「オートコンプリート」をインストールしました。init.el に次の行を追加しました。

(require 'auto-complete-config)
(ac-config-default)

Emacsを起動すると、エラーが発生します

ファイル エラー: ロード ファイルを開けません、auto-complete-config

しかし、私は使用します

Mx ロードファイル

同じ ~/.emacs.d/init.el ファイルをロードすると、プロンプトが表示されて正常に動作します

/home/user/.emacs.d/init.el (ソース) を読み込んでいます...完了

通常のロードは「Mx load-file」コマンドとどう違うのですか? init.el ファイルの冒頭で、私は次のことを行います。これは、何らかの形でパッケージのロードに影響します。

(add-to-list 'load-path "~/.emacs.d")
(load "custom_code")

4

1 に答える 1

11

以下のコメントで述べたように:重複した質問に対する phils の回答は、おそらくこれよりも役立つでしょう。

これは、ほぼ確実init.elに、パッケージを分類するコードの前にファイルが実行されることを意味しますpackage.el。後者のコードは、オートコンプリート ライブラリを含むディレクトリをロード パスに追加します。

package.el ではなく、まだ ELPA を使用しています。elpa を使用すると、このようなスニペットが の下部にインストールされます.emacs

;;; This was installed by package-install.el.
;;; This provides support for the package system and
;;; interfacing with ELPA, the package archive.
;;; Move this code earlier if you want to reference
;;; packages in your .emacs.
(when
    (load
     (expand-file-name "~/.emacs.d/elpa/package.el"))
  (package-initialize))

package.elコメントが示唆するように、おそらく同等の初期化コードをロードするものの前に置きたいと思うでしょうinit.el

.emacs.d最後に: に追加することに言及していることに気付きましたload-path。Emacs のロード パスは再帰的ではないため、必要な処理が行われない可能性があります (ライブラリがサブディレクトリにあると仮定すると)。何年も前に、私が書いた elisp コードのさまざまなライブラリをロードするために、このスニペットを書きました。役に立つかもしれません。(明らかに、シェルと find コマンドを使用する unixy システムでのみ動作します。かなり遅いですが、shell-command-to-string「echo hello」などを実行しても数ミリ秒かかるようです)

(defun find-elisp-dirs (dir)
  "Find all directories below DIR containing elisp sources, ignoring those"
  (split-string
   (shell-command-to-string
    (format "find %s -iname '*.el' -printf '%%h\\n' | sort -u"
            (expand-file-name dir t)))))
于 2012-08-21T13:03:43.237 に答える