Commit graph

11969 commits

Author SHA1 Message Date
Eshel Yaron
dc4ce1052b
New command 'crm-complete-and-insert-separator'
* lisp/emacs-lisp/crm.el (crm-complete-and-insert-separator): New
command.
(completing-read-multiple-mode-map): Bind it to 'C-,'.
(crm-canonical-separator, crm-common-separators): New variables.
(completions-multi-mode): Adapt mode line lighter.
(crm-complete-and-exit): Only suggest in 'M-x' in 'minibuffer-mode'.
(crm-change-separator): (Re)set canonical separator.

* doc/lispref/minibuf.texi (Minibuffer Completion): Update.
* doc/emacs/mini.texi (Completion Multi): New subsection.
(Completion Commands): Fix markup.
(Completion)
* doc/emacs/emacs.texi (Top): Add menu entry.

* etc/NEWS: Announce 'crm-complete-and-insert-separator'.
2024-01-21 07:57:21 +01:00
Eshel Yaron
c00e059c36
Avoid slow remote file name completion annotations
* lisp/files.el (file-name-attributes-completion-annotation)
(file-name-completion-annotation): New function.
* lisp/minibuffer.el (completion-file-name-affixation): Use it.

* lisp/net/tramp-sudoedit.el (tramp-sudoedit-file-name-handler-alist)
* lisp/net/tramp-sh.el (tramp-sh-file-name-handler-alist): Register
handler function for 'file-name-completion-annotation'.
(tramp-sh-handle-file-name-completion-annotation)
* lisp/net/tramp.el (tramp-file-name-for-operation): Handle it.

* doc/lispref/files.texi (File Attributes)
(Magic File Names): Document 'file-name-completion-annotation'.

* etc/NEWS: Announce it.
2024-01-21 07:57:20 +01:00
Eshel Yaron
4f1e41bc06
; Elaborate minibuffer file name reading documentation
* doc/emacs/mini.texi (Minibuffer File): Slightly elaborate.
(Completion Commands): Fix markup.
2024-01-21 07:57:20 +01:00
Eshel Yaron
36a3131e6f
Support sorting file name completions list by last modified time
(minibuffer--sort-file-names-by-last-modified-time): New function.
(read-file-name-default): Add it to
'minibuffer-completions-sort-orders' buffer-locally.
* doc/emacs/mini.texi (Completion Commands): Elaborate about
'minibuffer-sort-completions'.
2024-01-21 07:57:20 +01:00
Eshel Yaron
cea254f148
Add completion annotations for file name completion
* lisp/minibuffer.el (completion-file-name-affixation): New function.
(completion-file-name-table): Use it as 'affixation-function'.
* doc/emacs/help.texi (Name Help): Move doc of 'completions-detailed'
from here to...
* doc/emacs/mini.texi (Completion Options): ...here.  Improve wording.
* etc/NEWS: Announce.
2024-01-21 07:57:19 +01:00
Eshel Yaron
68d33f872e
Show completions category in heading line
Extend 'completions-header-format' with a placeholder for the
completions category.  Stop hard-coding the 'shadow' face for the
heading line default value, instead define a derived face.

* lisp/minibuffer.el (completions-header-format): Extend.
(completions-heading): New face.
(completion-category): New variable.
(minibuffer-completion-help): Let-bind it.
(display-completion-list): Use it.

* doc/emacs/mini.texi (Completion Options): Elaborate.

* etc/NEWS: Announce.
2024-01-21 07:57:19 +01:00
Eshel Yaron
374614fea4
; Stop saying that 'C-o' invokes 'open-line' in the minibuffer
* doc/emacs/mini.texi (Minibuffer Edit): Update.
2024-01-21 07:57:18 +01:00
Eshel Yaron
35f0d1820d
New commands for cycling completions and restoring completed input
This adds two new minibuffer commands, 'minibuffer-cycle-completion'
and 'minibuffer-restore-completion-input', bound to 'C-o' and 'C-l',
respectively.

