Sono abbastanza sicuro che ci siano altre soluzioni, ma puoi farlo usando --eval
invece di -f
( --funcall
):
emacs --eval '(ediff-files "file1" "file2")'
In effetti, il manuale Emacs su "Argomenti della riga di comando per l'invocazione di Emacs" dice che -f function
e--funcall function
Chiama la funzione funzione Lisp . Se è una funzione interattiva (un comando), legge gli argomenti in modo interattivo proprio come se avessi chiamato la stessa funzione con una sequenza di tasti. Altrimenti, chiama la funzione senza argomenti.
Questo spiega perché non è possibile ottenere il comportamento desiderato con -f
/ --funcall
.
ediff-directories
accetta tre argomenti, quindi il comando mostrato sopra cambia in
emacs --eval '(ediff-directories "dir1" "dir2" "regexp")'
Come spiegato qui , ediff-directories
fa entrare Emacs ediff-meta-mode
, quindi verrai prima inserito nel "Pannello gruppo sessioni Ediff". Dal manuale Ediff sui gruppi di sessioni :
Diverse voci principali di Ediff eseguono il confronto e l'unione di directory. Entrando ediff-directories
, ediff-directories3
, [...] l'utente è presentato con un Dired simile buffer che i file di liste comuni alle directory coinvolti con le loro dimensioni. [...] Questo pannello del gruppo di sessioni viene chiamato buffer perché tutte le sessioni Ediff associate ai file elencati avranno questo buffer come punto focale comune. [...]
Nel confronto o nella fusione delle directory, un pannello del gruppo di sessioni visualizza solo i file comuni a tutte le directory interessate. Le differenze vengono conservate in un buffer delle differenze di directory separato e vengono comodamente visualizzate digitando Dil pannello del gruppo di sessioni corrispondente. [...]
Quindi, per visualizzare l'attuale diff, basta premere D( ediff-show-dir-diffs
).