`use-package` with: config zum Setzen von Variablen


9

Ich versuche, use-packagemeine org-modeInitialisierung einzurichten . Ich habe Folgendes in meiner ~/.emacsDatei:

(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
  )
)

Nichts davon :configwird jedoch ausgeführt. Habe ich die falschen Paketnamen oder so? Ich bin etwas verwirrt über Paketnamen vs. ELPA-Namen vs. Aufrufbefehle ....


Werfen Sie einen Blick darauf org.elund Sie werden gegen Ende sehen : (provide 'org). Mit diesem Symbol ( org) würden Sie das Paket wie folgt laden : (require 'org). Das ist letztendlich das, was use-packagewir tun, nur mit ein paar nützlichen Dingen. Ein bestimmtes Paket kann viele Modi definieren, sodass die Paket- und Modusnamen nicht immer gleich sind. Dies ist wirklich das gleiche Problem wie die andere Frage html-modezur Definition durch das sgml-modePaket.
— Glucas

Die "andere Frage" @glucas erwähnt: emacs.stackexchange.com/q/10396/8899
— Ken Williams

Antworten:


18

Das Folgende würde funktionieren. Aus Gründen der Klarheit verwende ich :ensure org-plus-contribeine, die etwas von dem Beispiel in Ihrer Frage abweicht.

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

Hier sind einige Erläuterungen zu den oben genannten Punkten:

  • (use-package FEATURE-NAME
    • FEATURE-NAMEist das, was in der (provide ..)Zeile eines Pakets steht. Denn org-modediese Zeile ist (provide 'org).
  • :mode ((FILE-REGEXP . MAJOR-MODE))
    • FILE-REGEXPist der reguläre Ausdruck, für den ein bestimmter Hauptmodus aktiviert werden soll. Sie hatten das richtig : "\\.org$".
    • MAJOR-MODEist der Name des Hauptmodus, den Sie aktivieren möchten (einschließlich des -modeTeils des Hauptmodusnamens). In diesem Fall lautet der Name des Hauptmodus org-mode.
    • Der Stil :mode (FILE-REGEXP), den Sie verwendet haben, würde nur funktionieren, wenn FEATURE-NAMEund MAJOR-MODEgenau der gleiche ist. Beispiel : cperl-mode.
  • :ensure PACKAGE-NAME
    • PACKAGE-NAMEist das, was ich in der Paketliste ( M-x package-list-packages) sehe . Aus Gründen der Klarheit installieren wir in meiner obigen Lösung das Paket org-plus-contrib1 . Dies soll zeigen, dass der Funktionsname, der Hauptmodus und der tatsächliche Paketname nicht exakt identisch sein müssen. Und ich bevorzuge es auch, das zu installieren, anstatt einfach zu sein, org-modeda Sie auch alle contrib/Paket-Goodies erhalten! :) :)

1 Sie müssen (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)Ihre Emacs-Konfiguration hinzufügen , um sie installieren zu können org-plus-contrib. Weitere Informationen finden Sie auf der offiziellen Installationsseite im Organisationsmodus.


Hinweis

Der beste Weg, um das obige use-packageSnippet zum Laufen zu bringen, besteht darin, es zuerst in Ihrer Emacs-Konfiguration zu speichern, dann frühere von Package Manager installierte Versionen von zu löschen orgund dann Emacs neu zu starten.


Vielen Dank - ich habe immer noch Probleme mit einem Aspekt. Wenn ich die R-Unterstützung von org org-babel-do-load-languagesin diesem Zusammenhang zum Laufen bringe , wird der Fehler angezeigt Error (use-package): org :config: Invalid function: org-babel-header-args-safe-fn. Andere Sprachen (zB shoder perloder emacs-lisp) scheinen gut zu funktionieren.
— Ken Williams

Das sieht nach einem nicht verwandten Thema aus. Verwenden Sie dieses Makro wie vorgesehen? Sie können mehr darüber erfahren, indem Sie dies tun C-h f org-babel-header-args-safe-fn. Außerdem haben Sie diesen Code-Ausschnitt nicht in Ihrer Frage. Es ist also schwer zu erraten, was los ist.
— Kaushal Modi

Es scheint dieses Problem zu sein: mail-archive.com/emacs-orgmode@gnu.org/msg98818.html . Ich bin mir noch nicht sicher, wie ich es lösen soll. Meine vollständige Konfiguration finden Sie hier: gist.github.com/kenahoo/8bca2ecc5cbe6e48a91c und das Auskommentieren der (R . t)Zeile stoppt den Fehler. Also ja, ein nicht verwandtes Problem, denke ich. Möglicherweise muss eine andere Frage geöffnet werden ...
— Ken Williams

Es sieht so aus, als ob mein Organisationsmodus selbst mit dem neuesten Update kaputt gegangen ist. Es wurde behoben, dass beim emacs -QStarten der Bereinigung meine 'packageKonfiguration sorgfältig geladen , deinstalliert orgund org-plus-contribanschließend neu installiert wurde. Das Problem wird hier erklärt: emacs.stackexchange.com/a/13576/8899
— Ken Williams

Ah, tut mir leid. Wahrscheinlich hat die Installation org-plus-contribIhre Organisationsinstallation durcheinander gebracht und Sie hatten eine Mischung aus Versionen. Übrigens müssen Sie nur installieren org-plus-contrib. Sie müssen das separate orgPaket auch nicht installieren .
— Kaushal Modi

4

Mit der Einschränkung, die ich vorher nicht verwendet habe use-package, glaube ich, dass Sie orgeher wollen als org-mode. Ich stütze mich dabei auf die Tatsache, dass mein Emacs (package-installed-p 'org-mode)null zurückgibt, während (package-installed-p 'org)dies nicht der Fall ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.