/[emacs]/emacs/lisp/ediff-mult.el
ViewVC logotype

Diff of /emacs/lisp/ediff-mult.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.29 by kifer, Wed Mar 20 06:36:18 2002 UTC revision 1.30 by lektu, Fri Oct 18 08:52:37 2002 UTC
# Line 27  Line 27 
27  ;; The present file contains all the infrastructure needed for that.  ;; The present file contains all the infrastructure needed for that.
28  ;;  ;;
29  ;; Generally, to implement a new multisession capability within Ediff,  ;; Generally, to implement a new multisession capability within Ediff,
30  ;; you need to tell it  ;; you need to tell it
31  ;;  ;;
32  ;;      1. How to display the session group buffer.  ;;      1. How to display the session group buffer.
33  ;;         This function must indicate which Ediff sessions are active (+) and  ;;         This function must indicate which Ediff sessions are active (+) and
# Line 53  Line 53 
53  ;;         HEADER must be a list of SIX elements (nil or string):  ;;         HEADER must be a list of SIX elements (nil or string):
54  ;;             (regexp metaobj1 metaobj2 metaobj3 merge-save-buffer  ;;             (regexp metaobj1 metaobj2 metaobj3 merge-save-buffer
55  ;;              comparison-function)  ;;              comparison-function)
56  ;;         The function ediff-redraw-registry-buffer displays the  ;;         The function ediff-redraw-registry-buffer displays the
57  ;;         1st - 4th of these in the registry buffer.  ;;         1st - 4th of these in the registry buffer.
58  ;;         For some jobs some of the members of the header might be nil.  ;;         For some jobs some of the members of the header might be nil.
59  ;;         The meaning of metaobj1, metaobj2, and metaobj3 depend on the job.  ;;         The meaning of metaobj1, metaobj2, and metaobj3 depend on the job.
60  ;;         Typically these are directories where the files to be compared are  ;;         Typically these are directories where the files to be compared are
# Line 80  Line 80 
80  ;;         (whose name is obj1).  ;;         (whose name is obj1).
81  ;;         The nil's are placeholders, which are used internally by ediff.  ;;         The nil's are placeholders, which are used internally by ediff.
82  ;;      4. Write a function that makes a call to ediff-prepare-meta-buffer  ;;      4. Write a function that makes a call to ediff-prepare-meta-buffer
83  ;;         passing all this info.  ;;         passing all this info.
84  ;;         You may be able to use ediff-directories-internal as a template.  ;;         You may be able to use ediff-directories-internal as a template.
85  ;;      5. If you intend to add several related pieces of functionality,  ;;      5. If you intend to add several related pieces of functionality,
86  ;;         you may want to keep the function in 4 as an internal version  ;;         you may want to keep the function in 4 as an internal version
# Line 88  Line 88 
88  ;;         with different parameters.  ;;         with different parameters.
89  ;;         See how ediff-directories, ediff-merge-directories, and  ;;         See how ediff-directories, ediff-merge-directories, and
90  ;;         ediff-merge-directories-with-ancestor all use  ;;         ediff-merge-directories-with-ancestor all use
91  ;;         ediff-directories-internal.  ;;         ediff-directories-internal.
92  ;;  ;;
93  ;; A useful addition here could be session groups selected by patterns  ;; A useful addition here could be session groups selected by patterns
94  ;; (which are different in each directory).  For instance, one may want to  ;; (which are different in each directory).  For instance, one may want to
# Line 96  Line 96 
96  ;; which may be in the same or different directories.  Or, one may want to  ;; which may be in the same or different directories.  Or, one may want to
97  ;; compare all files of the form {something} to files of the form {something}~.  ;; compare all files of the form {something} to files of the form {something}~.
98  ;;  ;;
99  ;; Implementing this requires writing an collating function, which should pair  ;; Implementing this requires writing a collating function, which should pair
100  ;; up appropriate files.  It will also require a generalization of the  ;; up appropriate files.  It will also require a generalization of the
101  ;; functions that do the layout of the meta- and differences buffers and of  ;; functions that do the layout of the meta- and differences buffers and of
102  ;; ediff-filegroup-action.  ;; ediff-filegroup-action.
# Line 207  It is used by commands such as ediff-dir Line 207  It is used by commands such as ediff-dir
207  This hook can be used to save the previous window config, which can be restored  This hook can be used to save the previous window config, which can be restored
208  on ediff-quit, ediff-suspend, or ediff-quit-session-group-hook."  on ediff-quit, ediff-suspend, or ediff-quit-session-group-hook."
209    :type 'hook    :type 'hook
210    :group 'ediff-hook)    :group 'ediff-hook)
211  (defcustom ediff-after-session-group-setup-hook nil  (defcustom ediff-after-session-group-setup-hook nil
212    "*Hooks run just after a meta-buffer controlling a session group, such as    "*Hooks run just after a meta-buffer controlling a session group, such as
213  ediff-directories, is run."  ediff-directories, is run."
# Line 322  buffers." Line 322  buffers."
322  ;; OBJA, OBJB, OBJC are usually directories involved, but can be different for  ;; OBJA, OBJB, OBJC are usually directories involved, but can be different for
323  ;; different jobs. For instance, multifile patch has only OBJA, which is the  ;; different jobs. For instance, multifile patch has only OBJA, which is the
324  ;; patch buffer.  ;; patch buffer.
325  (defun ediff-make-new-meta-list-header (regexp  (defun ediff-make-new-meta-list-header (regexp
326                                          objA objB objC                                          objA objB objC
327                                          merge-auto-store-dir                                          merge-auto-store-dir
328                                          comparison-func)                                          comparison-func)
# Line 340  buffers." Line 340  buffers."
340  ;; checks if the session is a meta session  ;; checks if the session is a meta session
341  (defun ediff-meta-session-p (session-info)  (defun ediff-meta-session-p (session-info)
342    (and (stringp (ediff-get-session-objA-name session-info))    (and (stringp (ediff-get-session-objA-name session-info))
343         (file-directory-p (ediff-get-session-objA-name session-info))         (file-directory-p (ediff-get-session-objA-name session-info))
344         (stringp (ediff-get-session-objB-name session-info))         (stringp (ediff-get-session-objB-name session-info))
345         (file-directory-p (ediff-get-session-objB-name session-info))         (file-directory-p (ediff-get-session-objB-name session-info))
346         (if (stringp (ediff-get-session-objC-name session-info))         (if (stringp (ediff-get-session-objC-name session-info))
# Line 468  Moves in circular fashion.  With numeric Line 468  Moves in circular fashion.  With numeric
468  ;;;    (while (ediff-get-session-status  ;;;    (while (ediff-get-session-status
469  ;;;         (ediff-get-meta-info (current-buffer) pos 'noerror))  ;;;         (ediff-get-meta-info (current-buffer) pos 'noerror))
470  ;;;      (setq pos (ediff-previous-meta-overlay-start pos)))  ;;;      (setq pos (ediff-previous-meta-overlay-start pos)))
471        
472      (if pos (goto-char pos))      (if pos (goto-char pos))
473      (if (eq ediff-metajob-name 'ediff-registry)      (if (eq ediff-metajob-name 'ediff-registry)
474          (if (and (ediff-get-meta-info (current-buffer) pos 'noerror)          (if (and (ediff-get-meta-info (current-buffer) pos 'noerror)
# Line 545  behavior." Line 545  behavior."
545            lis1          (directory-files auxdir1 nil regexp)            lis1          (directory-files auxdir1 nil regexp)
546            lis1          (delete "."  lis1)            lis1          (delete "."  lis1)
547            lis1          (delete ".." lis1)            lis1          (delete ".." lis1)
548            lis1          (mapcar            lis1          (mapcar
549                           (lambda (elt)                           (lambda (elt)
550                             (ediff-add-slash-if-directory auxdir1 elt))                             (ediff-add-slash-if-directory auxdir1 elt))
551                           lis1)                           lis1)
552            auxdir2       (file-name-as-directory dir2)            auxdir2       (file-name-as-directory dir2)
553            lis2          (mapcar            lis2          (mapcar
554                           (lambda (elt)                           (lambda (elt)
555                             (ediff-add-slash-if-directory auxdir2 elt))                             (ediff-add-slash-if-directory auxdir2 elt))
556                           (directory-files auxdir2 nil regexp)))                           (directory-files auxdir2 nil regexp)))
557    
558      (if (stringp dir3)      (if (stringp dir3)
559          (setq auxdir3   (file-name-as-directory dir3)          (setq auxdir3   (file-name-as-directory dir3)
560                lis3      (mapcar                lis3      (mapcar
561                           (lambda (elt)                           (lambda (elt)
562                             (ediff-add-slash-if-directory auxdir3 elt))                             (ediff-add-slash-if-directory auxdir3 elt))
563                           (directory-files auxdir3 nil regexp))))                           (directory-files auxdir3 nil regexp))))
# Line 614  behavior." Line 614  behavior."
614                                                       merge-autostore-dir                                                       merge-autostore-dir
615                                                       comparison-func)                                                       comparison-func)
616                      difflist))                      difflist))
617        
618      (setq common-part      (setq common-part
619            (cons            (cons
620             ;; metalist header             ;; metalist header
621             (ediff-make-new-meta-list-header regexp             (ediff-make-new-meta-list-header regexp
622                                              auxdir1 auxdir2 auxdir3                                              auxdir1 auxdir2 auxdir3
623                                              merge-autostore-dir                                              merge-autostore-dir
624                                              comparison-func)                                              comparison-func)
625             (mapcar             (mapcar
626              (lambda (elt)              (lambda (elt)
627                (ediff-make-new-meta-list-element                (ediff-make-new-meta-list-element
628                 (concat auxdir1 elt)                 (concat auxdir1 elt)
629                 (concat auxdir2 elt)                 (concat auxdir2 elt)
# Line 686  behavior." Line 686  behavior."
686      (setq common (sort (ediff-copy-list common) 'string-lessp))      (setq common (sort (ediff-copy-list common) 'string-lessp))
687    
688      ;; return result      ;; return result
689      (cons      (cons
690       ;; header -- has 6 elements. Meta buffer is prepended later by       ;; header -- has 6 elements. Meta buffer is prepended later by
691       ;; ediff-prepare-meta-buffer       ;; ediff-prepare-meta-buffer
692       (ediff-make-new-meta-list-header regexp       (ediff-make-new-meta-list-header regexp
693                                        auxdir1 nil nil                                        auxdir1 nil nil
694                                        merge-autostore-dir nil)                                        merge-autostore-dir nil)
# Line 696  behavior." Line 696  behavior."
696                              (concat auxdir1 elt) nil nil))                              (concat auxdir1 elt) nil nil))
697               common))               common))
698      ))      ))
699          
700    
701  ;; If file groups selected by patterns will ever be implemented, this  ;; If file groups selected by patterns will ever be implemented, this
702  ;; comparison function might become useful.  ;; comparison function might become useful.
# Line 733  behavior." Line 733  behavior."
733  (defun ediff-prepare-meta-buffer (action-func meta-list  (defun ediff-prepare-meta-buffer (action-func meta-list
734                                    meta-buffer-name redraw-function                                    meta-buffer-name redraw-function
735                                    jobname &optional startup-hooks)                                    jobname &optional startup-hooks)
736    (let* ((meta-buffer-name    (let* ((meta-buffer-name
737            (ediff-unique-buffer-name meta-buffer-name "*"))            (ediff-unique-buffer-name meta-buffer-name "*"))
738           (meta-buffer (get-buffer-create meta-buffer-name)))           (meta-buffer (get-buffer-create meta-buffer-name)))
739      (ediff-with-current-buffer meta-buffer      (ediff-with-current-buffer meta-buffer
# Line 748  behavior." Line 748  behavior."
748    
749        ;; comes after ediff-meta-action-function is set        ;; comes after ediff-meta-action-function is set
750        (ediff-setup-meta-map)        (ediff-setup-meta-map)
751          
752        (if (eq ediff-metajob-name 'ediff-registry)        (if (eq ediff-metajob-name 'ediff-registry)
753            (progn            (progn
754              (setq ediff-registry-buffer meta-buffer              (setq ediff-registry-buffer meta-buffer
# Line 762  behavior." Line 762  behavior."
762                ;; add meta-buffer to the list header                ;; add meta-buffer to the list header
763                (cons (cons meta-buffer (car meta-list))                (cons (cons meta-buffer (car meta-list))
764                      (cdr meta-list))))                      (cdr meta-list))))
765            
766        (or (eq meta-buffer ediff-registry-buffer)        (or (eq meta-buffer ediff-registry-buffer)
767            (setq ediff-session-registry            (setq ediff-session-registry
768                  (cons meta-buffer ediff-session-registry)))                  (cons meta-buffer ediff-session-registry)))
769            
770        ;; redraw-function uses ediff-meta-list        ;; redraw-function uses ediff-meta-list
771        (funcall redraw-function ediff-meta-list)        (funcall redraw-function ediff-meta-list)
772          
773        ;; set read-only/non-modified        ;; set read-only/non-modified
774        (setq buffer-read-only t)        (setq buffer-read-only t)
775        (set-buffer-modified-p nil)        (set-buffer-modified-p nil)
# Line 788  behavior." Line 788  behavior."
788    
789              (or (ediff-one-filegroup-metajob jobname)              (or (ediff-one-filegroup-metajob jobname)
790                  (ediff-draw-dir-diffs ediff-dir-difference-list))                  (ediff-draw-dir-diffs ediff-dir-difference-list))
791              (define-key              (define-key
792                ediff-meta-buffer-map "h" 'ediff-mark-for-hiding-at-pos)                ediff-meta-buffer-map "h" 'ediff-mark-for-hiding-at-pos)
793              (define-key ediff-meta-buffer-map "x" 'ediff-hide-marked-sessions)              (define-key ediff-meta-buffer-map "x" 'ediff-hide-marked-sessions)
794              (define-key              (define-key
795                ediff-meta-buffer-map "m" 'ediff-mark-for-operation-at-pos)                ediff-meta-buffer-map "m" 'ediff-mark-for-operation-at-pos)
796              (define-key ediff-meta-buffer-map "u" nil)              (define-key ediff-meta-buffer-map "u" nil)
797              (define-key              (define-key
798                ediff-meta-buffer-map "um" 'ediff-unmark-all-for-operation)                ediff-meta-buffer-map "um" 'ediff-unmark-all-for-operation)
799              (define-key              (define-key
800                ediff-meta-buffer-map "uh" 'ediff-unmark-all-for-hiding)                ediff-meta-buffer-map "uh" 'ediff-unmark-all-for-hiding)
801              (cond ((ediff-collect-diffs-metajob jobname)              (cond ((ediff-collect-diffs-metajob jobname)
802                     (define-key                     (define-key
# Line 826  behavior." Line 826  behavior."
826  ;; Insert session status at point.  Status is either ?H (marked for hiding), or  ;; Insert session status at point.  Status is either ?H (marked for hiding), or
827  ;; ?I (hidden or invalid), or ?* (meaning marked for an operation; currently,  ;; ?I (hidden or invalid), or ?* (meaning marked for an operation; currently,
828  ;; such op can only be checking for equality)), or SPC (meaning neither marked  ;; such op can only be checking for equality)), or SPC (meaning neither marked
829  ;; nor invalid)  ;; nor invalid)
830  (defun ediff-insert-session-status-in-meta-buffer (session)  (defun ediff-insert-session-status-in-meta-buffer (session)
831    (insert    (insert
832     (cond ((ediff-get-session-status session)) ; session has status: ?H, ?I, ?*     (cond ((ediff-get-session-status session)) ; session has status: ?H, ?I, ?*
# Line 900  behavior." Line 900  behavior."
900         (map-extents 'delete-extent)   ; xemacs         (map-extents 'delete-extent)   ; xemacs
901         (mapcar 'delete-overlay (overlays-in 1 1))  ; emacs         (mapcar 'delete-overlay (overlays-in 1 1))  ; emacs
902         )         )
903          
904        (insert (format ediff-meta-buffer-message        (insert (format ediff-meta-buffer-message
905                        (ediff-abbrev-jobname ediff-metajob-name)))                        (ediff-abbrev-jobname ediff-metajob-name)))
906    
907        (setq regexp (ediff-get-group-regexp meta-list)        (setq regexp (ediff-get-group-regexp meta-list)
908              merge-autostore-dir              merge-autostore-dir
909              (ediff-get-group-merge-autostore-dir meta-list))              (ediff-get-group-merge-autostore-dir meta-list))
910          
911        (cond ((ediff-collect-diffs-metajob)        (cond ((ediff-collect-diffs-metajob)
912               (insert               (insert
913                "     P:\tcollect custom diffs of all marked sessions\n"))                "     P:\tcollect custom diffs of all marked sessions\n"))
# Line 938  behavior." Line 938  behavior."
938      ----------------------------------------------      ----------------------------------------------
939    
940  ")  ")
941          
942        ;; discard info on directories and regexp        ;; discard info on directories and regexp
943        (setq meta-list (cdr meta-list)        (setq meta-list (cdr meta-list)
944              tmp-list meta-list)              tmp-list meta-list)
# Line 951  behavior." Line 951  behavior."
951        (if empty        (if empty
952            (insert            (insert
953             "     ******   ******   This session group has no members\n"))             "     ******   ******   This session group has no members\n"))
954          
955        ;; now organize file names like this:        ;; now organize file names like this:
956        ;;     use-mark sizeA dateA  sizeB dateB  filename        ;;     use-mark sizeA dateA  sizeB dateB  filename
957        ;; make sure directories are displayed with a trailing slash.        ;; make sure directories are displayed with a trailing slash.
# Line 1213  Useful commands: Line 1213  Useful commands:
1213          (if (stringp dir3)          (if (stringp dir3)
1214              (if (= (mod membership-code ediff-membership-code3) 0) ; dir3              (if (= (mod membership-code ediff-membership-code3) 0) ; dir3
1215                  (let ((beg (point)))                  (let ((beg (point)))
1216                    (insert (format " %-25s"                    (insert (format " %-25s"
1217                                    (ediff-truncate-string-left                                    (ediff-truncate-string-left
1218                                     (ediff-abbreviate-file-name                                     (ediff-abbreviate-file-name
1219                                      (if (file-directory-p (concat dir3 file))                                      (if (file-directory-p (concat dir3 file))
# Line 1327  Useful commands: Line 1327  Useful commands:
1327        (ediff-show-meta-buffer        (ediff-show-meta-buffer
1328         ediff-parent-meta-buffer ediff-meta-session-number)         ediff-parent-meta-buffer ediff-meta-session-number)
1329      (error "This session group has no parent")))      (error "This session group has no parent")))
1330      
1331    
1332  ;; argument is ignored  ;; argument is ignored
1333  (defun ediff-redraw-registry-buffer (&optional ignore)  (defun ediff-redraw-registry-buffer (&optional ignore)
# Line 1373  Useful commands: Line 1373  Useful commands:
1373        (while registry-list        (while registry-list
1374          (setq elt (car registry-list)          (setq elt (car registry-list)
1375                registry-list (cdr registry-list))                registry-list (cdr registry-list))
1376            
1377          (if (ediff-buffer-live-p elt)          (if (ediff-buffer-live-p elt)
1378              (if (ediff-with-current-buffer elt              (if (ediff-with-current-buffer elt
1379                    (setq job-name ediff-metajob-name                    (setq job-name ediff-metajob-name
# Line 1479  Useful commands: Line 1479  Useful commands:
1479  ;;;       (error "Can't hide active session, %s" (buffer-name session-buf)))  ;;;       (error "Can't hide active session, %s" (buffer-name session-buf)))
1480            (t (ediff-set-session-status info ?H))))            (t (ediff-set-session-status info ?H))))
1481    unmark)    unmark)
1482      
1483    
1484  (defun ediff-mark-for-operation-at-pos (unmark)  (defun ediff-mark-for-operation-at-pos (unmark)
1485    "Mark session for a group operation.  With prefix arg, unmark."    "Mark session for a group operation.  With prefix arg, unmark."
# Line 1562  Useful commands: Line 1562  Useful commands:
1562                 (funcall operation elt sessionNum)))                 (funcall operation elt sessionNum)))
1563              ;; The following goes into a session represented by a subdirectory              ;; The following goes into a session represented by a subdirectory
1564              ;; and applies operation to marked sessions there              ;; and applies operation to marked sessions there
1565              ((and  (ediff-meta-session-p elt)              ((and  (ediff-meta-session-p elt)
1566                     (ediff-buffer-live-p                     (ediff-buffer-live-p
1567                      (setq session-buf (ediff-get-session-buffer elt))))                      (setq session-buf (ediff-get-session-buffer elt))))
1568               (setq numMarked               (setq numMarked
1569                     (+ numMarked                     (+ numMarked
1570                        (ediff-with-current-buffer session-buf                        (ediff-with-current-buffer session-buf
1571                          ;; pass meta-diff along                          ;; pass meta-diff along
1572                          (setq ediff-meta-diff-buffer diff-buffer)                          (setq ediff-meta-diff-buffer diff-buffer)
# Line 1602  Useful commands: Line 1602  Useful commands:
1602               (insert-buffer custom-diff-buf)               (insert-buffer custom-diff-buf)
1603               (insert "\n")))               (insert "\n")))
1604            ;; if ediff session is not live, run diff directly on the files            ;; if ediff session is not live, run diff directly on the files
1605            ((memq metajob '(ediff-directories            ((memq metajob '(ediff-directories
1606                             ediff-merge-directories                             ediff-merge-directories
1607                             ediff-merge-directories-with-ancestor))                             ediff-merge-directories-with-ancestor))
1608             ;; get diffs by calling shell command on ediff-custom-diff-program             ;; get diffs by calling shell command on ediff-custom-diff-program
# Line 1671  all marked sessions must be active." Line 1671  all marked sessions must be active."
1671              ))              ))
1672        (error "The patch buffer wasn't found"))))        (error "The patch buffer wasn't found"))))
1673    
1674                  
1675  ;; This function executes in meta buffer.  It knows where event happened.  ;; This function executes in meta buffer.  It knows where event happened.
1676  (defun ediff-filegroup-action ()  (defun ediff-filegroup-action ()
1677    "Execute appropriate action for a selected session."    "Execute appropriate action for a selected session."
# Line 1710  all marked sessions must be active." Line 1710  all marked sessions must be active."
1710               ;; do ediff/ediff-merge on subdirectories               ;; do ediff/ediff-merge on subdirectories
1711               (if (ediff-buffer-live-p session-buf)               (if (ediff-buffer-live-p session-buf)
1712                   (ediff-show-meta-buffer session-buf)                   (ediff-show-meta-buffer session-buf)
1713                 (setq regexp (read-string "Filter through regular expression: "                 (setq regexp (read-string "Filter through regular expression: "
1714                                           nil 'ediff-filtering-regexp-history))                                           nil 'ediff-filtering-regexp-history))
1715                 (ediff-directories-internal                 (ediff-directories-internal
1716                  file1 file2 file3 regexp                  file1 file2 file3 regexp
1717                  ediff-session-action-function                  ediff-session-action-function
1718                  ediff-metajob-name                  ediff-metajob-name
1719                  ;; make it update (car info) after startup                  ;; make it update (car info) after startup
1720                  `(list (lambda ()                  `(list (lambda ()
1721                           ;; child session group should know its parent                           ;; child session group should know its parent
1722                           (setq ediff-parent-meta-buffer                           (setq ediff-parent-meta-buffer
1723                                 (quote ,ediff-meta-buffer)                                 (quote ,ediff-meta-buffer)
# Line 1732  all marked sessions must be active." Line 1732  all marked sessions must be active."
1732                    (file-directory-p file1))                    (file-directory-p file1))
1733               (if (ediff-buffer-live-p session-buf)               (if (ediff-buffer-live-p session-buf)
1734                   (ediff-show-meta-buffer session-buf)                   (ediff-show-meta-buffer session-buf)
1735                 (setq regexp (read-string "Filter through regular expression: "                 (setq regexp (read-string "Filter through regular expression: "
1736                                           nil 'ediff-filtering-regexp-history))                                           nil 'ediff-filtering-regexp-history))
1737                 (ediff-directory-revisions-internal                 (ediff-directory-revisions-internal
1738                  file1 regexp                  file1 regexp
1739                  ediff-session-action-function ediff-metajob-name                  ediff-session-action-function ediff-metajob-name
1740                  ;; make it update (car info) after startup                  ;; make it update (car info) after startup
1741                  `(list (lambda ()                  `(list (lambda ()
1742                           ;; child session group should know its parent and                           ;; child session group should know its parent and
1743                           ;; its number                           ;; its number
1744                           (setq ediff-parent-meta-buffer                           (setq ediff-parent-meta-buffer
# Line 1762  all marked sessions must be active." Line 1762  all marked sessions must be active."
1762                    "This session has no ancestor.  Merge without the ancestor? ")                    "This session has no ancestor.  Merge without the ancestor? ")
1763                   (ediff-merge-files                   (ediff-merge-files
1764                    file1 file2                    file1 file2
1765                    ;; provide startup hooks                    ;; provide startup hooks
1766                    `(list (lambda ()                    `(list (lambda ()
1767                               (add-hook                               (add-hook
1768                                'ediff-after-quit-hook-internal                                'ediff-after-quit-hook-internal
1769                                (lambda ()                                (lambda ()
# Line 1791  all marked sessions must be active." Line 1791  all marked sessions must be active."
1791              ((ediff-one-filegroup-metajob)      ; needs 1 file arg              ((ediff-one-filegroup-metajob)      ; needs 1 file arg
1792               (funcall ediff-session-action-function               (funcall ediff-session-action-function
1793                        file1                        file1
1794                        ;; provide startup hooks                        ;; provide startup hooks
1795                        `(list (lambda ()                        `(list (lambda ()
1796                                 (add-hook                                 (add-hook
1797                                  'ediff-after-quit-hook-internal                                  'ediff-after-quit-hook-internal
1798                                  (lambda ()                                  (lambda ()
# Line 1820  all marked sessions must be active." Line 1820  all marked sessions must be active."
1820              ((not (ediff-metajob3))      ; need 2 file args              ((not (ediff-metajob3))      ; need 2 file args
1821               (funcall ediff-session-action-function               (funcall ediff-session-action-function
1822                        file1 file2                        file1 file2
1823                        ;; provide startup hooks                        ;; provide startup hooks
1824                        `(list (lambda ()                        `(list (lambda ()
1825                                 (add-hook                                 (add-hook
1826                                  'ediff-after-quit-hook-internal                                  'ediff-after-quit-hook-internal
1827                                  (lambda ()                                  (lambda ()
# Line 1849  all marked sessions must be active." Line 1849  all marked sessions must be active."
1849              ((ediff-metajob3)      ; need 3 file args              ((ediff-metajob3)      ; need 3 file args
1850               (funcall ediff-session-action-function               (funcall ediff-session-action-function
1851                        file1 file2 file3                        file1 file2 file3
1852                        ;; arrange startup hooks                        ;; arrange startup hooks
1853                        `(list (lambda ()                        `(list (lambda ()
1854                                 (add-hook                                 (add-hook
1855                                  'ediff-after-quit-hook-internal                                  'ediff-after-quit-hook-internal
1856                                  (lambda ()                                  (lambda ()
# Line 1956  all marked sessions must be active." Line 1956  all marked sessions must be active."
1956                   (set-window-buffer (selected-window) meta-buf)))                   (set-window-buffer (selected-window) meta-buf)))
1957          ))          ))
1958      (if (and (ediff-window-display-p)      (if (and (ediff-window-display-p)
1959               (window-live-p               (window-live-p
1960                (setq wind (ediff-get-visible-buffer-window meta-buf))))                (setq wind (ediff-get-visible-buffer-window meta-buf))))
1961          (progn          (progn
1962            (setq frame (window-frame wind))            (setq frame (window-frame wind))
# Line 2018  all marked sessions must be active." Line 2018  all marked sessions must be active."
2018          ))          ))
2019      (if (ediff-window-display-p)      (if (ediff-window-display-p)
2020          (progn          (progn
2021            (setq frame            (setq frame
2022                  (window-frame                  (window-frame
2023                   (ediff-get-visible-buffer-window ediff-registry-buffer)))                   (ediff-get-visible-buffer-window ediff-registry-buffer)))
2024            (raise-frame frame)            (raise-frame frame)
# Line 2058  all marked sessions must be active." Line 2058  all marked sessions must be active."
2058    (ediff-with-current-buffer (current-buffer)    (ediff-with-current-buffer (current-buffer)
2059      (if (ediff-buffer-live-p ediff-registry-buffer)      (if (ediff-buffer-live-p ediff-registry-buffer)
2060          (ediff-redraw-registry-buffer)          (ediff-redraw-registry-buffer)
2061        (ediff-prepare-meta-buffer        (ediff-prepare-meta-buffer
2062         'ediff-registry-action         'ediff-registry-action
2063         ediff-session-registry         ediff-session-registry
2064         "*Ediff Registry"         "*Ediff Registry"
# Line 2066  all marked sessions must be active." Line 2066  all marked sessions must be active."
2066         'ediff-registry))         'ediff-registry))
2067      ))      ))
2068    
2069  ;; If meta-buf exists, it is redrawn along with parent.  ;; If meta-buf exists, it is redrawn along with parent.
2070  ;; Otherwise, nothing happens.  ;; Otherwise, nothing happens.
2071  (defun ediff-cleanup-meta-buffer (meta-buffer)  (defun ediff-cleanup-meta-buffer (meta-buffer)
2072    (if (ediff-buffer-live-p meta-buffer)    (if (ediff-buffer-live-p meta-buffer)
# Line 2134  If this is a session registry buffer the Line 2134  If this is a session registry buffer the
2134      (if (ediff-buffer-live-p ediff-dir-diffs-buffer)      (if (ediff-buffer-live-p ediff-dir-diffs-buffer)
2135          (kill-buffer ediff-dir-diffs-buffer)))          (kill-buffer ediff-dir-diffs-buffer)))
2136    (kill-buffer buf))    (kill-buffer buf))
2137        
2138    
2139  ;; Obtain information on a meta record where the user clicked or typed  ;; Obtain information on a meta record where the user clicked or typed
2140  ;; BUF is the buffer where this happened and POINT is the position  ;; BUF is the buffer where this happened and POINT is the position

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26