¿Cómo ejecuto GUI Emacs desde la línea de comando en OSX?
He descargado e instalado Emacs desde http://emacsformacosx.com/ .
Aceptaré una respuesta que cumpla con todos los siguientes criterios:
- La ventana de emacs se abre frente a la ventana de mi terminal.
- Al escribir "emacs" se abre una ventana de GUI Emacs. Al buscar archivos en esa ventana, se buscará por defecto en el directorio desde donde inicié Emacs.
- Escribir "emacs foo.txt" cuando foo.txt existe lanza una ventana GUI de Emacs con foo.txt cargado.
- Al escribir "emacs foo.txt" cuando foo.txt no existe, se abre una ventana GUI de Emacs con un búfer de texto vacío llamado "foo.txt". Hacer ^ X ^ S en ese búfer guardará foo.txt en el directorio desde donde inicié Emacs.
macos
emacs
command-line
Johan Walles
fuente
fuente
emacsclient -c -a "" "$@"
commandRespuestas:
Llame al siguiente script "emacs" y colóquelo en su
PATH
lugar:Eso cubre los números 2, 3 y 4.
Para el n. ° 1, coloque esto en algún lugar de su archivo .emacs:
El emacsformacosx.com sitio ahora tiene una página de How-To , que es donde el fragmento de la parte superior de procedencia. Allí hay más información sobre cómo ejecutar
emacsclient
y conectar Emacsgit mergetool
.fuente
~/foo
y quiero abrirbar.txt
escribogmacs bar.txt
pero crea un nuevo archivo en~/bar.txt
lugar de abrir~foo/bar.txt
. ¿Estoy haciendo algo mal?En su shell, alias el comando 'emacs' para apuntar a la aplicación OSX emacs
En mi shell (ejecutando el bash predeterminado), tengo lo siguiente (en mi .bashrc)
Luego, al escribir emacs en la línea de comando se inicia la aplicación emacs.
Sin embargo, le recomendaría que abra una copia de emacs y la mantenga en funcionamiento. Si ese es el caso, y desea cargar un archivo en una copia existente de emacs, puede usar emacsclient colocando lo siguiente en su .bashrc:
Luego agregue lo siguiente a su archivo .emacs para iniciar el servidor emacs (que recibe las llamadas emacsclient)
Entonces puedes escribir
para cargar una copia de .bashrc en una sesión emacs existente.
fuente
Esto mejora la respuesta de David Caldwell al iniciar Emacs en segundo plano:
Como se indica en la otra respuesta, esto cubre los números 2, 3 y 4. Para # 1, poner esto en alguna parte de su archivo .emacs:
(x-focus-frame nil)
.Tenga en cuenta que lo siguiente no funciona para mí: no inicia Emacs en un directorio especificado en la línea de comando (por ejemplo
emacs .
)fuente
Asumo que tú tampoco:
Si es así, creo que esto satisface los cuatro criterios originales, más uno más:
siempre se abrirá en primer plano (con x-focus-frame).
Abrirá una ventana de emacs existente en modo directo.
Si emacs ya se está ejecutando y tiene un servidor, entonces se abrirá en la ventana existente y pasará a primer plano.
Correcto.
Uno extra:
El control vuelve a la sesión del terminal inmediatamente después de escribir el comando.
~ / bin / emacs
fuente
En Mountain Lion, estoy usando el puerto de Yamamoto Mitsuharu https://github.com/railwaycat/emacs-mac-port con el siguiente alias:
y satisface todos sus criterios.
fuente
Solución simple...
Aquí se publican muchas soluciones muy complejas a este problema. Eso es justo porque no parece trivial.
Sin embargo, esta solución me funciona muy bien.
Uso
Analicemos lo que está sucediendo:
ec
argumentos a emacsclient y no (-n
) espere emacs antes de continuar.2> /dev/null
)1
([[ $? == 1 ]]
)fuente
Acabo de construir emacs con el administrador de paquetes homebrew de acuerdo con esta guía: http://www.emacswiki.org/emacs/EmacsForMacOS con brew install --cocoa emacs Después de eso, uno debería lanzar la versión .app para obtener gui, que en mi caso fue /usr/local/Cellar/emacs/24.3/Emacs.app/Contents/MacOS/Emacs
fuente
Mejorando aún más la respuesta de David James, lo siguiente funciona para mí:
Según las instrucciones para abrir un archivo desde un terminal que se encuentra en http://www.emacswiki.org/emacs/EmacsForMacOS#toc20
combinando esto con la respuesta de David Jame, creé el siguiente script emax bash y lo coloqué en mi ruta en ~ / bin
Advertencia : para que emacs abra el directorio actual en el modo Dired por nombre , debe usar
Ambiente:
fuente
Las otras respuestas aquí no funcionaron del todo para mí. En particular, en mi máquina, el script bash
siempre abre emacs en el directorio de inicio. Para que se abra en el directorio de trabajo actual, tuve que hacer
en lugar.
fuente
Compile Emacs de acuerdo con los siguientes pasos:
¡Y listo! Puede ser útil descargar e instalar XQuartz, pero esa es solo mi opinión.
fuente
Este es mi script para abrir emacs / emacsclient en osx.
fuente
En todo lo anterior, cuando use "abrir", asegúrese de usar la opción "--args"
No hagas esto:
En lugar de esto:
la
--args
opción evita que "open" consuma varias opciones diseñadas para Emacs.fuente
La respuesta principal es buena, pero quería que el proceso emacs se ejecutara en segundo plano para poder seguir usando mi shell. Esta respuesta pareció hacer lo que quería, pero no inició emacs en el directorio correcto, lo que significa que se requerían rutas absolutas (o trucos para agregar
pwd
a las rutas que no funcionarían en todos los casos). Además, simplemente usar&
significaba que si mataba la terminal, emacs también se mataría.Decidí usar
screen
y una función bash, y la siguiente solución me funciona en macOS 10.15.6 y emacs 26.2 instalados conbrew
:fuente
screen
me despidió, ahora que leo con más atención me doy cuenta de que tienes razón. Mis disculpas @ gsingh2011.