Commit Diff


commit - 72c676acdbbe4bed7e197bb3348efda108c20c18
commit + 9d2857fda5998b9bd628596018d05a7dc2dfd32a
blob - 5a3934816a324058d81418a9eb7ae0bc8fc2faa3 (mode 644)
blob + /dev/null
--- elpa/dash-functional-20210210.1449/dash-functional-autoloads.el
+++ /dev/null
@@ -1,15 +0,0 @@
-;;; dash-functional-autoloads.el --- automatically extracted autoloads  -*- lexical-binding: t -*-
-;;
-;;; Code:
-
-(add-to-list 'load-path (directory-file-name
-                         (or (file-name-directory #$) (car load-path))))
-
-
-;; Local Variables:
-;; version-control: never
-;; no-byte-compile: t
-;; no-update-autoloads: t
-;; coding: utf-8-emacs-unix
-;; End:
-;;; dash-functional-autoloads.el ends here
blob - e172050f1a19e1e331407f6b00fda6b6f58fd1ff (mode 644)
blob + /dev/null
--- elpa/dash-functional-20210210.1449/dash-functional-pkg.el
+++ /dev/null
@@ -1,2 +0,0 @@
-;;; Generated package description from dash-functional.el  -*- no-byte-compile: t -*-
-(define-package "dash-functional" "20210210.1449" "Collection of useful combinators for Emacs Lisp" '((dash "2.18.0")) :commit "da167c51e9fd167a48d06c7c0ee8e3ac7abd9718" :authors '(("Matus Goljer" . "matus.goljer@gmail.com") ("Magnar Sveen" . "magnars@gmail.com")) :maintainer '("Matus Goljer" . "matus.goljer@gmail.com") :keywords '("extensions" "lisp") :url "https://github.com/magnars/dash.el")
blob - 1cc063956b7e5859639a3d7491b5ff78fefa53b9 (mode 644)
blob + /dev/null
--- elpa/dash-functional-20210210.1449/dash-functional.el
+++ /dev/null
@@ -1,55 +0,0 @@
-;;; dash-functional.el --- Collection of useful combinators for Emacs Lisp  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2013-2021 Free Software Foundation, Inc.
-
-;; Author: Matus Goljer <matus.goljer@gmail.com>
-;;         Magnar Sveen <magnars@gmail.com>
-;; Version: 1.3.0
-;; Package-Version: 20210210.1449
-;; Package-Commit: da167c51e9fd167a48d06c7c0ee8e3ac7abd9718
-;; Package-Requires: ((dash "2.18.0"))
-;; Keywords: extensions, lisp
-;; Homepage: https://github.com/magnars/dash.el
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; *N.B.:* This package has been absorbed, and is therefore made
-;; obsolete, by the `dash' package, version 2.18.0.
-;;
-;; If you maintain a package that depends on `dash-functional', then
-;; you should change that to instead depend on `dash' version 2.18.0,
-;; and remove all references to `dash-functional'.
-;;
-;; If you use any packages that depend on `dash-functional', either
-;; directly or indirectly, then you will have to wait until all of
-;; them have transitioned away from it before you can remove it.
-;;
-;; For more information on this, see the following URL:
-;; `https://github.com/magnars/dash.el/wiki/Obsoletion-of-dash-functional.el'
-
-;;; Code:
-
-(require 'dash)
-
-(eval-and-compile
-  (let ((msg "Package dash-functional is obsolete; use dash 2.18.0 instead"))
-    (if (and noninteractive (fboundp 'byte-compile-warn))
-        (byte-compile-warn msg)
-      (message "%s" msg))))
-
-(provide 'dash-functional)
-
-;;; dash-functional.el ends here
blob - da02ee3fad5bb9e201ecf4ae9f0b36761a48d34d (mode 644)
blob + /dev/null
--- elpa/posframe-20211126.944/posframe-autoloads.el
+++ /dev/null
@@ -1,271 +0,0 @@
-;;; posframe-autoloads.el --- automatically extracted autoloads
-;;
-;;; Code:
-
-(add-to-list 'load-path (directory-file-name
-                         (or (file-name-directory #$) (car load-path))))
-
-
-;;;### (autoloads nil "posframe" "posframe.el" (0 0 0 0))
-;;; Generated autoloads from posframe.el
-
-(autoload 'posframe-workable-p "posframe" "\
-Test posframe workable status." nil nil)
-
-(autoload 'posframe-show "posframe" "\
-Pop up a posframe to show STRING at POSITION.
-
- (1) POSITION
-
-POSITION can be:
-1. An integer, meaning point position.
-2. A cons of two integers, meaning absolute X and Y coordinates.
-3. Other type, in which case the corresponding POSHANDLER should be
-   provided.
-
- (2) POSHANDLER
-
-POSHANDLER is a function of one argument returning an actual
-position.  Its argument is a plist of the following form:
-
-  (:position xxx
-   :poshandler xxx
-   :font-height xxx
-   :font-width xxx
-   :posframe xxx
-   :posframe-width xxx
-   :posframe-height xxx
-   :posframe-buffer xxx
-   :parent-frame xxx
-   :parent-window-left xxx
-   :parent-window-top xxx
-   :parent-frame-width xxx
-   :parent-frame-height xxx
-   :parent-window xxx
-   :parent-window-width  xxx
-   :parent-window-height xxx
-   :mouse-x xxx
-   ;mouse-y xxx
-   :minibuffer-height xxx
-   :mode-line-height  xxx
-   :header-line-height xxx
-   :tab-line-height xxx
-   :x-pixel-offset xxx
-   :y-pixel-offset xxx)
-
-By default, poshandler is auto-selected based on the type of POSITION,
-but the selection can be overridden using the POSHANDLER argument.
-
-The names of poshandler functions are like:
-
-   `posframe-poshandler-p0.5p0-to-w0.5p1'
-
-which mean align posframe(0.5, 0) to a position(a, b)
-
-1. a = x of window(0.5, 0)
-2. b = y of point(1, 1)
-
-    posframe(p), frame(f), window(w), point(p), mouse(m)
-
-         (0,0)      (0.5,0)      (1,0)
-          +------------+-----------+
-          |                        |
-          |                        |
-          |                        |
- (0, 0.5) +                        + (1, 0.5)
-          |                        |
-          |                        |
-          |                        |
-          +------------+-----------+
-         (0,1)      (0.5,1)      (1,1)
-
-The alias of builtin poshandler functions are listed below:
-
-1.  `posframe-poshandler-frame-center'
-2.  `posframe-poshandler-frame-top-center'
-3.  `posframe-poshandler-frame-top-left-corner'
-4.  `posframe-poshandler-frame-top-right-corner'
-5.  `posframe-poshandler-frame-bottom-center'
-6.  `posframe-poshandler-frame-bottom-left-corner'
-7.  `posframe-poshandler-frame-bottom-right-corner'
-8.  `posframe-poshandler-window-center'
-9.  `posframe-poshandler-window-top-center'
-10. `posframe-poshandler-window-top-left-corner'
-11. `posframe-poshandler-window-top-right-corner'
-12. `posframe-poshandler-window-bottom-center'
-13. `posframe-poshandler-window-bottom-left-corner'
-14. `posframe-poshandler-window-bottom-right-corner'
-15. `posframe-poshandler-point-top-left-corner'
-16. `posframe-poshandler-point-bottom-left-corner'
-17. `posframe-poshandler-point-bottom-left-corner-upward'
-18. `posframe-poshandler-point-window-center'
-
-by the way, poshandler can be used by other packages easily with
-the help of function `posframe-poshandler-argbuilder'.  like:
-
-   (let* ((info (posframe-poshandler-argbuilder *MY-CHILD-FRAME*))
-          (posn (posframe-poshandler-window-center
-                 `(:posframe-width 800 :posframe-height 400 ,@info))))
-     `((left . ,(car posn))
-       (top . ,(cdr posn))))
-
- (3) POSHANDLER-EXTRA-INFO
-
-POSHANDLER-EXTRA-INFO is a plist, which will prepend to the
-argument of poshandler function: 'info', it will *OVERRIDE* the
-exist key in 'info'.
-
- (4) BUFFER-OR-NAME
-
-This posframe's buffer is BUFFER-OR-NAME, which can be a buffer
-or a name of a (possibly nonexistent) buffer.
-
-buffer name can prefix with space, for example ' *mybuffer*', so
-the buffer name will hide for ibuffer and `list-buffers'.
-
- (5) NO-PROPERTIES
-
-If NO-PROPERTIES is non-nil, The STRING's properties will
-be removed before being shown in posframe.
-
- (6) HEIGHT, MAX-HEIGHT, MIN-HEIGHT, WIDTH, MAX-WIDTH and MIN-WIDTH
-
-These arguments are specified in the canonical character width
-and height of posframe, more details can be found in docstring of
-function `fit-frame-to-buffer',
-
- (7) LEFT-FRINGE and RIGHT-FRINGE
-
-If LEFT-FRINGE or RIGHT-FRINGE is a number, left fringe or
-right fringe with be shown with the specified width.
-
- (8) BORDER-WIDTH, BORDER-COLOR, INTERNAL-BORDER-WIDTH and INTERNAL-BORDER-COLOR
-
-By default, posframe shows no borders, but users can specify
-borders by setting BORDER-WIDTH to a positive number.  Border
-color can be specified by BORDER-COLOR.
-
-INTERNAL-BORDER-WIDTH and INTERNAL-BORDER-COLOR are same as
-BORDER-WIDTH and BORDER-COLOR, but do not suggest to use for the
-reason:
-
-   Add distinct controls for child frames' borders (Bug#45620)
-   http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=ff7b1a133bfa7f2614650f8551824ffaef13fadc
-
- (9) FONT, FOREGROUND-COLOR and BACKGROUND-COLOR
-
-Posframe's font as well as foreground and background colors are
-derived from the current frame by default, but can be overridden
-using the FONT, FOREGROUND-COLOR and BACKGROUND-COLOR arguments,
-respectively.
-
- (10) RESPECT-HEADER-LINE and RESPECT-MODE-LINE
-
-By default, posframe will display no header-line, mode-line and
-tab-line.  In case a header-line, mode-line or tab-line is
-desired, users can set RESPECT-HEADER-LINE and RESPECT-MODE-LINE
-to t.
-
- (11) INITIALIZE
-
-INITIALIZE is a function with no argument.  It will run when
-posframe buffer is first selected with `with-current-buffer'
-in `posframe-show', and only run once (for performance reasons).
-
- (12) LINES-TRUNCATE
-
-If LINES-TRUNCATE is non-nil, then lines will truncate in the
-posframe instead of wrap.
-
- (13) OVERRIDE-PARAMETERS
-
-OVERRIDE-PARAMETERS is very powful, *all* the valid frame parameters
-used by posframe's frame can be overridden by it.
-
-NOTE: some `posframe-show' arguments are not frame parameters, so they
-can not be overrided by this argument.
-
- (14) TIMEOUT
-
-TIMEOUT can specify the number of seconds after which the posframe
-will auto-hide.
-
- (15) REFRESH
-
-If REFRESH is a number, posframe's frame-size will be re-adjusted
-every REFRESH seconds.
-
- (16) ACCEPT-FOCUS
-
-When ACCEPT-FOCUS is non-nil, posframe will accept focus.
-be careful, you may face some bugs when set it to non-nil.
-
- (17) HIDEHANDLER
-
-HIDEHANDLER is a function, when it return t, posframe will be
-hide, this function has a plist argument:
-
-  (:posframe-buffer xxx
-   :posframe-parent-buffer xxx)
-
-The builtin hidehandler functions are listed below:
-
-1. `posframe-hidehandler-when-buffer-switch'
-
- (18) REFPOSHANDLER
-
-REFPOSHANDLER is a function, a reference position (most is
-top-left of current frame) will be returned when call this
-function.
-
-when it is nil or it return nil, child-frame feature will be used
-and reference position will be deal with in Emacs.
-
-The user case I know at the moment is let ivy-posframe work well
-in EXWM environment (let posframe show on the other appliction
-window).
-
-         DO NOT USE UNLESS NECESSARY!!!
-
-An example parent frame poshandler function is:
-
-1. `posframe-refposhandler-xwininfo'
-
- (19) Others
-
-You can use `posframe-delete-all' to delete all posframes.
-
-\(fn BUFFER-OR-NAME &key STRING POSITION POSHANDLER POSHANDLER-EXTRA-INFO WIDTH HEIGHT MAX-WIDTH MAX-HEIGHT MIN-WIDTH MIN-HEIGHT X-PIXEL-OFFSET Y-PIXEL-OFFSET LEFT-FRINGE RIGHT-FRINGE BORDER-WIDTH BORDER-COLOR INTERNAL-BORDER-WIDTH INTERNAL-BORDER-COLOR FONT FOREGROUND-COLOR BACKGROUND-COLOR RESPECT-HEADER-LINE RESPECT-MODE-LINE INITIALIZE NO-PROPERTIES KEEP-RATIO LINES-TRUNCATE OVERRIDE-PARAMETERS TIMEOUT REFRESH ACCEPT-FOCUS HIDEHANDLER REFPOSHANDLER &allow-other-keys)" nil nil)
-
-(autoload 'posframe-hide-all "posframe" "\
-Hide all posframe frames." t nil)
-
-(autoload 'posframe-delete-all "posframe" "\
-Delete all posframe frames and buffers." t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "posframe" '("posframe-")))
-
-;;;***
-
-;;;### (autoloads nil "posframe-benchmark" "posframe-benchmark.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from posframe-benchmark.el
-
-(autoload 'posframe-benchmark "posframe-benchmark" "\
-Benchmark tool for posframe." t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "posframe-benchmark" '("posframe-benchmark-alist")))
-
-;;;***
-
-;;;### (autoloads nil nil ("posframe-pkg.el") (0 0 0 0))
-
-;;;***
-
-;; Local Variables:
-;; version-control: never
-;; no-byte-compile: t
-;; no-update-autoloads: t
-;; coding: utf-8
-;; End:
-;;; posframe-autoloads.el ends here
blob - b2fff2635d425e088f46883226fd0be7ed40dbc8 (mode 644)
blob + /dev/null
--- elpa/posframe-20211126.944/posframe-benchmark.el
+++ /dev/null
@@ -1,85 +0,0 @@
-;;; posframe-benchmark.el --- Benchmark tool for posframe    -*- lexical-binding:t -*-
-
-;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-;; Author: Feng Shu <tumashu@163.com>
-;; Maintainer: Feng Shu <tumashu@163.com>
-;; URL: https://github.com/tumashu/posframe
-;; Version: 1.0.3
-;; Keywords: convenience, tooltip
-;; Package-Requires: ((emacs "26"))
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;;; Code:
-(require 'cl-lib)
-(require 'posframe)
-
-(defvar posframe-benchmark-alist
-  (let ((str (with-temp-buffer
-               (insert-file-contents (locate-library "posframe.el"))
-               (buffer-string))))
-    `((font-at
-       (font-at (point-min)))
-      (redraw-display
-       (redraw-display))
-      (redraw-frame
-       (redraw-frame (window-frame)))
-      (remove-text-properties
-       (let ((string ,str))
-         (remove-text-properties
-          0 (length string) '(read-only t)
-          string)))
-      (mouse-position
-       (mouse-position))
-      (default-font-width
-        (default-font-width))
-      (posframe--get-font-height
-       (posframe--get-font-height (point-min)))
-      (posframe--mouse-banish
-       (posframe--mouse-banish (window-frame)))
-      (frame-parameter
-       (frame-parameter (window-frame) 'no-accept-focus))
-      (set-mouse-position
-       (set-mouse-position (window-frame) 0 0))
-      (posn-at-point
-       (posn-at-point))
-      (posn-x-y
-       (posn-x-y (posn-at-point)))
-      (posn-object-x-y
-       (posn-object-x-y (posn-at-point)))
-      (set-frame-parameter
-       (set-frame-parameter (window-frame) 'test 1))
-      (raise-frame
-       (raise-frame (window-frame))))))
-
-;;;###autoload
-(defun posframe-benchmark ()
-  "Benchmark tool for posframe."
-  (interactive)
-  (let ((n 1000))
-    (message "\n* Posframe Benchmark")
-    (dolist (x posframe-benchmark-alist)
-      (message "\n** Benchmark `%S' %s times ..." (car x) n)
-      (benchmark n (car (cdr x))))
-    (message "\n* Finished.")))
-
-
-(provide 'posframe-benchmark)
-
-;;; posframe.el ends here
blob - bfc7b70b16b717428cb57df54b27e449c2ec91db (mode 644)
blob + /dev/null
--- elpa/posframe-20211126.944/posframe-pkg.el
+++ /dev/null
@@ -1,12 +0,0 @@
-(define-package "posframe" "20211126.944" "Pop a posframe (just a frame) at point"
-  '((emacs "26.1"))
-  :commit "3b1dc400d286b0a4bd42e518bf3e7eedb49fd1e6" :authors
-  '(("Feng Shu" . "tumashu@163.com"))
-  :maintainer
-  '("Feng Shu" . "tumashu@163.com")
-  :keywords
-  '("convenience" "tooltip")
-  :url "https://github.com/tumashu/posframe")
-;; Local Variables:
-;; no-byte-compile: t
-;; End:
blob - 32f502b62b409a4d0efcbab6e75f206dd7bc4aa8 (mode 644)
blob + /dev/null
--- elpa/posframe-20211126.944/posframe.el
+++ /dev/null
@@ -1,1462 +0,0 @@
-;;; posframe.el --- Pop a posframe (just a frame) at point    -*- lexical-binding:t -*-
-
-;; Copyright (C) 2018-2020 Free Software Foundation, Inc.
-
-;; Author: Feng Shu <tumashu@163.com>
-;; Maintainer: Feng Shu <tumashu@163.com>
-;; URL: https://github.com/tumashu/posframe
-;; Version: 1.1.2
-;; Keywords: convenience, tooltip
-;; Package-Requires: ((emacs "26.1"))
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-;; * Posframe README                                :README:
-
-;; Posframe can pop up a frame at point, this *posframe* is a
-;; child-frame connected to its root window's buffer.
-
-;; The main advantages are:
-;; 1. It is fast enough for daily usage :-)
-;; 2. It works well with CJK languages.
-
-;; More info please see: README.org
-
-;;; Code:
-;; * posframe's code                         :CODE:
-(require 'cl-lib)
-
-(defgroup posframe nil
-  "Pop a posframe (just a frame) at point."
-  :group 'lisp
-  :prefix "posframe-")
-
-(defcustom posframe-inhibit-double-buffering nil
-  "Set the posframe's frame-parameter: inhibit-double-buffering."
-  :group 'posframe
-  :type 'boolean)
-
-(defcustom posframe-mouse-banish-function #'posframe-mouse-banish-default
-  "The function used to banish mouse.
-
-Function `posframe-mouse-banish-default' will work well in most
-case, but suggest use function `posframe-mouse-banish-simple' or
-custom function for EXWM users."
-  :type 'function)
-
-(defvar-local posframe--frame nil
-  "Record posframe's frame.")
-
-(defvar-local posframe--last-posframe-pixel-position nil
-  "Record the last pixel position of posframe's frame.")
-
-(defvar-local posframe--last-posframe-size nil
-  "Record the last size of posframe's frame.")
-
-(defvar-local posframe--last-posframe-displayed-size nil
-  "Record the last displayed size of posframe's frame.")
-
-(defvar-local posframe--last-parent-frame-size nil
-  "Record the last size of posframe's parent-frame.")
-
-(defvar-local posframe--last-poshandler-info nil
-  "Record the last poshandler info.")
-
-(defvar-local posframe--last-font-height-info nil
-  "Record the last font height info.")
-
-(defvar-local posframe--last-args nil
-  "Record the last arguments of `posframe--create-posframe'.
-
-If these args have changed, posframe will recreate its
-frame.")
-
-(defvar-local posframe--timeout-timer nil
-  "Record the timer to deal with timeout argument of `posframe-show'.")
-
-(defvar-local posframe--refresh-timer nil
-  "Record the timer to deal with refresh argument of `posframe-show'.")
-
-(defvar-local posframe--initialized-p nil
-  "Record initialize status of `posframe-show'.")
-
-(defvar-local posframe--accept-focus nil
-  "Record accept focus status of `posframe-show'.")
-
-(defvar posframe-hidehandler-timer nil
-  "Timer used by hidehandler function.")
-
-;; Avoid compilation warnings on Emacs < 27.
-(defvar x-gtk-resize-child-frames)
-
-(defvar posframe-gtk-resize-child-frames
-  (when (and
-         (> emacs-major-version 26)
-         (string-match-p "GTK3" system-configuration-features)
-         (let ((value (or (getenv "XDG_CURRENT_DESKTOP") (getenv "DESKTOP_SESSION"))))
-           (and (stringp value)
-                ;; It can be "ubuntu:GNOME".
-                (string-match-p "GNOME" value))))
-    ;; Not future-proof, but we can use it now.
-    'resize-mode)
-  "Value to bind `x-gtk-resize-child-frames' to.
-
-The value `resize-mode' only has effect on new child frames, so
-if you change it, call `posframe-delete-all' for it to take
-effect.")
-
-;;;###autoload
-(defun posframe-workable-p ()
-  "Test posframe workable status."
-  (and (>= emacs-major-version 26)
-       (not (or noninteractive
-                emacs-basic-display
-                (not (display-graphic-p))))))
-
-(cl-defun posframe--create-posframe (buffer-or-name
-                                     &key
-                                     parent-frame
-                                     foreground-color
-                                     background-color
-                                     left-fringe
-                                     right-fringe
-                                     border-width
-                                     border-color
-                                     internal-border-width
-                                     internal-border-color
-                                     font
-                                     keep-ratio
-                                     lines-truncate
-                                     override-parameters
-                                     respect-header-line
-                                     respect-mode-line
-                                     accept-focus)
-  "Create and return a posframe child frame.
-This posframe's buffer is BUFFER-OR-NAME.
-
-The below optional arguments are similar to `posframe-show''s:
-PARENT-FRAME, FOREGROUND-COLOR, BACKGROUND-COLOR, LEFT-FRINGE,
-RIGHT-FRINGE, BORDER-WIDTH, BORDER-COLOR, INTERNAL-BORDER-WIDTH,
-INTERNAL-BORDER-COLOR, FONT, KEEP-RATIO, LINES-TRUNCATE,
-OVERRIDE-PARAMETERS, RESPECT-HEADER-LINE, RESPECT-MODE-LINE,
-ACCEPT-FOCUS."
-  (let ((left-fringe (or left-fringe 0))
-        (right-fringe (or right-fringe 0))
-        ;; See emacs.git:  Add distinct controls for child frames' borders (Bug#45620)
-        ;; http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=ff7b1a133bfa7f2614650f8551824ffaef13fadc
-        (border-width (or border-width internal-border-width 0))
-        (border-color (or border-color internal-border-color))
-        (buffer (get-buffer-create buffer-or-name))
-        (after-make-frame-functions nil)
-        (x-gtk-resize-child-frames posframe-gtk-resize-child-frames)
-        (args (list foreground-color
-                    background-color
-                    right-fringe
-                    left-fringe
-                    border-width
-                    border-color
-                    internal-border-width
-                    internal-border-color
-                    font
-                    keep-ratio
-                    override-parameters
-                    respect-header-line
-                    respect-mode-line
-                    accept-focus)))
-    (with-current-buffer buffer
-      ;; Many variables take effect after call `set-window-buffer'
-      (setq-local display-line-numbers nil)
-      (setq-local frame-title-format "")
-      (setq-local left-margin-width nil)
-      (setq-local right-margin-width nil)
-      (setq-local left-fringe-width nil)
-      (setq-local right-fringe-width nil)
-      (setq-local fringes-outside-margins 0)
-      (setq-local fringe-indicator-alist nil)
-      ;; Need to use `lines-truncate' as our keyword variable instead of
-      ;; `truncate-lines' so we don't shadow the variable that we are trying to
-      ;; set.
-      (setq-local truncate-lines lines-truncate)
-      (setq-local cursor-type nil)
-      (setq-local cursor-in-non-selected-windows nil)
-      (setq-local show-trailing-whitespace nil)
-      (setq-local posframe--accept-focus accept-focus)
-      (unless respect-mode-line
-        (setq-local mode-line-format nil))
-      (unless respect-header-line
-        (setq-local header-line-format nil))
-
-      (add-hook 'kill-buffer-hook #'posframe-auto-delete nil t)
-
-      ;; Create child-frame
-      (unless (and (frame-live-p posframe--frame)
-                   ;; For speed reason, posframe will reuse
-                   ;; existing frame at possible, but when
-                   ;; user change args, recreating frame
-                   ;; is needed.
-                   (equal posframe--last-args args))
-        (posframe-delete-frame buffer)
-        (setq-local posframe--last-args args)
-        (setq-local posframe--last-posframe-pixel-position nil)
-        (setq-local posframe--last-posframe-size nil)
-        (setq-local posframe--frame
-                    (make-frame
-                     `(,@override-parameters
-                       ,(when foreground-color
-                          (cons 'foreground-color foreground-color))
-                       ,(when background-color
-                          (cons 'background-color background-color))
-                       ,(when font
-                          (cons 'font font))
-                       (title . "posframe")
-                       (parent-frame . ,parent-frame)
-                       (keep-ratio ,keep-ratio)
-                       (posframe-buffer . ,(cons (buffer-name buffer)
-                                                 buffer))
-                       (fullscreen . nil)
-                       (no-accept-focus . ,(not accept-focus))
-                       (min-width  . 0)
-                       (min-height . 0)
-                       (border-width . 0)
-                       (internal-border-width . ,border-width)
-                       (child-frame-border-width . ,border-width)
-                       (vertical-scroll-bars . nil)
-                       (horizontal-scroll-bars . nil)
-                       (left-fringe . ,left-fringe)
-                       (right-fringe . ,right-fringe)
-                       (menu-bar-lines . 0)
-                       (tool-bar-lines . 0)
-                       (tab-bar-lines . 0)
-                       (line-spacing . 0)
-                       (unsplittable . t)
-                       (no-other-frame . t)
-                       (undecorated . t)
-                       (visibility . nil)
-                       (cursor-type . nil)
-                       (minibuffer . nil)
-                       (width . 1)
-                       (height . 1)
-                       (no-special-glyphs . t)
-                       (skip-taskbar . t)
-                       (inhibit-double-buffering . ,posframe-inhibit-double-buffering)
-                       ;; Do not save child-frame when use desktop.el
-                       (desktop-dont-save . t))))
-        (when border-color
-	  (set-face-background
-           (if (facep 'child-frame-border)
-               'child-frame-border
-             'internal-border)
-           border-color posframe--frame)
-          ;; HACK: Set face background after border color, otherwise the
-          ;; border is not updated (BUG!).
-          (when (version< emacs-version "28.0")
-            (set-frame-parameter
-             posframe--frame 'background-color
-             (or background-color (face-attribute 'default :background)))))
-        (let ((posframe-window (frame-root-window posframe--frame)))
-          ;; This method is more stable than 'setq mode/header-line-format nil'
-          (unless respect-mode-line
-            (set-window-parameter posframe-window 'mode-line-format 'none))
-          (unless respect-header-line
-            (set-window-parameter posframe-window 'header-line-format 'none))
-          (set-window-buffer posframe-window buffer)
-          (set-window-dedicated-p posframe-window t)))
-
-      ;; Remove tab-bar always.
-      (set-frame-parameter posframe--frame 'tab-bar-lines 0)
-      (when (version< "27.0" emacs-version)
-        (setq-local tab-line-format nil))
-
-      ;; If user set 'parent-frame to nil after run posframe-show.
-      ;; for cache reason, next call to posframe-show will be affected.
-      ;; so we should force set parent-frame again in this place.
-      (set-frame-parameter posframe--frame 'parent-frame parent-frame)
-
-      posframe--frame)))
-
-;;;###autoload
-(cl-defun posframe-show (buffer-or-name
-                         &key
-                         string
-                         position
-                         poshandler
-                         poshandler-extra-info
-                         width
-                         height
-                         max-width
-                         max-height
-                         min-width
-                         min-height
-                         x-pixel-offset
-                         y-pixel-offset
-                         left-fringe
-                         right-fringe
-                         border-width
-                         border-color
-                         internal-border-width
-                         internal-border-color
-                         font
-                         foreground-color
-                         background-color
-                         respect-header-line
-                         respect-mode-line
-                         initialize
-                         no-properties
-                         keep-ratio
-                         lines-truncate
-                         override-parameters
-                         timeout
-                         refresh
-                         accept-focus
-                         hidehandler
-                         refposhandler
-                         &allow-other-keys)
-  "Pop up a posframe to show STRING at POSITION.
-
- (1) POSITION
-
-POSITION can be:
-1. An integer, meaning point position.
-2. A cons of two integers, meaning absolute X and Y coordinates.
-3. Other type, in which case the corresponding POSHANDLER should be
-   provided.
-
- (2) POSHANDLER
-
-POSHANDLER is a function of one argument returning an actual
-position.  Its argument is a plist of the following form:
-
-  (:position xxx
-   :poshandler xxx
-   :font-height xxx
-   :font-width xxx
-   :posframe xxx
-   :posframe-width xxx
-   :posframe-height xxx
-   :posframe-buffer xxx
-   :parent-frame xxx
-   :parent-window-left xxx
-   :parent-window-top xxx
-   :parent-frame-width xxx
-   :parent-frame-height xxx
-   :parent-window xxx
-   :parent-window-width  xxx
-   :parent-window-height xxx
-   :mouse-x xxx
-   ;mouse-y xxx
-   :minibuffer-height xxx
-   :mode-line-height  xxx
-   :header-line-height xxx
-   :tab-line-height xxx
-   :x-pixel-offset xxx
-   :y-pixel-offset xxx)
-
-By default, poshandler is auto-selected based on the type of POSITION,
-but the selection can be overridden using the POSHANDLER argument.
-
-The names of poshandler functions are like:
-
-   `posframe-poshandler-p0.5p0-to-w0.5p1'
-
-which mean align posframe(0.5, 0) to a position(a, b)
-
-1. a = x of window(0.5, 0)
-2. b = y of point(1, 1)
-
-    posframe(p), frame(f), window(w), point(p), mouse(m)
-
-         (0,0)      (0.5,0)      (1,0)
-          +------------+-----------+
-          |                        |
-          |                        |
-          |                        |
- (0, 0.5) +                        + (1, 0.5)
-          |                        |
-          |                        |
-          |                        |
-          +------------+-----------+
-         (0,1)      (0.5,1)      (1,1)
-
-The alias of builtin poshandler functions are listed below:
-
-1.  `posframe-poshandler-frame-center'
-2.  `posframe-poshandler-frame-top-center'
-3.  `posframe-poshandler-frame-top-left-corner'
-4.  `posframe-poshandler-frame-top-right-corner'
-5.  `posframe-poshandler-frame-bottom-center'
-6.  `posframe-poshandler-frame-bottom-left-corner'
-7.  `posframe-poshandler-frame-bottom-right-corner'
-8.  `posframe-poshandler-window-center'
-9.  `posframe-poshandler-window-top-center'
-10. `posframe-poshandler-window-top-left-corner'
-11. `posframe-poshandler-window-top-right-corner'
-12. `posframe-poshandler-window-bottom-center'
-13. `posframe-poshandler-window-bottom-left-corner'
-14. `posframe-poshandler-window-bottom-right-corner'
-15. `posframe-poshandler-point-top-left-corner'
-16. `posframe-poshandler-point-bottom-left-corner'
-17. `posframe-poshandler-point-bottom-left-corner-upward'
-18. `posframe-poshandler-point-window-center'
-
-by the way, poshandler can be used by other packages easily with
-the help of function `posframe-poshandler-argbuilder'.  like:
-
-   (let* ((info (posframe-poshandler-argbuilder *MY-CHILD-FRAME*))
-          (posn (posframe-poshandler-window-center
-                 `(:posframe-width 800 :posframe-height 400 ,@info))))
-     `((left . ,(car posn))
-       (top . ,(cdr posn))))
-
- (3) POSHANDLER-EXTRA-INFO
-
-POSHANDLER-EXTRA-INFO is a plist, which will prepend to the
-argument of poshandler function: 'info', it will *OVERRIDE* the
-exist key in 'info'.
-
- (4) BUFFER-OR-NAME
-
-This posframe's buffer is BUFFER-OR-NAME, which can be a buffer
-or a name of a (possibly nonexistent) buffer.
-
-buffer name can prefix with space, for example ' *mybuffer*', so
-the buffer name will hide for ibuffer and `list-buffers'.
-
- (5) NO-PROPERTIES
-
-If NO-PROPERTIES is non-nil, The STRING's properties will
-be removed before being shown in posframe.
-
- (6) HEIGHT, MAX-HEIGHT, MIN-HEIGHT, WIDTH, MAX-WIDTH and MIN-WIDTH
-
-These arguments are specified in the canonical character width
-and height of posframe, more details can be found in docstring of
-function `fit-frame-to-buffer',
-
- (7) LEFT-FRINGE and RIGHT-FRINGE
-
-If LEFT-FRINGE or RIGHT-FRINGE is a number, left fringe or
-right fringe with be shown with the specified width.
-
- (8) BORDER-WIDTH, BORDER-COLOR, INTERNAL-BORDER-WIDTH and INTERNAL-BORDER-COLOR
-
-By default, posframe shows no borders, but users can specify
-borders by setting BORDER-WIDTH to a positive number.  Border
-color can be specified by BORDER-COLOR.
-
-INTERNAL-BORDER-WIDTH and INTERNAL-BORDER-COLOR are same as
-BORDER-WIDTH and BORDER-COLOR, but do not suggest to use for the
-reason:
-
-   Add distinct controls for child frames' borders (Bug#45620)
-   http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=ff7b1a133bfa7f2614650f8551824ffaef13fadc
-
- (9) FONT, FOREGROUND-COLOR and BACKGROUND-COLOR
-
-Posframe's font as well as foreground and background colors are
-derived from the current frame by default, but can be overridden
-using the FONT, FOREGROUND-COLOR and BACKGROUND-COLOR arguments,
-respectively.
-
- (10) RESPECT-HEADER-LINE and RESPECT-MODE-LINE
-
-By default, posframe will display no header-line, mode-line and
-tab-line.  In case a header-line, mode-line or tab-line is
-desired, users can set RESPECT-HEADER-LINE and RESPECT-MODE-LINE
-to t.
-
- (11) INITIALIZE
-
-INITIALIZE is a function with no argument.  It will run when
-posframe buffer is first selected with `with-current-buffer'
-in `posframe-show', and only run once (for performance reasons).
-
- (12) LINES-TRUNCATE
-
-If LINES-TRUNCATE is non-nil, then lines will truncate in the
-posframe instead of wrap.
-
- (13) OVERRIDE-PARAMETERS
-
-OVERRIDE-PARAMETERS is very powful, *all* the valid frame parameters
-used by posframe's frame can be overridden by it.
-
-NOTE: some `posframe-show' arguments are not frame parameters, so they
-can not be overrided by this argument.
-
- (14) TIMEOUT
-
-TIMEOUT can specify the number of seconds after which the posframe
-will auto-hide.
-
- (15) REFRESH
-
-If REFRESH is a number, posframe's frame-size will be re-adjusted
-every REFRESH seconds.
-
- (16) ACCEPT-FOCUS
-
-When ACCEPT-FOCUS is non-nil, posframe will accept focus.
-be careful, you may face some bugs when set it to non-nil.
-
- (17) HIDEHANDLER
-
-HIDEHANDLER is a function, when it return t, posframe will be
-hide, this function has a plist argument:
-
-  (:posframe-buffer xxx
-   :posframe-parent-buffer xxx)
-
-The builtin hidehandler functions are listed below:
-
-1. `posframe-hidehandler-when-buffer-switch'
-
- (18) REFPOSHANDLER
-
-REFPOSHANDLER is a function, a reference position (most is
-top-left of current frame) will be returned when call this
-function.
-
-when it is nil or it return nil, child-frame feature will be used
-and reference position will be deal with in Emacs.
-
-The user case I know at the moment is let ivy-posframe work well
-in EXWM environment (let posframe show on the other appliction
-window).
-
-         DO NOT USE UNLESS NECESSARY!!!
-
-An example parent frame poshandler function is:
-
-1. `posframe-refposhandler-xwininfo'
-
- (19) Others
-
-You can use `posframe-delete-all' to delete all posframes."
-  (let* ((position (or position (point)))
-         (max-width (if (numberp max-width)
-                        (min max-width (frame-width))
-                      (frame-width)))
-         (max-height (if (numberp max-height)
-                         (min max-height (frame-height))
-                       (frame-height)))
-         (min-width (min (or min-width 1) max-width))
-         (min-height (min (or min-height 1) max-height))
-         (width (when width
-                  (min (max width min-width) max-width)))
-         (height (when height
-                   (min (max height min-height) max-height)))
-         (x-pixel-offset (or x-pixel-offset 0))
-         (y-pixel-offset (or y-pixel-offset 0))
-         ;;-----------------------------------------------------
-         (buffer (get-buffer-create buffer-or-name))
-         (parent-window (selected-window))
-         (parent-window-top (window-pixel-top parent-window))
-         (parent-window-left (window-pixel-left parent-window))
-         (parent-window-width (window-pixel-width parent-window))
-         (parent-window-height (window-pixel-height parent-window))
-         (parent-frame (window-frame parent-window))
-         (parent-frame-width (frame-pixel-width parent-frame))
-         (parent-frame-height (frame-pixel-height parent-frame))
-         (ref-position
-          (when (functionp refposhandler)
-            (ignore-errors
-              (funcall refposhandler parent-frame))))
-         (font-width (default-font-width))
-         (font-height (with-current-buffer (window-buffer parent-window)
-                        (posframe--get-font-height position)))
-         (mode-line-height (window-mode-line-height))
-         (minibuffer-height (window-pixel-height (minibuffer-window)))
-         (header-line-height (window-header-line-height parent-window))
-         (tab-line-height (if (functionp 'window-tab-line-height)
-                              (window-tab-line-height)
-                            0))
-         (mouse-position (cdr (mouse-pixel-position)))
-         (frame-resize-pixelwise t)
-         posframe)
-
-    (with-current-buffer buffer
-
-      ;; Initialize
-      (unless posframe--initialized-p
-        (let ((func initialize))
-          (when (functionp func)
-            (funcall func)
-            (setq posframe--initialized-p t))))
-
-      ;; Create posframe
-      (setq posframe
-            (posframe--create-posframe
-             buffer
-             :font font
-             :parent-frame
-             (unless ref-position
-               parent-frame)
-             :left-fringe left-fringe
-             :right-fringe right-fringe
-             :border-width border-width
-             :border-color border-color
-             :internal-border-width internal-border-width
-             :internal-border-color internal-border-color
-             :foreground-color foreground-color
-             :background-color background-color
-             :keep-ratio keep-ratio
-             :lines-truncate lines-truncate
-             :respect-header-line respect-header-line
-             :respect-mode-line respect-mode-line
-             :override-parameters override-parameters
-             :accept-focus accept-focus))
-
-      ;; Insert string into the posframe buffer
-      (posframe--insert-string string no-properties)
-
-      (let ((size-info
-             (list :posframe posframe
-                   :width width
-                   :height height
-                   :max-width max-width
-                   :max-height max-height
-                   :min-width min-width
-                   :min-height min-height)))
-        ;; Set posframe's size
-        (posframe--set-frame-size size-info)
-        ;; Re-adjust posframe's size when buffer's content has changed.
-        (posframe--run-refresh-timer refresh size-info))
-
-      ;; Get new position of posframe.
-      (setq position
-            (posframe-run-poshandler
-             ;; All poshandlers will get info from this plist.
-             `(,@poshandler-extra-info
-               ,@(list :position position
-                       :poshandler poshandler
-                       :font-height font-height
-                       :font-width font-width
-                       :posframe posframe
-                       :posframe-width (frame-pixel-width posframe)
-                       :posframe-height (frame-pixel-height posframe)
-                       :posframe-buffer buffer
-                       :parent-frame parent-frame
-                       :parent-frame-width parent-frame-width
-                       :parent-frame-height parent-frame-height
-                       :ref-position ref-position
-                       :parent-window parent-window
-                       :parent-window-top parent-window-top
-                       :parent-window-left parent-window-left
-                       :parent-window-width parent-window-width
-                       :parent-window-height parent-window-height
-                       :mouse-x (car mouse-position)
-                       :mouse-y (cdr mouse-position)
-                       :mode-line-height mode-line-height
-                       :minibuffer-height minibuffer-height
-                       :header-line-height header-line-height
-                       :tab-line-height tab-line-height
-                       :x-pixel-offset x-pixel-offset
-                       :y-pixel-offset y-pixel-offset))))
-
-      ;; Move posframe
-      (posframe--set-frame-position
-       posframe position parent-frame-width parent-frame-height)
-
-      ;; Delay hide posframe when timeout is a number.
-      (posframe--run-timeout-timer posframe timeout)
-
-      ;; Make sure not hide buffer's content for scroll down.
-      (let ((window (frame-root-window posframe--frame)))
-        (when (window-live-p window)
-          (set-window-point window 0)))
-
-      ;; Hide posframe when switch buffer
-      (let* ((parent-buffer (window-buffer parent-window))
-             (parent-buffer-name (buffer-name parent-buffer)))
-        (set-frame-parameter posframe--frame 'posframe-hidehandler hidehandler)
-        (set-frame-parameter posframe--frame 'posframe-parent-buffer
-                             (cons parent-buffer-name parent-buffer)))
-
-      ;; Mouse banish
-      (funcall
-       posframe-mouse-banish-function
-       (list :parent-frame parent-frame
-             :mouse-x (when (car mouse-position)
-                        (+ (or (car ref-position) 0)
-                           (car mouse-position)))
-             :mouse-y (when (cdr mouse-position)
-                        (+ (or (cdr ref-position) 0)
-                           (cdr mouse-position)))
-             :posframe-x
-             (if (>= (car position) 0)
-                 (car position)
-               (- (frame-pixel-width parent-frame)
-                  (frame-pixel-width posframe)))
-             :posframe-y
-             (if (>= (cdr position) 0)
-                 (cdr position)
-               (- (frame-pixel-height parent-frame)
-                  (frame-pixel-height posframe)))
-             :posframe-width (frame-pixel-width posframe)
-             :posframe-height (frame-pixel-height posframe)
-             :parent-frame-width parent-frame-width
-             :parent-frame-height parent-frame-height))
-
-      ;; Return posframe
-      posframe)))
-
-(defun posframe--get-font-height (position)
-  "Get the font's height at POSITION."
-  (if (eq position (car posframe--last-font-height-info))
-      (cdr posframe--last-font-height-info)
-    (let* ((font (when (and (integerp position)
-                            (not (= position 1)))
-                   (font-at (if (>= position (point-max))
-                                (- (point-max) 1)
-                              position))))
-           (height (when (integerp position)
-                     (if (or (= position 1) (not (fontp font)))
-                         (default-line-height)
-                       (aref (font-info font) 3)))))
-      (setq posframe--last-font-height-info
-            (cons position height))
-      height)))
-
-(defun posframe-mouse-banish-simple (info)
-  "Banish mouse to (0, 0) of posframe base on INFO."
-  (let ((parent-frame (plist-get info :parent-frame))
-        (x (plist-get info :posframe-x))
-        (y (plist-get info :posframe-y))
-        (w (plist-get info :posframe-width))
-        (h (plist-get info :posframe-height))
-        (p-w (plist-get info :parent-frame-width))
-        (p-h (plist-get info :parent-frame-height)))
-    (set-mouse-pixel-position
-     parent-frame
-     (if (= x 0)
-         (min p-w (+ w 5))
-       (max 0 (- x 5)))
-     (if (= y 0)
-         (min p-h (+ h 10))
-       (max 0 (- y 10))))))
-
-(defun posframe-mouse-banish-default (info)
-  "Banish mouse base on INFO.
-
-FIXME: This is a hacky fix for the mouse focus problem, which like:
-https://github.com/tumashu/posframe/issues/4#issuecomment-357514918"
-  (let* ((parent-frame (plist-get info :parent-frame))
-         (m-x (plist-get info :mouse-x))
-         (m-y (plist-get info :mouse-y))
-         (x (plist-get info :posframe-x))
-         (y (plist-get info :posframe-y))
-         (w (plist-get info :posframe-width))
-         (h (plist-get info :posframe-height))
-         (p-w (plist-get info :parent-frame-width))
-         (p-h (plist-get info :parent-frame-height)))
-    (when (and m-x m-y
-               (>= m-x x)
-               (<= m-x (+ x w))
-               (>= m-y y)
-               (<= m-y (+ y h)))
-      (set-mouse-pixel-position
-       parent-frame
-       (if (= x 0)
-           (min p-w (+ w 5))
-         (max 0 (- x 5)))
-       (if (= y 0)
-           (min p-h (+ h 10))
-         (max 0 (- y 10)))))))
-
-(defun posframe--redirect-posframe-focus ()
-  "Redirect focus from the posframe to the parent frame.
-This prevents the posframe from catching keyboard input if the
-window manager selects it."
-  (when (and (eq (selected-frame) posframe--frame)
-             ;; Do not redirect focus when posframe can accept focus.
-             ;; See posframe-show's accept-focus argument.
-             (not posframe--accept-focus))
-    (redirect-frame-focus posframe--frame (frame-parent))))
-
-(if (version< emacs-version "27.1")
-    (with-no-warnings
-      (add-hook 'focus-in-hook #'posframe--redirect-posframe-focus))
-  (add-function :after after-focus-change-function #'posframe--redirect-posframe-focus))
-
-(defun posframe--insert-string (string no-properties)
-  "Insert STRING to current buffer.
-If NO-PROPERTIES is non-nil, all properties of STRING
-will be removed."
-  (when (and string (stringp string))
-    (remove-text-properties
-     0 (length string) '(read-only t) string)
-    (let ((str (if no-properties
-                   (substring-no-properties string)
-                 string)))
-      (erase-buffer)
-      (insert str))))
-
-(defun posframe--fit-frame-to-buffer (posframe max-height min-height max-width min-width only)
-  "POSFRAME version of function `fit-frame-to-buffer'.
-Arguments HEIGHT, MAX-HEIGHT, MIN-HEIGHT, WIDTH, MAX-WIDTH,
-MIN-WIDTH and ONLY are similar function `fit-frame-to-buffer''s."
-  ;; This only has effect if the user set the latter var to `hide'.
-  (let ((x-gtk-resize-child-frames posframe-gtk-resize-child-frames))
-    ;; More info: Don't skip empty lines when fitting mini frame to buffer (Bug#44080)
-    ;; http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=e0de9f3295b4c46cb7198ec0b9634809d7b7a36d
-    (if (functionp 'fit-frame-to-buffer-1)
-        (fit-frame-to-buffer-1
-         posframe max-height min-height max-width min-width only nil nil)
-      (fit-frame-to-buffer
-       posframe max-height min-height max-width min-width only))))
-
-(defun posframe--set-frame-size (size-info)
-  "Set POSFRAME's size based on SIZE-INFO."
-  (let ((posframe (plist-get size-info :posframe))
-        (width (plist-get size-info :width))
-        (height (plist-get size-info :height))
-        (max-width (plist-get size-info :max-width))
-        (max-height (plist-get size-info :max-height))
-        (min-width (plist-get size-info :min-width))
-        (min-height (plist-get size-info :min-height)))
-    (when height (set-frame-height posframe height))
-    (when width (set-frame-width posframe width))
-    (unless (and height width)
-      (posframe--fit-frame-to-buffer
-       posframe max-height min-height max-width min-width
-       (cond (width 'vertically)
-             (height 'horizontally))))
-    (setq-local posframe--last-posframe-size size-info)))
-
-(defun posframe--set-frame-position (posframe position
-                                              parent-frame-width
-                                              parent-frame-height)
-  "Move POSFRAME to POSITION.
-This need PARENT-FRAME-WIDTH and PARENT-FRAME-HEIGHT"
-  (unless (and (equal position posframe--last-posframe-pixel-position)
-               ;; When working frame's size change, re-posit
-               ;; the posframe.
-               (equal posframe--last-parent-frame-size
-                      (cons parent-frame-width parent-frame-height))
-               (equal posframe--last-posframe-displayed-size
-                      (cons (frame-pixel-width posframe)
-                            (frame-pixel-height posframe))))
-    (set-frame-position posframe (car position) (cdr position))
-    (setq-local posframe--last-posframe-pixel-position position)
-    (setq-local posframe--last-parent-frame-size
-                (cons parent-frame-width parent-frame-height))
-    (setq-local posframe--last-posframe-displayed-size
-                (cons (frame-pixel-width posframe)
-                      (frame-pixel-height posframe))))
-  ;; Make posframe's posframe--frame visible
-  (unless (frame-visible-p posframe)
-    (make-frame-visible posframe)
-    ;; Fix issue: https://github.com/tumashu/ivy-posframe/pull/30
-    (redraw-frame posframe)))
-
-(defun posframe--run-timeout-timer (posframe secs)
-  "Hide POSFRAME after a delay of SECS seconds."
-  (when (and (numberp secs) (> secs 0))
-    (when (timerp posframe--timeout-timer)
-      (cancel-timer posframe--timeout-timer))
-    (setq-local posframe--timeout-timer
-                (run-with-timer
-                 secs nil #'posframe--make-frame-invisible posframe))))
-
-(defun posframe--make-frame-invisible (frame)
-  "`make-frame-invisible' replacement to hide FRAME safely."
-  (when (frame-live-p frame)
-    (make-frame-invisible frame)))
-
-(defun posframe--run-refresh-timer (repeat size-info)
-  "Refresh POSFRAME every REPEAT seconds.
-
-It will set POSFRAME's size by SIZE-INFO."
-  (let ((posframe (plist-get size-info :posframe))
-        (width (plist-get size-info :width))
-        (height (plist-get size-info :height)))
-    (when (and (numberp repeat) (> repeat 0))
-      (unless (and width height)
-        (when (timerp posframe--refresh-timer)
-          (cancel-timer posframe--refresh-timer))
-        (setq-local posframe--refresh-timer
-                    (run-with-timer
-                     nil repeat
-                     (lambda (size-info)
-                       (let ((frame-resize-pixelwise t))
-                         (when (and posframe (frame-live-p posframe))
-                           (posframe--set-frame-size size-info))))
-                     size-info))))))
-
-(defun posframe-refresh (buffer-or-name)
-  "Refresh posframe pertaining to BUFFER-OR-NAME.
-
-For example:
-
-   (defvar buf \" *test*\")
-   (posframe-show buf)
-
-   (with-current-buffer buf
-     (erase-buffer)
-     (insert \"ffffffffffffff\")
-     (posframe-refresh buf))
-
-User can use posframe-show's :refresh argument,
-to do similar job:
-
-   (defvar buf \" *test*\")
-   (posframe-show buf :refresh 0.25)
-
-   (with-current-buffer buf
-     (erase-buffer)
-     (insert \"ffffffffffffff\"))"
-  (dolist (frame (frame-list))
-    (let ((buffer-info (frame-parameter frame 'posframe-buffer))
-          (frame-resize-pixelwise t))
-      (when (or (equal buffer-or-name (car buffer-info))
-                (equal buffer-or-name (cdr buffer-info)))
-        (with-current-buffer buffer-or-name
-          (posframe--set-frame-size posframe--last-posframe-size))))))
-
-(defun posframe-hide (buffer-or-name)
-  "Hide posframe pertaining to BUFFER-OR-NAME.
-BUFFER-OR-NAME can be a buffer or a buffer name."
-  ;; Make sure buffer-list-update-hook is nil when posframe-hide is
-  ;; called, otherwise:
-  ;;   (add-hook 'buffer-list-update-hook  #'posframe-hide)
-  ;; will lead to infinite recursion.
-  (let ((buffer-list-update-hook nil))
-    (dolist (frame (frame-list))
-      (let ((buffer-info (frame-parameter frame 'posframe-buffer)))
-        (when (or (equal buffer-or-name (car buffer-info))
-                  (equal buffer-or-name (cdr buffer-info)))
-          (posframe--make-frame-invisible frame))))))
-
-(defun posframe-hidehandler-daemon ()
-  "Run posframe hidehandler daemon."
-  (when (timerp posframe-hidehandler-timer)
-    (cancel-timer posframe-hidehandler-timer))
-  (setq posframe-hidehandler-timer
-        (run-with-idle-timer 0.5 t #'posframe-hidehandler-daemon-function)))
-
-(defun posframe-hidehandler-daemon-function ()
-  "Posframe hidehandler daemon function."
-  (ignore-errors
-    (dolist (frame (frame-list))
-      (let ((hidehandler (frame-parameter frame 'posframe-hidehandler))
-            (buffer (frame-parameter frame 'posframe-buffer))
-            (parent-buffer (frame-parameter frame 'posframe-parent-buffer)))
-        (when (and hidehandler
-                   (funcall hidehandler
-                            (list
-                             :posframe-buffer buffer
-                             :posframe-parent-buffer parent-buffer)))
-          (posframe--make-frame-invisible frame))))))
-
-(posframe-hidehandler-daemon)
-;; For compatibility, remove In the future.
-(remove-hook 'post-command-hook 'posframe-run-hidehandler)
-
-(defun posframe-hidehandler-when-buffer-switch (info)
-  "Posframe hidehandler function.
-
-This function let posframe hide when user switch buffer.
-Note: This function is called in `post-command-hook'.
-Argument INFO ."
-  (let ((parent-buffer (cdr (plist-get info :posframe-parent-buffer))))
-    (and (buffer-live-p parent-buffer)
-         (not (equal parent-buffer (current-buffer))))))
-
-(defun posframe-delete (buffer-or-name)
-  "Delete posframe pertaining to BUFFER-OR-NAME and kill the buffer.
-BUFFER-OR-NAME can be a buffer or a buffer name.
-
-This function is not commonly used, for delete and recreate
-posframe is very very slowly, `posframe-hide' is more useful."
-  (posframe-delete-frame buffer-or-name)
-  (posframe--kill-buffer buffer-or-name))
-
-(defun posframe-delete-frame (buffer-or-name)
-  "Delete posframe pertaining to BUFFER-OR-NAME.
-BUFFER-OR-NAME can be a buffer or a buffer name."
-  (dolist (frame (frame-list))
-    (let ((buffer-info (frame-parameter frame 'posframe-buffer))
-          (buffer (get-buffer buffer-or-name)))
-      (when (or (equal buffer-or-name (car buffer-info))
-                (equal buffer-or-name (cdr buffer-info)))
-        (when buffer
-          (with-current-buffer buffer
-            (dolist (timer '(posframe--refresh-timer
-                             posframe--timeout-timer))
-              (when (timerp timer)
-                (cancel-timer timer)))))
-        (delete-frame frame)))))
-
-(defun posframe--kill-buffer (buffer-or-name)
-  "Kill posframe's buffer: BUFFER-OR-NAME.
-BUFFER-OR-NAME can be a buffer or a buffer name."
-  (when (buffer-live-p (get-buffer buffer-or-name))
-    (kill-buffer buffer-or-name)))
-
-(defun posframe-funcall (buffer-or-name function &rest arguments)
-  "Select posframe of BUFFER-OR-NAME and call FUNCTION with ARGUMENTS.
-BUFFER-OR-NAME can be a buffer or a buffer name."
-  (when (functionp function)
-    (when (get-buffer buffer-or-name)
-      (with-current-buffer buffer-or-name
-        (when (framep posframe--frame)
-          (with-selected-frame posframe--frame
-            (apply function arguments)))))))
-
-;;;###autoload
-(defun posframe-hide-all ()
-  "Hide all posframe frames."
-  (interactive)
-  (dolist (frame (frame-list))
-    (when (frame-parameter frame 'posframe-buffer)
-      (posframe--make-frame-invisible frame))))
-
-;;;###autoload
-(defun posframe-delete-all ()
-  "Delete all posframe frames and buffers."
-  (interactive)
-  (dolist (frame (frame-list))
-    (when (frame-parameter frame 'posframe-buffer)
-      (delete-frame frame)))
-  (dolist (buffer (buffer-list))
-    (with-current-buffer buffer
-      (when posframe--frame
-        (posframe--kill-buffer buffer)))))
-
-(defun posframe-auto-delete ()
-  "Auto delete posframe when its buffer is killed.
-
-This function is used by `kill-buffer-hook'."
-  (posframe-delete-frame (current-buffer)))
-
-;; Posframe's position handler
-(defun posframe-run-poshandler (info)
-  "Run posframe's position handler.
-
-the structure of INFO can be found in docstring
-of `posframe-show'."
-  (if (equal info posframe--last-poshandler-info)
-      posframe--last-posframe-pixel-position
-    (setq posframe--last-poshandler-info info)
-    (let* ((ref-position (plist-get info :ref-position))
-           (position (funcall
-                      (or (plist-get info :poshandler)
-                          (let ((position (plist-get info :position)))
-                            (cond ((integerp position)
-                                   #'posframe-poshandler-point-bottom-left-corner)
-                                  ((and (consp position)
-                                        (integerp (car position))
-                                        (integerp (cdr position)))
-                                   #'posframe-poshandler-absolute-x-y)
-                                  (t (error "Posframe: have no valid poshandler")))))
-                      info))
-           (x (car position))
-           (y (cdr position)))
-      (if (not ref-position)
-          position
-        (let* ((parent-frame-width (plist-get info :parent-frame-width))
-               (parent-frame-height (plist-get info :parent-frame-height))
-               (posframe-width (plist-get info :posframe-width))
-               (posframe-height (plist-get info :posframe-height))
-               (ref-x (or (car ref-position) 0))
-               (ref-y (or (cdr ref-position) 0)))
-          (when (< x 0)
-            (setq x (- (+ x parent-frame-width) posframe-width)))
-          (when (< y 0)
-            (setq y (- (+ y parent-frame-height) posframe-height)))
-          (cons (+ ref-x x)
-                (+ ref-y y)))))))
-
-(cl-defun posframe-poshandler-argbuilder (&optional
-                                          child-frame
-                                          &key
-                                          position
-                                          poshandler
-                                          refposhandler
-                                          x-pixel-offset
-                                          y-pixel-offset)
-  "Return a info list of CHILD-FRAME, used as poshandler's info argument.
-
-if CHILD-FRAME is nil, parent frame will use selected frame.  The
-documents of POSITION, POSHANDLER, X-PIXEL-OFFSET and
-Y-PIXEL-OFFSET can be found in dostring of `posframe-show'.
-
-NOTE: this function is not used by posframe itself, it just let
-poshandler easily used for other purposes.
-
-WARN: In some situation, this function will return wrong info,
-user should manual adjust returned info before use in poshandler
-function.
-
-Optional argument: REFPOSHANDLER."
-  (let* ((position (or position (point)))
-         (frame-width (or (and child-frame (frame-pixel-width child-frame)) 0))
-         (frame-height (or (and child-frame (frame-pixel-height child-frame)) 0))
-         (frame-buffer (and child-frame (window-buffer (frame-root-window child-frame))))
-         (parent-frame (selected-frame))
-         (parent-frame-width (frame-pixel-width parent-frame))
-         (parent-frame-height (frame-pixel-height parent-frame))
-         (parent-window (selected-window))
-         (parent-window-top (window-pixel-top parent-window))
-         (parent-window-left (window-pixel-left parent-window))
-         (parent-window-width (window-pixel-width parent-window))
-         (parent-window-height (window-pixel-height parent-window))
-         (font-width (default-font-width))
-         (font-height (with-current-buffer (window-buffer parent-window)
-                        (posframe--get-font-height position)))
-         (mode-line-height (window-mode-line-height parent-window))
-         (minibuffer-height (window-pixel-height (minibuffer-window)))
-         (header-line-height (window-header-line-height parent-window))
-         (tab-line-height (if (functionp 'window-tab-line-height)
-                              (window-tab-line-height parent-window)
-                            0))
-         (ref-position
-          (when (functionp refposhandler)
-            (ignore-errors
-              (funcall refposhandler parent-frame)))))
-    (list :position position
-          :poshandler poshandler
-          :font-height font-height
-          :font-width font-width
-          :posframe child-frame
-          :posframe-width frame-width
-          :posframe-height frame-height
-          :posframe-buffer frame-buffer
-          :parent-frame parent-frame
-          :parent-frame-width parent-frame-width
-          :parent-frame-height parent-frame-height
-          :ref-position ref-position
-          :parent-window parent-window
-          :parent-window-top parent-window-top
-          :parent-window-left parent-window-left
-          :parent-window-width parent-window-width
-          :parent-window-height parent-window-height
-          :mode-line-height mode-line-height
-          :minibuffer-height minibuffer-height
-          :header-line-height header-line-height
-          :tab-line-height tab-line-height
-          :x-pixel-offset (or x-pixel-offset 0)
-          :y-pixel-offset (or y-pixel-offset 0))))
-
-(defun posframe-poshandler-absolute-x-y (info)
-  "Posframe's position handler.
-
-Deal with (integer . integer) style position,
-the structure of INFO can be found in docstring
-of `posframe-show'."
-  (let ((position (plist-get info :position))
-        (x-pixel-offset (plist-get info :x-pixel-offset))
-        (y-pixel-offset (plist-get info :y-pixel-offset)))
-    (cons (+ (car position) x-pixel-offset)
-          (+ (cdr position) y-pixel-offset))))
-
-(defun posframe-poshandler-point-1 (info &optional font-height upward)
-  "The internal function used to deal with point-poshandler.
-Argument INFO .
-
-Optional arguments: FONT-HEIGHT and UPWARD."
-  (let* ((x-pixel-offset (plist-get info :x-pixel-offset))
-         (y-pixel-offset (plist-get info :y-pixel-offset))
-         (posframe-width (plist-get info :posframe-width))
-         (posframe-height (plist-get info :posframe-height))
-         (window (plist-get info :parent-window))
-         (xmax (plist-get info :parent-frame-width))
-         (ymax (plist-get info :parent-frame-height))
-         (position-info
-          (or
-           ;; :position-info has been removed, this line
-           ;; is used for compatible.
-           (plist-get info :position-info)
-           (plist-get info :position)))
-         (position-info
-          (if (integerp position-info)
-              (posn-at-point position-info window)
-            position-info))
-         (header-line-height (plist-get info :header-line-height))
-         (tab-line-height (plist-get info :tab-line-height))
-         (x (+ (car (window-inside-pixel-edges window))
-               (- (or (car (posn-x-y position-info)) 0)
-                  (or (car (posn-object-x-y position-info)) 0))
-               x-pixel-offset))
-         (y-top (+ (cadr (window-pixel-edges window))
-                   tab-line-height
-                   header-line-height
-                   (- (or (cdr (posn-x-y position-info)) 0)
-                      ;; Fix the conflict with flycheck
-                      ;; http://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00537.html
-                      (or (cdr (posn-object-x-y position-info)) 0))
-                   y-pixel-offset))
-         (font-height (or font-height (plist-get info :font-height)))
-         (y-bottom (+ y-top font-height)))
-    (cons (max 0 (min x (- xmax (or posframe-width 0))))
-          (max 0 (if (if upward
-                         (> (- y-bottom (or posframe-height 0)) 0)
-                       (> (+ y-bottom (or posframe-height 0)) ymax))
-                     (- y-top (or posframe-height 0))
-                   y-bottom)))))
-
-(defalias 'posframe-poshandler-point-bottom-left-corner #'posframe-poshandler-p0p0-to-p0p1)
-(defun posframe-poshandler-p0p0-to-p0p1 (info)
-  "Posframe's position handler.
-
-Let posframe(0, 0) align to point(0, 1).  The structure of INFO
-can be found in docstring of `posframe-show'.
-
-Optional arguments: FONT-HEIGHT, UPWARD and CENTERING."
-  (posframe-poshandler-point-1 info))
-
-(defalias 'posframe-poshandler-point-window-center #'posframe-poshandler-p0.5p0-to-w0.5p1)
-(defun posframe-poshandler-p0.5p0-to-w0.5p1 (info)
-  "Posframe's position handler.
-
-Let posframe(0.5, 0) align to a position, which x = x of
-window(0.5, 0) and y = y of point(0, 1).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (let ((x (car (posframe-poshandler-p0.5p0-to-w0.5w0 info)))
-        (y (cdr (posframe-poshandler-p0p0-to-p0p1 info))))
-    (cons x y)))
-
-(defun posframe-poshandler-p0.5p0-to-f0.5p1 (info)
-  "Posframe's position handler.
-
-Let posframe(0.5, 0) align to a position, which x = x of
-frame(0.5, 0) and y = y of point(0, 1).  The structure of INFO can
-be found in docstring of `posframe-show'."
-  (let ((x (car (posframe-poshandler-p0.5p0-to-f0.5f0 info)))
-        (y (cdr (posframe-poshandler-p0p0-to-p0p1 info))))
-    (cons x y)))
-
-(defalias 'posframe-poshandler-point-bottom-left-corner-upward #'posframe-poshandler-p0p1-to-p0p1)
-(defun posframe-poshandler-p0p1-to-p0p1 (info)
-  "Posframe's position handler.
-
-Let posframe(0, 1) align to point(0, 1).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (posframe-poshandler-point-1 info nil t))
-
-(defalias 'posframe-poshandler-point-top-left-corner #'posframe-poshandler-p0p0-to-p0p0)
-(defun posframe-poshandler-p0p0-to-p0p0 (info)
-  "Posframe's position handler.
-
-Let posframe(0, 0) align to point(0, 0).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (let ((font-height 0))
-    (posframe-poshandler-point-1 info font-height)))
-
-(defalias 'posframe-poshandler-frame-center #'posframe-poshandler-p0.5p0.5-to-f0.5f0.5)
-(defun posframe-poshandler-p0.5p0.5-to-f0.5f0.5 (info)
-  "Posframe's position handler.
-
-Let posframe(0.5, 0.5) align to frame(0.5, 0.5).  The structure of
-INFO can be found in docstring of `posframe-show'."
-  (cons (/ (- (plist-get info :parent-frame-width)
-              (plist-get info :posframe-width))
-           2)
-        (/ (- (plist-get info :parent-frame-height)
-              (plist-get info :posframe-height))
-           2)))
-
-(defalias 'posframe-poshandler-frame-top-center #'posframe-poshandler-p0.5p0-to-f0.5f0)
-(defun posframe-poshandler-p0.5p0-to-f0.5f0 (info)
-  "Posframe's position handler.
-
-Let posframe(0.5, 0) align to frame(0.5, 0).  The structure of
-INFO can be found in docstring of `posframe-show'."
-  (cons (/ (- (plist-get info :parent-frame-width)
-              (plist-get info :posframe-width))
-           2)
-        0))
-
-(defalias 'posframe-poshandler-frame-top-left-corner #'posframe-poshandler-p0p0-to-f0f0)
-(defun posframe-poshandler-p0p0-to-f0f0 (_info)
-  "Posframe's position handler.
-
-Let posframe(0, 0) align to frame(0, 0).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  '(0 . 0))
-
-(defalias 'posframe-poshandler-frame-top-right-corner #'posframe-poshandler-p1p0-to-f1f0)
-(defun posframe-poshandler-p1p0-to-f1f0 (_info)
-  "Posframe's position handler.
-
-Let posframe(1, 0) align to frame(1, 0).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  '(-1 . 0))
-
-(defalias 'posframe-poshandler-frame-bottom-left-corner #'posframe-poshandler-p0p1-to-f0f1)
-(defun posframe-poshandler-p0p1-to-f0f1 (info)
-  "Posframe's position handler.
-
-Let posframe(0, 1) align to frame(0, 1).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (cons 0 (- 0
-             (plist-get info :mode-line-height)
-             (plist-get info :minibuffer-height))))
-
-(defalias 'posframe-poshandler-frame-bottom-right-corner #'posframe-poshandler-p1p1-to-f1f1)
-(defun posframe-poshandler-p1p1-to-f1f1 (info)
-  "Posframe's position handler.
-
-Let posframe(1, 1) align to frame(1, 1).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (cons -1 (- 0
-              (plist-get info :mode-line-height)
-              (plist-get info :minibuffer-height))))
-
-(defalias 'posframe-poshandler-frame-bottom-center #'posframe-poshandler-p0.5p1-to-f0.5f1)
-(defun posframe-poshandler-p0.5p1-to-f0.5f1 (info)
-  "Posframe's position handler.
-
-Let posframe(0.5, 1) align to frame(0.5, 1).  The structure of
-INFO can be found in docstring of `posframe-show'."
-  (cons (/ (- (plist-get info :parent-frame-width)
-              (plist-get info :posframe-width))
-           2)
-        (- (plist-get info :parent-frame-height)
-           (plist-get info :posframe-height)
-           (plist-get info :mode-line-height)
-           (plist-get info :minibuffer-height))))
-
-(defalias 'posframe-poshandler-window-center #'posframe-poshandler-p0.5p0.5-to-w0.5w0.5)
-(defun posframe-poshandler-p0.5p0.5-to-w0.5w0.5 (info)
-  "Posframe's position handler.
-
-Let posframe(0.5, 0.5) align to window(0.5, 0.5).  The structure
-of INFO can be found in docstring of `posframe-show'."
-  (let* ((window-left (plist-get info :parent-window-left))
-         (window-top (plist-get info :parent-window-top))
-         (window-width (plist-get info :parent-window-width))
-         (window-height (plist-get info :parent-window-height))
-         (posframe-width (plist-get info :posframe-width))
-         (posframe-height (plist-get info :posframe-height)))
-    (cons (max 0 (+ window-left (/ (- window-width posframe-width) 2)))
-          (max 0 (+ window-top (/ (- window-height posframe-height) 2))))))
-
-(defalias 'posframe-poshandler-window-top-left-corner #'posframe-poshandler-p0p0-to-w0w0)
-(defun posframe-poshandler-p0p0-to-w0w0 (info)
-  "Posframe's position handler.
-
-Let posframe(0, 0) align to window(0, 0).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (let* ((window-left (plist-get info :parent-window-left))
-         (window-top (plist-get info :parent-window-top)))
-    (cons window-left
-          window-top)))
-
-(defalias 'posframe-poshandler-window-top-right-corner #'posframe-poshandler-p1p0-to-w1w0)
-(defun posframe-poshandler-p1p0-to-w1w0 (info)
-  "Posframe's position handler.
-
-Let posframe(1, 0) align to window(1, 0).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (let* ((window-left (plist-get info :parent-window-left))
-         (window-top (plist-get info :parent-window-top))
-         (window-width (plist-get info :parent-window-width))
-         (posframe-width (plist-get info :posframe-width)))
-    (cons (+ window-left window-width
-             (- 0 posframe-width))
-          window-top)))
-
-(defalias 'posframe-poshandler-window-top-center #'posframe-poshandler-p0.5p0-to-w0.5w0)
-(defun posframe-poshandler-p0.5p0-to-w0.5w0 (info)
-  "Posframe's position handler.
-
-Let posframe(0.5, 0) align to window(0.5, 0).  The structure of
-INFO can be found in docstring of `posframe-show'."
-  (let* ((window-left (plist-get info :parent-window-left))
-         (window-top (plist-get info :parent-window-top))
-         (window-width (plist-get info :parent-window-width))
-         (posframe-width (plist-get info :posframe-width)))
-    (cons (max 0 (+ window-left (/ (- window-width posframe-width) 2)))
-          window-top)))
-
-(defalias 'posframe-poshandler-window-bottom-left-corner #'posframe-poshandler-p0p1-to-w0w1)
-(defun posframe-poshandler-p0p1-to-w0w1 (info)
-  "Posframe's position handler.
-
-Let posframe(0, 1) align to window(0, 1).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (let* ((window-left (plist-get info :parent-window-left))
-         (window-top (plist-get info :parent-window-top))
-         (window-height (plist-get info :parent-window-height))
-         (posframe-height (plist-get info :posframe-height))
-         (mode-line-height (plist-get info :mode-line-height)))
-    (cons window-left
-          (+ window-top window-height
-             (- 0 mode-line-height posframe-height)))))
-
-(defalias 'posframe-poshandler-window-bottom-right-corner #'posframe-poshandler-p1p1-to-w1w1)
-(defun posframe-poshandler-p1p1-to-w1w1 (info)
-  "Posframe's position handler.
-
-Let posframe(1, 1) align to window(1, 1).  The structure of INFO
-can be found in docstring of `posframe-show'."
-  (let* ((window-left (plist-get info :parent-window-left))
-         (window-top (plist-get info :parent-window-top))
-         (window-width (plist-get info :parent-window-width))
-         (window-height (plist-get info :parent-window-height))
-         (posframe-width (plist-get info :posframe-width))
-         (posframe-height (plist-get info :posframe-height))
-         (mode-line-height (plist-get info :mode-line-height)))
-    (cons (+ window-left window-width
-             (- 0 posframe-width))
-          (+ window-top window-height
-             (- 0 mode-line-height posframe-height)))))
-
-(defalias 'posframe-poshandler-window-bottom-center #'posframe-poshandler-p0.5p1-to-w0.5w1)
-(defun posframe-poshandler-p0.5p1-to-w0.5w1 (info)
-  "Posframe's position handler.
-
-Let posframe(0.5, 1) align to window(0.5, 1).  The structure of
-INFO can be found in docstring of `posframe-show'."
-  (let* ((window-left (plist-get info :parent-window-left))
-         (window-top (plist-get info :parent-window-top))
-         (window-width (plist-get info :parent-window-width))
-         (window-height (plist-get info :parent-window-height))
-         (posframe-width (plist-get info :posframe-width))
-         (posframe-height (plist-get info :posframe-height))
-         (mode-line-height (plist-get info :mode-line-height)))
-    (cons (max 0 (+ window-left (/ (- window-width posframe-width) 2)))
-          (+ window-top window-height
-             (- 0 mode-line-height posframe-height)))))
-
-(defun posframe-refposhandler-xwininfo (&optional frame)
-  "Parent FRAME poshander function.
-Get the position of parent frame (current frame) with the help of
-xwininfo."
-  (when (executable-find "xwininfo")
-    (with-temp-buffer
-      (let ((case-fold-search nil))
-        (call-process "xwininfo" nil t nil
-                      "-display" (frame-parameter frame 'display)
-                      "-id"  (frame-parameter frame 'window-id))
-        (goto-char (point-min))
-        (search-forward "Absolute upper-left")
-        (let ((x (string-to-number
-                  (buffer-substring-no-properties
-                   (search-forward "X: ")
-                   (line-end-position))))
-              (y (string-to-number
-                  (buffer-substring-no-properties
-                   (search-forward "Y: ")
-                   (line-end-position)))))
-          (cons x y))))))
-
-
-(provide 'posframe)
-
-;;; posframe.el ends here
blob - 94a9ed024d3859793618152ea559a168bbcbb5e2 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
blob - 5a8d5cad5706ad2ad027d8e9dbeffc174fc2dae8 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/README.org
+++ /dev/null
@@ -1,562 +0,0 @@
-#+title: vertico.el - VERTical Interactive COmpletion
-#+author: Daniel Mendler
-#+language: en
-#+export_file_name: vertico.texi
-#+texinfo_dir_category: Emacs
-#+texinfo_dir_title: Vertico: (vertico).
-#+texinfo_dir_desc: VERTical Interactive COmpletion.
-
-#+html: <a href="https://www.gnu.org/software/emacs/"><img alt="GNU Emacs" src="https://github.com/minad/corfu/blob/screenshots/emacs.svg?raw=true"/></a>
-#+html: <a href="http://elpa.gnu.org/packages/vertico.html"><img alt="GNU ELPA" src="https://elpa.gnu.org/packages/vertico.svg"/></a>
-#+html: <a href="http://elpa.gnu.org/devel/vertico.html"><img alt="GNU-devel ELPA" src="https://elpa.gnu.org/devel/vertico.svg"/></a>
-#+html: <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Vertigomovie_restoration.jpg/800px-Vertigomovie_restoration.jpg" align="right" width="30%">
-
-* Introduction
-
-  Vertico provides a performant and minimalistic vertical completion UI based on
-  the default completion system. The main focus of Vertico is to provide a UI
-  which behaves /correctly/ under all circumstances. By reusing the built-in
-  facilities system, Vertico achieves /full compatibility/ with built-in Emacs
-  completion commands and completion tables. Vertico only provides the
-  completion UI but aims to be highly flexible, extensible and modular.
-  Additional enhancements are available as [[#extensions][extensions]] or [[#complementary-packages][complementary packages]].
-  The code base is small and maintainable. The main ~vertico.el~ package is only
-  about 600 lines of code without white space and comments.
-
-* Features
-
-  - Vertical display with arrow key navigation (see the [[#extensions][extensions]] for additional display modes)
-  - Prompt shows the current candidate index and the total number of candidates
-  - The current candidate is inserted with =TAB= and selected with =RET=
-  - Non-existing candidates can be entered by moving the point to the prompt line
-  - Configurable sorting by history position, length and alphabetically
-  - Long candidates with newlines are formatted to take up less space
-  - Deferred completion style highlighting for performance
-  - Support for annotations (~annotation-function~ and ~affixation-function~)
-  - Support for grouping and group cycling commands (~group-function~)
-
-  [[https://github.com/minad/vertico/blob/screenshots/vertico-mx.png?raw=true]]
-
-* Key bindings
-
-  Vertico defines its own local keymap in the minibuffer which is derived from
-  ~minibuffer-local-map~. The keymap keeps most of the ~fundamental-mode~
-  keybindings intact and remaps and binds only a handful of commands. Note in
-  particular the binding of =TAB= to ~vertico-insert~ and the bindings of
-  ~vertico-exit/exit-input~.
-
-  - ~beginning-of-buffer~, ~minibuffer-beginning-of-buffer~ -> ~vertico-first~
-  - ~end-of-buffer~ -> ~vertico-last~
-  - ~scroll-down-command~ -> ~vertico-scroll-down~
-  - ~scroll-up-command~ -> ~vertico-scroll-up~
-  - ~next-line~, ~next-line-or-history-element~ -> ~vertico-next~
-  - ~previous-line~, ~previous-line-or-history-element~ -> ~vertico-previous~
-  - ~forward-paragraph~ -> ~vertico-next-group~
-  - ~backward-paragraph~ -> ~vertico-previous-group~
-  - ~exit-minibuffer~ -> ~vertico-exit~
-  - ~kill-ring-save~ -> ~vertico-save~
-  - =C-<return>= -> ~vertico-exit-input~
-  - =TAB= -> ~vertico-insert~
-
-* Configuration
-
-  Vertico is available from [[http://elpa.gnu.org/packages/vertico.html][GNU ELPA]]. You can install it directly via
-  ~package-install~. After installation, you can activate the global minor mode
-  with =M-x vertico-mode=. In order to configure Vertico and other packages in
-  your init.el, you may want to take advantage of ~use-package~. I recommend to
-  give Orderless completion a try, which is different from the prefix TAB
-  completion used by the basic default completion system or in shells. Here is
-  an example configuration:
-
-  #+begin_src emacs-lisp
-    ;; Enable vertico
-    (use-package vertico
-      :init
-      (vertico-mode)
-
-      ;; Different scroll margin
-      ;; (setq vertico-scroll-margin 0)
-
-      ;; Show more candidates
-      ;; (setq vertico-count 20)
-
-      ;; Grow and shrink the Vertico minibuffer
-      ;; (setq vertico-resize t)
-
-      ;; Optionally enable cycling for `vertico-next' and `vertico-previous'.
-      ;; (setq vertico-cycle t)
-      )
-
-    ;; Optionally use the `orderless' completion style. See
-    ;; `+orderless-dispatch' in the Consult wiki for an advanced Orderless style
-    ;; dispatcher. Additionally enable `partial-completion' for file path
-    ;; expansion. `partial-completion' is important for wildcard support.
-    ;; Multiple files can be opened at once with `find-file' if you enter a
-    ;; wildcard. You may also give the `initials' completion style a try.
-    (use-package orderless
-      :init
-      ;; Configure a custom style dispatcher (see the Consult wiki)
-      ;; (setq orderless-style-dispatchers '(+orderless-dispatch)
-      ;;       orderless-component-separator #'orderless-escapable-split-on-space)
-      (setq completion-styles '(orderless)
-            completion-category-defaults nil
-            completion-category-overrides '((file (styles partial-completion)))))
-
-    ;; Persist history over Emacs restarts. Vertico sorts by history position.
-    (use-package savehist
-      :init
-      (savehist-mode))
-
-    ;; A few more useful configurations...
-    (use-package emacs
-      :init
-      ;; Add prompt indicator to `completing-read-multiple'.
-      ;; Alternatively try `consult-completing-read-multiple'.
-      (defun crm-indicator (args)
-        (cons (concat "[CRM] " (car args)) (cdr args)))
-      (advice-add #'completing-read-multiple :filter-args #'crm-indicator)
-
-      ;; 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)
-
-      ;; Emacs 28: Hide commands in M-x which do not work in the current mode.
-      ;; Vertico commands are hidden in normal buffers.
-      ;; (setq read-extended-command-predicate
-      ;;       #'command-completion-default-include-p)
-
-      ;; Enable recursive minibuffers
-      (setq enable-recursive-minibuffers t))
-  #+end_src
-
-  See also the [[https://github.com/minad/vertico/wiki][Vertico Wiki]] for additional configuration tips. For more general
-  documentation read the chapter about completion in the [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Completion.html][Emacs manual]]. If you
-  want to create your own completion commands, you can find documentation about
-  completion in the [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Completion.html][Elisp manual]].
-
-** Completion styles and TAB completion
-
-  The bindings of the ~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 behave as usual. For example you can use =M-TAB= to cycle
-  between candidates if you have set ~completion-cycle-threshold~.
-
-  #+begin_src emacs-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_src
-
-  The ~orderless~ completion style does not support completion of a common prefix
-  substring, as you may be familiar with from shells or the basic default
-  completion system. The reason is that the Orderless input string is usually
-  not a prefix. In order to support completing prefixes you may want to combine
-  ~orderless~ with ~substring~ in your =completion-styles= configuration.
-
-  #+begin_src emacs-lisp
-    (setq completion-styles '(substring orderless))
-  #+end_src
-
-  Alternatively you can experiment with the built-in completion-styles, e.g.,
-  adding =partial-completion= or =flex=. The =partial-completion= style is important
-  to add if you want to open multiple files at once with ~find-file~ using
-  wildcards. In order to open multiple files at once, you have to move to the
-  prompt and then press =RET=.
-
-  #+begin_src emacs-lisp
-    (setq completion-styles '(basic substring partial-completion flex))
-  #+end_src
-
-  Because Vertico is fully compatible with Emacs default completion
-  system, further customization of completion behavior can be achieved
-  by setting the designated Emacs variables. For example, one may wish
-  to disable case-sensitivity for file and buffer matching when built-in
-  completion styles are used instead of ~orderless~:
-
-  #+begin_src emacs-lisp
-    (setq read-file-name-completion-ignore-case t
-          read-buffer-completion-ignore-case t
-          completion-ignore-case t)
-  #+end_src
-
-** Completion-at-point and completion-in-region
-
-  The =completion-at-point= command is usually bound to =M-TAB= or =TAB=. In case you
-  want to use Vertico for completion-at-point/completion-in-region, you can use
-  the function ~consult-completion-in-region~ provided by the Consult package.
-
-  #+begin_src emacs-lisp
-    ;; Use `consult-completion-in-region' if Vertico is enabled.
-    ;; Otherwise use the default `completion--in-region' function.
-    (setq completion-in-region-function
-          (lambda (&rest args)
-            (apply (if vertico-mode
-                       #'consult-completion-in-region
-                     #'completion--in-region)
-                   args)))
-  #+end_src
-
-  The =completion-in-region-function= setting also affects TAB completion in the
-  minibuffer when =M-:= (~eval-expression~) is used.
-
-  You may also want to look into my [[https://github.com/minad/corfu][Corfu]] package, which provides a minimal
-  completion system for =completion-in-region= in a child frame popup. Corfu is
-  also a narrowly focused package and developed in the same spirit as Vertico.
-
-** Completing-read-multiple (CRM)
-
-  Consult offers an enhanced =completing-read-multiple= implementation which you
-  can use with Vertico.
-
-  #+begin_src emacs-lisp
-    (advice-add #'completing-read-multiple
-                :override #'consult-completing-read-multiple)
-  #+end_src
-
-* Extensions
-  :properties:
-  :custom_id: extensions
-  :end:
-
-  We maintain small extension packages to Vertico in this repository in the
-  subdirectory [[https://github.com/minad/vertico/tree/main/extensions][extensions/]]. The extensions are installed together with Vertico
-  if you pull the package from ELPA. The extensions are inactive by default and
-  can be enabled manually if desired. Furthermore it is possible to install all
-  of the files separately, both ~vertico.el~ and the ~vertico-*.el~ extensions.
-  Currently the following extensions come with the Vertico ELPA package:
-
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-buffer.el][vertico-buffer]]: =vertico-buffer-mode= to display Vertico in a separate buffer.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-directory.el][vertico-directory]]: Commands for Ido-like directory navigation.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-flat.el][vertico-flat]]: =vertico-flat-mode= to enable a flat, horizontal display.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-grid.el][vertico-grid]]: =vertico-grid-mode= to enable a grid display.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-indexed.el][vertico-indexed]]: =vertico-indexed-mode= to select indexed candidates with prefix arguments.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-mouse.el][vertico-mouse]]: =vertico-mouse-mode= to support for scrolling and candidate selection.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-multiform.el][vertico-multiform]]: Configure Vertico modes per command or completion category.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-quick.el][vertico-quick]]: Commands to select using Avy-style quick keys.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-repeat.el][vertico-repeat]]: The command =vertico-repeat= repeats the last completion session.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-reverse.el][vertico-reverse]]: =vertico-reverse-mode= to reverse the display.
-  - [[https://github.com/minad/vertico/blob/main/extensions/vertico-unobtrusive.el][vertico-unobtrusive]]: =vertico-unobtrusive-mode= displays only the topmost candidate.
-
-  With these extensions it is possible to adapt Vertico such that it matches
-  your preference or behaves similar to other familiar UIs. For example, the
-  combination =vertico-flat= plus =vertico-directory= resembles Ido in look and
-  feel. For an interface similar to Helm, the extension =vertico-buffer= allows
-  you to configure freely where the completion buffer opens, instead of growing
-  the minibuffer. Furthermore =vertico-buffer= will adjust the number of displayed
-  candidates according to the buffer height.
-
-  Configuration example for =vertico-directory=:
-
-  #+begin_src emacs-lisp
-    ;; Configure directory extension.
-    (use-package vertico-directory
-      :after vertico
-      :ensure nil
-      ;; More convenient directory navigation commands
-      :bind (:map vertico-map
-                  ("RET" . vertico-directory-enter)
-                  ("DEL" . vertico-directory-delete-char)
-                  ("M-DEL" . vertico-directory-delete-word))
-      ;; Tidy shadowed file names
-      :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))
-  #+end_src
-
-** Configure Vertico per command or completion category
-
-[[https://github.com/minad/vertico/blob/screenshots/vertico-ripgrep.png?raw=true]]
-
-Vertico offers the =vertico-multiform-mode= which allows you to configure Vertico
-per command or per completion category. The =vertico-buffer-mode= enables a
-Helm-like buffer display, which takes more space but also displays more
-candidates. This verbose display mode is useful for commands like ~consult-imenu~
-or ~consult-outline~ since the buffer display allows you to get a better overview
-over the entire current buffer. But for other commands you want to keep using
-the default Vertico display. ~vertico-multiform-mode~ solves this configuration
-problem!
-
-#+begin_src emacs-lisp
-  ;; Enable vertico-multiform
-  (vertico-multiform-mode)
-
-  ;; Configure the display per command.
-  ;; Use a buffer with indices for imenu
-  ;; and a flat (Ido-like) menu for M-x.
-  (setq vertico-multiform-commands
-        '((consult-imenu buffer indexed)
-          (execute-extended-command unobtrusive)))
-
-  ;; Configure the display per completion category.
-  ;; Use the grid display for files and a buffer
-  ;; for the consult-grep commands.
-  (setq vertico-multiform-categories
-        '((file grid)
-          (consult-grep buffer)))
-#+end_src
-
-You can use your own functions or even lambdas to configure the completion
-behavior per command or per completion category. The function must have the
-calling convention of a mode, i.e., it takes a single argument, which is either
-1 to turn on the mode and -1 to turn off the mode.
-
-#+begin_src emacs-lisp
-  ;; Configure `consult-outline' as a scaled down TOC in a separate buffer
-  (setq vertico-multiform-commands
-        `((consult-outline buffer ,(lambda (_) (text-scale-set -1)))))
-#+end_src
-
-Furthermore you can tune buffer-local settings per command or category.
-
-#+begin_src emacs-lisp
-  ;; Change the default sorting function
-  (setq vertico-multiform-commands
-        '((describe-symbol (vertico-sort-function . vertico-sort-alpha))))
-
-  (setq vertico-multiform-categories
-        '((symbol (vertico-sort-function . vertico-sort-alpha))
-          (file (vertico-sort-function . sort-directories-first))))
-
-  ;; Sort directories before files
-  (defun sort-directories-first (files)
-    (setq files (vertico-sort-history-length-alpha files))
-    (nconc (seq-filter (lambda (x) (string-suffix-p "/" x)) files)
-           (seq-remove (lambda (x) (string-suffix-p "/" x)) files)))
-#+end_src
-
-Combining these features allows us to fine-tune the completion display even more
-by adjusting the ~vertico-buffer-display-action~. We can for example reuse the
-current window for commands of the ~consult-grep~ category (~consult-grep~,
-~consult-git-grep~ and ~consult-ripgrep~). Note that this configuration is
-incompatible with Consult preview, since the previewed buffer is usually shown
-in exactly this window. Nevertheless this snippet demonstrates the flexibility
-of the configuration system.
-
-#+begin_src emacs-lisp
-  ;; Configure the buffer display and the buffer display action
-  (setq vertico-multiform-categories
-        '((consult-grep
-           buffer
-           (vertico-buffer-display-action . (display-buffer-same-window)))))
-
-  ;; Disable preview for consult-grep commands
-  (consult-customize consult-ripgrep consult-git-grep consult-grep :preview-key nil)
-#+end_src
-
-As another example, the following code uses ~vertico-flat~ and ~vertico-cycle~ to
-emulate ~(ido-mode 'buffer)~, i.e., Ido when it is enabled only for completion of
-buffer names. ~vertico-cycle~ set to ~t~ is necessary here to prevent completion
-candidates from disappearing when they scroll off-screen to the left.
-
-#+begin_src emacs-lisp
-  (setq vertico-multiform-categories
-        '((buffer flat (vertico-cycle . t))))
-#+end_src
-
-* Complementary packages
-  :properties:
-  :custom_id: complementary-packages
-  :end:
-
-  Vertico integrates well with complementary packages, which enrich the
-  completion UI. These packages are fully supported:
-
-  - [[https://github.com/minad/marginalia][Marginalia]]: Rich annotations in the minibuffer
-  - [[https://github.com/minad/consult][Consult]]: Useful search and navigation commands
-  - [[https://github.com/oantolin/embark][Embark]]: Minibuffer actions and context menu
-  - [[https://github.com/oantolin/orderless][Orderless]]: Advanced completion style
-
-  In order to get accustomed with the package ecosystem, I recommed the
-  following quick start approach:
-
-  1. Start with plain Emacs (~emacs -Q~).
-  2. Install and enable Vertico to get incremental minibuffer completion.
-  3. Install Orderless and/or configure the built-in completion styles
-     for more flexible minibuffer filtering.
-  4. Install Marginalia if you like rich minibuffer annotations.
-  5. Install Embark and add two keybindings for ~embark-dwim~ and ~embark-act~.
-     I am using the mnemonic keybindings =M-.= and =C-.= since these commands allow
-     you to act on the object at point or in the minibuffer.
-  6. Install Consult if you want additional featureful completion commands,
-     e.g, the buffer switcher ~consult-buffer~ with preview or the line-based
-     search ~consult-line~.
-  7. Install Embark-Consult and Wgrep for export from =consult-line= to =occur-mode=
-     buffers and from =consult-grep= to editable =grep-mode= buffers.
-  8. Fine tune Vertico with [[#extensions][extensions]].
-
-  The ecosystem is modular. You don't have to use all of these components. Use
-  only the ones you like and the ones which fit well into your setup. The
-  steps 1. to 4. introduce no new commands over plain Emacs. Step 5. introduces
-  the new commands ~embark-act~ and ~embark-dwim~. In step 6. you get the Consult
-  commands, some offer new functionality not present in Emacs already (e.g.,
-  ~consult-line~) and some are substitutes (e.g., ~consult-buffer~ for
-  ~switch-to-buffer~).
-
-* Child frames and Popups
-
-An often requested feature is the ability to display the completions in a child
-frame popup. Personally I am critical of using child frames for minibuffer
-completion. From my experience it introduces more problems than it solves. Most
-importantly child frames hide the content of the underlying buffer. Furthermore
-child frames do not play well together with changing windows and entering
-recursive minibuffer sessions. On top, child frames can feel slow and sometimes
-flicker. A better alternative is the ~vertico-buffer~ display which can even be
-configured individually per command using ~vertico-multiform~. On the plus side of
-child frames, the completion display appears at the center of the screen, where
-your eyes are focused. Please give the following packages a try and judge for
-yourself.
-
-- [[https://github.com/muffinmad/emacs-mini-frame][mini-frame]]: Display the entire minibuffer in a child frame.
-- [[https://github.com/minad/mini-popup][mini-popup]]: Slightly simpler alternative to mini-frame.
-- [[https://github.com/tumashu/vertico-posframe][vertico-posframe]]: Display only the Vertico minibuffer in a child frame using
-  the posframe library.
-
-* Alternatives
-
-  There are many alternative completion UIs, each UI with its own advantages and
-  disadvantages.
-
-  Vertico aims to be 100% compliant with all Emacs commands and achieves that
-  with a minimal code base, relying purely on ~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. Due to its small
-  code base and reuse of the Emacs built-in facilities, bugs and compatibility
-  issues are less likely to occur in comparison to completion UIs or full
-  completion systems, which reimplement a lot of functionality.
-
-  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 Helm or Ivy. Overall the packages in the spirit of Vertico have a
-  different style than Helm or Ivy. The idea is to have smaller independent
-  components, which one can add and understand step by step. Each component
-  focuses on its niche and tries to be as non-intrusive as possible. Vertico
-  targets users interested in crafting their Emacs precisely to their liking -
-  completion plays an integral part in how the users interacts with Emacs.
-
-  There are other interactive completion UIs, which follow a similar philosophy:
-
-  - [[https://github.com/raxod502/selectrum][Selectrum]]: Selectrum has a similar UI as Vertico, since it directly inspired
-    Vertico. The Selectrum code base is more complex. Unfortunately Selectrum is
-    not fully compatible with every Emacs completion command ([[https://github.com/raxod502/selectrum/issues/481][Issue #481]]), since
-    it uses its own filtering infrastructure, which deviates from the standard
-    Emacs completion facilities. Vertico additionally has the ability to cycle
-    over candidates, offers commands for grouping support and comes with a rich
-    set of [[#extensions][extensions]].
-  - [[https://github.com/oantolin/icomplete-vertical][Icomplete-vertical]]: This package enhances the Emacs builtin Icomplete with a
-    vertical display. In contrast to Vertico, Icomplete rotates the candidates
-    such that the current candidate always appears at the top. From my
-    perspective, candidate rotation feels a bit less intuitive than the UI of
-    Vertico or Selectrum. Note that Emacs 28 offers a built-in
-    ~icomplete-vertical-mode~.
-  - [[https://gitlab.com/protesilaos/mct][Mct]]: Minibuffer and Completions in Tandem. Mct reuses the default ~*Completions*~
-    buffer and enhances it with automatic updates and additional keybindings, to
-    select a candidate and move between minibuffer and completions buffer. Mct
-    is great if you prefer an unobtrusive UI since it can be configured to open
-    only when requested. Furthermore since Mct uses a fully functional buffer
-    you can reuse all your familar buffer commands inside the completions
-    buffer. The main distinction to Vertico's approach is that ~*Completions*~
-    buffer displays all matching candidates. On the one hand this is good since
-    it allows you to interact with all the candidates and jump around with
-    Isearch or Avy. On the other hand it necessarily causes a slowdown in
-    comparison to Vertico, which only displays a subset of candidates. Mct
-    supports completion in region via its ~mct-region-mode~.
-
-* Problematic completion commands
-
-  Vertico is robust in most scenarios. However some completion commands make
-  certain assumptions about the completion styles and the completion UI. Some of
-  these assumptions may not hold in Vertico or other UIs and require minor
-  workarounds.
-
-** ~org-refile~
-
-   ~org-refile~ uses ~org-olpath-completing-read~ to complete the outline path
-   in steps, when ~org-refile-use-outline-path~ is non-nil.
-
-   Unfortunately the implementation of this Org completion table assumes that
-   the ~basic~ completion style is used. The table is incompatible with completion
-   styles like ~substring~, ~flex~ or ~orderless~. In order to fix the issue at the
-   root, the completion table should make use of completion boundaries similar
-   to the built-in file completion table. In your user configuration you can
-   prioritize ~basic~ before ~orderless:~
-
-   #+begin_src emacs-lisp
-     ;; Alternative 1: Use the basic completion style
-     (setq org-refile-use-outline-path 'file
-           org-outline-path-complete-in-steps t)
-     (advice-add #'org-olpath-completing-read :around
-                 (lambda (&rest args)
-                   (minibuffer-with-setup-hook
-                       (lambda () (setq-local completion-styles '(basic)))
-                     (apply args))))
-   #+end_src
-
-   Alternatively you may want to disable the outline path completion in steps.
-   The completion on the full path can be quicker since the input string matches
-   directly against substrings of the full path, which is useful with Orderless.
-   However the list of possible completions becomes much more cluttered.
-
-   #+begin_src emacs-lisp
-     ;; Alternative 2: Complete full paths
-     (setq org-refile-use-outline-path 'file
-           org-outline-path-complete-in-steps nil)
-   #+end_src
-
-** ~tmm-menubar~
-
-   The text menu bar works well with Vertico but always shows a =*Completions*=
-   buffer, which is unwanted if you use the Vertico UI. This completion buffer
-   can be disabled as follows.
-
-   #+begin_src emacs-lisp
-     (advice-add #'tmm-add-prompt :after #'minibuffer-hide-completions)
-   #+end_src
-
-** ~ffap-menu~
-
-   The command ~ffap-menu~ shows the ==*Completions*= buffer by default like
-   ~tmm-menubar~, which is unnecessary with Vertico. This completion buffer can be
-   disabled as follows.
-
-   #+begin_src emacs-lisp
-     (advice-add #'ffap-menu-ask :around (lambda (&rest args)
-                                      (cl-letf (((symbol-function #'minibuffer-completion-help)
-                                                 #'ignore))
-                                        (apply args))))
-   #+end_src
-
-** Tramp hostname completion
-
-   In combination with Orderless, hostnames are not made available for
-   completion after entering =/ssh:=. In order to avoid this problem, the =basic=
-   completion style should be specified for the file completion category.
-
-   #+begin_src emacs-lisp
-     (setq completion-styles '(orderless)
-           completion-category-overrides '((file (styles basic partial-completion))))
-   #+end_src
-
-   For users who are familiar with the =completion-style= machinery: You may also
-   define a custom completion style which sets in only for remote files!
-
-   #+begin_src emacs-lisp
-     (defun basic-remote-try-completion (string table pred point)
-       (and (vertico--remote-p string)
-            (completion-basic-try-completion string table pred point)))
-     (defun basic-remote-all-completions (string table pred point)
-       (and (vertico--remote-p string)
-            (completion-basic-all-completions string table pred point)))
-     (add-to-list
-      'completion-styles-alist
-      '(basic-remote basic-remote-try-completion basic-remote-all-completions nil))
-     (setq completion-styles '(orderless)
-           completion-category-overrides '((file (styles basic-remote partial-completion))))
-   #+end_src
-
-* Contributions
-
-  Since this package is part of [[http://elpa.gnu.org/packages/vertico.html][GNU ELPA]] contributions require a copyright
-  assignment to the FSF.
blob - 4362dbd8d564a6ac41feee5e33d6dddfcf1c249e (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/dir
+++ /dev/null
@@ -1,18 +0,0 @@
-This is the file .../info/dir, which contains the
-topmost node of the Info hierarchy, called (dir)Top.
-The first time you invoke Info you start off looking at this node.
-
-File: dir,	Node: Top	This is the top of the INFO tree
-
-  This (the Directory node) gives a menu of major topics.
-  Typing "q" exits, "H" lists all Info commands, "d" returns here,
-  "h" gives a primer for first-timers,
-  "mEmacs<Return>" visits the Emacs manual, etc.
-
-  In Emacs, you can click mouse button 2 on a menu item or cross reference
-  to select it.
-
-* Menu:
-
-Emacs
-* Vertico: (vertico).           VERTical Interactive COmpletion.
blob - bea027508062f72d2744fc3a0d934130b133b2ec (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-autoloads.el
+++ /dev/null
@@ -1,321 +0,0 @@
-;;; vertico-autoloads.el --- automatically extracted autoloads
-;;
-;;; Code:
-
-(add-to-list 'load-path (directory-file-name
-                         (or (file-name-directory #$) (car load-path))))
-
-
-;;;### (autoloads nil "vertico" "vertico.el" (0 0 0 0))
-;;; Generated autoloads from vertico.el
-
-(defvar vertico-mode nil "\
-Non-nil if Vertico mode is enabled.
-See the `vertico-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-mode'.")
-
-(custom-autoload 'vertico-mode "vertico" nil)
-
-(autoload 'vertico-mode "vertico" "\
-VERTical Interactive COmpletion.
-
-If called interactively, enable Vertico mode if ARG is positive,
-and disable it if ARG is zero or negative.  If called from Lisp,
-also enable the mode if ARG is omitted or nil, and toggle it if
-ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico" '("vertico-")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-buffer" "vertico-buffer.el" (0 0 0
-;;;;;;  0))
-;;; Generated autoloads from vertico-buffer.el
-
-(defvar vertico-buffer-mode nil "\
-Non-nil if Vertico-Buffer mode is enabled.
-See the `vertico-buffer-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-buffer-mode'.")
-
-(custom-autoload 'vertico-buffer-mode "vertico-buffer" nil)
-
-(autoload 'vertico-buffer-mode "vertico-buffer" "\
-Display Vertico in a buffer instead of the minibuffer.
-
-If called interactively, enable Vertico-Buffer mode if ARG is
-positive, and disable it if ARG is zero or negative.  If called
-from Lisp, also enable the mode if ARG is omitted or nil, and
-toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-buffer" '("vertico-buffer-")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-directory" "vertico-directory.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from vertico-directory.el
-
-(autoload 'vertico-directory-enter "vertico-directory" "\
-Enter directory or exit completion with current candidate." t nil)
-
-(autoload 'vertico-directory-up "vertico-directory" "\
-Delete directory before point." t nil)
-
-(autoload 'vertico-directory-delete-char "vertico-directory" "\
-Delete directory or char before point." t nil)
-
-(autoload 'vertico-directory-delete-word "vertico-directory" "\
-Delete directory or word before point." t nil)
-
-(autoload 'vertico-directory-tidy "vertico-directory" "\
-Tidy shadowed file name, see `rfn-eshadow-overlay'." nil nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-directory" '("vertico-directory--completing-file-p")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-flat" "vertico-flat.el" (0 0 0 0))
-;;; Generated autoloads from vertico-flat.el
-
-(defvar vertico-flat-mode nil "\
-Non-nil if Vertico-Flat mode is enabled.
-See the `vertico-flat-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-flat-mode'.")
-
-(custom-autoload 'vertico-flat-mode "vertico-flat" nil)
-
-(autoload 'vertico-flat-mode "vertico-flat" "\
-Flat, horizontal display for Vertico.
-
-If called interactively, enable Vertico-Flat mode if ARG is
-positive, and disable it if ARG is zero or negative.  If called
-from Lisp, also enable the mode if ARG is omitted or nil, and
-toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-flat" '("vertico-flat-")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-grid" "vertico-grid.el" (0 0 0 0))
-;;; Generated autoloads from vertico-grid.el
-
-(defvar vertico-grid-mode nil "\
-Non-nil if Vertico-Grid mode is enabled.
-See the `vertico-grid-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-grid-mode'.")
-
-(custom-autoload 'vertico-grid-mode "vertico-grid" nil)
-
-(autoload 'vertico-grid-mode "vertico-grid" "\
-Grid display for Vertico.
-
-If called interactively, enable Vertico-Grid mode if ARG is
-positive, and disable it if ARG is zero or negative.  If called
-from Lisp, also enable the mode if ARG is omitted or nil, and
-toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-grid" '("vertico-grid-")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-indexed" "vertico-indexed.el" (0 0
-;;;;;;  0 0))
-;;; Generated autoloads from vertico-indexed.el
-
-(defvar vertico-indexed-mode nil "\
-Non-nil if Vertico-Indexed mode is enabled.
-See the `vertico-indexed-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-indexed-mode'.")
-
-(custom-autoload 'vertico-indexed-mode "vertico-indexed" nil)
-
-(autoload 'vertico-indexed-mode "vertico-indexed" "\
-Prefix candidates with indices.
-
-If called interactively, enable Vertico-Indexed mode if ARG is
-positive, and disable it if ARG is zero or negative.  If called
-from Lisp, also enable the mode if ARG is omitted or nil, and
-toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-indexed" '("vertico-indexed--")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-mouse" "vertico-mouse.el" (0 0 0 0))
-;;; Generated autoloads from vertico-mouse.el
-
-(defvar vertico-mouse-mode nil "\
-Non-nil if Vertico-Mouse mode is enabled.
-See the `vertico-mouse-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-mouse-mode'.")
-
-(custom-autoload 'vertico-mouse-mode "vertico-mouse" nil)
-
-(autoload 'vertico-mouse-mode "vertico-mouse" "\
-Mouse support for Vertico.
-
-If called interactively, enable Vertico-Mouse mode if ARG is
-positive, and disable it if ARG is zero or negative.  If called
-from Lisp, also enable the mode if ARG is omitted or nil, and
-toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-mouse" '("vertico-mouse--")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-multiform" "vertico-multiform.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from vertico-multiform.el
-
-(defvar vertico-multiform-mode nil "\
-Non-nil if Vertico-Multiform mode is enabled.
-See the `vertico-multiform-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-multiform-mode'.")
-
-(custom-autoload 'vertico-multiform-mode "vertico-multiform" nil)
-
-(autoload 'vertico-multiform-mode "vertico-multiform" "\
-Configure Vertico in various forms per command.
-
-If called interactively, enable Vertico-Multiform mode if ARG is
-positive, and disable it if ARG is zero or negative.  If called
-from Lisp, also enable the mode if ARG is omitted or nil, and
-toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-multiform" '("vertico-multiform-")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-quick" "vertico-quick.el" (0 0 0 0))
-;;; Generated autoloads from vertico-quick.el
-
-(autoload 'vertico-quick-jump "vertico-quick" "\
-Jump to candidate using quick keys." t nil)
-
-(autoload 'vertico-quick-exit "vertico-quick" "\
-Exit with candidate using quick keys." t nil)
-
-(autoload 'vertico-quick-insert "vertico-quick" "\
-Insert candidate using quick keys." t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-quick" '("vertico-quick")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-repeat" "vertico-repeat.el" (0 0 0
-;;;;;;  0))
-;;; Generated autoloads from vertico-repeat.el
-
-(autoload 'vertico-repeat "vertico-repeat" "\
-Repeat last Vertico completion session." t nil)
-
-(autoload 'vertico-repeat-save "vertico-repeat" "\
-Save Vertico status for `vertico-repeat'.
-This function must be registered as `minibuffer-setup-hook'." nil nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-repeat" '("vertico-repeat--")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-reverse" "vertico-reverse.el" (0 0
-;;;;;;  0 0))
-;;; Generated autoloads from vertico-reverse.el
-
-(defvar vertico-reverse-mode nil "\
-Non-nil if Vertico-Reverse mode is enabled.
-See the `vertico-reverse-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-reverse-mode'.")
-
-(custom-autoload 'vertico-reverse-mode "vertico-reverse" nil)
-
-(autoload 'vertico-reverse-mode "vertico-reverse" "\
-Reverse the Vertico display.
-
-If called interactively, enable Vertico-Reverse mode if ARG is
-positive, and disable it if ARG is zero or negative.  If called
-from Lisp, also enable the mode if ARG is omitted or nil, and
-toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-reverse" '("vertico-reverse-")))
-
-;;;***
-
-;;;### (autoloads nil "vertico-unobtrusive" "vertico-unobtrusive.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from vertico-unobtrusive.el
-
-(defvar vertico-unobtrusive-mode nil "\
-Non-nil if Vertico-Unobtrusive mode is enabled.
-See the `vertico-unobtrusive-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-unobtrusive-mode'.")
-
-(custom-autoload 'vertico-unobtrusive-mode "vertico-unobtrusive" nil)
-
-(autoload 'vertico-unobtrusive-mode "vertico-unobtrusive" "\
-Unobtrusive display for Vertico.
-
-If called interactively, enable Vertico-Unobtrusive mode if ARG
-is positive, and disable it if ARG is zero or negative.  If
-called from Lisp, also enable the mode if ARG is omitted or nil,
-and toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-unobtrusive" '("vertico-unobtrusive--orig-count")))
-
-;;;***
-
-;;;### (autoloads nil nil ("vertico-pkg.el") (0 0 0 0))
-
-;;;***
-
-;; Local Variables:
-;; version-control: never
-;; no-byte-compile: t
-;; no-update-autoloads: t
-;; coding: utf-8
-;; End:
-;;; vertico-autoloads.el ends here
blob - 7e2c3ab7228b32fc2442b84dd230892474ab6400 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-buffer.el
+++ /dev/null
@@ -1,155 +0,0 @@
-;;; vertico-buffer.el --- Display Vertico in a buffer instead of the minibuffer -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension, which displays Vertico in a
-;; buffer instead of the minibuffer. The buffer display can be enabled
-;; by the `vertico-buffer-mode'.
-
-;;; Code:
-
-(require 'vertico)
-
-(defvar-local vertico-buffer--window nil)
-
-(defcustom vertico-buffer-hide-prompt t
-  "Hide prompt in the minibuffer."
-  :group 'vertico
-  :type 'boolean)
-
-(defcustom vertico-buffer-display-action
-  '(display-buffer-reuse-window)
-  "Display action for the Vertico buffer."
-  :group 'vertico
-  :type `(choice
-          (const :tag "Reuse some window"
-                 (display-buffer-reuse-window))
-          (const :tag "Below target buffer"
-                 (display-buffer-below-selected
-                  (window-height . ,(+ 3 vertico-count))))
-          (const :tag "Bottom of frame"
-                 (display-buffer-at-bottom
-                  (window-height . ,(+ 3 vertico-count))))
-          (const :tag "Side window on the right"
-                 (display-buffer-in-side-window
-                  (side . right)
-                  (window-width . 0.3)))
-          (const :tag "Side window on the left"
-                 (display-buffer-in-side-window
-                  (side . left)
-                  (window-width . 0.3)))
-          (const :tag "Side window at the top"
-                 (display-buffer-in-side-window
-                  (window-height . ,(+ 3 vertico-count))
-                  (side . top)))
-          (const :tag "Side window at the bottom"
-                 (display-buffer-in-side-window
-                  (window-height . ,(+ 3 vertico-count))
-                  (side . bottom)))
-          (sexp :tag "Other")))
-
-(defun vertico-buffer--redisplay (win)
-  "Redisplay window WIN."
-  (when-let (mbwin (active-minibuffer-window))
-    (when (eq (window-buffer mbwin) (current-buffer))
-      (let ((old cursor-in-non-selected-windows)
-            (new (and (eq (selected-window) mbwin) 'box)))
-        (unless (eq new old)
-          (setq-local cursor-in-non-selected-windows new)
-          (force-mode-line-update t)))
-      (when (eq win vertico-buffer--window)
-        (setq-local truncate-lines (< (window-point vertico-buffer--window)
-                                      (* 0.8 (window-width vertico-buffer--window))))
-        (set-window-point vertico-buffer--window (point))
-        (when vertico-buffer-hide-prompt
-          (window-resize mbwin (- (window-pixel-height mbwin)) nil nil 'pixelwise)
-          (set-window-vscroll mbwin 100))))))
-
-(defun vertico-buffer--setup ()
-  "Setup buffer display."
-  (add-hook 'pre-redisplay-functions 'vertico-buffer--redisplay nil 'local)
-  (let ((action vertico-buffer-display-action)
-        (temp (generate-new-buffer "*vertico*")))
-    (setq vertico-buffer--window
-          ;; Temporarily select the original window such that `display-buffer-same-window' works.
-          (with-minibuffer-selected-window (display-buffer temp action)))
-    (set-window-buffer vertico-buffer--window (current-buffer))
-    (kill-buffer temp))
-  (let ((sym (make-symbol "vertico-buffer--destroy"))
-        (depth (recursion-depth))
-        (now (window-parameter vertico-buffer--window 'no-other-window))
-        (ndow (window-parameter vertico-buffer--window 'no-delete-other-windows)))
-    (fset sym (lambda ()
-                (when (= depth (recursion-depth))
-                  (with-selected-window (active-minibuffer-window)
-                    (when (window-live-p vertico-buffer--window)
-                      (set-window-parameter vertico-buffer--window 'no-other-window now)
-                      (set-window-parameter vertico-buffer--window 'no-delete-other-windows ndow))
-                    (when vertico-buffer-hide-prompt
-                      (set-window-vscroll nil 0))
-                    (remove-hook 'minibuffer-exit-hook sym)))))
-    ;; NOTE: We cannot use a buffer-local minibuffer-exit-hook here.
-    ;; The hook will not be called when abnormally exiting the minibuffer
-    ;; from another buffer via `keyboard-escape-quit'.
-    (add-hook 'minibuffer-exit-hook sym)
-    (set-window-parameter vertico-buffer--window 'no-other-window t)
-    (set-window-parameter vertico-buffer--window 'no-delete-other-windows t)
-    (overlay-put vertico--candidates-ov 'window vertico-buffer--window)
-    (when (and vertico-buffer-hide-prompt vertico--count-ov)
-      (overlay-put vertico--count-ov 'window vertico-buffer--window))
-    (setq-local show-trailing-whitespace nil
-                truncate-lines t
-                face-remapping-alist
-                (copy-tree `((mode-line-inactive mode-line)
-                             ,@face-remapping-alist))
-                mode-line-format
-                (list (format " %s "
-                              (propertize
-                               (format (if (< depth 2) "*%s*" "*%s [%s]*")
-                                       (replace-regexp-in-string
-                                        ":? *\\'" ""
-                                        (minibuffer-prompt))
-                                       depth)
-                               'face 'mode-line-buffer-id)))
-                cursor-in-non-selected-windows 'box
-                vertico-count (- (/ (window-pixel-height vertico-buffer--window)
-                                    (default-line-height)) 2))))
-
-;;;###autoload
-(define-minor-mode vertico-buffer-mode
-  "Display Vertico in a buffer instead of the minibuffer."
-  :global t :group 'vertico
-  (cond
-   (vertico-buffer-mode
-    (advice-add #'vertico--setup :after #'vertico-buffer--setup)
-    (advice-add #'vertico--resize-window :override #'ignore))
-   (t
-    (advice-remove #'vertico--setup #'vertico-buffer--setup)
-    (advice-remove #'vertico--resize-window #'ignore))))
-
-(provide 'vertico-buffer)
-;;; vertico-buffer.el ends here
blob - 59316573ea7bed10d27137e73c9124dacf03a299 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-directory.el
+++ /dev/null
@@ -1,117 +0,0 @@
-;;; vertico-directory.el --- Ido-like direction navigation for Vertico -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension, which provides Ido-like
-;; directory navigation commands. The commands can be bound in the
-;; `vertico-map'. Furthermore a cleanup function for shadowed file paths
-;; is provided.
-;;
-;; (define-key vertico-map "\r" #'vertico-directory-enter)
-;; (define-key vertico-map "\d" #'vertico-directory-delete-char)
-;; (define-key vertico-map "\M-\d" #'vertico-directory-delete-word)
-;; (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy)
-
-;;; Code:
-
-(require 'vertico)
-
-(defun vertico-directory--completing-file-p ()
-  "Return non-nil when completing file names."
-  (eq 'file
-      (completion-metadata-get
-       (completion-metadata
-        (buffer-substring (minibuffer-prompt-end)
-                          (max (minibuffer-prompt-end) (point)))
-        minibuffer-completion-table
-        minibuffer-completion-predicate)
-       'category)))
-
-;;;###autoload
-(defun vertico-directory-enter ()
-  "Enter directory or exit completion with current candidate."
-  (interactive)
-  (if (and (>= vertico--index 0)
-           (let ((cand (vertico--candidate)))
-	     (or (string-suffix-p "/" cand)
-		 (and (vertico--remote-p cand)
-		      (string-suffix-p ":" cand))))
-           (vertico-directory--completing-file-p))
-      (vertico-insert)
-    (vertico-exit)))
-
-;;;###autoload
-(defun vertico-directory-up ()
-  "Delete directory before point."
-  (interactive)
-  (when (and (> (point) (minibuffer-prompt-end))
-             (eq (char-before) ?/)
-             (vertico-directory--completing-file-p))
-    (let ((path (buffer-substring (minibuffer-prompt-end) (point))))
-      (when (string-match-p "\\`~[^/]*/\\'" path)
-        (delete-minibuffer-contents)
-        (insert (expand-file-name path))))
-    (save-excursion
-      (goto-char (1- (point)))
-      (when (search-backward "/" (minibuffer-prompt-end) t)
-        (delete-region (1+ (point)) (point-max))
-        t))))
-
-;;;###autoload
-(defun vertico-directory-delete-char ()
-  "Delete directory or char before point."
-  (interactive)
-  (unless (vertico-directory-up)
-    (call-interactively #'backward-delete-char)))
-
-;;;###autoload
-(defun vertico-directory-delete-word ()
-  "Delete directory or word before point."
-  (interactive)
-  (unless (vertico-directory-up)
-    (let ((pt (point)))
-      (forward-word -1)
-      (delete-region pt (point)))))
-
-;;;###autoload
-(defun vertico-directory-tidy ()
-  "Tidy shadowed file name, see `rfn-eshadow-overlay'."
-  (when (and (eq this-command #'self-insert-command)
-             (bound-and-true-p rfn-eshadow-overlay)
-             (overlay-buffer rfn-eshadow-overlay)
-             (= (point) (point-max))
-             (or (>= (- (point) (overlay-end rfn-eshadow-overlay)) 2)
-                 (eq ?/ (char-before (- (point) 2)))))
-    (delete-region (overlay-start rfn-eshadow-overlay) (overlay-end rfn-eshadow-overlay))))
-
-;; Emacs 28: Do not show Vertico commands in M-X
-(dolist (sym '(vertico-directory-up vertico-directory-enter
-               vertico-directory-delete-char vertico-directory-delete-word))
-  (put sym 'completion-predicate #'vertico--command-p))
-
-(provide 'vertico-directory)
-;;; vertico-directory.el ends here
blob - 7af3f9c7834ac83cd9a9c5dcd0c26db03b70a875 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-flat.el
+++ /dev/null
@@ -1,143 +0,0 @@
-;;; vertico-flat.el --- Flat, horizontal display for Vertico -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension providing a horizontal display.
-;;
-;; The mode can be enabled globally or via `vertico-multiform-mode' per
-;; command or completion category. Alternatively the flat display can be
-;; toggled temporarily if `vertico-multiform-mode' is enabled:
-;;
-;; (define-key vertico-map "\M-F" #'vertico-multiform-flat)
-;;
-;; The flat display can be made to look like `ido-mode' by setting
-;; `vertico-cycle' to t. See also the `vertico-flat-format'
-;; configuration variable for further tweaks.
-
-;;; Code:
-
-(require 'vertico)
-
-(defcustom vertico-flat-max-lines 1
-  "Maximal number of lines to use."
-  :type 'integer
-  :group 'vertico)
-
-(defcustom vertico-flat-format
-  '(:left       #("{" 0 1 (face minibuffer-prompt))
-    :separator  #(" | " 0 3 (face minibuffer-prompt))
-    :right      #("}" 0 1 (face minibuffer-prompt))
-    :ellipsis   #("…" 0 1 (face minibuffer-prompt))
-    :only-match #("[%s]" 0 1 (face minibuffer-prompt)
-                  1 3 (face success) 3 4 (face minibuffer-prompt))
-    :no-match   "[No match]")
-  "Formatting strings."
-  :type 'plist
-  :group 'vertico)
-
-(defvar vertico-flat-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map [remap left-char] #'vertico-previous)
-    (define-key map [remap right-char] #'vertico-next)
-    map)
-  "Additional keymap activated in flat mode.")
-
-(defun vertico-flat--display-candidates (candidates)
-  "Display CANDIDATES horizontally."
-  (setq-local truncate-lines nil
-              resize-mini-windows t)
-  (move-overlay vertico--candidates-ov (point-max) (point-max))
-  (overlay-put
-   vertico--candidates-ov 'after-string
-   (concat #(" " 0 1 (cursor t))
-           (cond
-            ((and (not candidates) (plist-get vertico-flat-format :no-match)))
-            ((and (= vertico--total 1)
-                  (when-let (fmt (plist-get vertico-flat-format :only-match))
-                    (format fmt (substring-no-properties (car candidates))))))
-             (t (concat (plist-get vertico-flat-format :left)
-                        (string-join candidates (plist-get vertico-flat-format :separator))
-                        (plist-get vertico-flat-format :right)))))))
-
-(defun vertico-flat--arrange-candidates ()
-  "Arrange candidates."
-  (let* ((index (max 0 vertico--index)) (count vertico-count)
-         (candidates (nthcdr vertico--index vertico--candidates))
-         (width (- (* vertico-flat-max-lines (- (window-width) 4))
-                   (length (plist-get vertico-flat-format :left))
-                   (length (plist-get vertico-flat-format :separator))
-                   (length (plist-get vertico-flat-format :right))
-                   (length (plist-get vertico-flat-format :ellipsis))
-                   (car (posn-col-row (posn-at-point (1- (point-max)))))))
-         (result) (wrapped))
-    (while (and candidates (not (eq wrapped (car candidates)))
-                (> width 0) (> count 0))
-      (let ((cand (car candidates)))
-        (setq cand (car (funcall vertico--highlight-function (list cand))))
-        (when (string-match-p "\n" cand)
-          (setq cand (vertico--truncate-multiline cand width)))
-        (setq cand (string-trim
-                    (replace-regexp-in-string
-                     "[ \t]+"
-                     (lambda (x) (apply #'propertize " " (text-properties-at 0 x)))
-                     (vertico--format-candidate cand "" "" index vertico--index))))
-        (setq index (1+ index)
-              count (1- count)
-              width (- width (string-width cand) (length (plist-get vertico-flat-format :separator))))
-        (when (or (not result) (> width 0))
-          (push cand result))
-        (pop candidates)
-        (when (and vertico-cycle (not candidates))
-          (setq candidates vertico--candidates index 0
-                wrapped (nth vertico--index vertico--candidates)))))
-    (when (if wrapped
-              (> vertico--total (- vertico-count count))
-            (and (/= vertico--total 0) (/= index vertico--total)))
-      (push (plist-get vertico-flat-format :ellipsis) result))
-    (nreverse result)))
-
-;;;###autoload
-(define-minor-mode vertico-flat-mode
-  "Flat, horizontal display for Vertico."
-  :global t :group 'vertico
-  ;; Shrink current minibuffer window
-  (when-let (win (active-minibuffer-window))
-    (window-resize win (- (window-pixel-height win)) nil nil 'pixelwise))
-  (cond
-   (vertico-flat-mode
-    (unless (eq (cadr vertico-map) vertico-flat-map)
-      (setcdr vertico-map (cons vertico-flat-map (cdr vertico-map))))
-    (advice-add #'vertico--arrange-candidates :override #'vertico-flat--arrange-candidates)
-    (advice-add #'vertico--display-candidates :override #'vertico-flat--display-candidates))
-   (t
-    (when (eq (cadr vertico-map) vertico-flat-map)
-      (setcdr vertico-map (cddr vertico-map)))
-    (advice-remove #'vertico--arrange-candidates #'vertico-flat--arrange-candidates)
-    (advice-remove #'vertico--display-candidates #'vertico-flat--display-candidates))))
-
-(provide 'vertico-flat)
-;;; vertico-flat.el ends here
blob - 97e2c439d3d452ac725a67984c1f0ab337b06dbc (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-grid.el
+++ /dev/null
@@ -1,165 +0,0 @@
-;;; vertico-grid.el --- Grid display for Vertico -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension providing a grid display.
-;;
-;; The mode can be enabled globally or via `vertico-multiform-mode' per
-;; command or completion category. Alternatively the grid display can be
-;; toggled temporarily if `vertico-multiform-mode' is enabled:
-;;
-;; (define-key vertico-map "\M-G" #'vertico-multiform-grid)
-
-;;; Code:
-
-(require 'vertico)
-(eval-when-compile
-  (require 'cl-lib))
-
-(defcustom vertico-grid-max-columns 8
-  "Maximal number of grid columns."
-  :type 'integer
-  :group 'vertico)
-
-(defcustom vertico-grid-separator
-  #("  |  " 2 3 (display (space :width (1)) face (:inverse-video t)))
-  "Separator between columns."
-  :type 'string
-  :group 'vertico)
-
-(defcustom vertico-grid-rows 6
-  "Number of grid rows."
-  :type 'integer
-  :group 'vertico)
-
-(defcustom vertico-grid-lookahead 200
-  "Number of candidates to lookahead for column number computation.
-When scrolling beyond this limit, candidates may be truncated."
-  :type 'integer
-  :group 'vertico)
-
-(defvar vertico-grid-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map [remap left-char] #'vertico-grid-left)
-    (define-key map [remap right-char] #'vertico-grid-right)
-    map)
-  "Additional keymap activated in grid mode.")
-
-(defvar-local vertico-grid--columns 1
-  "Current number of grid columns.")
-
-(defun vertico-grid--arrange-candidates ()
-  "Arrange candidates."
-  (when (<= vertico--index 0)
-    (let ((cand vertico--candidates) (w 1) (n 0))
-      (while (and cand (< n vertico-grid-lookahead))
-        (setq w (max w (length (car cand))) n (1+ n))
-        (pop cand))
-      (setq vertico-grid--columns
-            (max 1 (min vertico-grid-max-columns
-                        (floor (window-width) (+ w (length vertico-grid-separator))))))))
-  (let* ((sep (length vertico-grid-separator))
-         (count (* vertico-count vertico-grid--columns))
-         (start (* count (floor (max 0 vertico--index) count)))
-         (width (- (/ (window-width) vertico-grid--columns) sep))
-         (cands
-          (seq-map-indexed (lambda (cand index)
-                             (cl-incf index start)
-                             (when (string-match-p "\n" cand)
-                               (setq cand (vertico--truncate-multiline cand width)))
-                             (truncate-string-to-width
-                              (string-trim
-                               (replace-regexp-in-string
-                                "[ \t]+"
-                                (lambda (x) (apply #'propertize " " (text-properties-at 0 x)))
-                                (vertico--format-candidate cand "" "" index start)))
-                              width))
-                           (funcall vertico--highlight-function
-                                    (seq-subseq vertico--candidates start
-                                                (min (+ start count)
-                                                     vertico--total)))))
-         (width (make-vector vertico-grid--columns 0)))
-    (dotimes (col vertico-grid--columns)
-      (dotimes (row vertico-count)
-        (aset width col (max
-                         (aref width col)
-                         (string-width (or (nth (+ row (* col vertico-count)) cands) ""))))))
-    (dotimes (col (1- vertico-grid--columns))
-      (cl-incf (aref width (1+ col)) (+ (aref width col) sep)))
-    (cl-loop for row from 0 to (1- (min vertico-count vertico--total)) collect
-             (let ((line (list "\n")))
-               (cl-loop for col from (1- vertico-grid--columns) downto 0 do
-                        (when-let (cand (nth (+ row (* col vertico-count)) cands))
-                          (push cand line)
-                          (when (> col 0)
-                            (push vertico-grid-separator line)
-                            (push (propertize " " 'display
-                                              `(space :align-to (+ left ,(aref width (1- col))))) line))))
-             (string-join line)))))
-
-(defun vertico-grid-left (&optional n)
-  "Move N columns to the left in the grid."
-  (interactive "p")
-  (vertico-grid-right (- (or n 1))))
-
-(defun vertico-grid-right (&optional n)
-  "Move N columns to the right in the grid."
-  (interactive "p")
-  (let* ((page (* vertico-count vertico-grid--columns))
-         (p (/ vertico--index page))
-         (q (mod vertico--index page))
-         (x (/ q vertico-count))
-         (y (mod q vertico-count))
-         (z (+ (* p page) (* vertico-grid--columns y) x (or n 1))))
-    (setq x (mod z vertico-grid--columns)
-          y (/ z vertico-grid--columns))
-    (vertico--goto (+ (* x vertico-count) (mod y vertico-count)
-                      (* (/ y vertico-count) page)))))
-
-;;;###autoload
-(define-minor-mode vertico-grid-mode
-  "Grid display for Vertico."
-  :global t :group 'vertico
-  ;; Shrink current minibuffer window
-  (when-let (win (active-minibuffer-window))
-    (window-resize win (- (window-pixel-height win)) nil nil 'pixelwise))
-  (cond
-   (vertico-grid-mode
-    (unless (eq (cadr vertico-map) vertico-grid-map)
-      (setcdr vertico-map (cons vertico-grid-map (cdr vertico-map))))
-    (advice-add #'vertico--arrange-candidates :override #'vertico-grid--arrange-candidates))
-   (t
-    (when (eq (cadr vertico-map) vertico-grid-map)
-      (setcdr vertico-map (cddr vertico-map)))
-    (advice-remove #'vertico--arrange-candidates #'vertico-grid--arrange-candidates))))
-
-;; Emacs 28: Do not show Vertico commands in M-X
-(dolist (sym '(vertico-grid-left vertico-grid-right))
-  (put sym 'completion-predicate #'vertico--command-p))
-
-(provide 'vertico-grid)
-;;; vertico-grid.el ends here
blob - 52e65aea1da75b407768881bec46c48d4749c30a (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-indexed.el
+++ /dev/null
@@ -1,83 +0,0 @@
-;;; vertico-indexed.el --- Select indexed candidates -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension, which prefixes candidates with
-;; indices and allows you to select with prefix arguments.
-
-;;; Code:
-
-(require 'vertico)
-
-(defface vertico-indexed
-  '((t :height 0.75 :inherit font-lock-comment-face))
-  "Face used for the candidate index prefix."
-  :group 'vertico-faces)
-
-(defvar vertico-indexed--commands
-  '(vertico-insert vertico-exit vertico-directory-enter))
-(defvar-local vertico-indexed--min 0)
-(defvar-local vertico-indexed--max 0)
-
-(defun vertico-indexed--format-candidate (orig cand prefix suffix index start)
-  "Format candidate, see `vertico--format-candidate' for arguments."
-  (setq vertico-indexed--min start vertico-indexed--max index)
-  (funcall orig cand
-           (concat (propertize (format
-                                (format "%%%ds " (if (> vertico-count 10) 2 1))
-                                (- index start))
-                               'face 'vertico-indexed)
-                   prefix)
-           suffix index start))
-
-(defun vertico-indexed--handle-prefix (orig &rest args)
-  "Handle prefix argument before calling ORIG function with ARGS."
-  (if (and current-prefix-arg (called-interactively-p t))
-      (let ((vertico--index (+ vertico-indexed--min (prefix-numeric-value current-prefix-arg))))
-        (if (or (< vertico--index vertico-indexed--min)
-                (> vertico--index vertico-indexed--max)
-                (= vertico--total 0))
-            (minibuffer-message "Out of range")
-          (funcall orig)))
-    (apply orig args)))
-
-;;;###autoload
-(define-minor-mode vertico-indexed-mode
-  "Prefix candidates with indices."
-  :global t :group 'vertico
-  (cond
-   (vertico-indexed-mode
-    (advice-add #'vertico--format-candidate :around #'vertico-indexed--format-candidate)
-    (dolist (cmd vertico-indexed--commands)
-      (advice-add cmd :around #'vertico-indexed--handle-prefix)))
-   (t
-    (advice-remove #'vertico--format-candidate #'vertico-indexed--format-candidate)
-    (dolist (cmd vertico-indexed--commands)
-      (advice-remove cmd #'vertico-indexed--handle-prefix)))))
-
-(provide 'vertico-indexed)
-;;; vertico-indexed.el ends here
blob - 726fe4f4c542966b2297a453ab65cd82dd0de8a6 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-mouse.el
+++ /dev/null
@@ -1,95 +0,0 @@
-;;; vertico-mouse.el --- Mouse support for Vertico -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension, which adds mouse support.
-
-;;; Code:
-
-(require 'vertico)
-
-(defface vertico-mouse
-  '((t :inherit highlight))
-  "Face used for mouse highlighting."
-  :group 'vertico-faces)
-
-(defun vertico-mouse--candidate-map (index)
-  "Return keymap for candidate with INDEX."
-  (let ((map (make-sparse-keymap)))
-    (define-key map [mouse-1] (lambda ()
-                                (interactive)
-                                (with-selected-window (active-minibuffer-window)
-                                  (let ((vertico--index index))
-                                    (vertico-exit)))))
-    (define-key map [mouse-3] (lambda ()
-                                (interactive)
-                                (with-selected-window (active-minibuffer-window)
-                                  (let ((vertico--index index))
-                                    (vertico-insert)))))
-    map))
-
-(defun vertico-mouse--format-candidate (orig cand prefix suffix index start)
-  "Format candidate, see `vertico--format-candidate' for arguments."
-  (setq cand (funcall orig cand prefix suffix index start))
-  (when (equal suffix "")
-    (setq cand (concat (substring cand 0 -1)
-                       (propertize " " 'display '(space :align-to right))
-                       "\n"))
-    (when (= index vertico--index)
-      (add-face-text-property 0 (length cand) 'vertico-current 'append cand)))
-  (add-text-properties 0 (1- (length cand))
-                       `(mouse-face vertico-mouse keymap ,(vertico-mouse--candidate-map index))
-                       cand)
-  cand)
-
-(defun vertico-mouse--scroll-up (n)
-  "Scroll up by N lines."
-  (vertico--goto (max 0 (+ vertico--index n))))
-
-(defun vertico-mouse--scroll-down (n)
-  "Scroll down by N lines."
-  (vertico-mouse--scroll-up (- n)))
-
-(defun vertico-mouse--setup ()
-  "Setup mouse scrolling."
-  (setq-local mwheel-scroll-up-function #'vertico-mouse--scroll-up
-              mwheel-scroll-down-function #'vertico-mouse--scroll-down))
-
-;;;###autoload
-(define-minor-mode vertico-mouse-mode
-  "Mouse support for Vertico."
-  :global t :group 'vertico
-  (cond
-   (vertico-mouse-mode
-    (advice-add #'vertico--format-candidate :around #'vertico-mouse--format-candidate)
-    (advice-add #'vertico--setup :after #'vertico-mouse--setup))
-   (t
-    (advice-remove #'vertico--format-candidate #'vertico-mouse--format-candidate)
-    (advice-remove #'vertico--setup #'vertico-mouse--setup))))
-
-(provide 'vertico-mouse)
-;;; vertico-mouse.el ends here
blob - db65682ccbbde680d45bee92d02aaf77998d2773 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-multiform.el
+++ /dev/null
@@ -1,211 +0,0 @@
-;;; vertico-multiform.el --- Configure Vertico in different forms per command -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension for fine tuning the Vertico
-;; display and other minibuffer modes per command or completion
-;; category. For some commands you may want to use the `vertico-buffer'
-;; display and for completion categories like file you prefer the
-;; `vertico-grid-mode'.
-;;
-;; Example:
-;;
-;;    (setq vertico-multiform-commands
-;;          '((consult-line buffer)
-;;            (consult-imenu reverse buffer)
-;;            (execute-extended-command flat)))
-;;
-;;    (setq vertico-multiform-categories
-;;          '((file buffer grid))
-;;            (imenu (:not indexed mouse))
-;;            (symbol (vertico-sort-function . vertico-sort-alpha))))
-;;
-;;    (vertico-multiform-mode)
-;;
-;; Temporary toggling between the different display modes is
-;; possible. Bind the following commands:
-;;
-;; (define-key vertico-map "\M-G" #'vertico-multiform-grid)
-;; (define-key vertico-map "\M-F" #'vertico-multiform-flat)
-;; (define-key vertico-map "\M-R" #'vertico-multiform-reverse)
-;; (define-key vertico-map "\M-U" #'vertico-multiform-unobtrusive)
-;;
-;;; Code:
-
-(require 'vertico)
-(eval-when-compile
-  (require 'cl-lib))
-
-(defcustom vertico-multiform-commands nil
-  "Alist of commands/regexps and list of settings to turn on per command.
-Takes precedence over `vertico-multiform-categories'. A setting can
-either be a mode symbol, a function, an inverted mode symbol or
-function, or a cons cell of variable name and value."
-  :group 'vertico
-  :type '(alist :key-type (choice symbol regexp (const t)) :value-type (repeat sexp)))
-
-(defcustom vertico-multiform-categories nil
-  "Alist of categories/regexps and list of settings to turn on per category.
-See `vertico-multiform-commands' on details about the settings.
-Has lower precedence than `vertico-multiform-commands'."
-  :group 'vertico
-  :type '(alist :key-type (choice symbol regexp (const t)) :value-type (repeat sexp)))
-
-(defvar vertico-multiform--stack nil)
-
-(defun vertico-multiform--toggle (arg)
-  "Toggle modes from stack depending on ARG."
-  (when-let ((win (active-minibuffer-window))
-             (modes (car vertico-multiform--stack)))
-    (when (> arg 0) (setq modes (reverse modes)))
-    (with-selected-window win
-      (dolist (m modes)
-        (if (eq (car-safe m) :not)
-            (funcall (cdr m) (- arg))
-          (funcall m arg))))))
-
-(defun vertico-multiform--lookup (key list)
-  "Lookup symbolic KEY in LIST.
-The keys in LIST can be symbols or regexps."
-  (and (symbolp key)
-       (seq-find (lambda (x)
-                   (cond
-                    ((eq (car x) t))
-                    ((symbolp (car x)) (eq key (car x)))
-                    ((string-match-p (car x) (symbol-name key)))))
-                 list)))
-
-(defun vertico-multiform--setup ()
-  "Enable modes at minibuffer setup."
-  (let ((cat (completion-metadata-get
-              (completion-metadata
-               (buffer-substring (minibuffer-prompt-end)
-                                 (max (minibuffer-prompt-end) (point)))
-               minibuffer-completion-table
-               minibuffer-completion-predicate)
-              'category))
-        (exit (make-symbol "vertico-multiform--exit"))
-        (depth (recursion-depth))
-        (modes nil))
-    (fset exit (lambda ()
-                 (when (= depth (recursion-depth))
-                   (remove-hook 'minibuffer-exit-hook exit)
-                   (vertico-multiform--toggle -1)
-                   (pop vertico-multiform--stack))))
-    (add-hook 'minibuffer-exit-hook exit)
-    (dolist (x (cdr (or (vertico-multiform--lookup this-command vertico-multiform-commands)
-                        (vertico-multiform--lookup cat vertico-multiform-categories))))
-      (pcase x
-        (`(:not . ,fs)
-         (dolist (f fs)
-           (let ((sym (and (symbolp f) (intern-soft (format "vertico-%s-mode" f)))))
-             (push (cons :not (if (and sym (fboundp sym)) sym f)) modes))))
-        ((or (pred functionp) (pred symbolp))
-         (let ((sym (and (symbolp x) (intern-soft (format "vertico-%s-mode" x)))))
-           (push (if (and sym (fboundp sym)) sym x) modes)))
-        (`(,k . ,v) (set (make-local-variable k) v))
-        (_ (error "Invalid multiform setting %S" x))))
-    (push modes vertico-multiform--stack)
-    (vertico-multiform--toggle 1)
-    (vertico--setup)))
-
-(defun vertico-multiform--advice (&rest app)
-  "Override advice for `vertico--advice' switching modes on and off.
-APP is the original function call."
-  (unwind-protect
-      (progn
-        (vertico-multiform--toggle -1)
-        (minibuffer-with-setup-hook #'vertico-multiform--setup
-          (apply app)))
-    (vertico-multiform--toggle 1)))
-
-;;;###autoload
-(define-minor-mode vertico-multiform-mode
-  "Configure Vertico in various forms per command."
-  :global t :group 'vertico
-  (when (/= (recursion-depth) 0)
-    (warn "vertico-multiform must not be toggled from recursive minibuffers"))
-  (when vertico-multiform--stack
-    (warn "vertico-multiform state is inconsistent")
-    (setq vertico-multiform--stack nil))
-  (if vertico-multiform-mode
-      (advice-add #'vertico--advice :override #'vertico-multiform--advice)
-    (advice-remove #'vertico--advice #'vertico-multiform--advice)))
-
-(defun vertico-multiform--ensure ()
-  "Ensure that multiform mode is enabled."
-  (unless (minibufferp)
-    (user-error "`%s' must be called inside the minibuffer" this-command))
-  (unless vertico-multiform-mode
-    (user-error "`vertico-multiform-mode' is not enabled")))
-
-(defun vertico-multiform--temporary-mode (mode arg)
-  "Enable or disable MODE temporarily in minibuffer given ARG.
-ARG can be nil, t, -1, 1 or toggle."
-  (unless (minibufferp)
-    (user-error "`%s' must be called inside the minibuffer" this-command))
-  (unless vertico-multiform-mode
-    (user-error "`vertico-multiform-mode' is not enabled"))
-  (setq arg (pcase arg
-              ('toggle (not (and (boundp mode) (symbol-value mode))))
-              ((or 'nil 't) arg)
-              (_ (> arg 0))))
-  (unless (eq arg (and (boundp mode) (symbol-value mode)))
-    (funcall mode (if arg 1 -1))
-    (let ((modes (car vertico-multiform--stack))
-          (not-mode (cons :not mode)))
-      (when arg
-        (cl-rotatef not-mode mode))
-      (if (member mode modes)
-          (setcar vertico-multiform--stack (remove mode modes))
-        (push not-mode (car vertico-multiform--stack))))))
-
-(defun vertico-multiform--display-toggle (mode)
-  "Toggle display MODE temporarily in minibuffer."
-  (let ((arg (not (and (boundp mode) (symbol-value mode)))))
-    (dolist (m '(vertico-unobtrusive-mode vertico-flat-mode
-                 vertico-grid-mode vertico-reverse-mode))
-      (vertico-multiform--temporary-mode m -1))
-    (when arg (vertico-multiform--temporary-mode mode 1))))
-
-(defmacro vertico-multiform--define-display-toggle (name)
-  "Define toggle for display mode NAME."
-  (let ((sym (intern (format "vertico-multiform-%s" name))))
-    `(progn
-       (defun ,sym ()
-         ,(format "Toggle the %s display." name)
-         (interactive)
-         (vertico-multiform--display-toggle ',(intern (format "vertico-%s-mode" name))))
-       (put ',sym 'completion-predicate #'vertico--command-p))))
-
-(vertico-multiform--define-display-toggle grid)
-(vertico-multiform--define-display-toggle flat)
-(vertico-multiform--define-display-toggle reverse)
-(vertico-multiform--define-display-toggle unobtrusive)
-
-(provide 'vertico-multiform)
-;;; vertico-multiform.el ends here
blob - 08a0cf4cf2f07b246f93c3215b99437f70be771a (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-pkg.el
+++ /dev/null
@@ -1,2 +0,0 @@
-;; Generated package description from vertico.el  -*- no-byte-compile: t -*-
-(define-package "vertico" "0.19" "VERTical Interactive COmpletion" '((emacs "27.1")) :authors '(("Daniel Mendler" . "mail@daniel-mendler.de")) :maintainer '("Daniel Mendler" . "mail@daniel-mendler.de") :url "https://github.com/minad/vertico")
blob - d51ffdad2675950fef11480d549961f6739ae288 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-quick.el
+++ /dev/null
@@ -1,140 +0,0 @@
-;;; vertico-quick.el --- Quick keys for Vertico -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension, which provides quick keys.
-;; (define-key vertico-map "\M-q" #'vertico-quick-insert)
-;; (define-key vertico-map "\C-q" #'vertico-quick-exit)
-
-;;; Code:
-
-(require 'vertico)
-(eval-when-compile
-  (require 'cl-lib)
-  (require 'subr-x))
-
-(defface vertico-quick1
-  '((((class color) (min-colors 88) (background dark))
-     :background "#7042a2" :weight bold :foreground "white")
-    (((class color) (min-colors 88) (background light))
-     :weight bold :background "#d5baff" :foreground "black")
-    (t :background "magenta" :foreground "white"))
-  "Face used for the first quick key."
-  :group 'vertico-faces)
-
-(defface vertico-quick2
-  '((((class color) (min-colors 88) (background dark))
-     :background "#004065" :weight bold :foreground "white")
-    (((class color) (min-colors 88) (background light))
-     :weight bold :background "#8ae4f2" :foreground "black")
-    (t :background "blue" :foreground "white"))
-  "Face used for the second quick key."
-  :group 'vertico-faces)
-
-(defcustom vertico-quick1 "asdfgh"
-  "Single level quick keys."
-  :type 'string
-  :group 'vertico)
-
-(defcustom vertico-quick2 "jkl"
-  "Two level quick keys."
-  :type 'string
-  :group 'vertico)
-
-(defvar-local vertico-quick--list nil)
-(defvar-local vertico-quick--first nil)
-
-(defun vertico-quick--format-candidate (orig cand prefix suffix index start)
-  "Format candidate, see `vertico--format-candidate' for arguments."
-  (let* ((fst (length vertico-quick1))
-         (snd (length vertico-quick2))
-         (len (+ fst snd))
-         (idx (- index start))
-         (keys (if (>= idx fst)
-                   (let ((first (elt vertico-quick2 (mod (/ (- idx fst) len) snd)))
-                         (second (elt (concat vertico-quick1 vertico-quick2) (mod (- idx fst) len))))
-                     (cond
-                      ((eq first vertico-quick--first)
-                       (push (cons second index) vertico-quick--list)
-                       (concat " " (propertize (char-to-string second) 'face 'vertico-quick1)))
-                      (vertico-quick--first "  ")
-                      (t
-                       (push (cons first (list first)) vertico-quick--list)
-                       (concat (propertize (char-to-string first) 'face 'vertico-quick1)
-                               (propertize (char-to-string second) 'face 'vertico-quick2)))))
-                 (let ((first (elt vertico-quick1 (mod idx fst))))
-                   (if vertico-quick--first
-                       "  "
-                     (push (cons first index) vertico-quick--list)
-                     (concat (propertize (char-to-string first) 'face 'vertico-quick1) " "))))))
-    (if (bound-and-true-p vertico-flat-mode)
-        (setq keys (replace-regexp-in-string " " "" keys)
-              cand (string-trim cand)
-              cand (substring cand (min (length cand) (length keys))))
-      (setq keys (concat keys (make-string (max 1 (- (length prefix) 2)) ?\s))))
-    (funcall orig cand keys suffix index start)))
-
-(defun vertico-quick--read (&optional first)
-  "Read quick key given FIRST pressed key."
-  (cl-letf (((symbol-function #'vertico--format-candidate)
-             (apply-partially #'vertico-quick--format-candidate
-                              (symbol-function #'vertico--format-candidate)))
-            (vertico-quick--first first)
-            (vertico-quick--list))
-    (vertico--exhibit)
-    (alist-get (read-key) vertico-quick--list)))
-
-;;;###autoload
-(defun vertico-quick-jump ()
-  "Jump to candidate using quick keys."
-  (interactive)
-  (if (= vertico--total 0)
-      (and (minibuffer-message "No match") nil)
-    (let ((idx (vertico-quick--read)))
-      (when (consp idx) (setq idx (vertico-quick--read (car idx))))
-      (when idx (setq vertico--index idx)))))
-
-;;;###autoload
-(defun vertico-quick-exit ()
-  "Exit with candidate using quick keys."
-  (interactive)
-  (when (vertico-quick-jump)
-    (vertico-exit)))
-
-;;;###autoload
-(defun vertico-quick-insert ()
-  "Insert candidate using quick keys."
-  (interactive)
-  (when (vertico-quick-jump)
-    (vertico-insert)))
-
-;; Emacs 28: Do not show Vertico commands in M-X
-(dolist (sym '(vertico-quick-jump vertico-quick-exit vertico-quick-insert))
-  (put sym 'completion-predicate #'vertico--command-p))
-
-(provide 'vertico-quick)
-;;; vertico-quick.el ends here
blob - 9ad6059be36448647d1d1108a35e42c67b5c523f (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-repeat.el
+++ /dev/null
@@ -1,96 +0,0 @@
-;;; vertico-repeat.el --- Repeat the last Vertico session -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension, which enables repetition of the
-;; last Vertico session via the `vertico-repeat' command.
-;;
-;; (global-set-key "\M-r" #'vertico-repeat)
-;;
-;; It is necessary to register a minibuffer setup hook, which saves the
-;; Vertico state for repetition.
-;;
-;; (add-hook 'minibuffer-setup-hook #'vertico-repeat-save)
-
-;;; Code:
-
-(require 'vertico)
-
-(defvar-local vertico-repeat--restore nil)
-(defvar vertico-repeat--input nil)
-(defvar vertico-repeat--command nil)
-(defvar vertico-repeat--candidate nil)
-
-(defun vertico-repeat--save-input ()
-  "Save current minibuffer content for `vertico-repeat'."
-  (setq vertico-repeat--input (minibuffer-contents)))
-
-(defun vertico-repeat--save-candidate ()
-  "Save currently selected candidate for `vertico-repeat'."
-  (setq vertico-repeat--candidate
-        (and vertico--lock-candidate
-             (>= vertico--index 0)
-             (nth vertico--index vertico--candidates))))
-
-(defun vertico-repeat--restore ()
-  "Restore Vertico status for `vertico-repeat'."
-  (setq vertico-repeat--restore t)
-  (delete-minibuffer-contents)
-  (insert vertico-repeat--input)
-  (when vertico-repeat--candidate
-    (run-at-time 0 nil
-                 (lambda ()
-                   (when-let (idx (seq-position vertico--candidates vertico-repeat--candidate))
-                     (setq vertico--index idx
-                           vertico--lock-candidate t)
-                     (vertico--exhibit))))))
-
-;;;###autoload
-(defun vertico-repeat ()
-  "Repeat last Vertico completion session."
-  (interactive)
-  (unless vertico-repeat--command
-    (user-error "No repeatable Vertico session"))
-  (minibuffer-with-setup-hook
-      #'vertico-repeat--restore
-    (command-execute (setq this-command vertico-repeat--command))))
-
-;;;###autoload
-(defun vertico-repeat-save ()
-  "Save Vertico status for `vertico-repeat'.
-This function must be registered as `minibuffer-setup-hook'."
-  (when vertico--input
-    (unless vertico-repeat--restore
-      (setq vertico-repeat--command this-command
-            vertico-repeat--input ""
-            vertico-repeat--candidate nil
-            vertico-repeat--restore nil))
-    (add-hook 'post-command-hook #'vertico-repeat--save-input nil 'local)
-    (add-hook 'minibuffer-exit-hook #'vertico-repeat--save-candidate nil 'local)))
-
-(provide 'vertico-repeat)
-;;; vertico-repeat.el ends here
blob - 272b947cfc10b0424b7ac3cb28296d996ed9653c (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-reverse.el
+++ /dev/null
@@ -1,82 +0,0 @@
-;;; vertico-reverse.el --- Reverse the Vertico display -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension, which reverses the list of candidates.
-
-;;; Code:
-
-(require 'vertico)
-
-(defvar vertico-reverse-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map [remap beginning-of-buffer] #'vertico-last)
-    (define-key map [remap minibuffer-beginning-of-buffer] #'vertico-last)
-    (define-key map [remap end-of-buffer] #'vertico-first)
-    (define-key map [remap scroll-down-command] #'vertico-scroll-up)
-    (define-key map [remap scroll-up-command] #'vertico-scroll-down)
-    (define-key map [remap next-line] #'vertico-previous)
-    (define-key map [remap previous-line] #'vertico-next)
-    (define-key map [remap next-line-or-history-element] #'vertico-previous)
-    (define-key map [remap previous-line-or-history-element] #'vertico-next)
-    (define-key map [remap backward-paragraph] #'vertico-next-group)
-    (define-key map [remap forward-paragraph] #'vertico-previous-group)
-    map)
-  "Additional keymap activated in reverse mode.")
-
-(defun vertico-reverse--display-candidates (lines)
-  "Display LINES in reverse."
-  (move-overlay vertico--candidates-ov (point-min) (point-min))
-  (setq lines (nreverse lines))
-  (unless (eq vertico-resize t)
-    (setq lines (nconc (make-list (max 0 (- vertico-count (length lines))) "\n") lines)))
-  (let ((string (apply #'concat lines)))
-    (add-face-text-property 0 (length string) 'default 'append string)
-    (overlay-put vertico--candidates-ov 'before-string string)
-    (overlay-put vertico--candidates-ov 'after-string nil))
-  (vertico--resize-window (length lines)))
-
-;;;###autoload
-(define-minor-mode vertico-reverse-mode
-  "Reverse the Vertico display."
-  :global t :group 'vertico
-  ;; Reset overlays
-  (dolist (buf (buffer-list))
-    (when-let (ov (buffer-local-value 'vertico--candidates-ov buf))
-      (overlay-put ov 'before-string nil)))
-  (cond
-   (vertico-reverse-mode
-    (unless (eq (cadr vertico-map) vertico-reverse-map)
-      (setcdr vertico-map (cons vertico-reverse-map (cdr vertico-map))))
-    (advice-add #'vertico--display-candidates :override #'vertico-reverse--display-candidates))
-   (t
-    (when (eq (cadr vertico-map) vertico-reverse-map)
-      (setcdr vertico-map (cddr vertico-map)))
-    (advice-remove #'vertico--display-candidates #'vertico-reverse--display-candidates))))
-
-(provide 'vertico-reverse)
-;;; vertico-reverse.el ends here
blob - a39d3580e4c343940b9fc08410fb09a51f9935d3 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico-unobtrusive.el
+++ /dev/null
@@ -1,75 +0,0 @@
-;;; vertico-unobtrusive.el --- Unobtrusive display for Vertico -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.1
-;; Package-Requires: ((emacs "27.1") (vertico "0.19"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; This package is a Vertico extension providing a unobtrusive display.
-;; The unobtrusive display only shows the topmost candidate and nothing
-;; else, it is a simple derivative of `vertico-flat-mode'.
-;;
-;; The mode can be enabled globally or via `vertico-multiform-mode' per
-;; command or completion category. Alternatively the unobtrusive display
-;; can be toggled temporarily if `vertico-multiform-mode' is enabled:
-;;
-;; (define-key vertico-map "\M-U" #'vertico-multiform-unobtrusive)
-
-;;; Code:
-
-(require 'vertico-flat)
-
-(defvar vertico-unobtrusive--orig-count nil)
-(defvar vertico-unobtrusive--orig-count-format nil)
-
-;;;###autoload
-(define-minor-mode vertico-unobtrusive-mode
-  "Unobtrusive display for Vertico."
-  :global t :group 'vertico
-  (cond
-   (vertico-unobtrusive-mode
-    (unless vertico-unobtrusive--orig-count
-      (push '(vertico-current . default) (default-value 'face-remapping-alist))
-      (setq vertico-unobtrusive--orig-count vertico-count
-            vertico-unobtrusive--orig-count-format vertico-count-format
-            vertico-count 1
-            vertico-count-format nil
-            vertico-flat-format `(:separator nil :ellipsis nil ,@vertico-flat-format)))
-    (advice-add #'vertico--setup :before #'redisplay)
-    (vertico-flat-mode 1))
-   (t
-    (when vertico-unobtrusive--orig-count
-      (setq-default face-remapping-alist
-                    (remove '(vertico-current . default)
-                            (default-value 'face-remapping-alist)))
-      (setq vertico-count vertico-unobtrusive--orig-count
-            vertico-count-format vertico-unobtrusive--orig-count-format
-            vertico-flat-format (nthcdr 4 vertico-flat-format)
-            vertico-unobtrusive--orig-count nil))
-    (advice-remove #'vertico--setup #'redisplay)
-    (vertico-flat-mode -1)))
-  (setq vertico-flat-mode nil))
-
-(provide 'vertico-unobtrusive)
-;;; vertico-unobtrusive.el ends here
blob - 15935e25abfc80e249071cbf89f9fa78f44de632 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico.el
+++ /dev/null
@@ -1,789 +0,0 @@
-;;; vertico.el --- VERTical Interactive COmpletion -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021  Free Software Foundation, Inc.
-
-;; Author: Daniel Mendler <mail@daniel-mendler.de>
-;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
-;; Created: 2021
-;; Version: 0.19
-;; Package-Requires: ((emacs "27.1"))
-;; Homepage: https://github.com/minad/vertico
-
-;; This file is part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;; Vertico provides a performant and minimalistic vertical completion UI
-;; based on the default completion system. By reusing the built-in
-;; facilities, Vertico achieves full compatibility with built-in Emacs
-;; completion commands and completion tables.
-
-;;; Code:
-
-(require 'seq)
-(eval-when-compile
-  (require 'cl-lib)
-  (require 'subr-x))
-
-(defgroup vertico nil
-  "VERTical Interactive COmpletion."
-  :group 'convenience
-  :group 'minibuffer
-  :prefix "vertico-")
-
-(defcustom vertico-count-format (cons "%-6s " "%s/%s")
-  "Format string used for the candidate count."
-  :type '(choice (const :tag "No candidate count" nil) (cons string string)))
-
-(defcustom vertico-group-format
-  (concat #("    " 0 4 (face vertico-group-separator))
-          #(" %s " 0 4 (face vertico-group-title))
-          #(" " 0 1 (face vertico-group-separator display (space :align-to right))))
-  "Format string used for the group title."
-  :type '(choice (const :tag "No group titles" nil) string))
-
-(defcustom vertico-count 10
-  "Maximal number of candidates to show."
-  :type 'integer)
-
-(defcustom vertico-scroll-margin 2
-  "Number of lines at the top and bottom when scrolling.
-The value should lie between 0 and vertico-count/2."
-  :type 'integer)
-
-(defcustom vertico-resize resize-mini-windows
-  "How to resize the Vertico minibuffer window.
-See `resize-mini-windows' for documentation."
-  :type '(choice (const :tag "Fixed" nil)
-                 (const :tag "Shrink and grow" t)
-                 (const :tag "Grow-only" grow-only)))
-
-(defcustom vertico-cycle nil
-  "Enable cycling for `vertico-next' and `vertico-previous'."
-  :type 'boolean)
-
-(defcustom vertico-multiline
-  (cons #("⤶" 0 1 (face vertico-multiline)) #("…" 0 1 (face vertico-multiline)))
-  "Replacements for multiline strings."
-  :type '(cons (string :tag "Newline") (string :tag "Truncation")))
-
-(defcustom vertico-sort-function #'vertico-sort-history-length-alpha
-  "Default sorting function, used if no `display-sort-function' is specified."
-  :type `(choice
-          (const :tag "No sorting" nil)
-          (const :tag "By history, length and alpha" ,#'vertico-sort-history-length-alpha)
-          (const :tag "By history and alpha" ,#'vertico-sort-history-alpha)
-          (const :tag "By length and alpha" ,#'vertico-sort-length-alpha)
-          (const :tag "Alphabetically" ,#'vertico-sort-alpha)
-          (function :tag "Custom function")))
-
-(defgroup vertico-faces nil
-  "Faces used by Vertico."
-  :group 'vertico
-  :group 'faces)
-
-(defface vertico-multiline '((t :inherit shadow))
-  "Face used to highlight multiline replacement characters.")
-
-(defface vertico-group-title '((t :inherit shadow :slant italic))
-  "Face used for the title text of the candidate group headlines.")
-
-(defface vertico-group-separator '((t :inherit shadow :strike-through t))
-  "Face used for the separator lines of the candidate groups.")
-
-(defface vertico-current '((t :inherit highlight :extend t))
-  "Face used to highlight the currently selected candidate.")
-
-(defvar vertico-map
-  (let ((map (make-composed-keymap nil minibuffer-local-map)))
-    (define-key map [remap beginning-of-buffer] #'vertico-first)
-    (define-key map [remap minibuffer-beginning-of-buffer] #'vertico-first)
-    (define-key map [remap end-of-buffer] #'vertico-last)
-    (define-key map [remap scroll-down-command] #'vertico-scroll-down)
-    (define-key map [remap scroll-up-command] #'vertico-scroll-up)
-    (define-key map [remap next-line] #'vertico-next)
-    (define-key map [remap previous-line] #'vertico-previous)
-    (define-key map [remap next-line-or-history-element] #'vertico-next)
-    (define-key map [remap previous-line-or-history-element] #'vertico-previous)
-    (define-key map [remap backward-paragraph] #'vertico-previous-group)
-    (define-key map [remap forward-paragraph] #'vertico-next-group)
-    (define-key map [remap exit-minibuffer] #'vertico-exit)
-    (define-key map [remap kill-ring-save] #'vertico-save)
-    (define-key map [C-return] #'vertico-exit-input)
-    (define-key map "\t" #'vertico-insert)
-    map)
-  "Vertico minibuffer keymap derived from `minibuffer-local-map'.")
-
-(defvar-local vertico--highlight-function #'identity
-  "Deferred candidate highlighting function.")
-
-(defvar-local vertico--history-hash nil
-  "History hash table.")
-
-(defvar-local vertico--history-base nil
-  "Base prefix of `vertico--history-hash'.")
-
-(defvar-local vertico--candidates-ov nil
-  "Overlay showing the candidates.")
-
-(defvar-local vertico--count-ov nil
-  "Overlay showing the number of candidates.")
-
-(defvar-local vertico--index -1
-  "Index of current candidate or negative for prompt selection.")
-
-(defvar-local vertico--scroll 0
-  "Scroll position.")
-
-(defvar-local vertico--input nil
-  "Cons of last minibuffer contents and point or t.")
-
-(defvar-local vertico--candidates nil
-  "List of candidates.")
-
-(defvar-local vertico--metadata nil
-  "Completion metadata.")
-
-(defvar-local vertico--base 0
-  "Size of the base string, which is concatenated with the candidate.")
-
-(defvar-local vertico--total 0
-  "Length of the candidate list `vertico--candidates'.")
-
-(defvar-local vertico--lock-candidate nil
-  "Lock-in current candidate.")
-
-(defvar-local vertico--lock-groups nil
-  "Lock-in current group order.")
-
-(defvar-local vertico--all-groups nil
-  "List of all group titles.")
-
-(defvar-local vertico--groups nil
-  "List of current group titles.")
-
-(defvar-local vertico--default-missing nil
-  "Default candidate is missing from candidates list.")
-
-(defun vertico--history-hash ()
-  "Recompute history hash table and return it."
-  (or vertico--history-hash
-      (let* ((base vertico--history-base)
-             (base-size (length base))
-             ;; History disabled if `minibuffer-history-variable' eq `t'.
-             (hist (and (not (eq minibuffer-history-variable t))
-                        (symbol-value minibuffer-history-variable)))
-             (hash (make-hash-table :test #'equal :size (length hist))))
-        (if (= base-size 0)
-            ;; Put history elements into the hash
-            (cl-loop for elem in hist for index from 0 do
-                     (unless (gethash elem hash)
-                       (puthash elem index hash)))
-          ;; Drop base string from history elements, before putting them into the hash
-          (cl-loop for elem in hist for index from 0 do
-                   (when (and (>= (length elem) base-size)
-                              (eq t (compare-strings base 0 base-size elem 0 base-size)))
-                     (setq elem (substring elem base-size))
-                     (unless (gethash elem hash)
-                       (puthash elem index hash)))))
-        (setq vertico--history-hash hash))))
-
-(defun vertico--length-string< (x y)
-  "Sorting predicate which compares X and Y first by length then by `string<'."
-  (or (< (length x) (length y)) (and (= (length x) (length y)) (string< x y))))
-
-(defun vertico--sort-decorated (list)
-  "Sort decorated LIST and remove decorations."
-  (setq list (sort list #'car-less-than-car))
-  (cl-loop for item on list do (setcar item (cdar item)))
-  list)
-
-(defmacro vertico--define-sort (by bsize bindex bpred pred)
-  "Generate optimized sorting function.
-The function is configured by BY, BSIZE, BINDEX, BPRED and PRED."
-  `(defun ,(intern (mapconcat #'symbol-name `(vertico sort ,@by) "-")) (candidates)
-     ,(concat "Sort candidates by " (mapconcat #'symbol-name by ", ") ".")
-     (let* ((buckets (make-vector ,bsize nil))
-            ,@(and (eq (car by) 'history) '((hhash (vertico--history-hash)) (hcands))))
-       (dolist (% candidates)
-         ,(if (eq (car by) 'history)
-              ;; Find recent candidates or fill buckets
-              `(if-let (idx (gethash % hhash))
-                   (push (cons idx %) hcands)
-                 (let ((idx (min ,(1- bsize) ,bindex)))
-                   (aset buckets idx (cons % (aref buckets idx)))))
-            ;; Fill buckets
-            `(let ((idx (min ,(1- bsize) ,bindex)))
-               (aset buckets idx (cons % (aref buckets idx))))))
-       (nconc ,@(and (eq (car by) 'history) '((vertico--sort-decorated hcands)))
-              (mapcan (lambda (bucket) (sort bucket #',bpred))
-                      (nbutlast (append buckets nil)))
-              ;; Last bucket needs special treatment
-              (sort (aref buckets ,(1- bsize)) #',pred)))))
-
-(vertico--define-sort (history length alpha) 32 (length %) string< vertico--length-string<)
-(vertico--define-sort (history alpha) 32 (if (eq % "") 0 (/ (aref % 0) 4)) string< string<)
-(vertico--define-sort (length alpha) 32 (length %) string< vertico--length-string<)
-(vertico--define-sort (alpha) 32 (if (eq % "") 0 (/ (aref % 0) 4)) string< string<)
-
-(defun vertico--affixate (cands)
-  "Annotate CANDS with annotation function."
-  (if-let (aff (or (vertico--metadata-get 'affixation-function)
-                   (plist-get completion-extra-properties :affixation-function)))
-      (funcall aff cands)
-    (if-let (ann (or (vertico--metadata-get 'annotation-function)
-                     (plist-get completion-extra-properties :annotation-function)))
-        (cl-loop for cand in cands collect
-                 (let ((suffix (or (funcall ann cand) "")))
-                   (list cand ""
-                         ;; The default completion UI adds the `completions-annotations' face
-                         ;; if no other faces are present.
-                         (if (text-property-not-all 0 (length suffix) 'face nil suffix)
-                             suffix
-                           (propertize suffix 'face 'completions-annotations)))))
-      (cl-loop for cand in cands collect (list cand "" "")))))
-
-(defun vertico--move-to-front (elem list)
-  "Move ELEM to front of LIST."
-  (if-let (found (member elem list))
-      (let ((head (list (car found))))
-        (nconc head (delq (setcar found nil) list)))
-    list))
-
-;; bug#47711: Deferred highlighting for `completion-all-completions'
-;; XXX There is one complication: `completion--twq-all' already adds `completions-common-part'.
-;; See below `vertico--candidate'.
-(defun vertico--all-completions (&rest args)
-  "Compute all completions for ARGS with deferred highlighting."
-  (cl-letf* ((orig-pcm (symbol-function #'completion-pcm--hilit-commonality))
-             (orig-flex (symbol-function #'completion-flex-all-completions))
-             ((symbol-function #'completion-flex-all-completions)
-              (lambda (&rest args)
-                ;; Unfortunately for flex we have to undo the deferred highlighting, since flex uses
-                ;; the completion-score for sorting, which is applied during highlighting.
-                (cl-letf (((symbol-function #'completion-pcm--hilit-commonality) orig-pcm))
-                  (apply orig-flex args))))
-             ;; Defer the following highlighting functions
-             (hl #'identity)
-             ((symbol-function #'completion-hilit-commonality)
-              (lambda (cands prefix &optional base)
-                (setq hl (lambda (x) (nconc (completion-hilit-commonality x prefix base) nil)))
-                (and cands (nconc cands base))))
-             ((symbol-function #'completion-pcm--hilit-commonality)
-              (lambda (pattern cands)
-                (setq hl (lambda (x)
-                           ;; `completion-pcm--hilit-commonality' sometimes throws an internal error
-                           ;; for example when entering "/sudo:://u".
-                           (condition-case nil
-                               (completion-pcm--hilit-commonality pattern x)
-                             (t x))))
-                cands)))
-    ;; Only advise orderless after it has been loaded to avoid load order issues
-    (if (and (fboundp 'orderless-highlight-matches) (fboundp 'orderless-pattern-compiler))
-        (cl-letf (((symbol-function 'orderless-highlight-matches)
-                   (lambda (pattern cands)
-                     (let ((regexps (orderless-pattern-compiler pattern)))
-                       (setq hl (lambda (x) (orderless-highlight-matches regexps x))))
-                     cands)))
-          (cons (apply #'completion-all-completions args) hl))
-      (cons (apply #'completion-all-completions args) hl))))
-
-(defun vertico--metadata-get (prop)
-  "Return PROP from completion metadata."
-  (completion-metadata-get vertico--metadata prop))
-
-(defun vertico--sort-function ()
-  "Return the sorting function."
-  (or (vertico--metadata-get 'display-sort-function) vertico-sort-function))
-
-(defun vertico--filter-files (files)
-  "Filter FILES by `completion-ignored-extensions'."
-  (let ((re (concat "\\(?:\\(?:\\`\\|/\\)\\.\\.?/\\|"
-                    (regexp-opt completion-ignored-extensions)
-                    "\\)\\'")))
-    (or (seq-remove (lambda (x) (string-match-p re x)) files) files)))
-
-(defun vertico--recompute-candidates (pt content)
-  "Recompute candidates given PT and CONTENT."
-  (pcase-let* ((before (substring content 0 pt))
-               (after (substring content pt))
-               ;; bug#47678: `completion-boundaries` fails for `partial-completion`
-               ;; if the cursor is moved between the slashes of "~//".
-               ;; See also marginalia.el which has the same issue.
-               (bounds (or (condition-case nil
-                               (completion-boundaries before
-                                                      minibuffer-completion-table
-                                                      minibuffer-completion-predicate
-                                                      after)
-                             (t (cons 0 (length after))))))
-               (field (substring content (car bounds) (+ pt (cdr bounds))))
-               ;; `minibuffer-completing-file-name' has been obsoleted by the completion category
-               (completing-file (eq 'file (vertico--metadata-get 'category)))
-               (`(,all . ,hl) (vertico--all-completions content
-                                                        minibuffer-completion-table
-                                                        minibuffer-completion-predicate
-                                                        pt vertico--metadata))
-               (base (or (when-let (z (last all)) (prog1 (cdr z) (setcdr z nil))) 0))
-               (base-str (substring content 0 base))
-               (def (or (car-safe minibuffer-default) minibuffer-default))
-               (groups))
-    ;; Reset the history hash table
-    (unless (equal base-str vertico--history-base)
-      (setq vertico--history-base base-str vertico--history-hash nil))
-    ;; Filter the ignored file extensions. We cannot use modified predicate for this filtering,
-    ;; since this breaks the special casing in the `completion-file-name-table' for `file-exists-p'
-    ;; and `file-directory-p'.
-    (when completing-file
-      (setq all (vertico--filter-files all)))
-    ;; Sort using the `display-sort-function' or the Vertico sort functions
-    (setq all (delete-consecutive-dups (funcall (or (vertico--sort-function) #'identity) all)))
-    ;; Move special candidates: "field" appears at the top, before "field/", before default value
-    (when (stringp def)
-      (setq all (vertico--move-to-front def all)))
-    (when (and completing-file (not (string-suffix-p "/" field)))
-      (setq all (vertico--move-to-front (concat field "/") all)))
-    (setq all (vertico--move-to-front field all))
-    (when-let (group-fun (and all (vertico--metadata-get 'group-function)))
-      (setq groups (vertico--group-by group-fun all) all (car groups)))
-    (list base (length all)
-          ;; Default value is missing from collection
-          (and def (equal content "") (not (member def all)))
-          ;; Find position of old candidate in the new list.
-          (when vertico--lock-candidate
-            (if (< vertico--index 0)
-                vertico--index
-              (seq-position all (nth vertico--index vertico--candidates))))
-          all (cadr groups) (or (caddr groups) vertico--all-groups) hl)))
-
-(defun vertico--cycle (list n)
-  "Rotate LIST to position N."
-  (nconc (copy-sequence (nthcdr n list)) (seq-take list n)))
-
-(defun vertico--group-by (fun elems)
-  "Group ELEMS by FUN."
-  (let ((ht (make-hash-table :test #'equal)) titles groups)
-    ;; Build hash table of groups
-    (while elems
-      (let* ((title (funcall fun (car elems) nil))
-             (group (gethash title ht)))
-        (if group
-            (setcdr group (setcdr (cdr group) elems)) ;; Append to tail of group
-          (puthash title (cons elems elems) ht) ;; New group element (head . tail)
-          (push title titles))
-        (pop elems)))
-    (setq titles (nreverse titles))
-    ;; Cycle groups if `vertico--lock-groups' is set
-    (when-let (group (and vertico--lock-groups
-                          (seq-find (lambda (group) (gethash group ht))
-                                    vertico--all-groups)))
-      (setq titles (vertico--cycle titles (seq-position titles group))))
-    ;; Build group list
-    (dolist (title titles)
-      (push (gethash title ht) groups))
-    ;; Unlink last tail
-    (setcdr (cdar groups) nil)
-    (setq groups (nreverse groups))
-    ;; Link groups
-    (let ((link groups))
-      (while (cdr link)
-        (setcdr (cdar link) (caadr link))
-        (pop link)))
-    ;; Check if new groups are found
-    (dolist (group vertico--all-groups)
-      (remhash group ht))
-    (list (caar groups) titles
-          (if (hash-table-empty-p ht) vertico--all-groups titles))))
-
-(defun vertico--remote-p (path)
-  "Return t if PATH is a remote path."
-  (string-match-p "\\`/[^/|:]+:" (substitute-in-file-name path)))
-
-(defun vertico--update-candidates (pt content)
-  "Preprocess candidates given PT and CONTENT."
-  ;; Redisplay the minibuffer such that the input becomes immediately
-  ;; visible before the expensive candidate recomputation is performed (Issue #89).
-  ;; Do not redisplay during initialization, since this leads to flicker.
-  (when (consp vertico--input) (redisplay))
-  (let ((metadata (completion-metadata (substring content 0 pt)
-                                       minibuffer-completion-table
-                                       minibuffer-completion-predicate)))
-    (pcase
-        (let ((vertico--metadata metadata))
-          ;; If Tramp is used, do not compute the candidates in an interruptible fashion,
-          ;; since this will break the Tramp password and user name prompts (See #23).
-          (if (and (eq 'file (vertico--metadata-get 'category))
-                   (or (vertico--remote-p content) (vertico--remote-p default-directory)))
-              (vertico--recompute-candidates pt content)
-            (let ((non-essential t))
-              (while-no-input (vertico--recompute-candidates pt content)))))
-      ('nil (abort-recursive-edit))
-      (`(,base ,total ,def-missing ,index ,candidates ,groups ,all-groups ,hl)
-       (setq vertico--input (cons content pt)
-             vertico--index index
-             vertico--base base
-             vertico--total total
-             vertico--highlight-function hl
-             vertico--groups groups
-             vertico--all-groups all-groups
-             vertico--candidates candidates
-             vertico--default-missing def-missing
-             vertico--metadata metadata)
-       ;; If the current index is nil, compute new index. Select the prompt:
-       ;; * If there are no candidates
-       ;; * If the default is missing from the candidate list.
-       ;; * For matching content, as long as the full content after the boundary is empty,
-       ;;   including content after point.
-       (unless vertico--index
-         (setq vertico--lock-candidate nil
-               vertico--index
-               (if (or vertico--default-missing
-                       (= 0 vertico--total)
-                       (and (= base (length content))
-                            (test-completion content minibuffer-completion-table
-                                             minibuffer-completion-predicate)))
-                   -1 0)))))))
-
-(defun vertico--display-string (str)
-  "Return display STR without display and invisible properties."
-  (let ((end (length str)) (pos 0) chunks)
-    (while (< pos end)
-      (let ((nextd (next-single-property-change pos 'display str end))
-            (display (get-text-property pos 'display str)))
-        (if (stringp display)
-            (progn (push display chunks) (setq pos nextd))
-          (while (< pos nextd)
-            (let ((nexti (next-single-property-change pos 'invisible str nextd)))
-              (unless (get-text-property pos 'invisible str)
-                (unless (and (= pos 0) (= nexti end)) ;; full string -> avoid allocation
-                  (push (substring str pos nexti) chunks)))
-              (setq pos nexti))))))
-    (if chunks (apply #'concat (nreverse chunks)) str)))
-
-(defun vertico--truncate-multiline (cand max-width)
-  "Truncate multiline CAND to MAX-WIDTH."
-  (truncate-string-to-width
-   (thread-last cand
-     (replace-regexp-in-string "[\t ]+" " ")
-     (replace-regexp-in-string "[\t\n ]*\n[\t\n ]*" (car vertico-multiline))
-     (replace-regexp-in-string "\\`[\t\n ]+\\|[\t\n ]+\\'" ""))
-   max-width 0 nil (cdr vertico-multiline)))
-
-(defun vertico--format-candidate (cand prefix suffix index _start)
-  "Format CAND given PREFIX, SUFFIX and INDEX."
-  (setq cand (vertico--display-string (concat prefix cand suffix "\n")))
-  (when (= index vertico--index)
-    (add-face-text-property 0 (length cand) 'vertico-current 'append cand))
-  cand)
-
-(defun vertico--update-scroll ()
-  "Update scroll position."
-  (let ((off (max (min vertico-scroll-margin (/ vertico-count 2)) 0))
-        (corr (if (= vertico-scroll-margin (/ vertico-count 2)) (1- (mod vertico-count 2)) 0)))
-    (setq vertico--scroll (min (max 0 (- vertico--total vertico-count))
-                               (max 0 (+ vertico--index off 1 (- vertico-count))
-                                    (min (- vertico--index off corr) vertico--scroll))))))
-
-(defun vertico--format-group-title (title cand)
-  "Format group TITLE given the current CAND."
-  (when (string-prefix-p title cand)
-    ;; Highlight title if title is a prefix of the candidate
-    (setq title (substring (car (funcall vertico--highlight-function
-                                         (list (propertize cand 'face 'vertico-group-title))))
-                           0 (length title)))
-    (vertico--remove-face 0 (length title) 'completions-first-difference title))
-  (format (concat vertico-group-format "\n") title))
-
-(defun vertico--arrange-candidates ()
-  "Arrange candidates."
-  (vertico--update-scroll)
-  (let ((curr-line 0) lines)
-    ;; Compute group titles
-    (let* (title (index vertico--scroll)
-           (group-fun (and vertico-group-format (vertico--metadata-get 'group-function)))
-           (candidates
-            (thread-last (seq-subseq vertico--candidates index
-                                     (min (+ index vertico-count) vertico--total))
-              (funcall vertico--highlight-function)
-              (vertico--affixate))))
-      (dolist (cand candidates)
-        (let ((str (car cand)))
-          (when-let (new-title (and group-fun (funcall group-fun str nil)))
-            (unless (equal title new-title)
-              (setq title new-title)
-              (push (vertico--format-group-title title str) lines))
-            (setcar cand (funcall group-fun str 'transform))))
-        (when (= index vertico--index)
-          (setq curr-line (length lines)))
-        (push (cons index cand) lines)
-        (setq index (1+ index))))
-    ;; Drop excess lines
-    (setq lines (nreverse lines))
-    (cl-loop for count from (length lines) above vertico-count do
-             (if (< curr-line (/ count 2))
-                 (nbutlast lines)
-               (setq curr-line (1- curr-line) lines (cdr lines))))
-    ;; Format candidates
-    (let ((max-width (- (window-width) 4)) start)
-      (cl-loop for line on lines do
-               (pcase (car line)
-                 (`(,index ,cand ,prefix ,suffix)
-                  (setq start (or start index))
-                  (when (string-match-p "\n" cand)
-                    (setq cand (vertico--truncate-multiline cand max-width)))
-                  (setcar line (vertico--format-candidate cand prefix suffix index start))))))
-    lines))
-
-(defun vertico--display-candidates (lines)
-  "Update candidates overlay `vertico--candidates-ov' with LINES."
-  (move-overlay vertico--candidates-ov (point-max) (point-max))
-  (overlay-put vertico--candidates-ov 'after-string
-               (apply #'concat #(" " 0 1 (cursor t)) (and lines "\n") lines))
-  (vertico--resize-window (length lines)))
-
-(defun vertico--resize-window (height)
-  "Resize active minibuffer window to HEIGHT."
-  (setq-local truncate-lines (< (point) (* 0.8 (window-width)))
-              resize-mini-windows 'grow-only
-              max-mini-window-height 1.0)
-  (unless (frame-root-window-p (active-minibuffer-window))
-    (unless vertico-resize
-      (setq height (max height vertico-count)))
-    (let* ((window-resize-pixelwise t)
-           (dp (- (max (cdr (window-text-pixel-size))
-                       (* (default-line-height) (1+ height)))
-                  (window-pixel-height))))
-      (when (or (and (> dp 0) (/= height 0))
-                (and (< dp 0) (eq vertico-resize t)))
-        (window-resize nil dp nil nil 'pixelwise)))))
-
-(defun vertico--format-count ()
-  "Format the count string."
-  (format (car vertico-count-format)
-          (format (cdr vertico-count-format)
-                  (cond ((>= vertico--index 0) (1+ vertico--index))
-                        ((vertico--allow-prompt-selection-p) "*")
-                        (t "!"))
-                  vertico--total)))
-
-(defun vertico--display-count ()
-  "Update count overlay `vertico--count-ov'."
-  (move-overlay vertico--count-ov (point-min) (point-min))
-  (overlay-put vertico--count-ov 'before-string
-               (if vertico-count-format (vertico--format-count) "")))
-
-(defun vertico--prompt-selection ()
-  "Highlight the prompt if selected."
-  (let ((inhibit-modification-hooks t))
-    (if (and (< vertico--index 0) (vertico--allow-prompt-selection-p))
-        (add-face-text-property (minibuffer-prompt-end) (point-max) 'vertico-current 'append)
-      (vertico--remove-face (minibuffer-prompt-end) (point-max) 'vertico-current))))
-
-(defun vertico--remove-face (beg end face &optional obj)
-  "Remove FACE between BEG and END from OBJ."
-  (while (< beg end)
-    (let ((next (next-single-property-change beg 'face obj end)))
-      (when-let (val (get-text-property beg 'face obj))
-        (put-text-property beg next 'face (remq face (if (listp val) val (list val))) obj))
-      (setq beg next))))
-
-(defun vertico--exhibit ()
-  "Exhibit completion UI."
-  (let* ((buffer-undo-list t) ;; Overlays affect point position and undo list!
-         (pt (max 0 (- (point) (minibuffer-prompt-end))))
-         (content (minibuffer-contents)))
-    (unless (or (input-pending-p) (equal vertico--input (cons content pt)))
-      (vertico--update-candidates pt content))
-    (vertico--prompt-selection)
-    (vertico--display-count)
-    (vertico--display-candidates (vertico--arrange-candidates))))
-
-(defun vertico--allow-prompt-selection-p ()
-  "Return t if prompt can be selected."
-  (or vertico--default-missing
-      (memq minibuffer--require-match '(nil confirm confirm-after-completion))))
-
-(defun vertico--goto (index)
-  "Go to candidate with INDEX."
-  (let ((prompt (vertico--allow-prompt-selection-p)))
-    (setq vertico--index
-          (max (if (or prompt (= 0 vertico--total)) -1 0)
-               (min index (1- vertico--total)))
-          vertico--lock-candidate (or (>= vertico--index 0) prompt))))
-
-(defun vertico-first ()
-  "Go to first candidate, or to the prompt when the first candidate is selected."
-  (interactive)
-  (vertico--goto (if (> vertico--index 0) 0 -1)))
-
-(defun vertico-last ()
-  "Go to last candidate."
-  (interactive)
-  (vertico--goto (1- vertico--total)))
-
-(defun vertico-scroll-down (&optional n)
-  "Go back by N pages."
-  (interactive "p")
-  (vertico--goto (max 0 (- vertico--index (* (or n 1) vertico-count)))))
-
-(defun vertico-scroll-up (&optional n)
-  "Go forward by N pages."
-  (interactive "p")
-  (vertico-scroll-down (- (or n 1))))
-
-(defun vertico-next (&optional n)
-  "Go forward N candidates."
-  (interactive "p")
-  (let ((index (+ vertico--index (or n 1))))
-    (vertico--goto
-     (cond
-      ((not vertico-cycle) index)
-      ((= vertico--total 0) -1)
-      ((vertico--allow-prompt-selection-p) (1- (mod (1+ index) (1+ vertico--total))))
-      (t (mod index vertico--total))))))
-
-(defun vertico-previous (&optional n)
-  "Go backward N candidates."
-  (interactive "p")
-  (vertico-next (- (or n 1))))
-
-(defun vertico--match-p (input)
-  "Return t if INPUT is a valid match."
-  (or (memq minibuffer--require-match '(nil confirm-after-completion))
-      (equal "" input) ;; The questionable null completion
-      (test-completion input
-                       minibuffer-completion-table
-                       minibuffer-completion-predicate)
-      (if (eq minibuffer--require-match 'confirm)
-          (eq (ignore-errors (read-char "Confirm")) 13)
-        (and (message "Match required") nil))))
-
-(defun vertico-exit (&optional arg)
-  "Exit minibuffer with current candidate or input if prefix ARG is given."
-  (interactive "P")
-  (unless arg (vertico-insert))
-  (when (vertico--match-p (minibuffer-contents-no-properties))
-    (exit-minibuffer)))
-
-(defun vertico-next-group (&optional n)
-  "Cycle N groups forward.
-When the prefix argument is 0, the group order is reset."
-  (interactive "p")
-  (when (cdr vertico--groups)
-    (if (eq n 0)
-        (setq vertico--groups nil
-              vertico--all-groups nil
-              vertico--lock-groups nil)
-      (setq vertico--groups
-            (vertico--cycle vertico--groups
-                            (let ((len (length vertico--groups)))
-                              (- len (mod (- (or n 1)) len))))
-            vertico--all-groups
-            (vertico--cycle vertico--all-groups
-                            (seq-position vertico--all-groups
-                                          (car vertico--groups)))
-            vertico--lock-groups t))
-    (setq vertico--lock-candidate nil
-          vertico--input nil)))
-
-(defun vertico-previous-group (&optional n)
-  "Cycle N groups backward.
-When the prefix argument is 0, the group order is reset."
-  (interactive "p")
-  (vertico-next-group (- (or n 1))))
-
-(defun vertico-exit-input ()
-  "Exit minibuffer with input."
-  (interactive)
-  (vertico-exit t))
-
-(defun vertico-save ()
-  "Save current candidate to kill ring."
-  (interactive)
-  (if (or (use-region-p) (not transient-mark-mode))
-      (call-interactively #'kill-ring-save)
-    (kill-new (vertico--candidate))))
-
-(defun vertico-insert ()
-  "Insert current candidate in minibuffer."
-  (interactive)
-  ;; XXX There is a small bug here, depending on interpretation. When
-  ;; completing "~/emacs/master/li|/calc" where "|" is the cursor,
-  ;; then the returned candidate only includes the prefix
-  ;; "~/emacs/master/lisp/", but not the suffix "/calc". Default
-  ;; completion has the same problem when selecting in the
-  ;; *Completions* buffer. See bug#48356.
-  (when-let (cand (and (>= vertico--index 0) (vertico--candidate)))
-    (delete-minibuffer-contents)
-    (insert cand)))
-
-(defun vertico--candidate (&optional hl)
-  "Return current candidate string with optional highlighting if HL is non-nil."
-  (let ((content (substring (or (car-safe vertico--input) (minibuffer-contents)))))
-    (cond
-     ((>= vertico--index 0)
-      (let ((cand (substring (nth vertico--index vertico--candidates))))
-        ;; XXX Drop the completions-common-part face which is added by `completion--twq-all'.
-        ;; This is a hack in Emacs and should better be fixed in Emacs itself, the corresponding
-        ;; code is already marked with a FIXME. Should this be reported as a bug?
-        (vertico--remove-face 0 (length cand) 'completions-common-part cand)
-        (concat (substring content 0 vertico--base)
-                (if hl (car (funcall vertico--highlight-function (list cand))) cand))))
-     ((and (equal content "") (or (car-safe minibuffer-default) minibuffer-default)))
-     (t (vertico--remove-face 0 (length content) 'vertico-current content) ;; Remove prompt face
-        content))))
-
-(defun vertico--setup ()
-  "Setup completion UI."
-  (setq vertico--input t
-        vertico--candidates-ov (make-overlay (point-max) (point-max) nil t t)
-        vertico--count-ov (make-overlay (point-min) (point-min) nil t t))
-  ;; Set priority for compatibility with `minibuffer-depth-indicate-mode'
-  (overlay-put vertico--count-ov 'priority 1)
-  (setq-local completion-auto-help nil
-              completion-show-inline-help nil)
-  (use-local-map vertico-map)
-  ;; Use -90 to ensure that the exhibit hook runs early such that the
-  ;; candidates are available for Consult preview. It works, but besides
-  ;; that I'dont have a specific reason for this particular value.
-  (add-hook 'post-command-hook #'vertico--exhibit -90 'local))
-
-(defun vertico--advice (&rest args)
-  "Advice for completion function, receiving ARGS."
-  (minibuffer-with-setup-hook #'vertico--setup (apply args)))
-
-;;;###autoload
-(define-minor-mode vertico-mode
-  "VERTical Interactive COmpletion."
-  :global t :group 'vertico
-  (if vertico-mode
-      (progn
-        (advice-add #'completing-read-default :around #'vertico--advice)
-        (advice-add #'completing-read-multiple :around #'vertico--advice))
-    (advice-remove #'completing-read-default #'vertico--advice)
-    (advice-remove #'completing-read-multiple #'vertico--advice)))
-
-;; Emacs 28: Do not show Vertico commands in M-X
-(dolist (sym '(vertico-next vertico-next-group vertico-previous vertico-previous-group
-               vertico-scroll-down vertico-scroll-up vertico-exit vertico-insert
-               vertico-exit-input vertico-save vertico-first vertico-last))
-  (put sym 'completion-predicate #'vertico--command-p))
-
-(defun vertico--command-p (_sym buffer)
-  "Return non-nil if Vertico is active in BUFFER."
-  (buffer-local-value 'vertico--input buffer))
-
-(provide 'vertico)
-;;; vertico.el ends here
blob - 5bc46e76369a561775c86b9dc8a6544fbea4ad6f (mode 644)
blob + /dev/null
--- elpa/vertico-0.19/vertico.info
+++ /dev/null
@@ -1,748 +0,0 @@
-This is vertico.info, produced by makeinfo version 6.7 from
-vertico.texi.
-
-INFO-DIR-SECTION Emacs
-START-INFO-DIR-ENTRY
-* Vertico: (vertico).   VERTical Interactive COmpletion.
-END-INFO-DIR-ENTRY
-
-
-File: vertico.info,  Node: Top,  Next: Introduction,  Up: (dir)
-
-vertico.el - VERTical Interactive COmpletion
-********************************************
-
-* Menu:
-
-* Introduction::
-* Features::
-* Key bindings::
-* Configuration::
-* Extensions::
-* Complementary packages::
-* Child frames and Popups::
-* Alternatives::
-* Problematic completion commands::
-* Contributions::
-
-— The Detailed Node Listing —
-
-Configuration
-
-* Completion styles and TAB completion::
-* Completion-at-point and completion-in-region::
-* Completing-read-multiple (CRM)::
-
-Extensions
-
-* Configure Vertico per command or completion category::
-
-Problematic completion commands
-
-* org-refile::
-* tmm-menubar::
-* ffap-menu::
-* Tramp hostname completion::
-
-
-
-File: vertico.info,  Node: Introduction,  Next: Features,  Prev: Top,  Up: Top
-
-1 Introduction
-**************
-
-Vertico provides a performant and minimalistic vertical completion UI
-based on the default completion system.  The main focus of Vertico is to
-provide a UI which behaves _correctly_ under all circumstances.  By
-reusing the built-in facilities system, Vertico achieves _full
-compatibility_ with built-in Emacs completion commands and completion
-tables.  Vertico only provides the completion UI but aims to be highly
-flexible, extensible and modular.  Additional enhancements are available
-as *note extensions: Extensions. or *note complementary packages:
-Complementary packages.  The code base is small and maintainable.  The
-main ‘vertico.el’ package is only about 600 lines of code without white
-space and comments.
-
-
-File: vertico.info,  Node: Features,  Next: Key bindings,  Prev: Introduction,  Up: Top
-
-2 Features
-**********
-
-   • Vertical display with arrow key navigation (see the *note
-     extensions: Extensions. for additional display modes)
-   • Prompt shows the current candidate index and the total number of
-     candidates
-   • The current candidate is inserted with ‘TAB’ and selected with
-     ‘RET’
-   • Non-existing candidates can be entered by moving the point to the
-     prompt line
-   • Configurable sorting by history position, length and alphabetically
-   • Long candidates with newlines are formatted to take up less space
-   • Deferred completion style highlighting for performance
-   • Support for annotations (‘annotation-function’ and
-     ‘affixation-function’)
-   • Support for grouping and group cycling commands (‘group-function’)
-
-   <https://github.com/minad/vertico/blob/screenshots/vertico-mx.png?raw=true>
-
-
-File: vertico.info,  Node: Key bindings,  Next: Configuration,  Prev: Features,  Up: Top
-
-3 Key bindings
-**************
-
-Vertico defines its own local keymap in the minibuffer which is derived
-from ‘minibuffer-local-map’.  The keymap keeps most of the
-‘fundamental-mode’ keybindings intact and remaps and binds only a
-handful of commands.  Note in particular the binding of ‘TAB’ to
-‘vertico-insert’ and the bindings of ‘vertico-exit/exit-input’.
-
-   • ‘beginning-of-buffer’, ‘minibuffer-beginning-of-buffer’ ->
-     ‘vertico-first’
-   • ‘end-of-buffer’ -> ‘vertico-last’
-   • ‘scroll-down-command’ -> ‘vertico-scroll-down’
-   • ‘scroll-up-command’ -> ‘vertico-scroll-up’
-   • ‘next-line’, ‘next-line-or-history-element’ -> ‘vertico-next’
-   • ‘previous-line’, ‘previous-line-or-history-element’ ->
-     ‘vertico-previous’
-   • ‘forward-paragraph’ -> ‘vertico-next-group’
-   • ‘backward-paragraph’ -> ‘vertico-previous-group’
-   • ‘exit-minibuffer’ -> ‘vertico-exit’
-   • ‘kill-ring-save’ -> ‘vertico-save’
-   • ‘C-<return>’ -> ‘vertico-exit-input’
-   • ‘TAB’ -> ‘vertico-insert’
-
-
-File: vertico.info,  Node: Configuration,  Next: Extensions,  Prev: Key bindings,  Up: Top
-
-4 Configuration
-***************
-
-Vertico is available from GNU ELPA
-(http://elpa.gnu.org/packages/vertico.html).  You can install it
-directly via ‘package-install’.  After installation, you can activate
-the global minor mode with ‘M-x vertico-mode’.  In order to configure
-Vertico and other packages in your init.el, you may want to take
-advantage of ‘use-package’.  I recommend to give Orderless completion a
-try, which is different from the prefix TAB completion used by the basic
-default completion system or in shells.  Here is an example
-configuration:
-
-     ;; Enable vertico
-     (use-package vertico
-       :init
-       (vertico-mode)
-
-       ;; Different scroll margin
-       ;; (setq vertico-scroll-margin 0)
-
-       ;; Show more candidates
-       ;; (setq vertico-count 20)
-
-       ;; Grow and shrink the Vertico minibuffer
-       ;; (setq vertico-resize t)
-
-       ;; Optionally enable cycling for `vertico-next' and `vertico-previous'.
-       ;; (setq vertico-cycle t)
-       )
-
-     ;; Optionally use the `orderless' completion style. See
-     ;; `+orderless-dispatch' in the Consult wiki for an advanced Orderless style
-     ;; dispatcher. Additionally enable `partial-completion' for file path
-     ;; expansion. `partial-completion' is important for wildcard support.
-     ;; Multiple files can be opened at once with `find-file' if you enter a
-     ;; wildcard. You may also give the `initials' completion style a try.
-     (use-package orderless
-       :init
-       ;; Configure a custom style dispatcher (see the Consult wiki)
-       ;; (setq orderless-style-dispatchers '(+orderless-dispatch)
-       ;;       orderless-component-separator #'orderless-escapable-split-on-space)
-       (setq completion-styles '(orderless)
-             completion-category-defaults nil
-             completion-category-overrides '((file (styles partial-completion)))))
-
-     ;; Persist history over Emacs restarts. Vertico sorts by history position.
-     (use-package savehist
-       :init
-       (savehist-mode))
-
-     ;; A few more useful configurations...
-     (use-package emacs
-       :init
-       ;; Add prompt indicator to `completing-read-multiple'.
-       ;; Alternatively try `consult-completing-read-multiple'.
-       (defun crm-indicator (args)
-         (cons (concat "[CRM] " (car args)) (cdr args)))
-       (advice-add #'completing-read-multiple :filter-args #'crm-indicator)
-
-       ;; 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)
-
-       ;; Emacs 28: Hide commands in M-x which do not work in the current mode.
-       ;; Vertico commands are hidden in normal buffers.
-       ;; (setq read-extended-command-predicate
-       ;;       #'command-completion-default-include-p)
-
-       ;; Enable recursive minibuffers
-       (setq enable-recursive-minibuffers t))
-
-   See also the Vertico Wiki (https://github.com/minad/vertico/wiki) for
-additional configuration tips.  For more general documentation read the
-chapter about completion in the Emacs manual
-(https://www.gnu.org/software/emacs/manual/html_node/emacs/Completion.html).
-If you want to create your own completion commands, you can find
-documentation about completion in the Elisp manual
-(https://www.gnu.org/software/emacs/manual/html_node/elisp/Completion.html).
-
-* Menu:
-
-* Completion styles and TAB completion::
-* Completion-at-point and completion-in-region::
-* Completing-read-multiple (CRM)::
-
-
-File: vertico.info,  Node: Completion styles and TAB completion,  Next: Completion-at-point and completion-in-region,  Up: Configuration
-
-4.1 Completion styles and TAB completion
-========================================
-
-The bindings of the ‘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 behave as usual.  For example you
-can use ‘M-TAB’ to cycle between candidates if you have set
-‘completion-cycle-threshold’.
-
-     (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)
-
-   The ‘orderless’ completion style does not support completion of a
-common prefix substring, as you may be familiar with from shells or the
-basic default completion system.  The reason is that the Orderless input
-string is usually not a prefix.  In order to support completing prefixes
-you may want to combine ‘orderless’ with ‘substring’ in your
-‘completion-styles’ configuration.
-
-     (setq completion-styles '(substring orderless))
-
-   Alternatively you can experiment with the built-in completion-styles,
-e.g., adding ‘partial-completion’ or ‘flex’.  The ‘partial-completion’
-style is important to add if you want to open multiple files at once
-with ‘find-file’ using wildcards.  In order to open multiple files at
-once, you have to move to the prompt and then press ‘RET’.
-
-     (setq completion-styles '(basic substring partial-completion flex))
-
-   Because Vertico is fully compatible with Emacs default completion
-system, further customization of completion behavior can be achieved by
-setting the designated Emacs variables.  For example, one may wish to
-disable case-sensitivity for file and buffer matching when built-in
-completion styles are used instead of ‘orderless’:
-
-     (setq read-file-name-completion-ignore-case t
-           read-buffer-completion-ignore-case t
-           completion-ignore-case t)
-
-
-File: vertico.info,  Node: Completion-at-point and completion-in-region,  Next: Completing-read-multiple (CRM),  Prev: Completion styles and TAB completion,  Up: Configuration
-
-4.2 Completion-at-point and completion-in-region
-================================================
-
-The ‘completion-at-point’ command is usually bound to ‘M-TAB’ or ‘TAB’.
-In case you want to use Vertico for
-completion-at-point/completion-in-region, you can use the function
-‘consult-completion-in-region’ provided by the Consult package.
-
-     ;; Use `consult-completion-in-region' if Vertico is enabled.
-     ;; Otherwise use the default `completion--in-region' function.
-     (setq completion-in-region-function
-           (lambda (&rest args)
-             (apply (if vertico-mode
-                        #'consult-completion-in-region
-                      #'completion--in-region)
-                    args)))
-
-   The ‘completion-in-region-function’ setting also affects TAB
-completion in the minibuffer when ‘M-:’ (‘eval-expression’) is used.
-
-   You may also want to look into my Corfu
-(https://github.com/minad/corfu) package, which provides a minimal
-completion system for ‘completion-in-region’ in a child frame popup.
-Corfu is also a narrowly focused package and developed in the same
-spirit as Vertico.
-
-
-File: vertico.info,  Node: Completing-read-multiple (CRM),  Prev: Completion-at-point and completion-in-region,  Up: Configuration
-
-4.3 Completing-read-multiple (CRM)
-==================================
-
-Consult offers an enhanced ‘completing-read-multiple’ implementation
-which you can use with Vertico.
-
-     (advice-add #'completing-read-multiple
-                 :override #'consult-completing-read-multiple)
-
-
-File: vertico.info,  Node: Extensions,  Next: Complementary packages,  Prev: Configuration,  Up: Top
-
-5 Extensions
-************
-
-We maintain small extension packages to Vertico in this repository in
-the subdirectory extensions/
-(https://github.com/minad/vertico/tree/main/extensions).  The extensions
-are installed together with Vertico if you pull the package from ELPA.
-The extensions are inactive by default and can be enabled manually if
-desired.  Furthermore it is possible to install all of the files
-separately, both ‘vertico.el’ and the ‘vertico-*.el’ extensions.
-Currently the following extensions come with the Vertico ELPA package:
-
-   • vertico-buffer
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-buffer.el):
-     ‘vertico-buffer-mode’ to display Vertico in a separate buffer.
-   • vertico-directory
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-directory.el):
-     Commands for Ido-like directory navigation.
-   • vertico-flat
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-flat.el):
-     ‘vertico-flat-mode’ to enable a flat, horizontal display.
-   • vertico-grid
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-grid.el):
-     ‘vertico-grid-mode’ to enable a grid display.
-   • vertico-indexed
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-indexed.el):
-     ‘vertico-indexed-mode’ to select indexed candidates with prefix
-     arguments.
-   • vertico-mouse
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-mouse.el):
-     ‘vertico-mouse-mode’ to support for scrolling and candidate
-     selection.
-   • vertico-multiform
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-multiform.el):
-     Configure Vertico modes per command or completion category.
-   • vertico-quick
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-quick.el):
-     Commands to select using Avy-style quick keys.
-   • vertico-repeat
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-repeat.el):
-     The command ‘vertico-repeat’ repeats the last completion session.
-   • vertico-reverse
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-reverse.el):
-     ‘vertico-reverse-mode’ to reverse the display.
-   • vertico-unobtrusive
-     (https://github.com/minad/vertico/blob/main/extensions/vertico-unobtrusive.el):
-     ‘vertico-unobtrusive-mode’ displays only the topmost candidate.
-
-   With these extensions it is possible to adapt Vertico such that it
-matches your preference or behaves similar to other familiar UIs.  For
-example, the combination ‘vertico-flat’ plus ‘vertico-directory’
-resembles Ido in look and feel.  For an interface similar to Helm, the
-extension ‘vertico-buffer’ allows you to configure freely where the
-completion buffer opens, instead of growing the minibuffer.  Furthermore
-‘vertico-buffer’ will adjust the number of displayed candidates
-according to the buffer height.
-
-   Configuration example for ‘vertico-directory’:
-
-     ;; Configure directory extension.
-     (use-package vertico-directory
-       :after vertico
-       :ensure nil
-       ;; More convenient directory navigation commands
-       :bind (:map vertico-map
-                   ("RET" . vertico-directory-enter)
-                   ("DEL" . vertico-directory-delete-char)
-                   ("M-DEL" . vertico-directory-delete-word))
-       ;; Tidy shadowed file names
-       :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))
-
-* Menu:
-
-* Configure Vertico per command or completion category::
-
-
-File: vertico.info,  Node: Configure Vertico per command or completion category,  Up: Extensions
-
-5.1 Configure Vertico per command or completion category
-========================================================
-
-<https://github.com/minad/vertico/blob/screenshots/vertico-ripgrep.png?raw=true>
-
-   Vertico offers the ‘vertico-multiform-mode’ which allows you to
-configure Vertico per command or per completion category.  The
-‘vertico-buffer-mode’ enables a Helm-like buffer display, which takes
-more space but also displays more candidates.  This verbose display mode
-is useful for commands like ‘consult-imenu’ or ‘consult-outline’ since
-the buffer display allows you to get a better overview over the entire
-current buffer.  But for other commands you want to keep using the
-default Vertico display.  ‘vertico-multiform-mode’ solves this
-configuration problem!
-
-     ;; Enable vertico-multiform
-     (vertico-multiform-mode)
-
-     ;; Configure the display per command.
-     ;; Use a buffer with indices for imenu
-     ;; and a flat (Ido-like) menu for M-x.
-     (setq vertico-multiform-commands
-           '((consult-imenu buffer indexed)
-             (execute-extended-command unobtrusive)))
-
-     ;; Configure the display per completion category.
-     ;; Use the grid display for files and a buffer
-     ;; for the consult-grep commands.
-     (setq vertico-multiform-categories
-           '((file grid)
-             (consult-grep buffer)))
-
-   You can use your own functions or even lambdas to configure the
-completion behavior per command or per completion category.  The
-function must have the calling convention of a mode, i.e., it takes a
-single argument, which is either 1 to turn on the mode and -1 to turn
-off the mode.
-
-     ;; Configure `consult-outline' as a scaled down TOC in a separate buffer
-     (setq vertico-multiform-commands
-           `((consult-outline buffer ,(lambda (_) (text-scale-set -1)))))
-
-   Furthermore you can tune buffer-local settings per command or
-category.
-
-     ;; Change the default sorting function
-     (setq vertico-multiform-commands
-           '((describe-symbol (vertico-sort-function . vertico-sort-alpha))))
-
-     (setq vertico-multiform-categories
-           '((symbol (vertico-sort-function . vertico-sort-alpha))
-             (file (vertico-sort-function . sort-directories-first))))
-
-     ;; Sort directories before files
-     (defun sort-directories-first (files)
-       (setq files (vertico-sort-history-length-alpha files))
-       (nconc (seq-filter (lambda (x) (string-suffix-p "/" x)) files)
-              (seq-remove (lambda (x) (string-suffix-p "/" x)) files)))
-
-   Combining these features allows us to fine-tune the completion
-display even more by adjusting the ‘vertico-buffer-display-action’.  We
-can for example reuse the current window for commands of the
-‘consult-grep’ category (‘consult-grep’, ‘consult-git-grep’ and
-‘consult-ripgrep’).  Note that this configuration is incompatible with
-Consult preview, since the previewed buffer is usually shown in exactly
-this window.  Nevertheless this snippet demonstrates the flexibility of
-the configuration system.
-
-     ;; Configure the buffer display and the buffer display action
-     (setq vertico-multiform-categories
-           '((consult-grep
-              buffer
-              (vertico-buffer-display-action . (display-buffer-same-window)))))
-
-     ;; Disable preview for consult-grep commands
-     (consult-customize consult-ripgrep consult-git-grep consult-grep :preview-key nil)
-
-   As another example, the following code uses ‘vertico-flat’ and
-‘vertico-cycle’ to emulate ‘(ido-mode 'buffer)’, i.e., Ido when it is
-enabled only for completion of buffer names.  ‘vertico-cycle’ set to ‘t’
-is necessary here to prevent completion candidates from disappearing
-when they scroll off-screen to the left.
-
-     (setq vertico-multiform-categories
-           '((buffer flat (vertico-cycle . t))))
-
-
-File: vertico.info,  Node: Complementary packages,  Next: Child frames and Popups,  Prev: Extensions,  Up: Top
-
-6 Complementary packages
-************************
-
-Vertico integrates well with complementary packages, which enrich the
-completion UI.  These packages are fully supported:
-
-   • Marginalia (https://github.com/minad/marginalia): Rich annotations
-     in the minibuffer
-   • Consult (https://github.com/minad/consult): Useful search and
-     navigation commands
-   • Embark (https://github.com/oantolin/embark): Minibuffer actions and
-     context menu
-   • Orderless (https://github.com/oantolin/orderless): Advanced
-     completion style
-
-   In order to get accustomed with the package ecosystem, I recommed the
-following quick start approach:
-
-  1. Start with plain Emacs (‘emacs -Q’).
-  2. Install and enable Vertico to get incremental minibuffer
-     completion.
-  3. Install Orderless and/or configure the built-in completion styles
-     for more flexible minibuffer filtering.
-  4. Install Marginalia if you like rich minibuffer annotations.
-  5. Install Embark and add two keybindings for ‘embark-dwim’ and
-     ‘embark-act’.  I am using the mnemonic keybindings ‘M-.’ and ‘C-.’
-     since these commands allow you to act on the object at point or in
-     the minibuffer.
-  6. Install Consult if you want additional featureful completion
-     commands, e.g, the buffer switcher ‘consult-buffer’ with preview or
-     the line-based search ‘consult-line’.
-  7. Install Embark-Consult and Wgrep for export from ‘consult-line’ to
-     ‘occur-mode’ buffers and from ‘consult-grep’ to editable
-     ‘grep-mode’ buffers.
-  8. Fine tune Vertico with *note extensions: Extensions.
-
-   The ecosystem is modular.  You don’t have to use all of these
-components.  Use only the ones you like and the ones which fit well into
-your setup.  The steps 1.  to 4.  introduce no new commands over plain
-Emacs.  Step 5.  introduces the new commands ‘embark-act’ and
-‘embark-dwim’.  In step 6.  you get the Consult commands, some offer new
-functionality not present in Emacs already (e.g., ‘consult-line’) and
-some are substitutes (e.g., ‘consult-buffer’ for ‘switch-to-buffer’).
-
-
-File: vertico.info,  Node: Child frames and Popups,  Next: Alternatives,  Prev: Complementary packages,  Up: Top
-
-7 Child frames and Popups
-*************************
-
-An often requested feature is the ability to display the completions in
-a child frame popup.  Personally I am critical of using child frames for
-minibuffer completion.  From my experience it introduces more problems
-than it solves.  Most importantly child frames hide the content of the
-underlying buffer.  Furthermore child frames do not play well together
-with changing windows and entering recursive minibuffer sessions.  On
-top, child frames can feel slow and sometimes flicker.  A better
-alternative is the ‘vertico-buffer’ display which can even be configured
-individually per command using ‘vertico-multiform’.  On the plus side of
-child frames, the completion display appears at the center of the
-screen, where your eyes are focused.  Please give the following packages
-a try and judge for yourself.
-
-   • mini-frame (https://github.com/muffinmad/emacs-mini-frame): Display
-     the entire minibuffer in a child frame.
-   • mini-popup (https://github.com/minad/mini-popup): Slightly simpler
-     alternative to mini-frame.
-   • vertico-posframe (https://github.com/tumashu/vertico-posframe):
-     Display only the Vertico minibuffer in a child frame using the
-     posframe library.
-
-
-File: vertico.info,  Node: Alternatives,  Next: Problematic completion commands,  Prev: Child frames and Popups,  Up: Top
-
-8 Alternatives
-**************
-
-There are many alternative completion UIs, each UI with its own
-advantages and disadvantages.
-
-   Vertico aims to be 100% compliant with all Emacs commands and
-achieves that with a minimal code base, relying purely on
-‘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.  Due to its small code base and reuse of
-the Emacs built-in facilities, bugs and compatibility issues are less
-likely to occur in comparison to completion UIs or full completion
-systems, which reimplement a lot of functionality.
-
-   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 Helm or Ivy.  Overall the packages in the spirit
-of Vertico have a different style than Helm or Ivy.  The idea is to have
-smaller independent components, which one can add and understand step by
-step.  Each component focuses on its niche and tries to be as
-non-intrusive as possible.  Vertico targets users interested in crafting
-their Emacs precisely to their liking - completion plays an integral
-part in how the users interacts with Emacs.
-
-   There are other interactive completion UIs, which follow a similar
-philosophy:
-
-   • Selectrum (https://github.com/raxod502/selectrum): Selectrum has a
-     similar UI as Vertico, since it directly inspired Vertico.  The
-     Selectrum code base is more complex.  Unfortunately Selectrum is
-     not fully compatible with every Emacs completion command (Issue
-     #481 (https://github.com/raxod502/selectrum/issues/481)), since it
-     uses its own filtering infrastructure, which deviates from the
-     standard Emacs completion facilities.  Vertico additionally has the
-     ability to cycle over candidates, offers commands for grouping
-     support and comes with a rich set of *note extensions: Extensions.
-   • Icomplete-vertical
-     (https://github.com/oantolin/icomplete-vertical): This package
-     enhances the Emacs builtin Icomplete with a vertical display.  In
-     contrast to Vertico, Icomplete rotates the candidates such that the
-     current candidate always appears at the top.  From my perspective,
-     candidate rotation feels a bit less intuitive than the UI of
-     Vertico or Selectrum.  Note that Emacs 28 offers a built-in
-     ‘icomplete-vertical-mode’.
-   • Mct (https://gitlab.com/protesilaos/mct): Minibuffer and
-     Completions in Tandem.  Mct reuses the default ‘*Completions*’
-     buffer and enhances it with automatic updates and additional
-     keybindings, to select a candidate and move between minibuffer and
-     completions buffer.  Mct is great if you prefer an unobtrusive UI
-     since it can be configured to open only when requested.
-     Furthermore since Mct uses a fully functional buffer you can reuse
-     all your familar buffer commands inside the completions buffer.
-     The main distinction to Vertico’s approach is that ‘*Completions*’
-     buffer displays all matching candidates.  On the one hand this is
-     good since it allows you to interact with all the candidates and
-     jump around with Isearch or Avy.  On the other hand it necessarily
-     causes a slowdown in comparison to Vertico, which only displays a
-     subset of candidates.  Mct supports completion in region via its
-     ‘mct-region-mode’.
-
-
-File: vertico.info,  Node: Problematic completion commands,  Next: Contributions,  Prev: Alternatives,  Up: Top
-
-9 Problematic completion commands
-*********************************
-
-Vertico is robust in most scenarios.  However some completion commands
-make certain assumptions about the completion styles and the completion
-UI.  Some of these assumptions may not hold in Vertico or other UIs and
-require minor workarounds.
-
-* Menu:
-
-* org-refile::
-* tmm-menubar::
-* ffap-menu::
-* Tramp hostname completion::
-
-
-File: vertico.info,  Node: org-refile,  Next: tmm-menubar,  Up: Problematic completion commands
-
-9.1 ‘org-refile’
-================
-
-‘org-refile’ uses ‘org-olpath-completing-read’ to complete the outline
-path in steps, when ‘org-refile-use-outline-path’ is non-nil.
-
-   Unfortunately the implementation of this Org completion table assumes
-that the ‘basic’ completion style is used.  The table is incompatible
-with completion styles like ‘substring’, ‘flex’ or ‘orderless’.  In
-order to fix the issue at the root, the completion table should make use
-of completion boundaries similar to the built-in file completion table.
-In your user configuration you can prioritize ‘basic’ before
-‘orderless:’
-
-     ;; Alternative 1: Use the basic completion style
-     (setq org-refile-use-outline-path 'file
-           org-outline-path-complete-in-steps t)
-     (advice-add #'org-olpath-completing-read :around
-                 (lambda (&rest args)
-                   (minibuffer-with-setup-hook
-                       (lambda () (setq-local completion-styles '(basic)))
-                     (apply args))))
-
-   Alternatively you may want to disable the outline path completion in
-steps.  The completion on the full path can be quicker since the input
-string matches directly against substrings of the full path, which is
-useful with Orderless.  However the list of possible completions becomes
-much more cluttered.
-
-     ;; Alternative 2: Complete full paths
-     (setq org-refile-use-outline-path 'file
-           org-outline-path-complete-in-steps nil)
-
-
-File: vertico.info,  Node: tmm-menubar,  Next: ffap-menu,  Prev: org-refile,  Up: Problematic completion commands
-
-9.2 ‘tmm-menubar’
-=================
-
-The text menu bar works well with Vertico but always shows a
-‘*Completions*’ buffer, which is unwanted if you use the Vertico UI.
-This completion buffer can be disabled as follows.
-
-     (advice-add #'tmm-add-prompt :after #'minibuffer-hide-completions)
-
-
-File: vertico.info,  Node: ffap-menu,  Next: Tramp hostname completion,  Prev: tmm-menubar,  Up: Problematic completion commands
-
-9.3 ‘ffap-menu’
-===============
-
-The command ‘ffap-menu’ shows the ‘=*Completions*’ buffer by default
-like ‘tmm-menubar’, which is unnecessary with Vertico.  This completion
-buffer can be disabled as follows.
-
-     (advice-add #'ffap-menu-ask :around (lambda (&rest args)
-                                      (cl-letf (((symbol-function #'minibuffer-completion-help)
-                                                 #'ignore))
-                                        (apply args))))
-
-
-File: vertico.info,  Node: Tramp hostname completion,  Prev: ffap-menu,  Up: Problematic completion commands
-
-9.4 Tramp hostname completion
-=============================
-
-In combination with Orderless, hostnames are not made available for
-completion after entering ‘/ssh:’.  In order to avoid this problem, the
-‘basic’ completion style should be specified for the file completion
-category.
-
-     (setq completion-styles '(orderless)
-           completion-category-overrides '((file (styles basic partial-completion))))
-
-   For users who are familiar with the ‘completion-style’ machinery: You
-may also define a custom completion style which sets in only for remote
-files!
-
-     (defun basic-remote-try-completion (string table pred point)
-       (and (vertico--remote-p string)
-            (completion-basic-try-completion string table pred point)))
-     (defun basic-remote-all-completions (string table pred point)
-       (and (vertico--remote-p string)
-            (completion-basic-all-completions string table pred point)))
-     (add-to-list
-      'completion-styles-alist
-      '(basic-remote basic-remote-try-completion basic-remote-all-completions nil))
-     (setq completion-styles '(orderless)
-           completion-category-overrides '((file (styles basic-remote partial-completion))))
-
-
-File: vertico.info,  Node: Contributions,  Prev: Problematic completion commands,  Up: Top
-
-10 Contributions
-****************
-
-Since this package is part of GNU ELPA
-(http://elpa.gnu.org/packages/vertico.html) contributions require a
-copyright assignment to the FSF.
-
-
-
-Tag Table:
-Node: Top196
-Node: Introduction926
-Node: Features1761
-Node: Key bindings2729
-Node: Configuration3964
-Node: Completion styles and TAB completion7627
-Node: Completion-at-point and completion-in-region9937
-Node: Completing-read-multiple (CRM)11262
-Node: Extensions11681
-Node: Configure Vertico per command or completion category15344
-Node: Complementary packages19321
-Node: Child frames and Popups21574
-Node: Alternatives22949
-Node: Problematic completion commands26538
-Node: org-refile27050
-Node: tmm-menubar28637
-Node: ffap-menu29054
-Node: Tramp hostname completion29687
-Node: Contributions30999
-
-End Tag Table
-
-
-Local Variables:
-coding: utf-8
-End:
blob - 07806a1615b0371555cf2caf733ad9cbcb6fcde1 (mode 644)
blob + /dev/null
--- elpa/vertico-0.19.signed
+++ /dev/null
@@ -1 +0,0 @@
-Good signature from 066DAFCB81E42C40 GNU ELPA Signing Agent (2019) <elpasign@elpa.gnu.org> (trust undefined) created at 2022-01-07T23:15:02+0100 using RSA
\ No newline at end of file
blob - f288702d2fa16d3cdf0035b15a9fcbc552cd88e7 (mode 644)
blob + /dev/null
--- elpa/vertico-posframe-0.5.1/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<https://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<https://www.gnu.org/licenses/why-not-lgpl.html>.
blob - ce0004fd7ed2c74ede6c8d34e96b5e29f1f36e3c (mode 644)
blob + /dev/null
--- elpa/vertico-posframe-0.5.1/README.org
+++ /dev/null
@@ -1,26 +0,0 @@
-#+TITLE: README of vertico-posframe
-
-** What is vertico-posframe
-
-vertico-posframe is an vertico extension, which lets vertico use
-posframe to show its candidate menu.
-
-NOTE: vertico-posframe requires Emacs 26 and do not support mouse
-click.
-
-** How to enable vertico-posframe
-#+BEGIN_EXAMPLE
-(require 'vertico-posframe)
-(vertico-posframe-mode 1)
-#+END_EXAMPLE
-
-** Tips
-*** How to show fringe to vertico-posframe
-#+BEGIN_EXAMPLE
-(setq vertico-posframe-parameters
-      '((left-fringe . 8)
-        (right-fringe . 8)))
-#+END_EXAMPLE
-
-By the way, User can set *any* parameters of vertico-posframe with
-the help of `vertico-posframe-parameters'.
blob - 0b34a65827471e9510df14b1576c8e767cb64413 (mode 644)
blob + /dev/null
--- elpa/vertico-posframe-0.5.1/vertico-posframe-autoloads.el
+++ /dev/null
@@ -1,50 +0,0 @@
-;;; vertico-posframe-autoloads.el --- automatically extracted autoloads
-;;
-;;; Code:
-
-(add-to-list 'load-path (directory-file-name
-                         (or (file-name-directory #$) (car load-path))))
-
-
-;;;### (autoloads nil "vertico-posframe" "vertico-posframe.el" (0
-;;;;;;  0 0 0))
-;;; Generated autoloads from vertico-posframe.el
-
-(autoload 'vertico-posframe-cleanup "vertico-posframe" "\
-Remove frames and buffers used for vertico-posframe." t nil)
-
-(defvar vertico-posframe-mode nil "\
-Non-nil if Vertico-Posframe mode is enabled.
-See the `vertico-posframe-mode' command
-for a description of this minor mode.
-Setting this variable directly does not take effect;
-either customize it (see the info node `Easy Customization')
-or call the function `vertico-posframe-mode'.")
-
-(custom-autoload 'vertico-posframe-mode "vertico-posframe" nil)
-
-(autoload 'vertico-posframe-mode "vertico-posframe" "\
-Display Vertico in posframe instead of the minibuffer.
-
-If called interactively, enable Vertico-Posframe mode if ARG is
-positive, and disable it if ARG is zero or negative.  If called
-from Lisp, also enable the mode if ARG is omitted or nil, and
-toggle it if ARG is `toggle'; disable the mode otherwise.
-
-\(fn &optional ARG)" t nil)
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "vertico-posframe" '("vertico-posframe-")))
-
-;;;***
-
-;;;### (autoloads nil nil ("vertico-posframe-pkg.el") (0 0 0 0))
-
-;;;***
-
-;; Local Variables:
-;; version-control: never
-;; no-byte-compile: t
-;; no-update-autoloads: t
-;; coding: utf-8
-;; End:
-;;; vertico-posframe-autoloads.el ends here
blob - 8f7602ce949bbc746ab0b58359f33448a9304ba5 (mode 644)
blob + /dev/null
--- elpa/vertico-posframe-0.5.1/vertico-posframe-pkg.el
+++ /dev/null
@@ -1,2 +0,0 @@
-;; Generated package description from vertico-posframe.el  -*- no-byte-compile: t -*-
-(define-package "vertico-posframe" "0.5.1" "Using posframe to show Vertico" '((emacs "26.0") (posframe "1.1.4") (vertico "0.13.0")) :commit "7a75271fdaf593e6f491a953b511d2540553b532" :authors '(("Feng Shu" . "tumashu@163.com")) :maintainer '("Feng Shu" . "tumashu@163.com") :keywords '("abbrev" "convenience" "matching" "vertico") :url "https://github.com/tumashu/vertico-posframe")
blob - da1388626697f9e6d7eebac2d61357e4cd5909e3 (mode 644)
blob + /dev/null
--- elpa/vertico-posframe-0.5.1/vertico-posframe.el
+++ /dev/null
@@ -1,310 +0,0 @@
-;;; vertico-posframe.el --- Using posframe to show Vertico  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2021 Free Software Foundation, Inc.
-
-;; Author: Feng Shu <tumashu@163.com>
-;; Maintainer: Feng Shu <tumashu@163.com>
-;; URL: https://github.com/tumashu/vertico-posframe
-;; Version: 0.5.1
-;; Keywords: abbrev, convenience, matching, vertico
-;; Package-Requires: ((emacs "26.0") (posframe "1.1.4") (vertico "0.13.0"))
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-
-;;; Commentary:
-;; * vertico-posframe README                                :README:
-
-;; ** What is vertico-posframe
-
-;; vertico-posframe is an vertico extension, which lets vertico use posframe to show
-;; its candidate menu.
-
-;; NOTE: vertico-posframe requires Emacs 26 and do not support mouse
-;; click.
-
-;; ** How to enable vertico-posframe
-;; #+BEGIN_EXAMPLE
-;; (require 'vertico-posframe)
-;; (vertico-posframe-mode 1)
-;; #+END_EXAMPLE
-
-;; ** Tips
-
-;; *** How to show fringe to vertico-posframe
-;; #+BEGIN_EXAMPLE
-;; (setq vertico-posframe-parameters
-;;       '((left-fringe . 8)
-;;         (right-fringe . 8)))
-;; #+END_EXAMPLE
-
-;; By the way, User can set *any* parameters of vertico-posframe with
-;; the help of `vertico-posframe-parameters'.
-
-;;; Code:
-;; * vertico-posframe's code
-(require 'posframe)
-(require 'vertico)
-
-(defgroup vertico-posframe nil
-  "Using posframe to show vertico."
-  :group 'vertico-posframe)
-
-(defcustom vertico-posframe-font nil
-  "The font used by vertico-posframe.
-When nil, Using current frame's font as fallback."
-  :type 'string)
-
-(defcustom vertico-posframe-width nil
-  "The width of vertico-posframe."
-  :type 'number)
-
-(defcustom vertico-posframe-height nil
-  "The height of vertico-posframe."
-  :type 'number)
-
-(defcustom vertico-posframe-min-width nil
-  "The min width of vertico-posframe."
-  :type 'number)
-
-(defcustom vertico-posframe-min-height nil
-  "The min height of vertico-posframe."
-  :type 'number)
-
-(defcustom vertico-posframe-poshandler #'posframe-poshandler-frame-center
-  "The posframe poshandler used by vertico-posframe."
-  :type 'function)
-
-(defcustom vertico-posframe-refposhandler #'vertico-posframe-refposhandler-default
-  "The refposhandler used by vertico-posframe.
-
-NOTE: This variable is very useful to EXWM users."
-  :type 'function)
-
-(defcustom vertico-posframe-size-function #'vertico-posframe-get-size
-  "The function which is used to deal with posframe's size."
-  :type 'function)
-
-(defcustom vertico-posframe-border-width 2
-  "The border width used by vertico-posframe.
-When 0, no border is showed."
-  :type 'number)
-
-(defcustom vertico-posframe-parameters nil
-  "The frame parameters used by vertico-posframe."
-  :type 'string)
-
-(defcustom vertico-posframe-show-minibuffer-rules
-  (list "^eval-*")
-  "A list of rule showed minibuffer.
-
-a rule can be a regexp or a function.
-
-1. when rule is a regexp and it match `this-command'.
-2. when rule is a function and it return t.
-3. when rule is a symbol, its value is t.
-
-minibuffer will not be hided by minibuffer-cover."
-  :type '(repeat (choice string function)))
-
-(defface vertico-posframe
-  '((t (:inherit default)))
-  "Face used by the vertico-posframe."
-  :group 'vertico-posframe)
-
-(defface vertico-posframe-border
-  '((t (:inherit default :background "gray50")))
-  "Face used by the vertico-posframe's border when minibuffer-depth = 1."
-  :group 'vertico-posframe)
-
-(defface vertico-posframe-border-2
-  '((t (:inherit default :background "red")))
-  "Face used by the vertico-posframe's border when minibuffer-depth = 2."
-  :group 'vertico-posframe)
-
-(defface vertico-posframe-border-3
-  '((t (:inherit default :background "green")))
-  "Face used by the vertico-posframe's border when minibuffer-depth = 3."
-  :group 'vertico-posframe)
-
-(defface vertico-posframe-border-4
-  '((t (:inherit default :background "blue")))
-  "Face used by the vertico-posframe's border when minibuffer-depth = 4."
-  :group 'vertico-posframe)
-
-(defface vertico-posframe-border-fallback
-  '((t (:inherit default :background "yellow")))
-  "Face used by the vertico-posframe's border when find no face."
-  :group 'vertico-posframe)
-
-(defvar vertico-posframe--buffer nil)
-
-;; Fix warn
-(defvar exwm--connection)
-(defvar exwm-workspace--workareas)
-(defvar exwm-workspace-current-index)
-
-(defun vertico-posframe-refposhandler-default (&optional frame)
-  "The default posframe refposhandler used by vertico-posframe.
-Optional argument FRAME ."
-  (cond
-   ;; EXWM environment
-   ((bound-and-true-p exwm--connection)
-    (or (ignore-errors
-          (let ((info (elt exwm-workspace--workareas
-                           exwm-workspace-current-index)))
-            (cons (elt info 0)
-                  (elt info 1))))
-        ;; Need user install xwininfo.
-        (ignore-errors
-          (posframe-refposhandler-xwininfo frame))
-        ;; Fallback, this value will incorrect sometime, for example: user
-        ;; have panel.
-        (cons 0 0)))
-   (t nil)))
-
-(defun vertico-posframe-hidehandler (_)
-  "Hidehandler used by vertico-posframe."
-  (not (minibufferp)))
-
-(defun vertico-posframe-get-size ()
-  "The default functon used by `vertico-posframe-size-function'."
-  (list
-   :height vertico-posframe-height
-   :width vertico-posframe-width
-   :min-height (or vertico-posframe-min-height
-                   (let ((height (+ vertico-count 1)))
-                     (min height (or vertico-posframe-height height))))
-   :min-width (or vertico-posframe-min-width
-                  (let ((width (round (* (frame-width) 0.62))))
-                    (min width (or vertico-posframe-width width))))))
-
-(defun vertico-posframe--display (_lines)
-  "Display LINES in posframe."
-  (let ((point (point)))
-    (setq vertico-posframe--buffer (current-buffer))
-    (setq-local max-mini-window-height 1)
-    (vertico-posframe--handle-minibuffer-window)
-    (with-selected-window (vertico-posframe-last-window)
-      (vertico-posframe--show vertico-posframe--buffer point))))
-
-(defun vertico-posframe--show (buffer window-point)
-  "`posframe-show' of vertico-posframe.
-
-BUFFER will be showed by `posframe-show'.  After `posframe-show'
-is called, window-point will be set to WINDOW-POINT."
-  (let ((posframe (apply #'posframe-show
-                         buffer
-                         :font vertico-posframe-font
-                         :poshandler vertico-posframe-poshandler
-                         :background-color (face-attribute 'vertico-posframe :background nil t)
-                         :foreground-color (face-attribute 'vertico-posframe :foreground nil t)
-                         :border-width vertico-posframe-border-width
-                         :border-color (vertico-posframe--get-border-color)
-                         :override-parameters vertico-posframe-parameters
-                         :refposhandler vertico-posframe-refposhandler
-                         :hidehandler #'vertico-posframe-hidehandler
-                         :lines-truncate t
-                         (funcall vertico-posframe-size-function))))
-    ;; NOTE: `posframe-show' will force set window-point to 0, so we
-    ;; need reset it again after `posframe-show'.
-    (when (numberp window-point)
-      (let ((window (frame-root-window posframe)))
-        (when (window-live-p window)
-          (set-window-point window window-point))))
-    ;; NOTE: posframe will hide cursor, so we need let it show again.
-    (with-current-buffer buffer
-      (setq-local cursor-type t)
-      (setq-local cursor-in-non-selected-windows 'box))))
-
-(defun vertico-posframe--get-border-color ()
-  "Get color of vertico-posframe border."
-  (face-attribute
-   (let* ((n (minibuffer-depth))
-          (face (intern (format "vertico-posframe-border-%s" n)))
-          (face-fallback 'vertico-posframe-border-fallback))
-     (if (= n 1)
-         'vertico-posframe-border
-       (if (facep face)
-           face
-         face-fallback)))
-   :background))
-
-(defun vertico-posframe--show-minibuffer-p ()
-  "Test show minibuffer or not."
-  (cl-some
-   (lambda (rule)
-     (cond ((functionp rule)
-            (funcall rule))
-           ((and rule (stringp rule))
-            (string-match-p rule (symbol-name this-command)))
-           ((symbolp rule)
-            (symbol-value rule))
-           (t nil)))
-   vertico-posframe-show-minibuffer-rules))
-
-(defun vertico-posframe--handle-minibuffer-window ()
-  "Handle minibuffer window."
-  (let ((show-minibuffer-p (vertico-posframe--show-minibuffer-p))
-        (minibuffer-window (active-minibuffer-window)))
-    (window-resize minibuffer-window
-                   (- (window-pixel-height minibuffer-window))
-                   nil nil 'pixelwise)
-    (set-window-vscroll minibuffer-window 100)
-    (when show-minibuffer-p
-      (set-window-vscroll minibuffer-window 0))))
-
-(defun vertico-posframe-last-window ()
-  "Get the last actived window before active minibuffer."
-  (let ((window (minibuffer-selected-window)))
-    (or (if (window-live-p window)
-            window
-          (next-window))
-        (selected-window))))
-
-(defun vertico-posframe--minibuffer-exit-hook ()
-  "The function used by `minibuffer-exit-hook'."
-  (setq-local max-mini-window-height 1.0)
-  (when (posframe-workable-p)
-    (posframe-hide vertico-posframe--buffer)))
-
-(defun vertico-posframe--setup ()
-  "Setup minibuffer overlay, which pushes the minibuffer content down."
-  (add-hook 'minibuffer-exit-hook #'vertico-posframe--minibuffer-exit-hook nil 'local))
-
-;;;###autoload
-(defun vertico-posframe-cleanup ()
-  "Remove frames and buffers used for vertico-posframe."
-  (interactive)
-  (when vertico-posframe--buffer
-    (posframe-delete vertico-posframe--buffer)))
-
-;;;###autoload
-(define-minor-mode vertico-posframe-mode
-  "Display Vertico in posframe instead of the minibuffer."
-  :global t
-  (cond
-   (vertico-posframe-mode
-    (advice-add #'vertico--display-candidates :after #'vertico-posframe--display)
-    (advice-add #'vertico--setup :after #'vertico-posframe--setup)
-    (advice-add #'vertico--resize-window :override #'ignore))
-   (t
-    (advice-remove #'vertico--display-candidates #'vertico-posframe--display)
-    (advice-remove #'vertico--setup #'vertico-posframe--setup)
-    (advice-remove #'vertico--resize-window #'ignore))))
-
-(provide 'vertico-posframe)
-;;; vertico-posframe.el ends here
blob - e9bef5765cf2bf1dfc011cd3ca7beee9e595b1ba (mode 644)
blob + /dev/null
--- elpa/vertico-posframe-0.5.1.signed
+++ /dev/null
@@ -1 +0,0 @@
-Good signature from 066DAFCB81E42C40 GNU ELPA Signing Agent (2019) <elpasign@elpa.gnu.org> (trust undefined) created at 2022-01-12T11:05:06+0100 using RSA
\ No newline at end of file
blob - bd66d9e027add7a8d2fbd5f77e7f8973f7677f7a
blob + 4cc9c171570fbb214ecfcae2f953e5eddb5e732a
--- init.el
+++ init.el
@@ -45,8 +45,6 @@
 
 (delete-selection-mode 1)
 (which-key-mode 1)
-(vertico-mode 1)
-(vertico-posframe-mode 1)
 (marginalia-mode 1)
 (corfu-global-mode 1)
 (global-aggressive-indent-mode 1)
@@ -61,12 +59,15 @@
           `(global-set-key (kbd ,(car x)) #',(cdr x)))
         keys-alist)))
 
-(defmacro lh/define-keys (keymap keys-alist)
-  `(progn
-     ,@(seq-map
-        (lambda (x)
-          `(define-key ,keymap (kbd ,(car x)) #',(cdr x)))
-        keys-alist)))
+(defmacro lh/define-keys (keymap keys-alist &optional after)
+  (let ((defines (seq-map
+                  (lambda (x)
+                    `(define-key ,keymap (kbd ,(car x)) #',(cdr x)))
+                  keys-alist)))
+    (if (null after)
+        (cons 'progn defines)
+      `(with-eval-after-load ',after
+         ,@defines))))
 
 (lh/global-set-keys
  (("C-x C-M-t" . transpose-regions)
@@ -130,6 +131,12 @@
 (lh/global-set-keys
  (("M-s d" . deadgrep)))
 
+(lh/define-keys icomplete-fido-mode-map
+                (("TAB" . icomplete-force-complete)
+                 ("<left>" . left-char)
+                 ("<right>" . right-char)
+                 ("^" . icomplete-fido-backward-updir))
+                icomplete)
 (lh/define-keys isearch-mode-map
                 (("M-e" . consult-isearch)
                  ("M-s e" . consult-isearch)
@@ -180,6 +187,8 @@
  '(cursor-type 'bar)
  '(delete-old-versions t)
  '(dired-kill-when-opening-new-dired-buffer t)
+ '(fido-mode t)
+ '(fido-vertical-mode t)
  '(frame-resize-pixelwise t)
  '(global-company-mode t)
  '(indent-tabs-mode nil)
@@ -205,7 +214,7 @@
      ("melpa-stable" . "https://stable.melpa.org/packages/")
      ("melpa" . "https://melpa.org/packages/")))
  '(package-selected-packages
-   '(ob-restclient restclient vterm deadgrep helpful pdf-tools paredit-menu paredit vertico-posframe vertico corfu sly eglot aggressive-indent project nov nhexl-mode elfeed magit yaml-mode json-mode lua-mode go-mode geiser-guile geiser org-roam org-contrib org ace-window expand-region consult marginalia uuidgen request diminish which-key))
+   '(ob-restclient restclient vterm deadgrep helpful pdf-tools paredit-menu paredit corfu sly eglot aggressive-indent project nov nhexl-mode elfeed magit yaml-mode json-mode lua-mode go-mode geiser-guile geiser org-roam org-contrib org ace-window expand-region consult marginalia uuidgen request diminish which-key))
  '(pcomplete-ignore-case t t)
  '(pixel-scroll-precision-mode t)
  '(read-buffer-completion-ignore-case t)