X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/e2504204dc392fc9f87b788fdcc5d4043a644f2d..e1775344cd4f67baa168a3149870edb0cf6e5b67:/lisp/simple.el diff --git a/lisp/simple.el b/lisp/simple.el index bdacf04b1d..aba6583b34 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -926,7 +926,10 @@ In either case, the output is inserted after point (leaving mark after it)." (buffer-substring (point) (progn (end-of-line) (point)))))) (t - (set-window-start (display-buffer buffer) 1)))))))) + (save-excursion + (set-buffer buffer) + (goto-char (point-min))) + (display-buffer buffer)))))))) (defconst universal-argument-map (let ((map (make-sparse-keymap))) @@ -1557,7 +1560,7 @@ In Transient Mark mode, this does not activate the mark." (move-marker (car (nthcdr global-mark-ring-max global-mark-ring)) nil) (setcdr (nthcdr (1- global-mark-ring-max) global-mark-ring) nil)))) - (or nomsg executing-macro (> (minibuffer-depth) 0) + (or nomsg executing-kbd-macro (> (minibuffer-depth) 0) (message "Mark set")) (if (or activate (not transient-mark-mode)) (set-mark (mark t))) @@ -2449,10 +2452,16 @@ automatically breaks the line at a previous space." (auto-fill-mode 1)) (defun set-fill-column (arg) - "Set `fill-column' to current column, or to argument if given. -The variable `fill-column' has a separate value for each buffer." + "Set `fill-column' to specified argument. +Just \\[universal-argument] as argument means to use the current column." (interactive "P") - (setq fill-column (if (integerp arg) arg (current-column))) + (cond ((integerp arg) + (setq fill-column arg)) + ((consp arg) + (setq fill-column (current-column))) + ;; Disallow missing argument; it's probably a typo for C-x C-f. + (t + (error "set-fill-column requires an explicit argument"))) (message "fill-column set to %d" fill-column)) (defconst comment-multi-line nil @@ -2921,6 +2930,9 @@ With prefix argument N, move N items (negative N means move backward)." ;; Switch to BUFFER and insert the completion choice CHOICE. ;; BASE-SIZE, if non-nil, says how many characters of BUFFER's text ;; to keep. If it is nil, use choose-completion-delete-max-match instead. + +;; If BUFFER is the minibuffer, exit the minibuffer +;; unless it is reading a file name and CHOICE is a directory. (defun choose-completion-string (choice &optional buffer base-size) (let ((buffer (or buffer completion-reference-buffer))) ;; If BUFFER is a minibuffer, barf unless it's the currently @@ -2944,7 +2956,12 @@ With prefix argument N, move N items (negative N means move backward)." ;; If completing for the minibuffer, exit it with this choice. (and (equal buffer (window-buffer (minibuffer-window))) minibuffer-completion-table - (exit-minibuffer))))) + ;; If this is reading a file name, and the file name chosen + ;; is a directory, don't exit the minibuffer. + (if (and (eq minibuffer-completion-table 'read-file-name-internal) + (file-directory-p (buffer-string))) + (select-window (active-minibuffer-window)) + (exit-minibuffer)))))) (defun completion-list-mode () "Major mode for buffers showing lists of possible completions.