(completion-pcm--optimize-pattern): Turn multiple consecutive
occurrences of `any` into just a single one.
Suggested by Dario Gjorgjevski <dario.gjorgjevski@gmail.com>.
* doc/lispref/minibuf.texi (Completion Variables)
(Programmed Completion): Describe precedence rules
of affixation-function and annotation-function.
* lisp/minibuffer.el (completion-metadata)
(completion-extra-properties): Describe precedence rules
of affixation-function and annotation-function.
(minibuffer-completion-help): First try to apply
affixation-function, if there is no such function,
try annotation-function.
* lisp/international/mule-cmds.el (mule--ucs-names-affixation):
Replace mule--ucs-names-annotation to display chars in prefixes
that implements two FIXME items.
(read-char-by-name): Let-bind completion-tab-width to 4.
Use affixation-function instead of annotation-function.
* lisp/minibuffer.el (completion-tab-width): New variable.
(completion--insert-strings): Align colwidth to tab positions
when completion-tab-width is non-nil.
* lisp/simple.el (completion-setup-function): Set tab-width to
completion-tab-width when completion-tab-width is non-nil.
https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg01263.html
* doc/lispref/minibuf.texi (Completion Variables)
(Programmed Completion): Add affixation-function.
* lisp/help-fns.el (help--symbol-completion-table-affixation): New function.
(help--symbol-completion-table): Set affixation-function when
completions-detailed is non-nil.
* lisp/minibuffer.el (completion-metadata): Add affixation-function
to docstring.
(completions-annotations): Inherit from shadow with italic.
(completions-detailed): New defcustom.
(completion--insert-strings): Count string-width on all strings in
completion list. Insert prefix and suffix.
(completion-extra-properties): Add affixation-function to docstring.
(minibuffer-completion-help): Call affixation-function.
(minibuffer-default-prompt-format): Move down closer to its use.
https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg00613.html
* doc/emacs/mini.texi (Basic Minibuffer): Add an entry for
minibuffer-follows-selected-frame.
* doc/lispref/minibuf.texi (Minibuffer Misc): Describe the new parameter to
minibufferp, LIVE.
* etc/NEWS: Add an entry describing the new minibuffer strategy.
* lisp/cus-start.el (minibuffer-prompt-properties--setter): Add an entry for
minibuffer-follows-selected-frame.
* lisp/minibuffer.el (minibuffer-message): Check for the current buffer being
an _active_ minibuffer rather than merely a minibuffer.
* src/frame.c (do_switch_frame): Call move_minibuffer_onto_frame.
* src/lisp.h (Top level): Add prototypes for move_minibuffer_onto_frame and
is_minibuffer.
* src/minibuf.c (minibuf_follows_frame): New function which ignores local and
let-bound values of minibuffer-follows-selected-frame.
(choose_minibuf_frame): Reformulate this function to reuse a minibuffer window
where possible, and to ensure no other frame has its minibuffer current, but
only when `minibuffer-follows-selected-frame'.
(move_minibuffer_onto_frame): New function.
(live_minibuffer_p): New function.
(Fminibufferp): Add a new &optional parameter LIVE. Reformulate, possibly
calling live_minibuffer_p.
(read_minibuf): move the incrementation of minibuf_level to before the call of
choose_minibuf_frame. Empty the miniwindows of frames without an active
minibuffer, rather than of all but the current frame.
(is_minibuffer): New function.
(read_minibuf_unwind): Note the miniwindow being restored and resize all other
miniwindows to zero size.
(minibuffer-follows-selected-frame): New configuration variable.
* src/window.c (candidate_window_p): In some scenarios, check the miniwindow
holds an active minibuffer.
* src/xdisp.c (get_window_cursor_type): Suppress the cursor for non-active
miniwindows, regardless of minibuf_level.
65078e0a76 * lisp/info.el (Info-hide-note-references): Doc fix. (Bug...
30305b543d Make lisp/progmodes/js.el dependent on CC Mode in the Make...
c37b2a9b42 Yet another fix for 'set-minibuffer-message'
72dd911981 Fix posn-at-x-y in builds --without-x
ace25f2066 Clarify the seq-reduce documentation
7d598e281d Make tramp-completion-reread-directory-timeout obsolete (B...
2c31ce18ea Fix 'message' when there's active minibuffer on another frame
# Conflicts:
# doc/misc/tramp.texi
# etc/NEWS
* lisp/minibuffer.el (set-minibuffer-message): Don't reuse the
active minibuffer for displaying messages unless the active
minibuffer is on the same frame as the selected window.
Copyright-paperwork-exempt: yes
* doc/lispref/minibuf.texi (Text from Minibuffer): Document it.
* lisp/minibuffer.el (completion--replace): Preserve text
properties on completed items (bug#43218).
* doc/lispref/minibuf.texi (Text from Minibuffer): Document it.
* lisp/minibuffer.el (format-prompt): Allow DEFAULT to be a list
(and use the first element). This is how many of the prompting
functions interpret their default parameters.
This reverts:
- commit 585fe00557, which is titled
"Fix up previous icomplete-show-matches-on-no-input change"
- commit 1b8d369c38, which is titled
"Change icomplete-show-matches-on-no-input behavior".
A simpler, less intrusive fix follows shortly after this commit.
* doc/lispref/minibuf.texi (Text from Minibuffer): Document it.
* lisp/help-fns.el (describe-function): Adjust the caller.
* lisp/minibuffer.el (format-prompt): Interpret a nil default
value as "no default".
* doc/lispref/minibuf.texi (Text from Minibuffer): Document them.
* lisp/minibuffer.el (format-prompt): New function (bug#12443).
(minibuffer-default-prompt-format): New variable.
* lisp/icomplete.el (icomplete-show-matches-on-no-input): Doc fix.
(icomplete-completions): Set completion-content-when-empty.
* lisp/minibuffer.el (completion-content-when-empty): New variable.
(completion--complete-and-exit): Use it (bug#19032).
Based on a patch by Matthew Leach <matthew@mattleach.net>.
145a151d62 Correct Fido-mode's backspacing of directories with spaces
660b9b8cfb Default completion-flex-nospace to nil
fb5f616ae8 Improve an example in w32 FAQ
By default, the flex completion style _does_ match spaces.
Fixes: bug#40625
* lisp/icomplete.el (icomplete--fido-mode-setup): Force
completion-flex-nospace to nil.
* lisp/minibuffer.el (completion-flex-nospace): Default to nil.
* lisp/minibuffer.el (minibuffer-completion-help): Run
display-completion-list in the original buffer mainbuf
to allow completion-setup-function set completion-reference-buffer to it.
* lisp/minibuffer.el (minibuffer--require-match): New variable.
(completing-read-default): Bind it to the REQUIRE-MATCH value.
(minibuffer-force-complete-and-exit): Consult it to allow input
with no matches when a match is not required (bug#38992).
* lisp/icomplete.el (icomplete-exhibit): Use it to render the
correct parens around matches.
* lisp/minibuffer.el (minibuffer--message-overlay-pos): New
function.
(set-minibuffer-message): Use it to determine where to show the
overlay with the temporary message.
* lisp/ido.el (ido-exhibit): Revert "Render Ido suggestions using
an overlay"; this restores the original code which inserted the
match-status information into the minibuffer, instead of
displaying it in an overlay with an after-string. Put the special
'minibuffer-message' text property at the beginning of the
inserted text. (Bug#39379)
* etc/NEWS:
* doc/lispref/display.texi (Displaying Messages):
* doc/lispref/text.texi (Special Properties): Document the
'minibuffer-message' text property and its effect.
* lisp/minibuffer.el (set-minibuffer-message): Fix cursor position
for the temporary display of an echo-area message when minibuffer
is active. Ensure the message is visible even if the end of the
completion candidates presented by the likes of Icomplete mode is
not visible due to its length, under resize-mini-windows = nil.
(Bug#38457)
This moves the logic from the series of commits starting in the commit named:
Improve sorting of flex completion style with non-nil minibuffer-default
to lisp/icomplete.el, so far the only confirmed beneficiary of that
functionality.
* lisp/icomplete.el (icomplete--sorted-completions): Consider
minibuffer-default here.
* lisp/minibuffer.el (completion--flex-adjust-metadata): Simplify.
(cherry picked from commit 0d2a711dc9)
If minibuffer-default coincided with the first of completions, the
empty list would be returned.
* lisp/minibuffer.el (completion--flex-adjust-metadata): Make sure
to never return empty list.
This previous commit targetting this function introduced a bug whereby
the completion table's sorting function wouldn't be called. That is
fixed by this commit, which also simplifies the function further: it
now skips re-sorting the completions completely if there is no
minibuffer input at all (in other words, when flex isn't doing
anything useful).
* lisp/minibuffer.el (completion--flex-adjust-metadata): Simplify.
This affects the behaviour of flex completion when there is a default
completion and the user hasn't entered any input pattern to flex-match
against. It is most visible when icomplete-mode or fido-mode are
being used in conjunctio.
When using M-x man, for instance, the default completion is picked
from text around point. Say it is "emacs" (for Emacs's man page). It
will not match the intended completion, "emacs(1)", exactly. If the
user hasn't yet given any input to the completion prompt, that
completion should bubble to top so that
icomplete-force-complete-and-exit will select it, but it didn't.
This new approach uses 'string-prefix-p' instead of 'equal' to find
the default to bubble to the top. This strategy could eventually be
improved, most naturally by flex-matching the default string to all
the candidates and picking the highest scoring one.
Additionally, the new strategy only considers minibuffer-default if
there is no input in the minibuffer, which seems sensible and produces
a small but noticeable speedup.
* lisp/minibuffer.el (completion--flex-adjust-metadata):
Reformulate sorting strategy.
* doc/lispref/display.texi (Displaying Messages): Document
set-message-function and clear-message-function.
* lisp/minibuffer.el (minibuffer-message-clear-timeout): New defcustom.
(minibuffer-message-timer, minibuffer-message-overlay): New variables.
(set-minibuffer-message, clear-minibuffer-message): New functions.
(set-message-function, clear-message-function): Set variables to
set-minibuffer-message and clear-minibuffer-message respectively.
* src/keyboard.c (read_char): Call clear_message when
Vclear_message_function is a function.
* src/xdisp.c (set_message): Call Vset_message_function when it's a function.
(clear_message): Call Vclear_message_function when it's a function.
(syms_of_xdisp): New variables set-message-function and clear-message-function
(bug#38457).
* lisp/minibuffer.el (minibuffer-local-map): Move remap of
recenter/scroll keybindings to read-char-from-minibuffer-map.
* lisp/subr.el (read-char-from-minibuffer-map): Move remap of
recenter/scroll keybindings here from minibuffer-local-map.
(bug#38502)
`completion-pcm--hilit-commonality` so that these faces doesn't
override possible already existing faces in other UIs.
* lisp/minibuffer.el (completion-pcm--hilit-commonality): Use
`add-face-text-property` instead of `put-text-property`.
This fixes bug#38458 where a final `point` in the pattern prevented
the expected normal behavior of point moving after the completion
of the final implicit `any`.
(completion-pcm--find-all-completions)
(completion-substring--all-completions): Use it.
(completion-basic--pattern): Don't both removing "" any more.
(completion-basic-try-completion): Use it as well as
`completion-basic--pattern`.
* doc/lispref/display.texi (Displaying Messages): Explain the
behavior of using minibuffer-message if the minibuffer is active.
* src/editfns.c (Fmessage_in_echo_area): New function with body
copied from Fmessage.
(Fmessage): Call minibuffer-message in the active minibuffer,
otherwise call Fmessage_in_echo_area.
(message-in-echo-area): New variable.
* lisp/isearch.el (isearch--momentary-message, isearch-message):
* lisp/minibuffer.el (minibuffer-message, minibuffer-completion-help):
Use 'message-in-echo-area' instead of 'message' where necessary.
* lisp/autorevert.el (auto-revert-handler):
* lisp/man.el (Man-bgproc-sentinel):
* lisp/subr.el (do-after-load-evaluation):
Revert recent changes that replaced 'message' with 'minibuffer-message'.
This is not needed anymore since 'message' uses 'minibuffer-message'
in the active minibuffer.
matching spaces. This allows flex style working smoothly with other
styles like helm using spaces.
* lisp/minibuffer.el (completion-flex-nospace): New user var.
(completion-flex-try-completion): Use it.
(completion-flex-all-completions): Same.
* lisp/subr.el (do-after-load-evaluation): Use minibuffer-message
to not obscure a possibly active minibuffer.
* lisp/minibuffer.el (minibuffer-message):
Record message in the *Messages* buffer.
* lisp/minibuffer.el (with-minibuffer-selected-window): New macro.
(minibuffer-recenter-top-bottom, minibuffer-scroll-up-command)
(minibuffer-scroll-down-command, minibuffer-scroll-other-window):
(minibuffer-scroll-other-window-down): New commands.
(minibuffer-local-map): Remap recenter/scroll symbols to their
minibuffer wrappers: recenter-top-bottom to minibuffer-recenter-top-bottom.
* src/window.c (Fother_window_for_scrolling): Use 'lambda' value for
MINIBUF arg of Fnext_window, so minibuffer-scroll-other-window and
minibuffer-scroll-other-window-down doesn't try to scroll the
minibuffer window.