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:
parent
9cf8454463
commit
3c1635ebf2
8 changed files with 342 additions and 695 deletions
|
@ -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.")
|
||||
|
|
|
@ -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))))
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"))
|
||||
|
|
Loading…
Add table
Reference in a new issue