Estoy bastante seguro de que hay otras soluciones, pero puede hacerlo usando en --eval
lugar de -f
( --funcall
):
emacs --eval '(ediff-files "file1" "file2")'
De hecho, el manual de Emacs sobre "Argumentos de línea de comando para la invocación de Emacs" dice que -f function
y--funcall function
Llame a la función de la función Lisp . Si es una función interactiva (un comando), lee los argumentos de forma interactiva como si hubiera llamado a la misma función con una secuencia de teclas. De lo contrario, llama a la función sin argumentos.
Esto explica por qué no puede obtener el comportamiento que desea con -f
/ --funcall
.
ediff-directories
toma tres argumentos, por lo que el comando que se muestra arriba cambia a
emacs --eval '(ediff-directories "dir1" "dir2" "regexp")'
Como se explica aquí , ediff-directories
hace que Emacs ingrese ediff-meta-mode
, por lo que primero se lo colocará en el "Panel de grupo de sesión de Ediff". Del manual de Ediff sobre Grupos de sesiones :
Varias entradas importantes de Ediff realizan comparaciones y fusiones en directorios. Al ingresar ediff-directories
, ediff-directories3
[...] al usuario se le presenta un búfer tipo Dired que enumera los archivos comunes a los directorios involucrados junto con sus tamaños. [...] Llamamos a este Panel de Grupo de Sesión de búfer porque todas las sesiones de Ediff asociadas con los archivos listados tendrán este búfer como un punto focal común. [...]
En la comparación o fusión de directorios, un panel de grupo de sesión muestra solo los archivos comunes a todos los directorios involucrados. Las diferencias se mantienen en un búfer de diferencia de directorio separado y se muestran convenientemente escribiendo Den el panel del grupo de sesión correspondiente. [...]
Entonces, para mostrar la diferencia real, simplemente presione D( ediff-show-dir-diffs
).