aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl Heuer1998-05-30 14:41:00 +0000
committerKarl Heuer1998-05-30 14:41:00 +0000
commit3ec8facdd361e11aa93a2fadd2bc15d0dd8a7df2 (patch)
treefaa7c5cec8aa662baa393f5b10739d429e6f1b03
parent22b630585d8f430e1b04f6bff1c27eab147ace22 (diff)
downloademacs-3ec8facdd361e11aa93a2fadd2bc15d0dd8a7df2.tar.gz
emacs-3ec8facdd361e11aa93a2fadd2bc15d0dd8a7df2.zip
(ediff-mark-for-hiding-at-pos)
(ediff-mark-for-operation-at-pos): Renamed from ediff-mark-for-hiding, ediff-mark-for-operation. (ediff-mark-session-for-hiding, ediff-mark-session-for-operation) (ediff-unmark-all-for-operation, ediff-unmark-all-for-hiding): New functions. (ediff-setup-meta-map): Changed bindings.
-rw-r--r--lisp/ediff-mult.el141
1 files changed, 104 insertions, 37 deletions
diff --git a/lisp/ediff-mult.el b/lisp/ediff-mult.el
index c5d4e61d670..b889ca680b9 100644
--- a/lisp/ediff-mult.el
+++ b/lisp/ediff-mult.el
@@ -126,6 +126,7 @@ Useful commands:
126 h:\tmark session for hiding (toggle) 126 h:\tmark session for hiding (toggle)
127 x:\thide marked sessions; with prefix arg: unhide 127 x:\thide marked sessions; with prefix arg: unhide
128 m:\tmark session for a non-hiding operation (toggle) 128 m:\tmark session for a non-hiding operation (toggle)
129 uh/um:\tunmark all sessions marked for hiding/operation
129 n,SPC:\tnext session 130 n,SPC:\tnext session
130 p,DEL:\tprevious session 131 p,DEL:\tprevious session
131 E:\tbrowse Ediff on-line manual 132 E:\tbrowse Ediff on-line manual
@@ -293,7 +294,11 @@ buffers."
293 (define-key ediff-meta-buffer-map [delete] 'ediff-previous-meta-item) 294 (define-key ediff-meta-buffer-map [delete] 'ediff-previous-meta-item)
294 (define-key ediff-meta-buffer-map [backspace] 'ediff-previous-meta-item) 295 (define-key ediff-meta-buffer-map [backspace] 'ediff-previous-meta-item)
295 (or (ediff-one-filegroup-metajob) 296 (or (ediff-one-filegroup-metajob)
296 (define-key ediff-meta-buffer-map "=" 'ediff-meta-mark-equal-files)) 297 (progn
298 (define-key ediff-meta-buffer-map "=" nil)
299 (define-key ediff-meta-buffer-map "==" 'ediff-meta-mark-equal-files)
300 (define-key ediff-meta-buffer-map "=m" 'ediff-meta-mark-equal-files)
301 (define-key ediff-meta-buffer-map "=h" 'ediff-meta-mark-equal-files)))
297 (if ediff-no-emacs-help-in-control-buffer 302 (if ediff-no-emacs-help-in-control-buffer
298 (define-key ediff-meta-buffer-map "\C-h" 'ediff-previous-meta-item)) 303 (define-key ediff-meta-buffer-map "\C-h" 'ediff-previous-meta-item))
299 (if ediff-emacs-p 304 (if ediff-emacs-p
@@ -682,17 +687,23 @@ behavior."
682 687
683 (or (ediff-one-filegroup-metajob jobname) 688 (or (ediff-one-filegroup-metajob jobname)
684 (ediff-draw-dir-diffs ediff-dir-difference-list)) 689 (ediff-draw-dir-diffs ediff-dir-difference-list))
685 (define-key ediff-meta-buffer-map "h" 'ediff-mark-for-hiding) 690 (define-key
691 ediff-meta-buffer-map "h" 'ediff-mark-for-hiding-at-pos)
692 (define-key ediff-meta-buffer-map "x" 'ediff-hide-marked-sessions)
693 (define-key
694 ediff-meta-buffer-map "m" 'ediff-mark-for-operation-at-pos)
695 (define-key ediff-meta-buffer-map "u" nil)
686 (define-key 696 (define-key
687 ediff-meta-buffer-map "x" 'ediff-hide-marked-sessions) 697 ediff-meta-buffer-map "um" 'ediff-unmark-all-for-operation)
688 (define-key ediff-meta-buffer-map "m" 'ediff-mark-for-operation) 698 (define-key
699 ediff-meta-buffer-map "uh" 'ediff-unmark-all-for-hiding)
689 (cond ((ediff-collect-diffs-metajob jobname) 700 (cond ((ediff-collect-diffs-metajob jobname)
690 (define-key 701 (define-key
691 ediff-meta-buffer-map "P" 'ediff-collect-custom-diffs)) 702 ediff-meta-buffer-map "P" 'ediff-collect-custom-diffs))
692 ((ediff-patch-metajob jobname) 703 ((ediff-patch-metajob jobname)
693 (define-key 704 (define-key
694 ediff-meta-buffer-map "P" 'ediff-meta-show-patch))) 705 ediff-meta-buffer-map "P" 'ediff-meta-show-patch)))
695 (define-key ediff-meta-buffer-map "u" 'ediff-up-meta-hierarchy) 706 (define-key ediff-meta-buffer-map "^" 'ediff-up-meta-hierarchy)
696 (define-key ediff-meta-buffer-map "D" 'ediff-show-dir-diffs))) 707 (define-key ediff-meta-buffer-map "D" 'ediff-show-dir-diffs)))
697 708
698 (if (eq ediff-metajob-name 'ediff-registry) 709 (if (eq ediff-metajob-name 'ediff-registry)
@@ -802,11 +813,13 @@ behavior."
802 (insert 813 (insert
803 " P:\tshow patch appropriately for the context (session or group)\n"))) 814 " P:\tshow patch appropriately for the context (session or group)\n")))
804 (insert 815 (insert
805 " u:\tshow parent session group\n") 816 " ^:\tshow parent session group\n")
806 (or (ediff-one-filegroup-metajob) 817 (or (ediff-one-filegroup-metajob)
807 (insert 818 (insert
808 " D:\tshow differences among directories\n" 819 " D:\tshow differences among directories\n"
809 " =:\tmark identical files in each session\n\n")) 820 " ==:\tfor each session, show which files are identical\n"
821 " =h:\tlike ==, but also marks those sessions for hiding\n"
822 " =m:\tlike ==, but also marks those sessions for operation\n\n"))
810 823
811 (insert "\n") 824 (insert "\n")
812 (if (and (stringp regexp) (> (length regexp) 0)) 825 (if (and (stringp regexp) (> (length regexp) 0))
@@ -1257,28 +1270,37 @@ Useful commands:
1257 (if (numberp session-number) 1270 (if (numberp session-number)
1258 (ediff-overlay-put overl 'ediff-meta-session-number session-number)))) 1271 (ediff-overlay-put overl 'ediff-meta-session-number session-number))))
1259 1272
1260(defun ediff-mark-for-hiding (unmark) 1273(defun ediff-mark-for-hiding-at-pos (unmark)
1261 "Mark session for hiding. With prefix arg, unmark." 1274 "Mark session for hiding. With prefix arg, unmark."
1262 (interactive "P") 1275 (interactive "P")
1263 (let* ((pos (ediff-event-point last-command-event)) 1276 (let* ((pos (ediff-event-point last-command-event))
1264 (meta-buf (ediff-event-buffer last-command-event)) 1277 (meta-buf (ediff-event-buffer last-command-event))
1265 ;; ediff-get-meta-info gives error if meta-buf or pos are invalid 1278 ;; ediff-get-meta-info gives error if meta-buf or pos are invalid
1266 (info (ediff-get-meta-info meta-buf pos)) 1279 (info (ediff-get-meta-info meta-buf pos))
1267 (session-buf (ediff-get-session-buffer info))
1268 (session-number (ediff-get-session-number-at-pos pos))) 1280 (session-number (ediff-get-session-number-at-pos pos)))
1269 (if (eq (ediff-get-session-status info) ?H) 1281 (ediff-mark-session-for-hiding info unmark)
1270 (setq unmark t)) 1282 (ediff-next-meta-item 1)
1271 (if unmark 1283 (save-excursion
1272 (ediff-set-session-status info nil) 1284 (ediff-update-meta-buffer meta-buf nil session-number))
1273 (if (ediff-buffer-live-p session-buf)
1274 (error "Can't hide active session, %s" (buffer-name session-buf)))
1275 (ediff-set-session-status info ?H))
1276 (or unmark
1277 (ediff-next-meta-item 1))
1278 (ediff-update-meta-buffer meta-buf nil session-number)
1279 )) 1285 ))
1280 1286
1281(defun ediff-mark-for-operation (unmark) 1287;; Returns whether session was marked or unmarked
1288(defun ediff-mark-session-for-hiding (info unmark)
1289 (let ((session-buf (ediff-get-session-buffer info))
1290 ignore)
1291 (cond ((eq unmark 'mark) (setq unmark nil))
1292 ((eq (ediff-get-session-status info) ?H) (setq unmark t))
1293 (unmark ; says unmark, but the marker is different from H
1294 (setq ignore t)))
1295 (cond (ignore)
1296 (unmark (ediff-set-session-status info nil))
1297;;; (if (ediff-buffer-live-p session-buf)
1298;;; (error "Can't hide active session, %s" (buffer-name session-buf)))
1299 (t (ediff-set-session-status info ?H))))
1300 unmark)
1301
1302
1303(defun ediff-mark-for-operation-at-pos (unmark)
1282 "Mark session for a group operation. With prefix arg, unmark." 1304 "Mark session for a group operation. With prefix arg, unmark."
1283 (interactive "P") 1305 (interactive "P")
1284 (let* ((pos (ediff-event-point last-command-event)) 1306 (let* ((pos (ediff-event-point last-command-event))
@@ -1286,16 +1308,27 @@ Useful commands:
1286 ;; ediff-get-meta-info gives error if meta-buf or pos are invalid 1308 ;; ediff-get-meta-info gives error if meta-buf or pos are invalid
1287 (info (ediff-get-meta-info meta-buf pos)) 1309 (info (ediff-get-meta-info meta-buf pos))
1288 (session-number (ediff-get-session-number-at-pos pos))) 1310 (session-number (ediff-get-session-number-at-pos pos)))
1289 (if (eq (ediff-get-session-status info) ?*) 1311 (ediff-mark-session-for-operation info unmark)
1290 (setq unmark t)) 1312 (ediff-next-meta-item 1)
1291 (if unmark 1313 (save-excursion
1292 (ediff-set-session-status info nil) 1314 (ediff-update-meta-buffer meta-buf nil session-number))
1293 (ediff-set-session-status info ?*))
1294 (or unmark
1295 (ediff-next-meta-item 1))
1296 (ediff-update-meta-buffer meta-buf nil session-number)
1297 )) 1315 ))
1298 1316
1317
1318;; returns whether session was unmarked.
1319;; remember: this is a toggle op
1320(defun ediff-mark-session-for-operation (info unmark)
1321 (let (ignore)
1322 (cond ((eq unmark 'mark) (setq unmark nil))
1323 ((eq (ediff-get-session-status info) ?*) (setq unmark t))
1324 (unmark ; says unmark, but the marker is different from *
1325 (setq ignore t)))
1326 (cond (ignore)
1327 (unmark (ediff-set-session-status info nil))
1328 (t (ediff-set-session-status info ?*))))
1329 unmark)
1330
1331
1299(defun ediff-hide-marked-sessions (unhide) 1332(defun ediff-hide-marked-sessions (unhide)
1300 "Hide marked sessions. With prefix arg, unhide." 1333 "Hide marked sessions. With prefix arg, unhide."
1301 (interactive "P") 1334 (interactive "P")
@@ -1980,11 +2013,31 @@ If this is a session registry buffer then just bury it."
1980 (ediff-patch-file-internal meta-patchbuf file startup-hooks))))) 2013 (ediff-patch-file-internal meta-patchbuf file startup-hooks)))))
1981 2014
1982 2015
2016(defun ediff-unmark-all-for-operation ()
2017 "Unmark all sessions marked for operation."
2018 (interactive)
2019 (let ((list (cdr ediff-meta-list)))
2020 (while (setq elt (car list))
2021 (ediff-mark-session-for-operation elt 'unmark)
2022 (setq list (cdr list))))
2023 (ediff-update-meta-buffer (current-buffer) 'must-redraw))
2024
2025(defun ediff-unmark-all-for-hiding ()
2026 "Unmark all sessions marked for hiding."
2027 (interactive)
2028 (let ((list (cdr ediff-meta-list)))
2029 (while (setq elt (car list))
2030 (ediff-mark-session-for-hiding elt 'unmark)
2031 (setq list (cdr list))))
2032 (ediff-update-meta-buffer (current-buffer) 'must-redraw))
2033
2034
1983(defun ediff-meta-mark-equal-files () 2035(defun ediff-meta-mark-equal-files ()
1984 "Run though the session list and mark identical files. 2036 "Run though the session list and mark identical files.
1985This is used only for sessions that involve 2 or 3 files at the same time." 2037This is used only for sessions that involve 2 or 3 files at the same time."
1986 (interactive) 2038 (interactive)
1987 (let ((list (cdr ediff-meta-list)) 2039 (let ((list (cdr ediff-meta-list))
2040 marked1 marked2 marked3
1988 fileinfo1 fileinfo2 fileinfo3 elt) 2041 fileinfo1 fileinfo2 fileinfo3 elt)
1989 (while (setq elt (car list)) 2042 (while (setq elt (car list))
1990 (setq fileinfo1 (ediff-get-session-objA elt) 2043 (setq fileinfo1 (ediff-get-session-objA elt)
@@ -1994,24 +2047,38 @@ This is used only for sessions that involve 2 or 3 files at the same time."
1994 (ediff-set-file-eqstatus fileinfo2 nil) 2047 (ediff-set-file-eqstatus fileinfo2 nil)
1995 (ediff-set-file-eqstatus fileinfo3 nil) 2048 (ediff-set-file-eqstatus fileinfo3 nil)
1996 2049
1997 (ediff-mark-if-equal fileinfo1 fileinfo2) 2050 (setq marked1 t
2051 marked2 t
2052 marked3 t)
2053 (or (ediff-mark-if-equal fileinfo1 fileinfo2)
2054 (setq marked1 nil))
1998 (if (ediff-metajob3) 2055 (if (ediff-metajob3)
1999 (progn 2056 (progn
2000 (ediff-mark-if-equal fileinfo1 fileinfo3) 2057 (or (ediff-mark-if-equal fileinfo1 fileinfo3)
2001 (ediff-mark-if-equal fileinfo2 fileinfo3))) 2058 (setq marked2 nil))
2059 (or (ediff-mark-if-equal fileinfo2 fileinfo3)
2060 (setq marked3 nil))))
2061 (if (and marked1 marked2 marked3)
2062 (cond ((eq last-command-char ?h)
2063 (ediff-mark-session-for-hiding elt 'mark))
2064 ((eq last-command-char ?m)
2065 (ediff-mark-session-for-operation elt 'mark))
2066 ))
2002 (setq list (cdr list)))) 2067 (setq list (cdr list))))
2003 (ediff-update-meta-buffer (current-buffer) 'must-redraw)) 2068 (ediff-update-meta-buffer (current-buffer) 'must-redraw))
2004 2069
2005;; mark files 1 and 2 as equal, if they are. 2070;; mark files 1 and 2 as equal, if they are.
2071;; returns t, if something was marked
2006(defun ediff-mark-if-equal (fileinfo1 fileinfo2) 2072(defun ediff-mark-if-equal (fileinfo1 fileinfo2)
2007 (let ((f1 (car fileinfo1)) 2073 (let ((f1 (car fileinfo1))
2008 (f2 (car fileinfo2))) 2074 (f2 (car fileinfo2)))
2009 (or (file-directory-p f1) 2075 (cond ((file-directory-p f1) nil)
2010 (file-directory-p f2) 2076 ((file-directory-p f2) nil)
2011 (if (ediff-same-file-contents f1 f2) 2077 ((ediff-same-file-contents f1 f2)
2012 (progn 2078 (ediff-set-file-eqstatus fileinfo1 t)
2013 (ediff-set-file-eqstatus fileinfo1 t) 2079 (ediff-set-file-eqstatus fileinfo2 t)
2014 (ediff-set-file-eqstatus fileinfo2 t)))))) 2080 t))
2081 ))
2015 2082
2016 2083
2017 2084