Remove most of the XEmacs compat code from ediff*.el

* lisp/vc/ediff-diff.el (ediff-word-1): Remove XEmacs compat code
and declare compatibility functions for obsolete.  Adjust all callers.

* lisp/vc/ediff-help.el (ediff-set-help-overlays):

* lisp/vc/ediff-hook.el:
(menu-bar-ediff-misc-menu, menu-bar-ediff-merge-menu)
(menu-bar-ediff-menu, menu-bar-ediff-merge-menu)
(menu-bar-epatch-menu, menu-bar-ediff-misc-menu):

* lisp/vc/ediff-init.el (ediff-device-type)
(ediff-window-display-p, ediff-has-face-support-p)
(ediff-has-toolbar-support-p, ediff-has-gutter-support-p)
(ediff-BAD-INFO, ediff-coding-system-for-write)
(ediff-read-event, ediff-overlayp, ediff-make-overlay)
(ediff-delete-overlay, ediff-color-display-p)
(ediff-display-pixel-width, ediff-display-pixel-height)
(ediff-region-help-echo, ediff-set-face-pixmap)
(ediff-paint-background-regions-in-one-buffer)
(ediff-clear-fine-diff-vector, ediff-mouse-event-p)
(ediff-key-press-event-p, ediff-event-point, )
(ediff-event-buffer, ediff-event-key, ediff-last-command-char)
(ediff-frame-iconified-p, ediff-frame-char-width)
(ediff-reset-mouse, ediff-frame-char-height)
(ediff-overlay-start, ediff-overlay-end, ediff-overlay-buffer)
(ediff-overlay-get, ediff-move-overlay, ediff-overlay-put)
(ediff-abbreviate-file-name):

* lisp/vc/ediff-mult.el (ediff-next-meta-item)
(ediff-previous-meta-item)
(ediff-replace-session-activity-marker-in-meta-buffer)
(ediff-replace-session-status-in-meta-buffer)
(ediff-redraw-directory-group-buffer)
(ediff-update-markers-in-dir-meta-buffer)
(ediff-update-session-marker-in-dir-meta-buffer)
(ediff-redraw-registry-buffer, ediff-set-meta-overlay)
(ediff-update-meta-buffer, ediff-get-meta-info)
(ediff-get-meta-overlay-at-pos, )
(ediff-get-session-number-at-pos, )
(ediff-next-meta-overlay-start)
(ediff-previous-meta-overlay-start, )
(ediff-meta-mark-equal-files):

* lisp/vc/ediff-util.el:
(ediff-setup, ediff-setup-control-buffer, ediff-recenter)
(ediff-recenter-one-window, ediff-toggle-read-only)
(ediff-file-checked-out-p, ediff-file-checked-in-p)
(ediff-toggle-wide-display, ediff-toggle-multiframe)
(ediff-toggle-use-toolbar, ediff-kill-bottom-toolbar)
(ediff-visible-region, ediff-scroll-vertically)
(ediff-scroll-horizontally, ediff-jump-to-difference-at-point)
(ediff-diff-to-diff, ediff-restore-diff)
(ediff-toggle-regexp-match, ediff-really-quit)
(ediff-cleanup-mess, ediff-highlight-diff-in-one-buffer)
(ediff-unhighlight-diffs-totally-in-one-buffer)
(ediff-save-buffer, ediff-make-cloned-buffer)
(ediff-make-indirect-buffer, ediff-remove-flags-from-buffer)
(ediff-place-flags-in-buffer1, ediff-get-diff-posn)
(ediff-clear-diff-vector, ediff-make-bullet-proof-overlay)
(ediff-submit-report, ediff-deactivate-mark)
(ediff-activate-mark, ediff-profile, ediff-print-diff-vector):

* lisp/vc/ediff-wind.el (ediff-control-frame-parameters)
(ediff-get-window-by-clicking, ediff-select-lowest-window)
(ediff-setup-windows-plain-merge)
(ediff-setup-windows-plain-compare, ediff-setup-control-frame)
(ediff-destroy-control-frame, ediff-make-frame-position)
(ediff-make-wide-display, ediff-get-visible-buffer-window):

* lisp/vc/ediff.el (ediff-version, ediff-documentation):
This commit is contained in:
Lars Ingebrigtsen 2019-10-05 16:48:44 +02:00
parent 9cf8454463
commit 3c1635ebf2
8 changed files with 342 additions and 695 deletions

View file

