¿Cómo configuro una ubicación diferente para el archivo dot emacs .emacs en Windows 7?

16

Estoy usando una computadora con Windows 7 y no tengo acceso de administrador. Por lo tanto, no puedo colocar un archivo dot emacs en el directorio raíz. ¿Hay alguna manera de especificar una ubicación diferente para el archivo dot emacs?

Startec
fuente
Si puede controlar su propia ubicación de la instalación de Emacs (por ejemplo, ponerla donde desee, o al menos tener acceso de escritura a la instalación), puede tomar el control completo usando algo como site-start.elcargar la suya init.ely ya no necesita a .emacs. En este ejemplo, no necesita jugar con el directorio de inicio (a menos que alguien más en la computadora esté agregando cosas que afectarán lo que usted hace). En otras palabras, puede estar en blanco y nunca es necesario tocarlo.
leyes

Respuestas:

4

Emacs tiene varios lugares donde busca archivos de inicio, como se documenta en el manual . Si desea personalizar Emacs, debe comenzar con uno de esos archivos.

Un enfoque común es usar el archivo init.elen su user-emacs-directory, en lugar de tener un .emacsen su directorio HOME.

El valor user-emacs-directorypredeterminado es ~/.emacs.d, por lo que aún es relativo a su HOME, pero el beneficio de este enfoque es que puede mantener todo lo relacionado con su configuración de Emacs en un solo lugar. Ese directorio podría estar bajo control de versiones, respaldado, compartido en varias máquinas, etc. Puede usar un enlace simbólico ( mklinken Windows) para mantener los archivos en otra ubicación.

Por ejemplo, es bastante común ver a las personas mantener su configuración de Emacs en Github. Usted puede encontrar muchos ejemplos de esto mediante la búsqueda de Github para proyectos elisp con archivos init.el .

glucas
fuente
Me gusta esta solución y me gustaría usarla, sin embargo, todavía no me dice cómo cambiar miuser-emacs-directory
Startec
Mi sugerencia era usar enlaces simbólicos, de verdad. Como se muestra en las otras respuestas, debe colocar algo en una de las ubicaciones estándar que Emacs lee durante el inicio, incluso si todo lo que hace es cargar su configuración desde otro lugar.
glucas
El enlace manual está roto.
corvus_192
17

En cada instalación de Windows en la que uso Emacs, tengo el siguiente código en un .emacsarchivo en la ubicación indicada:

;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)

De esta manera puedo poner mi .emacsy .emacs.d/donde quiera.

Ryan
fuente
Gracias, casi justo lo que necesitaba. Dejé el directorio predeterminado y sentenv HOME, pero de lo contrario es lo que necesitaba para configurar q.
Grant Bowman
Intenté la respuesta de Ryan. Pero ahora no puedo abrir este archivo dentro de emacs desde la carpeta AppData \ Roaming. Disculpe amablemente, ya que no pude agregar comentarios porque todavía no tengo 50 puntos.
Sreekumar R
@SreekumarR Debería hacer una nueva pregunta, vinculando a esta, en lugar de publicar una "Respuesta"
Andrew Swann
@SreekumarR Si tiene una nueva pregunta, pregúntela haciendo clic en el botón Hacer pregunta . Incluya un enlace a esta pregunta si ayuda a proporcionar contexto. - De la opinión
Stefan
5

Su archivo .emacs va en su HOMEdirectorio. Del manual de Emacs:

El equivalente de Windows de HOME es el directorio de datos de la aplicación específica del usuario. La ubicación real depende de la versión de Windows ...

Puede anular este valor predeterminado de HOME configurando explícitamente la variable de entorno HOME para que apunte a cualquier directorio de su sistema. HOME se puede configurar desde el símbolo del sistema de comandos o desde el cuadro de diálogo 'Propiedades' de 'Mi PC'. HOME también se puede configurar en el registro del sistema, consulte el Registro de MS-Windows.

Tyler
fuente
1
Sí, sé cómo configurar el directorio de inicio, sin embargo, por razones de control de versiones, quiero poder configurar emacs para leer desde un directorio diferente (para que pueda tener un directorio específico para emacs)
Startec
3
Tenga en cuenta que este truco hace que Emacs considere algo más como el directorio de inicio.
wasamasa
@wasamasa - No lo llamaría un "hack". En mi compilación de Emacs 25, si no configuras "HOME" con una variable de entorno, el valor predeterminado es el directorio de instalación de Emacs, que es claramente incorrecto. "INICIO" debe establecerse en lo que el usuario considera su directorio de inicio, y establecer la variable de entorno es la forma estándar prevista para hacerlo. En los sistemas Unix, esto generalmente ya se hace para el usuario durante el proceso de inicio de sesión, pero en Windows debe hacerlo manualmente.
TED
El objetivo de esto es cambiar lo que normalmente consideraría su HOMEdirectorio a algo muy diferente. Por eso llamo a ese cambio un truco. Establecerlo en su valor apropiado está obviamente bien.
wasamasa
2

Tu dices:

Sé cómo configurar el directorio de inicio, sin embargo, por razones de control de versiones, quiero poder configurar emacs para leer desde un directorio diferente (para que pueda tener un directorio específico para emacs) .

Su archivo de inicio va en su directorio de inicio, que puede colocar en cualquier lugar. Aparentemente desea tener un directorio diferente para las cosas que carga Emacs. Eso no es un problema. Coloque su archivo init en su directorio de inicio y haga que ese archivo agregue otro directorio al valor de variable load-pathy luego requiera las otras bibliotecas de Emacs que desee usar. Pon esas bibliotecas en ese otro directorio.

IOW, su archivo de inicio no necesita contener nada más allá de la configuración del directorio donde guarda las bibliotecas de Emacs que desea cargar.

Dibujó
fuente
0

Piensa que podrías poner (setq user-init-file "C:/path/to/.emacs")y otras líneas propuestas por @ryan en site-start.el

Su sitio también puede tener un archivo de inicio del sitio; esto se llama site-start.el, si existe. Al igual que default.el, Emacs encuentra este archivo a través de la ruta de búsqueda estándar para las bibliotecas Lisp. Emacs carga esta biblioteca antes de que cargue su archivo init.

Dima Fomin
fuente