2010-12-04 8 views
6

Tengo diferentes archivos de configuración .emacs específicos del trabajo en servidores donde trabajo para varias compañías. Estos son paquetes que, por diversas razones, no quiero almacenar localmente en mi máquina. ¿Hay alguna manera de iniciar emacs utilizando uno de esos directorios remotos como si fuera local?¿Es posible iniciar emacs utilizando un archivo de configuración remota?

Tramp es ideal para editar archivos remotos como si fueran locales, ahora me gustaría poder iniciar todo un editor de emacs de la misma manera.

+0

También relacionado: [load .emacs from url] (http://stackoverflow.com/questions/9988540/load-emacs-from-url/9988910) – phils

Respuesta

3

puesta en marcha emacs usando uno de esos directorios remotos como si fuera local

Si los servidores son servidores UNIX/LINUX y tiene acceso ssh, entonces usted podría intentar SSH Filesystem. A continuación, puede montar los servidores de directorios locales, por ejemplo .:

> sshfs server1: ~/remote/server1 
> sshfs server2: ~/remote/server2 

entonces se podría empezar con emacs emacs --no-init-file --load ~/remote/servers2/.emacs y así sucesivamente.

paquetes que, por diversas razones, no desea almacenar localmente

Si los paquetes se instalan en .emacs.d en las máquinas remotas que podría crear secuencias de comandos como el siguiente en su local, la máquina:

;; .emacs.server1.el 
(add-to-list 'load-path (expand-file-name "~/remote/server1/.emacs.d")) 
(add-to-list 'load-path (expand-file-name "~/remote/server1/.emacs.d/package1")) 
(load (expand-file-name "~/remote/server1/.emacs")) 

y luego comenzar emacs como esto: emacs --no-init-file --load ~/.emacs.server1.el

Obviamente este script depende de los montajes ab ove

+0

Puede extender este enfoque simplemente usando sshfs para montar el apropiado directorio remoto .emacs.d en .emacs.d en la máquina local, p. ej. sshfs server1: .emacs.d ~/.emacs.d - esto obvia la necesidad de pasar los argumentos slu mencionados anteriormente. Para usar archivos de inicio locales, desmonte cualquier sistema de archivos sshfs de ~/.emacs.d y haga ln -s ~/.emacs.d.local ~/.emacs.d. Por último, al usar .emacs.d/init.el en lugar de ~/.emacs también puede tener archivos de inicio específicos de la máquina. – jlf

5

Por curiosidad me acaba de dar a esto un ir:

emacs -q --load "/ssh:[email protected]:.emacs.d/init.el" 

que funcionaba, sin embargo, el init.el remota está estableciendo rutas de carga como "~/.emacs.d/vendedor /", por lo que en realidad una El archivo init debe tener en cuenta que las rutas y los nombres de archivos que establece deben ser relativos a una base común. Esta base podría ser establecido por una variable común, a fin de tratar:

emacs -q --eval '(setq init-base "/ssh:[email protected]:") (load (concat init-base ".emacs.d/init.el"))' 

A continuación, en la configuración remota, anteponga init-base a cualquier ruta o nombre de archivo se establece que debe ser remoto.

Cuestiones relacionadas