aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/simple.el (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Use the new error API functionsStefan Monnier38 hours1-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/epa-file.el (epa-file--find-file-not-found-function): Use `error-slot-value` and `error-data`. (epa-file-insert-file-contents): Use `error-has-type-p`, `error-slot-value`, and `error-data`. * lisp/jka-compr.el (jka-compr-insert-file-contents): Use `error-has-type-p` and `error-slot-value` as well as new re-signaling form of `signal`. * lisp/simple.el (minibuffer-error-function): Use `error-has-type-p`. * lisp/startup.el (startup--load-user-init-file): Use `error-message-string`. (command-line): Use `error-has-type-p` and `error-message-string`. * lisp/type-break.el (type-break-demo-life): Use `error-message-string`. * lisp/emacs-lisp/bytecomp.el (batch-byte-compile-file): Use `error-message-string` and `error-has-type-p`. * lisp/emacs-lisp/edebug.el (edebug-safe-eval, edebug-report-error) (edebug-eval-expression): * lisp/emacs-lisp/debug.el (debugger-eval-expression): Use `error-message-string`. * lisp/emacs-lisp/ert.el (ert--should-error-handle-error): Use `error-has-type-p` and `error-type`. * lisp/net/sasl.el (sasl-error): Use `define-error`. * lisp/net/tramp-compat.el (tramp-error-type-p): New function. (tramp-permission-denied, tramp-compat-permission-denied): Use it. * lisp/progmodes/elisp-mode.el (elisp-completion-at-point): Use `error-type-p`. * lisp/xt-mouse.el (turn-on-xterm-mouse-tracking-on-terminal) (turn-off-xterm-mouse-tracking-on-terminal): Use `error-slot-value`. * lisp/simple.el (next-line, previous-line): Remove useless `condition-case` handler, and hence the whole `condition-case`, and then simplify. * lisp/gnus/nnrss.el (nnrss-insert): Use `with-demoted-errors`. * lisp/gnus/nnmaildir.el (nnmaildir--emlink-p, nnmaildir--enoent-p) (nnmaildir--eexist-p): Use `error-has-type-p`. (nnmaildir--new-number, nnmaildir-request-set-mark): Use single-arg `signal`. * lisp/ffap.el (ffap-machine-p): Use `error-slot-value`. * lisp/emacs-lisp/comp.el (comp--native-compile): Use `error-has-type-p` as well as single-arg `signal`. * lisp/net/ange-ftp.el (ange-ftp-hook-function): Use single-arg `signal`. * lisp/ebuff-menu.el (electric-buffer-menu-looper): Use `error-has-type-p`. * lisp/progmodes/ebrowse.el (ebrowse-electric-list-looper): Use `error-has-type-p`. (ebrowse-electric-position-looper): Make it an alias of `ebrowse-electric-list-looper`. * lisp/ibuffer.el (ibuffer-confirm-operation-on): * lisp/ls-lisp.el (ls-lisp--insert-directory): * lisp/gnus/gnus-search.el (gnus-search-run-query): * lisp/mail/mail-extr.el (mail-extr-safe-move-sexp): * lisp/net/dbus.el (dbus-set-property): * lisp/net/eudc-export.el (eudc-bbdbify-phone): * lisp/net/imap.el (imap-fetch-safe): * lisp/vc/vc.el (vc-root-dir): Use `error-slot-value` and single-arg `signal` to re-signal.
* Error handling clarifications found during error-APIStefan Monnier2 days1-19/+8
| | | | | | | | | | | * lisp/simple.el (next-line, previous-line): Remove useless `condition-case` handler, and hence the whole `condition-case`, and then simplify. * lisp/emacs-lisp/comp.el (comp--error-add-context): New function. (comp--native-compile): Use it. * lisp/gnus/nnrss.el (nnrss-insert): Use `with-demoted-errors`.
* ; Move unfill-paragraph to fill.el. Document it in (elisp)Filling.Sean Whitton7 days1-57/+0
|
* New command 'unfill-paragraph'Sean Whitton8 days1-0/+57
| | | | | | * lisp/simple.el (unfill-paragraph): New command. * doc/emacs/indent.texi (Indentation Commands): * etc/NEWS: Document it.
* Support cons cell for 'line-spacing'Daniel Mendler2026-01-241-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/NEWS: Announce the change. * src/dispextern.h (struct glyph_row): Add 'extra_line_spacing_above' member. (struct it): Add 'extra_line_spacing_above' member. * src/frame.h (struct frame): Add 'extra_line_spacing_above' member. Update comment for 'extra_line_spacing.' * src/buffer.c (syms_of_buffer): Update the docstring of 'line-spacing' to describe the cons cell usage. * src/buffer.h (struct buffer): Update comment for 'extra_line_spacing'. * src/frame.c (gui_set_line_spacing): Handle cons cell value for 'line-spacing'. Calculate and set 'extra_line_spacing_above' for both integer and float pairs. * src/xdisp.c (init_iterator): Initialize 'extra_line_spacing_above' from buffer or frame 'line-spacing', handling cons cells for both integer and float values. (gui_produce_glyphs): Use 'extra_line_spacing_above' to distribute spacing between ascent and descent. Update 'max_extra_line_spacing' calculation. (resize_mini_window): Take line spacing into account when resizing the mini window. Pass height of a single line to 'grow_mini_window' and 'shrink_mini_window'. * src/window.c (grow_mini_window, shrink_mini_window): Add unit argument which defines height of a single line. * src/window.h (grow_mini_window, shrink_mini_window): Adjust function prototypes accordingly with unit argument. * lisp/subr.el (total-line-spacing): New function to calculate total spacing from a number or cons cell. (posn-col-row): Use total-line-spacing. * lisp/simple.el (default-line-height): Use 'total-line-spacing'. * lisp/textmodes/picture.el (picture-mouse-set-point): Use 'total-line-spacing'. * lisp/window.el (window-default-line-height): Use 'total-line-spacing'. (window--resize-mini-window): Take 'line-spacing' into account. * test/lisp/subr-tests.el (total-line-spacing): New test. * test/src/buffer-tests.el (test-line-spacing): New test. * doc/emacs/display.texi (Display Custom): Document that 'line-spacing' can be a cons cell. (Line Height): Document the new cons cell format for 'line-spacing' to allow vertical centering. Co-authored-by: Przemysław Alexander Kamiński <alexander@kaminski.se> Co-authored-by: Daniel Mendler <mail@daniel-mendler.de>
* lisp/simple.el (goto-line): Minor optimizationStefan Monnier2026-01-221-5/+5
|
* Restrict the 'buffer' arg of 'goto-line' only to interactive usesJuri Linkov2026-01-221-5/+5
| | | | | * lisp/simple.el (goto-line): Use 'buffer' arg only when 'interactive' is non-nil (bug#80150). Update docstring.
* Allow non-interactive calls of 'goto-line' (bug#80150)Juri Linkov2026-01-191-10/+11
| | | | | | * lisp/simple.el (goto-line, goto-line-relative): Add new arg 'interactive'. Remove 'declare' with 'interactive-only'. Don't push the mark when called non-interactively.
* Add new up-down option for minibuffer-visible-completionsSpencer Baugh2026-01-141-1/+1
| | | | | | | | | | | | | | | * lisp/emacs-lisp/crm.el (completing-read-multiple): Call 'minibuffer-visible-completions--maybe-compose-map'. * lisp/minibuffer.el (completion-in-region-mode): Call 'minibuffer-visible-completions--maybe-compose-map'. (minibuffer-visible-completions): Add new value 'up-down' (bug#80024). (minibuffer-visible-completions-up-down-map): Add. (minibuffer-visible-completions--maybe-compose-map): Add helper function. (completing-read-default): Call 'minibuffer-visible-completions--maybe-compose-map'. * lisp/simple.el (completion-setup-function): Check 'minibuffer-visible-completions' is t, not just non-nil.
* ; Add 2026 to copyright years.Sean Whitton2026-01-011-1/+1
|
* Factor out undo-ignore-read-only (bug#80049)Sean Whitton2025-12-311-0/+7
| | | | | | | | | | | | * lisp/vc/diff-mode.el (diff-undo): Rename to undo-ignore-read-only. (diff-mode-shared-map): Update "<remap> <undo>" binding. * lisp/simple.el (undo-ignore-read-only): Rename from diff-undo. * lisp/dired.el (dired-undo): * lisp/proced.el (proced-undo): Call it. New numeric prefix argument to specify a repeat count. * doc/emacs/dired.texi (Marks vs Flags): * etc/NEWS: Document the change.
* December 2025 spelling fixesPaul Eggert2025-12-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the fixes are to continue to use American rather than British spelling. * doc/misc/modus-themes.org (my-modus-themes-engraved-faces): Fix misspelled ‘:foreground’s. * etc/themes/modus-themes.el (modus-themes-faces): Fix misspelled ‘modus-themes-bold’. * lisp/emacs-lisp/rx.el (rx--normalize-char-pattern): Rename from rx--normalise-char-pattern. (rx--optimize-or-args): Rename from rx--optimise-or-args. * lisp/frame.el (frame--special-parameters): Fix misspelled "right-divider-width". * lisp/net/tramp.el (tramp-fingerprint-prompt-regexp): Use American spelling “centered”, to match current libfprintf. * lisp/org/org-fold-core.el (org-fold-core--optimize-for-huge-buffers): Rename from org-fold-core--optimise-for-huge-buffers. (org-fold-core-update-optimization): Rename from org-fold-core-update-optimisation, leaving an alias behind. (org-fold-core-remove-optimization): Rename from org-fold-core-remove-optimisation, leaving an alias behind. * lisp/org/org.el (org-advertized-archive-subtree): This alias is now obsolete. * lisp/play/zone.el (zone-ignored-buffers): Fix misspelling of ‘zone--buffer-encrypted-p’. * lisp/progmodes/csharp-mode.el (csharp-ts-mode-faces): Fix misspelling of ‘csharp’ group. * lisp/vc/vc.el (vc-clonable-backends-custom-type): Rename from vc-cloneable-backends-custom-type, leaving an alias behind. * test/lisp/emacs-lisp/bytecomp-tests.el: (bytecomp-tests--warn-arity-non-compiled-callee): Rename from bytecomp-tests--warn-arity-noncompiled-callee. (bytecomp-test-defface-spec): Reword a deliberate misspelling of “default” that is so common I don’t want it to pollute the spelling dictionary. * test/lisp/emacs-lisp/package-vc-tests.el: (package-vc-tests-preserve-artifacts): Rename from package-vc-tests-preserve-artifacts. * test/lisp/eshell/em-prompt-tests.el: (em-prompt-test/forward-backward-paragraph-1): Reword a deliberate misspelling of “goodbye” that is so common I don’t want it to pollute the spelling dictionary.
* ; * lisp/simple.el (kill-visual-line): Fix a thinko in last change.Eli Zaretskii2025-12-151-1/+1
|
* Fix a bug in 'kill-visual-line' that caused it signal an errorEli Zaretskii2025-12-141-1/+2
| | | | | * lisp/simple.el (kill-visual-line): Don't assume 'posn-at-point' always returns a non-nil value. (Bug#80004)
* New 'R' code letter for 'interactive' formsSean Whitton2025-12-081-8/+11
| | | | | | | | | | | | | | | | | | | * src/callint.c (callint_argfuns): Add use-region-beginning and use-region-end. (syms_of_callint): Protect use-region-beginning and use-region-end. Add DEFSYM for Quse_region_p. (Fcall_interactively): New 'R' code letter. * lisp/textmodes/paragraphs.el (repunctuate-sentences): * lisp/vc/diff-mode.el (diff-delete-other-hunks, diff-apply-hunk) (diff-revert-and-kill-hunk, diff-apply-buffer): * lisp/vc/log-view.el (log-view-mark-entry) (log-view-unmark-entry): Use it. * doc/lispref/commands.texi (Interactive Codes): * doc/lispref/markers.texi (The Region): * etc/NEWS: * lisp/simple.el (use-region-beginning, use-region-end) (use-region-p): * src/callint.c (Finteractive): Document it.
* ; minibuffer-default-add-shell-commands: Use 'and' not 'unless'.Sean Whitton2025-11-111-2/+2
|
* * lisp/simple.el (minibuffer-default-add-shell-commands): Fix old bug.Juri Linkov2025-11-091-2/+1
| | | | Don't treat the first element of the list of commands as a file name.
* * lisp/simple.el (previous-line-or-history-element): Fix off-by-one error.Juri Linkov2025-11-021-6/+6
| | | | (bug#79746)
* Merge from origin/emacs-30Eli Zaretskii2025-10-181-2/+8
|\ | | | | | | 53aac6aecd2 ; Improve documentation of commands that split current wi...
| * ; Improve documentation of commands that split current windowEli Zaretskii2025-10-181-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/emacs/sending.texi (Sending Mail): * doc/emacs/dired.texi (Dired Enter, Dired Visiting): * doc/emacs/maintaining.texi (Old Revisions) (Change Log Commands, Looking Up Identifiers): * doc/emacs/windows.texi (Displaying Buffers): * doc/emacs/files.texi (Visiting): Add cross-references to where user options are described which control how windows are split. * lisp/mail/sendmail.el (mail-other-window): * lisp/gnus/message.el (message-mail-other-window) (message-news-other-window): * lisp/replace.el (occur-mode-goto-occurrence-other-window): * lisp/vc/vc.el (vc-revision-other-window): * lisp/vc/vc-dir.el (vc-dir-find-file-other-window): * lisp/progmodes/xref.el (xref-find-definitions-other-window): * lisp/simple.el (compose-mail-other-window) (clone-indirect-buffer-other-window): * lisp/vc/add-log.el (add-change-log-entry-other-window): * lisp/view.el (view-file-other-window) (view-buffer-other-window): * lisp/window.el (switch-to-buffer-other-window): * lisp/files.el (find-file-other-window) (find-file-read-only-other-window) (find-alternate-file-other-window): * lisp/dired.el (dired-other-window) (dired-mouse-find-file-other-window) (dired-find-file-other-window, dired-jump-other-window): Mention in the doc strings how to control the way the current window is split.
* | (define-minor-mode): Update `global-minor-modes` if init-value is non-nilStefan Monnier2025-10-141-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a global minor mode is enabled by init-value rather than by calling the major mode function, we failed to register it in `global-minor-modes` (bug#79518). * lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Register ourselves in `global-minor-modes` at top-level for global modes with a non-nil init-value. Also in the `modefun`, simply the code with `not` and `add-to-list` and consolidate the local/global paths to update `*-minor-modes`. * lisp/simple.el (global-minor-modes): Move to... * lisp/subr.el (global-minor-modes): ...here so it's defined early enough for `auto-compression-mode` to register itself.
* | Do not erase the output buffer upon empty async shell commandManuel Giraud2025-10-111-2/+5
| | | | | | | | | | | | * lisp/simple.el (shell-command): Test if an asynchronous shell command is not empty before creating or erasing the output buffer. (Bug#79560)
* | Fix completions truncated on scrolling (bug#79506)Juri Linkov2025-09-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | * lisp/simple.el (completion-setup-function): Add 'completion--lazy-insert-strings-on-scroll' to buffer-local hook 'window-scroll-functions'. * lisp/minibuffer.el (completion--lazy-insert-strings-on-scroll): New function. (completion--in-region-1): Remove calls to the function 'completion--lazy-insert-strings' that now are handled by the scroll hook.
* | Navigate *Completions* buffer based on 'completions-format'Stephen Berman2025-09-221-71/+209
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes 'next-completion' and 'previous-completion' work in the vertical completions format analogously to how they work in the default horizontal format (bug#78959). It also fixes wrapping in the vertical format and confines navigation (including wrapping) in column-wise movement in the vertical format to the current line, analogously to how navigation (including wrapping) in line-wise movement in the horizontal format is confined to the current column. * doc/emacs/mini.texi (Completion): Fix several typos and improve wording is several places. (Completion Commands): Document navigation of the *Completions* buffer in the vertical format. Document the difference between format-sensitive movement and strictly column-wise or line-wise movement. Document 'minibuffer-complete-and-exit' and update the documentation of 'minibuffer-completion-auto-choose' and 'minibuffer-choose-completion'. Document the use of a numeric prefix argument with the navigation commands. (Completion Options): Rearrange and improve documentation of 'completions-sort', 'completions-format' and 'completion-auto-wrap', updating the latter to document the new behavior. * lisp/minibuffer.el (minibuffer-visible-completions-map): Rebind "<left>" to 'minibuffer-previous-column-completion' and "<right>" to 'minibuffer-next-column-completion'. (minibuffer-next-completion): Add check for whether completions format is vertical to decide whether to call 'next-line-completion' and replace calling 'next-completion' by 'next-column-completion'. (minibuffer-next-column-completion) (minibuffer-previous-column-completion): New commands. * lisp/simple.el (completion-list-mode-map): Rebind "<left>" to 'previous-column-completion' and "<right>" to 'next-column-completion'. (last-completion): Add handling for vertical completions format. (completion--move-to-candidate-end): Always move point to the position immediately after the last character of the completion candidate. This unifies the behavior, simplifies the implementation and facilitates implementing the improved navigation of the *Completions* buffer. (previous-column-completion, next-column-completion): New commands, replacing the previous definitions of 'previous-completion' and 'next-completion' to reflect their column-wise operation. Confine navigation (including wrapping) in vertical format to the current line. (previous-line-completion, next-line-completion): Implement line-wise navigation (including wrapping) through all completions in vertical format, not just those in the current column as in horiztonal format. Update doc strings. (next-completion, previous-completion): Redefine to call '{next,previous}-line-completion' when completions format is vertical and '{next,previous}-column-completion' otherwise. * test/lisp/minibuffer-tests.el (completions-format-navigation--tests): New function providing a template to define tests of the navigation and wrapping behavior with specified numbers of completion candidates. (completions-format-navigation-test-{2,3,4,5,10,15,16}): New tests.
* | Make RET choose the selected completionSpencer Baugh2025-08-271-18/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, one could select a completion via M-<up>/M-<down>, but then RET would not actually select the chosen completion. With the addition of completion-auto-deselect, this is not actually necessary: we can reasonably assume that when a completion is selected, the user wants to use that, since their last action must have been to select it. So, just choose the selected completion on RET. This lets us default minibuffer-completion-auto-choose to nil. For minibuffers with require-match completion, this can be done by changing the existing command bound to RET. For minibuffers with nil require-match completion, RET was previously bound to exit-minibuffer, and changing exit-minibuffer to have this logic is risky. We handle that case by adding a new minibuffer-completion-exit which wraps exit-minibuffer and bind RET to it. * lisp/minibuffer.el (minibuffer-insert-completion-if-selected) (minibuffer-completion-exit, completion--selected-candidate): Add. (minibuffer-complete-and-exit): Call minibuffer-choose-completion. (bug#77253) (minibuffer-local-completion-map): Bind RET to minibuffer-completion-exit, overriding exit-minibuffer. (completion-in-region-mode-map): Bind RET to minibuffer-choose-completion when there's a selected candidate. (minibuffer-completion-auto-choose): Default to nil. (minibuffer-visible-completions--filter) (minibuffer-visible-completions-map): Delete RET binding, no longer necessary. * lisp/simple.el (completion-setup-function): Update completion help text to show more correct bindings. * test/lisp/minibuffer-tests.el (completions-header-format-test) (minibuffer-next-completion): Set minibuffer-completion-auto-choose=t explicitly. (with-minibuffer-setup, minibuffer-completion-RET-prefix) (completion-in-region-next-completion): Add new tests. * etc/NEWS: Announce.
* | Add minibuffer--completions-visible and use itSpencer Baugh2025-08-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At various places, instead of just checking that there's any window displaying a buffer named *Completions*, we should additionally check that that *Completions* buffer is actually for the current completion session. minibuffer--completions-visible does that. * lisp/comint.el (comint-complete-input-ring) (comint-dynamic-list-completions): Call minibuffer--completions-visible. * lisp/minibuffer.el (minibuffer--completions-visible): Add. (bug#77253) (completion--do-completion, completions--post-command-update) (completions--after-change, minibuffer-hide-completions) (minibuffer-visible-completions) (minibuffer-visible-completions--always-bind) (minibuffer-visible-completions--filter) (with-minibuffer-completions-window, minibuffer-complete-history) (minibuffer-complete-defaults): Call minibuffer--completions-visible. * lisp/pcomplete.el (pcomplete-show-completions): Call minibuffer--completions-visible. * lisp/simple.el (switch-to-completions): Call minibuffer--completions-visible. * test/lisp/minibuffer-tests.el (completion-auto-help-test) (completion-auto-select-test): Call minibuffer--completions-visible.
* | ; * lisp/simple.el (shell-command): Fix last change (bug#79067).Eli Zaretskii2025-07-211-1/+2
| |
* | Improve error message for "C-u M-! something &"Eli Zaretskii2025-07-201-1/+4
| | | | | | | | | | * lisp/simple.el (shell-command): User-friendlier error message when async shell command is invoked with a prefix argument.
* | New command 'mode-line-invisible-mode'Elías Gabriel Pérez2025-07-121-0/+31
| | | | | | | | | | | | | | | | | | | | | | This new command allows hide the mode line in the current buffer. (Bug#78881) * doc/emacs/display.texi (Optional Mode Line): Document feature. * etc/NEWS: Announce changes. * lisp/simple.el (mode-line-invisible--buf-state): New buffer local variable. (mode-line-invisible-mode): New minor mode.
* | Add additional keybindings for flymake diagnostics modesMatthew Tromp2025-05-311-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds keybindings for C-o and C-m, and changes the bindings for n and m, in `flymake-diagnostics-buffer-mode' and `flymake-project-diagnostics-mode' buffers. Previously, `flymake-project-diagnostics-mode' did not use the keybindings for `flymake-diagnostics-buffer-mode'. RET and SPC were never bound in `flymake-project-diagnostics-mode' buffers. This seems to have been an oversight: since the filename and message are buttons which call `flymake-goto-diagnostic', pressing RET still brought users to the diagnostic at point most of the time. This change adds a `flymake-project-diagnostics-mode-map' which inherits from `flymake-diagnostics-buffer-mode-map'. C-o and C-m now show and jump to the diagnostic currently at point, similar to how `compilation-mode' works. n and p now show the diagnostic newly under point after moving up or down a line, which is also intended to make behavior more similar to `compilation-mode'. In order that other next-error buffers do not interfere with navigation in the diagnostics buffers, this change introduces and uses new functions, `next-error-this-buffer-no-select' and `previous-error-this-buffer-no-select'. If we instead used `next-error-no-select' and `previous-error-no-select', then a user who runs `flymake-show-diagnostics-buffer', then e.g. `compile', then returns to the diagnostics buffer and presses 'n', would be navigated to the next error in the compilation buffer. * lisp/progmodes/flymake.el (flymake-diagnostics-buffer-mode-map): Add bindings. (flymake-project-diagnostics-mode-map): Inherit bindings from `flymake-diagnostics-buffer-mode' * lisp/simple.el (next-error-this-buffer-no-select): (previous-error-this-buffer-no-select): Add new commands. (Bug#78619) Copyright-paperwork-exempt: yes
* | simple.el (delete-trailing-whitespace-mode): New minor mode (bug#78264)Stefan Monnier2025-05-121-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | Partly motivated by bug#78097. * lisp/simple.el (delete-trailing-whitespace-if-possible): New function. (delete-trailing-whitespace-mode): New minor mode. * lisp/editorconfig.el (editorconfig-trim-whitespaces-mode): Change default to `delete-trailing-whitespace-mode`. (editorconfig--get-trailing-ws): Simplify accordingly. (editorconfig--add-hook-safe-p): Delete function. Don't touch `safe-local-eval-function` any more.
* | Avoid signaling errors in 'cursor-face-highlight-mode'Eli Zaretskii2025-04-261-1/+1
| | | | | | | | | | * lisp/simple.el (redisplay--update-cursor-face-highlight): Don't go beyond the accessible portion of the buffer. (Bug#77747)
* | Fix 'backward-delete-char-untabify'Asher Copeland2025-04-131-24/+30
| | | | | | | | | | | | | | * lisp/simple.el (backward-delete-char-untabify): Fix behavior when there's an active region. (Bug#75042) Copyright-paperwork-exempt: yes
* | Handle better changed default-directory in shell-commandMichael Albinus2025-03-271-0/+3
| | | | | | | | | | | | * lisp/simple.el (shell-command): Kill buffer-local values of `shell-file-name' and `shell-command-switch', there could be left connection-local values. (Bug#76888)
* | Lazily highlight and insert candidates in *Completions*Spencer Baugh2025-03-211-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From profiling, the main bottleneck in completion over large completion sets is display-completion-list, when there are many available candidates. For example, in my large monorepo, when completing over the 589196 files or the 73897 branches, even with the candidates narrowed down by typing some prefix to complete, TAB (when it shows *Completions*) or ? is slow, mostly in display-completion-list. However, rendering all the completion candidates is unnecessary if the *Completions* window is never scrolled to see those candiates. By eagerly inserting only some candidates and lazily highlighting and inserting the remaining candidates only when necessary, performance is much improved. * lisp/minibuffer.el (completion--insert-strings): Insert completions lazily. (bug#74561) (completions--lazy-insert-button): Add. (completion--insert-horizontal, completion--insert-one-column): Throw a continuation when enough lines of completions are inserted. (completion--insert-vertical): Add ignored lines argument. (minibuffer-completion-help): Set completion-lazy-hilit. (with-minibuffer-completions-window): Call completion--lazy-insert-strings. (with-minibuffer-completions-window): * lisp/simple.el (completion-setup-function): Preserve buffer-locals required for lazy completion insertion. (switch-to-completions): Call completion--lazy-insert-strings. * etc/NEWS: Announce.
* | Use defvar-keymap for some trivial keymapsStefan Kangas2025-03-161-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/bindings.el (mode-line-window-dedicated-keymap) (mode-line-buffer-identification-keymap): * lisp/emulation/cua-rect.el (cua--overlay-keymap, cua--overlay-key): * lisp/mh-e/mh-mime.el (mh-mime-security-button-map): * lisp/mh-e/mh-utils.el (mh-hidden-header-keymap): * lisp/net/eudc-bob.el (eudc-bob-generic-keymap, eudc-bob-image-keymap) (eudc-bob-sound-keymap, eudc-bob-url-keymap, eudc-bob-mail-keymap): * lisp/progmodes/etags-regen.el (etags-regen-mode-map): * lisp/progmodes/octave.el (octave-help-mode-map): * lisp/replace.el (multi-query-replace-map): * lisp/simple.el (process-menu-mode-map, messages-buffer-mode-map): * lisp/startup.el (splash-screen-keymap): * lisp/tab-bar.el (tab-bar-mode-map): * lisp/textmodes/ispell.el (ispell-minor-keymap): * lisp/textmodes/tex-mode.el (latex-mode-map, plain-tex-mode-map): * lisp/tree-widget.el (tree-widget-button-keymap): * lisp/vc/vc-hooks.el (vc-mode-line-map): Use defvar-keymap.
* | ; exchange-point-and-mark-highlight-region: Add more detail here tooSean Whitton2025-03-121-1/+4
| |
* | ; Add more detail to exchange-point-and-mark docstringSean Whitton2025-03-121-4/+9
| | | | | | | | | | It didn't mention that exchange-point-and-mark-highlight-region affects C-u C-x C-x too.
* | ; Touch up docs for exchange-point-and-mark-highlight-regionSean Whitton2025-03-121-5/+6
| |
* | Merge from origin/emacs-30Sean Whitton2025-03-121-4/+7
|\ \ | |/ | | | | | | | | | | | | 894b0e3a2fe ; Adapt comment in tramp.el cc87717fa07 Add keyword placeholder to tramp.el 7d0d61d8549 Rewrite ERT manual introduction b2f124f2a88 ; cperl-mode.el: Don't misinterpret exec_fcn as keyword exec 59d1aac49df Document return values of the various read-* functions
| * Document return values of the various read-* functionsEli Zaretskii2025-03-091-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/textmodes/string-edit.el (read-string-from-buffer): * lisp/simple.el (read-from-kill-ring, read-shell-command) (read-signal-name): * lisp/replace.el (read-regexp-case-fold-search): * lisp/auth-source.el (read-passwd): * lisp/subr.el (read-key, read-number): * lisp/minibuffer.el (read-file-name, read-no-blanks-input): * lisp/international/mule-cmds.el (read-multilingual-string): * lisp/language/japan-util.el (read-hiragana-string): * lisp/files-x.el (read-file-local-variable) (read-file-local-variable-mode, read-file-local-variable-value): * lisp/faces.el (read-face-font, read-face-name): * lisp/simple.el (read-extended-command): * lisp/env.el (read-envvar-name): * lisp/files.el (read-directory-name): * lisp/faces.el (read-color): * lisp/international/mule-diag.el (read-charset): * lisp/emacs-lisp/map-ynp.el (read-answer): * src/coding.c (Fread_coding_system) (Fread_non_nil_coding_system): * src/minibuf.c (Fread_command, Fread_from_minibuffer): * src/lread.c (Fread_char, Fread_char_exclusive, Fread_event): Doc fixes.
* | ; Fix :version tagStefan Kangas2025-03-121-1/+1
| | | | | | | | Reported by Campbell Barton <ideasman42@gmail.com>.
* | Remove variable aliases obsolete since Emacs 23.2Stefan Kangas2025-03-111-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/dired.el (dired-advertised-find-file): * lisp/simple.el (advertised-undo): * lisp/wid-edit.el (advertised-widget-backward): Remove variable aliases obsolete since Emacs 23.2. They are replaced by ':advertised-binding' properties. * lisp/arc-mode.el (archive-mode-map): * lisp/dired.el (dired-mode-map): * lisp/obsolete/landmark.el (landmark-mode-map): * lisp/play/decipher.el (decipher-mode-map): * lisp/play/gomoku.el (gomoku-mode-map): * lisp/proced.el (proced-mode-map): Don't bind above removed commands.
* | New user variable `exchange-point-and-mark-highlight-region`Thierry Volpiatto2025-03-111-5/+18
| | | | | | | | | | | | | | | | | | | | | | | | When set to nil, this modifies `exchange-point-and-mark' so that it doesn't activate mark when it is not already active. * etc/NEWS: Introduce new variable exchange-point-and-mark-highlight-region. * lisp/simple.el (exchange-point-and-mark-highlight-region): New. (exchange-point-and-mark): Use it.
* | Make second arg to defvar-local optionalStefan Kangas2025-03-091-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change allows declaring a variable both special and buffer-local like so: (defvar-local foo) * lisp/subr.el (defvar-local): Make second argument optional. * test/lisp/subr-tests.el (subr-test-defvar-local): New test. * doc/lispref/variables.texi (Creating Buffer-Local): Document above change. * etc/NEWS: * lisp/mb-depth.el (minibuffer-depth-overlay): * lisp/minibuf-eldef.el (minibuf-eldef-initial-input) (minibuf-eldef-initial-buffer-length) (minibuf-eldef-showing-default-in-prompt, minibuf-eldef-overlay): * lisp/misc.el (list-dynamic-libraries--loaded-only-p): * lisp/simple.el (minibuffer-history-isearch-message-overlay): Use above new one-argument form of 'defvar-local'.
* | ; Silence byte-compiler during bootstrapStefan Kangas2025-02-281-0/+1
| |
* | Prefer incf to cl-incf in remaining filesStefan Kangas2025-02-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * admin/syncdoc-type-hierarchy.el (syncdoc-make-type-table): * admin/unidata/unidata-gen.el (unidata-gen-table-word-list): * lisp/arc-mode.el (archive--summarize-descs): * lisp/auth-source.el (auth-source-forget+): * lisp/battery.el (battery-linux-proc-acpi, battery-linux-sysfs): * lisp/calendar/parse-time.el (parse-time-tokenize): * lisp/calendar/time-date.el (decoded-time-add) (decoded-time--alter-month, decoded-time--alter-day): * lisp/cedet/semantic/ede-grammar.el (project-compile-target): * lisp/dired.el (dired-insert-set-properties): * lisp/edmacro.el (edmacro-format-keys): * lisp/epa-file.el (epa-file--replace-text): * lisp/eshell/esh-cmd.el (eshell-for-iterate): * lisp/eshell/esh-io.el (eshell-create-handles) (eshell-duplicate-handles, eshell-protect-handles) (eshell-copy-output-handle, eshell-buffered-print): * lisp/font-lock.el (font-lock-fontify-keywords-region): * lisp/help-fns.el: * lisp/ibuf-ext.el (ibuffer-generate-filter-groups) (ibuffer-insert-filter-group-before): * lisp/ibuffer.el (ibuffer-confirm-operation-on, ibuffer-map-lines): * lisp/image/image-dired-external.el (image-dired-thumb-queue-run): * lisp/image/image-dired.el (image-dired-display-thumbs) (image-dired-line-up): * lisp/imenu.el (imenu--split): * lisp/info-xref.el (info-xref-check-node, info-xref-check-all-custom): * lisp/international/quail.el (quail-insert-decode-map): * lisp/international/rfc1843.el (rfc1843-decode): * lisp/mail/ietf-drums-date.el (ietf-drums-date--tokenize-string): * lisp/mail/ietf-drums.el (ietf-drums-token-to-list): * lisp/mail/rfc2047.el (rfc2047-qp-or-base64): * lisp/mail/rfc2231.el (rfc2231-encode-string): * lisp/mail/yenc.el (yenc-decode-region): * lisp/mh-e/mh-e.el (mh-xargs): * lisp/mh-e/mh-folder.el (mh-recenter): * lisp/mh-e/mh-mime.el (mh-mime-part-index): * lisp/mh-e/mh-search.el (mh-search): * lisp/mh-e/mh-thread.el (mh-thread-current-indentation-level): * lisp/mh-e/mh-utils.el (mh-sub-folders-parse): * lisp/minibuffer.el (minibuffer--sort-by-position) (completion-pcm--pattern-point-idx): * lisp/mpc.el (mpc-cmd-find, mpc-cmd-move, mpc-select-extend) (mpc-songs-refresh, mpc-songpointer-score) (mpc-songpointer-refresh-hairy): * lisp/msb.el (msb--mode-menu-cond, msb--most-recently-used-menu) (msb--split-menus-2, msb--make-keymap-menu): * lisp/net/pop3.el (pop3-send-streaming-command): * lisp/net/puny.el (puny-encode-complex, puny-decode-string-internal): * lisp/net/shr-color.el (shr-color-hue-to-rgb): * lisp/net/soap-client.el (soap-encode-xs-complex-type) (soap-decode-xs-complex-type, soap-resolve-references-for-operation) (soap-wsdl-resolve-references): * lisp/play/5x5.el (5x5-made-move, 5x5-down, 5x5-right): * lisp/play/decipher.el (key, decipher-mode-syntax-table) (decipher-add-undo, decipher-complete-alphabet, decipher--analyze) (decipher--digram-counts, decipher--digram-total): * lisp/play/hanoi.el (hanoi-move-ring): * lisp/play/snake.el (snake-reset-game, snake-update-game): * lisp/profiler.el (profiler-calltree-depth, profiler-calltree-build-1) (profiler-calltree-build-unified) (profiler-calltree-compute-percentages): * lisp/registry.el (registry-reindex): * lisp/simple.el (completion-list-candidate-at-point): * lisp/strokes.el (strokes-xpm-to-compressed-string): * lisp/term.el (term-emulate-terminal, term--handle-colors-list): * lisp/treesit.el (treesit-node-index, treesit-indent-region): * lisp/url/url-cookie.el (url-cookie-parse-file-netscape): * lisp/url/url-dav.el (url-dav-file-name-completion): * lisp/url/url-queue.el (url-queue-setup-runners) (url-queue-run-queue): * lisp/wdired.el (wdired-finish-edit): * lisp/wid-edit.el (widget-move): * lisp/window-tool-bar.el (window-tool-bar-string): * lisp/winner.el (winner-undo): * lisp/xwidget.el (xwidget-webkit-isearch-forward) (xwidget-webkit-isearch-backward): Prefer incf to cl-incf.
* | Prefer oddp/evenp to open-coding in a few more casesStefan Kangas2025-02-181-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | * lisp/arc-mode.el (archive-zip-summarize): * lisp/cus-edit.el (setopt): * lisp/isearch.el (isearch-backslash): * lisp/simple.el (blink-paren-post-self-insert-function): * lisp/subr.el (setq-local, buffer-local-set-state): * lisp/term.el (term-within-quotes): * test/src/data-tests.el (test-bool-vector-bv-from-hex-string): Use oddp/evenp instead of open-coding them. Reported by Pip Cet <pipcet@protonmail.com>.
* | Merge from origin/emacs-30Eli Zaretskii2025-02-011-1/+3
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | ba271938951 ; * etc/NEWS: Fix wording. fdc6842a44e Remove bookmark fringe marks when deleting all bookmarks 3bccd04c5c6 Improve wording in symbols.texi 6441b9ea7af Fix typo in Gnus manual 87be3aa1491 eglot: Allow omnisharp binary to be capitalized "OmniSharp" 5485ea6aef9 Do not set `trusted-content` in major modes d11488fd6fb ; * lisp/subr.el (sit-for): Doc fix. # Conflicts: # etc/NEWS
| * Do not set `trusted-content` in major modesStefan Kangas2025-01-311-1/+3
| | | | | | | | | | | | | | | | | | | | | | * lisp/progmodes/elisp-mode.el (lisp-interaction-mode): * lisp/ielm.el (inferior-emacs-lisp-mode): Do not set `trusted-content. * lisp/ielm.el (ielm): * lisp/simple.el (get-scratch-buffer-create): Set `trusted-content` here instead. * lisp/files.el (trusted-content): Doc fix; warn against setting this option to :all in a major or mode mode. Problem reported by Max Nikulin <manikulin@gmail.com>.