ইমাসে ডিরেক্টরিগুলির তুলনা করা


15

আমি পরীক্ষা নিরীক্ষা করছি ediff-directories, তবে আমি নিশ্চিত নই যে আমি এটি সঠিকভাবে ব্যবহার করছি।

আমি ডকুমেন্টেশনে পড়েছি যে, একবার আমি দুটি ডিরেক্টরি সরবরাহ করি ediff-directories, যদি আমি ==ইমাস টিপতে পুনরাবৃত্তির সাথে তাদের তুলনা করি।

যাইহোক, আমি টিপলে ==আমি =কমান্ডটি যে স্তরে চালাচ্ছি সেগুলিতে কেবলমাত্র চিহ্নগুলি (যার অর্থ দুটি ফোল্ডারের অভিন্ন বিষয়বস্তু রয়েছে) রয়েছে get যদি আমি দেখতে চাই যে কোন ফোল্ডারগুলির =ফোল্ডার স্তরক্রমের আরও গভীর স্তরে চিহ্ন রয়েছে, তবে ==প্রতিটি স্তরে আমাকে কমান্ডটি আবার চালাতে হবে ।

আমি ইমাকগুলিকে কীভাবে পাতাগুলিতে পুনরাবৃত্তভাবে যেতে বলি যাতে আমি directory difference buffer(কীবোর্ড কমান্ডের মাধ্যমে অ্যাক্সেসযোগ্য D) সমস্ত পার্থক্য দেখতে পারি ?

কেউ যদি কীভাবে ব্যবহার করবেন ediff-directories(অফিশিয়াল ডকুমেন্টেশন ব্যতীত ) টিউটোরিয়াল সম্পর্কে জানেন তবে আমি অত্যন্ত আগ্রহী হব।


এছাড়াও, আমি যদি একটি সেশন গ্রুপ থেকে বেরিয়ে আসতে চাই (এক স্তরের ফোল্ডারের তুলনা), তবে গভীরতর স্তরের জন্য আমার সেশনগুলি খোলা থাকে, যদি আমি টিপব q(এই সেশন গ্রুপটি ছেড়ে দিন), ইমাস ম্যাসেজের সাথে অভিযোগ করে:

এই তদন্ত গ্রুপটির সক্রিয় সেশন রয়েছে --- প্রস্থান করতে পারবেন না

উপ-অধিবেশনগুলি একের পর এক প্রস্থান না করে আমি কীভাবে সেশন গ্রুপগুলি প্রস্থান করতে পারি?


1
তুলনা ছাড়িয়ে হিসাবে ব্যবহারযোগ্য হয়ে উঠার জন্য আমি এডিফের জন্য যা অর্থ দিয়েছি ...
ckhan

1
ztree-diffপুনরাবৃত্তভাবে দুটি ডিরেক্টরি পৃথক করতে পারেন। github.com/fourier/ztree
মোমারা

উত্তর:



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))))))

আমি ইভাল-বাফার করেছি এবং এটি পেয়েছি: ডিবাগার প্রবেশ করেছে - লিস্প ত্রুটি: (ভুল-টাইপ-আর্গুমেন্ট সিম্বলপ (অটোলোড "এডিফ" 890739 টি শিল)) ইন্টারেক্টিভ-ফর্ম ((অটোলোড "এডিফ" 890739 টি নিল)) কোনও পরামর্শ?
ভাগ্নে

0

নেই ztree: Melpa, থেকে পাওয়া প্যাকেজ যা রিকার্সিভ ডিরেক্টরি ট্রি তুলনা সমর্থন M-x ztree-diffগনুহ ব্যবহার diffইউটিলিটি সংশ্লিষ্ট ফাইল তুলনা।

আপনি যদি প্যাকেজ use-packageইনস্টল ও কনফিগার করতে ব্যবহার করেন তবে এতে ztreeআপনার যুক্ত করুন .emacs:

;; ** recursive directory tree comparison: M-x ztree-diff
(use-package ztree
  :ensure t) ; needs GNU diff utility
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.