Emacs como editor por defecto
2019-10-03
Índice
Si utilizas Emacs como tu editor de textos favorito quizás te interese hacer que Emacs se ejecute de forma predeterminada cada vez que abras un archivo desde el gestor de ficheros. Además, haciendo uso de la versión servidor de Emacs, podemos conectarnos rápidamente mediante emacsclient
al servidor, ya que el archivo de configuración y los paquetes para cada nuevo archivo que se abra, solo se cargarán una primera vez cuando ejecutemos el servidor Emacs
Iniciando el servidor Emacs
Interactivamente
Para habilitar el servidor Emacs:
emacs --daemon
En versiones de Emacs 26.1 y superiores podemos hacer que el servidor corra en segundo plano con el comando
emacs --fg-daemon
Iniciando el servidor Emacs con Systemd
Systemd es el mótodo soportado para iniciar ampliaciones durante el arranque en muchas distribuciones Linux. El siguiente fichero de configuración emacs.service debe de ser creado en ~/.config/systemd/user/emacs.service
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=on-failure
[Install]
WantedBy=default.target
Activamos el servicio:
systemctl enable --user emacs
systemctl start --user emacs
Podemos comprobar si se está ejecutando correctamete:
systemctl status --user emacs.service
● emacs.service - Emacs text editor
Loaded: loaded (/home/carlos/.config/systemd/user/emacs.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-08-23 22:20:59 CEST; 29s ago
Docs: info:emacs
man:emacs(1)
https://gnu.org/software/emacs/
Process: 5944 ExecStart=/usr/bin/emacs --daemon (code=exited, status=0/SUCCESS)
Main PID: 5945 (emacs)
CGroup: /user.slice/user-1000.slice/[email protected]/emacs.service
├─5945 /usr/bin/emacs --daemon
└─5963 /usr/bin/aspell -a -m -d es --encoding=utf-8
ago 23 22:20:59 asus emacs[5944]: Cleaning up the recentf list...done (0 removed)
ago 23 22:20:59 asus emacs[5944]: Loading /home/carlos/.emacs.d/config.el (source)...done
ago 23 22:20:59 asus emacs[5944]: Starting new Ispell process aspell with espanol dictionary...
ago 23 22:20:59 asus emacs[5944]: Saving file /home/carlos/.emacs.d/recentf...
ago 23 22:20:59 asus emacs[5944]: Wrote /home/carlos/.emacs.d/recentf
ago 23 22:20:59 asus emacs[5944]: Restoring clock data
ago 23 22:20:59 asus emacs[5944]: Loading /home/carlos/.emacs.d/org-clock-save.el (source)...
ago 23 22:20:59 asus emacs[5944]: Loading /home/carlos/.emacs.d/org-clock-save.el (source)...done
ago 23 22:20:59 asus emacs[5944]: Starting Emacs daemon.
ago 23 22:20:59 asus systemd[1769]: Started Emacs text editor.
Parando el servidor Emacs
La manera más sencilla para parar el servidor Emacs es usando los comandos kill-emacs
o save-buffers-kill-emacs
desde el mini buffer M x
Desde una terminal
Utilizando el comando emacsclient -e
:
emacsclient -e '(kill-emacs)'
Esto apagará el servidor de manera inmediata sin preguntar ni guardar los archivos.
Si queremos que Emacs pregunte si queremos guardar los archivos modificados, podemos usar el comando :
emacsclient -e '(client-save-kill-emacs)'
Utilizando systemd
Simplemente ejecuta en la terminal:
systemctl stop --user emacs.service
Usando EmacsClient
Terminal
Simplemente ejecutando
emacsclient -create-frame --alternate-editor=""
Para utilizar emacsclient
como el editor por defecto, añade a tu ~/.bashrc
:
export ALTERNATE_EDITOR=""
export EDITOR="emacsclient -t" # $EDITOR abre es terminal
export VISUAL="emacsclient -c -a emacs" # $VISUAL abre en modo GUI
Si prefieres lanzar Emacs con GUI para editar archivos desde la terminal, cambia -t por -c en la segunda fila.
Escritorio
Podemos crear una entrada para Emacsclient para el menú contextual en Gnome, KDE, XFCE y otros entornos Freedesktop. Creando un archivo llamado emacsclient.desktop
en ~/.local/share/applications
, con el siguiente código
[Desktop Entry]
Name=Emacs (Client)
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/usr/bin/emacsclient --create-frame --alternate-editor "" %F
Icon=emacs
Type=Application
Terminal=false
Categorías=Development;TextEditor;Utility;
StartupWMClass=Emacs
Referencias
Espero que te haya gustado, pasa un buen día. 🐧