Estou tentando usar use-package
para configurar minha org-mode
inicialização. Eu tenho o seguinte no meu ~/.emacs
arquivo:
(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
Porém, nenhuma dessas coisas de inicialização está sendo executada. Os nomes dos pacotes estão errados ou algo assim? Fico um pouco confuso sobre nomes de pacotes vs. nomes ELPA vs. comandos de chamada ....
org-mode
init-file
use-package
Ken Williams
fonte
fonte
org.el
e você verá no final:(provide 'org)
. Esse símbolo (org
) é o que você usa para carregar o pacote, como em:(require 'org)
. Isso é o queuse-package
está fazendo, apenas com algumas coisas úteis a seu redor. Um determinado pacote pode definir vários modos para que os nomes dos pacotes e dos modos nem sempre sejam os mesmos. Este é realmente o mesmo problema que a outra pergunta sobrehtml-mode
ser definido pelosgml-mode
pacote.Respostas:
O abaixo funcionaria. Por uma questão de clareza, estou usando o
:ensure org-plus-contrib
que se desvia um pouco do exemplo em sua pergunta.Aqui estão algumas notas explicativas para o acima:
(use-package FEATURE-NAME
FEATURE-NAME
é o que se passa na(provide ..)
linha de um pacote. Poisorg-mode
, essa linha é(provide 'org)
.:mode ((FILE-REGEXP . MAJOR-MODE))
FILE-REGEXP
é a expressão regular para a qual você deseja que um modo principal específico seja ativado. Você tinha que correta:"\\.org$"
.MAJOR-MODE
é o nome do modo principal que você deseja ativar (incluindo a-mode
parte do nome do modo principal). Nesse caso, o nome do modo principal éorg-mode
.:mode (FILE-REGEXP)
que você usou funcionaria apenas seFEATURE-NAME
eMAJOR-MODE
for exatamente o mesmo. Exemplo:cperl-mode
.:ensure PACKAGE-NAME
PACKAGE-NAME
é o que vejo listado na lista de pacotes (M-x package-list-packages
). Para maior clareza, na minha solução acima, estamos instalando o pacoteorg-plus-contrib
1 . Isso serve para demonstrar o nome do recurso, o modo principal e o nome do pacote real não precisa ser exatamente o mesmo. E também prefiro instalar isso em vez de simples,org-mode
pois você também recebe todos oscontrib/
presentes! :)1 Você precisará adicionar
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
à sua configuração do emacs para instalarorg-plus-contrib
. Consulte a página de instalação oficial do modo organizacional para obter mais informações.Nota
A melhor maneira de fazer o
use-package
snippet acima funcionar é salvá-lo primeiro na sua configuração do emacs, depois excluir as versões anteriores instaladas pelo Package Managerorg
e reiniciar o emacs.fonte
org-babel-do-load-languages
neste contexto, ele fornece o erroError (use-package): org :config: Invalid function: org-babel-header-args-safe-fn
. Outros idiomas (por exemplo,sh
ouperl
ouemacs-lisp
) parecem funcionar bem.C-h f org-babel-header-args-safe-fn
. Além disso, você não tem esse snippet de código na sua pergunta. Portanto, é difícil adivinhar o que está acontecendo.(R . t)
linha interrompe o erro. Então sim, questão não relacionada, eu acho. Talvez seja necessário abrir uma outra questão ...emacs -Q
para iniciar a limpeza, carregue cuidadosamente minha'package
configuração, desinstalandoorg
eorg-plus-contrib
depois reinstalando-as. O problema é explicado aqui: emacs.stackexchange.com/a/13576/8899org-plus-contrib
atrapalhou a instalação da sua organização e você acabou tendo uma mistura de versões. BTW, você precisa instalar apenasorg-plus-contrib
. Você não precisa instalar oorg
pacote separado também.Com a ressalva que eu não usei
use-package
antes, acredito que vocêorg
prefereorg-mode
. Estou baseando isso no fato de que, no meu Emacs,(package-installed-p 'org-mode)
retorna nulo enquanto(package-installed-p 'org)
não.fonte