`use-package` con: config per impostare le variabili


9

Sto cercando di utilizzare use-packageper impostare la mia org-modeinizializzazione. Ho il seguente nel mio ~/.emacsfile:

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

Tuttavia, nessuno di questi elementi di :configinizializzazione viene eseguito. Ho i nomi dei pacchetti sbagliati o qualcosa del genere? Mi confondo un po 'i nomi dei pacchetti rispetto ai nomi ELPA rispetto ai comandi di chiamata ...


Date un'occhiata a org.ele vedrete verso la fine: (provide 'org). Quel simbolo ( org) è quello che si usa per caricare il pacchetto, come in: (require 'org). Questo è in definitiva ciò che use-packagesta facendo, solo con alcune cose utili intorno ad esso. Un determinato pacchetto può definire molte modalità, quindi i nomi dei pacchetti e delle modalità non sono sempre gli stessi. Questo è davvero lo stesso problema dell'altra domanda html-modesull'essere definito dal sgml-modepacchetto.
glucas,

L '"altra domanda" menziona @glucas: emacs.stackexchange.com/q/10396/8899
Ken Williams,

Risposte:


18

Il sotto funzionerebbe. Per motivi di chiarezza, sto usando ciò :ensure org-plus-contribche si discosta un po 'dall'esempio della tua domanda.

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

Ecco alcune note esplicative per quanto sopra:

  • (use-package FEATURE-NAME
    • FEATURE-NAMEè ciò che va nella (provide ..)linea di un pacchetto. Perché org-modequella linea è (provide 'org).
  • :mode ((FILE-REGEXP . MAJOR-MODE))
    • FILE-REGEXPè l'espressione regolare per cui si desidera abilitare una particolare modalità principale. Hai avuto quello corretto: "\\.org$".
    • MAJOR-MODEè il nome della modalità principale che si desidera abilitare (inclusa la -modeparte del nome della modalità principale). In questo caso, il nome della modalità principale è org-mode.
    • Lo stile :mode (FILE-REGEXP)che hai usato avrebbe funzionato solo se FEATURE-NAMEe fosse MAJOR-MODElo stesso. Esempio: cperl-mode.
  • :ensure PACKAGE-NAME
    • PACKAGE-NAMEè quello che vedo elencato nell'elenco dei pacchetti ( M-x package-list-packages). Per chiarezza, nella mia soluzione sopra, stiamo installando il pacchetto org-plus-contrib1 . Questo per dimostrare che il nome della funzione, la modalità principale e il nome del pacchetto effettivo non devono essere esattamente gli stessi. E anche io preferisco installare questo invece di plain org-modedato che ottieni anche tutti i contrib/goodies del pacchetto! :)

1(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t) Per installare , dovrai aggiungere la tua configurazione di emacs org-plus-contrib. Vedi la pagina ufficiale di installazione in modalità org per maggiori informazioni.


Nota

Il modo migliore per far funzionare lo use-packagesnippet sopra è salvarlo prima nella configurazione di emacs, quindi eliminare le versioni precedenti di Package Manager installate org, quindi riavviare emacs.


Grazie - Sto ancora riscontrando problemi con un aspetto, facendo in modo che il supporto R dell'org funzioni org-babel-do-load-languagesin questo contesto, dà l'errore Error (use-package): org :config: Invalid function: org-babel-header-args-safe-fn. Altre lingue (ad es. shO perlo emacs-lisp) sembrano funzionare bene.
Ken Williams,

Sembra un problema non correlato. Stai usando quella macro come previsto? Puoi saperne di più a riguardo facendo C-h f org-babel-header-args-safe-fn. Inoltre non hai quel frammento di codice nella tua domanda. Quindi è difficile indovinare cosa sta succedendo.
Kaushal Modi,

Sembra essere questo problema: mail-archive.com/emacs-orgmode@gnu.org/msg98818.html . Non sono ancora sicuro di come risolverlo. La mia configurazione completa è qui: gist.github.com/kenahoo/8bca2ecc5cbe6e48a91c e commentando la (R . t)riga si interrompe l'errore. Quindi sì, problema non correlato, penso. Potrebbe essere necessario aprire un'altra domanda ...
Ken Williams,

Sembra che la mia stessa modalità organizzativa si sia rotta con l'ultimo aggiornamento. Risolto il problema, emacs -Qper iniziare a pulire, caricare attentamente la mia 'packageconfigurazione, disinstallare orge org-plus-contribquindi reinstallarli. Il problema è spiegato qui: emacs.stackexchange.com/a/13576/8899
Ken Williams

Ah, scusa per quello. Probabilmente l'installazione ha org-plus-contribincasinato l'installazione dell'organizzazione e hai finito per avere un mix di versioni. a proposito, è necessario installare solo org-plus-contrib. Non è necessario installare anche il orgpacchetto separato .
Kaushal Modi,

4

Con l'avvertenza che non ho mai usato use-packageprima, credo che tu voglia orgpiuttosto che org-mode. Sto basando questo sul fatto che, sul mio Emacs, (package-installed-p 'org-mode)restituisce zero mentre (package-installed-p 'org)non lo fa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.