diff options
Diffstat (limited to 'lisp/ediff-mult.el')
-rw-r--r-- | lisp/ediff-mult.el | 106 |
1 files changed, 65 insertions, 41 deletions
diff --git a/lisp/ediff-mult.el b/lisp/ediff-mult.el index 47cb0dd2436..a5a065117e4 100644 --- a/lisp/ediff-mult.el +++ b/lisp/ediff-mult.el @@ -115,9 +115,9 @@ (eval-when-compile (let ((load-path (cons (expand-file-name ".") load-path))) (or (featurep 'ediff-init) - (load "ediff-init.el" nil nil 'nosuffix)) + (load "ediff-init.el" nil t 'nosuffix)) (or (featurep 'ediff-util) - (load "ediff-util.el" nil nil 'nosuffix)) + (load "ediff-util.el" nil t 'nosuffix)) )) ;; end pacifier @@ -129,9 +129,15 @@ ;; the registry buffer (defvar ediff-registry-buffer nil) -(defconst ediff-meta-buffer-message "This is an Ediff Session Group Panel: %s +(defconst ediff-meta-buffer-brief-message "Ediff Session Group Panel: %s -Useful commands: + Type ? to show useful commands in this buffer + +") + +(defconst ediff-meta-buffer-verbose-message "Ediff Session Group Panel: %s + +Useful commands (type ? to hide them and free up screen): button2, v, or RET over session record: start that Ediff session M:\tin sessions invoked from here, brings back this group panel R:\tdisplay the registry of active Ediff sessions @@ -360,10 +366,24 @@ buffers." (if (stringp (ediff-get-session-objC-name session-info)) (file-directory-p (ediff-get-session-objC-name session-info)) t))) + +(ediff-defvar-local ediff-verbose-help-enabled nil + "If t, display redundant help in ediff-directories and other meta buffers. +Toggled by ediff-toggle-verbose-help-meta-buffer" ) + +;; Toggle verbose help in meta-buffers +;; TODO: Someone who understands all this can make it better. +(defun ediff-toggle-verbose-help-meta-buffer () + "Toggle showing tediously verbose help in meta buffers." + (interactive) + (setq ediff-verbose-help-enabled (not ediff-verbose-help-enabled)) + (ediff-update-meta-buffer (current-buffer) 'must-redraw)) + ;; set up the keymap in the meta buffer (defun ediff-setup-meta-map () (setq ediff-meta-buffer-map (make-sparse-keymap)) (suppress-keymap ediff-meta-buffer-map) + (define-key ediff-meta-buffer-map "?" 'ediff-toggle-verbose-help-meta-buffer) (define-key ediff-meta-buffer-map "q" 'ediff-quit-meta-buffer) (define-key ediff-meta-buffer-map "T" 'ediff-toggle-filename-truncation) (define-key ediff-meta-buffer-map "R" 'ediff-show-registry) @@ -384,7 +404,7 @@ buffers." (define-key ediff-meta-buffer-map "=h" 'ediff-meta-mark-equal-files))) (if ediff-no-emacs-help-in-control-buffer (define-key ediff-meta-buffer-map "\C-h" 'ediff-previous-meta-item)) - (if ediff-emacs-p + (if (featurep 'emacs) (define-key ediff-meta-buffer-map [mouse-2] ediff-meta-action-function) (define-key ediff-meta-buffer-map [button2] ediff-meta-action-function)) @@ -428,7 +448,7 @@ Commands: (define-key ediff-dir-diffs-buffer-map "\C-?" 'previous-line) (define-key ediff-dir-diffs-buffer-map "p" 'previous-line) (define-key ediff-dir-diffs-buffer-map "C" 'ediff-dir-diff-copy-file) -(if ediff-emacs-p +(if (featurep 'emacs) (define-key ediff-dir-diffs-buffer-map [mouse-2] 'ediff-dir-diff-copy-file) (define-key ediff-dir-diffs-buffer-map [button2] 'ediff-dir-diff-copy-file)) (define-key ediff-dir-diffs-buffer-map [delete] 'previous-line) @@ -621,15 +641,15 @@ behavior." ;; If file belongs to dir 1 only, the membership code is 2. ;; If it is in dir1 and dir3, then the membership code is 2*5=10; ;; if it is in dir1 and dir2, then the membership code is 2*3=6, etc. - (mapcar (lambda (elt) - (if (member (car elt) lis1) - (setcdr elt (* (cdr elt) ediff-membership-code1))) - (if (member (car elt) lis2) - (setcdr elt (* (cdr elt) ediff-membership-code2))) - (if (member (car elt) lis3) - (setcdr elt (* (cdr elt) ediff-membership-code3))) - ) - difflist) + (mapc (lambda (elt) + (if (member (car elt) lis1) + (setcdr elt (* (cdr elt) ediff-membership-code1))) + (if (member (car elt) lis2) + (setcdr elt (* (cdr elt) ediff-membership-code2))) + (if (member (car elt) lis3) + (setcdr elt (* (cdr elt) ediff-membership-code3))) + ) + difflist) (setq difflist (cons ;; diff metalist header (ediff-make-new-meta-list-header regexp @@ -921,30 +941,34 @@ behavior." ;; was redrawn (ediff-cond-compile-for-xemacs-or-emacs (map-extents 'delete-extent) ; xemacs - (mapcar 'delete-overlay (overlays-in 1 1)) ; emacs + (mapc 'delete-overlay (overlays-in 1 1)) ; emacs ) - (insert (format ediff-meta-buffer-message - (ediff-abbrev-jobname ediff-metajob-name))) - (setq regexp (ediff-get-group-regexp meta-list) merge-autostore-dir (ediff-get-group-merge-autostore-dir meta-list)) - (cond ((ediff-collect-diffs-metajob) - (insert - " P:\tcollect custom diffs of all marked sessions\n")) - ((ediff-patch-metajob) - (insert - " P:\tshow patch appropriately for the context (session or group)\n"))) - (insert - " ^:\tshow parent session group\n") - (or (ediff-one-filegroup-metajob) - (insert - " D:\tshow differences among directories\n" - " ==:\tfor each session, show which files are identical\n" - " =h:\tlike ==, but also marks those sessions for hiding\n" - " =m:\tlike ==, but also marks those sessions for operation\n\n")) + (if ediff-verbose-help-enabled + (progn + (insert (format ediff-meta-buffer-verbose-message + (ediff-abbrev-jobname ediff-metajob-name))) + + (cond ((ediff-collect-diffs-metajob) + (insert + " P:\tcollect custom diffs of all marked sessions\n")) + ((ediff-patch-metajob) + (insert + " P:\tshow patch appropriately for the context (session or group)\n"))) + (insert + " ^:\tshow parent session group\n") + (or (ediff-one-filegroup-metajob) + (insert + " D:\tshow differences among directories\n" + " ==:\tfor each session, show which files are identical\n" + " =h:\tlike ==, but also marks sessions for hiding\n" + " =m:\tlike ==, but also marks sessions for operation\n\n"))) + (insert (format ediff-meta-buffer-brief-message + (ediff-abbrev-jobname ediff-metajob-name)))) (insert "\n") (if (and (stringp regexp) (> (length regexp) 0)) @@ -1305,7 +1329,7 @@ Useful commands: ;; copy file to directories where it doesn't exist, update ;; ediff-dir-difference-list and redisplay - (mapcar + (mapc (lambda (otherfile-struct) (let ((otherfile (car otherfile-struct)) (file-mem-code (cdr otherfile-struct))) @@ -1366,7 +1390,7 @@ Useful commands: ;; was redrawn (ediff-cond-compile-for-xemacs-or-emacs (map-extents 'delete-extent) ; xemacs - (mapcar 'delete-overlay (overlays-in 1 1)) ; emacs + (mapc 'delete-overlay (overlays-in 1 1)) ; emacs ) (insert "This is a registry of all active Ediff sessions. @@ -1386,11 +1410,11 @@ Useful commands: ") ;; purge registry list from dead buffers - (mapcar (lambda (elt) - (if (not (ediff-buffer-live-p elt)) - (setq ediff-session-registry - (delq elt ediff-session-registry)))) - ediff-session-registry) + (mapc (lambda (elt) + (if (not (ediff-buffer-live-p elt)) + (setq ediff-session-registry + (delq elt ediff-session-registry)))) + ediff-session-registry) (if (null ediff-session-registry) (insert " ******* No active Ediff sessions *******\n")) @@ -1469,7 +1493,7 @@ Useful commands: (defun ediff-set-meta-overlay (b e prop &optional session-number hidden) (let (overl) (setq overl (ediff-make-overlay b e)) - (if ediff-emacs-p + (if (featurep 'emacs) (ediff-overlay-put overl 'mouse-face 'highlight) (ediff-overlay-put overl 'highlight t)) (ediff-overlay-put overl 'ediff-meta-info prop) |