From de3784886b37a4bb1ac9edab0f740d59e0c769fd Mon Sep 17 00:00:00 2001 From: Andreas Gerler Date: Wed, 21 May 2025 14:46:38 +0200 Subject: [PATCH] update ivy --- elpa/ivy-20240829.1723/elpa.el | 6 - .../colir.el | 52 ++- .../dir | 0 .../ivy-autoloads.el | 0 .../ivy-faces.el | 9 +- .../ivy-help.org | 0 .../ivy-overlay.el | 20 +- .../ivy-pkg.el | 6 +- .../ivy.el | 417 +++++++++-------- .../ivy.info | 434 +++++++++--------- 10 files changed, 494 insertions(+), 450 deletions(-) delete mode 100644 elpa/ivy-20240829.1723/elpa.el rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/colir.el (74%) rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/dir (100%) rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/ivy-autoloads.el (100%) rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/ivy-faces.el (93%) rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/ivy-help.org (100%) rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/ivy-overlay.el (91%) rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/ivy-pkg.el (72%) rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/ivy.el (94%) rename elpa/{ivy-20240829.1723 => ivy-20250417.1209}/ivy.info (85%) diff --git a/elpa/ivy-20240829.1723/elpa.el b/elpa/ivy-20240829.1723/elpa.el deleted file mode 100644 index 4ccd4b40..00000000 --- a/elpa/ivy-20240829.1723/elpa.el +++ /dev/null @@ -1,6 +0,0 @@ -;; Copyright (C) 2019-2024 Free Software Foundation, Inc. -(setq package-user-dir - (expand-file-name - (format "~/.elpa/%s/elpa" - (concat emacs-version (when (getenv "MELPA_STABLE") "-stable"))))) -(package-initialize) diff --git a/elpa/ivy-20240829.1723/colir.el b/elpa/ivy-20250417.1209/colir.el similarity index 74% rename from elpa/ivy-20240829.1723/colir.el rename to elpa/ivy-20250417.1209/colir.el index f371ef38..a06e4958 100644 --- a/elpa/ivy-20240829.1723/colir.el +++ b/elpa/ivy-20250417.1209/colir.el @@ -1,6 +1,6 @@ ;;; colir.el --- Color blending library -*- lexical-binding: t -*- -;; Copyright (C) 2015-2024 Free Software Foundation, Inc. +;; Copyright (C) 2015-2025 Free Software Foundation, Inc. ;; Author: Oleh Krehel @@ -32,10 +32,14 @@ ;;; Code: (require 'cl-lib) -(require 'color) + +(eval-and-compile + ;; Autoloaded since Emacs 31. + (unless (fboundp 'color-rgb-to-hex) + (autoload 'color-rgb-to-hex "color"))) (defcustom colir-compose-method #'colir-compose-alpha - "Select a method to compose two color channels." + "The method `colir-blend' uses to compose two color channels." :group 'ivy :type '(radio (function-item colir-compose-alpha) @@ -43,22 +47,25 @@ (function-item colir-compose-soft-light))) (defun colir-compose-soft-light (a b) - "Compose A and B channels." + "Compose color channels A and B in Soft Light blend mode. +See URL `https://en.wikipedia.org/wiki/Blend_modes#Soft_Light'." (if (< b 0.5) (+ (* 2 a b) (* a a (- 1 b b))) - (+ (* 2 a (- 1 b)) (* (sqrt a) (- (* 2 b) 1))))) + (+ (* 2 a (- 1 b)) (* (sqrt a) (+ b b -1))))) (defun colir-compose-overlay (a b) - "Compose A and B channels." + "Compose color channels A and B in Overlay blend mode. +See URL `https://en.wikipedia.org/wiki/Blend_modes#Overlay'." (if (< a 0.5) (* 2 a b) (- 1 (* 2 (- 1 a) (- 1 b))))) +;; Generalizes Emacs 31 `color-blend'. (defun colir-compose-alpha (a b &optional alpha gamma) - "Compose A and B channels. -Optional argument ALPHA is a number between 0.0 and 1.0 which corresponds -to the influence of A on the result. Default value is 0.5. -Optional argument GAMMA is used for gamma correction. Default value is 2.2." + "Compose color channels A and B using alpha blending. +Optional argument ALPHA controls the influence of A on the result. +It is a number between 0.0 and 1.0, inclusive (default 0.5). +Optional argument GAMMA controls gamma correction (default 2.2)." (setq alpha (or alpha 0.5)) (setq gamma (or gamma 2.2)) (+ (* (expt a gamma) alpha) (* (expt b gamma) (- 1 alpha)))) @@ -69,8 +76,8 @@ C1 and C2 are triples of floats in [0.0 1.0] range." (apply #'color-rgb-to-hex (cl-mapcar (if (eq (frame-parameter nil 'background-mode) 'dark) - ;; this method works nicely for dark themes - 'colir-compose-soft-light + ;; This method works nicely for dark themes. + #'colir-compose-soft-light colir-compose-method) c1 c2))) @@ -85,17 +92,16 @@ C1 and C2 are triples of floats in [0.0 1.0] range." (defun colir--blend-background (start next prevn face object) (let ((background-prev (face-background prevn))) - (progn - (put-text-property - start next 'face - (if background-prev - (cons `(background-color - . ,(colir-blend - (colir-color-parse background-prev) - (colir-color-parse (face-background face nil t)))) - prevn) - (list face prevn)) - object)))) + (put-text-property + start next 'face + (if background-prev + (cons `(background-color + . ,(colir-blend + (colir-color-parse background-prev) + (colir-color-parse (face-background face nil t)))) + prevn) + (list face prevn)) + object))) (defun colir-blend-face-background (start end face &optional object) "Append to the face property of the text from START to END the face FACE. diff --git a/elpa/ivy-20240829.1723/dir b/elpa/ivy-20250417.1209/dir similarity index 100% rename from elpa/ivy-20240829.1723/dir rename to elpa/ivy-20250417.1209/dir diff --git a/elpa/ivy-20240829.1723/ivy-autoloads.el b/elpa/ivy-20250417.1209/ivy-autoloads.el similarity index 100% rename from elpa/ivy-20240829.1723/ivy-autoloads.el rename to elpa/ivy-20250417.1209/ivy-autoloads.el diff --git a/elpa/ivy-20240829.1723/ivy-faces.el b/elpa/ivy-20250417.1209/ivy-faces.el similarity index 93% rename from elpa/ivy-20240829.1723/ivy-faces.el rename to elpa/ivy-20250417.1209/ivy-faces.el index c2195ed2..5f76ba95 100644 --- a/elpa/ivy-20240829.1723/ivy-faces.el +++ b/elpa/ivy-20250417.1209/ivy-faces.el @@ -1,6 +1,6 @@ ;;; ivy-faces.el --- Faces for Ivy -*- lexical-binding: t -*- -;; Copyright (C) 2020-2024 Free Software Foundation, Inc. +;; Copyright (C) 2020-2025 Free Software Foundation, Inc. ;; Author: Oleh Krehel ;; Keywords: convenience @@ -27,6 +27,13 @@ :group 'ivy :group 'faces) +(defface ivy-cursor + '((((class color) (background light)) + :background "black" :foreground "white") + (((class color) (background dark)) + :background "white" :foreground "black")) + "Cursor face for inline completion.") + (defface ivy-current-match '((((class color) (background light)) :background "#1a4b77" :foreground "white" :extend t) diff --git a/elpa/ivy-20240829.1723/ivy-help.org b/elpa/ivy-20250417.1209/ivy-help.org similarity index 100% rename from elpa/ivy-20240829.1723/ivy-help.org rename to elpa/ivy-20250417.1209/ivy-help.org diff --git a/elpa/ivy-20240829.1723/ivy-overlay.el b/elpa/ivy-20250417.1209/ivy-overlay.el similarity index 91% rename from elpa/ivy-20240829.1723/ivy-overlay.el rename to elpa/ivy-20250417.1209/ivy-overlay.el index ad359fc8..8803e60b 100644 --- a/elpa/ivy-20240829.1723/ivy-overlay.el +++ b/elpa/ivy-20250417.1209/ivy-overlay.el @@ -1,6 +1,6 @@ ;;; ivy-overlay.el --- Overlay display functions for Ivy -*- lexical-binding: t -*- -;; Copyright (C) 2016-2024 Free Software Foundation, Inc. +;; Copyright (C) 2016-2025 Free Software Foundation, Inc. ;; Author: Oleh Krehel ;; Keywords: convenience @@ -20,9 +20,9 @@ ;;; Commentary: -;; This package allows to setup Ivy's completion at point to actually -;; show the candidates and the input at point, instead of in the -;; minibuffer. +;; Normally, Ivy displays completion candidates and entered text in +;; the minibuffer. This file enables in-buffer completion to be +;; displayed at point instead. ;;; Code: @@ -30,14 +30,6 @@ (require 'cl-lib) (require 'subr-x)) -(defface ivy-cursor - '((((class color) (background light)) - :background "black" :foreground "white") - (((class color) (background dark)) - :background "white" :foreground "black")) - "Cursor face for inline completion." - :group 'ivy-faces) - (defvar ivy--old-cursor-type t) (defvar ivy-overlay-at nil @@ -90,13 +82,11 @@ Then attach the overlay to the character before point." (declare-function org-current-level "org") (declare-function org-at-heading-p "org") (defvar org-indent-indentation-per-level) -(defvar ivy-height) (defvar ivy-last) (defvar ivy-text) (defvar ivy-completion-beg) (declare-function ivy--get-window "ivy") -(declare-function ivy-state-current "ivy") -(declare-function ivy-state-window "ivy") +(declare-function ivy-state-window "ivy" t t) (defun ivy-overlay--current-column () "Return `current-column', ignoring `ivy-overlay-at'. diff --git a/elpa/ivy-20240829.1723/ivy-pkg.el b/elpa/ivy-20250417.1209/ivy-pkg.el similarity index 72% rename from elpa/ivy-20240829.1723/ivy-pkg.el rename to elpa/ivy-20250417.1209/ivy-pkg.el index 59d7ef1d..2f6adcca 100644 --- a/elpa/ivy-20240829.1723/ivy-pkg.el +++ b/elpa/ivy-20250417.1209/ivy-pkg.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; lexical-binding: nil -*- -(define-package "ivy" "20240829.1723" +(define-package "ivy" "20250417.1209" "Incremental Vertical completYon." '((emacs "24.5")) :url "https://github.com/abo-abo/swiper" - :commit "8dc02d5b725f78d1f80904807b46f5406f129674" - :revdesc "8dc02d5b725f" + :commit "2529a23f9f510a94efa6c088bd14217aa764dafb" + :revdesc "2529a23f9f51" :keywords '("matching") :authors '(("Oleh Krehel" . "ohwoeowho@gmail.com")) :maintainers '(("Basil L. Contovounesios" . "basil@contovou.net"))) diff --git a/elpa/ivy-20240829.1723/ivy.el b/elpa/ivy-20250417.1209/ivy.el similarity index 94% rename from elpa/ivy-20240829.1723/ivy.el rename to elpa/ivy-20250417.1209/ivy.el index a5f3b68e..8a63c05a 100644 --- a/elpa/ivy-20240829.1723/ivy.el +++ b/elpa/ivy-20250417.1209/ivy.el @@ -1,12 +1,12 @@ ;;; ivy.el --- Incremental Vertical completYon -*- lexical-binding: t -*- -;; Copyright (C) 2015-2024 Free Software Foundation, Inc. +;; Copyright (C) 2015-2025 Free Software Foundation, Inc. ;; Author: Oleh Krehel ;; Maintainer: Basil L. Contovounesios ;; URL: https://github.com/abo-abo/swiper -;; Package-Version: 20240829.1723 -;; Package-Revision: 8dc02d5b725f +;; Package-Version: 20250417.1209 +;; Package-Revision: 2529a23f9f51 ;; Package-Requires: ((emacs "24.5")) ;; Keywords: matching @@ -41,11 +41,11 @@ ;;; Code: (require 'colir) -(require 'ivy-overlay) (require 'ivy-faces) +(autoload 'ivy-overlay-cleanup "ivy-overlay") +(autoload 'ivy-display-function-overlay "ivy-overlay") (require 'cl-lib) -(require 'ring) (eval-when-compile (require 'subr-x) @@ -58,8 +58,9 @@ Polyfill for Emacs 30 `static-if'." (if (eval condition lexical-binding) then-form (macroexp-progn else-forms))))) + +;;; Customization -;;* Customization (defgroup ivy nil "Incremental vertical completion." :group 'convenience) @@ -310,80 +311,88 @@ Example: "Prefix arg to pass to actions. This is a global variable that is set by ivy functions for use in action functions.") + +;;; Keymap + +(autoload 'minibuffer-keyboard-quit "delsel" nil t) +(autoload 'hydra-ivy/body "ivy-hydra" nil t) +(autoload 'ivy-hydra-read-action "ivy-hydra" nil t) -;;* Keymap -(require 'delsel) (defun ivy-define-key (keymap key def) "Forward to (`define-key' KEYMAP KEY DEF). Remove DEF from `counsel-M-x' list." - (put def 'no-counsel-M-x t) + (function-put def 'no-counsel-M-x t) (define-key keymap key def)) (defvar ivy-minibuffer-map (let ((map (make-sparse-keymap))) - (ivy-define-key map (kbd "C-m") 'ivy-done) - (define-key map [down-mouse-1] 'ignore) - (ivy-define-key map [mouse-1] 'ivy-mouse-done) - (ivy-define-key map [mouse-3] 'ivy-mouse-dispatching-done) - (ivy-define-key map (kbd "C-M-m") 'ivy-call) - (ivy-define-key map (kbd "C-j") 'ivy-alt-done) - (ivy-define-key map (kbd "C-M-j") 'ivy-immediate-done) - (ivy-define-key map (kbd "TAB") 'ivy-partial-or-done) - (ivy-define-key map [remap next-line] 'ivy-next-line) - (ivy-define-key map [remap previous-line] 'ivy-previous-line) - (ivy-define-key map (kbd "C-r") 'ivy-reverse-i-search) - (define-key map (kbd "SPC") 'self-insert-command) - (ivy-define-key map [remap delete-backward-char] 'ivy-backward-delete-char) - (ivy-define-key map [remap backward-delete-char-untabify] 'ivy-backward-delete-char) - (ivy-define-key map [remap backward-kill-word] 'ivy-backward-kill-word) - (ivy-define-key map [remap delete-char] 'ivy-delete-char) - (ivy-define-key map [remap forward-char] 'ivy-forward-char) - (ivy-define-key map (kbd "") 'ivy-forward-char) - (ivy-define-key map [remap kill-word] 'ivy-kill-word) - (ivy-define-key map [remap beginning-of-buffer] 'ivy-beginning-of-buffer) - (ivy-define-key map [remap end-of-buffer] 'ivy-end-of-buffer) - (ivy-define-key map (kbd "M-n") 'ivy-next-history-element) - (ivy-define-key map (kbd "M-p") 'ivy-previous-history-element) - (define-key map (kbd "C-g") 'minibuffer-keyboard-quit) - (ivy-define-key map [remap scroll-up-command] 'ivy-scroll-up-command) - (ivy-define-key map [remap scroll-down-command] 'ivy-scroll-down-command) - (ivy-define-key map (kbd "") 'ivy-scroll-up-command) - (ivy-define-key map (kbd "") 'ivy-scroll-down-command) - (ivy-define-key map (kbd "C-v") 'ivy-scroll-up-command) - (ivy-define-key map (kbd "M-v") 'ivy-scroll-down-command) - (ivy-define-key map (kbd "C-M-n") 'ivy-next-line-and-call) - (ivy-define-key map (kbd "C-M-p") 'ivy-previous-line-and-call) - (ivy-define-key map (kbd "M-a") 'ivy-toggle-marks) - (ivy-define-key map (kbd "M-r") 'ivy-toggle-regexp-quote) - (ivy-define-key map (kbd "M-j") 'ivy-yank-word) - (ivy-define-key map (kbd "M-i") 'ivy-insert-current) - (ivy-define-key map (kbd "C-M-y") 'ivy-insert-current-full) - (ivy-define-key map (kbd "C-o") 'hydra-ivy/body) - (ivy-define-key map (kbd "M-o") 'ivy-dispatching-done) - (ivy-define-key map (kbd "C-M-o") 'ivy-dispatching-call) - (ivy-define-key map [remap kill-line] 'ivy-kill-line) - (ivy-define-key map [remap kill-whole-line] 'ivy-kill-whole-line) - (ivy-define-key map (kbd "S-SPC") 'ivy-restrict-to-matches) - (ivy-define-key map [remap kill-ring-save] 'ivy-kill-ring-save) - (ivy-define-key map (kbd "C-M-a") 'ivy-read-action) - (ivy-define-key map (kbd "C-c C-o") 'ivy-occur) - (ivy-define-key map (kbd "C-c C-a") 'ivy-toggle-ignore) - (ivy-define-key map (kbd "C-c C-s") 'ivy-rotate-sort) - (ivy-define-key map [remap describe-mode] 'ivy-help) - (ivy-define-key map "$" 'ivy-magic-read-file-env) + (ivy-define-key map (kbd "C-m") #'ivy-done) + (define-key map [down-mouse-1] #'ignore) + (ivy-define-key map [mouse-1] #'ivy-mouse-done) + (ivy-define-key map [mouse-3] #'ivy-mouse-dispatching-done) + (ivy-define-key map (kbd "C-M-m") #'ivy-call) + (ivy-define-key map (kbd "C-j") #'ivy-alt-done) + (ivy-define-key map (kbd "C-M-j") #'ivy-immediate-done) + (ivy-define-key map (kbd "TAB") #'ivy-partial-or-done) + (ivy-define-key map `[remap ,#'next-line] #'ivy-next-line) + (ivy-define-key map `[remap ,#'previous-line] #'ivy-previous-line) + (ivy-define-key map (kbd "C-r") #'ivy-reverse-i-search) + (define-key map (kbd "SPC") #'self-insert-command) + (ivy-define-key map `[remap ,#'delete-backward-char] + #'ivy-backward-delete-char) + (ivy-define-key map `[remap ,#'backward-delete-char-untabify] + #'ivy-backward-delete-char) + (ivy-define-key map `[remap ,#'backward-kill-word] #'ivy-backward-kill-word) + (ivy-define-key map `[remap ,#'delete-char] #'ivy-delete-char) + (ivy-define-key map `[remap ,#'forward-char] #'ivy-forward-char) + (ivy-define-key map (kbd "") #'ivy-forward-char) + (ivy-define-key map `[remap ,#'kill-word] #'ivy-kill-word) + (ivy-define-key map `[remap ,#'beginning-of-buffer] + #'ivy-beginning-of-buffer) + (ivy-define-key map `[remap ,#'end-of-buffer] #'ivy-end-of-buffer) + (ivy-define-key map (kbd "M-n") #'ivy-next-history-element) + (ivy-define-key map (kbd "M-p") #'ivy-previous-history-element) + (define-key map (kbd "C-g") #'minibuffer-keyboard-quit) + (ivy-define-key map `[remap ,#'scroll-up-command] #'ivy-scroll-up-command) + (ivy-define-key map `[remap ,#'scroll-down-command] + #'ivy-scroll-down-command) + (ivy-define-key map (kbd "") #'ivy-scroll-up-command) + (ivy-define-key map (kbd "") #'ivy-scroll-down-command) + (ivy-define-key map (kbd "C-v") #'ivy-scroll-up-command) + (ivy-define-key map (kbd "M-v") #'ivy-scroll-down-command) + (ivy-define-key map (kbd "C-M-n") #'ivy-next-line-and-call) + (ivy-define-key map (kbd "C-M-p") #'ivy-previous-line-and-call) + (ivy-define-key map (kbd "M-a") #'ivy-toggle-marks) + (ivy-define-key map (kbd "M-r") #'ivy-toggle-regexp-quote) + (ivy-define-key map (kbd "M-j") #'ivy-yank-word) + (ivy-define-key map (kbd "M-i") #'ivy-insert-current) + (ivy-define-key map (kbd "C-M-y") #'ivy-insert-current-full) + (ivy-define-key map (kbd "C-o") #'hydra-ivy/body) + (ivy-define-key map (kbd "M-o") #'ivy-dispatching-done) + (ivy-define-key map (kbd "C-M-o") #'ivy-dispatching-call) + (ivy-define-key map `[remap ,#'kill-line] #'ivy-kill-line) + (ivy-define-key map `[remap ,#'kill-whole-line] #'ivy-kill-whole-line) + (ivy-define-key map (kbd "S-SPC") #'ivy-restrict-to-matches) + (ivy-define-key map `[remap ,#'kill-ring-save] #'ivy-kill-ring-save) + (ivy-define-key map (kbd "C-M-a") #'ivy-read-action) + (ivy-define-key map (kbd "C-c C-o") #'ivy-occur) + (ivy-define-key map (kbd "C-c C-a") #'ivy-toggle-ignore) + (ivy-define-key map (kbd "C-c C-s") #'ivy-rotate-sort) + (ivy-define-key map `[remap ,#'describe-mode] #'ivy-help) + (ivy-define-key map "$" #'ivy-magic-read-file-env) map) "Keymap used in the minibuffer.") -(autoload 'hydra-ivy/body "ivy-hydra" "" t) -(autoload 'ivy-hydra-read-action "ivy-hydra" "" t) (defvar ivy-mode-map (let ((map (make-sparse-keymap))) - (ivy-define-key map [remap switch-to-buffer] 'ivy-switch-buffer) - (ivy-define-key map [remap switch-to-buffer-other-window] 'ivy-switch-buffer-other-window) + (ivy-define-key map `[remap ,#'switch-to-buffer] #'ivy-switch-buffer) + (ivy-define-key map `[remap ,#'switch-to-buffer-other-window] + #'ivy-switch-buffer-other-window) map) "Keymap for `ivy-mode'.") + +;;; Globals -;;* Globals (cl-defstruct ivy-state prompt collection predicate require-match initial-input @@ -484,7 +493,7 @@ This allows RET to reverse consecutive DEL.") (defvar ivy-regex "" "Store the regex value that corresponds to `ivy-text'.") -(defvar ivy--regex-function 'ivy--regex +(defvar ivy--regex-function #'ivy--regex "Current function for building a regex.") (defun ivy-set-text (str) @@ -702,8 +711,9 @@ candidate, not the prompt." "Return t if the prompt line is selected." (and ivy--use-selectable-prompt (= ivy--index -1))) + +;;; Commands -;;* Commands (defun ivy-done () "Exit the minibuffer with the selected candidate." (interactive) @@ -2038,6 +2048,8 @@ Directories come first." (seq (cl-mapcan (lambda (f) (unless (member f '("./" "../")) + ;; FIXME: Use `substitute-in-file-name'? + ;; Re: #2012, #3060. (setq f (ivy--string-replace "$$" "$" f)) (list (if (and dirs-first (ivy--dirname-p f)) (propertize f 'ivy--dir (directory-file-name f)) @@ -2090,7 +2102,8 @@ found, it falls back to the key t." ;; misearch.el (ivy--string-replace "RET to end" "C-M-j to end" prompt)))) -;;** Entry Point +;;;; Entry Point + ;;;###autoload (cl-defun ivy-read (prompt collection &key @@ -2267,8 +2280,9 @@ customizations apply to the current completion session." ivy-text))) (cond ((equal item "")) ((stringp item) - (set hist (cons (propertize item 'ivy-index ivy--index) - (delete item (symbol-value hist))))))))) + (let ((history-delete-duplicates t)) + (add-to-history + hist (propertize item 'ivy-index ivy--index)))))))) (defun ivy--cleanup () ;; Fixes a bug in ESS, #1660 @@ -2621,10 +2635,11 @@ The previous string is between `ivy-completion-beg' and `ivy-completion-end'." (ivy-state-collection ivy-last))) (minibuffer-completion-predicate (if (boundp 'ivy--minibuffer-pred) ivy--minibuffer-pred - (ivy-state-predicate ivy-last)))) - (completion--done str (cond ((eq ivy--minibuffer-try t) 'finished) - ((eq ivy-exit 'done) 'unknown) - ('exact)))) + (ivy-state-predicate ivy-last))) + (newstr (or (car-safe ivy--minibuffer-try) str))) + (completion--done newstr (cond ((eq ivy--minibuffer-try t) 'finished) + ((eq ivy-exit 'done) 'unknown) + ('exact)))) (setq ivy-completion-end (point)) (save-excursion (dolist (cursor fake-cursors) @@ -2637,24 +2652,47 @@ The previous string is between `ivy-completion-beg' and `ivy-completion-end'." (set-marker (overlay-get cursor 'point) (point)) (set-marker (overlay-get cursor 'mark) (point))))))) +(defalias 'ivy--face-list-p + (if (fboundp 'face-list-p) + #'face-list-p + (lambda (face) + (and (listp face) + (listp (cdr face)) + (not (keywordp (car face)))))) + "Compatibility shim for Emacs 25 `face-list-p'.") + +;; FIXME: Should this return the smallest such index instead? +;; Usually the two are equal, but perhaps there exist more +;; exotic applications of `completions-first-difference'. +;; +;; Completing files under a directory foo/ can have a first difference at +;; index 0 in some Emacs versions, and no such property in other versions. +;; So perhaps this function should return 0 instead of (length str) when no +;; property is found? That still follows the 'largest index' definition. (defun ivy-completion-common-length (str) - "Return the amount of characters that match in STR. - -`completion-all-completions' computes this and returns the result -via text properties. - -The first non-matching part is propertized: -- either with: (face (completions-first-difference)) -- or: (font-lock-face completions-first-difference)." - (let ((char-property-alias-alist '((face font-lock-face))) - (i (1- (length str)))) - (catch 'done - (while (>= i 0) - (when (equal (get-text-property i 'face str) - '(completions-first-difference)) - (throw 'done i)) - (cl-decf i)) - (throw 'done (length str))))) + "Return the length of the completion-matching prefix of STR. + +That is, return the largest index into STR at which either the +`face' or `font-lock-face' property value contains the face +`completions-first-difference'. +If no such index is found, return the length of STR. + +Typically the completion-matching parts of STR have previously been +propertized by `completion-all-completions', but then the base-size +returned by that function should be preferred over +`ivy-completion-common-length'." + (declare (obsolete "it is no longer used." "0.15.1")) + (let* ((char-property-alias-alist '((face font-lock-face))) + (cmn (length str)) + (i cmn)) + (when (> i 0) + (while (if (let ((face (get-text-property (1- i) 'face str))) + (or (eq 'completions-first-difference face) + (and (ivy--face-list-p face) + (memq 'completions-first-difference face)))) + (ignore (setq cmn (1- i))) + (setq i (previous-single-property-change i 'face str))))) + cmn)) (defun ivy-completion-in-region (start end collection &optional predicate) "An Ivy function suitable for `completion-in-region-function'. @@ -2662,43 +2700,44 @@ The function completes the text between START and END using COLLECTION. PREDICATE (a function called with no arguments) says when to exit. See `completion-in-region' for further information." (let* ((enable-recursive-minibuffers t) + (reg (- end start)) (str (buffer-substring-no-properties start end)) (completion-ignore-case (ivy--case-fold-p str)) (md (completion-metadata str collection predicate)) - (reg (- end start)) - (comps (completion-all-completions str collection predicate reg md)) (try (completion-try-completion str collection predicate reg md)) + (comps (completion-all-completions str collection predicate reg md)) + (last (last comps)) + (base-size (or (cdr last) 0)) (ivy--minibuffer-table collection) (ivy--minibuffer-pred predicate)) - (cond ((null comps) - (message "No matches")) - ((progn - (nconc comps nil) - (and (null (cdr comps)) - (string= str (car comps)))) - (message "Sole match")) + (when last (setcdr last ())) + ;; For no/sole match: + ;; give priority to boolean `try', falling back on `comps'. + (cond ((not (and try (or (eq try t) comps))) + (and (not completion-fail-discreetly) + completion-show-inline-help + (minibuffer-message "No matches")) + nil) + ((and try (or (eq try t) (equal (list str) comps))) + (goto-char end) + (let ((minibuffer-completion-table collection) + (minibuffer-completion-predicate predicate)) + (completion--done str 'finished "Sole match")) + t) (t (when (eq collection 'crm--collection-fn) (setq comps (delete-dups comps))) - (let* ((len (ivy-completion-common-length (car comps))) - (initial (cond ((= len 0) - "") - ((let ((str-len (length str))) - (when (> len str-len) - (setq len str-len) - str))) - (t - (substring str (- len)))))) - (delete-region (- end len) end) - (setq ivy-completion-beg (- end len)) + (let ((initial (substring str base-size)) + (base-pos (+ start base-size))) + (delete-region base-pos end) + (setq ivy-completion-beg base-pos) (setq ivy-completion-end ivy-completion-beg) (if (null (cdr comps)) - (progn + (let ((ivy--minibuffer-try try)) (unless (minibuffer-window-active-p (selected-window)) (setf (ivy-state-window ivy-last) (selected-window))) - (let ((ivy--minibuffer-try try)) - (ivy-completion-in-region-action - (substring-no-properties (car comps))))) + (ivy-completion-in-region-action + (substring-no-properties (car comps)))) (dolist (s comps) ;; Remove face `completions-first-difference'. (ivy--remove-props s 'face)) @@ -2712,6 +2751,9 @@ See `completion-in-region' for further information." (setq predicate nil)) (ivy-read (format "(%s): " str) collection :predicate predicate + ;; FIXME: The anchor is intrusive and not easily + ;; configurable by `ivy-initial-inputs-alist' or + ;; `ivy-hooks-alist'. :initial-input (concat (and (derived-mode-p #'emacs-lisp-mode) "^") @@ -2723,7 +2765,7 @@ See `completion-in-region' for further information." (when initial (insert initial)))) :caller 'ivy-completion-in-region))) - ;; Return value should be non-nil on valid completion; + ;; Return value should be t on valid completion; ;; see `completion-in-region'. t)))) @@ -2789,9 +2831,10 @@ Minibuffer bindings: ((ivy--regex-p preselect) (cl-position preselect candidates :test #'string-match-p))) 0)) + +;;; Implementation +;;;; Regexp -;;* Implementation -;;** Regex (defun ivy-re-match (re-seq str) "Return non-nil if RE-SEQ is matched by STR. @@ -3059,7 +3102,8 @@ This effectively sets the minimum height at this level to `ivy-height' and tries to ensure that it does not change depending on the number of candidates." :type 'boolean) -;;** Rest +;;;; Rest + (defcustom ivy-truncate-lines t "Minibuffer setting for `truncate-lines'." :type 'boolean) @@ -3188,23 +3232,17 @@ parts beyond their respective faces `ivy-confirm-face' and (std-props '(front-sticky t rear-nonsticky t field t read-only t)) (n-str (concat - (if (and (bound-and-true-p minibuffer-depth-indicate-mode) - (> (minibuffer-depth) 1)) - (format "[%d] " (minibuffer-depth)) - "") - (concat - (if (string-match "%d.*%d" ivy-count-format) - (format head - (1+ ivy--index) - (or (and (ivy-state-dynamic-collection ivy-last) + (and (bound-and-true-p minibuffer-depth-indicate-mode) + (> (minibuffer-depth) 1) + (format "[%d] " (minibuffer-depth))) + (let ((count (or (and (ivy-state-dynamic-collection ivy-last) ivy--full-length) - ivy--length)) - (format head - (or (and (ivy-state-dynamic-collection ivy-last) - ivy--full-length) - ivy--length))) - ivy--prompt-extra - tail))) + ivy--length))) + (if (string-match-p "%d.*%d" ivy-count-format) + (format head (min (1+ ivy--index) count) count) + (format head count))) + ivy--prompt-extra + tail)) (d-str (if ivy--directory (abbreviate-file-name ivy--directory) ""))) @@ -3373,25 +3411,29 @@ Otherwise, ~/ will move home." :type 'boolean) (defcustom ivy-dynamic-exhibit-delay-ms 0 - "Delay in ms before dynamic collections are refreshed" + "Delay in milliseconds before dynamic collections are refreshed." :type 'integer) -(defvar ivy--exhibit-timer nil) +(defvar ivy--exhibit-timer nil + "Timer for debouncing calls to `ivy--exhibit'.") + +(defvar ivy--queue-last-input nil + "Value of `ivy--input' from last `post-command-hook'.") (defun ivy--queue-exhibit () - "Insert Ivy completions display, possibly after a timeout for -dynamic collections. + "Refresh Ivy completions display, with debouncing. +This is like `ivy--exhibit', but dynamic collections are delayed by +`ivy-dynamic-exhibit-delay-ms' to avoid issues with rapid refreshes. Should be run via minibuffer `post-command-hook'." - (if (and (> ivy-dynamic-exhibit-delay-ms 0) - (ivy-state-dynamic-collection ivy-last)) - (progn - (when ivy--exhibit-timer (cancel-timer ivy--exhibit-timer)) - (setq ivy--exhibit-timer - (run-with-timer - (/ ivy-dynamic-exhibit-delay-ms 1000.0) - nil - 'ivy--exhibit))) - (ivy--exhibit))) + (if (or (<= ivy-dynamic-exhibit-delay-ms 0) + (not (ivy-state-dynamic-collection ivy-last)) + (equal ivy--queue-last-input + (setq ivy--queue-last-input (ivy--input)))) + (ivy--exhibit) + (when ivy--exhibit-timer (cancel-timer ivy--exhibit-timer)) + (setq ivy--exhibit-timer + (run-with-timer (/ ivy-dynamic-exhibit-delay-ms 1000.0) + nil #'ivy--exhibit)))) (defalias 'ivy--file-local-name (if (fboundp 'file-local-name) @@ -3419,8 +3461,8 @@ The function was added in Emacs 26.1.") (defun ivy--exhibit () "Insert Ivy completions display. -Should be run via minibuffer `post-command-hook'." - (when (memq 'ivy--queue-exhibit post-command-hook) +Should be run in the minibuffer." + (when (memq #'ivy--queue-exhibit post-command-hook) (let ((inhibit-field-text-motion nil)) (constrain-to-field nil (point-max))) (ivy-set-text (ivy--input)) @@ -3745,7 +3787,12 @@ The alist VAL is a sorting function with the signature of (let ((default-directory ivy--directory)) (sort (copy-sequence candidates) #'file-newer-than-file-p))) -(defvar ivy--flx-featurep (require 'flx nil 'noerror)) +(defvar ivy--flx-available-p) +(defun ivy--flx-available-p () + "Try to load package `flx' once; return non-nil on success." + (if (boundp 'ivy--flx-available-p) + ivy--flx-available-p + (setq ivy--flx-available-p (require 'flx nil t)))) (defun ivy--sort (name candidates) "Re-sort candidates by NAME. @@ -3753,8 +3800,8 @@ All CANDIDATES are assumed to match NAME." (let (fun) (cond ((setq fun (ivy-alist-setting ivy-sort-matches-functions-alist)) (funcall fun name candidates)) - ((and ivy--flx-featurep - (eq ivy--regex-function 'ivy--regex-fuzzy)) + ((and (eq ivy--regex-function #'ivy--regex-fuzzy) + (ivy--flx-available-p)) (ivy--flx-sort name candidates)) (t candidates)))) @@ -3853,8 +3900,8 @@ CANDS are the current candidates." 0)) ((and (not empty) (not (eq caller 'swiper)) - (not (and ivy--flx-featurep - (eq ivy--regex-function 'ivy--regex-fuzzy) + (not (and (eq ivy--regex-function #'ivy--regex-fuzzy) + (ivy--flx-available-p) ;; Limit to configured number of candidates (null (nthcdr ivy-flx-limit cands)))) ;; If there was a preselected candidate, don't try to @@ -4128,8 +4175,8 @@ with the extended highlighting of `ivy-format-function-line'." (defun ivy--highlight-fuzzy (str) "Highlight STR, using the fuzzy method." - (if (and ivy--flx-featurep - (eq (ivy-alist-setting ivy-re-builders-alist) 'ivy--regex-fuzzy)) + (if (and (eq (ivy-alist-setting ivy-re-builders-alist) #'ivy--regex-fuzzy) + (ivy--flx-available-p)) (let ((flx-name (string-remove-prefix "^" ivy-text))) (ivy--flx-propertize (cons (flx-score str flx-name ivy--flx-cache) str))) @@ -4620,7 +4667,7 @@ BUFFER may be a string or nil." (defvar ivy-switch-buffer-map (let ((map (make-sparse-keymap))) - (ivy-define-key map (kbd "C-k") 'ivy-switch-buffer-kill) + (ivy-define-key map (kbd "C-k") #'ivy-switch-buffer-kill) map)) (defun ivy-switch-buffer-kill () @@ -4871,16 +4918,12 @@ The \"pulse\" duration is determined by `ivy-pulse-delay'." (setq ivy--pulse-overlay nil))) (defun ivy-kill-ring-save () - "Store the current candidates into the kill ring. + "Save the current candidates in the kill ring. If the region is active, forward to `kill-ring-save' instead." (interactive) - (if (region-active-p) - (call-interactively 'kill-ring-save) - (kill-new - (mapconcat - #'identity - ivy--old-cands - "\n")))) + (if (use-region-p) + (call-interactively #'kill-ring-save) + (kill-new (string-join ivy--old-cands "\n")))) (defun ivy-insert-current () "Make the current candidate into current input. @@ -4894,7 +4937,7 @@ Don't finish completion." (ivy-state-current ivy-last) 0 end)))) (defun ivy-insert-current-full () - "Insert the full Yank the current directory into the minibuffer." + "Insert the current directory into the minibuffer." (interactive) (insert ivy--directory)) @@ -4951,12 +4994,15 @@ This list can be rotated with `ivy-rotate-preferred-builders'." ((symbolp history) (set history (delete current (symbol-value history)))) ((ring-p history) + ;; `ring-p' is autoloaded. + (declare-function ring-member "ring") + (declare-function ring-remove "ring") (ring-remove history (ring-member history current))))) (ivy--kill-current-candidate))) (defvar ivy-reverse-i-search-map (let ((map (make-sparse-keymap))) - (ivy-define-key map (kbd "C-k") 'ivy-reverse-i-search-kill) + (ivy-define-key map (kbd "C-k") #'ivy-reverse-i-search-kill) map)) (defun ivy-history-contents (history) @@ -4968,6 +5014,8 @@ Also set `ivy--reverse-i-search-history' to HISTORY." ((symbolp history) (copy-sequence (symbol-value history))) ((ring-p history) + ;; `ring-p' is autoloaded. + (declare-function ring-elements "ring") (ring-elements history)) ((sequencep history) (copy-sequence history)) @@ -5019,8 +5067,9 @@ You can also delete an element from history with \\[ivy-reverse-i-search-kill]." (setf (ivy-state-dynamic-collection ivy-last) nil)) (setq ivy--all-candidates (ivy--filter ivy-text ivy--all-candidates)))) + +;;; Occur -;;* Occur (defvar-local ivy-occur-last nil "Buffer-local value of `ivy-last'. Can't re-use `ivy-last' because using e.g. `swiper' in the same @@ -5028,21 +5077,21 @@ buffer would modify `ivy-last'.") (defvar ivy-occur-mode-map (let ((map (make-sparse-keymap))) - (ivy-define-key map [mouse-1] 'ivy-occur-click) - (ivy-define-key map (kbd "RET") 'ivy-occur-press-and-switch) - (ivy-define-key map (kbd "j") 'ivy-occur-next-line) - (ivy-define-key map (kbd "k") 'ivy-occur-previous-line) - (define-key map (kbd "h") 'backward-char) - (define-key map (kbd "l") 'forward-char) - (ivy-define-key map (kbd "f") 'ivy-occur-press) - (ivy-define-key map (kbd "g") 'ivy-occur-revert-buffer) - (ivy-define-key map (kbd "a") 'ivy-occur-read-action) - (ivy-define-key map (kbd "o") 'ivy-occur-dispatch) - (ivy-define-key map (kbd "c") 'ivy-occur-toggle-calling) - (define-key map (kbd "q") 'quit-window) - (define-key map (kbd "R") 'read-only-mode) - (ivy-define-key map (kbd "C-d") 'ivy-occur-delete-candidate) - (ivy-define-key map (kbd "F") 'ivy-occur-flush-lines) + (ivy-define-key map [mouse-1] #'ivy-occur-click) + (ivy-define-key map (kbd "RET") #'ivy-occur-press-and-switch) + (ivy-define-key map (kbd "j") #'ivy-occur-next-line) + (ivy-define-key map (kbd "k") #'ivy-occur-previous-line) + (define-key map (kbd "h") #'backward-char) + (define-key map (kbd "l") #'forward-char) + (ivy-define-key map (kbd "f") #'ivy-occur-press) + (ivy-define-key map (kbd "g") #'ivy-occur-revert-buffer) + (ivy-define-key map (kbd "a") #'ivy-occur-read-action) + (ivy-define-key map (kbd "o") #'ivy-occur-dispatch) + (ivy-define-key map (kbd "c") #'ivy-occur-toggle-calling) + (define-key map (kbd "q") #'quit-window) + (define-key map (kbd "R") #'read-only-mode) + (ivy-define-key map (kbd "C-d") #'ivy-occur-delete-candidate) + (ivy-define-key map (kbd "F") #'ivy-occur-flush-lines) map) "Keymap for Ivy Occur mode.") diff --git a/elpa/ivy-20240829.1723/ivy.info b/elpa/ivy-20250417.1209/ivy.info similarity index 85% rename from elpa/ivy-20240829.1723/ivy.info rename to elpa/ivy-20250417.1209/ivy.info index 7588ce70..12569d8f 100644 --- a/elpa/ivy-20240829.1723/ivy.info +++ b/elpa/ivy-20250417.1209/ivy.info @@ -1,6 +1,6 @@ This is ivy.info, produced by makeinfo version 6.8 from ivy.texi. -Ivy manual, version 0.14.2 +Ivy manual, version 0.15.1 Ivy is an interactive interface for completion in Emacs. Emacs uses completion mechanism in a variety of contexts: code, menus, commands, @@ -11,7 +11,7 @@ available choices while previewing in the minibuffer. Selecting the final candidate is either through simple keyboard character inputs or through powerful regular expressions. - Copyright (C) 2015–2024 Free Software Foundation, Inc. + Copyright (C) 2015–2025 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -170,7 +170,7 @@ Customizability Discoverability ............... - Ivy displays easily discoverable commands through the hydra + Ivy displays easily discoverable commands through the Hydra facility. ‘C-o’ in the minibuffer displays a hydra menu. It opens up within an expanded minibuffer area. Each menu item comes with short documentation strings and highlighted one-key completions. @@ -206,7 +206,7 @@ File: ivy.info, Node: Installing from Emacs Package Manager, Next: Installing Ivy is installed alongside the ‘counsel’ package, which is available from two different package archives, GNU ELPA and MELPA. For the latest stable version, use the GNU ELPA archive. For the latest development -snaphshot, use the GNU-devel ELPA archive. +snapshot, use the GNU-devel ELPA archive. Ivy is split into three packages: ‘ivy’, ‘swiper’ and ‘counsel’; by installing ‘counsel’, the other two are brought in as dependencies. If @@ -234,21 +234,21 @@ File: ivy.info, Node: Installing from the Git repository, Prev: Installing fro Why install from Git? ..................... - • No need to wait for GNU ELPA / MELPA builds - • Easy to revert to previous versions - • Contribute to Ivy’s development; send patches; pull requests + • No need to wait for GNU ELPA / MELPA builds. + • Easy to revert to previous versions. + • Contribute to Ivy’s development; send patches; pull requests. Configuration steps ................... First clone the Swiper repository with: - cd ~/git && git clone https://github.com/abo-abo/swiper - cd swiper && make compile + cd ~/git && git clone 'https://github.com/abo-abo/swiper.git' + cd swiper && make deps all Second, add these lines to the Emacs init file: - (add-to-list 'load-path "~/git/swiper/") + (add-to-list 'load-path "~/git/swiper") (require 'ivy) Then, update the code with: @@ -280,13 +280,13 @@ File: ivy.info, Node: Basic customization, Up: Getting started Here are some basic settings particularly useful for new Ivy users: - (setq ivy-use-virtual-buffers t) - (setq ivy-count-format "(%d/%d) ") + (setopt ivy-use-virtual-buffers t) + (setopt ivy-count-format "(%d/%d) ") - If you want, you can go without any customizations at all. The above -settings are the most bang for the buck in terms of customization. So -users that typically don’t like customize a lot are advised to look at -these settings first. + If you want, you can go without any customizations at all. The +settings above give the most bang for the buck in terms of +customization. So users that typically don’t like customizing a lot are +advised to look at these settings first. For more advanced customizations, refer to ‘M-x describe-variable’ documentation. @@ -308,53 +308,53 @@ File: ivy.info, Node: Global key bindings, Next: Minibuffer key bindings, Up: 4.1 Global key bindings ======================= -Here is a list of commands that are useful to be bound globally, along -with some sample bindings: +Here is a list of commands that are useful to bind globally, along with +some sample bindings: Ivy-based interface to standard commands ........................................ - (global-set-key (kbd "C-s") 'swiper-isearch) - (global-set-key (kbd "M-x") 'counsel-M-x) - (global-set-key (kbd "C-x C-f") 'counsel-find-file) - (global-set-key (kbd "M-y") 'counsel-yank-pop) - (global-set-key (kbd " f") 'counsel-describe-function) - (global-set-key (kbd " v") 'counsel-describe-variable) - (global-set-key (kbd " l") 'counsel-find-library) - (global-set-key (kbd " i") 'counsel-info-lookup-symbol) - (global-set-key (kbd " u") 'counsel-unicode-char) - (global-set-key (kbd " j") 'counsel-set-variable) - (global-set-key (kbd "C-x b") 'ivy-switch-buffer) - (global-set-key (kbd "C-c v") 'ivy-push-view) - (global-set-key (kbd "C-c V") 'ivy-pop-view) + (keymap-global-set "C-s" #'swiper-isearch) + (keymap-global-set "M-x" #'counsel-M-x) + (keymap-global-set "C-x C-f" #'counsel-find-file) + (keymap-global-set "M-y" #'counsel-yank-pop) + (keymap-global-set " f" #'counsel-describe-function) + (keymap-global-set " v" #'counsel-describe-variable) + (keymap-global-set " o" #'counsel-describe-symbol) + (keymap-global-set " l" #'counsel-find-library) + (keymap-global-set " i" #'counsel-info-lookup-symbol) + (keymap-global-set " u" #'counsel-unicode-char) + (keymap-global-set " j" #'counsel-set-variable) + (keymap-global-set "C-x b" #'ivy-switch-buffer) + (keymap-global-set "C-c v" #'ivy-push-view) + (keymap-global-set "C-c V" #'ivy-pop-view) Ivy-based interface to shell and system tools ............................................. - (global-set-key (kbd "C-c c") 'counsel-compile) - (global-set-key (kbd "C-c g") 'counsel-git) - (global-set-key (kbd "C-c j") 'counsel-git-grep) - (global-set-key (kbd "C-c L") 'counsel-git-log) - (global-set-key (kbd "C-c k") 'counsel-rg) - (global-set-key (kbd "C-c m") 'counsel-linux-app) - (global-set-key (kbd "C-c n") 'counsel-fzf) - (global-set-key (kbd "C-x l") 'counsel-locate) - (global-set-key (kbd "C-c J") 'counsel-file-jump) - (global-set-key (kbd "C-S-o") 'counsel-rhythmbox) - (global-set-key (kbd "C-c w") 'counsel-wmctrl) + (keymap-global-set "C-c c" #'counsel-compile) + (keymap-global-set "C-c g" #'counsel-git) + (keymap-global-set "C-c j" #'counsel-git-grep) + (keymap-global-set "C-c L" #'counsel-git-log) + (keymap-global-set "C-c k" #'counsel-rg) + (keymap-global-set "C-c m" #'counsel-linux-app) + (keymap-global-set "C-c n" #'counsel-fzf) + (keymap-global-set "C-x l" #'counsel-locate) + (keymap-global-set "C-c J" #'counsel-file-jump) + (keymap-global-set "C-S-o" #'counsel-rhythmbox) + (keymap-global-set "C-c w" #'counsel-wmctrl) Ivy-resume and other commands ............................. ‘ivy-resume’ resumes the last Ivy-based completion. - (global-set-key (kbd "C-c C-r") 'ivy-resume) - (global-set-key (kbd "C-c b") 'counsel-bookmark) - (global-set-key (kbd "C-c d") 'counsel-descbinds) - (global-set-key (kbd "C-c g") 'counsel-git) - (global-set-key (kbd "C-c o") 'counsel-outline) - (global-set-key (kbd "C-c t") 'counsel-load-theme) - (global-set-key (kbd "C-c F") 'counsel-org-file) + (keymap-global-set "C-c C-r" #'ivy-resume) + (keymap-global-set "C-c b" #'counsel-bookmark) + (keymap-global-set "C-c d" #'counsel-descbinds) + (keymap-global-set "C-c o" #'counsel-outline) + (keymap-global-set "C-c t" #'counsel-load-theme) + (keymap-global-set "C-c F" #'counsel-org-file) You can also enable ‘counsel-mode’ to make some global key binding remapping for you. @@ -473,12 +473,12 @@ extends usability of lists in Emacs. This is useful e.g. when you call ‘find-file’ to create a new file, but the desired name matches an existing file. In that case, using ‘C-j’ would select that existing file, which isn’t what you - want - use this command instead. + want — use this command instead. ‘C-'’ (‘ivy-avy’) ................. - Uses avy to select one of the candidates on the current candidate + Uses Avy to select one of the candidates on the current candidate page. This can often be faster than multiple ‘C-n’ or ‘C-p’ keystrokes followed by ‘C-m’. @@ -515,7 +515,7 @@ that use the ‘ivy-read’ API, rather than the built-in ‘completing-read’. For example, during the ‘counsel-rhythmbox’ completion, press ‘C-M-o e’ to en-queue the selected candidate, followed by ‘C-n C-m’ - to play the next candidate - the current action reverts to the + to play the next candidate — the current action reverts to the default one after ‘C-M-o’. ‘C-M-n’ (‘ivy-next-line-and-call’) @@ -558,8 +558,8 @@ File: ivy.info, Node: Key bindings that alter the minibuffer input, Next: Othe Cycles forward through the Ivy command history. Ivy updates an internal history list after each action. When this - history list is empty, ‘M-n’ inserts symbol (or URL) at point into - the minibuffer. + history list is empty, ‘M-n’ inserts the symbol (or URL) at point + into the minibuffer. ‘M-p’ (‘ivy-previous-history-element’) ...................................... @@ -757,10 +757,10 @@ File: ivy.info, Node: Completion Styles, Next: Customization, Prev: Key bindi 5 Completion Styles ******************* -Ivy’s completion functions rely on a regex builder - a function that -transforms a string input to a string regex. All current candidates -simply have to match this regex. Each collection can be assigned its -own regex builder by customizing ‘ivy-re-builders-alist’. +Ivy’s completion functions rely on a regexp builder — a function that +transforms a string input into a string regexp. All current candidates +simply have to match this regexp. Each collection can be assigned its +own regexp builder by customizing ‘ivy-re-builders-alist’. The keys of this alist are collection names, and the values are one of the following: @@ -778,7 +778,7 @@ their own key. (setq ivy-re-builders-alist '((t . ivy--regex-plus))) - This example shows a custom regex builder assigned to file name + This example shows a custom regexp builder assigned to file name completion: (setq ivy-re-builders-alist @@ -788,14 +788,14 @@ completion: Here, ‘read-file-name-internal’ is a function that is passed as the second argument to ‘completing-read’ for file name completion. - The regex builder resolves as follows (in order of priority): + The regexp builder resolves as follows (in order of priority): 1. ‘re-builder’ argument passed to ‘ivy-read’. 2. ‘collection’ argument passed to ‘ivy-read’ is a function and has an - entry on ‘ivy-re-builders-alist’. - 3. ‘caller’ argument passed to ‘ivy-read’ has an entry on + entry in ‘ivy-re-builders-alist’. + 3. ‘caller’ argument passed to ‘ivy-read’ has an entry in ‘ivy-re-builders-alist’. - 4. ‘this-command’ has an entry on ‘ivy-re-builders-alist’. - 5. ‘t’ has an entry on ‘ivy-re-builders-alist’. + 4. ‘this-command’ has an entry in ‘ivy-re-builders-alist’. + 5. ‘t’ has an entry in ‘ivy-re-builders-alist’. 6. ‘ivy--regex’. * Menu: @@ -813,22 +813,22 @@ File: ivy.info, Node: ivy--regex-plus, Next: ivy--regex-ignore-order, Up: Com ‘ivy--regex-plus’ is Ivy’s default completion method. ‘ivy--regex-plus’ matches by splitting the input by spaces and -rebuilding it into a regex. +rebuilding it into a regexp. As the search string is typed in Ivy’s minibuffer, it is transformed -into valid regex syntax. If the string is ‘"for example"’, it is -transformed into +into valid regexp syntax. If the string is ‘"for example"’, it is +transformed into: "\\(for\\).*\\(example\\)" - which in regex terminology matches ‘"for"’ followed by a wild card + which in regexp terminology matches ‘"for"’ followed by a wild card and then ‘"example"’. Note how Ivy uses the space character to build wild cards. To match a literal white space, use an extra space. So to match one space type two spaces, to match two spaces type three spaces, and so on. - As Ivy transforms typed characters into regex strings, it provides an -intuitive feedback through font highlights. + As Ivy transforms typed characters into regexp strings, it provides +an intuitive feedback through font highlights. Ivy supports regexp negation with ‘"!"’. For example, ‘"define key ! ivy quit"’ first selects everything matching ‘"define.*key"’, then @@ -838,7 +838,7 @@ regexp. Since Ivy treats minibuffer input as a regexp, the standard regexp identifiers work: ‘"^"’, ‘"$"’, ‘"\b"’ or ‘"[a-z]"’. The exceptions are -spaces, which translate to ‘".*"’, and ‘"!"’ that signal the beginning +spaces, which translate to ‘".*"’, and ‘"!"’, that signals the beginning of a negation group.  @@ -913,18 +913,17 @@ File: ivy.info, Node: Faces, Next: Defcustoms, Up: Customization Highlights the "(confirm)" part of the prompt. - When ‘confirm-nonexistent-file-or-buffer’ set to ‘t’, then - confirming non-existent files in ‘ivy-mode’ requires an additional - ‘RET’. + When ‘confirm-nonexistent-file-or-buffer’ is set to ‘t’, confirming + non-existent files in ‘ivy-mode’ requires an additional ‘RET’. The confirmation prompt will use this face. For example: - (setq confirm-nonexistent-file-or-buffer t) + (setopt confirm-nonexistent-file-or-buffer t) - Then call ‘find-file’, enter "eldorado" and press ‘RET’ - the - prompt will be appended with "(confirm)". Press ‘RET’ once more to + Then call ‘find-file’, enter "eldorado" and press ‘RET’ — the + prompt will have "(confirm)" appended. Press ‘RET’ once more to confirm, or any key to continue the completion. ‘ivy-match-required-face’ @@ -937,8 +936,8 @@ File: ivy.info, Node: Faces, Next: Defcustoms, Up: Customization constraint. For example, call ‘describe-variable’, enter "waldo" and press - ‘RET’ - "(match required)" is prompted. Press any key for the - prompt to disappear. + ‘RET’ — "(match required)" is indicated. Press any key for the + indication to disappear. ‘ivy-subdir’ ............ @@ -955,12 +954,12 @@ File: ivy.info, Node: Faces, Next: Defcustoms, Up: Customization Highlights virtual buffers when completing buffer names. - Virtual buffers correspond to bookmarks and recent files list, - ‘recentf’. + Virtual buffers correspond to bookmarks and the recent files list + from ‘recentf’. Enable virtual buffers with: - (setq ivy-use-virtual-buffers t) + (setopt ivy-use-virtual-buffers t) ‘ivy-modified-buffer’ ..................... @@ -981,25 +980,25 @@ File: ivy.info, Node: Defcustoms, Next: Actions, Prev: Faces, Up: Customizat ============== -- User Option: ivy-count-format - A string that specifies display of number of candidates and current - candidate, if one exists. + A string controlling how to display the number of candidates and + the current candidate, if one exists. - The number of matching candidates by default is shown as a right- - padded integer value. + The number of matching candidates by default is shown as a + right-padded integer value. To disable showing the number of candidates: - (setq ivy-count-format "") + (setopt ivy-count-format "") To also display the current candidate: - (setq ivy-count-format "(%d/%d) ") + (setopt ivy-count-format "(%d/%d) ") The ‘format’-style switches this variable uses are described in the ‘format’ documentation. -- User Option: ivy-display-style - Specifies highlighting candidates in the minibuffer. + Controls how to highlight candidates in the minibuffer. The default setting is ‘fancy’. @@ -1011,7 +1010,7 @@ File: ivy.info, Node: Defcustoms, Next: Actions, Prev: Faces, Up: Customizat This is usually the case when there is no text left to delete, i.e., when ‘DEL’ is typed at the beginning of the minibuffer. - The default behavior is to quit the completion after ‘DEL’ – a + The default behavior is to quit the completion after ‘DEL’ — a handy key to invoke after mistakenly triggering a completion. Another common option is ‘ignore’, which does nothing. @@ -1062,9 +1061,9 @@ File: ivy.info, Node: How can different actions be called?, Next: How to modif • ‘C-m’ (‘ivy-done’) calls the current action. • ‘M-o’ (‘ivy-dispatching-done’) presents available actions for - selection, calls it after selection, and then exits. + selection, calls the selected one, and then exits. • ‘C-M-o’ (‘ivy-dispatching-call’) presents available actions for - selection, calls it after selection, and then does not exit. + selection, calls the selected one, and then does not exit.  File: ivy.info, Node: How to modify the actions list?, Next: Example - add two actions to each command, Prev: How can different actions be called?, Up: Actions @@ -1078,7 +1077,7 @@ all commands at once. Usually, the command has only one default action. The convention is to use single letters when selecting a command, and the letter ‘o’ is -designated for the default command. This way, ‘M-o o’ should be always +designated for the default command. This way, ‘M-o o’ should always be equivalent to ‘C-m’.  @@ -1087,7 +1086,7 @@ File: ivy.info, Node: Example - add two actions to each command, Next: Example 6.3.4 Example - add two actions to each command ----------------------------------------------- -The first action inserts the current candidate into the Ivy window - the +The first action inserts the current candidate into the Ivy window — the window from which ‘ivy-read’ was called. The second action copies the current candidate to the kill ring. @@ -1119,8 +1118,8 @@ File: ivy.info, Node: How to undo adding the two actions, Next: How to add act .......................................... Since ‘ivy-set-actions’ modifies the internal dictionary with new data, -set the extra actions list to ‘nil’ by assigning ‘nil’ value to the ‘t’ -key as follows: +set the extra actions list to ‘nil’ by assigning a ‘nil’ value to the +‘t’ key as follows: (ivy-set-actions t nil) @@ -1177,11 +1176,11 @@ To examine each action with each candidate in a key-efficient way, try: • Call ‘my-command-with-3-actions’ • Press ‘C-c C-o’ to close the completion window and move to an - ivy-occur buffer + ‘ivy-occur’ buffer • Press ‘kkk’ to move to the first candidate, since the point is most likely at the end of the buffer • Press ‘oo’ to call the first action - • Press ‘oj’ and ‘ok’ to call the second and the third actions + • Press ‘oj’ and ‘ok’ to call the second and third actions • Press ‘j’ to move to the next candidate • Press ‘oo’, ‘oj’, ‘ok’ • Press ‘j’ to move to the next candidate @@ -1203,31 +1202,31 @@ File: ivy.info, Node: Packages, Prev: Actions, Up: Customization ‘magit’ ....... - Uses ivy by default if Ivy is installed. + Uses Ivy by default if Ivy is installed. ‘find-file-in-project’ ...................... - Uses ivy by default if Ivy is installed. + Uses Ivy by default if Ivy is installed. ‘projectile’ ............ - Projectile requires this setting for ivy completion: + Projectile requires this setting for Ivy completion: - (setq projectile-completion-system 'ivy) + (setopt projectile-completion-system 'ivy) ‘helm-make’ ........... - Helm-make requires this setting for ivy completion. + Helm-make requires this setting for Ivy completion. - (setq helm-make-completion-method 'ivy) + (setopt helm-make-completion-method 'ivy) automatically integrated packages ................................. - Ivy re-uses the following packages if they are installed: ‘avy’, + Ivy reuses the following packages if they are installed: ‘avy’, ‘amx’ or ‘smex’, ‘flx’, and ‘wgrep’.  @@ -1254,7 +1253,7 @@ that work here: ‘C-j’ (‘ivy-alt-done’) ...................... - On a directory, restarts completion from that directory. + On a directory, restart completion from that directory. On a file or ‘./’, exit completion with the selected candidate. @@ -1283,18 +1282,19 @@ that work here: ‘C-M-y’ (‘ivy-insert-current-full’) ................................... - Insert the current full path, in case you want to edit a part of + Insert the current full file name, in case you want to edit part of it. ‘M-r’ (‘ivy-toggle-regexp-quote’) ................................. - Toggle between input as regexp or not. + Toggle between input as regexp or plain text. - Switch to matching literally since file names include ‘.’, which is - for matching any char in regexp mode. + This can help with matching file names literally, since they often + include ‘.’ in their name, which is a special character in regexp + mode. -- User Option: ivy-extra-directories - Decide if you want to see ‘../’ and ‘./’ during file name + Decide whether you want to see ‘../’ and ‘./’ during file name completion. Reason to remove: ‘../’ is the same as ‘DEL’. @@ -1339,16 +1339,16 @@ File: ivy.info, Node: Using TRAMP, Up: File Name Completion ‘/ C-j’ ....... - Move the the local root directory. + Move to the local root directory. ‘~~’ .... Move to the local home directory. - From any directory, with the empty input, inputting ‘/ssh:’ and -pressing ‘C-j’ (or ‘RET’, which is the same thing) completes for host -and user names. + From any directory, with the empty input, inserting ‘/ssh:’ and +pressing ‘C-j’ (or ‘RET’, which is the same thing) completes host and +user names. For ‘/ssh:user@’ input, completes the domain name. @@ -1372,15 +1372,15 @@ File: ivy.info, Node: Buffer Name Completion, Next: Counsel commands, Prev: F ========================== -- User Option: ivy-use-virtual-buffers - When non-nil, add ‘recentf-mode’ and bookmarks to + When non-‘nil’, add ‘recentf-mode’ and bookmarks to ‘ivy-switch-buffer’ completion candidates. - Adding this to Emacs init file: + Adding this to the Emacs init file: - (setq ivy-use-virtual-buffers t) + (setopt ivy-use-virtual-buffers t) will add additional virtual buffers to the buffers list for recent files. Selecting such virtual buffers, which are highlighted with - ‘ivy-virtual’ face, will open the corresponding file. + ‘ivy-virtual’ face, will visit the corresponding file.  File: ivy.info, Node: Counsel commands, Prev: Buffer Name Completion, Up: Commands @@ -1406,10 +1406,9 @@ File: ivy.info, Node: API, Next: Variable Index, Prev: Commands, Up: Top ***** The main (and only) entry point is the ‘ivy-read’ function. It takes -two required arguments and many optional arguments that can be passed by -a key. The optional ‘:action’ argument is highly recommended for -features such as multi-actions, non-exiting actions, ‘ivy-occur’ and -‘ivy-resume’. +two required arguments and many optional keyword arguments. The +optional ‘:action’ argument is highly recommended for features such as +multi-actions, non-exiting actions, ‘ivy-occur’ and ‘ivy-resume’. * Menu: @@ -1448,14 +1447,14 @@ File: ivy.info, Node: Optional arguments for ivy-read, Next: Example - counsel ........... Is a function to filter the initial collection. It has to be - compatible with ‘all-completions’. Tip: most of the time, it’s - simpler to just apply this filter to the ‘collection’ argument - itself, e.g. ‘(cl-remove-if-not predicate collection)’. + compatible with ‘all-completions’. Tip: sometimes it can be + simpler to pre-filter the ‘collection’ argument itself, e.g.: + ‘(cl-remove-if-not predicate collection)’. ‘require-match’ ............... - When set to a non-nil value, input must match one of the + When set to a non-‘nil’ value, the input must match one of the candidates. Custom input is not accepted. ‘initial-input’ @@ -1479,10 +1478,10 @@ File: ivy.info, Node: Optional arguments for ivy-read, Next: Example - counsel When set to an integer value, select the candidate with that index value. - When set to any other non-nil value, select the first candidate + When set to any other non-‘nil’ value, select the first candidate matching this value. Comparison is first done with ‘equal’. If - this fails, and when applicable, match ‘preselect’ as a regular - expression. + this fails, and when applicable, ‘preselect’ is interpreted as a + regular expression. Every time the input becomes empty, the item corresponding to ‘preselect’ is selected. @@ -1504,8 +1503,9 @@ File: ivy.info, Node: Optional arguments for ivy-read, Next: Example - counsel ‘sort’ ...... - When non-nil, use ‘ivy-sort-functions-alist’ to sort the collection - as long as the collection is not larger than ‘ivy-sort-max-size’. + When non-‘nil’, use ‘ivy-sort-functions-alist’ to sort the + collection as long as the collection is not larger than + ‘ivy-sort-max-size’. ‘action’ ........ @@ -1523,24 +1523,24 @@ File: ivy.info, Node: Optional arguments for ivy-read, Next: Example - counsel ‘re-builder’ ............ - Is a function that takes a string and returns a valid regex. See + Is a function that takes a string and returns a valid regexp. See ‘Completion Styles’ for details. ‘matcher’ ......... - Is a function that takes a regex string and a list of strings and - returns a list of strings matching the regex. Any ordinary Emacs + Is a function that takes a regexp string and a list of strings and + returns a list of strings matching the regexp. Any ordinary Emacs matching function will suffice, yet finely tuned matching functions can be used. See ‘counsel-find-file’ for an example usage. ‘dynamic-collection’ .................... - When non-nil, ‘collection’ will be used to dynamically generate the - candidates each time the input changes, instead of being used once - statically with ‘all-completions’ to generate a list of strings. - See ‘counsel-locate’ for an example usage. + When non-‘nil’, ‘collection’ will be used to dynamically generate + the candidates each time the input changes, instead of being used + once statically with ‘all-completions’ to generate a list of + strings. See ‘counsel-locate’ for an example usage. ‘caller’ ........ @@ -1558,12 +1558,12 @@ This is a typical example of a function with a non-async collection, which is a collection where all the strings in the collection are known prior to any input from the user. - Only the first two arguments (along with ‘action’) are essential - + Only the first two arguments (along with ‘action’) are essential — the rest of the arguments are for fine-tuning, and could be omitted. - The ‘action’ argument could also be omitted - but then ‘ivy-read’ -would do nothing except returning the string result, which you could -later use yourself. However, it’s recommended that you use the ‘action’ + The ‘action’ argument could also be omitted — but then ‘ivy-read’ +would do nothing except return the string result, which you could later +use yourself. However, it’s recommended that you use the ‘action’ argument. (defun counsel-describe-function () @@ -1581,8 +1581,7 @@ argument. :history 'counsel-describe-symbol-history :require-match t :action (lambda (x) - (describe-function - (intern x))) + (describe-function (intern x))) :caller 'counsel-describe-function)) Here are the interesting features of the above function, in the order @@ -1593,18 +1592,18 @@ that they appear: • The ‘keymap’ argument is for a custom keymap to supplement ‘ivy-minibuffer-map’. • The ‘preselect’ is provided by ‘ivy-thing-at-point’, which returns - a symbol near the point. Ivy then selects the first candidate from - the collection that matches this symbol. To select this - pre-selected candidate, a ‘RET’ will suffice. No further user - input is necessary. + a symbol near point. Ivy then selects the first candidate from the + collection that matches this symbol. To select this preselected + candidate, a ‘RET’ will suffice. No further user input is + necessary. • The ‘history’ argument is for keeping the history of this command separate from the common history in ‘ivy-history’. • The ‘require-match’ is set to ‘t’ since it doesn’t make sense to - call ‘describe-function’ on an un-interned symbol. + call ‘describe-function’ on an uninterned symbol. • The ‘action’ argument calls ‘describe-function’ on the interned selected candidate. • The ‘caller’ argument identifies this completion session. This is - important, since with the collection being a list of strings and + important because, with the collection being a list of strings and not a function name, the only other way for ‘ivy-read’ to identify "who’s calling" and to apply the appropriate customizations is to examine ‘this-command’. But ‘this-command’ would be modified if @@ -1617,12 +1616,12 @@ File: ivy.info, Node: Example - counsel-locate, Next: Example - ivy-read-with- ============================== This is a typical example of a function with an async collection. Since -the collection function cannot pre-compute all the locatable files in +the collection function cannot precompute all the locatable files in memory within reasonable limits (time or memory), it relies on user input to filter the universe of possible candidates to a manageable size while also continuing to search asynchronously for possible candidates. -Both the filtering and searching continues with each character change of -the input with rapid updates to the collection presented without idle +Both filtering and searching continue with each character change in the +input with rapid updates to the displayed collection without idle waiting times. This live update will continue as long as there are likely candidates. Eventually updates to the minibuffer will stop after user input, filtering, and searching have exhausted looking for possible @@ -1640,9 +1639,8 @@ narrowing) or select a candidate from the visible collection. (progn (counsel--async-command (format "locate %s '%s'" - (mapconcat #'identity counsel-locate-options " ") - (counsel--elisp-to-pcre - (ivy--regex str)))) + (string-join counsel-locate-options " ") + (counsel--elisp-to-pcre (ivy--regex str)))) '("" "working...")))) ;;;###autoload @@ -1655,8 +1653,8 @@ narrowing) or select a candidate from the visible collection. :dynamic-collection t :history 'counsel-locate-history :action (lambda (file) - (with-ivy-window - (when file + (when file + (with-ivy-window (find-file file)))) :unwind #'counsel-delete-process :caller 'counsel-locate)) @@ -1665,10 +1663,10 @@ narrowing) or select a candidate from the visible collection. order that they appear: • ‘counsel-locate-function’ takes a string argument and returns a - list of strings. Note that it’s not compatible with - ‘all-completions’, but since we’re not using that here, might as + list of strings. Note that this is incompatible with + ‘all-completions’, but since we’re not using that here, we might as well use one argument instead of three. - • ‘ivy-more-chars’ is a simple function that returns e.g. ‘'("2 + • ‘ivy-more-chars’ is a simple function that returns, e.g., ‘'("2 chars more")’ asking the user for more input. • ‘counsel--async-command’ is a very easy API simplification that takes a single string argument suitable for @@ -1679,10 +1677,10 @@ order that they appear: • ‘counsel-locate’ is an interactive function with an optional ‘initial-input’. • ‘#'counsel-locate-function’ is passed as the ‘collection’ argument. - • ‘dynamic-collection’ is set to t, since this is an async + • ‘dynamic-collection’ is set to ‘t’, since this is an async collection. - • ‘action’ argument uses ‘with-ivy-window’ wrapper, since we want to - open the selected file in the same window from which + • ‘action’ argument uses the ‘with-ivy-window’ wrapper, since we want + to open the selected file in the same window from which ‘counsel-locate’ was called. • ‘unwind’ argument is set to ‘#'counsel-delete-process’: when we press ‘C-g’ we want to kill the running process created by @@ -1695,10 +1693,10 @@ File: ivy.info, Node: Example - ivy-read-with-extra-properties, Prev: Example 8.5 Example - ‘ivy-read-with-extra-properties’ ============================================== -This is another example to show how to associate additional values to -each displayed strings. +This is another example to show how to associate additional values with +displayed candidate strings. - (defun find-candidates-function (str pred _) + (defun find-candidates-function (str _pred _) (let ((props '(1 2)) (strs '("foo" "foo2"))) (cl-mapcar (lambda (s p) (propertize s 'property p)) @@ -1749,7 +1747,7 @@ File: ivy.info, Node: Variable Index, Next: Keystroke Index, Prev: API, Up: * ivy-display-style: Defcustoms. (line 24) * ivy-done: Key bindings for single selection action then exit minibuffer. (line 19) -* ivy-extra-directories: File Name Completion. (line 51) +* ivy-extra-directories: File Name Completion. (line 52) * ivy-height: Key bindings for navigation. (line 21) * ivy-immediate-done: Key bindings for single selection action then exit minibuffer. @@ -1758,7 +1756,7 @@ File: ivy.info, Node: Variable Index, Next: Keystroke Index, Prev: API, Up: (line 23) * ivy-insert-current-full: File Name Completion. (line 41) * ivy-kill-ring-save: Other key bindings. (line 9) -* ivy-match-required-face: Faces. (line 53) +* ivy-match-required-face: Faces. (line 52) * ivy-minibuffer-grow: Hydra in the minibuffer. (line 45) * ivy-minibuffer-map: Minibuffer key bindings. @@ -1769,8 +1767,8 @@ File: ivy.info, Node: Variable Index, Next: Keystroke Index, Prev: API, Up: * ivy-minibuffer-match-face-4: Faces. (line 29) * ivy-minibuffer-shrink: Hydra in the minibuffer. (line 50) -* ivy-modified-buffer: Faces. (line 88) -* ivy-modified-outside-buffer: Faces. (line 93) +* ivy-modified-buffer: Faces. (line 87) +* ivy-modified-outside-buffer: Faces. (line 92) * ivy-next-action: Hydra in the minibuffer. (line 60) * ivy-next-history-element: Key bindings that alter the minibuffer input. @@ -1798,7 +1796,7 @@ File: ivy.info, Node: Variable Index, Next: Keystroke Index, Prev: API, Up: (line 50) * ivy-read-action: Hydra in the minibuffer. (line 65) -* ivy-remote: Faces. (line 71) +* ivy-remote: Faces. (line 70) * ivy-restrict-to-matches: Key bindings that alter the minibuffer input. (line 40) * ivy-resume: Key bindings for multiple selections and actions keep minibuffer open. @@ -1807,7 +1805,7 @@ File: ivy.info, Node: Variable Index, Next: Keystroke Index, Prev: API, Up: (line 48) * ivy-rotate-preferred-builders: Hydra in the minibuffer. (line 40) -* ivy-subdir: Faces. (line 66) +* ivy-subdir: Faces. (line 65) * ivy-toggle-calling: Hydra in the minibuffer. (line 34) * ivy-toggle-case-fold: Hydra in the minibuffer. @@ -1815,7 +1813,7 @@ File: ivy.info, Node: Variable Index, Next: Keystroke Index, Prev: API, Up: * ivy-toggle-regexp-quote: File Name Completion. (line 47) * ivy-use-virtual-buffers: Buffer Name Completion. (line 6) -* ivy-virtual: Faces. (line 76) +* ivy-virtual: Faces. (line 75) * ivy-wrap: Key bindings for navigation. (line 14) * ivy-yank-word: Key bindings that alter the minibuffer input. @@ -1920,49 +1918,49 @@ Node: Top1192 Node: Introduction3103 Node: Installation5626 Node: Installing from Emacs Package Manager6002 -Node: Installing from the Git repository7250 -Node: Getting started8070 -Node: Basic customization8377 -Node: Key bindings8972 -Node: Global key bindings9164 -Node: Minibuffer key bindings11638 -Node: Key bindings for navigation12870 -Node: Key bindings for single selection action then exit minibuffer14077 -Node: Key bindings for multiple selections and actions keep minibuffer open16761 -Node: Key bindings that alter the minibuffer input19382 -Node: Other key bindings21329 -Node: Hydra in the minibuffer21707 -Node: Saving the current completion session to a buffer24125 -Node: Completion Styles25537 -Node: ivy--regex-plus27295 -Node: ivy--regex-ignore-order28781 -Node: ivy--regex-fuzzy29149 -Node: Customization29646 -Node: Faces29832 -Node: Defcustoms32261 -Node: Actions33587 -Node: What are actions?33913 -Node: How can different actions be called?34731 -Node: How to modify the actions list?35302 -Node: Example - add two actions to each command35962 -Node: How to undo adding the two actions36921 -Node: How to add actions to a specific command37373 -Node: Example - define a new command with several actions37789 -Node: Test the above function with ivy-occur38726 -Node: Packages39568 -Node: Commands40533 -Node: File Name Completion40718 -Node: Using TRAMP42675 -Node: Buffer Name Completion44177 -Node: Counsel commands44792 -Node: API45439 -Node: Required arguments for ivy-read46037 -Node: Optional arguments for ivy-read46556 -Node: Example - counsel-describe-function49982 -Node: Example - counsel-locate52966 -Node: Example - ivy-read-with-extra-properties56835 -Node: Variable Index58113 -Node: Keystroke Index65237 +Node: Installing from the Git repository7249 +Node: Getting started8078 +Node: Basic customization8385 +Node: Key bindings8987 +Node: Global key bindings9179 +Node: Minibuffer key bindings11600 +Node: Key bindings for navigation12832 +Node: Key bindings for single selection action then exit minibuffer14039 +Node: Key bindings for multiple selections and actions keep minibuffer open16725 +Node: Key bindings that alter the minibuffer input19348 +Node: Other key bindings21299 +Node: Hydra in the minibuffer21677 +Node: Saving the current completion session to a buffer24095 +Node: Completion Styles25507 +Node: ivy--regex-plus27275 +Node: ivy--regex-ignore-order28768 +Node: ivy--regex-fuzzy29136 +Node: Customization29633 +Node: Faces29819 +Node: Defcustoms32259 +Node: Actions33600 +Node: What are actions?33926 +Node: How can different actions be called?34744 +Node: How to modify the actions list?35311 +Node: Example - add two actions to each command35971 +Node: How to undo adding the two actions36932 +Node: How to add actions to a specific command37386 +Node: Example - define a new command with several actions37802 +Node: Test the above function with ivy-occur38739 +Node: Packages39583 +Node: Commands40551 +Node: File Name Completion40736 +Node: Using TRAMP42745 +Node: Buffer Name Completion44242 +Node: Counsel commands44870 +Node: API45517 +Node: Required arguments for ivy-read46095 +Node: Optional arguments for ivy-read46614 +Node: Example - counsel-describe-function50066 +Node: Example - counsel-locate53019 +Node: Example - ivy-read-with-extra-properties56866 +Node: Variable Index58152 +Node: Keystroke Index65276  End Tag Table -- 2.47.3