mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-11 05:51:21 -08:00
As explained in the manual (20.7.2 Fast minibuffer selection)
'fido-mode' and 'fido-vertical-mode' give priority the "flex"
completion style.
In fact, bug#62015 was recently fixed in commit because that priority
was not taking place correctly and some completions were missed.
However, an exception must be made for the 'external' completion
style.
That style, made available by the lisp/external-completion.el library,
is specifically designed to work with backends that provide only a
partial view of all completions. If we allow 'flex' to step in front
of 'external' it could mean that 'flex' matches something and
'external' isn't triggered as it probably should.
To reproduce have the rust-mode ELPA package and the rust-analyzer LSP
server handy. Then:
emacs -Q -f package-initialize main.rs
Where main.rs is this content:
fn foo1() {} fn foo2() {} fn foo3() {}
fn foobar1() {} fn foobar2() {} fn foobar3() {}
The rust-analyzer server can be quickly configured to return only 3
workspace symbols max, so evaluate:
(setq-default eglot-workspace-configuration
'(:rust-analyzer
(:workspace (:symbol (:search (:limit 3))))))
Now start M-x eglot and M-x fido-vertical-mode and type C-u M-. to
find an arbitrary symbol in this one-file project.
Type 'f'. You will see the three foo's are listed, correctly.
Now type '3'. You will only see "foo3".
But that's wrong because "foobar3" was available, if only the server
had been asked for it. This commit fixes the situation and no
completions are lost.
As an unfortunate side-effect of this commit, the fontification of
completions-common-part on the matches is lost, but that is not worse
than missing out on completions and there are better ways to recover
the fontification anyway (in external-completion.el).
See also:
https://github.com/joaotavora/eglot/discussions/1219#discussioncomment-5818336
* lisp/icomplete.el (icomplete--fido-ccd): Do not touch entries
with 'external in them.
|
||
|---|---|---|
| .. | ||
| calc | ||
| calendar | ||
| cedet | ||
| emacs-lisp | ||
| emulation | ||
| erc | ||
| eshell | ||
| gnus | ||
| image | ||
| international | ||
| language | ||
| leim/quail | ||
| mh-e | ||
| net | ||
| nxml | ||
| obsolete | ||
| org | ||
| play | ||
| progmodes | ||
| term | ||
| textmodes | ||
| url | ||
| use-package | ||
| vc | ||
| abbrev.el | ||
| align.el | ||
| allout-widgets.el | ||
| allout.el | ||
| ansi-color.el | ||
| ansi-osc.el | ||
| apropos.el | ||
| arc-mode.el | ||
| array.el | ||
| auth-source-pass.el | ||
| auth-source.el | ||
| autoinsert.el | ||
| autorevert.el | ||
| avoid.el | ||
| battery.el | ||
| bindings.el | ||
| bookmark.el | ||
| bs.el | ||
| buff-menu.el | ||
| button.el | ||
| calculator.el | ||
| case-table.el | ||
| cdl.el | ||
| ChangeLog.1 | ||
| ChangeLog.2 | ||
| ChangeLog.3 | ||
| ChangeLog.4 | ||
| ChangeLog.5 | ||
| ChangeLog.6 | ||
| ChangeLog.7 | ||
| ChangeLog.8 | ||
| ChangeLog.9 | ||
| ChangeLog.10 | ||
| ChangeLog.11 | ||
| ChangeLog.12 | ||
| ChangeLog.13 | ||
| ChangeLog.14 | ||
| ChangeLog.15 | ||
| ChangeLog.16 | ||
| ChangeLog.17 | ||
| char-fold.el | ||
| chistory.el | ||
| cmuscheme.el | ||
| color.el | ||
| comint.el | ||
| completion.el | ||
| composite.el | ||
| COPYING | ||
| cus-dep.el | ||
| cus-edit.el | ||
| cus-face.el | ||
| cus-start.el | ||
| cus-theme.el | ||
| custom.el | ||
| dabbrev.el | ||
| delim-col.el | ||
| delsel.el | ||
| descr-text.el | ||
| desktop.el | ||
| dframe.el | ||
| dired-aux.el | ||
| dired-x.el | ||
| dired.el | ||
| dirtrack.el | ||
| disp-table.el | ||
| display-fill-column-indicator.el | ||
| display-line-numbers.el | ||
| dnd.el | ||
| doc-view.el | ||
| dom.el | ||
| dos-fns.el | ||
| dos-vars.el | ||
| dos-w32.el | ||
| double.el | ||
| dynamic-setting.el | ||
| ebuff-menu.el | ||
| echistory.el | ||
| ecomplete.el | ||
| edmacro.el | ||
| ehelp.el | ||
| elec-pair.el | ||
| electric.el | ||
| elide-head.el | ||
| emacs-lock.el | ||
| env.el | ||
| epa-dired.el | ||
| epa-file.el | ||
| epa-hook.el | ||
| epa-ks.el | ||
| epa-mail.el | ||
| epa.el | ||
| epg-config.el | ||
| epg.el | ||
| expand.el | ||
| external-completion.el | ||
| ezimage.el | ||
| face-remap.el | ||
| facemenu.el | ||
| faces.el | ||
| ffap.el | ||
| filecache.el | ||
| fileloop.el | ||
| filenotify.el | ||
| files-x.el | ||
| files.el | ||
| filesets.el | ||
| find-cmd.el | ||
| find-dired.el | ||
| find-file.el | ||
| find-lisp.el | ||
| finder.el | ||
| flow-ctrl.el | ||
| foldout.el | ||
| follow.el | ||
| font-core.el | ||
| font-lock.el | ||
| format-spec.el | ||
| format.el | ||
| forms.el | ||
| frame.el | ||
| frameset.el | ||
| fringe.el | ||
| generic-x.el | ||
| help-at-pt.el | ||
| help-fns.el | ||
| help-macro.el | ||
| help-mode.el | ||
| help.el | ||
| hex-util.el | ||
| hexl.el | ||
| hfy-cmap.el | ||
| hi-lock.el | ||
| hilit-chg.el | ||
| hippie-exp.el | ||
| hl-line.el | ||
| htmlfontify.el | ||
| ibuf-ext.el | ||
| ibuf-macs.el | ||
| ibuffer.el | ||
| icomplete.el | ||
| ido.el | ||
| ielm.el | ||
| iimage.el | ||
| image-file.el | ||
| image-mode.el | ||
| image.el | ||
| imenu.el | ||
| indent.el | ||
| info-look.el | ||
| info-xref.el | ||
| info.el | ||
| informat.el | ||
| isearch.el | ||
| isearchb.el | ||
| jit-lock.el | ||
| jka-cmpr-hook.el | ||
| jka-compr.el | ||
| json.el | ||
| jsonrpc.el | ||
| kermit.el | ||
| keymap.el | ||
| kmacro.el | ||
| ldefs-boot.el | ||
| loadhist.el | ||
| loadup.el | ||
| locate.el | ||
| lpr.el | ||
| ls-lisp.el | ||
| macros.el | ||
| Makefile.in | ||
| man.el | ||
| master.el | ||
| mb-depth.el | ||
| md4.el | ||
| menu-bar.el | ||
| midnight.el | ||
| minibuf-eldef.el | ||
| minibuffer.el | ||
| misc.el | ||
| misearch.el | ||
| mouse-copy.el | ||
| mouse-drag.el | ||
| mouse.el | ||
| mpc.el | ||
| msb.el | ||
| mwheel.el | ||
| newcomment.el | ||
| notifications.el | ||
| novice.el | ||
| obarray.el | ||
| outline.el | ||
| paren.el | ||
| password-cache.el | ||
| pcmpl-cvs.el | ||
| pcmpl-git.el | ||
| pcmpl-gnu.el | ||
| pcmpl-linux.el | ||
| pcmpl-rpm.el | ||
| pcmpl-unix.el | ||
| pcmpl-x.el | ||
| pcomplete.el | ||
| pgtk-dnd.el | ||
| pixel-scroll.el | ||
| plstore.el | ||
| printing.el | ||
| proced.el | ||
| profiler.el | ||
| ps-bdf.el | ||
| ps-mule.el | ||
| ps-print.el | ||
| ps-samp.el | ||
| README | ||
| recentf.el | ||
| rect.el | ||
| register.el | ||
| registry.el | ||
| repeat.el | ||
| replace.el | ||
| reposition.el | ||
| reveal.el | ||
| rfn-eshadow.el | ||
| rot13.el | ||
| rtree.el | ||
| ruler-mode.el | ||
| savehist.el | ||
| saveplace.el | ||
| scroll-all.el | ||
| scroll-bar.el | ||
| scroll-lock.el | ||
| select.el | ||
| server.el | ||
| ses.el | ||
| shadowfile.el | ||
| shell.el | ||
| simple.el | ||
| skeleton.el | ||
| so-long.el | ||
| sort.el | ||
| soundex.el | ||
| speedbar.el | ||
| sqlite-mode.el | ||
| sqlite.el | ||
| startup.el | ||
| strokes.el | ||
| subr.el | ||
| svg.el | ||
| t-mouse.el | ||
| tab-bar.el | ||
| tab-line.el | ||
| tabify.el | ||
| talk.el | ||
| tar-mode.el | ||
| tempo.el | ||
| term.el | ||
| thingatpt.el | ||
| thread.el | ||
| time-stamp.el | ||
| time.el | ||
| timezone.el | ||
| tmm.el | ||
| tool-bar.el | ||
| tooltip.el | ||
| transient.el | ||
| tree-widget.el | ||
| treesit.el | ||
| tutorial.el | ||
| type-break.el | ||
| uniquify.el | ||
| userlock.el | ||
| vcursor.el | ||
| version.el | ||
| view.el | ||
| w32-fns.el | ||
| w32-vars.el | ||
| wdired.el | ||
| whitespace.el | ||
| wid-browse.el | ||
| wid-edit.el | ||
| widget.el | ||
| windmove.el | ||
| window.el | ||
| winner.el | ||
| woman.el | ||
| x-dnd.el | ||
| xdg.el | ||
| xml.el | ||
| xt-mouse.el | ||
| xwidget.el | ||
| yank-media.el | ||
This directory contains source code for the parts of Emacs that are
written in Emacs Lisp. *.el files are Emacs Lisp source, and the
corresponding *.elc files are byte-compiled versions. Byte-compiled
files are architecture-independent.
The term subdirectory contains Lisp files that customize Emacs for
certain terminal types. When Emacs starts, it checks the TERM
environment variable to get the terminal type and loads
'term/${TERM}.el' if it exists.
The other subdirectories hold Lisp packages grouped by their general
purpose.