
試してみますが、ediff-directories
正しく使用しているかどうかわかりません。
私は読んだ文書2つのディレクトリを指定してEmacsを押すと、再帰的ediff-directories
に==
比較されます。
ただし、このボタンを押すと、コマンドが実行されたレベルのシンボルを含むフォルダのみがインポート==
さ=
れます(両方のフォルダに同じ内容があります)。フォルダ階層でより深いレベルのフラグを持つフォルダを確認するには、=
各レベルでコマンドを再実行する必要があります。==
Emacsに葉のすべての違いを見るために葉まで繰り返すように指示する方法directory difference buffer
(キーボードコマンドを介してアクセス可能)D
ediff-directories
公式チュートリアル以外にチュートリアルの使い方を知っている人がいれば文書)、本当に興味があると思います。
また、セッションを終了したいが(特定のレベルのフォルダを比較)、より深いセッションが開いている場合q
(このセッションの終了)をクリックすると、Emacsは次のメッセージを表示します。
この会話グループにはアクティブなセッションがあります。 ---終了できません。
サブセッションを1つずつ終了せずに会話グループを終了するには?
答え1
持つztree
Melpaが提供するパッケージは、再帰的なディレクトリツリー比較をサポートしています。M-x ztree-diff
GNUdiff
ユーティリティを使用してファイルを比較します。
使用する場合use-package
ztree
その後、パッケージをインストールして構成するには、以下を追加します.emacs
。
;; ** recursive directory tree comparison: M-x ztree-diff
(use-package ztree
:ensure t) ; needs GNU diff utility
答え2
試してみましたが、M-x dired-compare-directories
まだ残っています。edifツリー、あなたが説明する状況でより良いサービスを提供することができます。
答え3
私にもこの機能が必要で、次のことを思い出しました。この関数はediff-directories-recursive
同様に機能しますediff-directories
が、サブディレクトリで繰り返されます。
その背後にある魔法は、組み込まれたものを呼び出す前に一時的に自家製とdirectory-files
交換することです。directory-files-recursive
ediff-directories
(eval
(let ((directory-files-original (symbol-function 'directory-files)))
`(defun directory-files-recursive (directory &optional full match nosort)
"Like `directory-files' but recurses into subdirectories. Does not follow symbolic links."
(let* ((prefix (or (and full "") directory))
dirs
files)
(mapc (lambda (p)
(let ((fullname (if full p (concat prefix "/" p))))
(when (and (file-directory-p fullname)
(null (or (string-match "\\(^\\|/\\).$" p)
(string-match "\\(^\\|/\\)..$" p)
(file-symlink-p fullname))))
(setq dirs (cons p dirs)))))
(funcall ,directory-files-original directory full nil nosort))
(setq dirs (nreverse dirs))
(mapc (lambda (p)
(when (null (file-directory-p (if full p (concat prefix "/" p))))
(setq files (cons p files))))
(funcall ,directory-files-original directory full match nosort))
(setq files (nreverse files))
(mapc (lambda (d)
(setq files
(append files
(if full
(apply 'directory-files-recursive (list d full match nosort))
(mapcar (lambda (n)
(concat d "/" n))
(apply 'directory-files-recursive (list (concat prefix "/" d) full match nosort)))))))
dirs)
files))))
(eval
`(defun ediff-directories-recursive (dir1 dir2 regexp)
"Like `ediff-directories' but recurses into sub-directories. Does not follow symbolic links."
,(interactive-form (symbol-function 'ediff-directories))
(let ((directory-files-original (symbol-function 'directory-files)))
(unwind-protect
(progn
(fset 'directory-files (symbol-function 'directory-files-recursive))
(ediff-directories dir1 dir2 regexp)
(fset 'directory-files directory-files-original))))))