変数を設定するための:configを使用した `use-package`


9

を使用use-packageしてorg-mode初期化を設定しようとしています。私の~/.emacsファイルには次のものが含まれています。

(use-package org-mode
  :mode "\\.org$"
  :ensure org
  :config
  (progn
    (setq org-log-done 'time)
    (setq org-confirm-babel-evaluate nil)
    (setq org-export-babel-evaluate nil)
    (setq org-html-validation-link nil)
    ;; ... more stuff
  )
)

:configただし、その初期化機能は実行されません。パッケージ名は間違っていますか?パッケージ名対ELPA名対呼び出しコマンドについて、少し混乱します。


見てorg.elみましょう(provide 'org)。最後に向かって表示されます。その記号(org)は、次のようにパッケージをロードするために使用するものです(require 'org)。それが最終的に何use-packageをしているか、その周りにいくつかの便利なものがあるだけです。特定のパッケージは多くのモードを定義できるため、パッケージとモードの名前は常に同じではありません。これはhtml-modesgml-modeパッケージによって定義されることについての他の質問と本当に同じ問題です。
グルカ、2015年

「他の質問」@glucasの言及:emacs.stackexchange.com/q/10396/8899
ケンウィリアムズ

回答:


18

以下はうまくいくでしょう。明確にするために、私は:ensure org-plus-contribあなたの質問の例から少しずれているものを使用しています。

(use-package org
  :mode (("\\.org$" . org-mode))
  :ensure org-plus-contrib
  :config
  (progn
    ;; config stuff
    ))

上記の説明の一部を以下に示します。

  • (use-package FEATURE-NAME
    • FEATURE-NAME(provide ..)パッケージの行にあるものです。の場合org-mode、その行は(provide 'org)です。
  • :mode ((FILE-REGEXP . MAJOR-MODE))
    • FILE-REGEXP特定のメジャーモードを有効にする正規表現です。正解です"\\.org$"
    • MAJOR-MODE有効-modeにするメジャーモードの名前です(メジャーモード名の一部を含む)。この場合、メジャーモード名はorg-modeです。
    • スタイル:mode (FILE-REGEXP)場合と同じだけの仕事を使用したことFEATURE-NAMEMAJOR-MODEまったく同じです。例:cperl-mode
  • :ensure PACKAGE-NAME
    • PACKAGE-NAMEパッケージリスト(M-x package-list-packages)に表示されているものです。明確にするために、上記の私のソリューションでは、org-plus-contrib1つのパッケージをインストールしています。これは、機能名、メジャーモード、および実際のパッケージ名が完全に同じである必要はないことを示すためです。またorg-modecontrib/パッケージの特典もすべて手に入るので、プレーンではなくインストールする方が好きです。:)

1(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)インストールするには、emacs設定に追加する必要がありますorg-plus-contrib。詳細については、公式のorg-modeインストールページ参照してください。


注意

上記のuse-packageスニペットを機能させる最良の方法は、まずそれをemacs構成に保存し、次に以前のパッケージマネージャーがインストールされているバージョンのを削除してから、emacs orgを再起動することです。


おかげで、私はまだ1つの側面で問題を抱えてorg-babel-do-load-languagesいますError (use-package): org :config: Invalid function: org-babel-header-args-safe-fn。このコンテキストでorgのRサポートを使用するには、エラーが発生します。他の言語(shまたはperlまたはemacs-lisp)は正常に動作するようです。
ケンウィリアムズ、

それは無関係な問題のように見えます。意図したとおりにそのマクロを使用していますか?あなたはそれをすることによってそれについてもっと学ぶことができますC-h f org-babel-header-args-safe-fn。また、質問にそのコードスニペットはありません。したがって、何が起こっているのかを推測するのは困難です。
Kaushal Modi、2015

この問題のようです:mail-archive.com/emacs-orgmode@gnu.org/msg98818.html。解決方法はまだわかりません。私の完全な設定はここにあります:gist.github.com/kenahoo/8bca2ecc5cbe6e48a91cそして(R . t)行をコメントアウトするとエラーが停止します。ええ、無関係な問題だと思います。別の質問を開く必要があるかもしれません...
ケンウィリアムズ

組織モード自体が最新のアップデートで壊れたようです。emacs -Qクリーンアップを開始し、'package構成を注意深くロードし、アンインストールorgしてorg-plus-contribから再インストールすることで修正しました。問題はここで説明されています:emacs.stackexchange.com/a/13576/8899
ケンウィリアムズ

ああ、ごめんなさい。おそらく、インストールするorg-plus-contribと組織のインストールが台無しになり、バージョンが混在することになります。ところで、あなただけをインストールする必要がありますorg-plus-contrib。別のorgパッケージをインストールする必要もありません。
Kaushal Modi

4

私がuse-package以前に使ったことのない警告があるので、私はあなたが望んorgでいるのではなく、と思っていますorg-mode。これは、私のEmacsでは(package-installed-p 'org-mode)nilを返すのにnilを返さ(package-installed-p 'org)ないという事実に基づいています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.