- Quando adicionamos mais e mais linhas a
~/.emacs.d/init.el
vários propósitos (no modo python, no emacs-eclim, no ...), o arquivo se torna longo e menos legível. Existe uma maneira de ajudar a organizar seu conteúdo? Meu atual
~/.emacs.d
é assim$ ls * init.el auto-save-list: elisp: python-mode.el-6.1.3 elpa: archives auctex-readme.txt s-20140910.334 auctex-11.87.7 emacs-eclim-20140809.207 eshell: history
python-mode.el-6.1.3
foi instalado manualmente, enquantoemacs-eclim-20140809.207
foi instalado porelpa
e não tenho 100% de certeza de que as outras coisaselpa/
foram porelpa
. Como posso organizar o conteúdo de~/.emacs.d/
?
28
.emacs
e.wl
não seja longo o suficiente.Uma maneira clássica de fazer isso é dividi-lo
.emacs
em arquivos separados. Por exemplo, você pode mover todos os seus itens da Web para dentro~/.emacs.d/web-config.el
e carregá-los dentroinit.el
:Se você deseja manter
~/.emacs.d
um pouco mais organizado, também pode mudar esses arquivos de configuração em seu próprio diretório:Agora você pode simplesmente pular para o arquivo apropriado ao fazer alterações na sua configuração.
Uma coisa que está faltando nisso são as variáveis definidas pelo sistema de personalização. Estes ainda estarão todos no seu init.el principal. Aparentemente, existe um pequeno utilitário chamado init split, que permite que você faça regras sobre qual configuração de personalização vai para onde, mas eu nunca a usei. Como alternativa, o sistema "personalizar" pode ser configurado para usar um arquivo separado para suas modificações nas suas configurações. Defina a
custom-file
variável para especificar onde as configurações de “personalização” devem ser lidas e gravadas .No que diz respeito ao diretório em si, sempre fui feliz com o layout padrão. A principal alteração que fiz foi criar um diretório para todos os meus próprios pacotes e bibliotecas personalizados que não são gerenciados por
package.el
. Isso fornece um único lar ao meu elisp personalizado que não está relacionado à configuração.fonte
elpa
gerenciado porelpa
? Posso movê-los para outro lugar?custom-file
variável. FonteSe você gosta do modo Org, pode usá-lo para organizar o seu
.emacs
sem dividi-lo. Sob minha configuração atual, meu.emacs
arquivo apenas inicializa um arquivo init.org que eu tenho em~/.emacs.d/init/init.org
Ao usar arquivos diferentes, é necessário, em
grep
vez de simples,C-s
procurar algo e assim por diante. Além disso, é mais fácil adicionar vários níveis à sua organização.fonte
org-babel-load-file
. Doce! (Exemplos: github.com/vermiculus/dotfiles/blob/… , github.com/larstvei/dot-emacs )Apenas mova pedaços de código de
init.el
para separar arquivos (bibliotecas), que você entãorequire
. (Useprovide
nas bibliotecas para serrequire
d.) Coloque esses arquivos onde quiser e atualize deload-path
acordo.fonte
~/.emacs.d/
? Você não oferece nenhuma especificação do que deseja. Você não é obrigado a ter tudo em um diretório. Você pode colocar as coisas em qualquer lugar que desejar e modificar deload-path
acordo. Se algum programa / ferramenta colocar apenas coisas em~/.emacs.d/
(ou seja, se você não pode dizer onde colocar stuff), em seguida, movê-lo onde quiser depois que o programa / ferramenta é feito.(require 'foobar)
é um exemplo de usorequire
.(add-to-list 'load-path "/my/lisp/dir")
é um exemplo de modificaçãoload-path
.(provide 'foobar)
é um exemplo de usoprovide
.init.el
pode carregar bibliotecas localizadas em qualquer lugar , não apenas dentro~/.emacs.d/
.Eu uso a sugestão de targzeta encontrada no diretório Emacs Wiki: Load .
Basicamente, eu tenho um ~ / .emacs.d / load-directory.el:
Depois, basta colocar arquivos separados no meu ~ / .emacs.d / config:
E finalmente eu tenho isso no meu ~ / .emacs.d / init.el:
fonte
Obviamente, há mais de uma maneira de esfolar esse gato em particular. Meu favorito atual é usar
outline-minor-mode
com ofusca . Excerto:Observe que você precisará se destacar do seu repositório de pacotes favorito.
fonte
Eu uso a seguinte estrutura para acompanhar pacotes e arquivos
Em seguida, uso
use-package
para gerenciar quais pacotes são carregados e quais personalizações são definidas para cada pacote. Na maioria das vezes, apenashack
eelpa
exigem atualização, as outras pastas geralmente são para pacotes únicos que eu quero testar ou usar brevemente, mas não precisam carregar (mesmo que ociosamente).custom.el
é para Personalizar configurações, que eu prefiro não usar (e não versão mesmo que eu use).defaults.el
é para configuração geral (barra de menus, fonte, codificação etc.) que pode ser substituída em qualquer arquivo .eluser-config/
para permitir um sistema que funcione conforme o esperado, mas que pode ser ajustado ao ambiente.Eu já tinha tentado manter
functions
,macros
,advice
em pacotes separados para permitir a delimitação entre conteúdo, mas correu para definição / exigem questões tão ter colocado os de volta eminit.el
. Eles podem eventualmente ser colocados de volta~/.emacs.d/lisp/
.Tento me manter
init.el
organizado, classificar o conteúdo por função e finalidade, para que seja fácil encontrá-lo novamente. Eu tinha oinit.el
arquivo monolítico e continuava adicionando novo conteúdo no final (ou onde eu achava que poderia caber) e depois acabava sem saber o que eu adicionei ou onde o adicionei quando fui procurá-lo (e às vezes, pesquisar usandoisearch
não ajudou, pois não conseguia me lembrar de como nomeei as coisas na época).fonte
Todas as respostas existentes abordam as práticas recomendadas para organizar arquivos criados manualmente , como
init.el
amigos e amigos. Igualmente importante é a organização de todos os arquivos criados automaticamente de vários pacotes e, para isso, o pacoteno-littering
é excelente.fonte
Eu adicionei
para o emacs-lisp-mode-hook. Em seguida, adicione às seções de arquivo "yasnippet", "empacotamento", "modo java" etc. Isso funciona bem para minhas 1000 linhas de código (comentários incluídos).
EDIT: Finalmente eu alterno entre as seções com helm-imenu. Na verdade, o leme se conecta automaticamente à função imenu normal, de modo que tudo que eu preciso é
fonte
Dividi meu
.emacs
arquivo relativamente pequeno em três partes:emacs-custom.el para personalizações, extraindo muitos dados volumosos e inúteis; o arquivo é reescrito automaticamente sem tocar no arquivo .emacs principal , evitando alterações espúrias.
lg-lib.el para código em vez de configuração: carregando minhas próprias bibliotecas a partir de locais de origem fora do padrão em vez do diretório packages e definindo várias funções (principalmente copiadas e hackeadas na ausência de um pacote apropriado); é outra grande redução na contagem de linhas .emacs .
O arquivo .emacs principal : sem código volumoso e variáveis de personalização volumosas, ele contém
require
solicitações de pacotes, variáveis que não fazem parte do sistema Customize e diversas chamadas de função para carregar e inicializar pacotes. Eu o "organizo", mantendo cuidadosamente todas as linhas pertencentes ao mesmo pacote ou recurso, e separando ainda mais o carregamento e as configurações relacionadas ao pacote da funcionalidade "principal". Um trecho bastante representativo:Essas seções são pequenas, mas permaneceriam gerenciáveis com muito mais linhas de configuração para cada pacote.
fonte
Siga a configuração de um mestre do Emacs, por exemplo, https://github.com/purcell/emacs.d
Por exemplo, sobre como organizar pacotes instalados manualmente e pacotes instalados no ELPA, a instalação de Steven Purcell
Por que seguir um mestre? Um ponto importante do meu "Master emacs in one year" é que os novatos podem evitar com eficiência as despesas gerais e os "truques" da instalação.
Entendo que muitas pessoas não concordam comigo, mas eis o meu caso (detalhado em meu artigo ):
Comecei a usar o Emacs usando a respeitada ( 1403 estrelas do GitHub de Purcell a partir de novembro de 2014!), Configuração estável (5 anos em desenvolvimento). Apesar de começar disso, eu ainda tinha muitos problemas . Steve Purcell me ajudou a resolver todos esses problemas. (Na verdade, eu me tornei o Padawan dele por mais de um ano.) Ao usar sua configuração e usar os problemas de seu repositório para relatar problemas e tirar proveito de sua experiência, evitei perder muito tempo. Ainda hoje, ainda observo muitas pessoas usando
git submodule
para gerenciar plug-ins de terceiros. Steve e eu desistimos de usargit submodule
isso porque pode ser uma PITA .Mas se você tem muita confiança em suas habilidades ou prefere aprender sozinho, esse não é o caminho para você.
fonte
[email protected]
ewww.emacswiki.org
, e[email protected]
, e atédebbugs.gnu.org
. Dito isto, não há nada errado em compartilhar o arquivo de inicialização de alguém, para servir aos outros como alimento para o pensamento. O conselho é que os novatos não comecem assim; o conselho não é que as pessoas não compartilhem suas próprias abordagens e dicas de inicialização.Uma maneira inovadora e simples de limpar sua
.emacs.d
pasta é usarorg-mode
e descrever tudo usando blocos de origem. Em seu.emacs
arquivo, aponte para seuconfig.org
.Um recurso maravilhoso sobre isso é Harry Schwartz. Ele tem um vídeo do youtube que toca e uma postagem no blog que explica os detalhes . Eu era capaz de segui-lo como um emacs noob e obter toda a configuração. Funciona como um encanto. 1 arquivo para todo o meu
init
.fonte