- Cuando agregamos más y más líneas
~/.emacs.d/init.el
para varios propósitos (para el modo python, para emacs-eclim, para ...), el archivo se vuelve más largo y menos legible. ¿Hay alguna manera de ayudar a organizar su contenido? Mi actual se
~/.emacs.d
ve así$ 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
se instaló manualmente, mientras queemacs-eclim-20140809.207
fue instalado porelpa
, y no estoy 100% seguro de que las otras cosas que se encuentran debajoelpa/
fueranelpa
. ¿Cómo puedo organizar el contenido de~/.emacs.d/
?
28
.emacs
y.wl
no son lo suficientemente largos.Una forma clásica de hacerlo es dividirlo
.emacs
en archivos separados. Por ejemplo, podría mover todos sus elementos web~/.emacs.d/web-config.el
y luego cargarlos dentroinit.el
:Si desea mantener
~/.emacs.d
un poco más organizado, también puede cambiar estos archivos de configuración a su propio directorio:Ahora puede saltar al archivo apropiado al hacer cambios en su configuración.
Una cosa que falta de esto son las variables establecidas a través del sistema de personalización. Estos seguirán estando en su init.el principal. Aparentemente, hay una pequeña utilidad llamada init split que te permite establecer reglas sobre qué configuración de personalización va a dónde, pero nunca la he usado yo mismo. Alternativamente, el sistema "personalizar" se puede configurar para usar un archivo separado para sus modificaciones a sus configuraciones. Establezca la
custom-file
variable para especificar dónde se debe leer y escribir la configuración de "personalizar" .En cuanto al directorio en sí, siempre me ha encantado el diseño predeterminado. El cambio principal que hice fue crear un directorio para todos mis paquetes personalizados y bibliotecas que no son administrados por
package.el
. Esto le da un hogar único a mi elisp personalizado que no está relacionado con la configuración.fuente
elpa
administrados porelpa
? ¿Puedo moverlos a otro lado?custom-file
variable. FuenteSi te gusta el modo Org, puedes usarlo para organizar tu
.emacs
sin dividirlo. Bajo mi configuración actual, mi.emacs
archivo solo inicia un archivo init.org que tengo bajo~/.emacs.d/init/init.org
Mediante el uso de diferentes archivos que necesita en
grep
lugar de simpleC-s
para buscar algo, y así sucesivamente. Además, es más fácil agregar varios niveles a su organización.fuente
org-babel-load-file
. ¡Dulce! (Ejemplos: github.com/vermiculus/dotfiles/blob/… , github.com/larstvei/dot-emacs )Simplemente mueva fragmentos de código
init.el
para separar archivos (bibliotecas), que luegorequire
. (Useprovide
en las bibliotecas para serrequire
d.) Coloque esos archivos donde desee y actualice enload-path
consecuencia.fuente
~/.emacs.d/
? No ofrece ninguna especificación de lo que desea. No está obligado a tener todo en un directorio. Puede colocar cosas en cualquier lugar que desee y modificar enload-path
consecuencia. Si algún programa / herramienta solo pone cosas~/.emacs.d/
(es decir, si no puede decirle dónde poner las cosas), luego muévalas a donde quiera después de que termine ese programa / herramienta.(require 'foobar)
Es un ejemplo de usorequire
.(add-to-list 'load-path "/my/lisp/dir")
Es un ejemplo de modificaciónload-path
.(provide 'foobar)
Es un ejemplo de usoprovide
.init.el
puede cargar bibliotecas ubicadas en cualquier lugar , no solo dentro~/.emacs.d/
.Utilizo la sugerencia de targzeta que se encuentra en el Wiki de Emacs: Cargar directorio .
Básicamente tengo un ~ / .emacs.d / load-directory.el:
Luego solo pongo archivos separados en mi ~ / .emacs.d / config:
Y finalmente tengo esto en mi ~ / .emacs.d / init.el:
fuente
Obviamente, hay más de una forma de desollar este gato en particular. Mi favorito actual es usar
outline-minor-mode
con outshine . Extracto:Tenga en cuenta que tendrá que salir de su repositorio de paquetes favorito.
fuente
Utilizo la siguiente estructura para realizar un seguimiento de los paquetes y archivos
Luego uso
use-package
para administrar qué paquetes se cargan y qué personalizaciones se establecen para cada paquete. La mayoría de las veces solamentehack
yelpa
requieren actualización, las otras carpetas a menudo son para paquetes que quiero probar o usar brevemente pero que no necesito cargar (incluso de forma inactiva).custom.el
es para personalizar la configuración, que prefiero no usar (y no versión, incluso si lo uso).defaults.el
es para la configuración general (barra de menú, fuente, codificación, etc.) que luego se puede sobrescribir en cualquier archivo .eluser-config/
para permitir un sistema que funcione como esperaba, pero se puede ajustar para adaptarse al entorno.Había probado previamente para mantener
functions
,macros
,advice
en paquetes separados para permitir la delimitación entre el contenido, pero se encontró con la definición / requerir temas así que han puesto los de nuevo eninit.el
. Eventualmente pueden volver a colocarse en~/.emacs.d/lisp/
.Intento mantenerme
init.el
ordenado, ordenar el contenido por función y propósito para que encontrarlo nuevamente sea sencillo. Tuve elinit.el
archivo monolítico y seguí agregando contenido nuevo al final (o donde pensé que podría encajar) y luego terminaría sin saber qué había agregado o dónde lo había agregado cuando fui a buscarlo (y a veces la búsqueda usandoisearch
no ayudó, ya que no podía recordar cómo nombraba las cosas en ese momento).fuente
Todas las respuestas existentes abordan las mejores prácticas para organizar archivos creados manualmente , me gusta
init.el
y amigos. Igualmente importante es la organización de todos los archivos creados automáticamente de varios paquetes, y para esto el paqueteno-littering
es excelente.fuente
yo añadí
a emacs-lisp-mode-hook. Luego agregue a las secciones del archivo "yasnippet", "packaging", "java mode", etc. Esto funciona bien para mis 1000 líneas de código (comentarios incluidos).
EDITAR: Finalmente, cambio entre secciones con helm-imenu. En realidad, el timón se engancha automáticamente a la función imenu normal, así que todo lo que necesito es
fuente
Dividí mi
.emacs
archivo relativamente pequeño en tres partes:emacs-custom.el para personalizaciones, extrayendo muchos datos voluminosos e inútiles; el archivo se reescribe automáticamente sin tocar el archivo principal .emacs , evitando cambios espurios.
lg-lib.el para el código en lugar de la configuración: cargar mis propias bibliotecas desde ubicaciones de origen no estándar en lugar de desde el directorio de paquetes y definir varias funciones (principalmente copiadas y pirateadas en ausencia de un paquete adecuado); Es otra gran reducción del recuento de líneas .emacs .
El archivo principal .emacs : sin código voluminoso y variables de personalización voluminosas, contiene
require
llamadas para paquetes, variables que no son parte del sistema Personalizar y llamadas de función variadas para cargar e inicializar paquetes. Lo "organizo" manteniendo cuidadosamente todas las líneas pertenecientes al mismo paquete o función juntas, y separando aún más la carga del paquete y la configuración relacionada con el paquete de la funcionalidad "central". Un extracto bastante representativo:Estas secciones son pequeñas, pero seguirían siendo manejables con muchas más líneas de configuración para cada paquete.
fuente
Siga la configuración de un maestro Emacs, por ejemplo, https://github.com/purcell/emacs.d
Por ejemplo, con respecto a cómo organizar paquetes instalados manualmente y paquetes instalados desde ELPA, la configuración de Steven Purcell tiene
¿Por qué seguir a un maestro? Un punto importante de mi "Master emacs en un año" es que los novatos pueden evitar eficientemente los gastos generales de configuración y los "problemas".
Entiendo que muchas personas no están de acuerdo conmigo, pero aquí está mi caso (detallado en mi artículo ):
Comencé a usar Emacs usando la respetada configuración de Purcell ( 1403 estrellas GitHub a partir de noviembre de 2014!), Estable (5 años en desarrollo). A pesar de comenzar con eso, todavía tenía muchos problemas . Steve Purcell me ayudó a resolver todos esos problemas. (De hecho, me convertí en su Padawan durante más de un año). Al usar su configuración y los problemas de su repositorio para informar problemas, y aprovechando su experiencia, evité perder mucho tiempo. Incluso hoy, sigo observando a muchas personas que usan
git submodule
para administrar los complementos de terceros. Tanto Steve como yo dejamos de usargit submodule
esto porque puede ser una PITA .Pero si tiene mucha confianza en sus habilidades o prefiere el autoaprendizaje, este no es el camino para usted.
fuente
[email protected]
, ywww.emacswiki.org
, y[email protected]
, e inclusodebbugs.gnu.org
. Dicho esto, no hay nada de malo en compartir el archivo init de uno, para servir a otros como alimento para el pensamiento. El consejo es que los novatos no comiencen de esa manera; El consejo no es que las personas no compartan sus propios enfoques y consejos de inicio.Una forma innovadora y simple de limpiar su
.emacs.d
carpeta es usarorg-mode
y delinear todo usando bloques fuente. Luego, en su.emacs
archivo, señale suconfig.org
.Un recurso maravilloso sobre esto es Harry Schwartz. Tiene un video de YouTube que toca y una publicación de blog que explica los detalles . Pude seguirlo como un novato de emacs y obtener toda la configuración. Funciona de maravilla. 1 archivo para mi entero
init
.fuente