branch: externals/vertico commit b8d9792044464d129f98ce0116ab39038e1a00ec Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
Remove the autogenerated file vertico.texi --- vertico.texi | 306 ----------------------------------------------------------- 1 file changed, 306 deletions(-) diff --git a/vertico.texi b/vertico.texi deleted file mode 100644 index c02a6ab..0000000 --- a/vertico.texi +++ /dev/null @@ -1,306 +0,0 @@ -\input texinfo @c -*- texinfo -*- -@c %**start of header -@setfilename vertico.info -@settitle vertico.el - VERTical Interactive COmpletion -@documentencoding UTF-8 -@documentlanguage en -@c %**end of header - -@dircategory Emacs -@direntry -* Vertico: (vertico). VERTical Interactive COmpletion. -@end direntry - -@finalout -@titlepage -@title vertico.el - VERTical Interactive COmpletion -@author Daniel Mendler -@end titlepage - -@contents - -@ifnottex -@node Top -@top vertico.el - VERTical Interactive COmpletion -@end ifnottex - -@menu -* Introduction:: -* Features:: -* Configuration:: -* Keymap:: -* TAB completion:: -* Complementary packages:: -* Alternatives:: -* Problematic completion commands:: -* Contributions:: - -@detailmenu ---- The Detailed Node Listing --- - -Problematic completion commands - -* @code{org-set-tags-command}:: -* @code{Info-goto-node}:: -* @code{tmm-menubar}:: - -@end detailmenu -@end menu - -@node Introduction -@chapter Introduction - -This package provides a minimalistic vertical completion UI, which is based on -the default completion system. By reusing the default system, Vertico achieves -full compatibility with built-in Emacs commands and completion tables. Vertico -is pretty bare-bone and only provides a minimal set of commands. The code base -is less than 500 lines of code. Additional optional enhancements can be provided -externally by complementary packages. - -@node Features -@chapter Features - -@itemize -@item -Vertical display with arrow key navigation -@item -Shows the index of the current candidate and the total number of candidates -@item -The current candidate is inserted with @samp{TAB} and selected with @samp{RET} -@item -Non-existing candidates are entered by moving the point to the prompt line -@item -Candidates are sorted by history, string length and alphabetically -@item -Long candidates with newlines are formatted to take up less space -@item -Support for @code{annotation-function}, @code{affixation-function} and @code{x-group-function} -@end itemize - -@uref{https://github.com/minad/vertico/blob/main/screenshot.svg?raw=true} - -@node Configuration -@chapter Configuration - -Vertico is available from @uref{http://elpa.gnu.org/packages/vertico.html, GNU ELPA}, such that it can be installed directly via -@code{package-install}. After installation, the global minor mode can be enabled with -@samp{M-x vertico-mode}. In order to configure Vertico and other packages in your -init.el, you may want to use @code{use-package}. I recommend to give orderless -completion a try, which is different from the familiar prefix TAB completion. -Here is an example configuration: - -@lisp -;; Enable vertico -(use-package vertico - :init - (vertico-mode)) - -;; Use the `orderless' completion style. -;; Enable `partial-completion' for files to allow path expansion. -;; You may prefer to use `initials' instead of `partial-completion'. -(use-package orderless - :init - (setq completion-styles '(orderless) - completion-category-defaults nil - completion-category-overrides '((file (styles . (partial-completion)))))) - -;; Persist history over Emacs restarts. Vertico sorts by history. -(use-package savehist - :init - (savehist-mode)) - -;; A few more useful configurations... -(use-package emacs - :init - ;; Add prompt indicator to `completing-read-multiple'. - (defun crm-indicator (args) - (cons (concat "[CRM] " (car args)) (cdr args))) - (advice-add #'completing-read-multiple :filter-args #'crm-indicator) - - ;; Grow and shrink minibuffer - ;;(setq resize-mini-windows t) - - ;; Do not allow the cursor in the minibuffer prompt - (setq minibuffer-prompt-properties - '(read-only t cursor-intangible t face minibuffer-prompt)) - (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) - - ;; Enable recursive minibuffers - (setq enable-recursive-minibuffers t)) -@end lisp - -@node Keymap -@chapter Keymap - -Vertico defines its own local keymap in the minibuffer which is derived from -@code{minibuffer-local-map}. The keymap mostly keeps the @code{fundamental-mode} -keybindings intact, but rebinds a few commands. Note in particular the binding -of @samp{TAB} to @code{vertico-insert} and the bindings of @code{vertico-exit/exit-input}. - -@itemize -@item -@code{beginning-of-buffer}, @code{minibuffer-beginning-of-buffer} -> @code{vertico-beginning-of-buffer} -@item -@code{end-of-buffer} -> @code{vertico-end-of-buffer} -@item -@code{scroll-down-command} -> @code{vertico-scroll-down} -@item -@code{scroll-up-command} -> @code{vertico-scroll-up} -@item -@code{next-line}, @code{next-line-or-history-element} -> @code{vertico-next} -@item -@code{previous-line}, @code{previous-line-or-history-element} -> @code{vertico-previous} -@item -@code{exit-minibuffer} -> @code{vertico-exit} -@item -@code{kill-ring-save} -> @code{vertico-save} -@item -@samp{<C-return>} -> @code{vertico-exit-input} -@item -@samp{TAB} -> @code{vertico-insert} -@end itemize - -@node TAB completion -@chapter TAB completion - -The bindings of the @code{minibuffer-local-completion-map} are not available in -Vertico by default. This means that TAB works differently from what you may -expect from the default Emacs completion system. - -If you prefer to have the default completion commands a key press away you can -add new bindings or even replace the Vertico bindings. Then the default -completion commands will work as usual. For example you can use @samp{M-TAB} to cycle -between candidates if you have set @code{completion-cycle-threshold}. - -@lisp -(define-key vertico-map "?" #'minibuffer-completion-help) -(define-key vertico-map (kbd "M-RET") #'minibuffer-force-complete-and-exit) -(define-key vertico-map (kbd "M-TAB") #'minibuffer-complete) -@end lisp - -The @code{orderless} completion style does not support TAB prefix completion. In -order to enable that you may want to combine @code{orderless} with @code{substring}, or -not use @code{orderless} at all. - -@lisp -(setq completion-styles '(substring orderless)) -(setq completion-styles '(basic substring partial-completion flex)) -@end lisp - -If Vertico is active, it makes sense to disable the automatic @samp{*Completions*} -buffer by setting @code{completion-auto-help} to @code{nil}. TAB-completion can be made -less noisy by setting @code{completion-show-inline-help} to @code{nil}. - -@lisp -(advice-add #'vertico--setup :after - (lambda (&rest _) - (setq-local completion-auto-help nil - completion-show-inline-help nil))) -@end lisp - -@node Complementary packages -@chapter Complementary packages - -Vertico works well together with a few complementary packages, which enrich the -completion UI@. These packages are fully supported: - -@itemize -@item -@uref{https://github.com/minad/marginalia, Marginalia}: Rich annotations in the minibuffer -@item -@uref{https://github.com/minad/consult, Consult}: Many useful search and navigation commands -@item -@uref{https://github.com/oantolin/embark, Embark}: Minibuffer actions and context menu -@item -@uref{https://github.com/oantolin/orderless, Orderless}: Advanced completion style -@end itemize - -@node Alternatives -@chapter Alternatives - -There are many alternative completion UIs, each UI with its own advantages and -disadvantages. The @uref{https://github.com/raxod502/selectrum, Selectrum readme} provides an extensive comparison of many -available completion systems from the perspective of Selectrum. - -Vertico aims to be fully compliant with all Emacs commands and achieves that -with a minimal code base, relying purely on @code{completing-read} while avoiding to -invent its own APIs. Inventing a custom API as Helm or Ivy is explicitly avoided -in order to increase flexibility and package reuse. - -Since Vertico only provides the UI, you may want to combine it with some of the -complementary packages, to give a full-featured completion experience similar to -Ivy. Vertico is targeted at users interested in crafting their Emacs precisely -to their liking - completion plays an integral part in how the users interacts -with Emacs. There are at least two other interactive completion UIs, which -follow a similar philosophy: - -@itemize -@item -@uref{https://github.com/raxod502/selectrum, Selectrum}: If you are looking for a less minimalistic and more full-featured -(but also more complex) package, you may be interested in Selectrum, which -provides a similar UI as Vertico. Additionally Selectrum supports Avy-style -quick keys, a horizontal display and a configurable buffer display. -@item -@uref{https://github.com/oantolin/icomplete-vertical, Icomplete-vertical}: This package enhances the Emacs builtin Icomplete with a -vertical display. In contrast to Vertico, the candidates are rotated such that -the current candidate always appears at the top. From my perspective, -candidate rotation feels a bit less intuitive than the UI provided by Vertico -or Selectrum. -@end itemize - -@node Problematic completion commands -@chapter Problematic completion commands - -@menu -* @code{org-set-tags-command}:: -* @code{Info-goto-node}:: -* @code{tmm-menubar}:: -@end menu - -@node @code{org-set-tags-command} -@section @code{org-set-tags-command} - -@code{org-set-tags-command} implements a completion table which relies on the @code{basic} -completion style and TAB completion. This table does not work well with Vertico -and Icomplete. The issue can be mitigated by deactivating most of the Vertico UI -and relying purely on TAB completion. The UI is still enhanced by Vertico, since -Vertico shows the available tags. - -@lisp -(defun disable-selection () - (when (eq minibuffer-completion-table #'org-tags-completion-function) - (setq-local vertico-map minibuffer-local-completion-map - completion-cycle-threshold nil - completion-styles '(basic)))) -(advice-add #'vertico--setup :before #'disable-selection) -@end lisp - -In order to fix the issues properly, @code{org-set-tags-command} should be -implemented using @code{completing-read-multiple} as discussed on the @uref{https://lists.gnu.org/archive/html/emacs-orgmode/2020-07/msg00222.html, mailing list}. - -@node @code{Info-goto-node} -@section @code{Info-goto-node} - -The command @code{Info-goto-node} uses the @code{Info-read-node-name} completion table, -which almost works as is with Vertico. However there is the issue that the -completion table sometimes throws unexpected errors (bug#47771). - -@node @code{tmm-menubar} -@section @code{tmm-menubar} - -The text menu bar works well with Vertico but always shows a @samp{*Completions*} -buffer, which is unwanted if you are using the Vertico UI@. This completion -buffer can be disabled as follows. - -@lisp -(defun kill-completions () (kill-buffer "*Completions*")) -(advice-add #'tmm-add-prompt :after #'kill-completions) -@end lisp - -@node Contributions -@chapter Contributions - -Since this package is part of GNU ELPA, contributions require copyright -assignment to the FSF@. - -@bye \ No newline at end of file