branch: elpa/helm
commit 5aedc49d14d1359feb5ab12549e2867d352c91ee
Author: Thierry Volpiatto <thie...@posteo.net>
Commit: Thierry Volpiatto <thie...@posteo.net>

    Adapt helm-imenu for helm-x-icons (#2701)
---
 helm-imenu.el | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 93 insertions(+), 6 deletions(-)

diff --git a/helm-imenu.el b/helm-imenu.el
index 529d75df7a..e2811e0f5b 100644
--- a/helm-imenu.el
+++ b/helm-imenu.el
@@ -23,9 +23,12 @@
 (require 'imenu)
 (require 'helm-utils)
 (require 'helm-help)
+(require 'helm-x-icons)
 
 (defvar all-the-icons-default-adjust)
 (defvar all-the-icons-scale-factor)
+(defvar nerd-icons-default-adjust)
+(defvar nerd-icons-scale-factor)
 
 (declare-function which-function "which-func")
 (declare-function all-the-icons-material "ext:all-the-icons.el")
@@ -100,7 +103,7 @@ Don't use `setq' to set this."
   :group 'helm-imenu
   :type 'boolean
   :set (lambda (var val)
-         (if (require 'all-the-icons nil t)
+         (if (require helm-x-icons-provider nil t)
              (set var val)
            (set var nil))))
 
@@ -111,11 +114,88 @@ Don't use `setq' to set this."
   :group 'helm-imenu
   :type 'boolean
   :set (lambda (var val)
-         (if (require 'all-the-icons nil t)
+         (if (require helm-x-icons-provider nil t)
              (set var val)
            (set var nil))))
 
-(defcustom helm-imenu-icon-type-alist
+(defcustom helm-imenu-nerd-icons-type-alist
+  '(("Array"           . (nerd-icons-faicon "nf-fa-crop" :face 
font-lock-builtin-face))
+    ("Arrays"          . (nerd-icons-faicon "nf-fa-crop" :face 
font-lock-builtin-face))
+    ("Boolean"         . (nerd-icons-faicon "nf-fa-crop" :face 
font-lock-builtin-face))
+    ("Booleans"        . (nerd-icons-octicon "nf-oct-package" :face 
font-lock-builtin-face))
+    ("Class"           . (nerd-icons-octicon "nf-oct-package" :face 
font-lock-type-face))
+    ("Classes"         . (nerd-icons-octicon "nf-oct-package" :face 
font-lock-type-face))
+    ("Color"           . (nerd-icons-mdicon "nf-md-color_lens" :face 
font-lock-builtin-face))
+    ("Colors"          . (nerd-icons-mdicon "nf-md-color_lens" :face 
font-lock-builtin-face))
+    ("Constant"        . (nerd-icons-faicon "nf-fa-crop" :face 
font-lock-builtin-face))
+    ("Constants"       . (nerd-icons-faicon "nf-fa-crop" :face 
font-lock-builtin-face))
+    ("Constructor"     . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Constructors"    . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Enum Member"     . (nerd-icons-codicon "nf-code-three_bars" :face 
font-lock-type-face))
+    ("Enum Members"    . (nerd-icons-codicon "nf-code-three_bars" :face 
font-lock-type-face))
+    ("Enum"            . (nerd-icons-mdicon "nf-md-cog" :face 
font-lock-type-face))
+    ("Enums"           . (nerd-icons-mdicon "nf-md-cog" :face 
font-lock-type-face))
+    ("Event"           . (nerd-icons-mdicon "nf-md-lightning_bolt" :face 
font-lock-builtin-face))
+    ("Events"          . (nerd-icons-mdicon "nf-md-lightning_bolt" :face 
font-lock-builtin-face))
+    ("Field"           . (nerd-icons-octicon "nf-code-three_bars" :face 
font-lock-type-face))
+    ("Fields"          . (nerd-icons-octicon "nf-code-three_bars" :face 
font-lock-type-face))
+    ("File"            . (nerd-icons-mdicon "nf-md-file" :face 
font-lock-variable-name-face))
+    ("Files"           . (nerd-icons-mdicon "nf-md-file" :face 
font-lock-variable-name-face))
+    ("Folder"          . (nerd-icons-mdicon "nf-md-folder" :face 
font-lock-variable-name-face))
+    ("Folders"         . (nerd-icons-mdicon "nf-md-folder" :face 
font-lock-variable-name-face))
+    ("Interface"       . (nerd-icons-octicon "nf-oct-package" :face 
font-lock-type-face))
+    ("Interfaces"      . (nerd-icons-octicon "nf-oct-package" :face 
font-lock-type-face))
+    ("Keyword"         . (nerd-icons-faicon  "nf-fa-key" :face 
font-lock-builtin-face))
+    ("Keywords"        . (nerd-icons-faicon  "nf-fa-key" :face 
font-lock-builtin-face))
+    ("Method"          . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Methods"         . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Defun"           . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Defuns"          . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Fn"              . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Fns"             . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Function"        . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Functions"       . (nerd-icons-mdicon "nf-md-cube" :face 
font-lock-function-name-face))
+    ("Misc"            . (nerd-icons-codicon "nf-cod-globe" :face 
font-lock-function-name-face))
+    ("Miscs"           . (nerd-icons-codicon "nf-cod-globe" :face 
font-lock-function-name-face))
+    ("Module"          . (nerd-icons-faicon "nf-fa-angle-double-right" :face 
font-lock-builtin-face))
+    ("Modules"         . (nerd-icons-faicon "nf-fa-angle-double-right" :face 
font-lock-builtin-face))
+    ("Numeric"         . (nerd-icons-faicon "nf-fa-crop" :face 
font-lock-builtin-face))
+    ("Numerics"        . (nerd-icons-faicon "nf-fa-crop" :face 
font-lock-builtin-face))
+    ("Object"          . (nerd-icons-faicon "nf-fa-angle-double-right" :face 
font-lock-builtin-face))
+    ("Objects"         . (nerd-icons-faicon "nf-fa-angle-double-right" :face 
font-lock-builtin-face))
+    ("Operator"        . (nerd-icons-mdicon "nf-md-calculator" :face 
font-lock-builtin-face))
+    ("Operators"       . (nerd-icons-mdicon "nf-md-calculator" :face 
font-lock-builtin-face))
+    ("Property"        . (nerd-icons-codicon "nf-cod-book" :face 
font-lock-variable-name-face))
+    ("Properties"      . (nerd-icons-codicon "nf-cod-book" :face 
font-lock-variable-name-face))
+    ("Reference"       . (nerd-icons-codicon "nf-cod-book" :face 
font-lock-variable-name-face))
+    ("References"      . (nerd-icons-codicon "nf-cod-book" :face 
font-lock-variable-name-face))
+    ("Snippet"         . (nerd-icons-mdicon "nf-md-border_style" :face 
font-lock-variable-name-face))
+    ("Snippets"        . (nerd-icons-mdicon "nf-md-border_style" :face 
font-lock-variable-name-face))
+    ("String"          . (nerd-icons-mdicon "nf-md-text" :face 
font-lock-variable-name-face))
+    ("Strings"         . (nerd-icons-mdicon "nf-md-text" :face 
font-lock-variable-name-face))
+    ("Struct"          . (nerd-icons-mdicon "nf-md-cog" :face 
font-lock-type-face))
+    ("Structs"         . (nerd-icons-mdicon "nf-md-cog" :face 
font-lock-type-face))
+    ("Text"            . (nerd-icons-mdicon "nf-md-text" :face 
font-lock-variable-name-face))
+    ("Texts"           . (nerd-icons-mdicon "nf-md-text" :face 
font-lock-variable-name-face))
+    ("Top level"       . (nerd-icons-octicon "nf-oct-package" :face 
font-lock-type-face))
+    ("Trait"           . (nerd-icons-octicon "nf-oct-package" :face 
font-lock-type-face))
+    ("Traits"          . (nerd-icons-octicon "package" :face 
font-lock-builtin-face))
+    ("Type"            . (nerd-icons-mdicon "nf-md-cog" :face 
font-lock-type-face))
+    ("Types"           . (nerd-icons-mdicon "nf-md-cog" :face 
font-lock-type-face))
+    ("Type Parameter"  . (nerd-icons-faicon "nf-fa-code" :face 
font-lock-type-face))
+    ("Type Parameters" . (nerd-icons-faicon "nf-fa-code" :face 
font-lock-type-face))
+    ("Unit"            . (nerd-icons-faicon "nf-fa-bar_chart" :face 
font-lock-builtin-face))
+    ("Units"           . (nerd-icons-faicon "nf-fa-bar_chart" :face 
font-lock-builtin-face))
+    ("Value"           . (nerd-icons-mdicon "nf-md-cog" :face 
font-lock-type-face))
+    ("Values"          . (nerd-icons-mdicon "nf-md-cog" :face 
font-lock-type-face))
+    ("Variable"        . (nerd-icons-codicon "nf-cod-book" :face 
font-lock-variable-name-face))
+    ("Variables"       . (nerd-icons-codicon "nf-cod-book":face 
font-lock-variable-name-face)))
+  "An alist of types associated with a sexp returning an icon.
+The sexp should be an `nerd-icons' function with its args."
+  :type '(alist :key-type string :value-type sexp)
+  :group 'helm-imenu)
+
+(defcustom helm-imenu-all-the-icons-type-alist
   '(("Array"           . (all-the-icons-material "crop" :face 
font-lock-builtin-face))
     ("Arrays"          . (all-the-icons-material "crop" :face 
font-lock-builtin-face))
     ("Boolean"         . (all-the-icons-material "crop" :face 
font-lock-builtin-face))
@@ -192,8 +272,13 @@ The sexp should be an `all-the-icons' function with its 
args."
   :type '(alist :key-type string :value-type sexp)
   :group 'helm-imenu)
 
+(defun helm-imenu-icon-type-alist ()
+  (helm-acase helm-x-icons-provider
+    (all-the-icons helm-imenu-all-the-icons-type-alist)
+    (nerd-icons helm-imenu-nerd-icons-type-alist)))
+
 (defcustom helm-imenu-default-type-sexp
-  '(all-the-icons-faicon "globe" :face font-lock-function-name-face)
+  '(helm-x-icons-faicon "globe" :face font-lock-function-name-face)
   "Default sexp to use when no type for an object is found."
   :type 'sexp
   :group 'helm-imenu)
@@ -432,9 +517,11 @@ The sexp should be an `all-the-icons' function with its 
args."
 The icon is found in `helm-imenu-icon-type-alist', if not
 `helm-imenu-default-type-sexp' is evaled to provide a default icon."
   (let ((all-the-icons-scale-factor 1.0)
-        (all-the-icons-default-adjust 0.0))
+        (all-the-icons-default-adjust 0.0)
+        (nerd-icons-scale-factor 1.0)
+        (nerd-icons-default-adjust 0.0))
     (or (helm-aand (assoc-default
-                    type helm-imenu-icon-type-alist)
+                    type (helm-imenu-icon-type-alist))
                    (apply (car it) (cdr it)))
         (apply (car helm-imenu-default-type-sexp)
                (cdr helm-imenu-default-type-sexp)))))

Reply via email to