comparison lisp/ediff/ediff-init.el @ 181:bfd6434d15b3 r20-3b17

Import from CVS: tag r20-3b17
author cvs
date Mon, 13 Aug 2007 09:53:19 +0200
parents 2d532a89d707
children acd284d43ca1
comparison
equal deleted inserted replaced
180:add28d59e586 181:bfd6434d15b3
95 ;; Ancestor buffer 95 ;; Ancestor buffer
96 (ediff-defvar-local ediff-ancestor-buffer nil "") 96 (ediff-defvar-local ediff-ancestor-buffer nil "")
97 ;; The Ediff control buffer 97 ;; The Ediff control buffer
98 (ediff-defvar-local ediff-control-buffer nil "") 98 (ediff-defvar-local ediff-control-buffer nil "")
99 99
100
101 ;; Association between buff-type and ediff-buffer-*
102 (defconst ediff-buffer-alist
103 '((?A . ediff-buffer-A)
104 (?B . ediff-buffer-B)
105 (?C . ediff-buffer-C)))
106
100 ;;; Macros 107 ;;; Macros
101 (defmacro ediff-odd-p (arg) 108 (defmacro ediff-odd-p (arg)
102 (` (eq (logand (, arg) 1) 1))) 109 (` (eq (logand (, arg) 1) 1)))
103 110
104 (defmacro ediff-buffer-live-p (buf) 111 (defmacro ediff-buffer-live-p (buf)
121 (` (cond ((memq (, arg) '(?a ?A)) 'A) 128 (` (cond ((memq (, arg) '(?a ?A)) 'A)
122 ((memq (, arg) '(?b ?B)) 'B) 129 ((memq (, arg) '(?b ?B)) 'B)
123 ((memq (, arg) '(?c ?C)) 'C) 130 ((memq (, arg) '(?c ?C)) 'C)
124 ) 131 )
125 )) 132 ))
126 133
134
135 ;; A-list is supposed to be of the form (A . symb) (B . symb)...)
136 ;; where the first part of any association is a buffer type and the second is
137 ;; an appropriate symbol. Given buffer-type, this function returns the
138 ;; symbol. This is used to avoid using `intern'
139 (defsubst ediff-get-symbol-from-alist (buf-type alist)
140 (cdr (assoc buf-type alist)))
141
142 (defconst ediff-difference-vector-alist
143 '((A . ediff-difference-vector-A)
144 (B . ediff-difference-vector-B)
145 (C . ediff-difference-vector-C)
146 (Ancestor . ediff-difference-vector-Ancestor)))
147
127 (defmacro ediff-get-difference (n buf-type) 148 (defmacro ediff-get-difference (n buf-type)
128 (` (aref 149 (` (aref
129 (symbol-value 150 (symbol-value
130 (intern (format "ediff-difference-vector-%S" (, buf-type)))) (, n)))) 151 (ediff-get-symbol-from-alist
152 (, buf-type) ediff-difference-vector-alist))
153 (, n))))
131 154
132 ;; Tell if it has been previously determined that the region has 155 ;; Tell if it has been previously determined that the region has
133 ;; no diffs other than the white space and newlines 156 ;; no diffs other than the white space and newlines
134 ;; The argument, N, is the diff region number used by Ediff to index the 157 ;; The argument, N, is the diff region number used by Ediff to index the
135 ;; diff vector. It is 1 less than the number seen by the user. 158 ;; diff vector. It is 1 less than the number seen by the user.
187 210
188 (defmacro ediff-get-fine-diff-vector (n buf-type) 211 (defmacro ediff-get-fine-diff-vector (n buf-type)
189 (` (ediff-get-fine-diff-vector-from-diff-record 212 (` (ediff-get-fine-diff-vector-from-diff-record
190 (ediff-get-difference (, n) (, buf-type))))) 213 (ediff-get-difference (, n) (, buf-type)))))
191 214
192 ;; Macro to switch to BUFFER, evaluate FORMS, returns to original buffer. 215 ;; Macro to switch to BUFFER, evaluate BODY, returns to original buffer.
193 ;; Differs from `save-excursion' in that it doesn't save the point and mark. 216 ;; Doesn't save the point and mark.
194 ;; This is essentially `emerge-eval-in-buffer' with the test for live buffers." 217 ;; This is `with-current-buffer' with the added test for live buffers."
195 (defmacro ediff-eval-in-buffer (buffer &rest forms) 218 (defmacro ediff-with-current-buffer (buffer &rest body)
196 (` (let ((StartBuffer (current-buffer))) 219 (` (if (ediff-buffer-live-p (, buffer))
197 (if (ediff-buffer-live-p (, buffer)) 220 (save-current-buffer
198 (unwind-protect 221 (set-buffer (, buffer))
199 (progn 222 (,@ body))
200 (set-buffer (, buffer)) 223 (or (eq this-command 'ediff-quit)
201 (,@ forms)) 224 (error ediff-KILLED-VITAL-BUFFER))
202 (set-buffer StartBuffer)) 225 )))
203 (or (eq this-command 'ediff-quit) 226
204 (error ediff-KILLED-VITAL-BUFFER))
205 ))))
206
207 227
208 (defsubst ediff-multiframe-setup-p () 228 (defsubst ediff-multiframe-setup-p ()
209 (and (ediff-window-display-p) ediff-multiframe)) 229 (and (ediff-window-display-p) ediff-multiframe))
210 230
211 (defmacro ediff-narrow-control-frame-p () 231 (defmacro ediff-narrow-control-frame-p ()
559 ;; The original values of ediff-protected-variables for buffer C 579 ;; The original values of ediff-protected-variables for buffer C
560 (ediff-defvar-local ediff-buffer-values-orig-C nil "") 580 (ediff-defvar-local ediff-buffer-values-orig-C nil "")
561 ;; The original values of ediff-protected-variables for buffer Ancestor 581 ;; The original values of ediff-protected-variables for buffer Ancestor
562 (ediff-defvar-local ediff-buffer-values-orig-Ancestor nil "") 582 (ediff-defvar-local ediff-buffer-values-orig-Ancestor nil "")
563 583
584 ;; association between buff-type and ediff-buffer-values-orig-*
585 (defconst ediff-buffer-values-orig-alist
586 '((A . ediff-buffer-values-orig-A)
587 (B . ediff-buffer-values-orig-B)
588 (C . ediff-buffer-values-orig-C)
589 (Ancestor . ediff-buffer-values-orig-Ancestor)))
590
564 ;; Buffer-local variables to be saved then restored during Ediff sessions 591 ;; Buffer-local variables to be saved then restored during Ediff sessions
565 (defconst ediff-protected-variables '( 592 (defconst ediff-protected-variables '(
566 ;;buffer-read-only 593 ;;buffer-read-only
567 mode-line-format)) 594 mode-line-format))
568 595
583 ;; different from the other two (used only in 3-way jobs. 610 ;; different from the other two (used only in 3-way jobs.
584 (ediff-defvar-local ediff-difference-vector-A nil "") 611 (ediff-defvar-local ediff-difference-vector-A nil "")
585 (ediff-defvar-local ediff-difference-vector-B nil "") 612 (ediff-defvar-local ediff-difference-vector-B nil "")
586 (ediff-defvar-local ediff-difference-vector-C nil "") 613 (ediff-defvar-local ediff-difference-vector-C nil "")
587 (ediff-defvar-local ediff-difference-vector-Ancestor nil "") 614 (ediff-defvar-local ediff-difference-vector-Ancestor nil "")
615 ;; A-list of diff vector types associated with buffer types
616 (defconst ediff-difference-vector-alist
617 '((A . ediff-difference-vector-A)
618 (B . ediff-difference-vector-B)
619 (C . ediff-difference-vector-C)
620 (Ancestor . ediff-difference-vector-Ancestor)))
588 621
589 ;; [ status status status ...] 622 ;; [ status status status ...]
590 ;; Each status: [state-of-merge state-of-ancestor] 623 ;; Each status: [state-of-merge state-of-ancestor]
591 ;; state-of-merge is default-A, default-B, prefer-A, or prefer-B. It 624 ;; state-of-merge is default-A, default-B, prefer-A, or prefer-B. It
592 ;; indicates the way a diff region was created in buffer C. 625 ;; indicates the way a diff region was created in buffer C.
674 (error "%S: Invalid op in ediff-check-version" op)))) 707 (error "%S: Invalid op in ediff-check-version" op))))
675 (cond ((memq op '(= > >=)) nil) 708 (cond ((memq op '(= > >=)) nil)
676 ((memq op '(< <=)) t)))) 709 ((memq op '(< <=)) t))))
677 710
678 711
679 ;;;; warn if it is a wrong version of emacs
680 ;;(if (or (ediff-check-version '< 19 35 'emacs)
681 ;; (ediff-check-version '< 19 15 'xemacs))
682 ;; (progn
683 ;; (with-output-to-temp-buffer ediff-msg-buffer
684 ;; (switch-to-buffer ediff-msg-buffer)
685 ;; (insert
686 ;; (format "
687 ;;
688 ;;This version of Ediff requires
689 ;;
690 ;;\t Emacs 19.35 and higher
691 ;;\t OR
692 ;;\t XEmacs 19.15 and higher
693 ;;
694 ;;It is unlikely to work under Emacs version %s
695 ;;that you are using... " emacs-version))
696 ;; (if noninteractive
697 ;; ()
698 ;; (beep 1)
699 ;; (beep 1)
700 ;; (insert "\n\nType any key to continue...")
701 ;; (ediff-read-event)))
702 ;; (kill-buffer ediff-msg-buffer)))
703 712
704 ;; A fix for NeXT Step 713 ;; A fix for NeXT Step
705 ;; Should probably be eliminated in later versions. 714 ;; Should probably be eliminated in later versions.
706 (if (and (ediff-window-display-p) (eq (ediff-device-type) 'ns)) 715 (if (and (ediff-window-display-p) (eq (ediff-device-type) 'ns))
707 (progn 716 (progn
741 (fset 'ediff-display-pixel-width 750 (fset 'ediff-display-pixel-width
742 (symbol-function 'x-display-pixel-width)) 751 (symbol-function 'x-display-pixel-width))
743 (fset 'ediff-display-pixel-height 752 (fset 'ediff-display-pixel-height
744 (symbol-function 'x-display-pixel-height)))) 753 (symbol-function 'x-display-pixel-height))))
745 754
755 ;; A-list of current-diff-overlay symbols asssociated with buf types
756 (defconst ediff-current-diff-overlay-alist
757 '((A . ediff-current-diff-overlay-A)
758 (B . ediff-current-diff-overlay-B)
759 (C . ediff-current-diff-overlay-C)
760 (Ancestor . ediff-current-diff-overlay-Ancestor)))
761
762 ;; A-list of current-diff-face-* symbols asssociated with buf types
763 (defconst ediff-current-diff-face-alist
764 '((A . ediff-current-diff-face-A)
765 (B . ediff-current-diff-face-B)
766 (C . ediff-current-diff-face-C)
767 (Ancestor . ediff-current-diff-face-Ancestor)))
768
746 769
747 (defun ediff-make-current-diff-overlay (type) 770 (defun ediff-make-current-diff-overlay (type)
748 (if (ediff-has-face-support-p) 771 (if (ediff-has-face-support-p)
749 (let ((overlay (intern (format "ediff-current-diff-overlay-%S" type))) 772 (let ((overlay (ediff-get-symbol-from-alist
773 type ediff-current-diff-overlay-alist))
750 (buffer (ediff-get-buffer type)) 774 (buffer (ediff-get-buffer type))
751 (face (face-name 775 (face (face-name
752 (symbol-value 776 (symbol-value
753 (intern (format "ediff-current-diff-face-%S" type)))))) 777 (ediff-get-symbol-from-alist
778 type ediff-current-diff-face-alist)))))
754 (set overlay 779 (set overlay
755 (ediff-make-bullet-proof-overlay (point-max) (point-max) buffer)) 780 (ediff-make-bullet-proof-overlay (point-max) (point-max) buffer))
756 (ediff-set-overlay-face (symbol-value overlay) face) 781 (ediff-set-overlay-face (symbol-value overlay) face)
757 (ediff-overlay-put (symbol-value overlay) 'ediff ediff-control-buffer)) 782 (ediff-overlay-put (symbol-value overlay) 'ediff ediff-control-buffer))
758 )) 783 ))
777 (diff-num ; non-current 802 (diff-num ; non-current
778 (format "Difference region %S -- non-current" (1+ diff-num))) 803 (format "Difference region %S -- non-current" (1+ diff-num)))
779 (t "")) ; none 804 (t "")) ; none
780 )) 805 ))
781 806
782 (defun ediff-set-face (ground face color) 807 ;;(defun ediff-set-face (ground face color)
783 "Set face foreground/background." 808 ;; "Set face foreground/background."
784 (if (ediff-has-face-support-p) 809 ;; (if (ediff-has-face-support-p)
785 (if (ediff-valid-color-p color) 810 ;; (if (ediff-valid-color-p color)
786 (if (eq ground 'foreground) 811 ;; (if (eq ground 'foreground)
787 (set-face-foreground face color) 812 ;; (set-face-foreground face color)
788 (set-face-background face color)) 813 ;; (set-face-background face color))
789 (cond ((memq face 814 ;; (cond ((memq face
790 '(ediff-current-diff-face-A 815 ;; '(ediff-current-diff-face-A
791 ediff-current-diff-face-B 816 ;; ediff-current-diff-face-B
792 ediff-current-diff-face-C 817 ;; ediff-current-diff-face-C
793 ediff-current-diff-face-Ancestor)) 818 ;; ediff-current-diff-face-Ancestor))
794 (copy-face 'highlight face)) 819 ;; (copy-face 'highlight face))
795 ((memq face 820 ;; ((memq face
796 '(ediff-fine-diff-face-A 821 ;; '(ediff-fine-diff-face-A
797 ediff-fine-diff-face-B 822 ;; ediff-fine-diff-face-B
798 ediff-fine-diff-face-C 823 ;; ediff-fine-diff-face-C
799 ediff-fine-diff-face-Ancestor)) 824 ;; ediff-fine-diff-face-Ancestor))
800 (copy-face 'secondary-selection face) 825 ;; (copy-face 'secondary-selection face)
801 (set-face-underline-p face t)) 826 ;; (set-face-underline-p face t))
802 ((memq face 827 ;; ((memq face
803 '(ediff-even-diff-face-A 828 ;; '(ediff-even-diff-face-A
804 ediff-odd-diff-face-A 829 ;; ediff-odd-diff-face-A
805 ediff-even-diff-face-B ediff-odd-diff-face-B 830 ;; ediff-even-diff-face-B ediff-odd-diff-face-B
806 ediff-even-diff-face-C ediff-odd-diff-face-C 831 ;; ediff-even-diff-face-C ediff-odd-diff-face-C
807 ediff-even-diff-face-Ancestor 832 ;; ediff-even-diff-face-Ancestor
808 ediff-odd-diff-face-Ancestor)) 833 ;; ediff-odd-diff-face-Ancestor))
809 (copy-face 'secondary-selection face)))) 834 ;; (copy-face 'secondary-selection face))))
810 )) 835 ;; ))
811 836
812 (defun ediff-set-face-pixmap (face pixmap) 837 (defun ediff-set-face-pixmap (face pixmap)
813 "Set face pixmap on a monochrome display." 838 "Set face pixmap on a monochrome display."
814 (if (and (ediff-window-display-p) (not (ediff-color-display-p))) 839 (if (and (ediff-window-display-p) (not (ediff-color-display-p)))
815 (condition-case nil 840 (condition-case nil
820 845
821 (defun ediff-hide-face (face) 846 (defun ediff-hide-face (face)
822 (if (and (ediff-has-face-support-p) ediff-emacs-p) 847 (if (and (ediff-has-face-support-p) ediff-emacs-p)
823 (add-to-list 'facemenu-unlisted-faces face))) 848 (add-to-list 'facemenu-unlisted-faces face)))
824 849
825 (defvar ediff-current-diff-face-A 850 (defgroup ediff-highlighting nil
826 (if (ediff-has-face-support-p) 851 "Hilighting of difference regions in Ediff"
827 (progn 852 :prefix "ediff-"
828 (make-face 'ediff-current-diff-face-A) 853 :group 'ediff)
829 (ediff-hide-face 'ediff-current-diff-face-A) 854
830 (or (face-differs-from-default-p 'ediff-current-diff-face-A) 855 ;;(defvar ediff-current-diff-face-A
831 (cond ((ediff-color-display-p) 856 ;; (if (ediff-has-face-support-p)
832 (ediff-set-face 857 ;; (progn
833 'foreground 'ediff-current-diff-face-A "firebrick") 858 ;; (make-face 'ediff-current-diff-face-A)
834 (ediff-set-face 859 ;; (or (face-differs-from-default-p 'ediff-current-diff-face-A)
835 'background 'ediff-current-diff-face-A "pale green")) 860 ;; (cond ((ediff-color-display-p)
836 (t 861 ;; (ediff-set-face
837 (if ediff-xemacs-p 862 ;; 'foreground 'ediff-current-diff-face-A "firebrick")
838 (copy-face 'modeline 'ediff-current-diff-face-A) 863 ;; (ediff-set-face
839 (copy-face 'highlight 'ediff-current-diff-face-A)) 864 ;; 'background 'ediff-current-diff-face-A "pale green"))
840 ))) 865 ;; (t
841 'ediff-current-diff-face-A)) 866 ;; (if ediff-xemacs-p
842 "Face for highlighting the selected difference in buffer A.") 867 ;; (copy-face 'modeline 'ediff-current-diff-face-A)
843 868 ;; (copy-face 'highlight 'ediff-current-diff-face-A))
844 (defvar ediff-current-diff-face-B 869 ;; )))
845 (if (ediff-has-face-support-p) 870 ;; 'ediff-current-diff-face-A))
846 (progn 871 ;; "Face for highlighting the selected difference in buffer A.")
847 (make-face 'ediff-current-diff-face-B) 872
848 (ediff-hide-face 'ediff-current-diff-face-B) 873 (defface ediff-current-diff-face-A
849 (or (face-differs-from-default-p 'ediff-current-diff-face-B) 874 '((((class color)) (:foreground "firebrick" :background "pale green"))
850 (cond ((ediff-color-display-p) 875 (t (:inverse-video t)))
851 (ediff-set-face 876 "Face for highlighting the selected difference in buffer A."
852 'foreground 'ediff-current-diff-face-B "DarkOrchid") 877 :group 'ediff-highlighting)
853 (ediff-set-face 878 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
854 'background 'ediff-current-diff-face-B "Yellow")) 879 ;; this variable is set to nil, then again to the appropriate face.
855 (t 880 (defvar ediff-current-diff-face-A 'ediff-current-diff-face-A)
856 (if ediff-xemacs-p 881 (ediff-hide-face 'ediff-current-diff-face-A)
857 (copy-face 'modeline 'ediff-current-diff-face-B) 882 ;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
858 (copy-face 'highlight 'ediff-current-diff-face-B)) 883 ;; This means that some user customization may be trashed.
859 ))) 884 (if (and ediff-xemacs-p
860 'ediff-current-diff-face-B)) 885 (ediff-has-face-support-p)
861 "Face for highlighting the selected difference in buffer B.") 886 (not (ediff-color-display-p)))
887 (copy-face 'modeline 'ediff-current-diff-face-A))
888
889
890
891 ;;(defvar ediff-current-diff-face-B
892 ;; (if (ediff-has-face-support-p)
893 ;; (progn
894 ;; (make-face 'ediff-current-diff-face-B)
895 ;; (or (face-differs-from-default-p 'ediff-current-diff-face-B)
896 ;; (cond ((ediff-color-display-p)
897 ;; (ediff-set-face
898 ;; 'foreground 'ediff-current-diff-face-B "DarkOrchid")
899 ;; (ediff-set-face
900 ;; 'background 'ediff-current-diff-face-B "Yellow"))
901 ;; (t
902 ;; (if ediff-xemacs-p
903 ;; (copy-face 'modeline 'ediff-current-diff-face-B)
904 ;; (copy-face 'highlight 'ediff-current-diff-face-B))
905 ;; )))
906 ;; 'ediff-current-diff-face-B))
907 ;; "Face for highlighting the selected difference in buffer B.")
862 908
863 909 (defface ediff-current-diff-face-B
864 (defvar ediff-current-diff-face-C 910 '((((class color)) (:foreground "DarkOrchid" :background "Yellow"))
865 (if (ediff-has-face-support-p) 911 (t (:inverse-video t)))
866 (progn 912 "Face for highlighting the selected difference in buffer B."
867 (make-face 'ediff-current-diff-face-C) 913 :group 'ediff-highlighting)
868 (ediff-hide-face 'ediff-current-diff-face-C) 914 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
869 (or (face-differs-from-default-p 'ediff-current-diff-face-C) 915 ;; this variable is set to nil, then again to the appropriate face.
870 (cond ((ediff-color-display-p) 916 (defvar ediff-current-diff-face-B 'ediff-current-diff-face-B)
871 (ediff-set-face 917 (ediff-hide-face 'ediff-current-diff-face-B)
872 'foreground 'ediff-current-diff-face-C "Navy") 918 ;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
873 (ediff-set-face 919 ;; This means that some user customization may be trashed.
874 'background 'ediff-current-diff-face-C "Pink")) 920 (if (and ediff-xemacs-p
875 (t 921 (ediff-has-face-support-p)
876 (if ediff-xemacs-p 922 (not (ediff-color-display-p)))
877 (copy-face 'modeline 'ediff-current-diff-face-C) 923 (copy-face 'modeline 'ediff-current-diff-face-B))
878 (copy-face 'highlight 'ediff-current-diff-face-C)) 924
879 ))) 925 ;;(defvar ediff-current-diff-face-C
880 'ediff-current-diff-face-C)) 926 ;; (if (ediff-has-face-support-p)
881 "Face for highlighting the selected difference in buffer C.") 927 ;; (progn
882 928 ;; (make-face 'ediff-current-diff-face-C)
883 (defvar ediff-current-diff-face-Ancestor 929 ;; (or (face-differs-from-default-p 'ediff-current-diff-face-C)
884 (if (ediff-has-face-support-p) 930 ;; (cond ((ediff-color-display-p)
885 (progn 931 ;; (ediff-set-face
886 (make-face 'ediff-current-diff-face-Ancestor) 932 ;; 'foreground 'ediff-current-diff-face-C "Navy")
887 (ediff-hide-face 'ediff-current-diff-face-Ancestor) 933 ;; (ediff-set-face
888 (or (face-differs-from-default-p 'ediff-current-diff-face-Ancestor) 934 ;; 'background 'ediff-current-diff-face-C "Pink"))
889 (copy-face 935 ;; (t
890 'ediff-current-diff-face-C 'ediff-current-diff-face-Ancestor)) 936 ;; (if ediff-xemacs-p
891 'ediff-current-diff-face-Ancestor)) 937 ;; (copy-face 'modeline 'ediff-current-diff-face-C)
892 "Face for highlighting the selected difference in the ancestor buffer.") 938 ;; (copy-face 'highlight 'ediff-current-diff-face-C))
893 939 ;; )))
894 (defvar ediff-fine-diff-pixmap "gray3" 940 ;; 'ediff-current-diff-face-C))
895 "Pixmap to use for highlighting fine differences.") 941 ;; "Face for highlighting the selected difference in buffer C.")
896 (defvar ediff-odd-diff-pixmap "gray1" 942
897 "Pixmap to use for highlighting odd differences.") 943 (defface ediff-current-diff-face-C
898 (defvar ediff-even-diff-pixmap "Stipple" 944 '((((class color)) (:foreground "Navy" :background "Pink"))
899 "Pixmap to use for highlighting even differences.") 945 (t (:inverse-video t)))
900 946 "Face for highlighting the selected difference in buffer C."
901 (defvar ediff-fine-diff-face-A 947 :group 'ediff-highlighting)
902 (if (ediff-has-face-support-p) 948 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
903 (progn 949 ;; this variable is set to nil, then again to the appropriate face.
904 (make-face 'ediff-fine-diff-face-A) 950 (defvar ediff-current-diff-face-C 'ediff-current-diff-face-C)
905 (ediff-hide-face 'ediff-fine-diff-face-A) 951 (ediff-hide-face 'ediff-current-diff-face-C)
906 (or (face-differs-from-default-p 'ediff-fine-diff-face-A) 952 ;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
907 (cond ((ediff-color-display-p) 953 ;; This means that some user customization may be trashed.
908 (ediff-set-face 'foreground 'ediff-fine-diff-face-A 954 (if (and ediff-xemacs-p
909 "Navy") 955 (ediff-has-face-support-p)
910 (ediff-set-face 'background 'ediff-fine-diff-face-A 956 (not (ediff-color-display-p)))
911 "sky blue")) 957 (copy-face 'modeline 'ediff-current-diff-face-C))
912 (t 958
913 (set-face-underline-p 'ediff-fine-diff-face-A t) 959 ;;(defvar ediff-current-diff-face-Ancestor
914 (ediff-set-face-pixmap 'ediff-fine-diff-face-A 960 ;; (if (ediff-has-face-support-p)
915 ediff-fine-diff-pixmap) 961 ;; (progn
916 ))) 962 ;; (make-face 'ediff-current-diff-face-Ancestor)
917 'ediff-fine-diff-face-A)) 963 ;; (or (face-differs-from-default-p 'ediff-current-diff-face-Ancestor)
918 "Face for highlighting the refinement of the selected diff in buffer A.") 964 ;; (copy-face
919 965 ;; 'ediff-current-diff-face-C 'ediff-current-diff-face-Ancestor))
920 (defvar ediff-fine-diff-face-B 966 ;; 'ediff-current-diff-face-Ancestor))
921 (if (ediff-has-face-support-p) 967 ;; "Face for highlighting the selected difference in the ancestor buffer.")
922 (progn 968
923 (make-face 'ediff-fine-diff-face-B) 969 (defface ediff-current-diff-face-Ancestor
924 (ediff-hide-face 'ediff-fine-diff-face-B) 970 '((((class color)) (:foreground "Black" :background "VioletRed"))
925 (or (face-differs-from-default-p 'ediff-fine-diff-face-B) 971 (t (:inverse-video t)))
926 (cond ((ediff-color-display-p) 972 "Face for highlighting the selected difference in buffer Ancestor."
927 (ediff-set-face 'foreground 'ediff-fine-diff-face-B "Black") 973 :group 'ediff-highlighting)
928 (ediff-set-face 'background 'ediff-fine-diff-face-B "cyan")) 974 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
929 (t 975 ;; this variable is set to nil, then again to the appropriate face.
930 (set-face-underline-p 'ediff-fine-diff-face-B t) 976 (defvar ediff-current-diff-face-Ancestor 'ediff-current-diff-face-Ancestor)
931 (ediff-set-face-pixmap 'ediff-fine-diff-face-B 977 (ediff-hide-face 'ediff-current-diff-face-Ancestor)
932 ediff-fine-diff-pixmap) 978 ;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
933 ))) 979 ;; This means that some user customization may be trashed.
934 'ediff-fine-diff-face-B)) 980 (if (and ediff-xemacs-p
935 "Face for highlighting the refinement of the selected diff in buffer B.") 981 (ediff-has-face-support-p)
982 (not (ediff-color-display-p)))
983 (copy-face 'modeline 'ediff-current-diff-face-Ancestor))
984
985 ;;(defvar ediff-fine-diff-pixmap "gray3"
986 ;; "Pixmap to use for highlighting fine differences.")
987 ;;(defvar ediff-odd-diff-pixmap "gray1"
988 ;; "Pixmap to use for highlighting odd differences.")
989 ;;(defvar ediff-even-diff-pixmap "Stipple"
990 ;; "Pixmap to use for highlighting even differences.")
991
992 ;;(defvar ediff-fine-diff-face-A
993 ;; (if (ediff-has-face-support-p)
994 ;; (progn
995 ;; (make-face 'ediff-fine-diff-face-A)
996 ;; (or (face-differs-from-default-p 'ediff-fine-diff-face-A)
997 ;; (cond ((ediff-color-display-p)
998 ;; (ediff-set-face 'foreground 'ediff-fine-diff-face-A
999 ;; "Navy")
1000 ;; (ediff-set-face 'background 'ediff-fine-diff-face-A
1001 ;; "sky blue"))
1002 ;; (t
1003 ;; (set-face-underline-p 'ediff-fine-diff-face-A t)
1004 ;; (ediff-set-face-pixmap 'ediff-fine-diff-face-A
1005 ;; ediff-fine-diff-pixmap)
1006 ;; )))
1007 ;; 'ediff-fine-diff-face-A))
1008 ;; "Face for highlighting the refinement of the selected diff in buffer A.")
1009
1010
1011 (defface ediff-fine-diff-face-A
1012 '((((class color)) (:foreground "Navy" :background "sky blue"))
1013 (t (:underline t :stipple "gray3")))
1014 "Face for highlighting the refinement of the selected diff in buffer A."
1015 :group 'ediff-highlighting)
1016 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1017 ;; this variable is set to nil, then again to the appropriate face.
1018 (defvar ediff-fine-diff-face-A 'ediff-fine-diff-face-A)
1019 (ediff-hide-face 'ediff-fine-diff-face-A)
1020 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1021 ;; This means that some use customization may be trashed.
1022 (if (and ediff-xemacs-p
1023 (ediff-has-face-support-p)
1024 (not (ediff-color-display-p)))
1025 (ediff-set-face-pixmap 'ediff-fine-diff-face-A "gray3"))
1026
1027 ;;(defvar ediff-fine-diff-face-B
1028 ;; (if (ediff-has-face-support-p)
1029 ;; (progn
1030 ;; (make-face 'ediff-fine-diff-face-B)
1031 ;; (or (face-differs-from-default-p 'ediff-fine-diff-face-B)
1032 ;; (cond ((ediff-color-display-p)
1033 ;; (ediff-set-face 'foreground 'ediff-fine-diff-face-B "Black")
1034 ;; (ediff-set-face 'background 'ediff-fine-diff-face-B "cyan"))
1035 ;; (t
1036 ;; (set-face-underline-p 'ediff-fine-diff-face-B t)
1037 ;; (ediff-set-face-pixmap 'ediff-fine-diff-face-B
1038 ;; ediff-fine-diff-pixmap)
1039 ;; )))
1040 ;; 'ediff-fine-diff-face-B))
1041 ;; "Face for highlighting the refinement of the selected diff in buffer B.")
1042
1043 (defface ediff-fine-diff-face-B
1044 '((((class color)) (:foreground "Black" :background "cyan"))
1045 (t (:underline t :stipple "gray3")))
1046 "Face for highlighting the refinement of the selected diff in buffer B."
1047 :group 'ediff-highlighting)
1048 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1049 ;; this variable is set to nil, then again to the appropriate face.
1050 (defvar ediff-fine-diff-face-B 'ediff-fine-diff-face-B)
1051 (ediff-hide-face 'ediff-fine-diff-face-B)
1052 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1053 ;; This means that some use customization may be trashed.
1054 (if (and ediff-xemacs-p
1055 (ediff-has-face-support-p)
1056 (not (ediff-color-display-p)))
1057 (ediff-set-face-pixmap 'ediff-fine-diff-face-B "gray3"))
936 1058
937 (defvar ediff-fine-diff-face-C 1059 ;;(defvar ediff-fine-diff-face-C
938 (if (ediff-has-face-support-p) 1060 ;; (if (ediff-has-face-support-p)
939 (progn 1061 ;; (progn
940 (make-face 'ediff-fine-diff-face-C) 1062 ;; (make-face 'ediff-fine-diff-face-C)
941 (ediff-hide-face 'ediff-fine-diff-face-C) 1063 ;; (or (face-differs-from-default-p 'ediff-fine-diff-face-C)
942 (or (face-differs-from-default-p 'ediff-fine-diff-face-C) 1064 ;; (cond ((ediff-color-display-p)
943 (cond ((ediff-color-display-p) 1065 ;; (ediff-set-face 'foreground 'ediff-fine-diff-face-C "black")
944 (ediff-set-face 'foreground 'ediff-fine-diff-face-C "black") 1066 ;; (ediff-set-face
945 (ediff-set-face 1067 ;; 'background 'ediff-fine-diff-face-C "Turquoise"))
946 'background 'ediff-fine-diff-face-C "Turquoise")) 1068 ;; (t
947 (t 1069 ;; (set-face-underline-p 'ediff-fine-diff-face-C t)
948 (set-face-underline-p 'ediff-fine-diff-face-C t) 1070 ;; (ediff-set-face-pixmap 'ediff-fine-diff-face-C
949 (ediff-set-face-pixmap 'ediff-fine-diff-face-C 1071 ;; ediff-fine-diff-pixmap)
950 ediff-fine-diff-pixmap) 1072 ;; )))
951 ))) 1073 ;; 'ediff-fine-diff-face-C))
952 'ediff-fine-diff-face-C)) 1074 ;; "Face for highlighting the refinement of the selected diff in buffer C.")
953 "Face for highlighting the refinement of the selected diff in buffer C.") 1075
954 1076 (defface ediff-fine-diff-face-C
955 (defvar ediff-fine-diff-face-Ancestor 1077 '((((class color)) (:foreground "Black" :background "Turquoise"))
956 (if (ediff-has-face-support-p) 1078 (t (:underline t :stipple "gray3")))
957 (progn 1079 "Face for highlighting the refinement of the selected diff in buffer C."
958 (make-face 'ediff-fine-diff-face-Ancestor) 1080 :group 'ediff-highlighting)
959 (ediff-hide-face 'ediff-fine-diff-face-Ancestor) 1081 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
960 (or (face-differs-from-default-p 'ediff-fine-diff-face-Ancestor) 1082 ;; this variable is set to nil, then again to the appropriate face.
961 (progn 1083 (defvar ediff-fine-diff-face-C 'ediff-fine-diff-face-C)
962 (copy-face 1084 (ediff-hide-face 'ediff-fine-diff-face-C)
963 'ediff-fine-diff-face-C 'ediff-fine-diff-face-Ancestor) 1085 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
964 (ediff-set-face-pixmap 'ediff-fine-diff-face-Ancestor 1086 ;; This means that some use customization may be trashed.
965 ediff-fine-diff-pixmap)) 1087 (if (and ediff-xemacs-p
966 ))) 1088 (ediff-has-face-support-p)
967 "Face highlighting refinements of the selected diff in ancestor buffer. 1089 (not (ediff-color-display-p)))
968 Presently, this is not used, as difference regions are not refined in the 1090 (ediff-set-face-pixmap 'ediff-fine-diff-face-C "gray3"))
969 ancestor buffer.") 1091
1092 ;;(defvar ediff-fine-diff-face-Ancestor
1093 ;; (if (ediff-has-face-support-p)
1094 ;; (progn
1095 ;; (make-face 'ediff-fine-diff-face-Ancestor)
1096 ;; (ediff-hide-face 'ediff-fine-diff-face-Ancestor)
1097 ;; (or (face-differs-from-default-p 'ediff-fine-diff-face-Ancestor)
1098 ;; (progn
1099 ;; (copy-face
1100 ;; 'ediff-fine-diff-face-C 'ediff-fine-diff-face-Ancestor)
1101 ;; (ediff-set-face-pixmap 'ediff-fine-diff-face-Ancestor
1102 ;; ediff-fine-diff-pixmap))
1103 ;; )))
1104 ;; "Face highlighting refinements of the selected diff in ancestor buffer.
1105 ;;Presently, this is not used, as difference regions are not refined in the
1106 ;;ancestor buffer.")
1107
1108 (defface ediff-fine-diff-face-Ancestor
1109 '((((class color)) (:foreground "Black" :background "Green"))
1110 (t (:underline t :stipple "gray3")))
1111 "Face for highlighting the refinement of the selected diff in the ancestor buffer.
1112 At present, this face is not used and no fine differences are computed for the
1113 ancestor buffer."
1114 :group 'ediff-highlighting)
1115 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1116 ;; this variable is set to nil, then again to the appropriate face.
1117 (defvar ediff-fine-diff-face-Ancestor 'ediff-fine-diff-face-Ancestor)
1118 (ediff-hide-face 'ediff-fine-diff-face-Ancestor)
1119 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1120 ;; This means that some use customization may be trashed.
1121 (if (and ediff-xemacs-p
1122 (ediff-has-face-support-p)
1123 (not (ediff-color-display-p)))
1124 (ediff-set-face-pixmap
1125 'ediff-fine-diff-face-Ancestor "gray3"))
970 1126
971 (defvar ediff-even-diff-face-A 1127 ;;(defvar ediff-even-diff-face-A
972 (if (ediff-has-face-support-p) 1128 ;; (if (ediff-has-face-support-p)
973 (progn 1129 ;; (progn
974 (make-face 'ediff-even-diff-face-A) 1130 ;; (make-face 'ediff-even-diff-face-A)
975 (ediff-hide-face 'ediff-even-diff-face-A) 1131 ;; (or (face-differs-from-default-p 'ediff-even-diff-face-A)
976 (or (face-differs-from-default-p 'ediff-even-diff-face-A) 1132 ;; (cond ((ediff-color-display-p)
977 (cond ((ediff-color-display-p) 1133 ;; (ediff-set-face
978 (ediff-set-face 1134 ;; 'foreground 'ediff-even-diff-face-A "black")
979 'foreground 'ediff-even-diff-face-A "black") 1135 ;; (ediff-set-face
980 (ediff-set-face 1136 ;; 'background 'ediff-even-diff-face-A "light grey"))
981 'background 'ediff-even-diff-face-A "light grey")) 1137 ;; (t
982 (t 1138 ;; (copy-face 'italic 'ediff-even-diff-face-A)
983 (copy-face 'italic 'ediff-even-diff-face-A) 1139 ;; (ediff-set-face-pixmap 'ediff-even-diff-face-A
984 (ediff-set-face-pixmap 'ediff-even-diff-face-A 1140 ;; ediff-even-diff-pixmap)
985 ediff-even-diff-pixmap) 1141 ;; )))
986 ))) 1142 ;; 'ediff-even-diff-face-A))
987 'ediff-even-diff-face-A)) 1143 ;; "Face used for highlighting even-numbered differences in buffer A.")
988 "Face used to highlight even-numbered differences in buffer A.") 1144
1145 (defface ediff-even-diff-face-A
1146 '((((class color)) (:foreground "Black" :background "light grey"))
1147 (t (:italic t :stipple "Stipple")))
1148 "Face for highlighting even-numbered non-current differences in buffer A."
1149 :group 'ediff-highlighting)
1150 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1151 ;; this variable is set to nil, then again to the appropriate face.
1152 (defvar ediff-even-diff-face-A 'ediff-even-diff-face-A)
1153 (ediff-hide-face 'ediff-even-diff-face-A)
1154 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1155 ;; This means that some use customization may be trashed.
1156 (if (and ediff-xemacs-p
1157 (ediff-has-face-support-p)
1158 (not (ediff-color-display-p)))
1159 (ediff-set-face-pixmap 'ediff-even-diff-face-A "Stipple"))
989 1160
990 (defvar ediff-even-diff-face-B 1161 ;;(defvar ediff-even-diff-face-B
991 (if (ediff-has-face-support-p) 1162 ;; (if (ediff-has-face-support-p)
992 (progn 1163 ;; (progn
993 (make-face 'ediff-even-diff-face-B) 1164 ;; (make-face 'ediff-even-diff-face-B)
994 (ediff-hide-face 'ediff-even-diff-face-B) 1165 ;; (or (face-differs-from-default-p 'ediff-even-diff-face-B)
995 (or (face-differs-from-default-p 'ediff-even-diff-face-B) 1166 ;; (cond ((ediff-color-display-p)
996 (cond ((ediff-color-display-p) 1167 ;; (ediff-set-face
997 (ediff-set-face 1168 ;; 'foreground 'ediff-even-diff-face-B "White")
998 'foreground 'ediff-even-diff-face-B "White") 1169 ;; (ediff-set-face
999 (ediff-set-face 1170 ;; 'background 'ediff-even-diff-face-B "Gray"))
1000 'background 'ediff-even-diff-face-B "Gray")) 1171 ;; (t
1001 (t 1172 ;; (copy-face 'italic 'ediff-even-diff-face-B)
1002 (copy-face 'italic 'ediff-even-diff-face-B) 1173 ;; (ediff-set-face-pixmap 'ediff-even-diff-face-B
1003 (ediff-set-face-pixmap 'ediff-even-diff-face-B 1174 ;; ediff-even-diff-pixmap)
1004 ediff-even-diff-pixmap) 1175 ;; )))
1005 ))) 1176 ;; 'ediff-even-diff-face-B))
1006 'ediff-even-diff-face-B)) 1177 ;; "Face used for highlighting even-numbered differences in buffer B.")
1007 "Face used to highlight even-numbered differences in buffer B.") 1178
1179 (defface ediff-even-diff-face-B
1180 '((((class color)) (:foreground "White" :background "Grey"))
1181 (t (:italic t :stipple "Stipple")))
1182 "Face for highlighting even-numbered non-current differences in buffer B."
1183 :group 'ediff-highlighting)
1184 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1185 ;; this variable is set to nil, then again to the appropriate face.
1186 (defvar ediff-even-diff-face-B 'ediff-even-diff-face-B)
1187 (ediff-hide-face 'ediff-even-diff-face-B)
1188 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1189 ;; This means that some use customization may be trashed.
1190 (if (and ediff-xemacs-p
1191 (ediff-has-face-support-p)
1192 (not (ediff-color-display-p)))
1193 (ediff-set-face-pixmap 'ediff-even-diff-face-B "Stipple"))
1008 1194
1009 (defvar ediff-even-diff-face-C 1195 ;;(defvar ediff-even-diff-face-C
1010 (if (ediff-has-face-support-p) 1196 ;; (if (ediff-has-face-support-p)
1011 (progn 1197 ;; (progn
1012 (make-face 'ediff-even-diff-face-C) 1198 ;; (make-face 'ediff-even-diff-face-C)
1013 (ediff-hide-face 'ediff-even-diff-face-C) 1199 ;; (ediff-hide-face 'ediff-even-diff-face-C)
1014 (or (face-differs-from-default-p 'ediff-even-diff-face-C) 1200 ;; (or (face-differs-from-default-p 'ediff-even-diff-face-C)
1015 (progn 1201 ;; (progn
1016 (copy-face 'ediff-even-diff-face-A 'ediff-even-diff-face-C) 1202 ;; (copy-face 'ediff-even-diff-face-A 'ediff-even-diff-face-C)
1017 (ediff-set-face-pixmap 'ediff-even-diff-face-C 1203 ;; (ediff-set-face-pixmap 'ediff-even-diff-face-C
1018 ediff-even-diff-pixmap))) 1204 ;; ediff-even-diff-pixmap)))
1019 'ediff-even-diff-face-C)) 1205 ;; 'ediff-even-diff-face-C))
1020 "Face used to highlight even-numbered differences in buffer C.") 1206 ;; "Face used for highlighting even-numbered differences in buffer C.")
1021 1207
1022 (defvar ediff-even-diff-face-Ancestor 1208 (defface ediff-even-diff-face-C
1023 (if (ediff-has-face-support-p) 1209 '((((class color)) (:foreground "Black" :background "light grey"))
1024 (progn 1210 (t (:italic t :stipple "Stipple")))
1025 (make-face 'ediff-even-diff-face-Ancestor) 1211 "Face for highlighting even-numbered non-current differences in buffer C."
1026 (ediff-hide-face 'ediff-even-diff-face-Ancestor) 1212 :group 'ediff-highlighting)
1027 (or (face-differs-from-default-p 'ediff-even-diff-face-Ancestor) 1213 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1028 (progn 1214 ;; this variable is set to nil, then again to the appropriate face.
1029 (copy-face 1215 (defvar ediff-even-diff-face-C 'ediff-even-diff-face-C)
1030 'ediff-even-diff-face-C 'ediff-even-diff-face-Ancestor) 1216 (ediff-hide-face 'ediff-even-diff-face-C)
1031 (ediff-set-face-pixmap 'ediff-even-diff-face-Ancestor 1217 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1032 ediff-even-diff-pixmap))) 1218 ;; This means that some use customization may be trashed.
1033 'ediff-even-diff-face-Ancestor)) 1219 (if (and ediff-xemacs-p
1034 "Face highlighting even-numbered differences in the ancestor buffer.") 1220 (ediff-has-face-support-p)
1035 1221 (not (ediff-color-display-p)))
1036 (defvar ediff-odd-diff-face-A 1222 (ediff-set-face-pixmap 'ediff-even-diff-face-C "Stipple"))
1037 (if (ediff-has-face-support-p) 1223
1038 (progn 1224 ;;(defvar ediff-even-diff-face-Ancestor
1039 (make-face 'ediff-odd-diff-face-A) 1225 ;; (if (ediff-has-face-support-p)
1040 (ediff-hide-face 'ediff-odd-diff-face-A) 1226 ;; (progn
1041 (or (face-differs-from-default-p 'ediff-odd-diff-face-A) 1227 ;; (make-face 'ediff-even-diff-face-Ancestor)
1042 (cond ((ediff-color-display-p) 1228 ;; (ediff-hide-face 'ediff-even-diff-face-Ancestor)
1043 (ediff-set-face 1229 ;; (or (face-differs-from-default-p 'ediff-even-diff-face-Ancestor)
1044 'foreground 'ediff-odd-diff-face-A "White") 1230 ;; (progn
1045 (ediff-set-face 1231 ;; (copy-face
1046 'background 'ediff-odd-diff-face-A "Gray")) 1232 ;; 'ediff-even-diff-face-C 'ediff-even-diff-face-Ancestor)
1047 (t 1233 ;; (ediff-set-face-pixmap 'ediff-even-diff-face-Ancestor
1048 (copy-face 'italic 'ediff-odd-diff-face-A) 1234 ;; ediff-even-diff-pixmap)))
1049 (ediff-set-face-pixmap 'ediff-odd-diff-face-A 1235 ;; 'ediff-even-diff-face-Ancestor))
1050 ediff-odd-diff-pixmap) 1236 ;; "Face highlighting even-numbered differences in the ancestor buffer.")
1051 ))) 1237
1052 'ediff-odd-diff-face-A)) 1238 (defface ediff-even-diff-face-Ancestor
1053 "Face used to highlight odd-numbered differences in buffer A.") 1239 '((((class color)) (:foreground "White" :background "Grey"))
1240 (t (:italic t :stipple "Stipple")))
1241 "Face for highlighting even-numbered non-current differences in the ancestor buffer."
1242 :group 'ediff-highlighting)
1243 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1244 ;; this variable is set to nil, then again to the appropriate face.
1245 (defvar ediff-even-diff-face-Ancestor 'ediff-even-diff-face-Ancestor)
1246 (ediff-hide-face 'ediff-even-diff-face-Ancestor)
1247 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1248 ;; This means that some use customization may be trashed.
1249 (if (and ediff-xemacs-p
1250 (ediff-has-face-support-p)
1251 (not (ediff-color-display-p)))
1252 (ediff-set-face-pixmap
1253 'ediff-even-diff-face-Ancestor "Stipple"))
1254
1255 ;; Association between buffer types and even-diff-face symbols
1256 (defconst ediff-even-diff-face-alist
1257 '((A . ediff-even-diff-face-A)
1258 (B . ediff-even-diff-face-B)
1259 (C . ediff-even-diff-face-C)
1260 (Ancestor . ediff-even-diff-face-Ancestor)))
1261
1262 ;;(defvar ediff-odd-diff-face-A
1263 ;; (if (ediff-has-face-support-p)
1264 ;; (progn
1265 ;; (make-face 'ediff-odd-diff-face-A)
1266 ;; (or (face-differs-from-default-p 'ediff-odd-diff-face-A)
1267 ;; (cond ((ediff-color-display-p)
1268 ;; (ediff-set-face
1269 ;; 'foreground 'ediff-odd-diff-face-A "White")
1270 ;; (ediff-set-face
1271 ;; 'background 'ediff-odd-diff-face-A "Gray"))
1272 ;; (t
1273 ;; (copy-face 'italic 'ediff-odd-diff-face-A)
1274 ;; (ediff-set-face-pixmap 'ediff-odd-diff-face-A
1275 ;; ediff-odd-diff-pixmap)
1276 ;; )))
1277 ;; 'ediff-odd-diff-face-A))
1278 ;; "Face used for highlighting odd-numbered differences in buffer A.")
1279
1280 (defface ediff-odd-diff-face-A
1281 '((((class color)) (:foreground "White" :background "Grey"))
1282 (t (:italic t :stipple "gray1")))
1283 "Face for highlighting odd-numbered non-current differences in buffer A."
1284 :group 'ediff-highlighting)
1285 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1286 ;; this variable is set to nil, then again to the appropriate face.
1287 (defvar ediff-odd-diff-face-A 'ediff-odd-diff-face-A)
1288 (ediff-hide-face 'ediff-odd-diff-face-A)
1289 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1290 ;; This means that some use customization may be trashed.
1291 (if (and ediff-xemacs-p
1292 (ediff-has-face-support-p)
1293 (not (ediff-color-display-p)))
1294 (ediff-set-face-pixmap 'ediff-odd-diff-face-A "gray1"))
1054 1295
1055 (defvar ediff-odd-diff-face-B 1296 ;;(defvar ediff-odd-diff-face-B
1056 (if (ediff-has-face-support-p) 1297 ;; (if (ediff-has-face-support-p)
1057 (progn 1298 ;; (progn
1058 (make-face 'ediff-odd-diff-face-B) 1299 ;; (make-face 'ediff-odd-diff-face-B)
1059 (ediff-hide-face 'ediff-odd-diff-face-B) 1300 ;; (ediff-hide-face 'ediff-odd-diff-face-B)
1060 (or (face-differs-from-default-p 'ediff-odd-diff-face-B) 1301 ;; (or (face-differs-from-default-p 'ediff-odd-diff-face-B)
1061 (cond ((ediff-color-display-p) 1302 ;; (cond ((ediff-color-display-p)
1062 (ediff-set-face 1303 ;; (ediff-set-face
1063 'foreground 'ediff-odd-diff-face-B "Black") 1304 ;; 'foreground 'ediff-odd-diff-face-B "Black")
1064 (ediff-set-face 1305 ;; (ediff-set-face
1065 'background 'ediff-odd-diff-face-B "light grey")) 1306 ;; 'background 'ediff-odd-diff-face-B "light grey"))
1066 (t 1307 ;; (t
1067 (copy-face 'italic 'ediff-odd-diff-face-B) 1308 ;; (copy-face 'italic 'ediff-odd-diff-face-B)
1068 (ediff-set-face-pixmap 'ediff-odd-diff-face-B 1309 ;; (ediff-set-face-pixmap 'ediff-odd-diff-face-B
1069 ediff-odd-diff-pixmap) 1310 ;; ediff-odd-diff-pixmap)
1070 ))) 1311 ;; )))
1071 'ediff-odd-diff-face-B)) 1312 ;; 'ediff-odd-diff-face-B))
1072 "Face used to highlight odd-numbered differences in buffer B.") 1313 ;; "Face used for highlighting odd-numbered differences in buffer B.")
1314
1315 (defface ediff-odd-diff-face-B
1316 '((((class color)) (:foreground "Black" :background "light grey"))
1317 (t (:italic t :stipple "gray1")))
1318 "Face for highlighting odd-numbered non-current differences in buffer B."
1319 :group 'ediff-highlighting)
1320 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1321 ;; this variable is set to nil, then again to the appropriate face.
1322 (defvar ediff-odd-diff-face-B 'ediff-odd-diff-face-B)
1323 (ediff-hide-face 'ediff-odd-diff-face-B)
1324 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1325 ;; This means that some use customization may be trashed.
1326 (if (and ediff-xemacs-p
1327 (ediff-has-face-support-p)
1328 (not (ediff-color-display-p)))
1329 (ediff-set-face-pixmap 'ediff-odd-diff-face-B "gray1"))
1073 1330
1074 (defvar ediff-odd-diff-face-C 1331 ;;(defvar ediff-odd-diff-face-C
1075 (if (ediff-has-face-support-p) 1332 ;; (if (ediff-has-face-support-p)
1076 (progn 1333 ;; (progn
1077 (make-face 'ediff-odd-diff-face-C) 1334 ;; (make-face 'ediff-odd-diff-face-C)
1078 (ediff-hide-face 'ediff-odd-diff-face-C) 1335 ;; (or (face-differs-from-default-p 'ediff-odd-diff-face-C)
1079 (or (face-differs-from-default-p 'ediff-odd-diff-face-C) 1336 ;; (progn
1080 (progn 1337 ;; (copy-face 'ediff-odd-diff-face-A 'ediff-odd-diff-face-C)
1081 (copy-face 'ediff-odd-diff-face-A 'ediff-odd-diff-face-C) 1338 ;; (ediff-set-face-pixmap 'ediff-odd-diff-face-C
1082 (ediff-set-face-pixmap 'ediff-odd-diff-face-C 1339 ;; ediff-odd-diff-pixmap)))
1083 ediff-odd-diff-pixmap))) 1340 ;; 'ediff-odd-diff-face-C))
1084 'ediff-odd-diff-face-C)) 1341 ;; "Face used for highlighting odd-numbered differences in buffer C.")
1085 "Face used to highlight odd-numbered differences in buffer C.") 1342
1086 1343 (defface ediff-odd-diff-face-C
1087 (defvar ediff-odd-diff-face-Ancestor 1344 '((((class color)) (:foreground "White" :background "Grey"))
1088 (if (ediff-has-face-support-p) 1345 (t (:italic t :stipple "gray1")))
1089 (progn 1346 "Face for highlighting odd-numbered non-current differences in buffer C."
1090 (make-face 'ediff-odd-diff-face-Ancestor) 1347 :group 'ediff-highlighting)
1091 (ediff-hide-face 'ediff-odd-diff-face-Ancestor) 1348 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1092 (or (face-differs-from-default-p 'ediff-odd-diff-face-Ancestor) 1349 ;; this variable is set to nil, then again to the appropriate face.
1093 (progn 1350 (defvar ediff-odd-diff-face-C 'ediff-odd-diff-face-C)
1094 (copy-face 'ediff-odd-diff-face-C 'ediff-odd-diff-face-Ancestor) 1351 (ediff-hide-face 'ediff-odd-diff-face-C)
1095 (ediff-set-face-pixmap 'ediff-odd-diff-face-Ancestor 1352 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1096 ediff-odd-diff-pixmap))) 1353 ;; This means that some use customization may be trashed.
1097 'ediff-odd-diff-face-Ancestor)) 1354 (if (and ediff-xemacs-p
1098 "Face used to highlight even-numbered differences in the ancestor buffer.") 1355 (ediff-has-face-support-p)
1356 (not (ediff-color-display-p)))
1357 (ediff-set-face-pixmap 'ediff-odd-diff-face-C "gray1"))
1358
1359 ;;(defvar ediff-odd-diff-face-Ancestor
1360 ;; (if (ediff-has-face-support-p)
1361 ;; (progn
1362 ;; (make-face 'ediff-odd-diff-face-Ancestor)
1363 ;; (or (face-differs-from-default-p 'ediff-odd-diff-face-Ancestor)
1364 ;; (progn
1365 ;; (copy-face 'ediff-odd-diff-face-C 'ediff-odd-diff-face-Ancestor)
1366 ;; (ediff-set-face-pixmap 'ediff-odd-diff-face-Ancestor
1367 ;; ediff-odd-diff-pixmap)))
1368 ;; 'ediff-odd-diff-face-Ancestor))
1369 ;; "Face used for highlighting even-numbered differences in the ancestor buffer.")
1370
1371 (defface ediff-odd-diff-face-Ancestor
1372 '((((class color)) (:foreground "Black" :background "light grey"))
1373 (t (:italic t :stipple "gray1")))
1374 "Face for highlighting odd-numbered non-current differences in the ancestor buffer."
1375 :group 'ediff-highlighting)
1376 ;; An internal variable. Ediff takes the face from here. When unhighlighting,
1377 ;; this variable is set to nil, then again to the appropriate face.
1378 (defvar ediff-odd-diff-face-Ancestor 'ediff-odd-diff-face-Ancestor)
1379 (ediff-hide-face 'ediff-odd-diff-face-Ancestor)
1380 ;; Until custom.el for XEmacs starts supporting :stipple we do this.
1381 ;; This means that some use customization may be trashed.
1382 (if (and ediff-xemacs-p
1383 (ediff-has-face-support-p)
1384 (not (ediff-color-display-p)))
1385 (ediff-set-face-pixmap 'ediff-odd-diff-face-Ancestor "gray1"))
1386
1387 ;; Association between buffer types and odd-diff-face symbols
1388 (defconst ediff-odd-diff-face-alist
1389 '((A . ediff-odd-diff-face-A)
1390 (B . ediff-odd-diff-face-B)
1391 (C . ediff-odd-diff-face-C)
1392 (Ancestor . ediff-odd-diff-face-Ancestor)))
1393
1394 ;; A-list of fine-diff face symbols associated with buffer types
1395 (defconst ediff-fine-diff-face-alist
1396 '((A . ediff-fine-diff-face-A)
1397 (B . ediff-fine-diff-face-B)
1398 (C . ediff-fine-diff-face-C)
1399 (Ancestor . ediff-fine-diff-face-Ancestor)))
1099 1400
1100 ;; Help echo 1401 ;; Help echo
1101 (put 'ediff-fine-diff-face-A 'ediff-help-echo 1402 (put 'ediff-fine-diff-face-A 'ediff-help-echo
1102 "A `refinement' of the current difference region") 1403 "A `refinement' of the current difference region")
1103 (put 'ediff-fine-diff-face-B 'ediff-help-echo 1404 (put 'ediff-fine-diff-face-B 'ediff-help-echo
1116 "Overlay for the current difference region in buffer B.") 1417 "Overlay for the current difference region in buffer B.")
1117 (ediff-defvar-local ediff-current-diff-overlay-C nil 1418 (ediff-defvar-local ediff-current-diff-overlay-C nil
1118 "Overlay for the current difference region in buffer C.") 1419 "Overlay for the current difference region in buffer C.")
1119 (ediff-defvar-local ediff-current-diff-overlay-Ancestor nil 1420 (ediff-defvar-local ediff-current-diff-overlay-Ancestor nil
1120 "Overlay for the current difference region in the ancestor buffer.") 1421 "Overlay for the current difference region in the ancestor buffer.")
1121 1422
1122 ;; Compute priority of ediff overlay. 1423 ;; Compute priority of ediff overlay.
1123 (defun ediff-highest-priority (start end buffer) 1424 (defun ediff-highest-priority (start end buffer)
1124 (let ((pos (max 1 (1- start))) 1425 (let ((pos (max 1 (1- start)))
1125 ovr-list) 1426 ovr-list)
1126 (if ediff-xemacs-p 1427 (if ediff-xemacs-p
1127 (1+ ediff-shadow-overlay-priority) 1428 (1+ ediff-shadow-overlay-priority)
1128 (ediff-eval-in-buffer buffer 1429 (ediff-with-current-buffer buffer
1129 (while (< pos (min (point-max) (1+ end))) 1430 (while (< pos (min (point-max) (1+ end)))
1130 (setq ovr-list (append (overlays-at pos) ovr-list)) 1431 (setq ovr-list (append (overlays-at pos) ovr-list))
1131 (setq pos (next-overlay-change pos))) 1432 (setq pos (next-overlay-change pos)))
1132 (1+ (apply '+ 1433 (1+ (apply '+
1133 (mapcar (function 1434 (mapcar (function
1238 (kill-buffer (get-buffer buf)))) 1539 (kill-buffer (get-buffer buf))))
1239 1540
1240 (defsubst ediff-background-face (buf-type dif-num) 1541 (defsubst ediff-background-face (buf-type dif-num)
1241 ;; The value of dif-num is always 1- the one that user sees. 1542 ;; The value of dif-num is always 1- the one that user sees.
1242 ;; This is why even face is used when dif-num is odd. 1543 ;; This is why even face is used when dif-num is odd.
1243 (intern (format (if (ediff-odd-p dif-num) 1544 (ediff-get-symbol-from-alist
1244 "ediff-even-diff-face-%S" 1545 buf-type (if (ediff-odd-p dif-num)
1245 "ediff-odd-diff-face-%S") 1546 ediff-even-diff-face-alist
1246 buf-type))) 1547 ediff-odd-diff-face-alist)
1548 ))
1247 1549
1248 1550
1249 ;; activate faces on diff regions in buffer 1551 ;; activate faces on diff regions in buffer
1250 (defun ediff-paint-background-regions-in-one-buffer (buf-type unhighlight) 1552 (defun ediff-paint-background-regions-in-one-buffer (buf-type unhighlight)
1251 (let ((diff-vector 1553 (let ((diff-vector
1252 (eval (intern (format "ediff-difference-vector-%S" buf-type)))) 1554 (eval (ediff-get-symbol-from-alist
1555 buf-type ediff-difference-vector-alist)))
1253 overl diff-num) 1556 overl diff-num)
1254 (mapcar (function 1557 (mapcar (function
1255 (lambda (rec) 1558 (lambda (rec)
1256 (setq overl (ediff-get-diff-overlay-from-diff-record rec) 1559 (setq overl (ediff-get-diff-overlay-from-diff-record rec)
1257 diff-num (ediff-overlay-get overl 'ediff-diff-num)) 1560 diff-num (ediff-overlay-get overl 'ediff-diff-num))
1277 'Ancestor unhighlight)) 1580 'Ancestor unhighlight))
1278 1581
1279 (defun ediff-highlight-diff-in-one-buffer (n buf-type) 1582 (defun ediff-highlight-diff-in-one-buffer (n buf-type)
1280 (if (ediff-buffer-live-p (ediff-get-buffer buf-type)) 1583 (if (ediff-buffer-live-p (ediff-get-buffer buf-type))
1281 (let* ((buff (ediff-get-buffer buf-type)) 1584 (let* ((buff (ediff-get-buffer buf-type))
1282 (last (ediff-eval-in-buffer buff (point-max))) 1585 (last (ediff-with-current-buffer buff (point-max)))
1283 (begin (ediff-get-diff-posn buf-type 'beg n)) 1586 (begin (ediff-get-diff-posn buf-type 'beg n))
1284 (end (ediff-get-diff-posn buf-type 'end n)) 1587 (end (ediff-get-diff-posn buf-type 'end n))
1285 (xtra (if (equal begin end) 1 0)) 1588 (xtra (if (equal begin end) 1 0))
1286 (end-hilit (min last (+ end xtra))) 1589 (end-hilit (min last (+ end xtra)))
1287 (current-diff-overlay 1590 (current-diff-overlay
1288 (symbol-value 1591 (symbol-value
1289 (intern (format "ediff-current-diff-overlay-%S" buf-type))))) 1592 (ediff-get-symbol-from-alist
1593 buf-type ediff-current-diff-overlay-alist))))
1290 1594
1291 (if ediff-xemacs-p 1595 (if ediff-xemacs-p
1292 (ediff-move-overlay current-diff-overlay begin end-hilit) 1596 (ediff-move-overlay current-diff-overlay begin end-hilit)
1293 (ediff-move-overlay current-diff-overlay begin end-hilit buff)) 1597 (ediff-move-overlay current-diff-overlay begin end-hilit buff))
1294 (ediff-overlay-put current-diff-overlay 'priority 1598 (ediff-overlay-put current-diff-overlay 'priority
1303 1607
1304 (defun ediff-unhighlight-diff-in-one-buffer (buf-type) 1608 (defun ediff-unhighlight-diff-in-one-buffer (buf-type)
1305 (if (ediff-buffer-live-p (ediff-get-buffer buf-type)) 1609 (if (ediff-buffer-live-p (ediff-get-buffer buf-type))
1306 (let ((current-diff-overlay 1610 (let ((current-diff-overlay
1307 (symbol-value 1611 (symbol-value
1308 (intern (format "ediff-current-diff-overlay-%S" buf-type)))) 1612 (ediff-get-symbol-from-alist
1613 buf-type ediff-current-diff-overlay-alist)))
1309 (overlay 1614 (overlay
1310 (ediff-get-diff-overlay ediff-current-difference buf-type)) 1615 (ediff-get-diff-overlay ediff-current-difference buf-type))
1311 ) 1616 )
1312 1617
1313 (ediff-move-overlay current-diff-overlay 1 1) 1618 (ediff-move-overlay current-diff-overlay 1 1)
1324 (defun ediff-unhighlight-diffs-totally-in-one-buffer (buf-type) 1629 (defun ediff-unhighlight-diffs-totally-in-one-buffer (buf-type)
1325 (ediff-unselect-and-select-difference -1) 1630 (ediff-unselect-and-select-difference -1)
1326 (if (and (ediff-has-face-support-p) ediff-use-faces) 1631 (if (and (ediff-has-face-support-p) ediff-use-faces)
1327 (let* ((inhibit-quit t) 1632 (let* ((inhibit-quit t)
1328 (current-diff-overlay-var 1633 (current-diff-overlay-var
1329 (intern (format "ediff-current-diff-overlay-%S" buf-type))) 1634 (ediff-get-symbol-from-alist
1635 buf-type ediff-current-diff-overlay-alist))
1330 (current-diff-overlay (symbol-value current-diff-overlay-var))) 1636 (current-diff-overlay (symbol-value current-diff-overlay-var)))
1331 (ediff-paint-background-regions 'unhighlight) 1637 (ediff-paint-background-regions 'unhighlight)
1332 (if (ediff-overlayp current-diff-overlay) 1638 (if (ediff-overlayp current-diff-overlay)
1333 (ediff-delete-overlay current-diff-overlay)) 1639 (ediff-delete-overlay current-diff-overlay))
1334 (set current-diff-overlay-var nil) 1640 (set current-diff-overlay-var nil)
1555 (defun ediff-whitespace-diff-region-p (n buf-type) 1861 (defun ediff-whitespace-diff-region-p (n buf-type)
1556 (or (and (eq buf-type 'C) (not ediff-3way-job)) 1862 (or (and (eq buf-type 'C) (not ediff-3way-job))
1557 (ediff-empty-diff-region-p n buf-type) 1863 (ediff-empty-diff-region-p n buf-type)
1558 (let ((beg (ediff-get-diff-posn buf-type 'beg n)) 1864 (let ((beg (ediff-get-diff-posn buf-type 'beg n))
1559 (end (ediff-get-diff-posn buf-type 'end n))) 1865 (end (ediff-get-diff-posn buf-type 'end n)))
1560 (ediff-eval-in-buffer (ediff-get-buffer buf-type) 1866 (ediff-with-current-buffer (ediff-get-buffer buf-type)
1561 (save-excursion 1867 (save-excursion
1562 (goto-char beg) 1868 (goto-char beg)
1563 (skip-chars-forward ediff-whitespace) 1869 (skip-chars-forward ediff-whitespace)
1564 (>= (point) end)))))) 1870 (>= (point) end))))))
1565 1871
1630 str)))) 1936 str))))
1631 1937
1632 1938
1633 1939
1634 (defsubst ediff-get-region-contents (n buf-type ctrl-buf &optional start end) 1940 (defsubst ediff-get-region-contents (n buf-type ctrl-buf &optional start end)
1635 (ediff-eval-in-buffer 1941 (ediff-with-current-buffer
1636 (ediff-eval-in-buffer ctrl-buf (ediff-get-buffer buf-type)) 1942 (ediff-with-current-buffer ctrl-buf (ediff-get-buffer buf-type))
1637 (buffer-substring 1943 (buffer-substring
1638 (or start (ediff-get-diff-posn buf-type 'beg n ctrl-buf)) 1944 (or start (ediff-get-diff-posn buf-type 'beg n ctrl-buf))
1639 (or end (ediff-get-diff-posn buf-type 'end n ctrl-buf))))) 1945 (or end (ediff-get-diff-posn buf-type 'end n ctrl-buf)))))
1640 1946
1641 ;; If ediff modified mode line, strip the modification 1947 ;; If ediff modified mode line, strip the modification
1676 fname)) 1982 fname))
1677 1983
1678 1984
1679 ;;; Local Variables: 1985 ;;; Local Variables:
1680 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun) 1986 ;;; eval: (put 'ediff-defvar-local 'lisp-indent-hook 'defun)
1681 ;;; eval: (put 'ediff-eval-in-buffer 'lisp-indent-hook 1) 1987 ;;; eval: (put 'ediff-with-current-buffer 'lisp-indent-hook 1)
1682 ;;; eval: (put 'ediff-eval-in-buffer 'edebug-form-spec '(form body)) 1988 ;;; eval: (put 'ediff-with-current-buffer 'edebug-form-spec '(form body))
1683 ;;; End: 1989 ;;; End:
1684 1990
1685 (provide 'ediff-init) 1991 (provide 'ediff-init)
1686 1992
1687 1993