X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/cce7d53002e8abc346b67ea4100507b0e7c4d68e..75f777b64751771ab8bfe3a3548987bb05974a3f:/lisp/vc/emerge.el diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el index ee34944e44..af13665fc2 100644 --- a/lisp/vc/emerge.el +++ b/lisp/vc/emerge.el @@ -39,13 +39,13 @@ (defmacro emerge-defvar-local (var value doc) "Defines SYMBOL as an advertised variable. Performs a defvar, then executes `make-variable-buffer-local' on -the variable. Also sets the `preserved' property, so that +the variable. Also sets the `permanent-local' property, so that `kill-all-local-variables' (called by major-mode setting commands) won't destroy Emerge control variables." `(progn (defvar ,var ,value ,doc) (make-variable-buffer-local ',var) - (put ',var 'preserved t))) + (put ',var 'permanent-local t))) ;; Add entries to minor-mode-alist so that emerge modes show correctly (defvar emerge-minor-modes-list @@ -76,18 +76,6 @@ Commands: Commands must be prefixed by \\\\[emerge-basic-keymap] in `edit' mode, but can be invoked directly in `fast' mode.") -(define-obsolete-variable-alias 'emerge-version 'emacs-version "23.2") - -(defun emerge-version () - "Return string describing the version of Emerge. -When called interactively, displays the version." - (interactive) - (if (called-interactively-p 'interactive) - (message "Emerge version %s" emacs-version) - emacs-version)) - -(make-obsolete 'emerge-version 'emacs-version "23.2") - ;;; Emerge configuration variables (defgroup emerge nil @@ -524,10 +512,10 @@ replaced by emerge-fast-keymap.") (emerge-defvar-local emerge-old-keymap nil "The original local keymap for the merge buffer.") (emerge-defvar-local emerge-auto-advance nil - "*If non-nil, emerge-select-A and emerge-select-B automatically advance to + "If non-nil, emerge-select-A and emerge-select-B automatically advance to the next difference.") (emerge-defvar-local emerge-skip-prefers nil - "*If non-nil, differences for which there is a preference are automatically + "If non-nil, differences for which there is a preference are automatically skipped.") (emerge-defvar-local emerge-quit-hook nil "Hooks to run in the merge buffer after the merge has been finished. @@ -861,7 +849,7 @@ This is *not* a user option, since Emerge uses it for its own processing.") ;;; Functions to start Emerge on files ;;;###autoload -(defun emerge-files (arg file-A file-B file-out &optional startup-hooks +(defun emerge-files (_arg file-A file-B file-out &optional startup-hooks quit-hooks) "Run Emerge on two files." (interactive @@ -881,7 +869,7 @@ This is *not* a user option, since Emerge uses it for its own processing.") file-out)) ;;;###autoload -(defun emerge-files-with-ancestor (arg file-A file-B file-ancestor file-out +(defun emerge-files-with-ancestor (_arg file-A file-B file-ancestor file-out &optional startup-hooks quit-hooks) "Run Emerge on two files, giving another file as the ancestor." (interactive @@ -1075,7 +1063,7 @@ This is *not* a user option, since Emerge uses it for its own processing.") quit-hooks))) (defun emerge-revisions-internal (file revision-A revision-B &optional - startup-hooks quit-hooks output-file) + startup-hooks quit-hooks _output-file) (let ((buffer-A (get-buffer-create (format "%s,%s" file revision-A))) (buffer-B (get-buffer-create (format "%s,%s" file revision-B))) (emerge-file-A (emerge-make-temp-file "A")) @@ -1271,10 +1259,10 @@ Otherwise, the A or B file present is copied to the output file." (defun emerge-merge-directories (a-dir b-dir ancestor-dir output-dir) (interactive (list - (read-file-name "A directory: " nil nil 'confirm) - (read-file-name "B directory: " nil nil 'confirm) - (read-file-name "Ancestor directory (null for none): " nil nil 'confirm) - (read-file-name "Output directory (null for none): " nil nil 'confirm))) + (read-directory-name "A directory: " nil nil 'confirm) + (read-directory-name "B directory: " nil nil 'confirm) + (read-directory-name "Ancestor directory (null for none): " nil nil 'confirm) + (read-directory-name "Output directory (null for none): " nil nil 'confirm))) ;; Check that we're not on a line (if (not (and (bolp) (eolp))) (error "There is text on this line")) @@ -1354,8 +1342,8 @@ Otherwise, the A or B file present is copied to the output file." (delete-other-windows) (switch-to-buffer merge-buffer) (emerge-refresh-mode-line) - (split-window-vertically) - (split-window-horizontally) + (split-window-below) + (split-window-right) (switch-to-buffer buffer-A) (if pos (goto-char (point-min))) @@ -1754,7 +1742,7 @@ to the left margin, if they are in windows." ;; If there are min-lines lines above and below the region, then don't do ;; anything. ;; If not, recenter the region to make it so. -;; If that isn't possible, remove context lines balancedly from top and bottom +;; If that isn't possible, remove context lines evenly from top and bottom ;; so the entire region shows. ;; If that isn't possible, show the top of the region. ;; BEG must be at the beginning of a line. @@ -1782,7 +1770,7 @@ to the left margin, if they are in windows." (setq lines (1+ lines))) ;; And position the beginning on the right line (goto-char beg) - (recenter (/ (1+ (- (1- (window-height (selected-window))) + (recenter (/ (1+ (- (1- (window-height)) lines)) 2)))))) (goto-char pos)) @@ -2121,7 +2109,7 @@ Use C-u l to reset the windows afterward." (delete-other-windows) (let ((temp-buffer-show-function (lambda (buf) - (split-window-vertically) + (split-window-below) (switch-to-buffer buf) (other-window 1)))) (with-output-to-temp-buffer "*Help*" @@ -3176,21 +3164,26 @@ See also `auto-save-file-name-p'." ;; Metacharacters that have to be protected from the shell when executing ;; a diff/diff3 command. -(defcustom emerge-metachars "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]" - "Characters that must be quoted with \\ when used in a shell command line. +(defcustom emerge-metachars + (if (memq system-type '(ms-dos windows-nt)) + "[ \t\"<>|?*^&=]" + "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]") + "Characters that must be quoted when used in a shell command line. More precisely, a [...] regexp to match any one such character." :type 'regexp :group 'emerge) ;; Quote metacharacters (using \) when executing a diff/diff3 command. (defun emerge-protect-metachars (s) - (let ((limit 0)) - (while (string-match emerge-metachars s limit) - (setq s (concat (substring s 0 (match-beginning 0)) - "\\" - (substring s (match-beginning 0)))) - (setq limit (1+ (match-end 0))))) - s) + (if (memq system-type '(ms-dos windows-nt)) + (shell-quote-argument s) + (let ((limit 0)) + (while (string-match emerge-metachars s limit) + (setq s (concat (substring s 0 (match-beginning 0)) + "\\" + (substring s (match-beginning 0)))) + (setq limit (1+ (match-end 0))))) + s)) (provide 'emerge)