Mercurial > emacs
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) |