* lisp/minibuffer.el (completion--input): New local variable.
(minibuffer--cache-completion-input)
(completion-switch-cycling-direction): New functions.
(completion-all-sorted-completions): Respect
'minibuffer-completions-sort-function', and...
(minibuffer-completion-help)
(completion--do-completion): Cache completion input.
(completions-auto-update): Preserve 'completion--input'.
(minibuffer-force-complete): Highlight inserted candidate in
completions list if *Completions* is already visible.
(minibuffer-cycle-completion)
(minibuffer-restore-completion-input): New commands.
(minibuffer-local-completion-map): Bind them.

* doc/emacs/mini.texi (Completion Commands, Completion Options)
* doc/lispref/minibuf.texi (Completion Commands): Document them.

* etc/NEWS: Announce.

* test/lisp/minibuffer-tests.el (restore-completion-input-test):
New test.
2024-01-21 07:57:17 +01:00
Eshel Yaron
c80749e4be
; Adapt some recent changes around completion categories
* doc/lispref/minibuf.texi (Completion Variables):
* lisp/minibuffer.el (completion-extra-properties)
(completion-category-defaults): Mention 'narrow-completions-function'.
(completion-category-overrides): Do that, and improve Custom type.
2024-01-21 07:57:17 +01:00
Eshel Yaron
26bca940e1
; Fix typos in recent documentation additions
* doc/emacs/mini.texi (Narrow Completions)
* doc/lispref/minibuf.texi (Minibuffer Completion): Fix typos.
2024-01-21 07:57:17 +01:00
Eshel Yaron
ca72ed2f7a
New command 'minibuffer-set-completion-styles'
Add an interactive command for setting completion styles in the
current minibuffer.

* lisp/minibuffer.el (completion-style)
(completion--matching-style, completion-local-styles): New vars.
(completion--styles): Use 'completion-local-styles' when it's non-nil.
(completion--nth-completion): Set 'completion--matching-style' to the
matching completion style.
(completion-styles-affixation, completion-styles-table): New funs.
(minibuffer-set-completion-styles): New command.
(minibuffer-local-completion-map): Bind it.
(minibuffer-completion-help): Set 'completion-style' in the
"*Completions*" buffer.
* lisp/simple.el (completion-setup-function): Keep 'completion-style'.
(completion-list-mode): Display 'completion-style' in mode line.

* doc/emacs/mini.texi (Completion Commands, Completion Styles):
Document new command.

* doc/lispref/minibuf.texi (Completion Commands)
(Completion Variables): Document new command and variable.

* etc/NEWS: Announce new command.
2024-01-21 07:57:16 +01:00
Eshel Yaron
f9c59caa37
Improve handling of file name completion predicate
* lisp/minibuffer.el (completion-file-name-table): Avoid hard-coding
'file-exists-p', call predicate without directory name and set
'default-directory' to that directory instead.
(read-file-name): Update documentation.
* lisp/pcomplete.el (pcomplete--entries): Handle zero-length arg.
* doc/lispref/minibuf.texi (Reading File Names): Elaborate.
2024-01-21 07:57:16 +01:00
Eshel Yaron
c3f58a143a
Improve 'completing-read-multiple'
This simplifies the implementation of crm.el, making it a thin wrapper
around 'completing-read'.  This obviates the need for bespoke commands
such as 'crm-complete' and 'crm-completion-help', and allows us to
remove incorrect code in minibuffer.el that tried to accommodate for
both 'completing-read' and 'completing-read-multiple'.
'crm-complete-and-exit' is still required to get the right behavior.
While we're at it, also add a command for changing 'crm-separator'
interactively, and an indication of 'completing-read-multiple' in
the *Completions* buffer mode line.

* lisp/emacs-lisp/crm.el (crm-local-completion-map)
(crm-local-must-match-map): No longer used, replace with obsolete
aliases of 'completing-read-multiple-mode-map' in favor of third party
code that uses these variables.
(crm-completion-table, crm--current-element)
(crm--completion-command, crm-completion-help)
(crm-complete, crm-complete-word)
(crm--choose-completion-string): No longer used, remove.
(crm-complete-and-exit): Update.
(read-string-matching-regexp): New local variable.
(read-string-matching-try-exit)
(crm-change-separator): New commands.
(read-string-matching-mode-map)
(completing-read-multiple-mode-map): New keymap variables.
(read-string-matching-mode)
(completing-read-multiple-mode)
(completions-multi-mode): New minor modes.
(read-string-matching, crm-completion-setup): New functions.
(completing-read-multiple): Update.

