;;; ediff-init.el --- Macros, variables, and defsubsts used by Ediff
-;; Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
;; Author: Michael Kifer <kifer@cs.sunysb.edu>
(defun ediff-has-face-support-p ()
(cond ((ediff-window-display-p))
(ediff-force-faces)
+ ((ediff-color-display-p))
(ediff-emacs-p (memq (ediff-device-type) '(pc)))
(ediff-xemacs-p (memq (ediff-device-type) '(tty pc)))))
((memq op '(< <=)) t))))
-
-;; A fix for NeXT Step
-;; Should probably be eliminated in later versions.
-(if (and (ediff-window-display-p) (eq (ediff-device-type) 'ns))
- (progn
- (fset 'x-display-color-p (symbol-function 'ns-display-color-p))
- (fset 'x-color-defined-p (symbol-function 'ns-color-defined-p))
- (fset 'x-display-pixel-height (symbol-function 'ns-display-pixel-height))
- (fset 'x-display-pixel-width (symbol-function 'ns-display-pixel-width))
- ))
-
-
-(defsubst ediff-color-display-p ()
- (if ediff-emacs-p
- (x-display-color-p)
- (eq (device-class (selected-device)) 'color)))
+(defun ediff-color-display-p ()
+ (condition-case nil
+ (if ediff-emacs-p
+ (if (fboundp 'display-color-p)
+ (display-color-p)
+ (x-display-color-p))
+ (eq (device-class (selected-device)) 'color))
+ (error
+ nil)))
(if (ediff-has-face-support-p)
(progn
(fset 'ediff-valid-color-p (symbol-function 'valid-color-name-p))
(fset 'ediff-get-face (symbol-function 'get-face)))
- ;; Temporary fix for OS/2 port of Emacs
- ;; pm-win.el in PM-Emacs should be fixed.
- (if (eq (ediff-device-type) 'pm)
- (fset 'ediff-valid-color-p
- (lambda (color) (assoc color pm-color-alist)))
- (fset 'ediff-valid-color-p (symbol-function 'x-color-defined-p)))
+ (fset 'ediff-valid-color-p (symbol-function
+ (if (fboundp 'color-defined-p)
+ 'color-defined-p
+ 'x-color-defined-p)))
(fset 'ediff-get-face (symbol-function 'internal-get-face))))
(if (ediff-window-display-p)
(symbol-function 'device-pixel-width))
(fset 'ediff-display-pixel-height
(symbol-function 'device-pixel-height)))
- (fset 'ediff-display-pixel-width
- (symbol-function 'x-display-pixel-width))
- (fset 'ediff-display-pixel-height
- (symbol-function 'x-display-pixel-height))))
+ (fset 'ediff-display-pixel-width (symbol-function
+ (if (fboundp 'display-pixel-width)
+ 'display-pixel-width
+ 'x-display-pixel-width)))
+ (fset 'ediff-display-pixel-height (symbol-function
+ (if (fboundp 'display-pixel-height)
+ 'display-pixel-height
+ 'x-display-pixel-height)))))
;; A-list of current-diff-overlay symbols asssociated with buf types
(defconst ediff-current-diff-overlay-alist
(ediff-overlay-put extent 'face face)
(ediff-overlay-put extent 'help-echo 'ediff-region-help-echo))
-;; This does nothing in Emacs, since overlays there have no help-echo property
-(defun ediff-region-help-echo (extent)
- (let ((is-current (ediff-overlay-get extent 'ediff))
- (face (ediff-overlay-get extent 'face))
- (diff-num (ediff-overlay-get extent 'ediff-diff-num))
+(defun ediff-region-help-echo (extent-or-window &optional overlay point)
+ (unless overlay
+ (setq overlay extent-or-window))
+ (let ((is-current (ediff-overlay-get overlay 'ediff))
+ (face (ediff-overlay-get overlay 'face))
+ (diff-num (ediff-overlay-get overlay 'ediff-diff-num))
face-help)
;; This happens only for refinement overlays
+ (if (stringp face)
+ (setq face (intern face)))
(setq face-help (and face (get face 'ediff-help-echo)))
- (cond ((and is-current diff-num) ; current diff region
+ (cond ((and is-current diff-num) ; current diff region
(format "Difference region %S -- current" (1+ diff-num)))
- (face-help) ; refinement of current diff region
- (diff-num ; non-current
+ (face-help) ; refinement of current diff region
+ (diff-num ; non-current
(format "Difference region %S -- non-current" (1+ diff-num)))
- (t "")) ; none
+ (t "")) ; none
))