X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a10eb168cc96db9f0dab2d75550cbd8f08be2363..058e8562775571790e48b1614e84a9617a9e1e17:/lisp/simple.el diff --git a/lisp/simple.el b/lisp/simple.el index 849cbd6863..bc3e7b83b8 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1420,10 +1420,11 @@ If nil, don't change the value of `debug-on-error'." :version "21.1") (defun eval-expression-print-format (value) - "Format VALUE as a result of evaluated expression. -Return a formatted string which is displayed in the echo area -in addition to the value printed by prin1 in functions which -display the result of expression evaluation." + "If VALUE in an integer, return a specially formatted string. +This string will typically look like \" (#o1, #x1, ?\\C-a)\". +If VALUE is not an integer, nil is returned. +This function is used by functions like `prin1' that display the +result of expression evaluation." (if (and (integerp value) (or (eq standard-output t) (zerop (prefix-numeric-value current-prefix-arg)))) @@ -1634,6 +1635,12 @@ If the value is non-nil and not a number, we wait 2 seconds." (integer :tag "time" 2) (other :tag "on"))) +(defcustom extended-command-suggest-shorter t + "If non-nil, show a shorter M-x invocation when there is one." + :group 'keyboard + :type 'boolean + :version "25.2") + (defun execute-extended-command--shorter-1 (name length) (cond ((zerop length) (list "")) @@ -1716,7 +1723,8 @@ invoking, give a prefix argument to `execute-extended-command'." ((numberp suggest-key-bindings) suggest-key-bindings) (t 2)))))) (when (and waited (not (consp unread-command-events))) - (unless (or binding executing-kbd-macro (not (symbolp function)) + (unless (or (not extended-command-suggest-shorter) + binding executing-kbd-macro (not (symbolp function)) (<= (length (symbol-name function)) 2)) ;; There's no binding for CMD. Let's try and find the shortest ;; string to use in M-x. @@ -2876,6 +2884,10 @@ REASON describes the reason that the boundary is being added; see "Check recently changed buffers and add a boundary if necessary. REASON describes the reason that the boundary is being added; see `undo-last-boundary' for more information." + ;; (Bug #23785) All commands should ensure that there is an undo + ;; boundary whether they have changed the current buffer or not. + (when (eq cause 'command) + (add-to-list 'undo-auto--undoably-changed-buffers (current-buffer))) (dolist (b undo-auto--undoably-changed-buffers) (when (buffer-live-p b) (with-current-buffer b @@ -2898,9 +2910,7 @@ REASON describes the reason that the boundary is being added; see This list is maintained by `undo-auto--undoable-change' and `undo-auto--boundaries' and can be affected by changes to their -default values. - -See also `undo-auto--buffer-undoably-changed'.") +default values.") (defun undo-auto--add-boundary () "Add an `undo-boundary' in appropriate buffers." @@ -3744,6 +3754,7 @@ support pty association, if PROGRAM is nil." (define-derived-mode process-menu-mode tabulated-list-mode "Process Menu" "Major mode for listing the processes called by Emacs." (setq tabulated-list-format [("Process" 15 t) + ("PID" 7 t) ("Status" 7 t) ("Buffer" 15 t) ("TTY" 12 t) @@ -3775,6 +3786,7 @@ Also, delete any process that is exited or signaled." (process-query-on-exit-flag p)) (let* ((buf (process-buffer p)) (type (process-type p)) + (pid (if (process-id p) (format "%d" (process-id p)) "--")) (name (process-name p)) (status (symbol-name (process-status p))) (buf-label (if (buffer-live-p buf) @@ -3810,7 +3822,7 @@ Also, delete any process that is exited or signaled." (format " at %s b/s" speed) ""))))) (mapconcat 'identity (process-command p) " ")))) - (push (list p (vector name status buf-label tty cmd)) + (push (list p (vector name pid status buf-label tty cmd)) tabulated-list-entries)))))) (defun process-menu-visit-buffer (button) @@ -4053,7 +4065,8 @@ Its arguments and return value are as specified for `filter-buffer-substring'. This respects the wrapper hook `filter-buffer-substring-functions', and the abnormal hook `buffer-substring-filters'. No filtering is done unless a hook says to." - (with-wrapper-hook filter-buffer-substring-functions (beg end delete) + (subr--with-wrapper-hook-no-warnings + filter-buffer-substring-functions (beg end delete) (cond ((or delete buffer-substring-filters) (save-excursion @@ -6032,7 +6045,13 @@ If NOERROR, don't signal an error if we can't move that many lines." (setq temporary-goal-column (cons (/ (float x-pos) (frame-char-width)) - hscroll)))))) + hscroll))) + (executing-kbd-macro + ;; When we move beyond the first/last character visible in + ;; the window, posn-at-point will return nil, so we need to + ;; approximate the goal column as below. + (setq temporary-goal-column + (mod (current-column) (window-text-width))))))) (if target-hscroll (set-window-hscroll (selected-window) target-hscroll)) ;; vertical-motion can move more than it was asked to if it moves @@ -6413,7 +6432,8 @@ Those commands will move to this position in the line moved to rather than trying to keep the same horizontal position. With a non-nil argument ARG, clears out the goal column so that \\[next-line] and \\[previous-line] resume vertical motion. -The goal column is stored in the variable `goal-column'." +The goal column is stored in the variable `goal-column'. +This is a buffer-local setting." (interactive "P") (if arg (progn