vertico-unobtrusive.el (2763B)
1 ;;; vertico-unobtrusive.el --- Unobtrusive display for Vertico -*- lexical-binding: t -*- 2 3 ;; Copyright (C) 2021-2024 Free Software Foundation, Inc. 4 5 ;; Author: Daniel Mendler <mail@daniel-mendler.de> 6 ;; Maintainer: Daniel Mendler <mail@daniel-mendler.de> 7 ;; Created: 2021 8 ;; Version: 1.8 9 ;; Package-Requires: ((emacs "27.1") (compat "29.1.4.4") (vertico "1.8")) 10 ;; Homepage: https://github.com/minad/vertico 11 12 ;; This file is part of GNU Emacs. 13 14 ;; This program is free software: you can redistribute it and/or modify 15 ;; it under the terms of the GNU General Public License as published by 16 ;; the Free Software Foundation, either version 3 of the License, or 17 ;; (at your option) any later version. 18 19 ;; This program is distributed in the hope that it will be useful, 20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of 21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 ;; GNU General Public License for more details. 23 24 ;; You should have received a copy of the GNU General Public License 25 ;; along with this program. If not, see <https://www.gnu.org/licenses/>. 26 27 ;;; Commentary: 28 29 ;; This package is a Vertico extension providing a unobtrusive 30 ;; display. The unobtrusive display only shows the topmost candidate 31 ;; and nothing else, it is a simple derivative of `vertico-flat-mode'. 32 ;; 33 ;; The mode can be enabled globally or via `vertico-multiform-mode' 34 ;; per command or completion category. Alternatively the unobtrusive 35 ;; display can be toggled temporarily with M-U if 36 ;; `vertico-multiform-mode' is enabled. 37 38 ;;; Code: 39 40 (require 'vertico-flat) 41 42 (defvar vertico-unobtrusive--restore nil) 43 44 ;;;###autoload 45 (define-minor-mode vertico-unobtrusive-mode 46 "Unobtrusive display for Vertico." 47 :global t :group 'vertico 48 (cond 49 ((and vertico-unobtrusive-mode (not vertico-unobtrusive--restore)) 50 (push '(vertico-current . default) (default-value 'face-remapping-alist)) 51 (setq vertico-unobtrusive--restore (cons vertico-count vertico-count-format) 52 vertico-count 1 53 vertico-count-format nil 54 vertico-flat-format `(:separator nil :ellipsis nil ,@vertico-flat-format))) 55 ((and (not vertico-unobtrusive-mode) vertico-unobtrusive--restore) 56 (cl-callf2 delete '(vertico-current . default) 57 (default-value 'face-remapping-alist)) 58 (setq vertico-count (car vertico-unobtrusive--restore) 59 vertico-count-format (cdr vertico-unobtrusive--restore) 60 vertico-flat-format (nthcdr 4 vertico-flat-format) 61 vertico-unobtrusive--restore nil))) 62 (vertico-flat-mode (if vertico-unobtrusive-mode 1 -1))) 63 64 (cl-defmethod vertico--setup :before (&context (vertico-unobtrusive-mode (eql t))) 65 (redisplay)) 66 67 (provide 'vertico-unobtrusive) 68 ;;; vertico-unobtrusive.el ends here