Je suis sûr qu'il existe d'autres solutions, mais vous pouvez le faire en utilisant --eval
au lieu de -f
( --funcall
):
emacs --eval '(ediff-files "file1" "file2")'
En fait, le manuel Emacs sur "Arguments de ligne de commande pour l'invocation Emacs" dit que -f function
et--funcall function
Appelez la fonction de fonction Lisp . S'il s'agit d'une fonction interactive (une commande), elle lit les arguments de manière interactive comme si vous aviez appelé la même fonction avec une séquence de touches. Sinon, il appelle la fonction sans arguments.
Cela explique pourquoi vous ne pouvez pas obtenir le comportement souhaité avec -f
/ --funcall
.
ediff-directories
prend trois arguments, donc la commande ci-dessus devient
emacs --eval '(ediff-directories "dir1" "dir2" "regexp")'
Comme expliqué ici , ediff-directories
fait entrer Emacs ediff-meta-mode
, vous serez donc d'abord déposé dans le "panneau de groupe de session Ediff". Extrait du manuel Ediff sur les groupes de sessions :
Plusieurs entrées importantes d'Ediff effectuent des comparaisons et des fusions sur des répertoires. En entrant ediff-directories
, ediff-directories3
[...] l'utilisateur se voit présenter un tampon de type Dired qui répertorie les fichiers communs aux répertoires concernés ainsi que leurs tailles. [...] Nous appelons ce panneau de groupe de sessions tampon car toutes les sessions Ediff associées aux fichiers répertoriés auront ce tampon comme point focal commun. [...]
Dans la comparaison ou la fusion de répertoires, un panneau de groupe de sessions affiche uniquement les fichiers communs à tous les répertoires impliqués. Les différences sont conservées dans un tampon de différence de répertoire distinct et sont facilement affichées en tapant Ddans le panneau de groupe de sessions correspondant. [...]
Donc, pour afficher le diff réel, appuyez simplement sur D( ediff-show-dir-diffs
).