`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.