* lisp/minibuffer.el (minibuffer-sort-completions)
(minibuffer-narrow-buffer-completions)
(minibuffer--add-completions-predicate)
(minibuffer-narrow-completions-to-current)
(minibuffer-widen-completions)
(completions-auto-update): Delegate completion boundaries calculation.

* doc/lispref/minibuf.texi (Minibuffer Completion): Document c-r-m.
* etc/NEWS: Announce 'crm-change-separator'.
2024-01-21 07:57:15 +01:00
Eshel Yaron
835eff5e21
Support interactively sorting minibuffer completions
* lisp/minibuffer.el (minibuffer-completions-sort-function): New var.
(minibuffer-read-sort-order-with-completion)
(minibuffer-completions-sort-orders): New user options.
(minibuffer-sort-completions): New command.
(minibuffer-local-completion-map): Bind it to 'C-x C-v'.
(display-completion-list, minibuffer-completion-help): Take
'minibuffer-completions-sort-function' into account.
(completions-header-format): Add '%t' format spec construct,
substituted with a description of the current sort order.
* lisp/menu-bar.el (minibuffer-local-completion-map): Add menu bar
menu entry for sorting completions candidates.
* doc/emacs/mini.texi (Completion Commands): Document new command.
Improve documentation and indexing of 'minibuffer-complete-and-exit'.
(Completion Exit, Completion Options): Update
* doc/lispref/minibuf.texi (Completion Commands): Document new user
options and command.
* etc/NEWS: Announce new feature.
2024-01-21 07:57:15 +01:00
Eshel Yaron
9877858fa2
; Support removing individual completions restrictions
* lisp/minibuffer.el (minibuffer-widen-completions): New optional
argument ALL, if nil prompt for individual restrictions to remove.
Also, take into account completions boundaries when calling
'minibuffer-completion-help'.
* doc/emacs/mini.texi (Completion Commands, Narrow Completions):
Update documentation.
* lisp/menu-bar.el (map): Update help text.
2024-01-21 07:57:14 +01:00
Eshel Yaron
fd705bffff
Add Completions Auto Update minor mode
This adds a new global minor that updates the *Completions* buffer as
you type in the minibuffer.

* lisp/minibuffer.el (completions-auto-update-idle-time): New option.
(completions-auto-update-timer): New buffer-local variable.
(completions-auto-update)
(completions-auto-update-start-timer)
(completions-auto-update-setup)
(completions-auto-update-exit): New functions.
(completions-auto-update-mode): New global minor mode.
* doc/emacs/mini.texi (Completion Options): Document it.
* etc/NEWS: Announce it.
2024-01-21 07:57:14 +01:00
Eshel Yaron
aa1decd16b
; doc/emacs/mini.texi: Improve cross referencing. 2024-01-21 07:57:13 +01:00
Eshel Yaron
5725301b01
* doc/lispref/minibuf.texi (Completion Commands): Fix typos. 2024-01-21 07:57:13 +01:00
Eshel Yaron
af71861125
Support narrowing (restricting) minibuffer completions
Add new minibuffer commands for restricting the list of possible
completion candidates.

* lisp/minibuffer.el (completion-fail-discreetly): Fix docstring typo.
(minibuffer-narrow-completions-function): New variable.
(completion--fail, minibuffer-narrow-completions-p)
(minibuffer-narrow-completions-by-regexp)
(minibuffer--completion-predicate-description)
(minibuffer--add-completions-predicate): New functions.
(minibuffer-narrow-completions-to-current)
(minibuffer-narrow-completions)
(minibuffer-widen-completions): New commands.
(minibuffer-narrow-completions-map): New prefix keymap.  Bind new
commands to 'n', 'm' and 'w', respectively.
(minibuffer-local-completion-map): Bind new prefix keymap to 'C-x n'.
(completions-header-format, completion--do-completion)
(display-completion-list, minibuffer-completion-help): Update.

