Mercurial > emacs
diff lisp/ediff-util.el @ 33019:6306740f6938
2000-10-29 Michael Kifer <kifer@cs.sunysb.edu>
* viper-cmd.el (viper-preserve-cursor-color): new test that avoids
rewrawing the screen when changing cursor color.
(viper-insert-state-pre-command-sentinel,
viper-replace-state-pre-command-sentinel,
viper-replace-state-post-command-sentinel): use
viper-preserve-cursor-color.
Many functions changed to use viper= instead of = when comparing
characters.
* viper-util.el (viper-memq-char,viper=): new functions for
working with characters.
(viper-change-cursor-color): fixed buglet.
Many functions changed to use viper= instead of = when comparing
characters.
* viper.el (viper-insert-state-mode-list): added eshell.
* ediff-init.el (ediff-before-setup-hook): new hook.
Several typos fixed in various docstrings.
* ediff-merg.el (ediff-show-clashes-only): docstring typo fixed.
* ediff-nult.el (ediff-before-session-group-setup-hooks): new
hook.
(ediff-show-meta-buffer): run ediff-before-session-group-setup-hooks.
* ediff-util.el (ediff-setup): run ediff-before-setup-hook.
(ediff-other-buffer): use selected buffers if in Buffer-menu buffer.
(ediff-get-selected-buffers): new function.
* ediff-vers.el (ediff-vc-internal,ediff-rcs-internal,
ediff-vc-merge-internal,ediff-rcs-merge-internal): use
save-window-excursion.
* ediff-wind.el (ediff-skip-unsuitable-frames): more robust
termination check in while loop.
* ediff.el (ediff-get-default-file-name): better defaults when in
dired buffer.
(ediff-files,ediff-merge-files,ediff-files3,
ediff-merge-files-with-ancestor): use ediff-get-default-file-name.
author | Michael Kifer <kifer@cs.stonybrook.edu> |
---|---|
date | Sun, 29 Oct 2000 04:56:45 +0000 |
parents | 4f315ca65976 |
children | 25fb6fc4f66b |
line wrap: on
line diff
--- a/lisp/ediff-util.el Sat Oct 28 21:30:03 2000 +0000 +++ b/lisp/ediff-util.el Sun Oct 29 04:56:45 2000 +0000 @@ -254,6 +254,7 @@ (defun ediff-setup (buffer-A file-A buffer-B file-B buffer-C file-C startup-hooks setup-parameters &optional merge-buffer-file) + (run-hooks 'ediff-before-setup-hook) ;; ediff-convert-standard-filename puts file names in the form appropriate ;; for the OS at hand. (setq file-A (ediff-convert-standard-filename (expand-file-name file-A))) @@ -955,7 +956,7 @@ (defun ediff-make-or-kill-fine-diffs (arg) "Compute fine diffs. With negative prefix arg, kill fine diffs. -In both cases, operates on the currrent difference region." +In both cases, operates on the current difference region." (interactive "P") (ediff-barf-if-not-control-buffer) (cond ((eq arg '-) @@ -3459,7 +3460,11 @@ ;; EXCL-BUFF-LIST is an exclusion list. (defun ediff-other-buffer (excl-buff-lst) (or (listp excl-buff-lst) (setq excl-buff-lst (list excl-buff-lst))) - (let* ((all-buffers (buffer-list)) + (let* ((all-buffers (nconc (ediff-get-selected-buffers) (buffer-list))) + ;; we compute this the second time because we need to do memq on it + ;; later, and nconc above will break it. Either this or use slow + ;; append instead of nconc + (selected-buffers (ediff-get-selected-buffers)) (prefered-buffer (car all-buffers)) visible-dired-buffers (excl-buff-name-list @@ -3488,33 +3493,34 @@ (mapcar (lambda (x) (cond ((member (buffer-name x) excl-buff-name-list) nil) - ((not (ediff-get-visible-buffer-window x)) nil) - ((eq x prefered-buffer) x) - ;; if prev selected buffer is dired, look only at - ;; dired. - ((eq use-dired-major-mode 'yes) - (if (eq (ediff-with-current-buffer x major-mode) - 'dired-mode) - x nil)) - ((eq (ediff-with-current-buffer x major-mode) - 'dired-mode) - (if (null use-dired-major-mode) - ;; don't know if we must enforce dired. - ;; Remember this buffer in case - ;; dired buffs are the only ones visible. - (setq visible-dired-buffers - (cons x visible-dired-buffers))) - ;; skip, if dired is not forced - nil) - ((memq (ediff-with-current-buffer x major-mode) - '(rmail-mode - vm-mode - gnus-article-mode - mh-show-mode)) - x) - ((string-match "^[ *]" (buffer-name x)) nil) - ((string= "*scratch*" (buffer-name x)) nil) - (t x))) + ((memq x selected-buffers) x) + ((not (ediff-get-visible-buffer-window x)) nil) + ((eq x prefered-buffer) x) + ;; if prev selected buffer is dired, look only at + ;; dired. + ((eq use-dired-major-mode 'yes) + (if (eq (ediff-with-current-buffer x major-mode) + 'dired-mode) + x nil)) + ((eq (ediff-with-current-buffer x major-mode) + 'dired-mode) + (if (null use-dired-major-mode) + ;; don't know if we must enforce dired. + ;; Remember this buffer in case + ;; dired buffs are the only ones visible. + (setq visible-dired-buffers + (cons x visible-dired-buffers))) + ;; skip, if dired is not forced + nil) + ((memq (ediff-with-current-buffer x major-mode) + '(rmail-mode + vm-mode + gnus-article-mode + mh-show-mode)) + x) + ((string-match "^[ *]" (buffer-name x)) nil) + ((string= "*scratch*" (buffer-name x)) nil) + (t x))) all-buffers)) (clean-significant-buffers (delq nil significant-buffers)) less-significant-buffers) @@ -3547,6 +3553,23 @@ (t "*scratch*")) )) + +;; If current buffer is a Buffer-menu buffer, then take the selected buffers +;; and append the buffer at the cursor to the end. +;; This list would be the preferred list. +(defun ediff-get-selected-buffers () + (if (eq major-mode 'Buffer-menu-mode) + (let ((lis (condition-case nil + (list (Buffer-menu-buffer t)) + (error)) + )) + (save-excursion + (goto-char (point-max)) + (while (search-backward "\n>" nil t) + (forward-char 1) + (setq lis (cons (Buffer-menu-buffer t) lis))) + lis)) + )) ;; Construct a unique buffer name. ;; The first one tried is prefixsuffix, then prefix<2>suffix,