From d396e5218f3fc00543852284be85bc3c1db28663 Mon Sep 17 00:00:00 2001 From: Michael Kifer Date: Thu, 6 Jul 2000 05:36:21 +0000 Subject: [PATCH] 2000-07-05 Michael Kifer * ediff-diff.el (ediff-wordify): use syntax table. * ediff-init.el (ediff-has-face-support-p): use ediff-color-display-p. (ediff-color-display-p): use display-color-p, changed to defun from defsubst. Got rid of special cases for NeXT and OS/2. * ediff-wind.el (ediff-setup-control-frame): set proper modeline face. --- lisp/ChangeLog | 11 ++++++++++ lisp/ediff-diff.el | 13 +++++++++--- lisp/ediff-init.el | 51 +++++++++++++++++++++------------------------- 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 83df703356b..5b96988b6fc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2000-07-05 Michael Kifer + + * ediff-diff.el (ediff-wordify): use syntax table. + * ediff-init.el (ediff-has-face-support-p): use + ediff-color-display-p. + (ediff-color-display-p): use display-color-p, changed to defun + from defsubst. + Got rid of special cases for NeXT and OS/2. + * ediff-wind.el (ediff-setup-control-frame): set proper modeline + face. + 2000-07-05 Stefan Monnier * emacs-lisp/lucid.el: Require CL. diff --git a/lisp/ediff-diff.el b/lisp/ediff-diff.el index a7236bd1d35..e6864bf02fe 100644 --- a/lisp/ediff-diff.el +++ b/lisp/ediff-diff.el @@ -1216,7 +1216,7 @@ Used for splitting difference regions into individual words.") "*Characters constituting white space. These characters are ignored when differing regions are split into words.") -(defvar ediff-word-1 "\\(a-zA-Z---_\\|\w\\)" +(defvar ediff-word-1 "a-zA-Z---_" "*Characters that constitute words of type 1. More precisely, [ediff-word-1] is a regexp that matches type 1 words. See `ediff-forward-word' for more details.") @@ -1253,13 +1253,19 @@ arguments to `skip-chars-forward'." (> (skip-chars-forward ediff-word-4) 0) )) + (defun ediff-wordify (beg end in-buffer out-buffer &optional control-buf) - (let (sv-point string) + (let (inbuf-syntax-tbl sv-point string) (save-excursion (set-buffer in-buffer) + (setq inbuf-syntax-tbl (syntax-table)) (setq string (buffer-substring-no-properties beg end)) (set-buffer out-buffer) + ;; Make sure that temp buff syntax table is the same a the original buf + ;; syntax tbl, because we use ediff-forward-word in both and + ;; ediff-forward-word depends on the syntax classes of characters. + (set-syntax-table inbuf-syntax-tbl) (erase-buffer) (insert string) (goto-char (point-min)) @@ -1271,7 +1277,8 @@ arguments to `skip-chars-forward'." ;; different invocations (if control-buf (funcall - (ediff-with-current-buffer control-buf ediff-forward-word-function)) + (ediff-with-current-buffer + control-buf ediff-forward-word-function)) (funcall ediff-forward-word-function)) (setq sv-point (point)) (skip-chars-forward ediff-whitespace) diff --git a/lisp/ediff-init.el b/lisp/ediff-init.el index 7cd3d3da229..ed8cfa29e1e 100644 --- a/lisp/ediff-init.el +++ b/lisp/ediff-init.el @@ -63,8 +63,8 @@ that Ediff doesn't know about.") (defun ediff-has-face-support-p () (cond ((ediff-window-display-p)) (ediff-force-faces) - (ediff-emacs-p (or (x-display-color-p) - (memq (ediff-device-type) '(pc)))) + ((ediff-color-display-p)) + (ediff-emacs-p (memq (ediff-device-type) '(pc))) (ediff-xemacs-p (memq (ediff-device-type) '(tty pc))))) (defun ediff-has-toolbar-support-p () @@ -739,22 +739,15 @@ appropriate symbol: `rcs', `pcl-cvs', or `generic-sc' if you so desire." ((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) @@ -762,12 +755,10 @@ appropriate symbol: `rcs', `pcl-cvs', or `generic-sc' if you so desire." (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) @@ -777,10 +768,14 @@ appropriate symbol: `rcs', `pcl-cvs', or `generic-sc' if you so desire." (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 -- 2.39.2