* lisp/simple.el (completions-narrow-mode): New minor mode.
(completion-setup-function): Enable it in *Completions* buffer when
there are completions restrictions in place.

* lisp/menu-bar.el (minibuffer-local-completion-map): Add completions
narrowing commands to "Minibuf" menu.

* lisp/help-fns.el (help--symbol-completion-table): Provide bespoke
'narrow-completions-function' that keeps only symbols with a given
symbol property.

* doc/emacs/emacs.texi (Top)
* doc/emacs/mini.texi (Completion): Update menu.
(Narrow Completions): New subsection.
(Completion Commands, Completion Styles)
(Completion Options)
* doc/emacs/help.texi (Name Help)
* doc/lispref/minibuf.texi (Completion Commands):
(Programmed Completion): Update documenation.

* etc/NEWS: Announce new feature.
2024-01-21 07:57:12 +01:00
Stefan Monnier
54d3de64e1 Merge branch 'mwheel-no-alts' 2024-01-20 15:04:12 -05:00
Stefan Monnier
db8890b3c9 mwheel.el: Unconditionally use the wheel-up/down/... events
The `mouse-wheel-DIR-event` vars were introduced because under X11
we get different `mouse-N` events depending on the users' mouse and
those same events can be used for other things for other rodents, so we
can't unconditionally treat those events as mouse-wheel events.

But this does not apply to the `wheel-up/down/...` events.
So hard code them.

* lisp/mwheel.el (mwheel--is-dir-p): Always consider the `wheel-DIR` events.
(mouse-wheel--setup-bindings): Always bind the `wheel-DIR` events.

* lisp/completion-preview.el (completion-preview--mouse-map):
Unconditionally bind the `wheel-DIR` events.
* lisp/edmacro.el (edmacro-fix-menu-commands): Hard code the
`wheel-DIR` events as mouse events regardless of `mouse-wheel-*-event`s.
* lisp/progmodes/flymake.el (flymake--mode-line-counter-map):
Do nothing, because it's already been done in commit e5be6c7ae3.

