1877 lines
79 KiB
EmacsLisp
1877 lines
79 KiB
EmacsLisp
;;; all-the-icons-ivy-rich.el --- Better experience with icons for ivy -*- lexical-binding: t; -*-
|
||
|
||
;; Copyright (C) 2020 Vincent Zhang
|
||
|
||
;; Author: Vincent Zhang <seagle0128@gmail.com>
|
||
;; Homepage: https://github.com/seagle0128/all-the-icons-ivy-rich
|
||
;; Version: 1.8.0
|
||
;; Package-Version: 20220625.1332
|
||
;; Package-Commit: 616a39f71484b15d21d89ca40cd174e0ca15b8f4
|
||
;; Package-Requires: ((emacs "25.1") (ivy-rich "0.1.0") (all-the-icons "2.2.0"))
|
||
;; Keywords: convenience, icons, ivy
|
||
|
||
;; This file is not 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, 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; see the file COPYING. If not, write to
|
||
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
||
;; Floor, Boston, MA 02110-1301, USA.
|
||
;;
|
||
|
||
;;; Commentary:
|
||
|
||
;; Better experience with icons for ivy.
|
||
;;
|
||
;; Install:
|
||
;; From melpa, `M-x package-install RET all-the-icons-ivy-rich RET`.
|
||
;; (all-the-icons-ivy-rich-mode 1)
|
||
;; or
|
||
;; (use-package all-the-icons-ivy-rich-mode
|
||
;; :ensure t
|
||
;; :init (all-the-icons-ivy-rich-mode 1))
|
||
|
||
|
||
;;; Code:
|
||
|
||
(require 'subr-x)
|
||
(require 'ivy-rich)
|
||
(require 'all-the-icons)
|
||
|
||
(eval-when-compile
|
||
(require 'package)
|
||
(require 'bookmark)
|
||
(require 'project))
|
||
|
||
|
||
|
||
;; Depress warnings
|
||
(defvar counsel--fzf-dir)
|
||
(defvar ivy--directory)
|
||
(defvar ivy-last)
|
||
(defvar ivy-posframe-buffer)
|
||
|
||
(declare-function bookmark-get-front-context-string "bookmark")
|
||
(declare-function counsel-world-clock--local-time "ext:counsel-world-clock")
|
||
(declare-function find-library-name "find-func")
|
||
(declare-function ivy-posframe--display "ext:ivy-posframe")
|
||
(declare-function package--from-builtin "package")
|
||
(declare-function package-desc-status "package")
|
||
|
||
;; Compatibility
|
||
(unless (fboundp #'file-attribute-user-id)
|
||
(defsubst file-attribute-user-id (attributes)
|
||
(nth 2 attributes)))
|
||
|
||
(unless (fboundp #'file-attribute-group-id)
|
||
(defsubst file-attribute-group-id (attributes)
|
||
(nth 3 attributes)))
|
||
|
||
(unless (fboundp #'file-attribute-modification-time)
|
||
(defsubst file-attribute-modification-time (attributes)
|
||
(nth 5 attributes)))
|
||
|
||
(unless (fboundp #'file-attribute-size)
|
||
(defsubst file-attribute-size (attributes)
|
||
(nth 7 attributes)))
|
||
|
||
(unless (fboundp #'file-attribute-modes)
|
||
(defsubst file-attribute-modes (attributes)
|
||
(nth 8 attributes)))
|
||
|
||
|
||
;;
|
||
;; Faces
|
||
;;
|
||
|
||
(defgroup all-the-icons-ivy-rich nil
|
||
"Better experience using icons in ivy."
|
||
:group 'all-the-icons
|
||
:group 'ivy-rich
|
||
:link '(url-link :tag "Homepage" "https://github.com/seagle0128/all-the-icons-ivy-rich"))
|
||
|
||
(defface all-the-icons-ivy-rich-on-face
|
||
'((t :inherit success))
|
||
"Face used to signal enabled modes.")
|
||
|
||
(defface all-the-icons-ivy-rich-off-face
|
||
'((t :inherit shadow))
|
||
"Face used to signal disabled modes.")
|
||
|
||
(defface all-the-icons-ivy-rich-error-face
|
||
'((t :inherit error))
|
||
"Face used to signal disabled modes.")
|
||
|
||
(defface all-the-icons-ivy-rich-warn-face
|
||
'((t :inherit warning))
|
||
"Face used to signal disabled modes.")
|
||
|
||
(defface all-the-icons-ivy-rich-icon-face
|
||
'((t (:inherit default)))
|
||
"Face used for the icons while `all-the-icons-ivy-rich-color-icon' is nil."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-dir-face
|
||
'((t (:inherit font-lock-doc-face)))
|
||
"Face used for the directory icon."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-doc-face
|
||
'((t (:inherit ivy-completions-annotations)))
|
||
"Face used for documentation string."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-size-face
|
||
'((t (:inherit shadow)))
|
||
"Face used for buffer size."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-time-face
|
||
'((t (:inherit shadow)))
|
||
"Face used for time."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-bookmark-face
|
||
'((t (:inherit all-the-icons-ivy-rich-doc-face)))
|
||
"Face used for time."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-version-face
|
||
'((t (:inherit font-lock-constant-face)))
|
||
"Face used for package version."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-archive-face
|
||
'((t (:inherit font-lock-doc-face)))
|
||
"Face used for package archive."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-package-status-avaible-face
|
||
'((t (:inherit all-the-icons-ivy-rich-on-face)))
|
||
"Face used for package status."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-package-status-new-face
|
||
'((t (:inherit (all-the-icons-ivy-rich-on-face bold))))
|
||
"Face used for package status."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-package-status-held-face
|
||
'((t (:inherit font-lock-constant-face)))
|
||
"Face used for package status."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-package-status-installed-face
|
||
'((t (:inherit all-the-icons-ivy-rich-off-face)))
|
||
"Face used for package status."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-package-status-warn-face
|
||
'((t (:inherit all-the-icons-ivy-rich-warn-face)))
|
||
"Face used for package status."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-pacage-desc-face
|
||
'((t (:inherit all-the-icons-ivy-rich-doc-face)))
|
||
"Face used for package description."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-path-face
|
||
'((t (:inherit all-the-icons-ivy-rich-doc-face)))
|
||
"Face used for file path."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-indicator-face
|
||
'((t (:inherit all-the-icons-ivy-rich-error-face)))
|
||
"Face used for file indicators."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-major-mode-face
|
||
'((t (:inherit font-lock-keyword-face)))
|
||
"Face used for buffer major mode."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-project-face
|
||
'((t (:inherit font-lock-string-face)))
|
||
"Face used for project."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-persp-face
|
||
'((t (:inherit font-lock-string-face)))
|
||
"Face used for persp."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-file-name-face
|
||
'((t :inherit all-the-icons-ivy-rich-doc-face))
|
||
"Face used for highlight file names.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-priv-no
|
||
'((t :inherit shadow))
|
||
"Face used to highlight the no file privilege attribute.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-priv-dir
|
||
'((t :inherit font-lock-keyword-face))
|
||
"Face used to highlight the dir file privilege attribute.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-priv-link
|
||
'((t :inherit font-lock-keyword-face))
|
||
"Face used to highlight the link file privilege attribute.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-priv-read
|
||
'((t :inherit font-lock-type-face))
|
||
"Face used to highlight the read file privilege attribute.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-priv-write
|
||
'((t :inherit font-lock-builtin-face))
|
||
"Face used to highlight the write file privilege attribute.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-priv-exec
|
||
'((t :inherit font-lock-function-name-face))
|
||
"Face used to highlight the exec file privilege attribute.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-priv-other
|
||
'((t :inherit font-lock-constant-face))
|
||
"Face used to highlight some other file privilege attribute.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-priv-rare
|
||
'((t :inherit font-lock-variable-name-face))
|
||
"Face used to highlight a rare file privilege attribute.")
|
||
|
||
(defface all-the-icons-ivy-rich-file-owner-face
|
||
'((t :inherit font-lock-keyword-face))
|
||
"Face used for highlight file owners.")
|
||
|
||
(defface all-the-icons-ivy-rich-process-id-face
|
||
'((t :inherit default))
|
||
"Face used for process id.")
|
||
|
||
(defface all-the-icons-ivy-rich-process-status-face
|
||
'((t :inherit success))
|
||
"Face used for process status.")
|
||
|
||
(defface all-the-icons-ivy-rich-process-status-alt-face
|
||
'((t :inherit all-the-icons-ivy-rich-error-face))
|
||
"Face used for process status: stop, exit, closed and failed.")
|
||
|
||
(defface all-the-icons-ivy-rich-process-buffer-face
|
||
'((t :inherit font-lock-keyword-face))
|
||
"Face used for process buffer label.")
|
||
|
||
(defface all-the-icons-ivy-rich-process-tty-face
|
||
'((t :inherit font-lock-doc-face))
|
||
"Face used for process tty.")
|
||
|
||
(defface all-the-icons-ivy-rich-process-thread-face
|
||
'((t :inherit font-lock-doc-face))
|
||
"Face used for process thread.")
|
||
|
||
(defface all-the-icons-ivy-rich-process-command-face
|
||
'((t :inherit all-the-icons-ivy-rich-doc-face))
|
||
"Face used for process command.")
|
||
|
||
(defface all-the-icons-ivy-rich-type-face
|
||
'((t :inherit font-lock-keyword-face))
|
||
"Face used for type.")
|
||
|
||
(defface all-the-icons-ivy-rich-value-face
|
||
'((t :inherit font-lock-keyword-face))
|
||
"Face used for variable value.")
|
||
|
||
(defface all-the-icons-ivy-rich-true-face
|
||
'((t :inherit font-lock-builtin-face))
|
||
"Face used to highlight true variable values.")
|
||
|
||
(defface all-the-icons-ivy-rich-null-face
|
||
'((t :inherit font-lock-comment-face))
|
||
"Face used to highlight null or unbound variable values.")
|
||
|
||
(defface all-the-icons-ivy-rich-list-face
|
||
'((t :inherit font-lock-constant-face))
|
||
"Face used to highlight list expressions.")
|
||
|
||
(defface all-the-icons-ivy-rich-number-face
|
||
'((t :inherit font-lock-constant-face))
|
||
"Face used to highlight numeric values.")
|
||
|
||
(defface all-the-icons-ivy-rich-string-face
|
||
'((t :inherit font-lock-string-face))
|
||
"Face used to highlight string values.")
|
||
|
||
(defface all-the-icons-ivy-rich-function-face
|
||
'((t :inherit font-lock-function-name-face))
|
||
"Face used to highlight function symbols.")
|
||
|
||
(defface all-the-icons-ivy-rich-symbol-face
|
||
'((t :inherit font-lock-type-face))
|
||
"Face used to highlight general symbols.")
|
||
|
||
(defface all-the-icons-ivy-rich-imenu-type-face
|
||
'((t (:inherit all-the-icons-ivy-rich-type-face :height 0.9)))
|
||
"Face used for imenu type."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
(defface all-the-icons-ivy-rich-imenu-doc-face
|
||
'((t (:inherit all-the-icons-ivy-rich-doc-face :height 0.9)))
|
||
"Face used for imenu documentation."
|
||
:group 'all-the-icons-ivy-rich)
|
||
|
||
;;
|
||
;; Customization
|
||
;;
|
||
|
||
(defcustom all-the-icons-ivy-rich-icon t
|
||
"Whether display the icons."
|
||
:group 'all-the-icons-ivy-rich
|
||
:type 'boolean)
|
||
|
||
(defcustom all-the-icons-ivy-rich-color-icon t
|
||
"Whether display the colorful icons.
|
||
|
||
It respects `all-the-icons-color-icons'."
|
||
:group 'all-the-icons-ivy-rich
|
||
:type 'boolean)
|
||
|
||
(defcustom all-the-icons-ivy-rich-icon-size 1.0
|
||
"The default icon size in ivy."
|
||
:group 'all-the-icons-ivy-rich
|
||
:type 'float)
|
||
|
||
(defcustom all-the-icons-ivy-rich-project t
|
||
"Whether support project root."
|
||
:group 'all-the-icons-ivy-rich
|
||
:type 'boolean)
|
||
|
||
(defcustom all-the-icons-ivy-rich-field-width 80
|
||
"Maximum truncation width of annotation fields.
|
||
|
||
This value is adjusted depending on the `window-width'."
|
||
:group 'all-the-icons-ivy-rich
|
||
:type 'integer)
|
||
|
||
(defcustom all-the-icons-ivy-rich-display-transformers-list
|
||
'(ivy-switch-buffer
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:predicate
|
||
(lambda (cand) (get-buffer cand))
|
||
:delimiter "\t")
|
||
ivy-switch-buffer-other-window
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:predicate
|
||
(lambda (cand) (get-buffer cand))
|
||
:delimiter "\t")
|
||
|
||
;; counsel
|
||
counsel-switch-buffer
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:predicate
|
||
(lambda (cand) (get-buffer cand))
|
||
:delimiter "\t")
|
||
counsel-switch-buffer-other-window
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:predicate
|
||
(lambda (cand) (get-buffer cand))
|
||
:delimiter "\t")
|
||
counsel-M-x
|
||
(:columns
|
||
((all-the-icons-ivy-rich-function-icon)
|
||
(counsel-M-x-transformer (:width 0.3))
|
||
(ivy-rich-counsel-function-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
counsel-describe-function
|
||
(:columns
|
||
((all-the-icons-ivy-rich-function-icon)
|
||
(counsel-describe-function-transformer (:width 0.3))
|
||
(all-the-icons-ivy-rich-symbol-class (:width 8 :face all-the-icons-ivy-rich-type-face))
|
||
(all-the-icons-ivy-rich-function-args (:width 0.12 :face all-the-icons-ivy-rich-value-face))
|
||
(ivy-rich-counsel-function-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
counsel-describe-variable
|
||
(:columns
|
||
((all-the-icons-ivy-rich-variable-icon)
|
||
(counsel-describe-variable-transformer (:width 0.3))
|
||
(all-the-icons-ivy-rich-symbol-class (:width 8 :face all-the-icons-ivy-rich-type-face))
|
||
(all-the-icons-ivy-rich-variable-value (:width 0.12))
|
||
(ivy-rich-counsel-variable-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
counsel-describe-symbol
|
||
(:columns
|
||
((all-the-icons-ivy-rich-symbol-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-symbol-class (:width 8 :face all-the-icons-ivy-rich-type-face))
|
||
(all-the-icons-ivy-rich-symbol-docstring (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
counsel-set-variable
|
||
(:columns
|
||
((all-the-icons-ivy-rich-variable-icon)
|
||
(counsel-describe-variable-transformer (:width 0.3))
|
||
(all-the-icons-ivy-rich-symbol-class (:width 8 :face all-the-icons-ivy-rich-type-face))
|
||
(all-the-icons-ivy-rich-variable-value (:width 0.12))
|
||
(ivy-rich-counsel-variable-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
counsel-apropos
|
||
(:columns
|
||
((all-the-icons-ivy-rich-symbol-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-symbol-class (:width 8 :face all-the-icons-ivy-rich-type-face))
|
||
(all-the-icons-ivy-rich-symbol-docstring (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
counsel-info-lookup-symbol
|
||
(:columns
|
||
((all-the-icons-ivy-rich-symbol-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-symbol-class (:width 8 :face all-the-icons-ivy-rich-type-face))
|
||
(all-the-icons-ivy-rich-symbol-docstring (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
counsel-descbinds
|
||
(:columns
|
||
((all-the-icons-ivy-rich-keybinding-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-keybinding-docstring (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
counsel-find-file
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-file-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-file-jump
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-file-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-dired
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-file-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-dired-jump
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-file-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-fzf
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-file-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-git
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-file-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-recentf
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-file-name (:width 0.5))
|
||
(all-the-icons-ivy-rich-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-file-last-modified-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-buffer-or-recentf
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(counsel-buffer-or-recentf-transformer (:width 0.5))
|
||
(all-the-icons-ivy-rich-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-file-last-modified-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-bookmark
|
||
(:columns
|
||
((all-the-icons-ivy-rich-bookmark-icon)
|
||
(all-the-icons-ivy-rich-bookmark-name (:width 0.25))
|
||
(ivy-rich-bookmark-type (:width 10))
|
||
(all-the-icons-ivy-rich-bookmark-filename (:width 0.3 :face all-the-icons-ivy-rich-bookmark-face))
|
||
(all-the-icons-ivy-rich-bookmark-context (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
counsel-bookmarked-directory
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-package
|
||
(:columns
|
||
((all-the-icons-ivy-rich-package-icon)
|
||
(ivy-rich-candidate (:width 0.25))
|
||
(all-the-icons-ivy-rich-package-version (:width 16 :face all-the-icons-ivy-rich-version-face))
|
||
(all-the-icons-ivy-rich-package-status (:width 12))
|
||
(all-the-icons-ivy-rich-package-archive-summary (:width 7 :face all-the-icons-ivy-rich-archive-face))
|
||
(all-the-icons-ivy-rich-package-install-summary (:face all-the-icons-ivy-rich-pacage-desc-face)))
|
||
:delimiter "\t")
|
||
counsel-fonts
|
||
(:columns
|
||
((all-the-icons-ivy-rich-font-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-major
|
||
(:columns
|
||
((all-the-icons-ivy-rich-mode-icon)
|
||
(counsel-describe-function-transformer (:width 0.3))
|
||
(ivy-rich-counsel-function-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
counsel-minor
|
||
(:columns
|
||
((all-the-icons-ivy-rich-mode-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-find-library
|
||
(:columns
|
||
((all-the-icons-ivy-rich-library-icon)
|
||
(all-the-icons-ivy-rich-library-transformer (:width 0.3))
|
||
(all-the-icons-ivy-rich-library-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:delimiter "\t")
|
||
counsel-load-library
|
||
(:columns
|
||
((all-the-icons-ivy-rich-library-icon)
|
||
(all-the-icons-ivy-rich-library-transformer (:width 0.3))
|
||
(all-the-icons-ivy-rich-library-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:delimiter "\t")
|
||
counsel-load-theme
|
||
(:columns
|
||
((all-the-icons-ivy-rich-theme-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-world-clock
|
||
(:columns
|
||
((all-the-icons-ivy-rich-world-clock-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-world-clock (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-tramp
|
||
(:columns
|
||
((all-the-icons-ivy-rich-tramp-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-git-checkout
|
||
(:columns
|
||
((all-the-icons-ivy-rich-git-branch-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-list-processes
|
||
(:columns
|
||
((all-the-icons-ivy-rich-process-icon)
|
||
(ivy-rich-candidate (:width 25))
|
||
(all-the-icons-ivy-rich-process-id (:width 7 :face all-the-icons-ivy-rich-process-id-face))
|
||
(all-the-icons-ivy-rich-process-status (:width 7))
|
||
(all-the-icons-ivy-rich-process-buffer-name (:width 25 :face all-the-icons-ivy-rich-process-buffer-face))
|
||
(all-the-icons-ivy-rich-process-tty-name (:width 12 :face all-the-icons-ivy-rich-process-tty-face))
|
||
(all-the-icons-ivy-rich-process-thread (:width 12 :face all-the-icons-ivy-rich-process-thread-face))
|
||
(all-the-icons-ivy-rich-process-command (:face all-the-icons-ivy-rich-process-command-face)))
|
||
:delimiter "\t")
|
||
counsel-projectile-switch-project
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-project-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-projectile-switch-to-buffer
|
||
(:columns
|
||
((counsel-projectile-switch-to-buffer-transformer))
|
||
:delimiter "\t")
|
||
counsel-projectile-find-file
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(counsel-projectile-find-file-transformer (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-projectile-find-dir
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(counsel-projectile-find-dir-transformer (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
counsel-imenu
|
||
(:columns
|
||
((all-the-icons-ivy-rich-imenu-icon)
|
||
(ivy-rich-candidate)
|
||
(all-the-icons-ivy-rich-imenu-class (:face all-the-icons-ivy-rich-imenu-type-face))
|
||
(all-the-icons-ivy-rich-imenu-docstring (:face all-the-icons-ivy-rich-imenu-doc-face)))
|
||
:delimiter "\t")
|
||
counsel-company
|
||
(:columns
|
||
((all-the-icons-ivy-rich-company-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-command-history
|
||
(:columns
|
||
((all-the-icons-ivy-rich-command-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-minibuffer-history
|
||
(:columns
|
||
((all-the-icons-ivy-rich-history-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-read-directory-name
|
||
(:columns
|
||
((all-the-icons-ivy-rich-dir-icon)
|
||
(all-the-icons-ivy-rich-project-name))
|
||
:delimiter "\t")
|
||
counsel-rpm
|
||
(:columns
|
||
((all-the-icons-ivy-rich-package-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
counsel-dpkg
|
||
(:columns
|
||
((all-the-icons-ivy-rich-package-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
|
||
counsel-ack
|
||
(:columns
|
||
((all-the-icons-ivy-rich-ag-file-icon)
|
||
(all-the-icons-ivy-rich-ag-transformer))
|
||
:delimiter "\t")
|
||
counsel-ag
|
||
(:columns
|
||
((all-the-icons-ivy-rich-ag-file-icon)
|
||
(all-the-icons-ivy-rich-ag-transformer))
|
||
:delimiter "\t")
|
||
counsel-pt
|
||
(:columns
|
||
((all-the-icons-ivy-rich-ag-file-icon)
|
||
(all-the-icons-ivy-rich-ag-transformer))
|
||
:delimiter "\t")
|
||
counsel-rg
|
||
(:columns
|
||
((all-the-icons-ivy-rich-ag-file-icon)
|
||
(all-the-icons-ivy-rich-ag-transformer))
|
||
:delimiter "\t")
|
||
|
||
;; Execute command
|
||
execute-extended-command
|
||
(:columns
|
||
((all-the-icons-ivy-rich-function-icon)
|
||
(counsel-M-x-transformer (:width 0.3))
|
||
(ivy-rich-counsel-function-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
execute-extended-command-for-buffer
|
||
(:columns
|
||
((all-the-icons-ivy-rich-function-icon)
|
||
(counsel-M-x-transformer (:width 0.3))
|
||
(ivy-rich-counsel-function-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
project-execute-extended-command
|
||
(:columns
|
||
((all-the-icons-ivy-rich-function-icon)
|
||
(counsel-M-x-transformer (:width 0.3))
|
||
(ivy-rich-counsel-function-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
|
||
;; projectile
|
||
projectile-completing-read
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-project-find-file-transformer (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
|
||
;; project
|
||
project-switch-project
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-project-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
project-find-file
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-project-find-file-transformer (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
project-or-external-find-file
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-project-find-file-transformer (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
project-dired
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-project-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
project-vc-dir
|
||
(:columns
|
||
((all-the-icons-ivy-rich-file-icon)
|
||
(all-the-icons-ivy-rich-project-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
|
||
;; package
|
||
package-install
|
||
(:columns
|
||
((all-the-icons-ivy-rich-package-icon)
|
||
(ivy-rich-candidate (:width 0.25))
|
||
(all-the-icons-ivy-rich-package-version (:width 16 :face all-the-icons-ivy-rich-version-face))
|
||
(all-the-icons-ivy-rich-package-status (:width 12))
|
||
(all-the-icons-ivy-rich-package-archive-summary (:width 7 :face all-the-icons-ivy-rich-archive-face))
|
||
(all-the-icons-ivy-rich-package-install-summary (:face all-the-icons-ivy-rich-pacage-desc-face)))
|
||
:delimiter "\t")
|
||
package-reinstall
|
||
(:columns
|
||
((all-the-icons-ivy-rich-package-icon)
|
||
(ivy-rich-candidate (:width 0.25))
|
||
(all-the-icons-ivy-rich-package-version (:width 16 :face all-the-icons-ivy-rich-version-face))
|
||
(all-the-icons-ivy-rich-package-status (:width 12))
|
||
(all-the-icons-ivy-rich-package-archive-summary (:width 7 :face all-the-icons-ivy-rich-archive-face))
|
||
(all-the-icons-ivy-rich-package-install-summary (:face all-the-icons-ivy-rich-pacage-desc-face)))
|
||
:delimiter "\t")
|
||
package-delete
|
||
(:columns
|
||
((all-the-icons-ivy-rich-package-icon)
|
||
(all-the-icons-ivy-rich-package-name (:width 0.25))
|
||
(all-the-icons-ivy-rich-package-version (:width 16 :face all-the-icons-ivy-rich-version-face))
|
||
(all-the-icons-ivy-rich-package-status (:width 12))
|
||
(all-the-icons-ivy-rich-package-archive-summary (:width 7 :face all-the-icons-ivy-rich-archive-face))
|
||
(all-the-icons-ivy-rich-package-install-summary (:face all-the-icons-ivy-rich-pacage-desc-face)))
|
||
:delimiter "\t")
|
||
|
||
;; persp
|
||
persp-switch-to-buffer
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:predicate
|
||
(lambda (cand) (get-buffer cand))
|
||
:delimiter "\t")
|
||
persp-switch
|
||
(:columns
|
||
((all-the-icons-ivy-rich-project-icon)
|
||
(ivy-rich-candidate (:face all-the-icons-ivy-rich-persp-face)))
|
||
:delimiter "\t")
|
||
persp-frame-switch
|
||
(:columns
|
||
((all-the-icons-ivy-rich-project-icon)
|
||
(ivy-rich-candidate (:face all-the-icons-ivy-rich-persp-face)))
|
||
:delimiter "\t")
|
||
persp-window-switch
|
||
(:columns
|
||
((all-the-icons-ivy-rich-project-icon)
|
||
(ivy-rich-candidate (:face all-the-icons-ivy-rich-persp-face)))
|
||
:delimiter "\t")
|
||
persp-kill
|
||
(:columns
|
||
((all-the-icons-ivy-rich-project-icon)
|
||
(ivy-rich-candidate (:face all-the-icons-ivy-rich-persp-face)))
|
||
:delimiter "\t")
|
||
persp-save-and-kill
|
||
(:columns
|
||
((all-the-icons-ivy-rich-project-icon)
|
||
(ivy-rich-candidate (:face all-the-icons-ivy-rich-persp-face)))
|
||
:delimiter "\t")
|
||
persp-import-buffers
|
||
(:columns
|
||
((all-the-icons-ivy-rich-project-icon)
|
||
(ivy-rich-candidate (:face all-the-icons-ivy-rich-persp-face)))
|
||
:delimiter "\t")
|
||
persp-import-win-conf
|
||
(:columns
|
||
((all-the-icons-ivy-rich-project-icon)
|
||
(ivy-rich-candidate (:face all-the-icons-ivy-rich-persp-face)))
|
||
:delimiter "\t")
|
||
persp-kill-buffer
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:delimiter "\t")
|
||
persp-remove-buffer
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:delimiter "\t")
|
||
persp-add-buffer
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:delimiter "\t")
|
||
|
||
all-the-icons-ivy-rich-kill-buffer
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:delimiter "\t")
|
||
|
||
org-switchb
|
||
(:columns
|
||
((all-the-icons-ivy-rich-buffer-icon)
|
||
(ivy-switch-buffer-transformer (:width 0.3))
|
||
(ivy-rich-switch-buffer-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(ivy-rich-switch-buffer-indicators (:width 4 :face all-the-icons-ivy-rich-indicator-face :align right))
|
||
(all-the-icons-ivy-rich-switch-buffer-major-mode (:width 18 :face all-the-icons-ivy-rich-major-mode-face))
|
||
(ivy-rich-switch-buffer-project (:width 0.12 :face all-the-icons-ivy-rich-project-face))
|
||
(ivy-rich-switch-buffer-path (:width (lambda (x) (ivy-rich-switch-buffer-shorten-path x (ivy-rich-minibuffer-width 0.3))) :face all-the-icons-ivy-rich-path-face)))
|
||
:delimiter "\t")
|
||
|
||
customize-group
|
||
(:columns
|
||
((all-the-icons-ivy-rich-settings-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-custom-group-docstring (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
|
||
describe-character-set
|
||
(:columns
|
||
((all-the-icons-ivy-rich-charset-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-charset-docstring (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
|
||
describe-coding-system
|
||
(:columns
|
||
((all-the-icons-ivy-rich-coding-system-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-coding-system-docstring (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
|
||
describe-language-environment
|
||
(:columns
|
||
((all-the-icons-ivy-rich-lang-icon)
|
||
(ivy-rich-candidate))
|
||
:delimiter "\t")
|
||
|
||
set-input-method
|
||
(:columns
|
||
((all-the-icons-ivy-rich-input-method-icon)
|
||
(ivy-rich-candidate (:width 0.3))
|
||
(all-the-icons-ivy-rich-input-method-docstring (:face all-the-icons-ivy-rich-doc-face)))
|
||
:delimiter "\t")
|
||
|
||
remove-hook
|
||
(:columns
|
||
((all-the-icons-ivy-rich-variable-icon)
|
||
(counsel-describe-variable-transformer (:width 0.3))
|
||
(all-the-icons-ivy-rich-symbol-class (:width 8 :face all-the-icons-ivy-rich-type-face))
|
||
(all-the-icons-ivy-rich-variable-value (:width 0.12))
|
||
(ivy-rich-counsel-variable-docstring (:face all-the-icons-ivy-rich-doc-face))))
|
||
|
||
lsp-ivy-workspace-folders-remove
|
||
(:columns
|
||
((all-the-icons-ivy-rich-dir-icon)
|
||
(all-the-icons-ivy-rich-project-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t")
|
||
|
||
treemacs-projectile
|
||
(:columns
|
||
((all-the-icons-ivy-rich-project-icon)
|
||
(all-the-icons-ivy-rich-project-name (:width 0.4))
|
||
(all-the-icons-ivy-rich-project-file-id (:width 15 :face all-the-icons-ivy-rich-file-owner-face :align right))
|
||
(all-the-icons-ivy-rich-project-file-modes (:width 12))
|
||
(all-the-icons-ivy-rich-project-file-size (:width 7 :face all-the-icons-ivy-rich-size-face))
|
||
(all-the-icons-ivy-rich-project-file-modification-time (:face all-the-icons-ivy-rich-time-face)))
|
||
:delimiter "\t"))
|
||
"Definitions for ivy-rich transformers.
|
||
|
||
See `ivy-rich-display-transformers-list' for details."
|
||
:group 'all-the-icons-ivy-rich
|
||
:type '(repeat sexp))
|
||
|
||
|
||
;;
|
||
;; Utilities
|
||
;;
|
||
|
||
;; Support`ivy-switch-buffer'
|
||
(defun all-the-icons-ivy-rich-switch-buffer-major-mode (cand)
|
||
"Return the mode name for CAND."
|
||
(format-mode-line (ivy-rich--local-values cand 'mode-name)))
|
||
|
||
;; Support `kill-buffer'
|
||
(defun all-the-icons-ivy-rich-kill-buffer (&optional buffer-or-name)
|
||
"Kill the buffer specified by BUFFER-OR-NAME."
|
||
(interactive
|
||
(list (completing-read (format "Kill buffer (default %s): " (buffer-name))
|
||
(mapcar (lambda (b)
|
||
(buffer-name b))
|
||
(buffer-list))
|
||
nil t nil nil
|
||
(buffer-name))))
|
||
(kill-buffer buffer-or-name))
|
||
|
||
(defun all-the-icons-ivy-rich--project-root ()
|
||
"Get the path to the root of your project.
|
||
Return `default-directory' if no project was found."
|
||
(when all-the-icons-ivy-rich-project
|
||
(cond
|
||
;; Ignore remote files due to performance issue
|
||
((file-remote-p default-directory)
|
||
default-directory)
|
||
((fboundp 'ffip-get-project-root-directory)
|
||
(let ((inhibit-message t))
|
||
(ffip-get-project-root-directory)))
|
||
((fboundp 'projectile-project-root)
|
||
(projectile-project-root))
|
||
((fboundp 'project-current)
|
||
(when-let ((project (project-current)))
|
||
(expand-file-name (if (fboundp 'project-root)
|
||
(project-root project)
|
||
(cdr project)))))
|
||
(t default-directory))))
|
||
|
||
(defun all-the-icons-ivy-rich--file-path (cand)
|
||
"Get the file path of CAND."
|
||
(if (eq (ivy-state-caller ivy-last) 'counsel-fzf)
|
||
(expand-file-name cand counsel--fzf-dir)
|
||
(expand-file-name cand ivy--directory)))
|
||
|
||
(defun all-the-icons-ivy-rich--project-file-path (cand)
|
||
"Get the project file path of CAND."
|
||
(expand-file-name cand (all-the-icons-ivy-rich--project-root)))
|
||
|
||
(defun all-the-icons-ivy-rich-project-find-file-transformer (cand)
|
||
"Transform non-visited file names with `ivy-virtual' face."
|
||
(cond
|
||
((or (ivy--dirname-p cand)
|
||
(file-directory-p (all-the-icons-ivy-rich--file-path cand)))
|
||
(propertize cand 'face 'ivy-subdir))
|
||
((not (get-file-buffer
|
||
(expand-file-name cand (all-the-icons-ivy-rich--project-root))))
|
||
(propertize cand 'face 'ivy-virtual))
|
||
(t cand)))
|
||
|
||
(defvar all-the-icons-ivy-rich--file-modes-cache nil
|
||
"File modes cache.")
|
||
(defun all-the-icons-ivy-rich--file-modes (file)
|
||
"Return FILE modes."
|
||
(cond
|
||
((file-remote-p file) "")
|
||
((not (file-exists-p file)) "")
|
||
(t (let ((modes (file-attribute-modes (file-attributes file))))
|
||
(or (car (member modes all-the-icons-ivy-rich--file-modes-cache))
|
||
(progn
|
||
(dotimes (i (length modes))
|
||
(put-text-property
|
||
i (1+ i) 'face
|
||
(pcase (aref modes i)
|
||
(?- 'all-the-icons-ivy-rich-file-priv-no)
|
||
(?d 'all-the-icons-ivy-rich-file-priv-dir)
|
||
(?l 'all-the-icons-ivy-rich-file-priv-link)
|
||
(?r 'all-the-icons-ivy-rich-file-priv-read)
|
||
(?w 'all-the-icons-ivy-rich-file-priv-write)
|
||
(?x 'all-the-icons-ivy-rich-file-priv-exec)
|
||
((or ?s ?S ?t ?T) 'all-the-icons-ivy-rich-file-priv-other)
|
||
(_ 'all-the-icons-ivy-rich-file-priv-rare))
|
||
modes))
|
||
(push modes all-the-icons-ivy-rich--file-modes-cache)
|
||
modes)
|
||
"")))))
|
||
|
||
(defun all-the-icons-ivy-rich--file-id (path)
|
||
"Return file uid/gid for CAND."
|
||
(cond
|
||
((file-remote-p path) "")
|
||
((not (file-exists-p path)) "")
|
||
(t (let* ((attrs (file-attributes path 'integer))
|
||
(uid (file-attribute-user-id attrs))
|
||
(gid (file-attribute-group-id attrs)))
|
||
(if (or (/= (user-uid) uid) (/= (group-gid) gid))
|
||
(let* ((attributes (file-attributes path 'string))
|
||
(user (file-attribute-user-id attributes))
|
||
(group (file-attribute-group-id attributes)))
|
||
(format " %s:%s " user group))
|
||
"")))))
|
||
|
||
(defun all-the-icons-ivy-rich--file-size (file)
|
||
"Return FILE size."
|
||
(cond
|
||
((file-remote-p file) "")
|
||
((not (file-exists-p file)) "")
|
||
(t (file-size-human-readable (file-attribute-size (file-attributes file))))))
|
||
|
||
(defun all-the-icons-ivy-rich--file-modification-time (file)
|
||
"Return FILE modification time."
|
||
(cond
|
||
((file-remote-p file) "")
|
||
((not (file-exists-p file)) "")
|
||
(t (format-time-string
|
||
"%b %d %H:%M"
|
||
(file-attribute-modification-time (file-attributes file))))))
|
||
|
||
;; Support `counsel-find-file', `counsel-dired', etc.
|
||
(defun all-the-icons-ivy-rich-file-name (cand)
|
||
"Return file name for CAND when reading files.
|
||
Display directories with different color.
|
||
Display the true name when the file is a symlink."
|
||
(let* ((file (ivy-read-file-transformer cand))
|
||
(path (all-the-icons-ivy-rich--file-path cand))
|
||
(type (unless (file-remote-p path)
|
||
(file-symlink-p path))))
|
||
(if (stringp type)
|
||
(concat file
|
||
(propertize (concat " -> " type)
|
||
'face 'all-the-icons-ivy-rich-doc-face))
|
||
file)))
|
||
|
||
(defun all-the-icons-ivy-rich-file-modes (cand)
|
||
"Return file modes for CAND."
|
||
(all-the-icons-ivy-rich--file-modes
|
||
(all-the-icons-ivy-rich--file-path cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-file-id (cand)
|
||
"Return file uid/gid for CAND."
|
||
(all-the-icons-ivy-rich--file-id
|
||
(all-the-icons-ivy-rich--file-path cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-file-size (cand)
|
||
"Return file size for CAND."
|
||
(all-the-icons-ivy-rich--file-size
|
||
(all-the-icons-ivy-rich--file-path cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-file-modification-time (cand)
|
||
"Return file modification time for CAND."
|
||
(all-the-icons-ivy-rich--file-modification-time
|
||
(all-the-icons-ivy-rich--file-path cand)))
|
||
|
||
;; Support `counsel-projectile-find-file', `counsel-projectile-dired', etc.
|
||
(defun all-the-icons-ivy-rich-project-name (cand)
|
||
"Return project name for CAND."
|
||
(if (or (ivy--dirname-p cand)
|
||
(file-directory-p (all-the-icons-ivy-rich--file-path cand)))
|
||
(propertize cand 'face 'ivy-subdir)
|
||
cand))
|
||
|
||
(defun all-the-icons-ivy-rich-project-file-modes (cand)
|
||
"Return file modes for CAND."
|
||
(all-the-icons-ivy-rich--file-modes
|
||
(all-the-icons-ivy-rich--project-file-path cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-project-file-id (cand)
|
||
"Return file uid/gid for CAND."
|
||
(all-the-icons-ivy-rich--file-id
|
||
(all-the-icons-ivy-rich--project-file-path cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-project-file-size (cand)
|
||
"Return file size for CAND."
|
||
(all-the-icons-ivy-rich--file-size
|
||
(all-the-icons-ivy-rich--project-file-path cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-project-file-modification-time (cand)
|
||
"Return file modification time for CAND."
|
||
(all-the-icons-ivy-rich--file-modification-time
|
||
(all-the-icons-ivy-rich--project-file-path cand)))
|
||
|
||
;; Support `counsel-bookmark'
|
||
(defun all-the-icons-ivy-rich-bookmark-name (cand)
|
||
"Return bookmark name for CAND."
|
||
(car (assoc cand bookmark-alist)))
|
||
|
||
(defun all-the-icons-ivy-rich-bookmark-filename (cand)
|
||
"Return bookmark info for CAND."
|
||
(let ((file (ivy-rich-bookmark-filename cand)))
|
||
(cond
|
||
((null file) "")
|
||
((file-remote-p file) file)
|
||
(t file))))
|
||
|
||
(defun all-the-icons-ivy-rich-bookmark-context (cand)
|
||
"Return bookmark context for CAND."
|
||
(let ((context (bookmark-get-front-context-string
|
||
(assoc cand (bound-and-true-p bookmark-alist)))))
|
||
(if (and context (not (string-empty-p context)))
|
||
(concat (string-trim
|
||
(replace-regexp-in-string
|
||
"[ \t]+" " "
|
||
(replace-regexp-in-string "\n" "\\\\n" context)))
|
||
"…")
|
||
"")))
|
||
|
||
;; Support `counsel-package', `package-delete', `package-reinstall' and `package-delete'
|
||
(defun all-the-icons-ivy-rich-package-name (cand)
|
||
"Return formalized package name for CAND."
|
||
(replace-regexp-in-string "-[[:digit:]]+\\.?[[:digit:]+\\.]+\\'" ""
|
||
(replace-regexp-in-string "^\\(\\+\\|-\\)" "" cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-package-status (cand)
|
||
"Return package status for CAND."
|
||
(let* ((pkg-alist (bound-and-true-p package-alist))
|
||
(pkg (intern-soft (all-the-icons-ivy-rich-package-name cand)))
|
||
;; taken from `describe-package-1'
|
||
(pkg-desc (or (car (alist-get pkg pkg-alist))
|
||
(if-let (built-in (assq pkg package--builtins))
|
||
(package--from-builtin built-in)
|
||
(car (alist-get pkg package-archive-contents))))))
|
||
(if-let ((status (and pkg-desc (package-desc-status pkg-desc))))
|
||
(cond ((string= status "available")
|
||
(propertize status 'face 'all-the-icons-ivy-rich-package-status-avaible-face))
|
||
((string= status "new")
|
||
(propertize status 'face 'all-the-icons-ivy-rich-package-status-new-face))
|
||
((string= status "held")
|
||
(propertize status 'face 'all-the-icons-ivy-rich-package-status-held-face))
|
||
((member status '("avail-obso" "installed" "dependency" "incompat" "deleted"))
|
||
(propertize status 'face 'all-the-icons-ivy-rich-package-status-installed-face))
|
||
((member status '("disabled" "unsigned"))
|
||
(propertize status 'face 'all-the-icons-ivy-rich-package-status-warn-face))
|
||
(t status))
|
||
(propertize "orphan" 'face 'all-the-icons-ivy-rich-error-face))))
|
||
|
||
(defun all-the-icons-ivy-rich-package-install-summary (cand)
|
||
"Return package install summary for CAND. Used for `counsel-package'."
|
||
(ivy-rich-package-install-summary (all-the-icons-ivy-rich-package-name cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-package-archive-summary (cand)
|
||
"Return package archive summary for CAND. Used for `counsel-package'."
|
||
(ivy-rich-package-archive-summary (all-the-icons-ivy-rich-package-name cand)))
|
||
|
||
(defun all-the-icons-ivy-rich-package-version (cand)
|
||
"Return package version for CAND. Used for `counsel-package'."
|
||
(ivy-rich-package-version (all-the-icons-ivy-rich-package-name cand)))
|
||
|
||
(defun all-the-icons-ivy-rich--truncate-docstring (doc)
|
||
"Truncate DOC string."
|
||
(if (and doc (string-match "^\\(.+\\)\\([\r\n]\\)?" doc))
|
||
(truncate-string-to-width (match-string 1 doc) 80)
|
||
""))
|
||
|
||
;; Support `counsel-describe-face'
|
||
(defun all-the-icons-ivy-rich-counsel-face-docstring (cand)
|
||
"Return face's documentation for CAND."
|
||
(all-the-icons-ivy-rich--truncate-docstring (face-doc-string (intern-soft cand))))
|
||
|
||
;; Support `counsel-describe-function'and `counsel-describe-variable'
|
||
(defun all-the-icons-ivy-rich-function-args (cand)
|
||
"Return function arguments for CAND."
|
||
(let ((sym (intern-soft cand))
|
||
(tmp))
|
||
(or
|
||
(elisp-function-argstring
|
||
(cond
|
||
((listp (setq tmp (gethash (indirect-function sym)
|
||
advertised-signature-table t)))
|
||
tmp)
|
||
((setq tmp (help-split-fundoc
|
||
(ignore-errors (documentation sym t))
|
||
sym))
|
||
(substitute-command-keys (car tmp)))
|
||
((setq tmp (help-function-arglist sym))
|
||
(if (and (stringp tmp)
|
||
(string-match-p "Arg list not available" tmp))
|
||
"[autoload]"
|
||
tmp))))
|
||
"")))
|
||
|
||
(defun all-the-icons-ivy-rich-variable-value (cand)
|
||
"Return the variable value of CAND as string."
|
||
(let ((sym (intern-soft cand)))
|
||
(cond
|
||
((not (boundp sym))
|
||
(propertize "#<unbound>" 'face 'all-the-icons-ivy-rich-null-face))
|
||
(t (let ((val (symbol-value sym)))
|
||
(pcase val
|
||
('nil (propertize "nil" 'face 'all-the-icons-ivy-rich-null-face))
|
||
('t (propertize "t" 'face 'all-the-icons-ivy-rich-true-face))
|
||
((pred keymapp) (propertize "#<keymap>" 'face 'all-the-icons-ivy-rich-value-face))
|
||
((pred bool-vector-p) (propertize "#<bool-vector>" 'face 'all-the-icons-ivy-rich-value-face))
|
||
((pred hash-table-p) (propertize "#<hash-table>" 'face 'all-the-icons-ivy-rich-value-face))
|
||
((pred syntax-table-p) (propertize "#<syntax-table>" 'face 'all-the-icons-ivy-rich-value-face))
|
||
;; Emacs BUG: abbrev-table-p throws an error
|
||
((guard (ignore-errors (abbrev-table-p val))) (propertize "#<abbrev-table>" 'face 'all-the-icons-ivy-rich-value-face))
|
||
((pred char-table-p) (propertize "#<char-table>" 'face 'all-the-icons-ivy-rich-value-face))
|
||
((pred byte-code-function-p) (propertize "#<byte-code-function>" 'face 'all-the-icons-ivy-rich-function-face))
|
||
((and (pred functionp) (pred symbolp))
|
||
;; NOTE: We are not consistent here, values are generally printed unquoted. But we
|
||
;; make an exception for function symbols to visually distinguish them from symbols.
|
||
;; I am not entirely happy with this, but we should not add quotation to every type.
|
||
(format (propertize "#'%s" 'face 'all-the-icons-ivy-rich-function-face) val))
|
||
((pred recordp) (format (propertize "#<record %s>" 'face 'all-the-icons-ivy-rich-value-face) (type-of val)))
|
||
((pred symbolp) (propertize (symbol-name val) 'face 'all-the-icons-ivy-rich-symbol-face))
|
||
((pred numberp) (propertize (number-to-string val) 'face 'all-the-icons-ivy-rich-number-face))
|
||
(_ (let ((print-escape-newlines t)
|
||
(print-escape-control-characters t)
|
||
(print-escape-multibyte t)
|
||
(print-level 10)
|
||
(print-length all-the-icons-ivy-rich-field-width))
|
||
(propertize
|
||
(prin1-to-string
|
||
(if (stringp val)
|
||
;; Get rid of string properties to save some of the precious space
|
||
(substring-no-properties
|
||
val 0
|
||
(min (length val) all-the-icons-ivy-rich-field-width))
|
||
val))
|
||
'face
|
||
(cond
|
||
((listp val) 'all-the-icons-ivy-rich-list-face)
|
||
((stringp val) 'all-the-icons-ivy-rich-string-face)
|
||
(t 'all-the-icons-ivy-rich-value-face)))))))))))
|
||
|
||
;; Support `counsel-describe-symbol', `counsel-info-lookup-symbol' and `counsel-apropos'
|
||
|
||
;; Taken from advice--make-docstring
|
||
(defun all-the-icons-ivy-rich--advised (fun)
|
||
"Return t if function FUN is advised."
|
||
(let ((flist (indirect-function fun)))
|
||
(advice--p (if (eq 'macro (car-safe flist)) (cdr flist) flist))))
|
||
|
||
;; Symbol class characters from Emacs 28 `help--symbol-completion-table-affixation'
|
||
;; ! and * are additions. Same as marginalia
|
||
(defun all-the-icons-ivy-rich-symbol-class (cand)
|
||
"Return symbol class characters for symbol CAND.
|
||
|
||
Function:
|
||
f function
|
||
c command
|
||
C interactive-only command
|
||
m macro
|
||
M special-form
|
||
g cl-generic
|
||
p pure
|
||
s side-effect-free
|
||
@ autoloaded
|
||
! advised
|
||
- obsolete
|
||
|
||
Variable:
|
||
u custom (U modified compared to global value)
|
||
v variable
|
||
l local (L modified compared to default value)
|
||
- obsolete
|
||
|
||
Other:
|
||
a face
|
||
t cl-type"
|
||
(let ((s (intern-soft cand)))
|
||
(format
|
||
"%-6s"
|
||
(concat
|
||
(when (fboundp s)
|
||
(concat
|
||
(cond
|
||
((get s 'pure) "p")
|
||
((get s 'side-effect-free) "s"))
|
||
(cond
|
||
((commandp s) (if (get s 'interactive-only) "C" "c"))
|
||
((cl-generic-p s) "g")
|
||
((macrop (symbol-function s)) "m")
|
||
((special-form-p (symbol-function s)) "M")
|
||
(t "f"))
|
||
(and (autoloadp (symbol-function s)) "@")
|
||
(and (all-the-icons-ivy-rich--advised s) "!")
|
||
(and (get s 'byte-obsolete-info) "-")))
|
||
(when (boundp s)
|
||
(concat
|
||
(when (local-variable-if-set-p s)
|
||
(if (ignore-errors
|
||
(not (equal (symbol-value s)
|
||
(default-value s))))
|
||
"L" "l"))
|
||
(if (custom-variable-p s)
|
||
(if (ignore-errors
|
||
(not (equal
|
||
(symbol-value s)
|
||
(eval (car (get s 'standard-value))))))
|
||
"U" "u")
|
||
"v")
|
||
(and (get s 'byte-obsolete-variable) "-")))
|
||
(and (facep s) "a")
|
||
(and (fboundp 'cl-find-class) (cl-find-class s) "t")))))
|
||
|
||
(defun all-the-icons-ivy-rich-symbol-docstring (cand)
|
||
"Return symbol's documentation for CAND."
|
||
(let ((symbol (intern-soft cand)))
|
||
(cond
|
||
((fboundp symbol)
|
||
(ivy-rich-counsel-function-docstring cand))
|
||
((facep symbol)
|
||
(all-the-icons-ivy-rich-counsel-face-docstring cand))
|
||
((and (boundp symbol) (not (keywordp symbol)))
|
||
(ivy-rich-counsel-variable-docstring cand))
|
||
(t ""))))
|
||
|
||
;; Support `counsel-imenu'
|
||
(defun all-the-icons-ivy-rich--counsel-imenu-symbol (cand)
|
||
"Return imenu symbol from CAND."
|
||
(let ((str (split-string cand ": ")))
|
||
(or (cadr str) (car str))))
|
||
|
||
(defun all-the-icons-ivy-rich-imenu-class (cand)
|
||
"Return imenu's class characters for CAND.
|
||
|
||
Only available in `emacs-lisp-mode'."
|
||
(if (derived-mode-p 'emacs-lisp-mode)
|
||
(string-trim
|
||
(all-the-icons-ivy-rich-symbol-class
|
||
(all-the-icons-ivy-rich--counsel-imenu-symbol cand)))
|
||
""))
|
||
|
||
(defun all-the-icons-ivy-rich-imenu-docstring (cand)
|
||
"Return imenu's documentation for CAND.
|
||
|
||
Only available in `emacs-lisp-mode'."
|
||
(if (derived-mode-p 'emacs-lisp-mode)
|
||
(all-the-icons-ivy-rich-symbol-docstring
|
||
(all-the-icons-ivy-rich--counsel-imenu-symbol cand))
|
||
""))
|
||
|
||
;; Support `counsel-descbinds'
|
||
(defun all-the-icons-ivy-rich-keybinding-docstring (cand)
|
||
"Return keybinding's documentation for CAND."
|
||
;; The magic number 15 is from `counsel--descbinds-cands'
|
||
(if (not (string-match-p " ignore" cand))
|
||
(let* ((pos (string-match-p " .+" cand 15))
|
||
(sym (string-trim (substring cand pos))))
|
||
(all-the-icons-ivy-rich-symbol-docstring sym))
|
||
""))
|
||
|
||
;; Support `customize-group'
|
||
(defun all-the-icons-ivy-rich-custom-group-docstring (cand)
|
||
"Return custom group's documentation for CAND."
|
||
(all-the-icons-ivy-rich--truncate-docstring
|
||
(or (documentation-property (intern cand) 'group-documentation) "")))
|
||
|
||
;; Support `describe-character-set'
|
||
(defun all-the-icons-ivy-rich-charset-docstring (cand)
|
||
"Return charset's documentation for CAND."
|
||
(all-the-icons-ivy-rich--truncate-docstring (charset-description (intern cand))))
|
||
|
||
;; Support `describe-coding-system'
|
||
(defun all-the-icons-ivy-rich-coding-system-docstring (cand)
|
||
"Return coding system's documentation for CAND."
|
||
(all-the-icons-ivy-rich--truncate-docstring (coding-system-doc-string (intern cand))))
|
||
|
||
;; Support `set-input-method'
|
||
(defun all-the-icons-ivy-rich-input-method-docstring (cand)
|
||
"Return input method's documentation for CAND."
|
||
(nth 4 (assoc cand input-method-alist)))
|
||
|
||
;; Support `counsel-list-processes'
|
||
(defun all-the-icons-ivy-rich-process-id (cand)
|
||
"Return process id for CAND.
|
||
|
||
For a network, serial, and pipe connections, return \"--\"."
|
||
(let ((p (get-process cand)))
|
||
(when (processp p)
|
||
(format "%s" (or (process-id p) "--")))))
|
||
|
||
(defun all-the-icons-ivy-rich-process-status (cand)
|
||
"Return process status for CAND."
|
||
(let ((p (get-process cand)))
|
||
(when (processp p)
|
||
(let* ((status (process-status p))
|
||
(face (if (memq status '(stop exit closed failed))
|
||
'all-the-icons-ivy-rich-process-status-alt-face
|
||
'all-the-icons-ivy-rich-process-status-face)))
|
||
(propertize (symbol-name status) 'face face)))))
|
||
|
||
(defun all-the-icons-ivy-rich-process-buffer-name (cand)
|
||
"Return process buffer name for CAND.
|
||
|
||
If the buffer is killed, return \"--\"."
|
||
(let ((p (get-process cand)))
|
||
(when (processp p)
|
||
(let ((buf (process-buffer p)))
|
||
(if (buffer-live-p buf)
|
||
(buffer-name buf)
|
||
"--")))))
|
||
|
||
(defun all-the-icons-ivy-rich-process-tty-name (cand)
|
||
"Return the name of the terminal process uses for CAND."
|
||
(let ((p (get-process cand)))
|
||
(when (processp p)
|
||
(or (process-tty-name p) "--"))))
|
||
|
||
(defun all-the-icons-ivy-rich-process-thread (cand)
|
||
"Return process thread for CAND."
|
||
(if (> emacs-major-version 26)
|
||
(propertize
|
||
(format "%-12s"
|
||
(let ((p (get-process cand)))
|
||
(when (processp p)
|
||
(cond
|
||
((or
|
||
(null (process-thread p))
|
||
(not (fboundp 'thread-name))) "--")
|
||
((eq (process-thread p) main-thread) "Main")
|
||
((thread-name (process-thread p)))
|
||
(t "--")))))
|
||
'face 'all-the-icons-ivy-rich-process-thread-face)
|
||
""))
|
||
|
||
(defun all-the-icons-ivy-rich-process-command (cand)
|
||
"Return process command for CAND."
|
||
(let ((p (get-process cand)))
|
||
(when (processp p)
|
||
(let ((type (process-type p)))
|
||
(if (memq type '(network serial pipe))
|
||
(let ((contact (if (> emacs-major-version 26)
|
||
(process-contact p t t)
|
||
(process-contact p t))))
|
||
(if (eq type 'network)
|
||
(format "(%s %s)"
|
||
(if (plist-get contact :type)
|
||
"datagram"
|
||
"network")
|
||
(if (plist-get contact :server)
|
||
(format
|
||
"server on %s"
|
||
(if (plist-get contact :host)
|
||
(format "%s:%s"
|
||
(plist-get contact :host)
|
||
(plist-get
|
||
contact :service))
|
||
(plist-get contact :local)))
|
||
(format "connection to %s:%s"
|
||
(plist-get contact :host)
|
||
(plist-get contact :service))))
|
||
(format "(serial port %s%s)"
|
||
(or (plist-get contact :port) "?")
|
||
(let ((speed (plist-get contact :speed)))
|
||
(if speed
|
||
(format " at %s b/s" speed)
|
||
"")))))
|
||
(mapconcat 'identity (process-command p) " "))))))
|
||
|
||
;; Support `counsel-find-library' and `counsel-load-library'
|
||
(defun all-the-icons-ivy-rich-library-transformer (cand)
|
||
"Return library name for CAND."
|
||
(if (featurep (intern-soft cand))
|
||
cand
|
||
(propertize cand 'face 'all-the-icons-ivy-rich-off-face)))
|
||
|
||
(defun all-the-icons-ivy-rich-library-path (cand)
|
||
"Return library path for CAND."
|
||
(abbreviate-file-name
|
||
(or (ignore-errors (find-library-name cand)) "")))
|
||
|
||
;; Support `counsel-world-clock'
|
||
(defun all-the-icons-ivy-rich-world-clock (cand)
|
||
"Return local time of timezone (CAND)."
|
||
(counsel-world-clock--local-time cand))
|
||
|
||
(defun all-the-icons-ivy-rich-ag-transformer (cand)
|
||
"Transform `counsel-ag' search results (CAND).
|
||
Support`counsel-ack', `counsel-ag', `counsel-pt' and `counsel-rg'."
|
||
(cond
|
||
((string-match "\\(.+\\):\\([0-9]+\\):\\(.+\\)" cand)
|
||
(let ((file (match-string 1 cand))
|
||
(line (match-string 2 cand))
|
||
(result (match-string 3 cand)))
|
||
(format "%s:%s:%s"
|
||
(propertize file 'face 'compilation-info)
|
||
(propertize line 'face 'compilation-info)
|
||
result)))
|
||
((string-match "\\(.+\\):\\(.+\\)(\\(.+\\))" cand)
|
||
(let ((file (match-string 1 cand))
|
||
(msg (match-string 2 cand))
|
||
(err (match-string 3 cand)))
|
||
(format "%s:%s(%s)"
|
||
(propertize file 'face 'compilation-info)
|
||
msg
|
||
(propertize err 'face 'error))))
|
||
(t cand)))
|
||
|
||
;;
|
||
;; Icons
|
||
;;
|
||
|
||
(defun all-the-icons-ivy-rich--align-icons ()
|
||
"Set tab size to 1, to insert tabs as delimiters."
|
||
(setq-local tab-width 1))
|
||
|
||
(defun all-the-icons-ivy-rich-minibuffer-align-icons ()
|
||
"Align the icons in `minibuffer'."
|
||
(all-the-icons-ivy-rich--align-icons))
|
||
|
||
(defun all-the-icons-ivy-rich-ivy-posframe-align-icons (&rest _)
|
||
"Align the icons in `ivy-posframe'."
|
||
(with-current-buffer ivy-posframe-buffer
|
||
(all-the-icons-ivy-rich--align-icons)))
|
||
|
||
(defun all-the-icons-ivy-rich--format-icon (icon)
|
||
"Format ICON'."
|
||
(let* ((props (get-text-property 0 'face icon))
|
||
(family (plist-get props :family))
|
||
(face (if all-the-icons-ivy-rich-color-icon
|
||
(or (plist-get props :inherit) props)
|
||
'all-the-icons-ivy-rich-icon-face))
|
||
(new-face `(:inherit ,face
|
||
:family ,family
|
||
:height ,all-the-icons-ivy-rich-icon-size)))
|
||
(format " %s" (propertize icon 'face new-face))))
|
||
|
||
(defun all-the-icons-ivy-rich-buffer-icon (cand)
|
||
"Display buffer icon for CAND in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(let ((icon (with-current-buffer (get-buffer cand)
|
||
(if (eq major-mode 'dired-mode)
|
||
(all-the-icons-icon-for-dir cand :face 'all-the-icons-ivy-rich-dir-face)
|
||
(all-the-icons-icon-for-buffer)))))
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(if (or (null icon) (symbolp icon))
|
||
(all-the-icons-faicon "file-o" :face 'all-the-icons-dsilver :height 0.9 :v-adjust 0.0)
|
||
(propertize icon 'display '(raise 0.0)))))))
|
||
|
||
(defun all-the-icons-ivy-rich-file-icon (cand)
|
||
"Display file icon for CAND in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(let ((icon (cond
|
||
((ivy--dirname-p cand)
|
||
(all-the-icons-icon-for-dir cand :face 'all-the-icons-ivy-rich-dir-face))
|
||
((not (string-empty-p cand))
|
||
(all-the-icons-icon-for-file (file-name-nondirectory cand) :height 0.9 :v-adjust 0.0)))))
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(if (or (null icon) (symbolp icon))
|
||
(all-the-icons-faicon "file-o" :face 'all-the-icons-dsilver :height 0.9 :v-adjust 0.0)
|
||
(propertize icon 'display '(raise 0.0)))))))
|
||
|
||
(defun all-the-icons-ivy-rich-dir-icon (_cand)
|
||
"Display project icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-octicon "file-directory" :height 1.0 :v-adjust 0.01 :face 'all-the-icons-silver))))
|
||
|
||
(defun all-the-icons-ivy-rich-project-icon (_cand)
|
||
"Display project icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-octicon "repo" :height 1.0 :v-adjust 0.01 :face 'all-the-icons-silver))))
|
||
|
||
(defun all-the-icons-ivy-rich-mode-icon (_cand)
|
||
"Display mode icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "cube" :height 0.95 :v-adjust -0.05 :face 'all-the-icons-blue))))
|
||
|
||
(defun all-the-icons-ivy-rich-function-icon (cand)
|
||
"Display function icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(if (commandp (intern cand))
|
||
(all-the-icons-faicon "cog" :height 0.95 :v-adjust -0.05 :face 'all-the-icons-blue)
|
||
(all-the-icons-faicon "cube" :height 0.95 :v-adjust -0.05 :face 'all-the-icons-purple)))))
|
||
|
||
(defun all-the-icons-ivy-rich-command-icon (_cand)
|
||
"Display command icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "cog" :height 0.95 :v-adjust -0.05 :face 'all-the-icons-blue))))
|
||
|
||
(defun all-the-icons-ivy-rich-history-icon (_cand)
|
||
"Display command icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-material "history" :height 1.1 :v-adjust -0.1 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-variable-icon (cand)
|
||
"Display the variable icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(if (custom-variable-p (intern cand))
|
||
(all-the-icons-faicon "tag" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-lblue)
|
||
(all-the-icons-octicon "tag" :height 0.95 :v-adjust -0.05 :face 'all-the-icons-lblue)))))
|
||
|
||
(defun all-the-icons-ivy-rich-face-icon (_cand)
|
||
"Display face icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-material "palette" :height 1.0 :v-adjust -0.225 :face 'all-the-icons-blue))))
|
||
|
||
(defun all-the-icons-ivy-rich-symbol-icon (cand)
|
||
"Display the symbol icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(let ((sym (intern cand)))
|
||
(cond
|
||
((functionp sym)
|
||
(all-the-icons-ivy-rich-function-icon cand))
|
||
((facep sym)
|
||
(all-the-icons-ivy-rich-face-icon cand))
|
||
((symbolp sym)
|
||
(all-the-icons-ivy-rich-variable-icon cand))
|
||
(t (all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-octicon "gear" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-silver)))))))
|
||
|
||
(defun all-the-icons-ivy-rich-company-icon (cand)
|
||
"Display the symbol icon of company in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(if (fboundp 'company-box--get-icon)
|
||
(company-box--get-icon cand)
|
||
(all-the-icons-octicon "gear" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-silver)))))
|
||
|
||
(defun all-the-icons-ivy-rich-theme-icon (_cand)
|
||
"Display the theme icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-material "palette" :height 1.0 :v-adjust -0.225 :face 'all-the-icons-lcyan))))
|
||
|
||
(defun all-the-icons-ivy-rich-keybinding-icon (_cand)
|
||
"Display the keybindings icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "keyboard-o" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-lsilver))))
|
||
|
||
(defun all-the-icons-ivy-rich-library-icon (_cand)
|
||
"Display the library icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-material "view_module" :height 1.0 :v-adjust -0.225 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-package-icon (_cand)
|
||
"Display the package icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "archive" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-silver))))
|
||
|
||
(defun all-the-icons-ivy-rich-font-icon (_cand)
|
||
"Display the font icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "font" :height 0.85 :v-adjust -0.05 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-world-clock-icon (_cand)
|
||
"Display the world clock icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "globe" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-tramp-icon (_cand)
|
||
"Display the tramp icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-octicon "radio-tower" :height 0.8 :v-adjust 0.01))))
|
||
|
||
(defun all-the-icons-ivy-rich-git-branch-icon (_cand)
|
||
"Display the git branch icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-octicon "git-branch" :height 1.0 :v-adjust -0.05 :face 'all-the-icons-green))))
|
||
|
||
(defun all-the-icons-ivy-rich-process-icon (_cand)
|
||
"Display the process icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "bolt" :height 1.0 :v-adjust -0.05 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-imenu-icon (cand)
|
||
"Display the imenu icon for CAND in `ivy-rich'."
|
||
(if (derived-mode-p 'emacs-lisp-mode)
|
||
(all-the-icons-ivy-rich-symbol-icon (all-the-icons-ivy-rich--counsel-imenu-symbol cand))
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(let ((case-fold-search nil))
|
||
(cond
|
||
((string-match-p "Type Parameters?[:)]" cand)
|
||
(all-the-icons-faicon "arrows" :height 0.85 :v-adjust -0.05))
|
||
((string-match-p "\\(Variables?\\)\\|\\(Fields?\\)\\|\\(Parameters?\\)[:)]" cand)
|
||
(all-the-icons-octicon "tag" :height 0.95 :v-adjust 0 :face 'all-the-icons-lblue))
|
||
((string-match-p "Constants?[:)]" cand)
|
||
(all-the-icons-faicon "square-o" :height 0.95 :v-adjust -0.05))
|
||
((string-match-p "Enum\\(erations?\\)?[:)]" cand)
|
||
(all-the-icons-material "storage" :height 0.95 :v-adjust -0.2 :face 'all-the-icons-orange))
|
||
((string-match-p "References?[:)]" cand)
|
||
(all-the-icons-material "collections_bookmark" :height 0.95 :v-adjust -0.2))
|
||
((string-match-p "\\(Types?\\)\\|\\(Property\\)[:)]" cand)
|
||
(all-the-icons-faicon "wrench" :height 0.9 :v-adjust -0.05))
|
||
((string-match-p "\\(Functions?\\)\\|\\(Methods?\\)\\|\\(Constructors?\\)[:)]" cand)
|
||
(all-the-icons-faicon "cube" :height 0.95 :v-adjust -0.05 :face 'all-the-icons-purple))
|
||
((string-match-p "\\(Class\\)\\|\\(Structs?\\)[:)]" cand)
|
||
(all-the-icons-material "settings_input_component" :height 0.9 :v-adjust -0.15 :face 'all-the-icons-orange))
|
||
((string-match-p "Interfaces?[:)]" cand)
|
||
(all-the-icons-material "share" :height 0.95 :v-adjust -0.2 :face 'all-the-icons-lblue))
|
||
((string-match-p "Modules?[:)]" cand)
|
||
(all-the-icons-material "view_module" :height 0.95 :v-adjust -0.15 :face 'all-the-icons-lblue))
|
||
((string-match-p "Packages?[:)]" cand)
|
||
(all-the-icons-faicon "archive" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-silver))
|
||
(t (all-the-icons-octicon "tag" :height 0.95 :v-adjust 0 :face 'all-the-icons-blue))))))))
|
||
|
||
(defun all-the-icons-ivy-rich-bookmark-icon (cand)
|
||
"Return bookmark type for CAND."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(let ((file (ivy-rich-bookmark-filename cand)))
|
||
(cond
|
||
((null file)
|
||
(all-the-icons-material "block" :height 1.0 :v-adjust -0.2 :face 'all-the-icons-ivy-rich-warn-face)) ; fixed #38
|
||
((file-remote-p file)
|
||
(all-the-icons-octicon "radio-tower" :height 0.8 :v-adjust 0.01))
|
||
((not (file-exists-p file))
|
||
(all-the-icons-material "block" :height 1.0 :v-adjust -0.2 :face 'all-the-icons-ivy-rich-error-face))
|
||
((file-directory-p file)
|
||
(all-the-icons-octicon "file-directory" :height 0.9 :v-adjust 0.01))
|
||
(t (all-the-icons-icon-for-file (file-name-nondirectory file) :height 0.9 :v-adjust 0.0)))))))
|
||
|
||
(defun all-the-icons-ivy-rich-settings-icon (_cand)
|
||
"Display settings icon for CAND in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-octicon "settings" :height 0.9 :v-adjust -0.01 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-charset-icon (_cand)
|
||
"Display charset icon for CAND in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "table" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-coding-system-icon (_cand)
|
||
"Display coding system icon for CAND in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "table" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-purple))))
|
||
|
||
(defun all-the-icons-ivy-rich-lang-icon (_cand)
|
||
"Display language icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "language" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-input-method-icon (_cand)
|
||
"Display input method icon in `ivy-rich'."
|
||
(when (and (display-graphic-p) all-the-icons-ivy-rich-icon)
|
||
(all-the-icons-ivy-rich--format-icon
|
||
(all-the-icons-faicon "keyboard-o" :height 0.9 :v-adjust -0.05 :face 'all-the-icons-lblue))))
|
||
|
||
(defun all-the-icons-ivy-rich-ag-file-icon (cand)
|
||
"Display `counsel-ag' file icon for CAND in `ivy-rich'.
|
||
Support`counsel-ack', `counsel-ag', `counsel-pt' and `counsel-rg'."
|
||
(when (or (string-match "\\(.+\\):\\([0-9]+\\):\\(.+\\)" cand)
|
||
(string-match "\\(.+\\):\\(.+\\)(\\(.+\\))" cand))
|
||
(all-the-icons-ivy-rich-file-icon (match-string 1 cand))))
|
||
|
||
|
||
;;
|
||
;; Modes
|
||
;;
|
||
|
||
(defvar all-the-icons-ivy-rich-display-transformers-old-list ivy-rich-display-transformers-list)
|
||
|
||
;;;###autoload
|
||
(define-minor-mode all-the-icons-ivy-rich-mode
|
||
"Better experience with icons for ivy."
|
||
:lighter nil
|
||
:global t
|
||
(if all-the-icons-ivy-rich-mode
|
||
(progn
|
||
(add-hook 'minibuffer-setup-hook #'all-the-icons-ivy-rich-minibuffer-align-icons)
|
||
(advice-add #'ivy-posframe--display :after #'all-the-icons-ivy-rich-ivy-posframe-align-icons)
|
||
(global-set-key [remap kill-buffer] #'all-the-icons-ivy-rich-kill-buffer)
|
||
(setq ivy-rich-display-transformers-list all-the-icons-ivy-rich-display-transformers-list))
|
||
(progn
|
||
(remove-hook 'minibuffer-setup-hook #'all-the-icons-ivy-rich-minibuffer-align-icons)
|
||
(advice-remove #'ivy-posframe--display #'all-the-icons-ivy-rich-ivy-posframe-align-icons)
|
||
(global-unset-key [remap kill-buffer])
|
||
(setq ivy-rich-display-transformers-list all-the-icons-ivy-rich-display-transformers-old-list)))
|
||
(ivy-rich-reload))
|
||
|
||
;;;###autoload
|
||
(defun all-the-icons-ivy-rich-reload ()
|
||
"Reload `all-the-icons-ivy-rich'."
|
||
(interactive)
|
||
(when all-the-icons-ivy-rich-mode
|
||
(all-the-icons-ivy-rich-mode -1)
|
||
(all-the-icons-ivy-rich-mode 1)
|
||
(message "Reload all-the-icons-ivy-rich")))
|
||
|
||
(provide 'all-the-icons-ivy-rich)
|
||
|
||
;;; all-the-icons-ivy-rich.el ends here
|