@ -1231,8 +1231,7 @@ Used for splitting difference regions into individual words.")
These characters are ignored when differing regions are split into words.")
(make-variable-buffer-local 'ediff-whitespace)
(defvar ediff-word-1
(if (featurep 'xemacs) "a-zA-Z---_" "-[:word:]_")
(defvar ediff-word-1 "-[:word:]_"
"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.")

View file

@ -166,7 +166,7 @@ the value of this variable and the variables `ediff-help-message-*' in
(setq beg (match-beginning 1)
end (match-end 0)
cmd (buffer-substring (match-beginning 1) (match-end 1)))
(setq overl (ediff-make-overlay beg end))
(setq overl (make-overlay beg end))
(ediff-overlay-put overl 'mouse-face 'highlight)
(ediff-overlay-put overl 'ediff-help-info cmd))))

View file

@ -44,222 +44,141 @@
;; allow menus to be set up without ediff-wind.el being loaded
;; This autoload is useless in Emacs because ediff-hook.el is dumped with
;; emacs, but it is needed in XEmacs
;;;###autoload
(if (featurep 'xemacs)
(progn
(defun ediff-xemacs-init-menus ()
(when (featurep 'menubar)
(add-submenu
'("Tools") ediff-menu "OO-Browser...")
(add-submenu
'("Tools") ediff-merge-menu "OO-Browser...")
(add-submenu
'("Tools") epatch-menu "OO-Browser...")
(add-submenu
'("Tools") ediff-misc-menu "OO-Browser...")
(add-menu-button
'("Tools") "-------" "OO-Browser...")
))
(defvar ediff-menu
'("Compare"
["Two Files..." ediff-files t]
["Two Buffers..." ediff-buffers t]
["Three Files..." ediff-files3 t]
["Three Buffers..." ediff-buffers3 t]
"---"
["Two Directories..." ediff-directories t]
["Three Directories..." ediff-directories3 t]
"---"
["File with Revision..." ediff-revision t]
["Directory Revisions..." ediff-directory-revisions t]
"---"
["Windows Word-by-word..." ediff-windows-wordwise t]
["Windows Line-by-line..." ediff-windows-linewise t]
"---"
["Regions Word-by-word..." ediff-regions-wordwise t]
["Regions Line-by-line..." ediff-regions-linewise t]
))
(defvar ediff-merge-menu
'("Merge"
["Files..." ediff-merge-files t]
["Files with Ancestor..." ediff-merge-files-with-ancestor t]
["Buffers..." ediff-merge-buffers t]
["Buffers with Ancestor..."
ediff-merge-buffers-with-ancestor t]
"---"
["Directories..." ediff-merge-directories t]
["Directories with Ancestor..."
ediff-merge-directories-with-ancestor t]
"---"
["Revisions..." ediff-merge-revisions t]
["Revisions with Ancestor..."
ediff-merge-revisions-with-ancestor t]
["Directory Revisions..." ediff-merge-directory-revisions t]
["Directory Revisions with Ancestor..."
ediff-merge-directory-revisions-with-ancestor t]
))
(defvar epatch-menu
'("Apply Patch"
["To a file..." ediff-patch-file t]
["To a buffer..." ediff-patch-buffer t]
))
(defvar ediff-misc-menu
'("Ediff Miscellanea"
["Ediff Manual" ediff-documentation t]
["Customize Ediff" ediff-customize t]
["List Ediff Sessions" ediff-show-registry t]
["Use separate frame for Ediff control buffer"
ediff-toggle-multiframe
:style toggle
:selected (eq (bound-and-true-p ediff-window-setup-function)
#'ediff-setup-windows-multiframe)]
["Use a toolbar with Ediff control buffer"
ediff-toggle-use-toolbar
:style toggle
:selected (if (featurep 'ediff-tbar)
(ediff-use-toolbar-p))]))
;; Emacs
;; initialize menu bar keymaps
(defvar menu-bar-ediff-misc-menu
(make-sparse-keymap "Ediff Miscellanea"))
(fset 'menu-bar-ediff-misc-menu
menu-bar-ediff-misc-menu)
(defvar menu-bar-epatch-menu (make-sparse-keymap "Apply Patch"))
(fset 'menu-bar-epatch-menu menu-bar-epatch-menu)
(defvar menu-bar-ediff-merge-menu (make-sparse-keymap "Merge"))
(fset 'menu-bar-ediff-merge-menu
menu-bar-ediff-merge-menu)
(defvar menu-bar-ediff-menu (make-sparse-keymap "Compare"))
(fset 'menu-bar-ediff-menu menu-bar-ediff-menu)
;; put these menus before Object-Oriented-Browser in Tools menu
(if (and (featurep 'menubar) (not (featurep 'infodock))
(not (featurep 'ediff-hook)))
(ediff-xemacs-init-menus)))
;; Emacs
;; initialize menu bar keymaps
(defvar menu-bar-ediff-misc-menu
(make-sparse-keymap "Ediff Miscellanea"))
(fset 'menu-bar-ediff-misc-menu
menu-bar-ediff-misc-menu)
(defvar menu-bar-epatch-menu (make-sparse-keymap "Apply Patch"))
(fset 'menu-bar-epatch-menu menu-bar-epatch-menu)
(defvar menu-bar-ediff-merge-menu (make-sparse-keymap "Merge"))
(fset 'menu-bar-ediff-merge-menu
menu-bar-ediff-merge-menu)
(defvar menu-bar-ediff-menu (make-sparse-keymap "Compare"))
(fset 'menu-bar-ediff-menu menu-bar-ediff-menu)
;; define ediff compare menu
(define-key menu-bar-ediff-menu [ediff-misc]
`(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu))
(define-key menu-bar-ediff-menu [separator-ediff-misc] menu-bar-separator)
(define-key menu-bar-ediff-menu [window]
`(menu-item ,(purecopy "This Window and Next Window") compare-windows
:help ,(purecopy "Compare the current window and the next window")))
(define-key menu-bar-ediff-menu [ediff-windows-linewise]
`(menu-item ,(purecopy "Windows Line-by-line...") ediff-windows-linewise
:help ,(purecopy "Compare windows line-wise")))
(define-key menu-bar-ediff-menu [ediff-windows-wordwise]
`(menu-item ,(purecopy "Windows Word-by-word...") ediff-windows-wordwise
:help ,(purecopy "Compare windows word-wise")))
(define-key menu-bar-ediff-menu [separator-ediff-windows] menu-bar-separator)
(define-key menu-bar-ediff-menu [ediff-regions-linewise]
`(menu-item ,(purecopy "Regions Line-by-line...") ediff-regions-linewise
:help ,(purecopy "Compare regions line-wise")))
(define-key menu-bar-ediff-menu [ediff-regions-wordwise]
`(menu-item ,(purecopy "Regions Word-by-word...") ediff-regions-wordwise
:help ,(purecopy "Compare regions word-wise")))
(define-key menu-bar-ediff-menu [separator-ediff-regions] menu-bar-separator)
(define-key menu-bar-ediff-menu [ediff-dir-revision]
`(menu-item ,(purecopy "Directory Revisions...") ediff-directory-revisions
:help ,(purecopy "Compare directory files with their older versions")))
(define-key menu-bar-ediff-menu [ediff-revision]
`(menu-item ,(purecopy "File with Revision...") ediff-revision
:help ,(purecopy "Compare file with its older versions")))
(define-key menu-bar-ediff-menu [separator-ediff-directories] menu-bar-separator)
(define-key menu-bar-ediff-menu [ediff-directories3]
`(menu-item ,(purecopy "Three Directories...") ediff-directories3
:help ,(purecopy "Compare files common to three directories simultaneously")))
(define-key menu-bar-ediff-menu [ediff-directories]
`(menu-item ,(purecopy "Two Directories...") ediff-directories
:help ,(purecopy "Compare files common to two directories simultaneously")))
(define-key menu-bar-ediff-menu [separator-ediff-files] menu-bar-separator)
(define-key menu-bar-ediff-menu [ediff-buffers3]
`(menu-item ,(purecopy "Three Buffers...") ediff-buffers3
:help ,(purecopy "Compare three buffers simultaneously")))
(define-key menu-bar-ediff-menu [ediff-files3]
`(menu-item ,(purecopy "Three Files...") ediff-files3
:help ,(purecopy "Compare three files simultaneously")))
(define-key menu-bar-ediff-menu [ediff-buffers]
`(menu-item ,(purecopy "Two Buffers...") ediff-buffers
:help ,(purecopy "Compare two buffers simultaneously")))
(define-key menu-bar-ediff-menu [ediff-files]
`(menu-item ,(purecopy "Two Files...") ediff-files
:help ,(purecopy "Compare two files simultaneously")))
;; define ediff compare menu
(define-key menu-bar-ediff-menu [ediff-misc]
`(menu-item ,(purecopy "Ediff Miscellanea") menu-bar-ediff-misc-menu))
(define-key menu-bar-ediff-menu [separator-ediff-misc] menu-bar-separator)
(define-key menu-bar-ediff-menu [window]
`(menu-item ,(purecopy "This Window and Next Window") compare-windows
:help ,(purecopy "Compare the current window and the next window")))
(define-key menu-bar-ediff-menu [ediff-windows-linewise]
`(menu-item ,(purecopy "Windows Line-by-line...") ediff-windows-linewise
:help ,(purecopy "Compare windows line-wise")))
(define-key menu-bar-ediff-menu [ediff-windows-wordwise]
`(menu-item ,(purecopy "Windows Word-by-word...") ediff-windows-wordwise
:help ,(purecopy "Compare windows word-wise")))
(define-key menu-bar-ediff-menu [separator-ediff-windows] menu-bar-separator)
(define-key menu-bar-ediff-menu [ediff-regions-linewise]
`(menu-item ,(purecopy "Regions Line-by-line...") ediff-regions-linewise
:help ,(purecopy "Compare regions line-wise")))
(define-key menu-bar-ediff-menu [ediff-regions-wordwise]
`(menu-item ,(purecopy "Regions Word-by-word...") ediff-regions-wordwise
:help ,(purecopy "Compare regions word-wise")))
(define-key menu-bar-ediff-menu [separator-ediff-regions] menu-bar-separator)
(define-key menu-bar-ediff-menu [ediff-dir-revision]
`(menu-item ,(purecopy "Directory Revisions...") ediff-directory-revisions
:help ,(purecopy "Compare directory files with their older versions")))
(define-key menu-bar-ediff-menu [ediff-revision]
`(menu-item ,(purecopy "File with Revision...") ediff-revision
:help ,(purecopy "Compare file with its older versions")))
(define-key menu-bar-ediff-menu [separator-ediff-directories] menu-bar-separator)
(define-key menu-bar-ediff-menu [ediff-directories3]
`(menu-item ,(purecopy "Three Directories...") ediff-directories3
:help ,(purecopy "Compare files common to three directories simultaneously")))
(define-key menu-bar-ediff-menu [ediff-directories]
`(menu-item ,(purecopy "Two Directories...") ediff-directories
:help ,(purecopy "Compare files common to two directories simultaneously")))
(define-key menu-bar-ediff-menu [separator-ediff-files] menu-bar-separator)
(define-key menu-bar-ediff-menu [ediff-buffers3]
`(menu-item ,(purecopy "Three Buffers...") ediff-buffers3
:help ,(purecopy "Compare three buffers simultaneously")))
(define-key menu-bar-ediff-menu [ediff-files3]
`(menu-item ,(purecopy "Three Files...") ediff-files3
:help ,(purecopy "Compare three files simultaneously")))
(define-key menu-bar-ediff-menu [ediff-buffers]
`(menu-item ,(purecopy "Two Buffers...") ediff-buffers
:help ,(purecopy "Compare two buffers simultaneously")))
(define-key menu-bar-ediff-menu [ediff-files]
`(menu-item ,(purecopy "Two Files...") ediff-files
:help ,(purecopy "Compare two files simultaneously")))
;; define ediff merge menu
(define-key
menu-bar-ediff-merge-menu [ediff-merge-dir-revisions-with-ancestor]
`(menu-item ,(purecopy "Directory Revisions with Ancestor...")
ediff-merge-directory-revisions-with-ancestor
:help ,(purecopy "Merge versions of the files in the same directory by comparing the files with common ancestors")))
(define-key
menu-bar-ediff-merge-menu [ediff-merge-dir-revisions]
`(menu-item ,(purecopy "Directory Revisions...") ediff-merge-directory-revisions
:help ,(purecopy "Merge versions of the files in the same directory (without using ancestor information)")))
(define-key
menu-bar-ediff-merge-menu [ediff-merge-revisions-with-ancestor]
`(menu-item ,(purecopy "Revisions with Ancestor...")
ediff-merge-revisions-with-ancestor
:help ,(purecopy "Merge versions of the same file by comparing them with a common ancestor")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-revisions]
`(menu-item ,(purecopy "Revisions...") ediff-merge-revisions
:help ,(purecopy "Merge versions of the same file (without using ancestor information)")))
(define-key menu-bar-ediff-merge-menu [separator-ediff-merge] menu-bar-separator)
(define-key
menu-bar-ediff-merge-menu [ediff-merge-directories-with-ancestor]
`(menu-item ,(purecopy "Directories with Ancestor...")
ediff-merge-directories-with-ancestor
:help ,(purecopy "Merge files common to a pair of directories by comparing the files with common ancestors")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-directories]
`(menu-item ,(purecopy "Directories...") ediff-merge-directories
:help ,(purecopy "Merge files common to a pair of directories")))
(define-key
menu-bar-ediff-merge-menu [separator-ediff-merge-dirs] menu-bar-separator)
(define-key
menu-bar-ediff-merge-menu [ediff-merge-buffers-with-ancestor]
`(menu-item ,(purecopy "Buffers with Ancestor...") ediff-merge-buffers-with-ancestor
:help ,(purecopy "Merge buffers by comparing their contents with a common ancestor")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-buffers]
`(menu-item ,(purecopy "Buffers...") ediff-merge-buffers
:help ,(purecopy "Merge buffers (without using ancestor information)")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-files-with-ancestor]
`(menu-item ,(purecopy "Files with Ancestor...") ediff-merge-files-with-ancestor
:help ,(purecopy "Merge files by comparing them with a common ancestor")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-files]
`(menu-item ,(purecopy "Files...") ediff-merge-files
:help ,(purecopy "Merge files (without using ancestor information)")))
;; define ediff merge menu
(define-key
menu-bar-ediff-merge-menu [ediff-merge-dir-revisions-with-ancestor]
`(menu-item ,(purecopy "Directory Revisions with Ancestor...")
ediff-merge-directory-revisions-with-ancestor
:help ,(purecopy "Merge versions of the files in the same directory by comparing the files with common ancestors")))
(define-key
menu-bar-ediff-merge-menu [ediff-merge-dir-revisions]
`(menu-item ,(purecopy "Directory Revisions...") ediff-merge-directory-revisions
:help ,(purecopy "Merge versions of the files in the same directory (without using ancestor information)")))
(define-key
menu-bar-ediff-merge-menu [ediff-merge-revisions-with-ancestor]
`(menu-item ,(purecopy "Revisions with Ancestor...")
ediff-merge-revisions-with-ancestor
:help ,(purecopy "Merge versions of the same file by comparing them with a common ancestor")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-revisions]
`(menu-item ,(purecopy "Revisions...") ediff-merge-revisions
:help ,(purecopy "Merge versions of the same file (without using ancestor information)")))
(define-key menu-bar-ediff-merge-menu [separator-ediff-merge] menu-bar-separator)
(define-key
menu-bar-ediff-merge-menu [ediff-merge-directories-with-ancestor]
`(menu-item ,(purecopy "Directories with Ancestor...")
ediff-merge-directories-with-ancestor
:help ,(purecopy "Merge files common to a pair of directories by comparing the files with common ancestors")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-directories]
`(menu-item ,(purecopy "Directories...") ediff-merge-directories
:help ,(purecopy "Merge files common to a pair of directories")))
(define-key
menu-bar-ediff-merge-menu [separator-ediff-merge-dirs] menu-bar-separator)
(define-key
menu-bar-ediff-merge-menu [ediff-merge-buffers-with-ancestor]
`(menu-item ,(purecopy "Buffers with Ancestor...") ediff-merge-buffers-with-ancestor
:help ,(purecopy "Merge buffers by comparing their contents with a common ancestor")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-buffers]
`(menu-item ,(purecopy "Buffers...") ediff-merge-buffers
:help ,(purecopy "Merge buffers (without using ancestor information)")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-files-with-ancestor]
`(menu-item ,(purecopy "Files with Ancestor...") ediff-merge-files-with-ancestor
:help ,(purecopy "Merge files by comparing them with a common ancestor")))
(define-key menu-bar-ediff-merge-menu [ediff-merge-files]
`(menu-item ,(purecopy "Files...") ediff-merge-files
:help ,(purecopy "Merge files (without using ancestor information)")))
;; define epatch menu
(define-key menu-bar-epatch-menu [ediff-patch-buffer]
`(menu-item ,(purecopy "To a Buffer...") ediff-patch-buffer
:help ,(purecopy "Apply a patch to the contents of a buffer")))
(define-key menu-bar-epatch-menu [ediff-patch-file]
`(menu-item ,(purecopy "To a File...") ediff-patch-file
:help ,(purecopy "Apply a patch to a file")))
;; define epatch menu
(define-key menu-bar-epatch-menu [ediff-patch-buffer]
`(menu-item ,(purecopy "To a Buffer...") ediff-patch-buffer
:help ,(purecopy "Apply a patch to the contents of a buffer")))
(define-key menu-bar-epatch-menu [ediff-patch-file]
`(menu-item ,(purecopy "To a File...") ediff-patch-file
:help ,(purecopy "Apply a patch to a file")))
;; define ediff miscellanea
(define-key menu-bar-ediff-misc-menu [emultiframe]
`(menu-item ,(purecopy "Use separate control buffer frame")
ediff-toggle-multiframe
:help ,(purecopy "Switch between the single-frame presentation mode and the multi-frame mode")
:button (:toggle . (eq (bound-and-true-p ediff-window-setup-function)
#'ediff-setup-windows-multiframe))))
;; FIXME: Port XEmacs's toolbar support!
;; ["Use a toolbar with Ediff control buffer"
;; ediff-toggle-use-toolbar
;; :style toggle
;; :selected (if (featurep 'ediff-tbar)
;; (ediff-use-toolbar-p))]
(define-key menu-bar-ediff-misc-menu [eregistry]
`(menu-item ,(purecopy "List Ediff Sessions") ediff-show-registry
:help ,(purecopy "List all active Ediff sessions; it is a convenient way to find and resume such a session")))
(define-key menu-bar-ediff-misc-menu [ediff-cust]
`(menu-item ,(purecopy "Customize Ediff") ediff-customize
:help ,(purecopy "Change some of the parameters that govern the behavior of Ediff")))
(define-key menu-bar-ediff-misc-menu [ediff-doc]
`(menu-item ,(purecopy "Ediff Manual") ediff-documentation
:help ,(purecopy "Bring up the Ediff manual"))))
;; define ediff miscellanea
(define-key menu-bar-ediff-misc-menu [emultiframe]
`(menu-item ,(purecopy "Use separate control buffer frame")
ediff-toggle-multiframe
:help ,(purecopy "Switch between the single-frame presentation mode and the multi-frame mode")
:button (:toggle . (eq (bound-and-true-p ediff-window-setup-function)
#'ediff-setup-windows-multiframe))))
;; FIXME: Port XEmacs's toolbar support!
;; ["Use a toolbar with Ediff control buffer"
;; ediff-toggle-use-toolbar
;; :style toggle
;; :selected (if (featurep 'ediff-tbar)
;; (ediff-use-toolbar-p))]
(define-key menu-bar-ediff-misc-menu [eregistry]
`(menu-item ,(purecopy "List Ediff Sessions") ediff-show-registry
:help ,(purecopy "List all active Ediff sessions; it is a convenient way to find and resume such a session")))
(define-key menu-bar-ediff-misc-menu [ediff-cust]
`(menu-item ,(purecopy "Customize Ediff") ediff-customize
:help ,(purecopy "Change some of the parameters that govern the behavior of Ediff")))
(define-key menu-bar-ediff-misc-menu [ediff-doc]
`(menu-item ,(purecopy "Ediff Manual") ediff-documentation
:help ,(purecopy "Bring up the Ediff manual")))
(provide 'ediff-hook)
;;; ediff-hook.el ends here

View file

@ -45,30 +45,29 @@ that Ediff doesn't know about.")
;; Are we running as a window application or on a TTY?
(defsubst ediff-device-type ()
(if (featurep 'xemacs)
(device-type (selected-device))
window-system))
(declare (obsolete nil "27.1"))
window-system)
;; in XEmacs: device-type is tty on tty and stream in batch.
(defun ediff-window-display-p ()
(and (ediff-device-type) (not (memq (ediff-device-type) '(tty pc stream)))))
(and window-system
(not (memq window-system '(tty pc stream)))))
;; test if supports faces
(defun ediff-has-face-support-p ()
(cond ((ediff-window-display-p))
(ediff-force-faces)
((ediff-color-display-p))
(t (memq (ediff-device-type) '(pc)))))
((display-color-p))
(t (memq window-system '(pc)))))
;; toolbar support for emacs hasn't been implemented in ediff
(defun ediff-has-toolbar-support-p ()
(if (featurep 'xemacs)
(if (featurep 'toolbar) (console-on-window-system-p))))
nil)
(defun ediff-has-gutter-support-p ()
(if (featurep 'xemacs)
(if (featurep 'gutter) (console-on-window-system-p))))
(declare (obsolete nil "27.1"))
nil)
(defun ediff-use-toolbar-p ()
(and (ediff-has-toolbar-support-p) ;Can it do it ?
@ -493,10 +492,9 @@ set local variables that determine how the display looks like."
"%S: Bad diff region number, %d. Valid numbers are 1 to %d")
(defconst ediff-BAD-INFO (format "
*** The Info file for Ediff, a part of the standard distribution
*** of %sEmacs, does not seem to be properly installed.
*** of Emacs, does not seem to be properly installed.
***
*** Please contact your system administrator. "
(if (featurep 'xemacs) "X" "")))
*** Please contact your system administrator. "))
;; Selective browsing
@ -553,24 +551,24 @@ See the documentation string of `ediff-focus-on-regexp-matches' for details.")
;; Highlighting
(defcustom ediff-before-flag-bol (if (featurep 'xemacs) (make-glyph "->>") "->>")
(defcustom ediff-before-flag-bol "->>"
"Flag placed before a highlighted block of differences, if block starts at beginning of a line."
:type 'string
:tag "Region before-flag at beginning of line"
:group 'ediff)
(defcustom ediff-after-flag-eol (if (featurep 'xemacs) (make-glyph "<<-") "<<-")
(defcustom ediff-after-flag-eol "<<-"
"Flag placed after a highlighted block of differences, if block ends at end of a line."
:type 'string
:tag "Region after-flag at end of line"
:group 'ediff)
(defcustom ediff-before-flag-mol (if (featurep 'xemacs) (make-glyph "->>") "->>")
(defcustom ediff-before-flag-mol "->>"
"Flag placed before a highlighted block of differences, if block starts in mid-line."
:type 'string
:tag "Region before-flag in the middle of line"
:group 'ediff)
(defcustom ediff-after-flag-mol (if (featurep 'xemacs) (make-glyph "<<-") "<<-")
(defcustom ediff-after-flag-mol "<<-"
"Flag placed after a highlighted block of differences, if block ends in mid-line."
:type 'string
:tag "Region after-flag in the middle of line"
@ -717,33 +715,22 @@ work."
:type 'symbol
:group 'ediff)
(defcustom ediff-coding-system-for-write (if (featurep 'xemacs)
'escape-quoted
'emacs-internal)
(defcustom ediff-coding-system-for-write 'emacs-internal
"The coding system for write to use when writing out difference regions
to temp files in buffer jobs and when Ediff needs to find fine differences."
:type 'symbol
:group 'ediff)
(defalias 'ediff-read-event
(if (featurep 'xemacs) 'next-command-event 'read-event))
(define-obsolete-function-alias 'ediff-read-event #'read-event "27.1")
(defalias 'ediff-overlayp
(if (featurep 'xemacs) 'extentp 'overlayp))
(define-obsolete-function-alias 'ediff-overlayp #'overlayp "27.1")
(defalias 'ediff-make-overlay
(if (featurep 'xemacs) 'make-extent 'make-overlay))
(define-obsolete-function-alias 'ediff-make-overlay #'make-overlay "27.1")
(defalias 'ediff-delete-overlay
(if (featurep 'xemacs) 'delete-extent 'delete-overlay))
(define-obsolete-function-alias 'ediff-delete-overlay #'delete-overlay "27.1")
(defun ediff-color-display-p ()
(condition-case nil
(if (featurep 'xemacs)
(eq (device-class (selected-device)) 'color) ; xemacs form
(display-color-p)) ; emacs form
(error nil)))
(define-obsolete-function-alias 'ediff-color-display-p #'display-color-p "27.1")
;; A var local to each control panel buffer. Indicates highlighting style
@ -754,12 +741,10 @@ to temp files in buffer jobs and when Ediff needs to find fine differences."
"")
(if (featurep 'xemacs)
(progn
(defalias 'ediff-display-pixel-width 'device-pixel-width)
(defalias 'ediff-display-pixel-height 'device-pixel-height))
(defalias 'ediff-display-pixel-width 'display-pixel-width)
(defalias 'ediff-display-pixel-height 'display-pixel-height))
(define-obsolete-function-alias 'ediff-display-pixel-width
#'display-pixel-width "27.1")
(define-obsolete-function-alias 'ediff-display-pixel-height
#'display-pixel-height "27.1")
;; A-list of current-diff-overlay symbols associated with buf types
(defconst ediff-current-diff-overlay-alist
@ -783,9 +768,9 @@ to temp files in buffer jobs and when Ediff needs to find fine differences."
(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))
(let ((is-current (overlay-get overlay 'ediff))
(face (overlay-get overlay 'face))
(diff-num (overlay-get overlay 'ediff-diff-num))
face-help)
;; This happens only for refinement overlays
@ -804,7 +789,7 @@ to temp files in buffer jobs and when Ediff needs to find fine differences."
(defun ediff-set-face-pixmap (face pixmap)
"Set face pixmap on a monochrome display."
(if (and (ediff-window-display-p) (not (ediff-color-display-p)))
(if (and (ediff-window-display-p) (not (display-color-p)))
(condition-case nil
(set-face-background-pixmap face pixmap)
(error
@ -839,14 +824,6 @@ DO NOT CHANGE this variable. Instead, use the customization
widget to customize the actual face object `ediff-current-diff-A'
this variable represents.")
(ediff-hide-face ediff-current-diff-face-A)
;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
;; This means that some user customization may be trashed.
(and (featurep 'xemacs)
(ediff-has-face-support-p)
(not (ediff-color-display-p))
(copy-face 'modeline ediff-current-diff-face-A))
(defface ediff-current-diff-B
'((((class color) (min-colors 88) (background light))
@ -869,13 +846,6 @@ this variable represents.")
widget to customize the actual face `ediff-current-diff-B'
this variable represents.")
(ediff-hide-face ediff-current-diff-face-B)
;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
;; This means that some user customization may be trashed.
(and (featurep 'xemacs)
(ediff-has-face-support-p)
(not (ediff-color-display-p))
(copy-face 'modeline ediff-current-diff-face-B))
(defface ediff-current-diff-C
'((((class color) (min-colors 88) (background light))
@ -897,13 +867,6 @@ DO NOT CHANGE this variable. Instead, use the customization
widget to customize the actual face object `ediff-current-diff-C'
this variable represents.")
(ediff-hide-face ediff-current-diff-face-C)
;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
;; This means that some user customization may be trashed.
(and (featurep 'xemacs)
(ediff-has-face-support-p)
(not (ediff-color-display-p))
(copy-face 'modeline ediff-current-diff-face-C))
(defface ediff-current-diff-Ancestor
'((((class color) (min-colors 88) (background light))
@ -927,13 +890,6 @@ DO NOT CHANGE this variable. Instead, use the customization
widget to customize the actual face object `ediff-current-diff-Ancestor'
this variable represents.")
(ediff-hide-face ediff-current-diff-face-Ancestor)
;; Until custom.el for XEmacs starts supporting :inverse-video we do this.
;; This means that some user customization may be trashed.
(and (featurep 'xemacs)
(ediff-has-face-support-p)
(not (ediff-color-display-p))
(copy-face 'modeline ediff-current-diff-face-Ancestor))
(defface ediff-fine-diff-A
'((((class color) (min-colors 88) (background light))
@ -1383,8 +1339,8 @@ This default should work without changes."
overl diff-num)
(mapcar (lambda (rec)
(setq overl (ediff-get-diff-overlay-from-diff-record rec)
diff-num (ediff-overlay-get overl 'ediff-diff-num))
(if (ediff-overlay-buffer overl)
diff-num (overlay-get overl 'ediff-diff-num))
(if (overlay-buffer overl)
;; only if overlay is alive
(ediff-set-overlay-face
overl
@ -1410,8 +1366,8 @@ This default should work without changes."
;; this record is itself a vector
(defsubst ediff-clear-fine-diff-vector (diff-record)
(if diff-record
(mapc #'ediff-delete-overlay
(ediff-get-fine-diff-vector-from-diff-record diff-record))))
(mapc #'delete-overlay
(ediff-get-fine-diff-vector-from-diff-record diff-record))))
(defsubst ediff-clear-fine-differences-in-one-buffer (n buf-type)
(ediff-clear-fine-diff-vector (ediff-get-difference n buf-type))
@ -1425,49 +1381,37 @@ This default should work without changes."
(defsubst ediff-mouse-event-p (event)
(if (featurep 'xemacs)
(button-event-p event)
(string-match "mouse" (format "%S" (event-basic-type event)))))
(string-match "mouse" (format "%S" (event-basic-type event))))
(defsubst ediff-key-press-event-p (event)
(if (featurep 'xemacs)
(key-press-event-p event)
(or (char-or-string-p event) (symbolp event))))
(or (char-or-string-p event) (symbolp event)))
(defun ediff-event-point (event)
(cond ((ediff-mouse-event-p event)
(if (featurep 'xemacs)
(event-point event)
(posn-point (event-start event))))
(posn-point (event-start event)))
((ediff-key-press-event-p event)
(point))
(t (error "Error"))))
(defun ediff-event-buffer (event)
(cond ((ediff-mouse-event-p event)
(if (featurep 'xemacs)
(event-buffer event)
(window-buffer (posn-window (event-start event)))))
(window-buffer (posn-window (event-start event))))
((ediff-key-press-event-p event)
(current-buffer))
(t (error "Error"))))
(defun ediff-event-key (event-or-key)
(if (featurep 'xemacs)
;;(if (eventp event-or-key) (event-key event-or-key) event-or-key)
(if (eventp event-or-key) (event-to-character event-or-key t t) event-or-key)
event-or-key))
(define-obsolete-function-alias 'ediff-event-key #'identity "27.1")
(defun ediff-last-command-char ()
(ediff-event-key last-command-event))
(declare (obsolete nil "27.1"))
last-command-event)
(defsubst ediff-frame-iconified-p (frame)
(and (ediff-window-display-p) (frame-live-p frame)
(if (featurep 'xemacs)
(frame-iconified-p frame)
(eq (frame-visible-p frame) 'icon))))
(and (ediff-window-display-p)
(frame-live-p frame)
(eq (frame-visible-p frame) 'icon)))
(defsubst ediff-window-visible-p (wind)
;; under TTY, window-live-p also means window is visible
@ -1476,17 +1420,13 @@ This default should work without changes."
(frame-visible-p (window-frame wind)))))
(defsubst ediff-frame-char-width (frame)
(if (featurep 'xemacs)
(/ (frame-pixel-width frame) (frame-width frame))
(frame-char-width frame)))
(define-obsolete-function-alias 'ediff-frame-char-width
#'frame-char-width "27.1")
(defun ediff-reset-mouse (&optional frame do-not-grab-mouse)
(or frame (setq frame (selected-frame)))
(if (ediff-window-display-p)
(let ((frame-or-wind frame))
(if (featurep 'xemacs)
(setq frame-or-wind (frame-selected-window frame)))
(or do-not-grab-mouse
;; don't set mouse if the user said to never do this
(not ediff-grab-mouse)
@ -1523,65 +1463,42 @@ This default should work without changes."
ediff-mouse-pixel-threshold))))
(t nil))))
(defsubst ediff-frame-char-height (frame)
(if (featurep 'xemacs)
(glyph-height ediff-H-glyph (frame-selected-window frame))
(frame-char-height frame)))
(define-obsolete-function-alias 'ediff-frame-char-height
#'frame-char-height "27.1")
;; Some overlay functions
(defsubst ediff-overlay-start (overl)
(if (ediff-overlayp overl)
(if (featurep 'xemacs)
(extent-start-position overl)
(overlay-start overl))))
(if (overlayp overl)
(overlay-start overl)))
(defsubst ediff-overlay-end (overl)
(if (ediff-overlayp overl)
(if (featurep 'xemacs)
(extent-end-position overl)
(overlay-end overl))))
(if (overlayp overl)
(overlay-end overl)))
(defsubst ediff-empty-overlay-p (overl)
(= (ediff-overlay-start overl) (ediff-overlay-end overl)))
;; like overlay-buffer in Emacs. In XEmacs, returns nil if the extent is
;; dead. Otherwise, works like extent-buffer
(defun ediff-overlay-buffer (overl)
(if (featurep 'xemacs)
(and (extent-live-p overl) (extent-object overl))
(overlay-buffer overl)))
(define-obsolete-function-alias 'ediff-overlay-buffer
#'overlay-buffer "27.1")
;; like overlay-get in Emacs. In XEmacs, returns nil if the extent is
;; dead. Otherwise, like extent-property
(defun ediff-overlay-get (overl property)
(if (featurep 'xemacs)
(and (extent-live-p overl) (extent-property overl property))
(overlay-get overl property)))
(define-obsolete-function-alias 'ediff-overlay-get #'overlay-get "27.1")
;; These two functions are here because XEmacs refuses to
;; handle overlays whose buffers were deleted.
(defun ediff-move-overlay (overlay beg end &optional buffer)
"Calls `move-overlay' in Emacs and `set-extent-endpoints' in Lemacs.
Checks if overlay's buffer exists before actually doing the move."
(let ((buf (and overlay (ediff-overlay-buffer overlay))))
"If OVERLAY's buffer exists, call `move-overlay'."
(let ((buf (and overlay (overlay-buffer overlay))))
(if (ediff-buffer-live-p buf)
(if (featurep 'xemacs)
(set-extent-endpoints overlay beg end)
(move-overlay overlay beg end buffer))
(move-overlay overlay beg end buffer)
;; buffer's dead
(if overlay
(ediff-delete-overlay overlay)))))
(delete-overlay overlay)))))
(defun ediff-overlay-put (overlay prop value)
"Calls `overlay-put' or `set-extent-property' depending on Emacs version.
Checks if overlay's buffer exists."
(if (ediff-buffer-live-p (ediff-overlay-buffer overlay))
(if (featurep 'xemacs)
(set-extent-property overlay prop value)
(overlay-put overlay prop value))
(ediff-delete-overlay overlay)))
"Calls `overlay-put', but checks if overlay's buffer exists."
(if (ediff-buffer-live-p (overlay-buffer overlay))
(overlay-put overlay prop value)
(delete-overlay overlay)))
;; temporarily uses DIR to abbreviate file name
;; if DIR is nil, use default-directory
@ -1590,10 +1507,7 @@ Checks if overlay's buffer exists."
(let ((directory-abbrev-alist (list (cons dir ""))))
(abbreviate-file-name file)))
(t
(if (featurep 'xemacs)
;; XEmacs requires addl argument
(abbreviate-file-name file t)
(abbreviate-file-name file)))))
(abbreviate-file-name file))))
;; Takes a directory and returns the parent directory.
;; does nothing to `/'. If the ARG is a regular file,

View file

@ -471,7 +471,7 @@ Moves in circular fashion. With numeric prefix arg, skip this many items."
(ediff-next-meta-item1)
(setq overl (ediff-get-meta-overlay-at-pos (point)))
;; skip invisible ones
(while (and overl (ediff-overlay-get overl 'invisible))
(while (and overl (overlay-get overl 'invisible))
(ediff-next-meta-item1)
(setq overl (ediff-get-meta-overlay-at-pos (point)))))))
@ -499,7 +499,7 @@ Moves in circular fashion. With numeric prefix arg, skip this many items."
(ediff-previous-meta-item1)
(setq overl (ediff-get-meta-overlay-at-pos (point)))
;; skip invisible ones
(while (and overl (ediff-overlay-get overl 'invisible))
(while (and overl (overlay-get overl 'invisible))
(ediff-previous-meta-item1)
(setq overl (ediff-get-meta-overlay-at-pos (point)))))))
@ -929,7 +929,7 @@ behavior."
;; in the meta buffer. If nil, use SPC
(defun ediff-replace-session-activity-marker-in-meta-buffer (point new-marker)
(let* ((overl (ediff-get-meta-overlay-at-pos point))
(session-info (ediff-overlay-get overl 'ediff-meta-info))
(session-info (overlay-get overl 'ediff-meta-info))
(activity-marker (ediff-get-session-activity-marker session-info))
buffer-read-only)
(or new-marker activity-marker (setq new-marker ?\s))
@ -944,7 +944,7 @@ behavior."
;; the meta buffer. If nil, use SPC
(defun ediff-replace-session-status-in-meta-buffer (point new-status)
(let* ((overl (ediff-get-meta-overlay-at-pos point))
(session-info (ediff-overlay-get overl 'ediff-meta-info))
(session-info (overlay-get overl 'ediff-meta-info))
(status (ediff-get-session-status session-info))
buffer-read-only)
(setq new-status (or new-status status ?\s))
@ -988,9 +988,7 @@ behavior."
(erase-buffer)
;; delete phony overlays that used to represent sessions before the buff
;; was redrawn
(if (featurep 'xemacs)
(map-extents 'delete-extent)
(mapc #'delete-overlay (overlays-in 1 1)))
(mapc #'delete-overlay (overlays-in 1 1))
(setq regexp (ediff-get-group-regexp meta-list)
merge-autostore-dir
@ -1077,7 +1075,7 @@ behavior."
;; Do hiding
(if overl (ediff-overlay-put overl 'invisible t)))
((and (eq (ediff-get-session-status session-info) ?H)
overl (ediff-overlay-get overl 'invisible))
overl (overlay-get overl 'invisible))
;; Do unhiding
(ediff-overlay-put overl 'invisible nil))
(t (ediff-replace-session-activity-marker-in-meta-buffer
@ -1094,36 +1092,26 @@ behavior."
(defun ediff-update-session-marker-in-dir-meta-buffer (session-num)
(let (buffer-meta-overlays session-info overl buffer-read-only)
(setq overl
(if (featurep 'xemacs)
(map-extents
(lambda (ext _maparg)
(if (and
(ediff-overlay-get ext 'ediff-meta-info)
(eq (ediff-overlay-get ext 'ediff-meta-session-number)
session-num))
ext)))
;; Emacs doesn't have map-extents, so try harder
;; Splice overlay lists to get all buffer overlays
(setq buffer-meta-overlays (overlay-lists)
buffer-meta-overlays (append (car buffer-meta-overlays)
(cdr buffer-meta-overlays)))
(car
(delq nil
(mapcar
(lambda (overl)
(if (and
(ediff-overlay-get overl 'ediff-meta-info)
(eq (ediff-overlay-get
overl 'ediff-meta-session-number)
session-num))
overl))
buffer-meta-overlays)))))
;; Splice overlay lists to get all buffer overlays
(setq buffer-meta-overlays (overlay-lists)
buffer-meta-overlays (append (car buffer-meta-overlays)
(cdr buffer-meta-overlays)))
(setq overl (car
(delq nil
(mapcar
(lambda (overl)
(if (and
(overlay-get overl 'ediff-meta-info)
(eq (overlay-get
overl 'ediff-meta-session-number)
session-num))
overl))
buffer-meta-overlays))))
(or overl
(error
"Bug in ediff-update-session-marker-in-dir-meta-buffer: no overlay with given number %S"
session-num))
(setq session-info (ediff-overlay-get overl 'ediff-meta-info))
(setq session-info (overlay-get overl 'ediff-meta-info))
(goto-char (ediff-overlay-start overl))
(ediff-replace-session-activity-marker-in-meta-buffer
(point)
@ -1434,9 +1422,7 @@ Useful commands:
(erase-buffer)
;; delete phony overlays that used to represent sessions before the buff
;; was redrawn
(if (featurep 'xemacs)
(map-extents 'delete-extent)
(mapc #'delete-overlay (overlays-in 1 1)))
(mapc #'delete-overlay (overlays-in 1 1))
(insert (substitute-command-keys "\
This is a registry of all active Ediff sessions.
@ -1538,7 +1524,7 @@ Useful commands:
;; (SESSION-CTL-BUFFER STATUS OBJA OBJB OBJC)
(defun ediff-set-meta-overlay (b e prop &optional session-number hidden)
(let (overl)
(setq overl (ediff-make-overlay b e))
(setq overl (make-overlay b e))
(ediff-overlay-put overl 'mouse-face 'highlight)
(ediff-overlay-put overl 'ediff-meta-info prop)
(ediff-overlay-put overl 'invisible hidden)
@ -2167,7 +2153,7 @@ all marked sessions must be active."
(ediff-update-markers-in-dir-meta-buffer ediff-meta-list)))
(setq overl (ediff-get-meta-overlay-at-pos (point)))
;; skip the invisible sessions
(while (and overl (ediff-overlay-get overl 'invisible))
(while (and overl (overlay-get overl 'invisible))
(ediff-next-meta-item1)
(setq overl (ediff-get-meta-overlay-at-pos (point))))
))))
@ -2259,21 +2245,17 @@ If this is a session registry buffer then just bury it."
;; If optional NOERROR arg is given, don't report error and return nil if no
;; meta info is found on line.
(defun ediff-get-meta-info (buf point &optional noerror)
(let (result olist tmp)
(let (result olist)
(if (and point (ediff-buffer-live-p buf))
(ediff-with-current-buffer buf
(if (featurep 'xemacs)
(setq result
(if (setq tmp (extent-at point buf 'ediff-meta-info))
(ediff-overlay-get tmp 'ediff-meta-info)))
(setq olist
(mapcar (lambda (elt)
(unless (overlay-get elt 'invisible)
(overlay-get elt 'ediff-meta-info)))
(overlays-at point)))
(while (and olist (null (car olist)))
(setq olist (cdr olist)))
(setq result (car olist)))))
(setq olist
(mapcar (lambda (elt)
(unless (overlay-get elt 'invisible)
(overlay-get elt 'ediff-meta-info)))
(overlays-at point)))
(while (and olist (null (car olist)))
(setq olist (cdr olist)))
(setq result (car olist))))
(or result
(unless noerror
(ediff-update-registry)
@ -2281,21 +2263,19 @@ If this is a session registry buffer then just bury it."
(defun ediff-get-meta-overlay-at-pos (point)
(if (featurep 'xemacs)
(extent-at point (current-buffer) 'ediff-meta-info)
(let* ((overl-list (overlays-at point))
(overl (car overl-list)))
(while (and overl (null (overlay-get overl 'ediff-meta-info)))
(setq overl-list (cdr overl-list)
overl (car overl-list)))
overl)))
(let* ((overl-list (overlays-at point))
(overl (car overl-list)))
(while (and overl (null (overlay-get overl 'ediff-meta-info)))
(setq overl-list (cdr overl-list)
overl (car overl-list)))
overl))
(defun ediff-get-session-number-at-pos (point &optional meta-buffer)
(setq meta-buffer (if (ediff-buffer-live-p meta-buffer)
meta-buffer
(current-buffer)))
(ediff-with-current-buffer meta-buffer
(ediff-overlay-get
(overlay-get
(ediff-get-meta-overlay-at-pos point) 'ediff-meta-session-number)))
@ -2304,46 +2284,29 @@ If this is a session registry buffer then just bury it."
(if (eobp)
(goto-char (point-min))
(let ((overl (ediff-get-meta-overlay-at-pos point)))
(if (featurep 'xemacs)
(progn ; xemacs
(if overl
(setq overl (next-extent overl))
(setq overl (next-extent (current-buffer))))
(if overl
(extent-start-position overl)
(point-max)))
;; emacs
(if overl
;; note: end of current overlay is the beginning of the next one
(overlay-end overl)
(next-overlay-change point))))))
(if overl
;; note: end of current overlay is the beginning of the next one
(overlay-end overl)
(next-overlay-change point)))))
(defun ediff-previous-meta-overlay-start (point)
(if (bobp)
(goto-char (point-max))
(let ((overl (ediff-get-meta-overlay-at-pos point)))
(if (featurep 'xemacs)
(progn
(if overl
(setq overl (previous-extent overl))
(setq overl (previous-extent (current-buffer))))
(if overl
(extent-start-position overl)
(point-min)))
(if overl (setq point (overlay-start overl)))
;; to get to the beginning of prev overlay
(if (not (bobp))
;; trick to overcome an emacs bug--doesn't always find previous
;; overlay change correctly
(setq point (1- point)))
(setq point (previous-overlay-change point))
;; If we are not over an overlay after subtracting 1, it means we are
;; in the description area preceding session records. In this case,
;; goto the top of the registry buffer.
(or (car (overlays-at point))
(setq point (point-min)))
point))))
(if overl (setq point (overlay-start overl)))
;; to get to the beginning of prev overlay
(if (not (bobp))
;; trick to overcome an emacs bug--doesn't always find previous
;; overlay change correctly
(setq point (1- point)))
(setq point (previous-overlay-change point))
;; If we are not over an overlay after subtracting 1, it means we are
;; in the description area preceding session records. In this case,
;; goto the top of the registry buffer.
(or (car (overlays-at point))
(setq point (point-min)))
point)))
(autoload 'ediff-patch-file-internal "ediff-ptch")
@ -2403,10 +2366,10 @@ If this is a session registry buffer then just bury it."
This is used only for sessions that involve 2 or 3 files at the same time.
ACTION is an optional argument that can be ?h, ?m, ?=, to mark for hiding, mark
for operation, or simply indicate which are equal files. If it is nil, then
`(ediff-last-command-char)' is used to decide which action to take."
`last-command-event' is used to decide which action to take."
(interactive)
(if (null action)
(setq action (ediff-last-command-char)))
(setq action last-command-event))
(let ((list (cdr ediff-meta-list))
marked1 marked2 marked3
fileinfo1 fileinfo2 fileinfo3 elt)

View file

@ -48,9 +48,6 @@
(require 'ediff-wind)
(require 'ediff-diff)
(require 'ediff-merg)
;; for compatibility with current stable version of xemacs
(if (featurep 'xemacs)
(require 'ediff-tbar))
;;; Functions
@ -284,9 +281,6 @@ to invocation.")
(make-local-variable 'window-min-height)
(setq window-min-height 2)
(if (featurep 'xemacs)
(make-local-hook 'ediff-after-quit-hook-internal))
;; unwrap set up parameters passed as argument
(while setup-parameters
(set (car (car setup-parameters)) (cdr (car setup-parameters)))
@ -308,9 +302,6 @@ to invocation.")
(if (string-match "buffer" (symbol-name ediff-job-name))
(setq ediff-keep-variants t))
(if (featurep 'xemacs)
(make-local-hook 'pre-command-hook))
(if (ediff-window-display-p)
(add-hook 'pre-command-hook 'ediff-spy-after-mouse nil 'local))
(setq ediff-mouse-pixel-position (mouse-pixel-position))
@ -417,7 +408,6 @@ to invocation.")
;; since these vars are local to control-buffer
;; These won't run if there are errors in diff
(ediff-with-current-buffer ediff-buffer-A
(ediff-nuke-selective-display)
(run-hooks 'ediff-prepare-buffer-hook)
(if (ediff-with-current-buffer control-buffer ediff-merge-job)
(setq buffer-read-only t))
@ -431,7 +421,6 @@ to invocation.")
)
(ediff-with-current-buffer ediff-buffer-B
(ediff-nuke-selective-display)
(run-hooks 'ediff-prepare-buffer-hook)
(if (ediff-with-current-buffer control-buffer ediff-merge-job)
(setq buffer-read-only t))
@ -445,7 +434,6 @@ to invocation.")
(if ediff-3way-job
(ediff-with-current-buffer ediff-buffer-C
(ediff-nuke-selective-display)
;; the merge buffer should never be narrowed
;; (it can happen if it is on rmail-mode or similar)
(if (ediff-with-current-buffer control-buffer ediff-merge-job)
@ -463,7 +451,6 @@ to invocation.")
(if (ediff-buffer-live-p ediff-ancestor-buffer)
(ediff-with-current-buffer ediff-ancestor-buffer
(ediff-nuke-selective-display)
(setq buffer-read-only t)
(run-hooks 'ediff-prepare-buffer-hook)
(or (memq control-buffer ediff-this-buffer-ediff-sessions)
@ -560,9 +547,6 @@ to invocation.")
ediff-wide-display-p))
(set-window-dedicated-p (selected-window) t)
;; In multiframe, toolbar is set in ediff-setup-control-frame
(if (not (ediff-multiframe-setup-p))
(ediff-make-bottom-toolbar)) ; this checks if toolbar is requested
(goto-char (point-min))
(skip-chars-forward ediff-whitespace)))
@ -773,9 +757,7 @@ Reestablish the default window display."
(if (fboundp 'select-frame-set-input-focus)
(select-frame-set-input-focus ediff-control-frame)
(raise-frame ediff-control-frame)
(select-frame ediff-control-frame)
(and (featurep 'xemacs) (fboundp 'focus-frame)
(focus-frame ediff-control-frame))))
(select-frame ediff-control-frame)))
;; Redisplay whatever buffers are showing, if there is a selected difference
(let ((control-frame ediff-control-frame)
@ -831,7 +813,7 @@ Reestablish the default window display."
(if window
(progn
(select-window window)
(ediff-deactivate-mark)
(deactivate-mark)
(ediff-position-region
(ediff-get-diff-posn buf-type 'beg nil control-buf)
(ediff-get-diff-posn buf-type 'end nil control-buf)
@ -1026,7 +1008,7 @@ of the current buffer."
(interactive)
(ediff-barf-if-not-control-buffer)
(let ((ctl-buf (if (null buf) (current-buffer)))
(buf-type (ediff-char-to-buftype (ediff-last-command-char))))
(buf-type (ediff-char-to-buftype last-command-event)))
(or buf (ediff-recenter))
(or buf
(setq buf (ediff-get-buffer buf-type)))
@ -1134,10 +1116,7 @@ of the current buffer."
(and (vc-backend file)
(if (fboundp 'vc-state)
(or (memq (vc-state file) '(edited needs-merge))
(stringp (vc-state file)))
;; XEmacs has no vc-state
(when (featurep 'xemacs) (vc-locking-user file)))
)))
(stringp (vc-state file)))))))
(defun ediff-file-checked-in-p (file)
(and (featurep 'vc-hooks)
@ -1146,10 +1125,7 @@ of the current buffer."
(if (fboundp 'vc-state)
(and
(not (memq (vc-state file) '(edited needs-merge)))
(not (stringp (vc-state file))))
;; XEmacs has no vc-state
(when (featurep 'xemacs) (not (vc-locking-user file))))
))
(not (stringp (vc-state file)))))))
(defun ediff-file-compressed-p (file)
(require 'jka-compr)
@ -1274,7 +1250,6 @@ This is especially useful when comparing buffers side-by-side."
(ediff-with-current-buffer ctl-buf
(modify-frame-parameters
ediff-wide-display-frame ediff-wide-display-orig-parameters)
;;(sit-for (if (featurep 'xemacs) 0.4 0))
;; restore control buf, since ctl window may have been deleted
;; during resizing
(set-buffer ctl-buf)
@ -1282,7 +1257,6 @@ This is especially useful when comparing buffers side-by-side."
ediff-window-B nil) ; force update of window config
(ediff-recenter 'no-rehighlight))
(funcall ediff-make-wide-display-function)
;;(sit-for (if (featurep 'xemacs) 0.4 0))
(ediff-with-current-buffer ctl-buf
(setq ediff-window-B nil) ; force update of window config
(ediff-recenter 'no-rehighlight)))))
@ -1302,8 +1276,6 @@ which see."
(setq window-setup-func #'ediff-setup-windows-plain)
(message "ediff is now in 'plain' mode"))
((eq ediff-window-setup-function #'ediff-setup-windows-plain)
(if (ediff-in-control-buffer-p)
(ediff-kill-bottom-toolbar))
(if (and (ediff-buffer-live-p ediff-control-buffer)
(window-live-p ediff-control-window))
(set-window-dedicated-p ediff-control-window nil))
@ -1342,8 +1314,6 @@ To change the default, set the variable `ediff-use-toolbar-p', which see."
(progn
(or (ediff-window-display-p)
(user-error "Emacs is not running as a window application"))
(if (ediff-use-toolbar-p)
(ediff-kill-bottom-toolbar))
;; do this only after killing the toolbar
(setq ediff-use-toolbar-p (not ediff-use-toolbar-p))
@ -1357,36 +1327,8 @@ To change the default, set the variable `ediff-use-toolbar-p', which see."
(ediff-recenter 'no-rehighlight)))))
;; if was using toolbar, kill it
(defun ediff-kill-bottom-toolbar ()
;; Using ctl-buffer or ediff-control-window for LOCALE does not
;; work properly in XEmacs 19.14: we have to use
;;(selected-frame).
;; The problem with this is that any previous bottom-toolbar
;; will not re-appear after our cleanup here. Is there a way
;; to do "push" and "pop" toolbars ? --marcpa
(if (featurep 'xemacs)
(when (ediff-use-toolbar-p)
(set-specifier bottom-toolbar (list (selected-frame) nil))
(set-specifier bottom-toolbar-visible-p (list (selected-frame) nil)))))
;; If wants to use toolbar, make it.
;; If not, zero the toolbar for XEmacs.
;; Do nothing for Emacs.
(defun ediff-make-bottom-toolbar (&optional frame)
(when (ediff-window-display-p)
(setq frame (or frame (selected-frame)))
(if (featurep 'xemacs)
(cond ((ediff-use-toolbar-p) ; this checks for XEmacs
(set-specifier
bottom-toolbar
(list frame (if (ediff-3way-comparison-job)
ediff-toolbar-3way ediff-toolbar)))
(set-specifier bottom-toolbar-visible-p (list frame t))
(set-specifier bottom-toolbar-height
(list frame ediff-toolbar-height)))
((ediff-has-toolbar-support-p)
(set-specifier bottom-toolbar-height (list frame 0)))))))
(define-obsolete-function-alias 'ediff-kill-bottom-toolbar #'ignore "27.1")
(define-obsolete-function-alias 'ediff-make-bottom-toolbar #'ignore "27.1")
;; Merging
@ -1449,15 +1391,15 @@ Used in ediff-windows/regions only."
'C ediff-visible-bounds))
)
(ediff-with-current-buffer ediff-buffer-A
(if (ediff-overlay-buffer overl-A)
(if (overlay-buffer overl-A)
(narrow-to-region
(ediff-overlay-start overl-A) (ediff-overlay-end overl-A))))
(ediff-with-current-buffer ediff-buffer-B
(if (ediff-overlay-buffer overl-B)
(if (overlay-buffer overl-B)
(narrow-to-region
(ediff-overlay-start overl-B) (ediff-overlay-end overl-B))))
(if (and ediff-3way-job (ediff-overlay-buffer overl-C))
(if (and ediff-3way-job (overlay-buffer overl-C))
(ediff-with-current-buffer ediff-buffer-C
(narrow-to-region
(ediff-overlay-start overl-C) (ediff-overlay-end overl-C))))
@ -1540,7 +1482,7 @@ the one half of the height of window-A."
(error ediff-KILLED-VITAL-BUFFER))
(ediff-operate-on-windows
(if (memq (ediff-last-command-char) '(?v ?\C-v))
(if (memq last-command-event '(?v ?\C-v))
#'scroll-up
#'scroll-down)
;; calculate argument to scroll-up/down
@ -1595,7 +1537,7 @@ the width of the A/B/C windows."
;; interactively so that they set the window's min_hscroll.
;; Otherwise, automatic hscrolling will undo the effect of
;; hscrolling.
(if (= (ediff-last-command-char) ?<)
(if (= last-command-event ?<)
(lambda (arg)
(let ((prefix-arg arg))
(call-interactively #'scroll-left)))
@ -1867,7 +1809,7 @@ With a prefix argument, synchronize all files around the current point position
in the specified buffer."
(interactive "P")
(ediff-barf-if-not-control-buffer)
(let* ((buf-type (ediff-char-to-buftype (ediff-last-command-char)))
(let* ((buf-type (ediff-char-to-buftype last-command-event))
(buffer (ediff-get-buffer buf-type))
(pt (ediff-with-current-buffer buffer (point)))
(diff-no (ediff-diff-at-point buf-type nil (if arg 'after)))
@ -1975,10 +1917,8 @@ determine the source and the target buffers instead of the command keys."
(if (eq arg '-) (setq arg -1)) ; translate neg arg to -1
(if (numberp arg) (ediff-jump-to-difference arg))
(let* ((key1 (aref keys 0))
(key2 (aref keys 1))
(char1 (ediff-event-key key1))
(char2 (ediff-event-key key2))
(let* ((char1 (aref keys 0))
(char2 (aref keys 1))
ediff-verbose-p)
(ediff-copy-diff ediff-current-difference
(ediff-char-to-buftype char1)
@ -2209,7 +2149,7 @@ determine the target buffer instead of `ediff-last-command-char'."
(if (numberp arg)
(ediff-jump-to-difference arg))
(ediff-pop-diff ediff-current-difference
(ediff-char-to-buftype (or key (ediff-last-command-char))))
(ediff-char-to-buftype (or key last-command-event)))
;; recenter with rehighlighting, but no messages
(let (ediff-verbose-p)
(ediff-recenter)))
@ -2233,13 +2173,13 @@ a regular expression typed in by the user."
(cond
((or (and (eq ediff-skip-diff-region-function
ediff-focus-on-regexp-matches-function)
(eq (ediff-last-command-char) ?f))
(eq last-command-event ?f))
(and (eq ediff-skip-diff-region-function
ediff-hide-regexp-matches-function)
(eq (ediff-last-command-char) ?h)))
(eq last-command-event ?h)))
(message "Selective browsing by regexp turned off")
(setq ediff-skip-diff-region-function #'ediff-show-all-diffs))
((eq (ediff-last-command-char) ?h)
((eq last-command-event ?h)
(setq ediff-skip-diff-region-function ediff-hide-regexp-matches-function
regexp-A
(read-string
@ -2277,7 +2217,7 @@ a regular expression typed in by the user."
(or (string= regexp-B "") (setq ediff-regexp-hide-B regexp-B))
(or (string= regexp-C "") (setq ediff-regexp-hide-C regexp-C)))
((eq (ediff-last-command-char) ?f)
((eq last-command-event ?f)
(setq ediff-skip-diff-region-function
ediff-focus-on-regexp-matches-function
regexp-A
@ -2467,12 +2407,12 @@ temporarily reverses the meaning of this variable."
;; Apply selective display to narrow or widen
(ediff-visible-region)
(mapc (lambda (overl)
(if (ediff-overlayp overl)
(ediff-delete-overlay overl)))
(if (overlayp overl)
(delete-overlay overl)))
ediff-wide-bounds)
(mapc (lambda (overl)
(if (ediff-overlayp overl)
(ediff-delete-overlay overl)))
(if (overlayp overl)
(delete-overlay overl)))
ediff-narrow-bounds)
;; restore buffer mode line id's in buffer-A/B/C
@ -2619,10 +2559,6 @@ temporarily reverses the meaning of this variable."
((window-live-p ctl-wind)
(delete-window ctl-wind)))
;; Hide bottom toolbar. --marcpa
(if (not (ediff-multiframe-setup-p))
(ediff-kill-bottom-toolbar))
(ediff-kill-buffer-carefully ctl-buf)
(if (frame-live-p main-frame)
@ -3060,9 +2996,7 @@ Hit \\[ediff-recenter] to reset the windows afterward."
(ediff-get-symbol-from-alist
buf-type ediff-current-diff-overlay-alist))))
(if (featurep 'xemacs)
(ediff-move-overlay current-diff-overlay begin end-hilit)
(ediff-move-overlay current-diff-overlay begin end-hilit buff))
(ediff-move-overlay current-diff-overlay begin end-hilit buff)
(ediff-overlay-put current-diff-overlay 'ediff-diff-num n)
;; unhighlight the background overlay for diff n so it won't
@ -3101,8 +3035,8 @@ Hit \\[ediff-recenter] to reset the windows afterward."
buf-type ediff-current-diff-overlay-alist))
(current-diff-overlay (symbol-value current-diff-overlay-var)))
(ediff-paint-background-regions 'unhighlight)
(if (ediff-overlayp current-diff-overlay)
(ediff-delete-overlay current-diff-overlay))
(if (overlayp current-diff-overlay)
(delete-overlay current-diff-overlay))
(set current-diff-overlay-var nil)
)))
@ -3351,10 +3285,10 @@ Without an argument, it saves customized diff argument, if available
(ediff-barf-if-not-control-buffer)
(ediff-compute-custom-diffs-maybe)
(ediff-with-current-buffer
(cond ((memq (ediff-last-command-char) '(?a ?b ?c))
(cond ((memq last-command-event '(?a ?b ?c))
(ediff-get-buffer
(ediff-char-to-buftype (ediff-last-command-char))))
((eq (ediff-last-command-char) ?d)
(ediff-char-to-buftype last-command-event)))
((eq last-command-event ?d)
(message "Saving diff output ...")
(sit-for 1) ; let the user see the message
(cond ((and arg (ediff-buffer-live-p ediff-diff-buffer))
@ -3440,15 +3374,14 @@ Without an argument, it saves customized diff argument, if available
(defun ediff-make-cloned-buffer (buff region-name)
(ediff-make-indirect-buffer
(make-indirect-buffer
buff (generate-new-buffer-name
(concat (if (stringp buff) buff (buffer-name buff)) region-name))))
(concat (if (stringp buff) buff (buffer-name buff)) region-name))
'clone))
(defun ediff-make-indirect-buffer (base-buf indirect-buf-name)
(if (featurep 'xemacs)
(make-indirect-buffer base-buf indirect-buf-name)
(make-indirect-buffer base-buf indirect-buf-name 'clone)))
(declare (obsolete make-indirect-buffer "27.1"))
(make-indirect-buffer base-buf indirect-buf-name 'clone))
;; This function operates only from an ediff control buffer
@ -3647,14 +3580,8 @@ Ediff Control Panel to restore highlighting."
(defun ediff-remove-flags-from-buffer (buffer overlay)
(ediff-with-current-buffer buffer
(let ((inhibit-read-only t))
(if (featurep 'xemacs)
(ediff-overlay-put overlay 'begin-glyph nil)
(ediff-overlay-put overlay 'before-string nil))
(if (featurep 'xemacs)
(ediff-overlay-put overlay 'end-glyph nil)
(ediff-overlay-put overlay 'after-string nil))
)))
(ediff-overlay-put overlay 'before-string nil)
(ediff-overlay-put overlay 'after-string nil))))
@ -3679,9 +3606,7 @@ Ediff Control Panel to restore highlighting."
ediff-before-flag-bol ediff-before-flag-mol))))
;; insert the flag itself
(if (featurep 'xemacs)
(ediff-overlay-put curr-overl 'begin-glyph flag)
(ediff-overlay-put curr-overl 'before-string flag))
(ediff-overlay-put curr-overl 'before-string flag)
;; insert the flag after the difference
;; `after' must be set here, after the before-flag was inserted
@ -3695,10 +3620,7 @@ Ediff Control Panel to restore highlighting."
ediff-after-flag-eol ediff-after-flag-mol))))
;; insert the flag itself
(if (featurep 'xemacs)
(ediff-overlay-put curr-overl 'end-glyph flag)
(ediff-overlay-put curr-overl 'after-string flag))
))
(ediff-overlay-put curr-overl 'after-string flag)))
;;; Some diff region tests
@ -3758,7 +3680,7 @@ Ediff Control Panel to restore highlighting."
this-command (1+ n) ediff-number-of-differences)
(error ediff-NO-DIFFERENCES)))
(setq diff-overlay (ediff-get-diff-overlay n buf-type)))
(if (not (ediff-buffer-live-p (ediff-overlay-buffer diff-overlay)))
(if (not (ediff-buffer-live-p (overlay-buffer diff-overlay)))
(error ediff-KILLED-VITAL-BUFFER))
(if (eq pos 'beg)
(ediff-overlay-start diff-overlay)
@ -3784,8 +3706,7 @@ Ediff Control Panel to restore highlighting."
(defun ediff-clear-diff-vector (vec-var &optional fine-diffs-also)
(if (vectorp (symbol-value vec-var))
(mapc (lambda (elt)
(ediff-delete-overlay
(ediff-get-diff-overlay-from-diff-record elt))
(delete-overlay (ediff-get-diff-overlay-from-diff-record elt))
(if fine-diffs-also
(ediff-clear-fine-diff-vector elt))
)
@ -3813,19 +3734,11 @@ Ediff Control Panel to restore highlighting."
(setq beg (eval beg)))
(or (number-or-marker-p end)
(setq end (eval end)))
(setq overl
(if (featurep 'xemacs)
(make-extent beg end buff)
;; advance front and rear of the overlay
(make-overlay beg end buff nil 'rear-advance)))
;; advance front and rear of the overlay
(setq overl (make-overlay beg end buff nil 'rear-advance))
;; never detach
(ediff-overlay-put overl 'evaporate nil)
;; make overlay open-ended
;; In emacs, it is made open ended at creation time
(when (featurep 'xemacs)
(ediff-overlay-put overl 'start-open nil)
(ediff-overlay-put overl 'end-open nil))
(ediff-overlay-put overl 'ediff-diff-num 0)
overl))))
@ -3983,7 +3896,7 @@ Ediff Control Panel to restore highlighting."
(defvar ediff-buffer-name)
(let ((reporter-prompt-for-summary-p t)
(ctl-buf ediff-control-buffer)
(ediff-device-type (ediff-device-type))
(ediff-device-type window-system)
varlist salutation ediff-buffer-name)
(setq varlist '(ediff-diff-program ediff-diff-options
ediff-diff3-program ediff-diff3-options
@ -4091,22 +4004,13 @@ Mail anyway? (y or n) ")
)
(defun ediff-deactivate-mark ()
(if (featurep 'xemacs)
(zmacs-deactivate-region)
(deactivate-mark)))
(define-obsolete-function-alias 'ediff-deactivate-mark #'deactivate-mark "27.1")
(defun ediff-activate-mark ()
(if (featurep 'xemacs)
(zmacs-activate-region)
(make-local-variable 'transient-mark-mode)
(setq mark-active 'ediff-util transient-mark-mode t)))
(defun ediff-nuke-selective-display ()
(if (featurep 'xemacs)
(nuke-selective-display)
))
(make-local-variable 'transient-mark-mode)
(setq mark-active 'ediff-util transient-mark-mode t))
(define-obsolete-function-alias 'ediff-nuke-selective-display #'ignore "27.1")
;; The next two are modified versions from emerge.el.
;; VARS must be a list of symbols
@ -4189,9 +4093,6 @@ Mail anyway? (y or n) ")
(interactive)
(ediff-barf-if-not-control-buffer)
(if (featurep 'xemacs)
(make-local-hook 'post-command-hook))
(let ((pre-hook 'pre-command-hook)
(post-hook 'post-command-hook))
(if (not (equal ediff-command-begin-time '(0 0 0)))
@ -4214,7 +4115,7 @@ Mail anyway? (y or n) ")
\t\tState-of-diff:\t %S
\t\tState-of-merge:\t %S
"
(1+ (ediff-overlay-get (aref overl-vec 0) 'ediff-diff-num))
(1+ (overlay-get (aref overl-vec 0) 'ediff-diff-num))
(aref overl-vec 0)
;; fine-diff-vector
(if (= (length (aref overl-vec 1)) 0)

View file

@ -151,10 +151,6 @@ In this case, Ediff will use those frames to display these buffers."
(const :tag "Split horizontally" split-window-horizontally)
function))
;; Definitions hidden from the compiler by compat wrappers.
(declare-function ediff-display-pixel-width "ediff-init")
(declare-function ediff-display-pixel-height "ediff-init")
(defconst ediff-control-frame-parameters
(list
'(name . "Ediff")
@ -179,11 +175,11 @@ In this case, Ediff will use those frames to display these buffers."
;; this blocks queries from window manager as to where to put
;; ediff's control frame. we put the frame outside the display,
;; so the initial frame won't jump all over the screen
(cons 'top (if (fboundp 'ediff-display-pixel-height)
(1+ (ediff-display-pixel-height))
(cons 'top (if (fboundp 'display-pixel-height)
(1+ (display-pixel-height))
3000))
(cons 'left (if (fboundp 'ediff-display-pixel-width)
(1+ (ediff-display-pixel-width))
(cons 'left (if (fboundp 'display-pixel-width)
(1+ (display-pixel-width))
3000))
)
"Frame parameters for displaying Ediff Control Panel.
@ -219,7 +215,7 @@ This is used by the default control frame positioning function,
customization of the default control frame positioning."
:type 'integer)
(defcustom ediff-narrow-control-frame-leftward-shift (if (featurep 'xemacs) 7 3)
(defcustom ediff-narrow-control-frame-leftward-shift 3
"The leftward shift of control frame from the right edge of buf A's frame.
Measured in characters.
This is used by the default control frame positioning function,
@ -276,36 +272,32 @@ into icons, regardless of the window manager."
(let (event)
(message
"Select windows by clicking. Please click on Window %d " wind-number)
(while (not (ediff-mouse-event-p (setq event (ediff-read-event))))
(while (not (ediff-mouse-event-p (setq event (read-event))))
(if (sit-for 1) ; if sequence of events, wait till the final word
(beep 1))
(message "Please click on Window %d " wind-number))
(ediff-read-event) ; discard event
(if (featurep 'xemacs)
(event-window event)
(posn-window (event-start event)))))
(read-event) ; discard event
(posn-window (event-start event))))
;; Select the lowest window on the frame.
(defun ediff-select-lowest-window ()
(if (featurep 'xemacs)
(select-window (frame-lowest-window))
(let* ((lowest-window (selected-window))
(bottom-edge (car (cdr (cdr (cdr (window-edges))))))
(last-window (save-excursion
(other-window -1) (selected-window)))
(window-search t))
(while window-search
(let* ((this-window (next-window))
(next-bottom-edge
(car (cdr (cdr (cdr (window-edges this-window)))))))
(if (< bottom-edge next-bottom-edge)
(setq bottom-edge next-bottom-edge
lowest-window this-window))
(select-window this-window)
(when (eq last-window this-window)
(select-window lowest-window)
(setq window-search nil)))))))
(let* ((lowest-window (selected-window))
(bottom-edge (car (cdr (cdr (cdr (window-edges))))))
(last-window (save-excursion
(other-window -1) (selected-window)))
(window-search t))
(while window-search
(let* ((this-window (next-window))
(next-bottom-edge
(car (cdr (cdr (cdr (window-edges this-window)))))))
(if (< bottom-edge next-bottom-edge)
(setq bottom-edge next-bottom-edge
lowest-window this-window))
(select-window this-window)
(when (eq last-window this-window)
(select-window lowest-window)
(setq window-search nil))))))
;;; Common window setup routines
@ -379,11 +371,6 @@ into icons, regardless of the window manager."
(switch-to-buffer buf-A)
(setq wind-A (selected-window))
;; XEmacs used to have a lot of trouble with display
;; It did't set things right unless we tell it to sit still
;; 19.12 seems ok.
;;(if (featurep 'xemacs) (sit-for 0))
(split-window-vertically (max 2 (- (window-height) merge-window-lines)))
(if (eq (selected-window) wind-A)
(other-window 1))
@ -456,11 +443,6 @@ into icons, regardless of the window manager."
(window-width wind-A))
3)))
;; XEmacs used to have a lot of trouble with display
;; It did't set things right unless we told it to sit still
;; 19.12 seems ok.
;;(if (featurep 'xemacs) (sit-for 0))
(funcall split-window-function wind-width-or-height)
(if (eq (selected-window) wind-A)
@ -935,8 +917,6 @@ create a new splittable frame if none is found."
(not (ediff-frame-has-dedicated-windows (window-frame wind)))
)))
(declare-function ediff-make-bottom-toolbar "ediff-util" (&optional frame))
;; Prepare or refresh control frame
(defun ediff-setup-control-frame (ctl-buffer designated-minibuffer-frame)
(let ((window-min-height 1)
@ -946,8 +926,6 @@ create a new splittable frame if none is found."
fheight fwidth adjusted-parameters)
(with-current-buffer ctl-buffer
(if (and (featurep 'xemacs) (featurep 'menubar))
(set-buffer-menubar nil))
;;(setq user-grabbed-mouse (ediff-user-grabbed-mouse))
(run-hooks 'ediff-before-setup-control-frame-hook))
@ -1007,18 +985,6 @@ create a new splittable frame if none is found."
'(auto-raise . t))
adjusted-parameters))
;; In XEmacs, buffer menubar needs to be killed before frame parameters
;; are changed.
(if (ediff-has-toolbar-support-p)
(when (featurep 'xemacs)
(if (ediff-has-gutter-support-p)
(set-specifier top-gutter (list ctl-frame nil)))
(sit-for 0)
(set-specifier top-toolbar-height (list ctl-frame 0))
;;(set-specifier bottom-toolbar-height (list ctl-frame 0))
(set-specifier left-toolbar-width (list ctl-frame 0))
(set-specifier right-toolbar-width (list ctl-frame 0))))
;; As a precaution, we call modify frame parameters twice, in
;; order to make sure that at least once we do it for
;; a non-iconified frame. (It appears that in the Windows port of
@ -1026,9 +992,6 @@ create a new splittable frame if none is found."
(if (eq system-type 'windows-nt)
(modify-frame-parameters ctl-frame adjusted-parameters))
;; make or zap toolbar (if not requested)
(ediff-make-bottom-toolbar ctl-frame)
(goto-char (point-min))
(modify-frame-parameters ctl-frame adjusted-parameters)
@ -1070,12 +1033,6 @@ create a new splittable frame if none is found."
(or (eq this-command 'ediff-quit)
(not (eq ediff-grab-mouse t)))))
(when (featurep 'xemacs)
(with-current-buffer ctl-buffer
(make-local-hook 'select-frame-hook)
(add-hook 'select-frame-hook
#'ediff-xemacs-select-frame-hook nil 'local)))
(with-current-buffer ctl-buffer
(run-hooks 'ediff-after-setup-control-frame-hook))))
@ -1084,8 +1041,6 @@ create a new splittable frame if none is found."
(ediff-with-current-buffer ctl-buffer
(if (and (ediff-window-display-p) (frame-live-p ediff-control-frame))
(let ((ctl-frame ediff-control-frame))
(if (and (featurep 'xemacs) (featurep 'menubar))
(set-buffer-menubar default-menubar))
(setq ediff-control-frame nil)
(delete-frame ctl-frame))))
(if ediff-multiframe
@ -1117,23 +1072,23 @@ create a new splittable frame if none is found."
ctl-frame-left
(+ frame-A-left
(if ediff-use-long-help-message
(* (ediff-frame-char-width ctl-frame)
(* (frame-char-width ctl-frame)
(+ ediff-wide-control-frame-rightward-shift
horizontal-adjustment))
(- (* frame-A-width (ediff-frame-char-width frame-A))
(* (ediff-frame-char-width ctl-frame)
(- (* frame-A-width (frame-char-width frame-A))
(* (frame-char-width ctl-frame)
(+ ctl-frame-width
ediff-narrow-control-frame-leftward-shift
horizontal-adjustment))))))
(setq ctl-frame-top
(min ctl-frame-top
(- (ediff-display-pixel-height)
(- (display-pixel-height)
(* 2 ctl-frame-height
(ediff-frame-char-height ctl-frame))))
(frame-char-height ctl-frame))))
ctl-frame-left
(min ctl-frame-left
(- (ediff-display-pixel-width)
(* ctl-frame-width (ediff-frame-char-width ctl-frame)))))
(- (display-pixel-width)
(* ctl-frame-width (frame-char-width ctl-frame)))))
;; keep ctl frame within the visible bounds
(setq ctl-frame-top (max ctl-frame-top 1)
ctl-frame-left (max ctl-frame-left 1))
@ -1153,12 +1108,12 @@ Saves the old frame parameters in `ediff-wide-display-orig-parameters'.
The frame to be resized is kept in `ediff-wide-display-frame'.
This function modifies only the left margin and the width of the display.
It assumes that it is called from within the control buffer."
(if (not (fboundp 'ediff-display-pixel-width))
(if (not (fboundp 'display-pixel-width))
(user-error "Can't determine display width"))
(let* ((frame-A (window-frame ediff-window-A))
(frame-A-params (frame-parameters frame-A))
(cw (ediff-frame-char-width frame-A))
(wd (- (/ (ediff-display-pixel-width) cw) 5)))
(cw (frame-char-width frame-A))
(wd (- (/ (display-pixel-width) cw) 5)))
(setq ediff-wide-display-orig-parameters
(list (cons 'left (max 0 (eval (cdr (assoc 'left frame-A-params)))))
(cons 'width (cdr (assoc 'width frame-A-params))))
@ -1300,9 +1255,7 @@ It assumes that it is called from within the control buffer."
;; If buff is not live, return nil
(defun ediff-get-visible-buffer-window (buff)
(if (ediff-buffer-live-p buff)
(if (featurep 'xemacs)
(get-buffer-window buff t)
(get-buffer-window buff 'visible))))
(get-buffer-window buff 'visible)))
;;; Functions to decide when to redraw windows

View file

@ -1541,9 +1541,7 @@ arguments after setting up the Ediff buffers."
"Return string describing the version of Ediff.
When called interactively, displays the version."
(interactive)
(if (if (featurep 'xemacs)
(interactive-p)
(called-interactively-p 'interactive))
(if (called-interactively-p 'interactive)
(message "%s" (ediff-version))
(format "Ediff %s" ediff-version)))
@ -1562,7 +1560,7 @@ With optional NODE, goes to that node."
(condition-case nil
(progn
(pop-to-buffer (get-buffer-create "*info*"))
(info (if (featurep 'xemacs) "ediff.info" "ediff"))
(info "ediff")
(if node
(Info-goto-node node)
(message "Type `i' to search for a specific topic"))