* doc/lispref/commands.texi (Misc Events): Document the need to use
`wheel-up/down/left/right` unconditionally.
2024-01-20 15:03:26 -05:00
Paul Eggert
3add626f14 Update from Gnulib by running admin/merge-gnulib 2024-01-20 11:45:38 -08:00
Eli Zaretskii
1b31a784bf Merge from origin/emacs-29
5bb5590dec Fix blunder in labeled_narrow_to_region
78ddb32fad Fix documentation of icon-elements
725a3f32f8 ; Fix typos in symbol names
6653ee66ca Improve two docstrings in ox-latex
7d869a0402 Doc fix in auth-source-read-char-choice
f149de223b Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/...
1f97a87879 Fix info-xref-tests
51f391998b Add @kindex in manuals for existing keybindings on 'C-x x...
2024-01-20 06:25:59 -05:00
Juri Linkov
6f75d0f36d New display action alist entry 'post-command-select-window' (bug#67993)
* doc/lispref/windows.texi (Buffer Display Action Alists):
Add 'post-command-select-window'.

* lisp/window.el (display-buffer): Add 'post-command-select-window'
to the docstring and handle at the end of function.
2024-01-16 18:54:04 +02:00
Mattias Engdegård
d2c3a98314 Hash-table documentation updates (bug#68244)
* doc/lispref/hash.texi (Creating Hash, Other Hash):
Manual updates for make-hash-table, hash-table-rehash-size and
hash-table-rehash-threshold.
* doc/lispref/objects.texi (Hash Table Type): Update example.
* src/fns.c (Fhash_table_rehash_size, Fhash_table_rehash_threshold):
Update doc strings.
* etc/NEWS: Announce changes.
2024-01-13 20:52:08 +01:00
Mattias Engdegård
519c7ca735 Don't pretend that hash-table-size is useful
* lisp/emacs-lisp/shortdoc.el (hash-table): Remove hash-table-size entry.
* doc/lispref/hash.texi (Other Hash):
* src/fns.c (Fhash_table_size): Make it clear that hash-table-size is
probably not worth using.
2024-01-13 20:50:39 +01:00
Eli Zaretskii
f149de223b Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/emacs into emacs-29 2024-01-13 20:40:35 +02:00
Eli Zaretskii
1f97a87879 Fix info-xref-tests
* doc/lispintro/emacs-lisp-intro.texi (How let Binds Variables):
Fix cross-reference.  (Bug#68428)

* test/lisp/info-xref-tests.el (info-xref-test-write-file): Fix
test on MS-Windows when run from MSYS Bash.
2024-01-13 20:38:34 +02:00
Juri Linkov
51f391998b Add @kindex in manuals for existing keybindings on 'C-x x/w' (bug#13167)
* doc/emacs/buffers.texi (Misc Buffer): Add @kindex for 'C-x x r',
'C-x x u', 'C-x x i'.

* doc/emacs/display.texi (Line Truncation): Add @kindex for 'C-x x t'.

* doc/emacs/files.texi (Reverting): Add @kindex for 'C-x x g'.

* doc/emacs/windows.texi (Change Window): Use new keybinding 'C-x w 0'
instead of 'M-x delete-windows-on'.

* doc/misc/info.texi (Create Info buffer): Add @kindex for 'C-x x n'.
2024-01-13 20:11:21 +02:00
Xiyue Deng
aaf3b63397 Fix typo in lispref "Creating Strings" section
* doc/lispref/strings.texi (String Basics): Fix typo (bug#68375).
2024-01-13 18:08:49 +01:00
Eli Zaretskii
91b1765cd4 Merge from origin/emacs-29
c494a6e879 Improve documentation of 'emacs_function' in modules
a08e6423cc ; * doc/emacs/fixit.texi (Spelling): Fix last change.
418547162d Improve documentation of Ispell commands
c4b4948845 Don't recommend inverse-video for debugging
2024-01-13 05:36:16 -05:00
Eli Zaretskii
f1736571fa Merge from origin/emacs-29
99efe5c80f Fix count of no-op functions (bug#68375)
0c01f97b73 Wrap @pxref of Abbrevs in parentheses (bug#68375)
70a09325d6 ; Fix last change in widget.texi
63411709a8 ; Fix typos
824cf54951 ; * etc/TODO: Add item to make play-sound non-blocking.
4fadbfe300 Add examples to the Widget manual
1bbb610821 Implement missing functions for custom-icon widget
29af214a75 Fix fontification of cgroup2 in fstab (bug#68367)
2024-01-13 05:36:16 -05:00
Eli Zaretskii
79a150ffa4 Merge from origin/emacs-29
d58d0fa52f Introduce 'let' using lexical binding in the Lisp Introdu...
1b12397263 ; Don't record multiple versions of use-package
8729a2a10d Fix 'rmail-summary-by-thread'
2a8c00bfc0 * doc/emacs/back.texi: Fix a typo.
2024-01-13 05:36:15 -05:00
Eli Zaretskii
c494a6e879 Improve documentation of 'emacs_function' in modules
* doc/lispref/internals.texi (Module Functions): Warn about
accessing the ARGS array in module functions.
2024-01-13 12:01:47 +02:00
Steven Allen
9b8b352ebc Set the 'name' prop in 'define-advice'
In addition to naming the advice function `symbol@name', set
the 'name' property to NAME.
* lisp/emacs-lisp/nadvice.el (define-advice): set the 'name'
property to NAME (requested in Bug#68114).  Fixes Bug#68294.

* doc/lispref/functions.texi (Advising Named Functions): Document
that 'define-advice' installs the advice with the specified name.
2024-01-13 11:43:01 +02:00
Eli Zaretskii
a08e6423cc ; * doc/emacs/fixit.texi (Spelling): Fix last change. 2024-01-13 11:23:43 +02:00
Eli Zaretskii
418547162d Improve documentation of Ispell commands
* doc/emacs/fixit.texi (Spelling): Document "C-u M-$" and warn
against modifications in recursive-edit.  (Bug#14192)
2024-01-12 10:03:08 +02:00
Slava Akhmechet
bfb486d802 Eglot: Simplify overlay handling in manual example
* doc/misc/eglot.texi (Extending Eglot): Simplify.

Copyright-paperwork-exempt: yes
2024-01-11 15:50:08 -06:00
Xiyue Deng
26eb9d3a8a Fix typo in lispref "Creating Strings" section
* doc/lispref/strings.texi (String Basics): Fix typo (bug#68375).
2024-01-11 15:18:37 +01:00
Stephen Berman
aa26852f31 Revert "Fix typo in lispref 'Creating Strings' section"
This reverts commit b825962ea8
which was mistakenly installed in master instead of emacs-29.
2024-01-11 15:12:00 +01:00
Xiyue Deng
b825962ea8 Fix typo in lispref "Creating Strings" section
* doc/lispref/strings.texi (String Basics): Fix typo.
2024-01-11 14:41:41 +01:00
Xiyue Deng
99efe5c80f Fix count of no-op functions (bug#68375)
It looks like there are actually three kinds of no-op functions.

* doc/lispref/functions.texi (Calling Functions): Fix count and
plural of no-op functions.

Copyright-paperwork-exempt: yes
2024-01-11 12:39:43 +02:00
Xiyue Deng
0c01f97b73 Wrap @pxref of Abbrevs in parentheses (bug#68375)
* doc/lispref/symbols.texi (Shorthands): Wrap `@pxref{Abbrevs}' in
parentheses.

Copyright-paperwork-exempt: yes
2024-01-11 12:36:31 +02:00
Eli Zaretskii
70a09325d6 ; Fix last change in widget.texi
* doc/misc/widget.texi (url-link, toggle, Defining New Widgets):
Divide @example's into @group's.  (Bug#66229)
2024-01-11 08:22:14 +02:00
Stefan Kangas
63411709a8 ; Fix typos 2024-01-11 00:32:15 +01:00
Mauro Aranda
4fadbfe300 Add examples to the Widget manual
* doc/misc/widget.texi (Widget Gallery, Defining New Widgets): Add
examples.  (Bug#66229)
2024-01-10 22:28:01 +01:00
Stefan Kangas
093ecb2aca ; Clarify detail in Start Emacs maximized FAQ
* doc/misc/efaq.texi (Start Emacs maximized): Explain that the sexp
should be put at the top of the file.
2024-01-10 18:21:50 +01:00
Michael Albinus
cf887b7eb0 Fix file name completion with Tramp on MS Windoes
* doc/misc/trampver.texi:
* lisp/net/trampver.el (tramp-version): Adapt Tramp versions.

* lisp/net/tramp.el (tramp-build-completion-file-name-regexp):
Do not use `tramp-volume-letter-regexp'.  (Bug#68320)
(tramp-completion-handle-expand-file-name): Simplify regexp.

* test/lisp/net/tramp-tests.el (tramp-test26-file-name-completion)
(tramp-test26-interactive-file-name-completion): Run also on MS Windows.
2024-01-10 12:49:08 +01:00
Juri Linkov
7755f71727 Support :category in completion-extra-properties (bug#68214)
* doc/lispref/minibuf.texi (Completion Variables): Add :category
to the table of completion-extra-properties.

* lisp/minibuffer.el (completion--metadata-get-1): New internal function.
(completion-metadata-get): Use 'completion--metadata-get-1'.
Thanks to Daniel Mendler <mail@daniel-mendler.de>.
(completion-extra-properties): Mention :category in the docstring.

* lisp/calendar/calendar.el (calendar-read-date): Use more
user-friendly let-binding of completion-extra-properties
with :category.
2024-01-10 09:34:47 +02:00
Jim Porter
d58d0fa52f Introduce 'let' using lexical binding in the Lisp Introduction
* doc/lispintro/emacs-lisp-intro.texi (Prevent confusion): Rework the
explanation to discuss how things work under lexical binding.
(How let Binds Variables): Describe the differences between lexical
and dynamic binding (including how to configure it).
(defvar): Mention that 'defvar' declares variables as always
dynamically-bound (bug#66756).
2024-01-09 10:31:06 -08:00