comparison 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
comparison
equal deleted inserted replaced
33018:d9abb0441663 33019:6306740f6938
252 ;; STARTUP-HOOKS, but these parameters are set in the new control buffer right 252 ;; STARTUP-HOOKS, but these parameters are set in the new control buffer right
253 ;; after this buf is created and before any windows are set and such. 253 ;; after this buf is created and before any windows are set and such.
254 (defun ediff-setup (buffer-A file-A buffer-B file-B buffer-C file-C 254 (defun ediff-setup (buffer-A file-A buffer-B file-B buffer-C file-C
255 startup-hooks setup-parameters 255 startup-hooks setup-parameters
256 &optional merge-buffer-file) 256 &optional merge-buffer-file)
257 (run-hooks 'ediff-before-setup-hook)
257 ;; ediff-convert-standard-filename puts file names in the form appropriate 258 ;; ediff-convert-standard-filename puts file names in the form appropriate
258 ;; for the OS at hand. 259 ;; for the OS at hand.
259 (setq file-A (ediff-convert-standard-filename (expand-file-name file-A))) 260 (setq file-A (ediff-convert-standard-filename (expand-file-name file-A)))
260 (setq file-B (ediff-convert-standard-filename (expand-file-name file-B))) 261 (setq file-B (ediff-convert-standard-filename (expand-file-name file-B)))
261 (if (stringp file-C) 262 (if (stringp file-C)
953 (raise-frame (window-frame wind))) 954 (raise-frame (window-frame wind)))
954 (t (set-window-buffer ediff-window-C ediff-ancestor-buffer))))) 955 (t (set-window-buffer ediff-window-C ediff-ancestor-buffer)))))
955 956
956 (defun ediff-make-or-kill-fine-diffs (arg) 957 (defun ediff-make-or-kill-fine-diffs (arg)
957 "Compute fine diffs. With negative prefix arg, kill fine diffs. 958 "Compute fine diffs. With negative prefix arg, kill fine diffs.
958 In both cases, operates on the currrent difference region." 959 In both cases, operates on the current difference region."
959 (interactive "P") 960 (interactive "P")
960 (ediff-barf-if-not-control-buffer) 961 (ediff-barf-if-not-control-buffer)
961 (cond ((eq arg '-) 962 (cond ((eq arg '-)
962 (ediff-clear-fine-differences ediff-current-difference)) 963 (ediff-clear-fine-differences ediff-current-difference))
963 ((and (numberp arg) (< arg 0)) 964 ((and (numberp arg) (< arg 0))
3457 ;; Gets one arg--buffer name or a list of buffer names (it won't return 3458 ;; Gets one arg--buffer name or a list of buffer names (it won't return
3458 ;; these buffers). 3459 ;; these buffers).
3459 ;; EXCL-BUFF-LIST is an exclusion list. 3460 ;; EXCL-BUFF-LIST is an exclusion list.
3460 (defun ediff-other-buffer (excl-buff-lst) 3461 (defun ediff-other-buffer (excl-buff-lst)
3461 (or (listp excl-buff-lst) (setq excl-buff-lst (list excl-buff-lst))) 3462 (or (listp excl-buff-lst) (setq excl-buff-lst (list excl-buff-lst)))
3462 (let* ((all-buffers (buffer-list)) 3463 (let* ((all-buffers (nconc (ediff-get-selected-buffers) (buffer-list)))
3464 ;; we compute this the second time because we need to do memq on it
3465 ;; later, and nconc above will break it. Either this or use slow
3466 ;; append instead of nconc
3467 (selected-buffers (ediff-get-selected-buffers))
3463 (prefered-buffer (car all-buffers)) 3468 (prefered-buffer (car all-buffers))
3464 visible-dired-buffers 3469 visible-dired-buffers
3465 (excl-buff-name-list 3470 (excl-buff-name-list
3466 (mapcar 3471 (mapcar
3467 (lambda (b) (cond ((stringp b) b) 3472 (lambda (b) (cond ((stringp b) b)
3486 ;; clicked on it or did something to distinguish it). 3491 ;; clicked on it or did something to distinguish it).
3487 (significant-buffers 3492 (significant-buffers
3488 (mapcar 3493 (mapcar
3489 (lambda (x) 3494 (lambda (x)
3490 (cond ((member (buffer-name x) excl-buff-name-list) nil) 3495 (cond ((member (buffer-name x) excl-buff-name-list) nil)
3491 ((not (ediff-get-visible-buffer-window x)) nil) 3496 ((memq x selected-buffers) x)
3492 ((eq x prefered-buffer) x) 3497 ((not (ediff-get-visible-buffer-window x)) nil)
3493 ;; if prev selected buffer is dired, look only at 3498 ((eq x prefered-buffer) x)
3494 ;; dired. 3499 ;; if prev selected buffer is dired, look only at
3495 ((eq use-dired-major-mode 'yes) 3500 ;; dired.
3496 (if (eq (ediff-with-current-buffer x major-mode) 3501 ((eq use-dired-major-mode 'yes)
3497 'dired-mode) 3502 (if (eq (ediff-with-current-buffer x major-mode)
3498 x nil)) 3503 'dired-mode)
3499 ((eq (ediff-with-current-buffer x major-mode) 3504 x nil))
3500 'dired-mode) 3505 ((eq (ediff-with-current-buffer x major-mode)
3501 (if (null use-dired-major-mode) 3506 'dired-mode)
3502 ;; don't know if we must enforce dired. 3507 (if (null use-dired-major-mode)
3503 ;; Remember this buffer in case 3508 ;; don't know if we must enforce dired.
3504 ;; dired buffs are the only ones visible. 3509 ;; Remember this buffer in case
3505 (setq visible-dired-buffers 3510 ;; dired buffs are the only ones visible.
3506 (cons x visible-dired-buffers))) 3511 (setq visible-dired-buffers
3507 ;; skip, if dired is not forced 3512 (cons x visible-dired-buffers)))
3508 nil) 3513 ;; skip, if dired is not forced
3509 ((memq (ediff-with-current-buffer x major-mode) 3514 nil)
3510 '(rmail-mode 3515 ((memq (ediff-with-current-buffer x major-mode)
3511 vm-mode 3516 '(rmail-mode
3512 gnus-article-mode 3517 vm-mode
3513 mh-show-mode)) 3518 gnus-article-mode
3514 x) 3519 mh-show-mode))
3515 ((string-match "^[ *]" (buffer-name x)) nil) 3520 x)
3516 ((string= "*scratch*" (buffer-name x)) nil) 3521 ((string-match "^[ *]" (buffer-name x)) nil)
3517 (t x))) 3522 ((string= "*scratch*" (buffer-name x)) nil)
3523 (t x)))
3518 all-buffers)) 3524 all-buffers))
3519 (clean-significant-buffers (delq nil significant-buffers)) 3525 (clean-significant-buffers (delq nil significant-buffers))
3520 less-significant-buffers) 3526 less-significant-buffers)
3521 3527
3522 (if (and (null clean-significant-buffers) 3528 (if (and (null clean-significant-buffers)
3545 all-buffers))) 3551 all-buffers)))
3546 (car less-significant-buffers)) 3552 (car less-significant-buffers))
3547 (t "*scratch*")) 3553 (t "*scratch*"))
3548 )) 3554 ))
3549 3555
3556
3557 ;; If current buffer is a Buffer-menu buffer, then take the selected buffers
3558 ;; and append the buffer at the cursor to the end.
3559 ;; This list would be the preferred list.
3560 (defun ediff-get-selected-buffers ()
3561 (if (eq major-mode 'Buffer-menu-mode)
3562 (let ((lis (condition-case nil
3563 (list (Buffer-menu-buffer t))
3564 (error))
3565 ))
3566 (save-excursion
3567 (goto-char (point-max))
3568 (while (search-backward "\n>" nil t)
3569 (forward-char 1)
3570 (setq lis (cons (Buffer-menu-buffer t) lis)))
3571 lis))
3572 ))
3550 3573
3551 ;; Construct a unique buffer name. 3574 ;; Construct a unique buffer name.
3552 ;; The first one tried is prefixsuffix, then prefix<2>suffix, 3575 ;; The first one tried is prefixsuffix, then prefix<2>suffix,
3553 ;; prefix<3>suffix, etc. 3576 ;; prefix<3>suffix, etc.
3554 (defun ediff-unique-buffer-name (prefix suffix) 3577 (defun ediff-unique-buffer-name (prefix suffix)