From 3f4a0d5370ae6c34afe180df96add3b8522f4af1 Mon Sep 17 00:00:00 2001 From: mattkae Date: Wed, 11 May 2022 09:23:58 -0400 Subject: initial commit --- elpa/all-the-icons-20220325.1238/all-the-icons.el | 1189 +++++++++++++++++++++ 1 file changed, 1189 insertions(+) create mode 100644 elpa/all-the-icons-20220325.1238/all-the-icons.el (limited to 'elpa/all-the-icons-20220325.1238/all-the-icons.el') diff --git a/elpa/all-the-icons-20220325.1238/all-the-icons.el b/elpa/all-the-icons-20220325.1238/all-the-icons.el new file mode 100644 index 0000000..999246e --- /dev/null +++ b/elpa/all-the-icons-20220325.1238/all-the-icons.el @@ -0,0 +1,1189 @@ +;;; all-the-icons.el --- A library for inserting Developer icons -*- lexical-binding: t; -*- + +;; Copyright (C) 2016 Dominic Charlesworth + +;; Author: Dominic Charlesworth +;; Version: 5.0.0 +;; Package-Requires: ((emacs "24.3")) +;; URL: https://github.com/domtronn/all-the-icons.el +;; Keywords: convenient, lisp + +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License +;; as published by the Free Software Foundation; either version 3 +;; of the License, or (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Commentary: + +;; This package is a utility for using and formatting various Icon +;; fonts within Emacs. Icon Fonts allow you to propertize and format +;; icons the same way you would normal text. This enables things such +;; as better scaling of and anti aliasing of the icons. + +;; This package was inspired by + +;; - `mode-icons' for Emacs, found at https://github.com/ryuslash/mode-icons +;; - `file-icons' for Atom, found at https://atom.io/packages/file-icons + +;; Currently, this package provides an interface to the following Icon Fonts + +;; - Atom File Icons, found at https://atom.io/packages/file-icons +;; - FontAwesome Icons, found at http://fontawesome.io/ +;; - GitHub Octicons, found at http://octicons.github.com +;; - Material Design Icons, found at http://google.github.io/material-design-icons/ +;; - Weather Icons, found at https://erikflowers.github.io/weather-icons/ +;; - AllTheIcons, a custom Icon Font maintained as part of this package + +;; Requests for new icons will be accepted and added to the AllTheIcons Icon Font + +;;; Usage: + +;; The simplest usage for this package is to use the following functions; + +;; `all-the-icons-icon-for-buffer' +;; `all-the-icons-icon-for-dir' +;; `all-the-icons-icon-for-file' +;; `all-the-icons-icon-for-mode' +;; `all-the-icons-icon-for-url' + +;; Which can be used to get a formatted icon for the current buffer, a +;; file name, a major mode, or an URL respectively. e.g. + +;; (insert (all-the-icons-icon-for-file "foo.js")) + +;; Inserts a JavaScript icon formatted like this + +;; #("some-icon" 0 1 (display (raise -0.24) +;; face (:family "dev-icons" :height 1.08 :foreground "#FFD446"))) + +;; You can also insert icons directly using the individual icon family +;; functions + +;; `all-the-icons-alltheicon' // Custom font with fewest icons +;; `all-the-icons-devicon' // Developer Icons +;; `all-the-icons-faicon' // Font Awesome Icons +;; `all-the-icons-fileicon' // File Icons from the Atom File Icons package +;; `all-the-icons-octicon' // GitHub Octicons +;; `all-the-icons-material' // Material Design Icons +;; `all-the-icons-wicon' // Weather Icons + +;; You can call these functions with the icon name you want to insert, e.g. + +;; (all-the-icons-octicon "file-binary") // GitHub Octicon for Binary File +;; (all-the-icons-faicon "cogs") // FontAwesome icon for cogs +;; (all-the-icons-wicon "tornado") // Weather Icon for tornado + +;; A list of all the icon names for the different font families can be +;; found in the data directory, or by inspecting the alist variables. +;; All the alist variables are prefixed with `all-the-icons-data/' + +;;; Code: +(require 'cl-lib) + +(require 'data-alltheicons "./data/data-alltheicons") +(require 'data-faicons "./data/data-faicons") +(require 'data-fileicons "./data/data-fileicons") +(require 'data-octicons "./data/data-octicons") +(require 'data-weathericons "./data/data-weathericons") +(require 'data-material "./data/data-material") + +(require 'all-the-icons-faces) + +(defvar web-mode-content-type) ;silence byte-compiler warning +;;; Custom Variables +(defgroup all-the-icons nil + "Manage how All The Icons formats icons." + :prefix "all-the-icons-" + :group 'appearance + :group 'convenience) + +(defcustom all-the-icons-color-icons t + "Whether or not to include a foreground colour when formatting the icon." + :group 'all-the-icons + :type 'boolean) + +(defcustom all-the-icons-scale-factor 1.2 + "The base Scale Factor for the `height' face property of an icon." + :group 'all-the-icons + :type 'number) + +(defcustom all-the-icons-default-adjust -0.2 + "The default adjustment to be made to the `raise' display property of an icon." + :group 'all-the-icons + :type 'number) + +(defvar all-the-icons-font-families '() "List of defined icon font families.") +(defvar all-the-icons-font-names '() "List of defined font file names this package was built with.") + +(defvar all-the-icons-extension-icon-alist + '( + ("fish" all-the-icons-alltheicon "terminal" :face all-the-icons-lpink) + ("zsh" all-the-icons-alltheicon "terminal" :face all-the-icons-lcyan) + ("sh" all-the-icons-alltheicon "terminal" :face all-the-icons-purple) + ;; Meta + ("tags" all-the-icons-octicon "tag" :height 1.0 :v-adjust 0.0 :face all-the-icons-blue) + ("log" all-the-icons-octicon "bug" :height 1.0 :v-adjust 0.0 :face all-the-icons-maroon) + ;; Config + ("node" all-the-icons-alltheicon "nodejs" :height 1.0 :face all-the-icons-green) + ("babelrc" all-the-icons-fileicon "babel" :face all-the-icons-yellow) + ("bashrc" all-the-icons-alltheicon "script" :height 0.9 :face all-the-icons-dpink) + ("bowerrc" all-the-icons-alltheicon "bower" :height 1.0 :v-adjust 0.0 :face all-the-icons-silver) + ("ini" all-the-icons-octicon "settings" :v-adjust 0.0 :face all-the-icons-yellow) + ("eslintignore" all-the-icons-fileicon "eslint" :height 0.9 :face all-the-icons-purple) + ("eslint" all-the-icons-fileicon "eslint" :height 0.9 :face all-the-icons-lpurple) + ("git" all-the-icons-alltheicon "git" :height 1.0 :face all-the-icons-lred) + ("mk" all-the-icons-fileicon "gnu" :face all-the-icons-dorange) + ("cmake" all-the-icons-fileicon "cmake" :face all-the-icons-red) + ("dockerignore" all-the-icons-fileicon "dockerfile" :height 1.2 :face all-the-icons-dblue) + ("xml" all-the-icons-faicon "file-code-o" :height 0.95 :face all-the-icons-lorange) + ("json" all-the-icons-octicon "settings" :v-adjust 0.0 :face all-the-icons-yellow) + ("cson" all-the-icons-octicon "settings" :v-adjust 0.0 :face all-the-icons-yellow) + ("yml" all-the-icons-octicon "settings" :v-adjust 0.0 :face all-the-icons-dyellow) + ("yaml" all-the-icons-octicon "settings" :v-adjust 0.0 :face all-the-icons-dyellow) + ;; ? + ("pkg" all-the-icons-octicon "package" :v-adjust 0.0 :face all-the-icons-dsilver) + ("rpm" all-the-icons-octicon "package" :v-adjust 0.0 :face all-the-icons-dsilver) + ("elc" all-the-icons-octicon "file-binary" :v-adjust 0.0 :face all-the-icons-dsilver) + ("gz" all-the-icons-octicon "file-binary" :v-adjust 0.0 :face all-the-icons-lmaroon) + ("zip" all-the-icons-octicon "file-zip" :v-adjust 0.0 :face all-the-icons-lmaroon) + ("7z" all-the-icons-octicon "file-zip" :v-adjust 0.0 :face all-the-icons-lmaroon) + ("dat" all-the-icons-faicon "bar-chart" :face all-the-icons-cyan :height 0.9) + ("dmg" all-the-icons-octicon "tools" :v-adjust 0.0 :face all-the-icons-lsilver) + ("dll" all-the-icons-faicon "cogs" :face all-the-icons-silver) + ("ds_store" all-the-icons-faicon "cogs" :face all-the-icons-silver) + ;; Source Codes + ("scpt" all-the-icons-fileicon "apple" :face all-the-icons-pink) + ("aup" all-the-icons-fileicon "audacity" :face all-the-icons-yellow) + ("elm" all-the-icons-fileicon "elm" :face all-the-icons-blue) + ("erl" all-the-icons-alltheicon "erlang" :face all-the-icons-red :v-adjust -0.1 :height 0.9) + ("hrl" all-the-icons-alltheicon "erlang" :face all-the-icons-dred :v-adjust -0.1 :height 0.9) + ("eex" all-the-icons-alltheicon "elixir" :face all-the-icons-lorange :v-adjust -0.1 :height 0.9) + ("leex" all-the-icons-alltheicon "elixir" :face all-the-icons-lorange :v-adjust -0.1 :height 0.9) + ("heex" all-the-icons-alltheicon "elixir" :face all-the-icons-lorange :v-adjust -0.1 :height 0.9) + ("ex" all-the-icons-alltheicon "elixir" :face all-the-icons-lpurple :v-adjust -0.1 :height 0.9) + ("exs" all-the-icons-alltheicon "elixir" :face all-the-icons-lred :v-adjust -0.1 :height 0.9) + ("java" all-the-icons-alltheicon "java" :height 1.0 :face all-the-icons-purple) + ("gradle" all-the-icons-fileicon "gradle" :height 1.0 :face all-the-icons-silver) + ("ebuild" all-the-icons-fileicon "gentoo" :face all-the-icons-cyan) + ("eclass" all-the-icons-fileicon "gentoo" :face all-the-icons-blue) + ("go" all-the-icons-fileicon "go" :height 1.0 :face all-the-icons-blue) + ("jl" all-the-icons-fileicon "julia" :face all-the-icons-purple :v-adjust 0.0) + ("magik" all-the-icons-faicon "magic" :face all-the-icons-blue) + ("matlab" all-the-icons-fileicon "matlab" :face all-the-icons-orange) + ("nix" all-the-icons-fileicon "nix" :face all-the-icons-blue) + ("pl" all-the-icons-alltheicon "perl" :face all-the-icons-lorange) + ("pm" all-the-icons-alltheicon "perl" :face all-the-icons-lorange) + ("pl6" all-the-icons-fileicon "raku" :face all-the-icons-cyan) + ("pm6" all-the-icons-fileicon "raku" :face all-the-icons-pink) + ("pod" all-the-icons-alltheicon "perldocs" :height 1.2 :face all-the-icons-lgreen) + ("php" all-the-icons-fileicon "php" :face all-the-icons-lsilver) + ("pony" all-the-icons-fileicon "pony" :face all-the-icons-maroon) + ("ps1" all-the-icons-fileicon "powershell" :face all-the-icons-blue) + ("pro" all-the-icons-alltheicon "prolog" :height 1.1 :face all-the-icons-lmaroon) + ("proog" all-the-icons-alltheicon "prolog" :height 1.1 :face all-the-icons-lmaroon) + ("py" all-the-icons-alltheicon "python" :height 1.0 :face all-the-icons-dblue) + ("idr" all-the-icons-fileicon "idris" :face all-the-icons-red) + ("ipynb" all-the-icons-fileicon "jupyter" :height 1.0 :face all-the-icons-dorange) + ("gem" all-the-icons-alltheicon "ruby-alt" :face all-the-icons-red) + ("raku" all-the-icons-fileicon "raku" :face all-the-icons-cyan) + ("rakumod" all-the-icons-fileicon "raku" :face all-the-icons-pink) + ("rb" all-the-icons-octicon "ruby" :v-adjust 0.0 :face all-the-icons-lred) + ("rs" all-the-icons-alltheicon "rust" :height 1.2 :face all-the-icons-maroon) + ("rlib" all-the-icons-alltheicon "rust" :height 1.2 :face all-the-icons-dmaroon) + ("r" all-the-icons-fileicon "R" :face all-the-icons-lblue) + ("rd" all-the-icons-fileicon "R" :face all-the-icons-lblue) + ("rdx" all-the-icons-fileicon "R" :face all-the-icons-lblue) + ("rsx" all-the-icons-fileicon "R" :face all-the-icons-lblue) + ;; There seems to be a a bug with this font icon which does not + ;; let you propertise it without it reverting to being a lower + ;; case phi + ("c" all-the-icons-alltheicon "c-line" :face all-the-icons-blue) + ("h" all-the-icons-alltheicon "c-line" :face all-the-icons-purple) + ("m" all-the-icons-fileicon "apple" :v-adjust 0.0 :height 1.0) + ("mm" all-the-icons-fileicon "apple" :v-adjust 0.0 :height 1.0) + ;; + ("cc" all-the-icons-alltheicon "cplusplus-line" :v-adjust -0.2 :face all-the-icons-blue) + ("cpp" all-the-icons-alltheicon "cplusplus-line" :v-adjust -0.2 :face all-the-icons-blue) + ("cxx" all-the-icons-alltheicon "cplusplus-line" :v-adjust -0.2 :face all-the-icons-blue) + ("hh" all-the-icons-alltheicon "cplusplus-line" :v-adjust -0.2 :face all-the-icons-purple) + ("hpp" all-the-icons-alltheicon "cplusplus-line" :v-adjust -0.2 :face all-the-icons-purple) + ("hxx" all-the-icons-alltheicon "cplusplus-line" :v-adjust -0.2 :face all-the-icons-purple) + ;; Lisps + ("cl" all-the-icons-fileicon "clisp" :face all-the-icons-lorange) + ("l" all-the-icons-fileicon "lisp" :face all-the-icons-orange) + ("lisp" all-the-icons-fileicon "lisp" :face all-the-icons-orange) + ("hy" all-the-icons-fileicon "hy" :face all-the-icons-blue) + ("el" all-the-icons-fileicon "elisp" :height 1.0 :v-adjust -0.2 :face all-the-icons-purple) + ("clj" all-the-icons-alltheicon "clojure-line" :height 1.0 :face all-the-icons-blue :v-adjust 0.0) + ("cljc" all-the-icons-alltheicon "clojure-line" :height 1.0 :face all-the-icons-blue :v-adjust 0.0) + ("cljs" all-the-icons-fileicon "cljs" :height 1.0 :face all-the-icons-dblue :v-adjust 0.0) + ("coffee" all-the-icons-alltheicon "coffeescript" :height 1.0 :face all-the-icons-maroon) + ("iced" all-the-icons-alltheicon "coffeescript" :height 1.0 :face all-the-icons-lmaroon) + ("dart" all-the-icons-fileicon "dart" :height 1.0 :face all-the-icons-blue :v-adjust 0.0) + ("rkt" all-the-icons-fileicon "racket" :height 1.2 :face all-the-icons-red) + ("scrbl" all-the-icons-fileicon "racket" :height 1.2 :face all-the-icons-blue) + ;; Stylesheeting + ("css" all-the-icons-alltheicon "css3" :face all-the-icons-yellow) + ("scss" all-the-icons-alltheicon "sass" :face all-the-icons-pink) + ("sass" all-the-icons-alltheicon "sass" :face all-the-icons-dpink) + ("less" all-the-icons-alltheicon "less" :height 0.8 :face all-the-icons-dyellow) + ("postcss" all-the-icons-fileicon "postcss" :face all-the-icons-dred) + ("sss" all-the-icons-fileicon "postcss" :face all-the-icons-dred) + ("styl" all-the-icons-alltheicon "stylus" :face all-the-icons-lgreen) + ("csv" all-the-icons-octicon "graph" :v-adjust 0.0 :face all-the-icons-dblue) + ;; haskell + ("hs" all-the-icons-alltheicon "haskell" :height 1.0 :face all-the-icons-red) + ("chs" all-the-icons-alltheicon "haskell" :height 1.0 :face all-the-icons-red) + ("lhs" all-the-icons-alltheicon "haskell" :height 1.0 :face all-the-icons-red) + ("hsc" all-the-icons-alltheicon "haskell" :height 1.0 :face all-the-icons-red) + ;; Web modes + ("inky-haml" all-the-icons-fileicon "haml" :face all-the-icons-lyellow) + ("haml" all-the-icons-fileicon "haml" :face all-the-icons-lyellow) + ("htm" all-the-icons-alltheicon "html5" :face all-the-icons-orange) + ("html" all-the-icons-alltheicon "html5" :face all-the-icons-orange) + ("inky-er" all-the-icons-alltheicon "html5" :face all-the-icons-lred) + ("inky-erb" all-the-icons-alltheicon "html5" :face all-the-icons-lred) + ("erb" all-the-icons-alltheicon "html5" :face all-the-icons-lred) + ("hbs" all-the-icons-fileicon "moustache" :face all-the-icons-green) + ("inky-slim" all-the-icons-octicon "dashboard" :v-adjust 0.0 :face all-the-icons-yellow) + ("slim" all-the-icons-octicon "dashboard" :v-adjust 0.0 :face all-the-icons-yellow) + ("jade" all-the-icons-fileicon "jade" :face all-the-icons-red) + ("pug" all-the-icons-fileicon "pug-alt" :face all-the-icons-red) + ;; Javascript + ("d3js" all-the-icons-alltheicon "d3" :height 0.8 :face all-the-icons-lgreen) + ("re" all-the-icons-fileicon "reason" :height 1.0 :face all-the-icons-red-alt) + ("rei" all-the-icons-fileicon "reason" :height 1.0 :face all-the-icons-dred) + ("ml" all-the-icons-fileicon "ocaml" :height 1.0 :face all-the-icons-lpink) + ("mli" all-the-icons-fileicon "ocaml" :height 1.0 :face all-the-icons-dpink) + ("react" all-the-icons-alltheicon "react" :height 1.1 :face all-the-icons-lblue) + ("ts" all-the-icons-fileicon "typescript" :height 1.0 :v-adjust -0.1 :face all-the-icons-blue-alt) + ("js" all-the-icons-alltheicon "javascript" :height 1.0 :v-adjust 0.0 :face all-the-icons-yellow) + ("es" all-the-icons-alltheicon "javascript" :height 1.0 :v-adjust 0.0 :face all-the-icons-yellow) + ("jsx" all-the-icons-fileicon "jsx-2" :height 1.0 :v-adjust -0.1 :face all-the-icons-cyan-alt) + ("tsx" all-the-icons-fileicon "tsx" :height 1.0 :v-adjust -0.1 :face all-the-icons-cyan-alt) + ("njs" all-the-icons-alltheicon "nodejs" :height 1.2 :face all-the-icons-lgreen) + ("vue" all-the-icons-fileicon "vue" :face all-the-icons-lgreen) + + ("sbt" all-the-icons-fileicon "sbt" :face all-the-icons-red) + ("scala" all-the-icons-alltheicon "scala" :face all-the-icons-red) + ("scm" all-the-icons-fileicon "scheme" :height 1.2 :face all-the-icons-red) + ("swift" all-the-icons-alltheicon "swift" :height 1.0 :v-adjust -0.1 :face all-the-icons-green) + + ("tcl" all-the-icons-fileicon "tcl" :height 1.0 :face all-the-icons-dred) + + ("tf" all-the-icons-fileicon "terraform" :height 1.0 :face all-the-icons-purple-alt) + ("tfvars" all-the-icons-fileicon "terraform" :height 1.0 :face all-the-icons-purple-alt) + ("tfstate" all-the-icons-fileicon "terraform" :height 1.0 :face all-the-icons-purple-alt) + + ("asm" all-the-icons-fileicon "assembly" :height 1.0 :face all-the-icons-blue) + ;; Verilog(-AMS) and SystemVerilog(-AMS) + ("v" all-the-icons-fileicon "verilog" :height 1.0 :v-adjust -0.2 :face all-the-icons-red) + ("vams" all-the-icons-fileicon "verilog" :height 1.0 :v-adjust -0.2 :face all-the-icons-red) + ("sv" all-the-icons-fileicon "verilog" :height 1.0 :v-adjust -0.2 :face all-the-icons-red) + ("sva" all-the-icons-fileicon "verilog" :height 1.0 :v-adjust -0.2 :face all-the-icons-red) + ("svh" all-the-icons-fileicon "verilog" :height 1.0 :v-adjust -0.2 :face all-the-icons-red) + ("svams" all-the-icons-fileicon "verilog" :height 1.0 :v-adjust -0.2 :face all-the-icons-red) + ;; VHDL(-AMS) + ("vhd" all-the-icons-fileicon "vhdl" :face all-the-icons-blue) + ("vhdl" all-the-icons-fileicon "vhdl" :face all-the-icons-blue) + ("vhms" all-the-icons-fileicon "vhdl" :face all-the-icons-blue) + ;; Cabal + ("cabal" all-the-icons-fileicon "cabal" :face all-the-icons-lblue) + ;; Kotlin + ("kt" all-the-icons-fileicon "kotlin" :face all-the-icons-orange) + ("kts" all-the-icons-fileicon "kotlin" :face all-the-icons-orange) + ;; Nimrod + ("nim" all-the-icons-fileicon "nimrod" :face all-the-icons-yellow) + ("nims" all-the-icons-fileicon "nimrod" :face all-the-icons-yellow) + ;; SQL + ("sql" all-the-icons-octicon "database" :face all-the-icons-silver) + ;; Styles + ("styles" all-the-icons-material "style" :face all-the-icons-red) + ;; Lua + ("lua" all-the-icons-fileicon "lua" :face all-the-icons-dblue) + ;; ASCII doc + ("adoc" all-the-icons-fileicon "asciidoc" :face all-the-icons-lblue) + ("asciidoc" all-the-icons-fileicon "asciidoc" :face all-the-icons-lblue) + ;; Puppet + ("pp" all-the-icons-fileicon "puppet" :face all-the-icons-yellow) + ;; Jinja + ("j2" all-the-icons-fileicon "jinja" :face all-the-icons-silver) + ("jinja2" all-the-icons-fileicon "jinja" :face all-the-icons-silver) + ;; Docker + ("dockerfile" all-the-icons-fileicon "dockerfile" :face all-the-icons-cyan) + ;; Vagrant + ("vagrantfile" all-the-icons-fileicon "vagrant" :face all-the-icons-blue) + ;; GLSL + ("glsl" all-the-icons-fileicon "vertex-shader" :face all-the-icons-blue) + ("vert" all-the-icons-fileicon "vertex-shader" :face all-the-icons-blue) + ("tesc" all-the-icons-fileicon "vertex-shader" :face all-the-icons-purple) + ("tese" all-the-icons-fileicon "vertex-shader" :face all-the-icons-dpurple) + ("geom" all-the-icons-fileicon "vertex-shader" :face all-the-icons-green) + ("frag" all-the-icons-fileicon "vertex-shader" :face all-the-icons-red) + ("comp" all-the-icons-fileicon "vertex-shader" :face all-the-icons-dblue) + ;; CUDA + ("cu" all-the-icons-fileicon "nvidia" :face all-the-icons-green) + ("cuh" all-the-icons-fileicon "nvidia" :face all-the-icons-green) + ;; Fortran + ("f90" all-the-icons-fileicon "fortran" :face all-the-icons-purple) + ;; C# + ("cs" all-the-icons-alltheicon "csharp-line" :face all-the-icons-dblue) + ("csx" all-the-icons-alltheicon "csharp-line" :face all-the-icons-dblue) + ;; F# + ("fs" all-the-icons-fileicon "fsharp" :face all-the-icons-blue-alt) + ("fsi" all-the-icons-fileicon "fsharp" :face all-the-icons-blue-alt) + ("fsx" all-the-icons-fileicon "fsharp" :face all-the-icons-blue-alt) + ("fsscript" all-the-icons-fileicon "fsharp" :face all-the-icons-blue-alt) + ;; zig + ("zig" all-the-icons-fileicon "zig" :face all-the-icons-orange) + ;; File Types + ("ico" all-the-icons-octicon "file-media" :v-adjust 0.0 :face all-the-icons-blue) + ("png" all-the-icons-octicon "file-media" :v-adjust 0.0 :face all-the-icons-orange) + ("gif" all-the-icons-octicon "file-media" :v-adjust 0.0 :face all-the-icons-green) + ("jpeg" all-the-icons-octicon "file-media" :v-adjust 0.0 :face all-the-icons-dblue) + ("jpg" all-the-icons-octicon "file-media" :v-adjust 0.0 :face all-the-icons-dblue) + ("webp" all-the-icons-octicon "file-media" :v-adjust 0.0 :face all-the-icons-dblue) + ;; Audio + ("mp3" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("wav" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("m4a" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("ogg" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("flac" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("opus" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("au" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("aif" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("aifc" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("aiff" all-the-icons-faicon "volume-up" :face all-the-icons-dred) + ("svg" all-the-icons-alltheicon "svg" :height 0.9 :face all-the-icons-lgreen) + ;; Video + ("mov" all-the-icons-faicon "film" :face all-the-icons-blue) + ("mp4" all-the-icons-faicon "film" :face all-the-icons-blue) + ("ogv" all-the-icons-faicon "film" :face all-the-icons-dblue) + ("mpg" all-the-icons-faicon "film" :face all-the-icons-blue) + ("mpeg" all-the-icons-faicon "film" :face all-the-icons-blue) + ("flv" all-the-icons-faicon "film" :face all-the-icons-blue) + ("ogv" all-the-icons-faicon "film" :face all-the-icons-dblue) + ("mkv" all-the-icons-faicon "film" :face all-the-icons-blue) + ("webm" all-the-icons-faicon "film" :face all-the-icons-blue) + ;; Fonts + ("ttf" all-the-icons-fileicon "font" :v-adjust 0.0 :face all-the-icons-dcyan) + ("woff" all-the-icons-fileicon "font" :v-adjust 0.0 :face all-the-icons-cyan) + ("woff2" all-the-icons-fileicon "font" :v-adjust 0.0 :face all-the-icons-cyan) + ;; Doc + ("pdf" all-the-icons-octicon "file-pdf" :v-adjust 0.0 :face all-the-icons-dred) + ("text" all-the-icons-octicon "file-text" :v-adjust 0.0 :face all-the-icons-cyan) + ("txt" all-the-icons-octicon "file-text" :v-adjust 0.0 :face all-the-icons-cyan) + ("doc" all-the-icons-fileicon "word" :face all-the-icons-blue) + ("docx" all-the-icons-fileicon "word" :face all-the-icons-blue) + ("docm" all-the-icons-fileicon "word" :face all-the-icons-blue) + ("texi" all-the-icons-fileicon "tex" :face all-the-icons-lred) + ("tex" all-the-icons-fileicon "tex" :face all-the-icons-lred) + ("md" all-the-icons-octicon "markdown" :v-adjust 0.0 :face all-the-icons-lblue) + ("bib" all-the-icons-fileicon "bib" :face all-the-icons-maroon) + ("org" all-the-icons-fileicon "org" :face all-the-icons-lgreen) + ("pps" all-the-icons-fileicon "powerpoint" :face all-the-icons-orange) + ("ppt" all-the-icons-fileicon "powerpoint" :face all-the-icons-orange) + ("pptsx" all-the-icons-fileicon "powerpoint" :face all-the-icons-orange) + ("ppttx" all-the-icons-fileicon "powerpoint" :face all-the-icons-orange) + ("knt" all-the-icons-fileicon "powerpoint" :face all-the-icons-cyan) + ("xlsx" all-the-icons-fileicon "excel" :face all-the-icons-dgreen) + ("xlsm" all-the-icons-fileicon "excel" :face all-the-icons-dgreen) + ("xlsb" all-the-icons-fileicon "excel" :face all-the-icons-dgreen) + ("xltx" all-the-icons-fileicon "excel" :face all-the-icons-dgreen) + ("xltm" all-the-icons-fileicon "excel" :face all-the-icons-dgreen) + ("ly" all-the-icons-faicon "music" :face all-the-icons-green) + ;; + ("key" all-the-icons-octicon "key" :v-adjust 0.0 :face all-the-icons-lblue) + ("pem" all-the-icons-octicon "key" :v-adjust 0.0 :face all-the-icons-orange) + ("p12" all-the-icons-octicon "key" :v-adjust 0.0 :face all-the-icons-dorange) + ("crt" all-the-icons-octicon "key" :v-adjust 0.0 :face all-the-icons-lblue) + ("pub" all-the-icons-octicon "key" :v-adjust 0.0 :face all-the-icons-blue) + ("gpg" all-the-icons-octicon "key" :v-adjust 0.0 :face all-the-icons-lblue) + ("cache" all-the-icons-octicon "database" :height 1.0 :v-adjust 0.0 :face all-the-icons-green))) + + +(define-obsolete-variable-alias 'all-the-icons-icon-alist + 'all-the-icons-regexp-icon-alist + "5.0.0" + "`all-the-icons-icon-alist' has been split to +`all-the-icons-extension-icon-alist' and `all-the-icons-regexp-icon-alist' +for performance sake.") + +(defvar all-the-icons-regexp-icon-alist + '( + ;; + ("^TAGS$" all-the-icons-octicon "tag" :height 1.0 :v-adjust 0.0 :face all-the-icons-blue) + ("^TODO$" all-the-icons-octicon "checklist" :v-adjust 0.0 :face all-the-icons-lyellow) + ("^LICENSE$" all-the-icons-octicon "book" :height 1.0 :v-adjust 0.0 :face all-the-icons-blue) + ("^readme" all-the-icons-octicon "book" :height 1.0 :v-adjust 0.0 :face all-the-icons-lcyan) + + ;; Config + ("^bower.json$" all-the-icons-alltheicon "bower" :height 1.0 :v-adjust 0.0 :face all-the-icons-lorange) + ("nginx$" all-the-icons-fileicon "nginx" :height 0.9 :face all-the-icons-dgreen) + ("apache$" all-the-icons-alltheicon "apache" :height 0.9 :face all-the-icons-dgreen) + ("^Makefile$" all-the-icons-fileicon "gnu" :face all-the-icons-dorange) + ("^CMakeLists.txt$" all-the-icons-fileicon "cmake" :face all-the-icons-red) + ("^CMakeCache.txt$" all-the-icons-fileicon "cmake" :face all-the-icons-blue) + + ("^\\.?Dockerfile" all-the-icons-fileicon "dockerfile" :face all-the-icons-blue) + ("^Brewfile$" all-the-icons-faicon "beer" :face all-the-icons-lsilver) + ("\\.npmignore$" all-the-icons-fileicon "npm" :face all-the-icons-dred) + ("^package.json$" all-the-icons-fileicon "npm" :face all-the-icons-red) + ("^package.lock.json$" all-the-icons-fileicon "npm" :face all-the-icons-dred) + ("^yarn\\.lock" all-the-icons-fileicon "yarn" :face all-the-icons-blue-alt) + + ;; ;; AWS + ("^stack.*.json$" all-the-icons-alltheicon "aws" :face all-the-icons-orange) + + + ("^serverless\\.yml$" all-the-icons-faicon "bolt" :v-adjust 0.0 :face all-the-icons-yellow) + + ;; lock files + ("~$" all-the-icons-octicon "lock" :v-adjust 0.0 :face all-the-icons-maroon) + + ;; Source Codes + ("^mix.lock$" all-the-icons-alltheicon "elixir" :face all-the-icons-lyellow :v-adjust -0.1 :height 0.9) + + ("^Gemfile\\(\\.lock\\)?$" all-the-icons-alltheicon "ruby-alt" :face all-the-icons-red) + ("_?test\\.rb$" all-the-icons-fileicon "test-ruby" :height 1.0 :v-adjust 0.0 :face all-the-icons-red) + ("_?test_helper\\.rb$" all-the-icons-fileicon "test-ruby" :height 1.0 :v-adjust 0.0 :face all-the-icons-dred) + ("_?spec\\.rb$" all-the-icons-fileicon "test-ruby" :height 1.0 :v-adjust 0.0 :face all-the-icons-red) + ("_?spec_helper\\.rb$" all-the-icons-fileicon "test-ruby" :height 1.0 :v-adjust 0.0 :face all-the-icons-dred) + + ("-?spec\\.ts$" all-the-icons-fileicon "test-typescript" :height 1.0 :v-adjust 0.0 :face all-the-icons-blue) + ("-?test\\.ts$" all-the-icons-fileicon "test-typescript" :height 1.0 :v-adjust 0.0 :face all-the-icons-blue) + ("-?spec\\.js$" all-the-icons-fileicon "test-js" :height 1.0 :v-adjust 0.0 :face all-the-icons-lpurple) + ("-?test\\.js$" all-the-icons-fileicon "test-js" :height 1.0 :v-adjust 0.0 :face all-the-icons-lpurple) + ("-?spec\\.jsx$" all-the-icons-fileicon "test-react" :height 1.0 :v-adjust 0.0 :face all-the-icons-blue-alt) + ("-?test\\.jsx$" all-the-icons-fileicon "test-react" :height 1.0 :v-adjust 0.0 :face all-the-icons-blue-alt) + + ;; Git + ("^MERGE_" all-the-icons-octicon "git-merge" :v-adjust 0.0 :face all-the-icons-red) + ("^COMMIT_EDITMSG" all-the-icons-octicon "git-commit" :v-adjust 0.0 :face all-the-icons-red) + + ;; Stylesheeting + ("stylelint" all-the-icons-fileicon "stylelint" :face all-the-icons-lyellow) + ;; JavaScript + ("^gulpfile" all-the-icons-alltheicon "gulp" :height 1.0 :face all-the-icons-lred) + ("^gruntfile" all-the-icons-alltheicon "grunt" :height 1.0 :v-adjust -0.1 :face all-the-icons-lyellow) + ("^webpack" all-the-icons-fileicon "webpack" :face all-the-icons-lblue) + + ("bookmark" all-the-icons-octicon "bookmark" :height 1.1 :v-adjust 0.0 :face all-the-icons-lpink) + + ("^\\*scratch\\*$" all-the-icons-faicon "sticky-note" :face all-the-icons-lyellow) + ("^\\*scratch.*" all-the-icons-faicon "sticky-note" :face all-the-icons-yellow) + ("^\\*new-tab\\*$" all-the-icons-material "star" :face all-the-icons-cyan) + + ("^\\." all-the-icons-octicon "gear" :v-adjust 0.0) + )) + +(defvar all-the-icons-default-file-icon + '(all-the-icons-faicon "file-o" :v-adjust 0.0 :face all-the-icons-dsilver)) + +(defvar all-the-icons-dir-icon-alist + '( + ("trash" all-the-icons-faicon "trash-o" :height 1.2 :v-adjust -0.1) + ("dropbox" all-the-icons-faicon "dropbox" :height 1.0 :v-adjust -0.1) + ("google[ _-]drive" all-the-icons-alltheicon "google-drive" :height 1.0 :v-adjust -0.1) + ("^atom$" all-the-icons-alltheicon "atom" :height 1.2 :v-adjust -0.1) + ("documents" all-the-icons-faicon "book" :height 1.0 :v-adjust -0.1) + ("download" all-the-icons-faicon "cloud-download" :height 0.9 :v-adjust -0.1) + ("desktop" all-the-icons-octicon "device-desktop" :height 1.0 :v-adjust -0.1) + ("pictures" all-the-icons-faicon "picture-o" :height 0.9 :v-adjust -0.2) + ("photos" all-the-icons-faicon "camera-retro" :height 1.0 :v-adjust -0.1) + ("music" all-the-icons-faicon "music" :height 1.0 :v-adjust -0.1) + ("movies" all-the-icons-faicon "film" :height 0.9 :v-adjust -0.1) + ("code" all-the-icons-octicon "code" :height 1.1 :v-adjust -0.1) + ("workspace" all-the-icons-octicon "code" :height 1.1 :v-adjust -0.1) + ("test" all-the-icons-fileicon "test-dir" :height 0.9) + ("\\.git" all-the-icons-alltheicon "git" :height 1.0) + (".?" all-the-icons-octicon "file-directory" :height 1.0 :v-adjust -0.1) + )) + +(defvar all-the-icons-weather-icon-alist + '( + ("tornado" all-the-icons-wicon "tornado") + ("hurricane" all-the-icons-wicon "hurricane") + ("thunderstorms" all-the-icons-wicon "thunderstorm") + ("sunny" all-the-icons-wicon "day-sunny") + ("rain.*snow" all-the-icons-wicon "rain-mix") + ("rain.*hail" all-the-icons-wicon "rain-mix") + ("sleet" all-the-icons-wicon "sleet") + ("hail" all-the-icons-wicon "hail") + ("drizzle" all-the-icons-wicon "sprinkle") + ("rain" all-the-icons-wicon "showers" :height 1.1 :v-adjust 0.0) + ("showers" all-the-icons-wicon "showers") + ("blowing.*snow" all-the-icons-wicon "snow-wind") + ("snow" all-the-icons-wicon "snow") + ("dust" all-the-icons-wicon "dust") + ("fog" all-the-icons-wicon "fog") + ("haze" all-the-icons-wicon "day-haze") + ("smoky" all-the-icons-wicon "smoke") + ("blustery" all-the-icons-wicon "cloudy-windy") + ("windy" all-the-icons-wicon "cloudy-gusts") + ("cold" all-the-icons-wicon "snowflake-cold") + ("partly.*cloudy.*night" all-the-icons-wicon "night-alt-partly-cloudy") + ("partly.*cloudy" all-the-icons-wicon "day-cloudy-high") + ("cloudy.*night" all-the-icons-wicon "night-alt-cloudy") + ("cxloudy.*day" all-the-icons-wicon "day-cloudy") + ("cloudy" all-the-icons-wicon "cloudy") + ("clear.*night" all-the-icons-wicon "night-clear") + ("fair.*night" all-the-icons-wicon "stars") + ("fair.*day" all-the-icons-wicon "horizon") + ("hot" all-the-icons-wicon "hot") + ("not.*available" all-the-icons-wicon "na") + )) + +(defvar all-the-icons-mode-icon-alist + '( + (emacs-lisp-mode all-the-icons-fileicon "elisp" :height 1.0 :v-adjust -0.1 :face all-the-icons-purple) + (circe-server-mode all-the-icons-faicon "commenting-o" :height 1.0 :v-adjust 0.0) + (circe-channel-mode all-the-icons-faicon "commenting-o" :height 1.0 :v-adjust 0.0) + (erc-mode all-the-icons-faicon "commenting-o" :height 1.0 :v-adjust 0.0) + (inferior-emacs-lisp-mode all-the-icons-fileicon "elisp" :height 1.0 :v-adjust -0.1 :face all-the-icons-lblue) + (dired-mode all-the-icons-octicon "file-directory" :v-adjust 0.0) + (lisp-interaction-mode all-the-icons-fileicon "lisp" :v-adjust -0.1 :face all-the-icons-orange) + (sly-mrepl-mode all-the-icons-fileicon "clisp" :v-adjust -0.1 :face all-the-icons-orange) + (slime-repl-mode all-the-icons-fileicon "clisp" :v-adjust -0.1 :face all-the-icons-orange) + (org-mode all-the-icons-fileicon "org" :v-adjust 0.0 :face all-the-icons-lgreen) + (typescript-mode all-the-icons-fileicon "typescript" :v-adjust -0.1 :face all-the-icons-blue-alt) + (typescript-tsx-mode all-the-icons-fileicon "tsx" :v-adjust -0.1 :face all-the-icons-cyan-alt) + (js-mode all-the-icons-alltheicon "javascript" :v-adjust -0.1 :face all-the-icons-yellow) + (js-jsx-mode all-the-icons-alltheicon "javascript" :v-adjust -0.1 :face all-the-icons-yellow) + (js2-mode all-the-icons-alltheicon "javascript" :v-adjust -0.1 :face all-the-icons-yellow) + (js3-mode all-the-icons-alltheicon "javascript" :v-adjust -0.1 :face all-the-icons-yellow) + (rjsx-mode all-the-icons-fileicon "jsx-2" :v-adjust -0.1 :face all-the-icons-cyan-alt) + (term-mode all-the-icons-octicon "terminal" :v-adjust 0.2) + (vterm-mode all-the-icons-octicon "terminal" :v-adjust 0.2) + (eshell-mode all-the-icons-octicon "terminal" :v-adjust 0.0 :face all-the-icons-purple) + (magit-refs-mode all-the-icons-octicon "git-branch" :v-adjust 0.0 :face all-the-icons-red) + (magit-process-mode all-the-icons-octicon "mark-github" :v-adjust 0.0) + (magit-diff-mode all-the-icons-octicon "git-compare" :v-adjust 0.0 :face all-the-icons-lblue) + (ediff-mode all-the-icons-octicon "git-compare" :v-adjust 0.0 :Face all-the-icons-red) + (comint-mode all-the-icons-faicon "terminal" :v-adjust 0.0 :face all-the-icons-lblue) + (eww-mode all-the-icons-faicon "firefox" :v-adjust -0.1 :face all-the-icons-red) + (org-agenda-mode all-the-icons-octicon "checklist" :v-adjust 0.0 :face all-the-icons-lgreen) + (cfw:calendar-mode all-the-icons-octicon "calendar" :v-adjust 0.0) + (ibuffer-mode all-the-icons-faicon "files-o" :v-adjust 0.0 :face all-the-icons-dsilver) + (messages-buffer-mode all-the-icons-faicon "file-o" :v-adjust 0.0 :face all-the-icons-dsilver) + (help-mode all-the-icons-faicon "info" :v-adjust -0.1 :face all-the-icons-purple) + (benchmark-init/tree-mode all-the-icons-octicon "dashboard" :v-adjust 0.0) + (jenkins-mode all-the-icons-fileicon "jenkins" :face all-the-icons-blue) + (magit-popup-mode all-the-icons-alltheicon "git" :face all-the-icons-red) + (magit-status-mode all-the-icons-alltheicon "git" :face all-the-icons-lred) + (magit-log-mode all-the-icons-alltheicon "git" :face all-the-icons-green) + (mu4e-compose-mode all-the-icons-octicon "pencil" :v-adjust 0.0) + (mu4e-headers-mode all-the-icons-octicon "mail" :v-adjust 0.0) + (mu4e-main-mode all-the-icons-octicon "mail" :v-adjust 0.0) + (mu4e-view-mode all-the-icons-octicon "mail-read" :v-adjust 0.0) + (package-menu-mode all-the-icons-faicon "archive" :height 1.0 :v-adjust 0.0 :face all-the-icons-silver) + (paradox-menu-mode all-the-icons-faicon "archive" :height 1.0 :v-adjust 0.0 :face all-the-icons-silver) + (Custom-mode all-the-icons-octicon "settings" :v-adjust -0.1) + + ;; Special matcher for Web Mode based on the `web-mode-content-type' of the current buffer + (web-mode all-the-icons--web-mode-icon) + + (fundamental-mode all-the-icons-fileicon "elisp" :height 1.0 :v-adjust -0.1 :face all-the-icons-dsilver) + (special-mode all-the-icons-fileicon "elisp" :height 1.0 :v-adjust -0.1 :face all-the-icons-yellow) + (text-mode all-the-icons-octicon "file-text" :v-adjust 0.0 :face all-the-icons-cyan) + (enh-ruby-mode all-the-icons-alltheicon "ruby-alt" :face all-the-icons-lred) + (ruby-mode all-the-icons-alltheicon "ruby-alt" :face all-the-icons-lred) + (inf-ruby-mode all-the-icons-alltheicon "ruby-alt" :face all-the-icons-red) + (projectile-rails-compilation-mode all-the-icons-alltheicon "ruby-alt" :face all-the-icons-red) + (rspec-compilation-mode all-the-icons-alltheicon "ruby-alt" :face all-the-icons-red) + (rake-compilation-mode all-the-icons-alltheicon "ruby-alt" :face all-the-icons-red) + (sh-mode all-the-icons-alltheicon "terminal" :face all-the-icons-purple) + (shell-mode all-the-icons-alltheicon "terminal" :face all-the-icons-purple) + (fish-mode all-the-icons-alltheicon "terminal" :face all-the-icons-lpink) + (nginx-mode all-the-icons-fileicon "nginx" :height 0.9 :face all-the-icons-dgreen) + (apache-mode all-the-icons-alltheicon "apache" :height 0.9 :face all-the-icons-dgreen) + (makefile-mode all-the-icons-fileicon "gnu" :face all-the-icons-dorange) + (cmake-mode all-the-icons-fileicon "cmake" :face all-the-icons-red) + (dockerfile-mode all-the-icons-fileicon "dockerfile" :face all-the-icons-blue) + (docker-compose-mode all-the-icons-fileicon "dockerfile" :face all-the-icons-lblue) + (nxml-mode all-the-icons-faicon "file-code-o" :height 0.95 :face all-the-icons-lorange) + (json-mode all-the-icons-octicon "settings" :face all-the-icons-yellow) + (yaml-mode all-the-icons-octicon "settings" :v-adjust 0.0 :face all-the-icons-dyellow) + (elisp-byte-code-mode all-the-icons-octicon "file-binary" :v-adjust 0.0 :face all-the-icons-dsilver) + (archive-mode all-the-icons-octicon "file-zip" :v-adjust 0.0 :face all-the-icons-lmaroon) + (elm-mode all-the-icons-fileicon "elm" :face all-the-icons-blue) + (erlang-mode all-the-icons-alltheicon "erlang" :face all-the-icons-red :v-adjust -0.1 :height 0.9) + (elixir-mode all-the-icons-alltheicon "elixir" :face all-the-icons-lorange :v-adjust -0.1 :height 0.9) + (java-mode all-the-icons-alltheicon "java" :height 1.0 :face all-the-icons-purple) + (go-mode all-the-icons-fileicon "go" :height 1.0 :face all-the-icons-blue) + (matlab-mode all-the-icons-fileicon "matlab" :face all-the-icons-orange) + (nix-mode all-the-icons-fileicon "nix" :face all-the-icons-blue) + (perl-mode all-the-icons-alltheicon "perl" :face all-the-icons-lorange) + (cperl-mode all-the-icons-alltheicon "perl" :face all-the-icons-lorange) + (php-mode all-the-icons-fileicon "php" :face all-the-icons-lsilver) + (prolog-mode all-the-icons-alltheicon "prolog" :height 1.1 :face all-the-icons-lmaroon) + (python-mode all-the-icons-alltheicon "python" :height 1.0 :face all-the-icons-dblue) + (inferior-python-mode all-the-icons-alltheicon "python" :height 1.0 :face all-the-icons-dblue) + (racket-mode all-the-icons-fileicon "racket" :height 1.2 :face all-the-icons-red) + (rust-mode all-the-icons-alltheicon "rust" :height 1.2 :face all-the-icons-maroon) + (scala-mode all-the-icons-alltheicon "scala" :face all-the-icons-red) + (scheme-mode all-the-icons-fileicon "scheme" :height 1.2 :face all-the-icons-red) + (swift-mode all-the-icons-alltheicon "swift" :height 1.0 :v-adjust -0.1 :face all-the-icons-green) + (c-mode all-the-icons-alltheicon "c-line" :face all-the-icons-blue) + (c++-mode all-the-icons-alltheicon "cplusplus-line" :v-adjust -0.2 :face all-the-icons-blue) + (csharp-mode all-the-icons-alltheicon "csharp-line" :face all-the-icons-dblue) + (clojure-mode all-the-icons-alltheicon "clojure" :height 1.0 :face all-the-icons-blue) + (cider-repl-mode all-the-icons-alltheicon "clojure" :height 1.0 :face all-the-icons-green) + (clojurescript-mode all-the-icons-fileicon "cljs" :height 1.0 :face all-the-icons-dblue) + (coffee-mode all-the-icons-alltheicon "coffeescript" :height 1.0 :face all-the-icons-maroon) + (lisp-mode all-the-icons-fileicon "lisp" :face all-the-icons-orange) + (css-mode all-the-icons-alltheicon "css3" :face all-the-icons-yellow) + (scss-mode all-the-icons-alltheicon "sass" :face all-the-icons-pink) + (sass-mode all-the-icons-alltheicon "sass" :face all-the-icons-dpink) + (less-css-mode all-the-icons-alltheicon "less" :height 0.8 :face all-the-icons-dyellow) + (stylus-mode all-the-icons-alltheicon "stylus" :face all-the-icons-lgreen) + (csv-mode all-the-icons-octicon "graph" :v-adjust 0.0 :face all-the-icons-dblue) + (haskell-mode all-the-icons-alltheicon "haskell" :height 1.0 :face all-the-icons-red) + (haskell-c2hs-mode all-the-icons-alltheicon "haskell" :height 1.0 :face all-the-icons-red) + (literate-haskell-mode all-the-icons-alltheicon "haskell" :height 1.0 :face all-the-icons-red) + (haml-mode all-the-icons-fileicon "haml" :face all-the-icons-lyellow) + (html-mode all-the-icons-alltheicon "html5" :face all-the-icons-orange) + (rhtml-mode all-the-icons-alltheicon "html5" :face all-the-icons-lred) + (mustache-mode all-the-icons-fileicon "moustache" :face all-the-icons-green) + (slim-mode all-the-icons-octicon "dashboard" :v-adjust 0.0 :face all-the-icons-yellow) + (jade-mode all-the-icons-fileicon "jade" :face all-the-icons-red) + (pug-mode all-the-icons-fileicon "pug" :face all-the-icons-red) + (react-mode all-the-icons-alltheicon "react" :height 1.1 :face all-the-icons-lblue) + (image-mode all-the-icons-octicon "file-media" :v-adjust 0.0 :face all-the-icons-blue) + (texinfo-mode all-the-icons-fileicon "tex" :face all-the-icons-lred) + (markdown-mode all-the-icons-octicon "markdown" :v-adjust 0.0 :face all-the-icons-lblue) + (bibtex-mode all-the-icons-fileicon "bib" :face all-the-icons-maroon) + (org-mode all-the-icons-fileicon "org" :face all-the-icons-lgreen) + (compilation-mode all-the-icons-faicon "cogs" :v-adjust 0.0 :height 1.0) + (objc-mode all-the-icons-faicon "apple" :v-adjust 0.0 :height 1.0) + (tuareg-mode all-the-icons-fileicon "ocaml" :v-adjust 0.0 :height 1.0) + (purescript-mode all-the-icons-fileicon "purescript" :v-adjust 0.0 :height 1.0) + (verilog-mode all-the-icons-fileicon "verilog" :height 1.0 :v-adjust -0.2 :face all-the-icons-red) + (vhdl-mode all-the-icons-fileicon "vhdl" :face all-the-icons-blue) + (haskell-cabal-mode all-the-icons-fileicon "cabal" :face all-the-icons-lblue) + (kotlin-mode all-the-icons-fileicon "kotlin" :face all-the-icons-orange) + (nim-mode all-the-icons-fileicon "nimrod" :face all-the-icons-yellow) + (sql-mode all-the-icons-octicon "database" :face all-the-icons-silver) + (lua-mode all-the-icons-fileicon "lua" :face all-the-icons-dblue) + (adoc-mode all-the-icons-fileicon "asciidoc" :face all-the-icons-lblue) + (puppet-mode all-the-icons-fileicon "puppet" :face all-the-icons-yellow) + (jinja2-mode all-the-icons-fileicon "jinja" :face all-the-icons-silver) + (powershell-mode all-the-icons-fileicon "powershell" :face all-the-icons-blue) + (tex-mode all-the-icons-fileicon "tex" :face all-the-icons-lred) + (latex-mode all-the-icons-fileicon "tex" :face all-the-icons-lred) + (dart-mode all-the-icons-fileicon "dart" :height 1.0 :face all-the-icons-blue) + (fsharp-mode all-the-icons-fileicon "fsharp" :height 1.0 :face all-the-icons-blue) + (asm-mode all-the-icons-fileicon "assembly" :height 1.0 :face all-the-icons-blue) + (nasm-mode all-the-icons-fileicon "assembly" :height 1.0 :face all-the-icons-blue) + (tcl-mode all-the-icons-fileicon "tcl" :height 1.0 :face all-the-icons-dred) + (cuda-mode all-the-icons-fileicon "nvidia" :face all-the-icons-green) + (f90-mode all-the-icons-fileicon "fortran" :face all-the-icons-purple) + (hy-mode all-the-icons-fileicon "hy" :face all-the-icons-blue) + (glsl-mode all-the-icons-fileicon "vertex-shader" :face all-the-icons-green) + (zig-mode all-the-icons-fileicon "zig" :face all-the-icons-orange) + (pdf-view-mode all-the-icons-octicon "file-pdf" :v-adjust 0.0 :face all-the-icons-dred) + (elfeed-search-mode all-the-icons-faicon "rss-square" :face all-the-icons-orange) + (elfeed-show-mode all-the-icons-faicon "rss" :face all-the-icons-orange) + (lilypond-mode all-the-icons-faicon "music" :face all-the-icons-green) + (magik-session-mode all-the-icons-alltheicon "terminal" :face all-the-icons-blue) + (magik-cb-mode all-the-icons-faicon "book" :face all-the-icons-blue))) + +(defvar all-the-icons-url-alist + '( + ;; Social media and communities + ("^\\(https?://\\)?\\(www\\.\\)?del\\.icio\\.us" all-the-icons-faicon "delicious") + ("^\\(https?://\\)?\\(www\\.\\)?behance\\.net" all-the-icons-faicon "behance") + ("^\\(https?://\\)?\\(www\\.\\)?dribbble\\.com" all-the-icons-faicon "dribbble") + ("^\\(https?://\\)?\\(www\\.\\)?facebook\\.com" all-the-icons-faicon "facebook-official") + ("^\\(https?://\\)?\\(www\\.\\)?glide\\.me" all-the-icons-faicon "glide-g") + ("^\\(https?://\\)?\\(www\\.\\)?plus\\.google\\.com" all-the-icons-faicon "google-plus") + ("linkedin\\.com" all-the-icons-faicon "linkedin") + ("^\\(https?://\\)?\\(www\\.\\)?ok\\.ru" all-the-icons-faicon "odnoklassniki") + ("^\\(https?://\\)?\\(www\\.\\)?reddit\\.com" all-the-icons-faicon "reddit-alien") + ("^\\(https?://\\)?\\(www\\.\\)?slack\\.com" all-the-icons-faicon "slack") + ("^\\(https?://\\)?\\(www\\.\\)?snapchat\\.com" all-the-icons-faicon "snapchat-ghost") + ("^\\(https?://\\)?\\(www\\.\\)?weibo\\.com" all-the-icons-faicon "weibo") + ("^\\(https?://\\)?\\(www\\.\\)?twitter\\.com" all-the-icons-faicon "twitter") + ;; Blogging + ("joomla\\.org" all-the-icons-faicon "joomla") + ("^\\(https?://\\)?\\(www\\.\\)?medium\\.com" all-the-icons-faicon "medium") + ("tumblr\\.com" all-the-icons-faicon "tumblr") + ("^wordpress\\.com" all-the-icons-faicon "wordpress") + ;; Programming + ("^\\(https?://\\)?\\(www\\.\\)?bitbucket\\.org" all-the-icons-faicon "bitbucket") + ("^\\(https?://\\)?\\(www\\.\\)?codepen\\.io" all-the-icons-faicon "codepen") + ("^\\(https?://\\)?\\(www\\.\\)?codiepie\\.com" all-the-icons-faicon "codiepie") + ("^\\(https?://\\)?\\(www\\.\\)?gist\\.github\\.com" all-the-icons-octicon "gist") + ("^\\(https?://\\)?\\(www\\.\\)?github\\.com" all-the-icons-octicon "mark-github") + ("^\\(https?://\\)?\\(www\\.\\)?gitlab\\.com" all-the-icons-faicon "gitlab") + ("^\\(https?://\\)?\\(www\\.\\)?news\\.ycombinator\\.com" all-the-icons-faicon "hacker-news") + ("^\\(https?://\\)?\\(www\\.\\)?jsfiddle\\.net" all-the-icons-faicon "jsfiddle") + ("^\\(https?://\\)?\\(www\\.\\)?maxcdn\\.com" all-the-icons-faicon "maxcdn") + ("^\\(https?://\\)?\\(www\\.\\)?stackoverflow\\.com" all-the-icons-faicon "stack-overflow") + ;; Video + ("^\\(https?://\\)?\\(www\\.\\)?twitch\\.tv" all-the-icons-faicon "twitch") + ("^\\(https?://\\)?\\(www\\.\\)?vimeo\\.com" all-the-icons-faicon "vimeo") + ("^\\(https?://\\)?\\(www\\.\\)?youtube\\.com" all-the-icons-faicon "youtube") + ("^\\(https?://\\)?\\(www\\.\\)?youtu\\.be" all-the-icons-faicon "youtube") + ("^\\(https?://\\)?\\(www\\.\\)?vine\\.co" all-the-icons-faicon "vine") + ;; Sound + ("^\\(https?://\\)?\\(www\\.\\)?last\\.fm" all-the-icons-faicon "lastfm") + ("^\\(https?://\\)?\\(www\\.\\)?mixcloud\\.com" all-the-icons-faicon "mixcloud") + ("^\\(https?://\\)?\\(www\\.\\)?soundcloud\\.com" all-the-icons-faicon "soundcloud") + ("spotify\\.com" all-the-icons-faicon "spotify") + ;; Shopping + ("^\\(https?://\\)?\\(www\\.\\)?amazon\\." all-the-icons-faicon "amazon") + ("^\\(https?://\\)?\\(www\\.\\)?opencart\\.com" all-the-icons-faicon "opencart") + ("^\\(https?://\\)?\\(www\\.\\)?paypal\\.com" all-the-icons-faicon "paypal") + ("^\\(https?://\\)?\\(www\\.\\)?shirtsinbulk\\.com" all-the-icons-faicon "shitsinbulk") + ;; Images + ("^\\(https?://\\)?\\(www\\.\\)?500px\\.com" all-the-icons-faicon "500px") + ("^\\(https?://\\)?\\(www\\.\\)?deviantart\\.com" all-the-icons-faicon "deviantart") + ("^\\(https?://\\)?\\(www\\.\\)?flickr\\.com" all-the-icons-faicon "flickr") + ("^\\(https?://\\)?\\(www\\.\\)?instagram\\.com" all-the-icons-faicon "instagram") + ("^\\(https?://\\)?\\(www\\.\\)?pinterest\\." all-the-icons-faicon "pinterest") + ;; Information and books + ("^\\(https?://\\)?\\(www\\.\\)?digg\\.com" all-the-icons-faicon "digg") + ("^\\(https?://\\)?\\(www\\.\\)?foursquare\\.com" all-the-icons-faicon "foursquare") + ("^\\(https?://\\)?\\(www\\.\\)?getpocket\\.com" all-the-icons-faicon "get-pocket") + ("^\\(https?://\\)?\\(www\\.\\)?scribd\\.com" all-the-icons-faicon "scribd") + ("^\\(https?://\\)?\\(www\\.\\)?slideshare\\.net" all-the-icons-faicon "slideshare") + ("stackexchange\\.com" all-the-icons-faicon "stack-exchange") + ("^\\(https?://\\)?\\(www\\.\\)?stumbleupon\\.com" all-the-icons-faicon "stumbleupon") + ("^\\(https?://\\)?\\(www\\.\\)?tripadvisor\\." all-the-icons-faicon "tripadvisor") + ("^\\(https?://\\)?\\(www\\.\\)?yelp\\." all-the-icons-faicon "yelp") + + ("wikipedia\\.org" all-the-icons-faicon "wikipedia-w") + ;; Various companies and tools + ("^\\(https?://\\)?\\(www\\.\\)?angel\\.co" all-the-icons-faicon "angellist") + ("^\\(https?://\\)?\\(www\\.\\)?apple\\.com" all-the-icons-faicon "apple") + ("^\\(https?://\\)?\\(www\\.\\)?buysellads\\.com" all-the-icons-faicon "buysellads") + ("^\\(https?://\\)?\\(www\\.\\)?connectdevelop\\.com" all-the-icons-faicon "connectdevelop") + ("^\\(https?://\\)?\\(www\\.\\)?dashcube\\.com" all-the-icons-faicon "dashcube") + ("^\\(https?://\\)?\\(www\\.\\)?dropbox\\.com" all-the-icons-faicon "dropbox") + ("^\\(https?://\\)?\\(www\\.\\)?enviragallery\\.com" all-the-icons-faicon "envira") + ("^\\(https?://\\)?\\(www\\.\\)?fortawesome\\.com" all-the-icons-faicon "fort-awesome") + ("^\\(https?://\\)?\\(www\\.\\)?forumbee\\.com" all-the-icons-faicon "forumbee") + ("^\\(https?://\\)?\\(www\\.\\)?gratipay\\.com" all-the-icons-faicon "gratipay") + ("^\\(https?://\\)?\\(www\\.\\)?modx\\.com" all-the-icons-faicon "modx") + ("^\\(https?://\\)?\\(www\\.\\)?pagelines\\.com" all-the-icons-faicon "pagelines") + ("^\\(https?://\\)?\\(www\\.\\)?producthunt\\.com" all-the-icons-faicon "product-hunt") + ("sellsy\\.com" all-the-icons-faicon "sellsy") + ("^\\(https?://\\)?\\(www\\.\\)?simplybuilt\\.com" all-the-icons-faicon "simplybuilt") + ("^\\(https?://\\)?\\(www\\.\\)?skyatlas\\.com" all-the-icons-faicon "skyatlas") + ("^\\(https?://\\)?\\(www\\.\\)?skype\\.com" all-the-icons-faicon "skype") + ("steampowered\\.com" all-the-icons-faicon "steam") + ("^\\(https?://\\)?\\(www\\.\\)?themeisle\\.com" all-the-icons-faicon "themeisle") + ("^\\(https?://\\)?\\(www\\.\\)?trello\\.com" all-the-icons-faicon "trello") + ("^\\(https?://\\)?\\(www\\.\\)?whatsapp\\.com" all-the-icons-faicon "whatsapp") + ("^\\(https?://\\)?\\(www\\.\\)?ycombinator\\.com" all-the-icons-faicon "y-combinator") + ("yahoo\\.com" all-the-icons-faicon "yahoo") + ("^\\(https?://\\)?\\(www\\.\\)?yoast\\.com" all-the-icons-faicon "yoast") + ;; Catch all + ("android" all-the-icons-faicon "android") + ("creativecommons" all-the-icons-faicon "creative-commons") + ("forums?" all-the-icons-octicon "comment-discussion") + ("\\.pdf$" all-the-icons-octicon "file-pdf" :v-adjust 0.0 :face all-the-icons-dred) + ("google" all-the-icons-faicon "google") + ("\\.rss" all-the-icons-faicon "rss") + )) + +;; ==================== +;; Functions Start +;; ==================== + +(defun all-the-icons-auto-mode-match? (&optional file) + "Whether or not FILE's `major-mode' match against its `auto-mode-alist'." + (let* ((file (or file (buffer-file-name) (buffer-name))) + (auto-mode (all-the-icons-match-to-alist file auto-mode-alist))) + (eq major-mode auto-mode))) + +(defun all-the-icons-match-to-alist (file alist) + "Match FILE against an entry in ALIST using `string-match'." + (cdr (cl-find-if (lambda (it) (string-match (car it) file)) alist))) + +(defun all-the-icons-dir-is-submodule (dir) + "Checker whether or not DIR is a git submodule." + (let* ((gitmodule-dir (locate-dominating-file dir ".gitmodules")) + (modules-file (expand-file-name (format "%s.gitmodules" gitmodule-dir))) + (module-search (format "submodule \".*?%s\"" (file-name-base dir)))) + + (when (and gitmodule-dir (file-exists-p (format "%s/.git" dir))) + (with-temp-buffer + (insert-file-contents modules-file) + (search-forward-regexp module-search (point-max) t))))) + +;; Icon functions +(defun all-the-icons-icon-for-dir-with-chevron (dir &optional chevron padding) + "Format an icon for DIR with CHEVRON similar to tree based directories. + +If PADDING is provided, it will prepend and separate the chevron +and directory with PADDING. + +Produces different symbols by inspecting DIR to distinguish +symlinks and git repositories which do not depend on the +directory contents" + (let ((icon (all-the-icons-icon-for-dir dir)) + (chevron (if chevron (all-the-icons-octicon (format "chevron-%s" chevron) :height 0.8 :v-adjust -0.1) "")) + (padding (or padding "\t"))) + (format "%s%s%s%s%s" padding chevron padding icon padding))) + +(defun all-the-icons-icon-for-buffer () + "Get the formatted icon for the current buffer. + +This function prioritises the use of the buffers file extension to +discern the icon when its `major-mode' matches its auto mode, +otherwise it will use the buffers `major-mode' to decide its +icon." + (all-the-icons--icon-info-for-buffer)) + +(defun all-the-icons-icon-family-for-buffer () + "Get the icon font family for the current buffer." + (all-the-icons--icon-info-for-buffer "family")) + +(defun all-the-icons--web-mode-icon (&rest arg-overrides) "Get icon for a `web-mode' buffer with ARG-OVERRIDES." (all-the-icons--web-mode nil arg-overrides)) +(defun all-the-icons--web-mode-icon-family () "Get icon family for a `web-mode' buffer." (all-the-icons--web-mode t)) +(defun all-the-icons--web-mode (&optional family arg-overrides) + "Return icon or FAMILY for `web-mode' based on `web-mode-content-type'. +Providing ARG-OVERRIDES will modify the creation of the icon." + (let ((non-nil-args (cl-reduce (lambda (acc it) (if it (append acc (list it)) acc)) arg-overrides :initial-value '()))) + (cond + ((equal web-mode-content-type "jsx") + (if family (all-the-icons-fileicon-family) (apply 'all-the-icons-fileicon (append '("jsx-2") non-nil-args)))) + ((equal web-mode-content-type "javascript") + (if family (all-the-icons-alltheicon-family) (apply 'all-the-icons-alltheicon (append '("javascript") non-nil-args)))) + ((equal web-mode-content-type "json") + (if family (all-the-icons-alltheicon-family) (apply 'all-the-icons-alltheicon (append '("less") non-nil-args)))) + ((equal web-mode-content-type "xml") + (if family (all-the-icons-faicon-family) (apply 'all-the-icons-faicon (append '("file-code-o") non-nil-args)))) + ((equal web-mode-content-type "css") + (if family (all-the-icons-alltheicon-family) (apply 'all-the-icons-alltheicon (append '("css3") non-nil-args)))) + (t + (if family (all-the-icons-alltheicon-family) (apply 'all-the-icons-alltheicon (append '("html5") non-nil-args))))))) + +;; Icon Functions + +;;;###autoload +(defun all-the-icons-icon-for-dir (dir &rest arg-overrides) + "Get the formatted icon for DIR. +ARG-OVERRIDES should be a plist containining `:height', +`:v-adjust' or `:face' properties like in the normal icon +inserting functions. + +Note: You want chevron, please use `all-the-icons-icon-for-dir-with-chevron'." + (let* ((dirname (file-name-base (directory-file-name dir))) + (path (expand-file-name dir)) + (icon (all-the-icons-match-to-alist dirname all-the-icons-dir-icon-alist)) + (args (cdr icon))) + (when arg-overrides (setq args (append `(,(car args)) arg-overrides (cdr args)))) + (cond + ((file-remote-p path) + (apply #'all-the-icons-octicon "terminal" (cdr args))) + ((file-symlink-p path) + (apply #'all-the-icons-octicon "file-symlink-directory" (cdr args))) + ((all-the-icons-dir-is-submodule path) + (apply #'all-the-icons-octicon "file-submodule" (cdr args))) + ((file-exists-p (format "%s/.git" path)) + (apply #'all-the-icons-octicon "repo" (cdr args))) + (t (apply (car icon) args))))) + +;;;###autoload +(defun all-the-icons-icon-for-file (file &rest arg-overrides) + "Get the formatted icon for FILE. +ARG-OVERRIDES should be a plist containining `:height', +`:v-adjust' or `:face' properties like in the normal icon +inserting functions." + (let* ((ext (file-name-extension file)) + (icon (or (all-the-icons-match-to-alist file all-the-icons-regexp-icon-alist) + (and ext + (cdr (assoc (downcase ext) + all-the-icons-extension-icon-alist))) + all-the-icons-default-file-icon)) + (args (cdr icon))) + (when arg-overrides (setq args (append `(,(car args)) arg-overrides (cdr args)))) + (apply (car icon) args))) + +;;;###autoload +(defun all-the-icons-icon-for-mode (mode &rest arg-overrides) + "Get the formatted icon for MODE. +ARG-OVERRIDES should be a plist containining `:height', +`:v-adjust' or `:face' properties like in the normal icon +inserting functions." + (let* ((icon (cdr (or (assoc mode all-the-icons-mode-icon-alist) + (assoc (get mode 'derived-mode-parent) all-the-icons-mode-icon-alist)))) + (args (cdr icon))) + (when arg-overrides (setq args (append `(,(car args)) arg-overrides (cdr args)))) + (if icon (apply (car icon) args) mode))) + +;;;###autoload +(defun all-the-icons-icon-for-url (url &rest arg-overrides) + "Get the formatted icon for URL. +If an icon for URL isn't found in `all-the-icons-url-alist', a globe is used. +ARG-OVERRIDES should be a plist containining `:height', +`:v-adjust' or `:face' properties like in the normal icon +inserting functions." + (let* ((icon (all-the-icons-match-to-alist url all-the-icons-url-alist)) + (args (cdr icon))) + (unless icon + (setq icon '(all-the-icons-faicon "globe")) + (setq args (cdr icon))) + (when arg-overrides (setq args (append `(,(car args)) arg-overrides (cdr args)))) + (apply (car icon) args))) + +(defcustom all-the-icons--cache-limit 2048 + "Maximum cache size for functions cached by `all-the-icons-cache'." + :type 'integer) + +(defun all-the-icons-cache (func) + "Set a cache for FUNC. Does not work on interactive functions." + (unless (get func 'all-the-icons--cached) + (let ((cache (make-hash-table :test #'equal + :size all-the-icons--cache-limit)) + (orig-fn (symbol-function func))) + (fset func + (lambda (&rest args) + (or (gethash args cache) + (progn + (when (> (hash-table-count cache) + all-the-icons--cache-limit) + (clrhash cache)) + (puthash args (apply orig-fn args) cache))))))) + + (put func 'all-the-icons--cached t)) + +(all-the-icons-cache #'all-the-icons-icon-for-dir) +(all-the-icons-cache #'all-the-icons-icon-for-file) +(all-the-icons-cache #'all-the-icons-icon-for-mode) +(all-the-icons-cache #'all-the-icons-icon-for-url) + +;; Family Face Functions +(defun all-the-icons-icon-family-for-file (file) + "Get the icons font family for FILE." + (let ((icon (all-the-icons-match-to-alist file all-the-icons-regexp-icon-alist))) + (funcall (intern (format "%s-family" (car icon)))))) + +(defun all-the-icons-icon-family-for-mode (mode) + "Get the icons font family for MODE." + (let ((icon (cdr (assoc mode all-the-icons-mode-icon-alist)))) + (if icon (funcall (intern (format "%s-family" (car icon)))) nil))) + +(defun all-the-icons-icon-family (icon) + "Get a propertized ICON family programmatically." + (plist-get (get-text-property 0 'face icon) :family)) + +(all-the-icons-cache #'all-the-icons-icon-family-for-file) +(all-the-icons-cache #'all-the-icons-icon-family-for-mode) +(all-the-icons-cache #'all-the-icons-icon-family) + +(defun all-the-icons--icon-info-for-buffer (&optional f) + "Get icon info for the current buffer. + +When F is provided, the info function is calculated with the format +`all-the-icons-icon-%s-for-file' or `all-the-icons-icon-%s-for-mode'." + (let* ((base-f (concat "all-the-icons-icon" (when f (format "-%s" f)))) + (file-f (intern (concat base-f "-for-file"))) + (mode-f (intern (concat base-f "-for-mode")))) + (if (and (buffer-file-name) + (all-the-icons-auto-mode-match?)) + (funcall file-f (file-name-nondirectory (buffer-file-name))) + (funcall mode-f major-mode)))) + +;; Weather icons +(defun all-the-icons-icon-for-weather (weather) + "Get an icon for a WEATHER status." + (let ((icon (all-the-icons-match-to-alist weather all-the-icons-weather-icon-alist))) + (if icon (apply (car icon) (cdr icon)) weather))) + +;; Definitions + +(eval-and-compile + (defun all-the-icons--function-name (name) + "Get the symbol for an icon function name for icon set NAME." + (intern (concat "all-the-icons-" (downcase (symbol-name name))))) + + (defun all-the-icons--family-name (name) + "Get the symbol for an icon family function for icon set NAME." + (intern (concat "all-the-icons-" (downcase (symbol-name name)) "-family"))) + + (defun all-the-icons--data-name (name) + "Get the symbol for an icon family function for icon set NAME." + (intern (concat "all-the-icons-" (downcase (symbol-name name)) "-data"))) + + (defun all-the-icons--insert-function-name (name) + "Get the symbol for an icon insert function for icon set NAME." + (intern (concat "all-the-icons-insert-" (downcase (symbol-name name))))) + + (defun all-the-icons--family-scale-factor (family) + (intern (concat "all-the-icons-" (symbol-name family) "-scale-factor"))) + + (defun all-the-icons--family-adjust (family) + (intern (concat "all-the-icons-default-" (symbol-name family) "-adjust")))) + +;; Icon insertion functions + +(defun all-the-icons--read-candidates () + "Helper to build a list of candidates for all families." + (cl-reduce 'append (mapcar (lambda (it) (all-the-icons--read-candidates-for-family it t)) all-the-icons-font-families))) + +(defun all-the-icons--read-candidates-for-family (family &optional show-family) + "Helper to build read candidates for FAMILY. +If SHOW-FAMILY is non-nil, displays the icons family in the candidate string." + (let ((data (funcall (all-the-icons--data-name family))) + (icon-f (all-the-icons--function-name family))) + (mapcar + (lambda (it) + (let* ((icon-name (car it)) + (icon-name-head (substring icon-name 0 1)) + (icon-name-tail (substring icon-name 1)) + + (icon-display (propertize icon-name-head 'display (format "%s\t%s" (funcall icon-f icon-name) icon-name-head))) + (icon-family (if show-family (format "\t[%s]" family) "")) + + (candidate-name (format "%s%s%s" icon-display icon-name-tail icon-family)) + (candidate-icon (funcall (all-the-icons--function-name family) icon-name))) + + (cons candidate-name candidate-icon))) + data))) + +;;;###autoload +(defun all-the-icons-install-fonts (&optional pfx) + "Helper function to download and install the latests fonts based on OS. +When PFX is non-nil, ignore the prompt and just install" + (interactive "P") + (when (or pfx (yes-or-no-p "This will download and install fonts, are you sure you want to do this?")) + (let* ((url-format "https://raw.githubusercontent.com/domtronn/all-the-icons.el/master/fonts/%s") + (font-dest (cond + ;; Default Linux install directories + ((member system-type '(gnu gnu/linux gnu/kfreebsd)) + (concat (or (getenv "XDG_DATA_HOME") + (concat (getenv "HOME") "/.local/share")) + "/fonts/")) + ;; Default MacOS install directory + ((eq system-type 'darwin) + (concat (getenv "HOME") "/Library/Fonts/")))) + (known-dest? (stringp font-dest)) + (font-dest (or font-dest (read-directory-name "Font installation directory: " "~/")))) + + (unless (file-directory-p font-dest) (mkdir font-dest t)) + + (mapc (lambda (font) + (url-copy-file (format url-format font) (expand-file-name font font-dest) t)) + all-the-icons-font-names) + (when known-dest? + (message "Fonts downloaded, updating font cache... ") + (shell-command-to-string (format "fc-cache -f -v"))) + (message "%s Successfully %s `all-the-icons' fonts to `%s'!" + (all-the-icons-wicon "stars" :v-adjust 0.0) + (if known-dest? "installed" "downloaded") + font-dest)))) + +;;;###autoload +(defun all-the-icons-insert (&optional arg family) + "Interactive icon insertion function. +When Prefix ARG is non-nil, insert the propertized icon. +When FAMILY is non-nil, limit the candidates to the icon set matching it." + (interactive "P") + (let* ((standard-output (current-buffer)) + (candidates (if family + (all-the-icons--read-candidates-for-family family) + (all-the-icons--read-candidates))) + (prompt (if family + (format "%s Icon: " (funcall (all-the-icons--family-name family))) + "Icon : ")) + + (selection (completing-read prompt candidates nil t)) + (result (cdr (assoc selection candidates)))) + + (if arg (prin1 result) (insert result)))) + +;; Debug Helpers + +(defun all-the-icons-insert-icons-for (family &optional height duration) + "Insert all of the available icons associated with FAMILY. +If a HEIGHT is provided it will render the icons at this height. +This is useful both to see the icons more clearly and to test +different height rendering. If DURATION is provided, it will +pause for DURATION seconds between printing each character." + (let* ((data-f (all-the-icons--data-name family)) + (insert-f (all-the-icons--function-name family)) + + (height (or height 2.0)) + (data (funcall data-f))) + (mapc + (lambda (it) + (insert (format "%s - %s\n" (funcall insert-f (car it) :height height) (car it))) + (when duration (sit-for duration 0))) + data))) + +(defmacro all-the-icons-define-icon (name alist family &optional font-name) + "Macro to generate functions for inserting icons for icon set NAME. + +NAME defines is the name of the iconset and will produce a +function of the for `all-the-icons-NAME'. + +ALIST is the alist containing maps between icon names and the +UniCode for the character. All of these can be found in the data +directory of this package. + +FAMILY is the font family to use for the icons. +FONT-NAME is the name of the .ttf file providing the font, defaults to FAMILY." + `(progn + (add-to-list 'all-the-icons-font-families (quote ,name)) + (add-to-list 'all-the-icons-font-names (quote ,(downcase (format "%s.ttf" (or font-name family))))) + (defcustom ,(all-the-icons--family-scale-factor name) 1.0 + ,(format "The additional `height' face property Scale Factor for %s icons." + (symbol-name name)) + :group 'all-the-icons + :type 'number) + (defcustom ,(all-the-icons--family-adjust name) 0.0 + ,(format "The additional `raise' display property adjustment for %s icons." + (symbol-name name)) + :group 'all-the-icons + :type 'number) + (defun ,(all-the-icons--family-name name) () ,family) + (defun ,(all-the-icons--data-name name) () ,alist) + (defun ,(all-the-icons--function-name name) (icon-name &rest args) + (let ((icon (cdr (assoc icon-name ,alist))) + (other-face (when all-the-icons-color-icons (plist-get args :face))) + (height (* all-the-icons-scale-factor + ,(all-the-icons--family-scale-factor name) + (or (plist-get args :height) 1.0))) + (v-adjust (* all-the-icons-scale-factor ,(all-the-icons--family-scale-factor name) + (+ (or (plist-get args :v-adjust) all-the-icons-default-adjust) + ,(all-the-icons--family-adjust name)))) + (family ,family)) + (unless icon + (error (format "Unable to find icon with name `%s' in icon set `%s'" icon-name (quote ,name)))) + (let ((face (if other-face + `(:family ,family :height ,height :inherit ,other-face) + `(:family ,family :height ,height)))) + (propertize icon + 'face face ;so that this works without `font-lock-mode' enabled + 'font-lock-face face ;so that `font-lock-mode' leaves this alone + 'display `(raise ,v-adjust) + 'rear-nonsticky t)))) + (defun ,(all-the-icons--insert-function-name name) (&optional arg) + ,(format "Insert a %s icon at point." family) + (interactive "P") + (all-the-icons-insert arg (quote ,name))))) + +(define-obsolete-function-alias 'define-icon 'all-the-icons-define-icon "4.0.0") + +(all-the-icons-define-icon alltheicon all-the-icons-data/alltheicons-alist "all-the-icons") +(all-the-icons-define-icon fileicon all-the-icons-data/file-icon-alist "file-icons") +(all-the-icons-define-icon faicon all-the-icons-data/fa-icon-alist "FontAwesome") +(all-the-icons-define-icon octicon all-the-icons-data/octicons-alist "github-octicons" "octicons") +(all-the-icons-define-icon wicon all-the-icons-data/weather-icons-alist "Weather Icons" "weathericons") +(all-the-icons-define-icon material all-the-icons-data/material-icons-alist "Material Icons" "material-design-icons") + +(provide 'all-the-icons) + +;;; all-the-icons.el ends here -- cgit v1.2.1