initial setup / conversion to chemacs2 (coding/org profiles/configs working)
This commit is contained in:
commit
6a28bf0f85
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
orig/
|
||||
**/auto-save-list
|
||||
**/beancount-mode
|
27
accounting/init.el
Normal file
27
accounting/init.el
Normal file
|
@ -0,0 +1,27 @@
|
|||
;; -*- lexical-binding: t; -*-
|
||||
;; TURN ON IN INIT FILE!!!!!
|
||||
|
||||
;; Make gc pauses faster by decreasing the threshold.
|
||||
(setq gc-cons-threshold (* 2 1000 1000))
|
||||
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
||||
;; Comment/uncomment this line to enable MELPA Stable if desired. See `package-archive-priorities`
|
||||
;; and `package-pinned-packages`. Most users will not need or want to do this.
|
||||
;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
|
||||
(unless (package-installed-p 'use-package)
|
||||
(package-refresh-contents)
|
||||
(package-install 'use-package))
|
||||
(require 'use-package)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
; Beancount related
|
||||
(add-to-list 'load-path "~/.emacs.d/beancount-mode")
|
||||
(require 'beancount)
|
||||
(add-hook 'beancount-mode-hook #'outline-minor-mode)
|
||||
(define-key beancount-mode-map (kbd "C-c C-n") #'outline-next-visible-heading)
|
||||
(define-key beancount-mode-map (kbd "C-c C-p") #'outline-previous-visible-heading)
|
||||
(define-key beancount-mode-map (kbd "C-c C-u") #'outline-up-heading)
|
||||
(define-key beancount-mode-map (kbd "C-c C-d") #'outline-down-heading)
|
||||
(add-to-list 'auto-mode-alist '("\\.beancount\\'" . beancount-mode))
|
||||
(add-to-list 'auto-mode-alist '("\\.bean\\'" . beancount-mode))
|
|
@ -0,0 +1,75 @@
|
|||
;;; all-the-icons-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "all-the-icons" "all-the-icons.el" (0 0 0 0))
|
||||
;;; Generated autoloads from all-the-icons.el
|
||||
|
||||
(autoload 'all-the-icons-icon-for-dir "all-the-icons" "\
|
||||
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'.
|
||||
|
||||
\(fn DIR &rest ARG-OVERRIDES)" nil nil)
|
||||
|
||||
(autoload 'all-the-icons-icon-for-file "all-the-icons" "\
|
||||
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.
|
||||
|
||||
\(fn FILE &rest ARG-OVERRIDES)" nil nil)
|
||||
|
||||
(autoload 'all-the-icons-icon-for-mode "all-the-icons" "\
|
||||
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.
|
||||
|
||||
\(fn MODE &rest ARG-OVERRIDES)" nil nil)
|
||||
|
||||
(autoload 'all-the-icons-icon-for-url "all-the-icons" "\
|
||||
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.
|
||||
|
||||
\(fn URL &rest ARG-OVERRIDES)" nil nil)
|
||||
|
||||
(autoload 'all-the-icons-install-fonts "all-the-icons" "\
|
||||
Helper function to download and install the latests fonts based on OS.
|
||||
When PFX is non-nil, ignore the prompt and just install
|
||||
|
||||
\(fn &optional PFX)" t nil)
|
||||
|
||||
(autoload 'all-the-icons-insert "all-the-icons" "\
|
||||
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.
|
||||
|
||||
\(fn &optional ARG FAMILY)" t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "all-the-icons" '("all-the-icons-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;;;### (autoloads nil nil ("all-the-icons-faces.el" "all-the-icons-pkg.el")
|
||||
;;;;;; (0 0 0 0))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; all-the-icons-autoloads.el ends here
|
230
code/elpa/all-the-icons-20220325.1238/all-the-icons-faces.el
Normal file
230
code/elpa/all-the-icons-20220325.1238/all-the-icons-faces.el
Normal file
|
@ -0,0 +1,230 @@
|
|||
;;; all-the-icons-faces.el --- A module of faces for all-the-icons
|
||||
|
||||
;; Copyright (C) 2016 Dominic Charlesworth <dgc336@gmail.com>
|
||||
|
||||
;; Author: Dominic Charlesworth <dgc336@gmail.com>
|
||||
;; Version: 1.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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file contains all of the faces used by the package for
|
||||
;; colouring icons
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defgroup all-the-icons-faces nil
|
||||
"Manage how All The Icons icons are coloured and themed."
|
||||
:prefix "all-the-icons-"
|
||||
:group 'tools
|
||||
:group 'all-the-icons)
|
||||
|
||||
|
||||
;; red
|
||||
(defface all-the-icons-red
|
||||
'((((background dark)) :foreground "#AC4142")
|
||||
(((background light)) :foreground "#AC4142"))
|
||||
"Face for red icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lred
|
||||
'((((background dark)) :foreground "#EB595A")
|
||||
(((background light)) :foreground "#EB595A"))
|
||||
"Face for lred icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dred
|
||||
'((((background dark)) :foreground "#843031")
|
||||
(((background light)) :foreground "#843031"))
|
||||
"Face for dred icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-red-alt
|
||||
'((((background dark)) :foreground "#ce5643")
|
||||
(((background light)) :foreground "#843031"))
|
||||
"Face for dred icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; green
|
||||
(defface all-the-icons-green
|
||||
'((((background dark)) :foreground "#90A959")
|
||||
(((background light)) :foreground "#90A959"))
|
||||
"Face for green icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lgreen
|
||||
'((((background dark)) :foreground "#C6E87A")
|
||||
(((background light)) :foreground "#3D6837"))
|
||||
"Face for lgreen icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dgreen
|
||||
'((((background dark)) :foreground "#6D8143")
|
||||
(((background light)) :foreground "#6D8143"))
|
||||
"Face for dgreen icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; yellow
|
||||
(defface all-the-icons-yellow
|
||||
'((((background dark)) :foreground "#FFD446")
|
||||
(((background light)) :foreground "#FFCC0E"))
|
||||
"Face for yellow icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lyellow
|
||||
'((((background dark)) :foreground "#FFC16D")
|
||||
(((background light)) :foreground "#FF9300"))
|
||||
"Face for lyellow icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dyellow
|
||||
'((((background dark)) :foreground "#B48D56")
|
||||
(((background light)) :foreground "#B48D56"))
|
||||
"Face for dyellow icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; blue
|
||||
(defface all-the-icons-blue
|
||||
'((((background dark)) :foreground "#6A9FB5")
|
||||
(((background light)) :foreground "#6A9FB5"))
|
||||
"Face for blue icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-blue-alt
|
||||
'((((background dark)) :foreground "#2188b6")
|
||||
(((background light)) :foreground "#2188b6"))
|
||||
"Face for blue icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lblue
|
||||
'((((background dark)) :foreground "#8FD7F4")
|
||||
(((background light)) :foreground "#677174"))
|
||||
"Face for lblue icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dblue
|
||||
'((((background dark)) :foreground "#446674")
|
||||
(((background light)) :foreground "#446674"))
|
||||
"Face for dblue icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; maroon
|
||||
(defface all-the-icons-maroon
|
||||
'((((background dark)) :foreground "#8F5536")
|
||||
(((background light)) :foreground "#8F5536"))
|
||||
"Face for maroon icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lmaroon
|
||||
'((((background dark)) :foreground "#CE7A4E")
|
||||
(((background light)) :foreground "#CE7A4E"))
|
||||
"Face for lmaroon icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dmaroon
|
||||
'((((background dark)) :foreground "#72584B")
|
||||
(((background light)) :foreground "#72584B"))
|
||||
"Face for dmaroon icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; purple
|
||||
(defface all-the-icons-purple
|
||||
'((((background dark)) :foreground "#AA759F")
|
||||
(((background light)) :foreground "#68295B"))
|
||||
"Face for purple icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-purple-alt
|
||||
'((((background dark)) :foreground "#5D54E1")
|
||||
(((background light)) :foreground "#5D54E1"))
|
||||
"Face for purple icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lpurple
|
||||
'((((background dark)) :foreground "#E69DD6")
|
||||
(((background light)) :foreground "#E69DD6"))
|
||||
"Face for lpurple icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dpurple
|
||||
'((((background dark)) :foreground "#694863")
|
||||
(((background light)) :foreground "#694863"))
|
||||
"Face for dpurple icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; orange
|
||||
(defface all-the-icons-orange
|
||||
'((((background dark)) :foreground "#D4843E")
|
||||
(((background light)) :foreground "#D4843E"))
|
||||
"Face for orange icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lorange
|
||||
'((((background dark)) :foreground "#FFA500")
|
||||
(((background light)) :foreground "#FFA500"))
|
||||
"Face for lorange icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dorange
|
||||
'((((background dark)) :foreground "#915B2D")
|
||||
(((background light)) :foreground "#915B2D"))
|
||||
"Face for dorange icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; cyan
|
||||
(defface all-the-icons-cyan
|
||||
'((((background dark)) :foreground "#75B5AA")
|
||||
(((background light)) :foreground "#75B5AA"))
|
||||
"Face for cyan icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-cyan-alt
|
||||
'((((background dark)) :foreground "#61dafb")
|
||||
(((background light)) :foreground "#0595bd"))
|
||||
"Face for cyan icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lcyan
|
||||
'((((background dark)) :foreground "#A5FDEC")
|
||||
(((background light)) :foreground "#2C7D6E"))
|
||||
"Face for lcyan icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dcyan
|
||||
'((((background dark)) :foreground "#48746D")
|
||||
(((background light)) :foreground "#48746D"))
|
||||
"Face for dcyan icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; pink
|
||||
(defface all-the-icons-pink
|
||||
'((((background dark)) :foreground "#F2B4B8")
|
||||
(((background light)) :foreground "#FC505B"))
|
||||
"Face for pink icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lpink
|
||||
'((((background dark)) :foreground "#FFBDC1")
|
||||
(((background light)) :foreground "#FF505B"))
|
||||
"Face for lpink icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dpink
|
||||
'((((background dark)) :foreground "#B18286")
|
||||
(((background light)) :foreground "#7E5D5F"))
|
||||
"Face for dpink icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
;; silver
|
||||
(defface all-the-icons-silver
|
||||
'((((background dark)) :foreground "#716E68")
|
||||
(((background light)) :foreground "#716E68"))
|
||||
"Face for silver icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-lsilver
|
||||
'((((background dark)) :foreground "#B9B6AA")
|
||||
(((background light)) :foreground "#7F7869"))
|
||||
"Face for lsilver icons"
|
||||
:group 'all-the-icons-faces)
|
||||
(defface all-the-icons-dsilver
|
||||
'((((background dark)) :foreground "#838484")
|
||||
(((background light)) :foreground "#838484"))
|
||||
"Face for dsilver icons"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
|
||||
(provide 'all-the-icons-faces)
|
||||
;;; all-the-icons-faces.el ends here
|
BIN
code/elpa/all-the-icons-20220325.1238/all-the-icons-faces.elc
Normal file
BIN
code/elpa/all-the-icons-20220325.1238/all-the-icons-faces.elc
Normal file
Binary file not shown.
12
code/elpa/all-the-icons-20220325.1238/all-the-icons-pkg.el
Normal file
12
code/elpa/all-the-icons-20220325.1238/all-the-icons-pkg.el
Normal file
|
@ -0,0 +1,12 @@
|
|||
(define-package "all-the-icons" "20220325.1238" "A library for inserting Developer icons"
|
||||
'((emacs "24.3"))
|
||||
:commit "65c496d3d1d1298345beb9845840067bffb2ffd8" :authors
|
||||
'(("Dominic Charlesworth" . "dgc336@gmail.com"))
|
||||
:maintainer
|
||||
'("Dominic Charlesworth" . "dgc336@gmail.com")
|
||||
:keywords
|
||||
'("convenient" "lisp")
|
||||
:url "https://github.com/domtronn/all-the-icons.el")
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; End:
|
1189
code/elpa/all-the-icons-20220325.1238/all-the-icons.el
Normal file
1189
code/elpa/all-the-icons-20220325.1238/all-the-icons.el
Normal file
File diff suppressed because it is too large
Load diff
BIN
code/elpa/all-the-icons-20220325.1238/all-the-icons.elc
Normal file
BIN
code/elpa/all-the-icons-20220325.1238/all-the-icons.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,70 @@
|
|||
(defvar all-the-icons-data/alltheicons-alist
|
||||
'(
|
||||
|
||||
( "apache" . "\xe909" )
|
||||
( "atom" . "\xe917" )
|
||||
( "aws" . "\xe90c" )
|
||||
( "bower" . "\xe918" )
|
||||
( "c" . "\xe915" )
|
||||
( "c-line" . "\xe90f" )
|
||||
( "clojure" . "\xe919" )
|
||||
( "clojure-line" . "\xe91a" )
|
||||
( "coffeescript" . "\xe914" )
|
||||
( "cplusplus" . "\xe913" )
|
||||
( "cplusplus-line" . "\xe910" )
|
||||
( "csharp" . "\xe911" )
|
||||
( "csharp-line" . "\xe912" )
|
||||
( "css3" . "\xe91b" )
|
||||
( "css3-alt" . "\xe91c" )
|
||||
( "d3" . "\xe90e" )
|
||||
( "dlang" . "\xe935" )
|
||||
( "elixir" . "\xe936" )
|
||||
( "erlang" . "\xe934" )
|
||||
( "git" . "\xe907" )
|
||||
( "go" . "\xe91d" )
|
||||
( "google-drive" . "\xe91e" )
|
||||
( "grunt" . "\xe90d" )
|
||||
( "grunt-line" . "\xe91f" )
|
||||
( "gulp" . "\xe920" )
|
||||
( "haskell" . "\xe921" )
|
||||
( "html5" . "\xe932" )
|
||||
( "jasmine" . "\xe904" )
|
||||
( "java" . "\xe922" )
|
||||
( "javascript" . "\xe906" )
|
||||
( "javascript-badge" . "\xe923" )
|
||||
( "javascript-shield" . "\xe924" )
|
||||
( "less" . "\xe90b" )
|
||||
( "nginx" . "\xe933" )
|
||||
( "nodejs" . "\xe925" )
|
||||
( "perl" . "\xe905" )
|
||||
( "perldocs" . "\xe926" )
|
||||
( "postgresql" . "\xe938" )
|
||||
( "prolog" . "\xe927" )
|
||||
( "python" . "\xe928" )
|
||||
( "react" . "\xe929" )
|
||||
( "ruby" . "\xe92a" )
|
||||
( "ruby-alt" . "\xe92b" )
|
||||
( "rust" . "\xe92c" )
|
||||
( "sass" . "\xe92d" )
|
||||
( "scala" . "\xe908" )
|
||||
( "script" . "\xe90a" )
|
||||
( "spring" . "\xe937" )
|
||||
( "stylus" . "\xe92e" )
|
||||
( "svg" . "\xe903" )
|
||||
( "swift" . "\xe92f" )
|
||||
( "terminal" . "\xe930" )
|
||||
( "terminal-alt" . "\xe931" )
|
||||
( "battery-charging" . "\xe939" )
|
||||
|
||||
( "arrow-left" . "\xe93a" )
|
||||
( "arrow-right" . "\xe93b" )
|
||||
( "cup-left" . "\xe93c" )
|
||||
( "cup-right" . "\xe93d" )
|
||||
( "slant-left" . "\xe93e" )
|
||||
( "slant-right" . "\xe93f" )
|
||||
( "wave-left" . "\xe940" )
|
||||
( "wave-right" . "\xe941" )
|
||||
|
||||
))
|
||||
|
||||
(provide 'data-alltheicons)
|
BIN
code/elpa/all-the-icons-20220325.1238/data/data-alltheicons.elc
Normal file
BIN
code/elpa/all-the-icons-20220325.1238/data/data-alltheicons.elc
Normal file
Binary file not shown.
641
code/elpa/all-the-icons-20220325.1238/data/data-faicons.el
Normal file
641
code/elpa/all-the-icons-20220325.1238/data/data-faicons.el
Normal file
|
@ -0,0 +1,641 @@
|
|||
(defvar all-the-icons-data/fa-icon-alist
|
||||
'(
|
||||
|
||||
("500px" . "\xf26e")
|
||||
("adjust" . "\xf042")
|
||||
("adn" . "\xf170")
|
||||
("align-center" . "\xf037")
|
||||
("align-justify" . "\xf039")
|
||||
("align-left" . "\xf036")
|
||||
("align-right" . "\xf038")
|
||||
("amazon" . "\xf270")
|
||||
("ambulance" . "\xf0f9")
|
||||
("american-sign-language-interpreting" . "\xf2a3")
|
||||
("anchor" . "\xf13d")
|
||||
("android" . "\xf17b")
|
||||
("angellist" . "\xf209")
|
||||
("angle-double-down" . "\xf103")
|
||||
("angle-double-left" . "\xf100")
|
||||
("angle-double-right" . "\xf101")
|
||||
("angle-double-up" . "\xf102")
|
||||
("angle-down" . "\xf107")
|
||||
("angle-left" . "\xf104")
|
||||
("angle-right" . "\xf105")
|
||||
("angle-up" . "\xf106")
|
||||
("apple" . "\xf179")
|
||||
("archive" . "\xf187")
|
||||
("area-chart" . "\xf1fe")
|
||||
("arrow-circle-down" . "\xf0ab")
|
||||
("arrow-circle-left" . "\xf0a8")
|
||||
("arrow-circle-o-down" . "\xf01a")
|
||||
("arrow-circle-o-left" . "\xf190")
|
||||
("arrow-circle-o-right" . "\xf18e")
|
||||
("arrow-circle-o-up" . "\xf01b")
|
||||
("arrow-circle-right" . "\xf0a9")
|
||||
("arrow-circle-up" . "\xf0aa")
|
||||
("arrow-down" . "\xf063")
|
||||
("arrow-left" . "\xf060")
|
||||
("arrow-right" . "\xf061")
|
||||
("arrow-up" . "\xf062")
|
||||
("arrows" . "\xf047")
|
||||
("arrows-alt" . "\xf0b2")
|
||||
("arrows-h" . "\xf07e")
|
||||
("arrows-v" . "\xf07d")
|
||||
("assistive-listening-systems" . "\xf2a2")
|
||||
("asterisk" . "\xf069")
|
||||
("at" . "\xf1fa")
|
||||
("audio-description" . "\xf29e")
|
||||
("backward" . "\xf04a")
|
||||
("balance-scale" . "\xf24e")
|
||||
("ban" . "\xf05e")
|
||||
("bar-chart" . "\xf080")
|
||||
("barcode" . "\xf02a")
|
||||
("bars" . "\xf0c9")
|
||||
("battery-empty" . "\xf244")
|
||||
("battery-full" . "\xf240")
|
||||
("battery-half" . "\xf242")
|
||||
("battery-quarter" . "\xf243")
|
||||
("battery-three-quarters" . "\xf241")
|
||||
("bed" . "\xf236")
|
||||
("beer" . "\xf0fc")
|
||||
("behance" . "\xf1b4")
|
||||
("behance-square" . "\xf1b5")
|
||||
("bell" . "\xf0f3")
|
||||
("bell-o" . "\xf0a2")
|
||||
("bell-slash" . "\xf1f6")
|
||||
("bell-slash-o" . "\xf1f7")
|
||||
("bicycle" . "\xf206")
|
||||
("binoculars" . "\xf1e5")
|
||||
("birthday-cake" . "\xf1fd")
|
||||
("bitbucket" . "\xf171")
|
||||
("bitbucket-square" . "\xf172")
|
||||
("black-tie" . "\xf27e")
|
||||
("blind" . "\xf29d")
|
||||
("bluetooth" . "\xf293")
|
||||
("bluetooth-b" . "\xf294")
|
||||
("bold" . "\xf032")
|
||||
("bolt" . "\xf0e7")
|
||||
("bomb" . "\xf1e2")
|
||||
("book" . "\xf02d")
|
||||
("bookmark" . "\xf02e")
|
||||
("bookmark-o" . "\xf097")
|
||||
("braille" . "\xf2a1")
|
||||
("briefcase" . "\xf0b1")
|
||||
("btc" . "\xf15a")
|
||||
("bug" . "\xf188")
|
||||
("building" . "\xf1ad")
|
||||
("building-o" . "\xf0f7")
|
||||
("bullhorn" . "\xf0a1")
|
||||
("bullseye" . "\xf140")
|
||||
("bus" . "\xf207")
|
||||
("buysellads" . "\xf20d")
|
||||
("calculator" . "\xf1ec")
|
||||
("calendar" . "\xf073")
|
||||
("calendar-check-o" . "\xf274")
|
||||
("calendar-minus-o" . "\xf272")
|
||||
("calendar-o" . "\xf133")
|
||||
("calendar-plus-o" . "\xf271")
|
||||
("calendar-times-o" . "\xf273")
|
||||
("camera" . "\xf030")
|
||||
("camera-retro" . "\xf083")
|
||||
("car" . "\xf1b9")
|
||||
("caret-down" . "\xf0d7")
|
||||
("caret-left" . "\xf0d9")
|
||||
("caret-right" . "\xf0da")
|
||||
("caret-square-o-down" . "\xf150")
|
||||
("caret-square-o-left" . "\xf191")
|
||||
("caret-square-o-right" . "\xf152")
|
||||
("caret-square-o-up" . "\xf151")
|
||||
("caret-up" . "\xf0d8")
|
||||
("cart-arrow-down" . "\xf218")
|
||||
("cart-plus" . "\xf217")
|
||||
("cc" . "\xf20a")
|
||||
("cc-amex" . "\xf1f3")
|
||||
("cc-diners-club" . "\xf24c")
|
||||
("cc-discover" . "\xf1f2")
|
||||
("cc-jcb" . "\xf24b")
|
||||
("cc-mastercard" . "\xf1f1")
|
||||
("cc-paypal" . "\xf1f4")
|
||||
("cc-stripe" . "\xf1f5")
|
||||
("cc-visa" . "\xf1f0")
|
||||
("certificate" . "\xf0a3")
|
||||
("chain-broken" . "\xf127")
|
||||
("check" . "\xf00c")
|
||||
("check-circle" . "\xf058")
|
||||
("check-circle-o" . "\xf05d")
|
||||
("check-square" . "\xf14a")
|
||||
("check-square-o" . "\xf046")
|
||||
("chevron-circle-down" . "\xf13a")
|
||||
("chevron-circle-left" . "\xf137")
|
||||
("chevron-circle-right" . "\xf138")
|
||||
("chevron-circle-up" . "\xf139")
|
||||
("chevron-down" . "\xf078")
|
||||
("chevron-left" . "\xf053")
|
||||
("chevron-right" . "\xf054")
|
||||
("chevron-up" . "\xf077")
|
||||
("child" . "\xf1ae")
|
||||
("chrome" . "\xf268")
|
||||
("circle" . "\xf111")
|
||||
("circle-o" . "\xf10c")
|
||||
("circle-o-notch" . "\xf1ce")
|
||||
("circle-thin" . "\xf1db")
|
||||
("clipboard" . "\xf0ea")
|
||||
("clock-o" . "\xf017")
|
||||
("clone" . "\xf24d")
|
||||
("cloud" . "\xf0c2")
|
||||
("cloud-download" . "\xf0ed")
|
||||
("cloud-upload" . "\xf0ee")
|
||||
("code" . "\xf121")
|
||||
("code-fork" . "\xf126")
|
||||
("codepen" . "\xf1cb")
|
||||
("codiepie" . "\xf284")
|
||||
("coffee" . "\xf0f4")
|
||||
("cog" . "\xf013")
|
||||
("cogs" . "\xf085")
|
||||
("columns" . "\xf0db")
|
||||
("comment" . "\xf075")
|
||||
("comment-o" . "\xf0e5")
|
||||
("commenting" . "\xf27a")
|
||||
("commenting-o" . "\xf27b")
|
||||
("comments" . "\xf086")
|
||||
("comments-o" . "\xf0e6")
|
||||
("compass" . "\xf14e")
|
||||
("compress" . "\xf066")
|
||||
("connectdevelop" . "\xf20e")
|
||||
("contao" . "\xf26d")
|
||||
("copyright" . "\xf1f9")
|
||||
("creative-commons" . "\xf25e")
|
||||
("credit-card" . "\xf09d")
|
||||
("credit-card-alt" . "\xf283")
|
||||
("crop" . "\xf125")
|
||||
("crosshairs" . "\xf05b")
|
||||
("css3" . "\xf13c")
|
||||
("cube" . "\xf1b2")
|
||||
("cubes" . "\xf1b3")
|
||||
("cutlery" . "\xf0f5")
|
||||
("dashcube" . "\xf210")
|
||||
("database" . "\xf1c0")
|
||||
("deaf" . "\xf2a4")
|
||||
("delicious" . "\xf1a5")
|
||||
("desktop" . "\xf108")
|
||||
("deviantart" . "\xf1bd")
|
||||
("diamond" . "\xf219")
|
||||
("digg" . "\xf1a6")
|
||||
("dot-circle-o" . "\xf192")
|
||||
("download" . "\xf019")
|
||||
("dribbble" . "\xf17d")
|
||||
("dropbox" . "\xf16b")
|
||||
("drupal" . "\xf1a9")
|
||||
("edge" . "\xf282")
|
||||
("eject" . "\xf052")
|
||||
("ellipsis-h" . "\xf141")
|
||||
("ellipsis-v" . "\xf142")
|
||||
("empire" . "\xf1d1")
|
||||
("envelope" . "\xf0e0")
|
||||
("envelope-o" . "\xf003")
|
||||
("envelope-square" . "\xf199")
|
||||
("envira" . "\xf299")
|
||||
("eraser" . "\xf12d")
|
||||
("eur" . "\xf153")
|
||||
("exchange" . "\xf0ec")
|
||||
("exclamation" . "\xf12a")
|
||||
("exclamation-circle" . "\xf06a")
|
||||
("exclamation-triangle" . "\xf071")
|
||||
("expand" . "\xf065")
|
||||
("expeditedssl" . "\xf23e")
|
||||
("external-link" . "\xf08e")
|
||||
("external-link-square" . "\xf14c")
|
||||
("eye" . "\xf06e")
|
||||
("eye-slash" . "\xf070")
|
||||
("eyedropper" . "\xf1fb")
|
||||
("facebook" . "\xf09a")
|
||||
("facebook-official" . "\xf230")
|
||||
("facebook-square" . "\xf082")
|
||||
("fast-backward" . "\xf049")
|
||||
("fast-forward" . "\xf050")
|
||||
("fax" . "\xf1ac")
|
||||
("female" . "\xf182")
|
||||
("fighter-jet" . "\xf0fb")
|
||||
("file" . "\xf15b")
|
||||
("file-archive-o" . "\xf1c6")
|
||||
("file-audio-o" . "\xf1c7")
|
||||
("file-code-o" . "\xf1c9")
|
||||
("file-excel-o" . "\xf1c3")
|
||||
("file-image-o" . "\xf1c5")
|
||||
("file-o" . "\xf016")
|
||||
("file-pdf-o" . "\xf1c1")
|
||||
("file-powerpoint-o" . "\xf1c4")
|
||||
("file-text" . "\xf15c")
|
||||
("file-text-o" . "\xf0f6")
|
||||
("file-video-o" . "\xf1c8")
|
||||
("file-word-o" . "\xf1c2")
|
||||
("files-o" . "\xf0c5")
|
||||
("film" . "\xf008")
|
||||
("filter" . "\xf0b0")
|
||||
("fire" . "\xf06d")
|
||||
("fire-extinguisher" . "\xf134")
|
||||
("firefox" . "\xf269")
|
||||
("first-order" . "\xf2b0")
|
||||
("flag" . "\xf024")
|
||||
("flag-checkered" . "\xf11e")
|
||||
("flag-o" . "\xf11d")
|
||||
("flask" . "\xf0c3")
|
||||
("flickr" . "\xf16e")
|
||||
("floppy-o" . "\xf0c7")
|
||||
("folder" . "\xf07b")
|
||||
("folder-o" . "\xf114")
|
||||
("folder-open" . "\xf07c")
|
||||
("folder-open-o" . "\xf115")
|
||||
("font" . "\xf031")
|
||||
("font-awesome" . "\xf2b4")
|
||||
("fonticons" . "\xf280")
|
||||
("fort-awesome" . "\xf286")
|
||||
("forumbee" . "\xf211")
|
||||
("forward" . "\xf04e")
|
||||
("foursquare" . "\xf180")
|
||||
("frown-o" . "\xf119")
|
||||
("futbol-o" . "\xf1e3")
|
||||
("gamepad" . "\xf11b")
|
||||
("gavel" . "\xf0e3")
|
||||
("gbp" . "\xf154")
|
||||
("genderless" . "\xf22d")
|
||||
("get-pocket" . "\xf265")
|
||||
("gg" . "\xf260")
|
||||
("gg-circle" . "\xf261")
|
||||
("gift" . "\xf06b")
|
||||
("git" . "\xf1d3")
|
||||
("git-square" . "\xf1d2")
|
||||
("github" . "\xf09b")
|
||||
("github-alt" . "\xf113")
|
||||
("github-square" . "\xf092")
|
||||
("gitlab" . "\xf296")
|
||||
("glass" . "\xf000")
|
||||
("glide" . "\xf2a5")
|
||||
("glide-g" . "\xf2a6")
|
||||
("globe" . "\xf0ac")
|
||||
("google" . "\xf1a0")
|
||||
("google-plus" . "\xf0d5")
|
||||
("google-plus-official" . "\xf2b3")
|
||||
("google-plus-square" . "\xf0d4")
|
||||
("google-wallet" . "\xf1ee")
|
||||
("graduation-cap" . "\xf19d")
|
||||
("gratipay" . "\xf184")
|
||||
("h-square" . "\xf0fd")
|
||||
("hacker-news" . "\xf1d4")
|
||||
("hand-lizard-o" . "\xf258")
|
||||
("hand-o-down" . "\xf0a7")
|
||||
("hand-o-left" . "\xf0a5")
|
||||
("hand-o-right" . "\xf0a4")
|
||||
("hand-o-up" . "\xf0a6")
|
||||
("hand-paper-o" . "\xf256")
|
||||
("hand-peace-o" . "\xf25b")
|
||||
("hand-pointer-o" . "\xf25a")
|
||||
("hand-rock-o" . "\xf255")
|
||||
("hand-scissors-o" . "\xf257")
|
||||
("hand-spock-o" . "\xf259")
|
||||
("hashtag" . "\xf292")
|
||||
("hdd-o" . "\xf0a0")
|
||||
("header" . "\xf1dc")
|
||||
("headphones" . "\xf025")
|
||||
("heart" . "\xf004")
|
||||
("heart-o" . "\xf08a")
|
||||
("heartbeat" . "\xf21e")
|
||||
("history" . "\xf1da")
|
||||
("home" . "\xf015")
|
||||
("hospital-o" . "\xf0f8")
|
||||
("hourglass" . "\xf254")
|
||||
("hourglass-end" . "\xf253")
|
||||
("hourglass-half" . "\xf252")
|
||||
("hourglass-o" . "\xf250")
|
||||
("hourglass-start" . "\xf251")
|
||||
("houzz" . "\xf27c")
|
||||
("html5" . "\xf13b")
|
||||
("i-cursor" . "\xf246")
|
||||
("ils" . "\xf20b")
|
||||
("inbox" . "\xf01c")
|
||||
("indent" . "\xf03c")
|
||||
("industry" . "\xf275")
|
||||
("info" . "\xf129")
|
||||
("info-circle" . "\xf05a")
|
||||
("inr" . "\xf156")
|
||||
("instagram" . "\xf16d")
|
||||
("internet-explorer" . "\xf26b")
|
||||
("ioxhost" . "\xf208")
|
||||
("italic" . "\xf033")
|
||||
("joomla" . "\xf1aa")
|
||||
("jpy" . "\xf157")
|
||||
("jsfiddle" . "\xf1cc")
|
||||
("key" . "\xf084")
|
||||
("keyboard-o" . "\xf11c")
|
||||
("krw" . "\xf159")
|
||||
("language" . "\xf1ab")
|
||||
("laptop" . "\xf109")
|
||||
("lastfm" . "\xf202")
|
||||
("lastfm-square" . "\xf203")
|
||||
("leaf" . "\xf06c")
|
||||
("leanpub" . "\xf212")
|
||||
("lemon-o" . "\xf094")
|
||||
("level-down" . "\xf149")
|
||||
("level-up" . "\xf148")
|
||||
("life-ring" . "\xf1cd")
|
||||
("lightbulb-o" . "\xf0eb")
|
||||
("line-chart" . "\xf201")
|
||||
("link" . "\xf0c1")
|
||||
("linkedin" . "\xf0e1")
|
||||
("linkedin-square" . "\xf08c")
|
||||
("linux" . "\xf17c")
|
||||
("list" . "\xf03a")
|
||||
("list-alt" . "\xf022")
|
||||
("list-ol" . "\xf0cb")
|
||||
("list-ul" . "\xf0ca")
|
||||
("location-arrow" . "\xf124")
|
||||
("lock" . "\xf023")
|
||||
("long-arrow-down" . "\xf175")
|
||||
("long-arrow-left" . "\xf177")
|
||||
("long-arrow-right" . "\xf178")
|
||||
("long-arrow-up" . "\xf176")
|
||||
("low-vision" . "\xf2a8")
|
||||
("magic" . "\xf0d0")
|
||||
("magnet" . "\xf076")
|
||||
("male" . "\xf183")
|
||||
("map" . "\xf279")
|
||||
("map-marker" . "\xf041")
|
||||
("map-o" . "\xf278")
|
||||
("map-pin" . "\xf276")
|
||||
("map-signs" . "\xf277")
|
||||
("mars" . "\xf222")
|
||||
("mars-double" . "\xf227")
|
||||
("mars-stroke" . "\xf229")
|
||||
("mars-stroke-h" . "\xf22b")
|
||||
("mars-stroke-v" . "\xf22a")
|
||||
("maxcdn" . "\xf136")
|
||||
("meanpath" . "\xf20c")
|
||||
("medium" . "\xf23a")
|
||||
("medkit" . "\xf0fa")
|
||||
("meh-o" . "\xf11a")
|
||||
("mercury" . "\xf223")
|
||||
("microphone" . "\xf130")
|
||||
("microphone-slash" . "\xf131")
|
||||
("minus" . "\xf068")
|
||||
("minus-circle" . "\xf056")
|
||||
("minus-square" . "\xf146")
|
||||
("minus-square-o" . "\xf147")
|
||||
("mixcloud" . "\xf289")
|
||||
("mobile" . "\xf10b")
|
||||
("modx" . "\xf285")
|
||||
("money" . "\xf0d6")
|
||||
("moon-o" . "\xf186")
|
||||
("motorcycle" . "\xf21c")
|
||||
("mouse-pointer" . "\xf245")
|
||||
("music" . "\xf001")
|
||||
("neuter" . "\xf22c")
|
||||
("newspaper-o" . "\xf1ea")
|
||||
("object-group" . "\xf247")
|
||||
("object-ungroup" . "\xf248")
|
||||
("odnoklassniki" . "\xf263")
|
||||
("odnoklassniki-square" . "\xf264")
|
||||
("opencart" . "\xf23d")
|
||||
("openid" . "\xf19b")
|
||||
("opera" . "\xf26a")
|
||||
("optin-monster" . "\xf23c")
|
||||
("outdent" . "\xf03b")
|
||||
("pagelines" . "\xf18c")
|
||||
("paint-brush" . "\xf1fc")
|
||||
("paper-plane" . "\xf1d8")
|
||||
("paper-plane-o" . "\xf1d9")
|
||||
("paperclip" . "\xf0c6")
|
||||
("paragraph" . "\xf1dd")
|
||||
("pause" . "\xf04c")
|
||||
("pause-circle" . "\xf28b")
|
||||
("pause-circle-o" . "\xf28c")
|
||||
("paw" . "\xf1b0")
|
||||
("paypal" . "\xf1ed")
|
||||
("pencil" . "\xf040")
|
||||
("pencil-square" . "\xf14b")
|
||||
("pencil-square-o" . "\xf044")
|
||||
("percent" . "\xf295")
|
||||
("phone" . "\xf095")
|
||||
("phone-square" . "\xf098")
|
||||
("picture-o" . "\xf03e")
|
||||
("pie-chart" . "\xf200")
|
||||
("pied-piper" . "\xf2ae")
|
||||
("pied-piper-alt" . "\xf1a8")
|
||||
("pied-piper-pp" . "\xf1a7")
|
||||
("pinterest" . "\xf0d2")
|
||||
("pinterest-p" . "\xf231")
|
||||
("pinterest-square" . "\xf0d3")
|
||||
("plane" . "\xf072")
|
||||
("play" . "\xf04b")
|
||||
("play-circle" . "\xf144")
|
||||
("play-circle-o" . "\xf01d")
|
||||
("plug" . "\xf1e6")
|
||||
("plus" . "\xf067")
|
||||
("plus-circle" . "\xf055")
|
||||
("plus-square" . "\xf0fe")
|
||||
("plus-square-o" . "\xf196")
|
||||
("power-off" . "\xf011")
|
||||
("print" . "\xf02f")
|
||||
("product-hunt" . "\xf288")
|
||||
("puzzle-piece" . "\xf12e")
|
||||
("qq" . "\xf1d6")
|
||||
("qrcode" . "\xf029")
|
||||
("question" . "\xf128")
|
||||
("question-circle" . "\xf059")
|
||||
("question-circle-o" . "\xf29c")
|
||||
("quote-left" . "\xf10d")
|
||||
("quote-right" . "\xf10e")
|
||||
("random" . "\xf074")
|
||||
("rebel" . "\xf1d0")
|
||||
("recycle" . "\xf1b8")
|
||||
("reddit" . "\xf1a1")
|
||||
("reddit-alien" . "\xf281")
|
||||
("reddit-square" . "\xf1a2")
|
||||
("refresh" . "\xf021")
|
||||
("registered" . "\xf25d")
|
||||
("renren" . "\xf18b")
|
||||
("repeat" . "\xf01e")
|
||||
("reply" . "\xf112")
|
||||
("reply-all" . "\xf122")
|
||||
("retweet" . "\xf079")
|
||||
("road" . "\xf018")
|
||||
("rocket" . "\xf135")
|
||||
("rss" . "\xf09e")
|
||||
("rss-square" . "\xf143")
|
||||
("rub" . "\xf158")
|
||||
("safari" . "\xf267")
|
||||
("scissors" . "\xf0c4")
|
||||
("scribd" . "\xf28a")
|
||||
("search" . "\xf002")
|
||||
("search-minus" . "\xf010")
|
||||
("search-plus" . "\xf00e")
|
||||
("sellsy" . "\xf213")
|
||||
("server" . "\xf233")
|
||||
("share" . "\xf064")
|
||||
("share-alt" . "\xf1e0")
|
||||
("share-alt-square" . "\xf1e1")
|
||||
("share-square" . "\xf14d")
|
||||
("share-square-o" . "\xf045")
|
||||
("shield" . "\xf132")
|
||||
("ship" . "\xf21a")
|
||||
("shirtsinbulk" . "\xf214")
|
||||
("shopping-bag" . "\xf290")
|
||||
("shopping-basket" . "\xf291")
|
||||
("shopping-cart" . "\xf07a")
|
||||
("sign-in" . "\xf090")
|
||||
("sign-language" . "\xf2a7")
|
||||
("sign-out" . "\xf08b")
|
||||
("signal" . "\xf012")
|
||||
("simplybuilt" . "\xf215")
|
||||
("sitemap" . "\xf0e8")
|
||||
("skyatlas" . "\xf216")
|
||||
("skype" . "\xf17e")
|
||||
("slack" . "\xf198")
|
||||
("sliders" . "\xf1de")
|
||||
("slideshare" . "\xf1e7")
|
||||
("smile-o" . "\xf118")
|
||||
("snapchat" . "\xf2ab")
|
||||
("snapchat-ghost" . "\xf2ac")
|
||||
("snapchat-square" . "\xf2ad")
|
||||
("sort" . "\xf0dc")
|
||||
("sort-alpha-asc" . "\xf15d")
|
||||
("sort-alpha-desc" . "\xf15e")
|
||||
("sort-amount-asc" . "\xf160")
|
||||
("sort-amount-desc" . "\xf161")
|
||||
("sort-asc" . "\xf0de")
|
||||
("sort-desc" . "\xf0dd")
|
||||
("sort-numeric-asc" . "\xf162")
|
||||
("sort-numeric-desc" . "\xf163")
|
||||
("soundcloud" . "\xf1be")
|
||||
("space-shuttle" . "\xf197")
|
||||
("spinner" . "\xf110")
|
||||
("spoon" . "\xf1b1")
|
||||
("spotify" . "\xf1bc")
|
||||
("square" . "\xf0c8")
|
||||
("square-o" . "\xf096")
|
||||
("stack-exchange" . "\xf18d")
|
||||
("stack-overflow" . "\xf16c")
|
||||
("star" . "\xf005")
|
||||
("star-half" . "\xf089")
|
||||
("star-half-o" . "\xf123")
|
||||
("star-o" . "\xf006")
|
||||
("steam" . "\xf1b6")
|
||||
("steam-square" . "\xf1b7")
|
||||
("step-backward" . "\xf048")
|
||||
("step-forward" . "\xf051")
|
||||
("stethoscope" . "\xf0f1")
|
||||
("sticky-note" . "\xf249")
|
||||
("sticky-note-o" . "\xf24a")
|
||||
("stop" . "\xf04d")
|
||||
("stop-circle" . "\xf28d")
|
||||
("stop-circle-o" . "\xf28e")
|
||||
("street-view" . "\xf21d")
|
||||
("strikethrough" . "\xf0cc")
|
||||
("stumbleupon" . "\xf1a4")
|
||||
("stumbleupon-circle" . "\xf1a3")
|
||||
("subscript" . "\xf12c")
|
||||
("subway" . "\xf239")
|
||||
("suitcase" . "\xf0f2")
|
||||
("sun-o" . "\xf185")
|
||||
("superscript" . "\xf12b")
|
||||
("table" . "\xf0ce")
|
||||
("tablet" . "\xf10a")
|
||||
("tachometer" . "\xf0e4")
|
||||
("tag" . "\xf02b")
|
||||
("tags" . "\xf02c")
|
||||
("tasks" . "\xf0ae")
|
||||
("taxi" . "\xf1ba")
|
||||
("television" . "\xf26c")
|
||||
("tencent-weibo" . "\xf1d5")
|
||||
("terminal" . "\xf120")
|
||||
("text-height" . "\xf034")
|
||||
("text-width" . "\xf035")
|
||||
("th" . "\xf00a")
|
||||
("th-large" . "\xf009")
|
||||
("th-list" . "\xf00b")
|
||||
("themeisle" . "\xf2b2")
|
||||
("thumb-tack" . "\xf08d")
|
||||
("thumbs-down" . "\xf165")
|
||||
("thumbs-o-down" . "\xf088")
|
||||
("thumbs-o-up" . "\xf087")
|
||||
("thumbs-up" . "\xf164")
|
||||
("ticket" . "\xf145")
|
||||
("times" . "\xf00d")
|
||||
("times-circle" . "\xf057")
|
||||
("times-circle-o" . "\xf05c")
|
||||
("tint" . "\xf043")
|
||||
("toggle-off" . "\xf204")
|
||||
("toggle-on" . "\xf205")
|
||||
("trademark" . "\xf25c")
|
||||
("train" . "\xf238")
|
||||
("transgender" . "\xf224")
|
||||
("transgender-alt" . "\xf225")
|
||||
("trash" . "\xf1f8")
|
||||
("trash-o" . "\xf014")
|
||||
("tree" . "\xf1bb")
|
||||
("trello" . "\xf181")
|
||||
("tripadvisor" . "\xf262")
|
||||
("trophy" . "\xf091")
|
||||
("truck" . "\xf0d1")
|
||||
("try" . "\xf195")
|
||||
("tty" . "\xf1e4")
|
||||
("tumblr" . "\xf173")
|
||||
("tumblr-square" . "\xf174")
|
||||
("twitch" . "\xf1e8")
|
||||
("twitter" . "\xf099")
|
||||
("twitter-square" . "\xf081")
|
||||
("umbrella" . "\xf0e9")
|
||||
("underline" . "\xf0cd")
|
||||
("undo" . "\xf0e2")
|
||||
("universal-access" . "\xf29a")
|
||||
("university" . "\xf19c")
|
||||
("unlock" . "\xf09c")
|
||||
("unlock-alt" . "\xf13e")
|
||||
("upload" . "\xf093")
|
||||
("usb" . "\xf287")
|
||||
("usd" . "\xf155")
|
||||
("user" . "\xf007")
|
||||
("user-md" . "\xf0f0")
|
||||
("user-plus" . "\xf234")
|
||||
("user-secret" . "\xf21b")
|
||||
("user-times" . "\xf235")
|
||||
("users" . "\xf0c0")
|
||||
("venus" . "\xf221")
|
||||
("venus-double" . "\xf226")
|
||||
("venus-mars" . "\xf228")
|
||||
("viacoin" . "\xf237")
|
||||
("viadeo" . "\xf2a9")
|
||||
("viadeo-square" . "\xf2aa")
|
||||
("video-camera" . "\xf03d")
|
||||
("vimeo" . "\xf27d")
|
||||
("vimeo-square" . "\xf194")
|
||||
("vine" . "\xf1ca")
|
||||
("vk" . "\xf189")
|
||||
("volume-control-phone" . "\xf2a0")
|
||||
("volume-down" . "\xf027")
|
||||
("volume-off" . "\xf026")
|
||||
("volume-up" . "\xf028")
|
||||
("weibo" . "\xf18a")
|
||||
("weixin" . "\xf1d7")
|
||||
("whatsapp" . "\xf232")
|
||||
("wheelchair" . "\xf193")
|
||||
("wheelchair-alt" . "\xf29b")
|
||||
("wifi" . "\xf1eb")
|
||||
("wikipedia-w" . "\xf266")
|
||||
("windows" . "\xf17a")
|
||||
("wordpress" . "\xf19a")
|
||||
("wpbeginner" . "\xf297")
|
||||
("wpforms" . "\xf298")
|
||||
("wrench" . "\xf0ad")
|
||||
("xing" . "\xf168")
|
||||
("xing-square" . "\xf169")
|
||||
("y-combinator" . "\xf23b")
|
||||
("yahoo" . "\xf19e")
|
||||
("yelp" . "\xf1e9")
|
||||
("yoast" . "\xf2b1")
|
||||
("youtube" . "\xf167")
|
||||
("youtube-play" . "\xf16a")
|
||||
("youtube-square" . "\xf166")
|
||||
|
||||
))
|
||||
|
||||
(provide 'data-faicons)
|
BIN
code/elpa/all-the-icons-20220325.1238/data/data-faicons.elc
Normal file
BIN
code/elpa/all-the-icons-20220325.1238/data/data-faicons.elc
Normal file
Binary file not shown.
491
code/elpa/all-the-icons-20220325.1238/data/data-fileicons.el
Normal file
491
code/elpa/all-the-icons-20220325.1238/data/data-fileicons.el
Normal file
|
@ -0,0 +1,491 @@
|
|||
(defvar all-the-icons-data/file-icon-alist
|
||||
'(
|
||||
|
||||
( "1c" . "\xa5ea" )
|
||||
( "1c-alt" . "\xea28" )
|
||||
( "MJML" . "\xea6f" )
|
||||
( "R" . "\xe905" )
|
||||
( "abap" . "\xe92b" )
|
||||
( "abif" . "\xea4e" )
|
||||
( "access" . "\xe9ea" )
|
||||
( "actionscript" . "\xe92e" )
|
||||
( "ada" . "\xe90b" )
|
||||
( "ae" . "\xe9f3" )
|
||||
( "ai" . "\xe6b4" )
|
||||
( "akka" . "\xea0e" )
|
||||
( "alex" . "\x29cb" )
|
||||
( "alloy" . "\xe935" )
|
||||
( "alpine-linux" . "\xe9ff" )
|
||||
( "ampl" . "\xe94e" )
|
||||
( "amx" . "\xe99b" )
|
||||
( "angelscript" . "\xea5b" )
|
||||
( "ansible" . "\x24b6" )
|
||||
( "ansible-alt" . "\x61" )
|
||||
( "ant" . "\xe93e" )
|
||||
( "antlr" . "\xe92c" )
|
||||
( "antwar" . "\x2591" )
|
||||
( "api-blueprint" . "\xe92d" )
|
||||
( "apl" . "\x234b" )
|
||||
( "apl-old" . "\xe909" )
|
||||
( "apple" . "\xe925" )
|
||||
( "appveyor" . "\xe923" )
|
||||
( "arc" . "\xe92f" )
|
||||
( "arch-linux" . "\x41" )
|
||||
( "arduino" . "\xe930" )
|
||||
( "arttext" . "\x24d0" )
|
||||
( "asciidoc" . "\xe918" )
|
||||
( "assembly" . "\xEB4F" )
|
||||
( "ats" . "\xe934" )
|
||||
( "audacity" . "\xe9f9" )
|
||||
( "augeas" . "\xe931" )
|
||||
( "aurelia" . "\xea48" )
|
||||
( "auto-hotkey" . "\xe932" )
|
||||
( "autoit" . "\xe933" )
|
||||
( "babel" . "\xe91f" )
|
||||
( "bazel" . "\xea5a" )
|
||||
( "bem" . "\xea59" )
|
||||
( "bib" . "\xe601" )
|
||||
( "bintray" . "\xea6e" )
|
||||
( "bithound" . "\xea2a" )
|
||||
( "blender" . "\xe9fa" )
|
||||
( "bluespec" . "\xe93c" )
|
||||
( "boo" . "\xe939" )
|
||||
( "brain" . "\xe93a" )
|
||||
( "brakeman" . "\xe9d6" )
|
||||
( "bro" . "\xe93b" )
|
||||
( "broccoli" . "\xe922" )
|
||||
( "brotli" . "\xea6c" )
|
||||
( "browserslist" . "\xea80" )
|
||||
( "brunch" . "\xea47" )
|
||||
( "buck" . "\xea46" )
|
||||
( "build-boot" . "\xf103" )
|
||||
( "bundler" . "\xea45" )
|
||||
( "byond" . "\xe962" )
|
||||
( "cabal" . "\xe9c2" )
|
||||
( "caddy" . "\xea58" )
|
||||
( "cake" . "\xe9e3" )
|
||||
( "cakefile" . "\xe924" )
|
||||
( "cakephp" . "\xea43" )
|
||||
( "cakephp-old" . "\xe9d3" )
|
||||
( "cc" . "\xe9d5" )
|
||||
( "ceylon" . "\xe94f" )
|
||||
( "chai" . "\x63" )
|
||||
( "chapel" . "\xe950" )
|
||||
( "chartjs" . "\xea0b" )
|
||||
( "chef" . "\xea42" )
|
||||
( "chuck" . "\xe943" )
|
||||
( "circle-ci" . "\xea12" )
|
||||
( "cirru" . "\xe951" )
|
||||
( "ckeditor" . "\xea0c" )
|
||||
( "clarion" . "\xe952" )
|
||||
( "clean" . "\xe95b" )
|
||||
( "click" . "\xe95c" )
|
||||
( "clips" . "\xe940" )
|
||||
( "clj" . "\xf105" )
|
||||
( "cljs" . "\xf104" )
|
||||
( "closure-template" . "\xea82" )
|
||||
( "cmake" . "\xe93f" )
|
||||
( "cobol" . "\xea44" )
|
||||
( "codecov" . "\x2602" )
|
||||
( "codekit" . "\xea41" )
|
||||
( "codemirror" . "\xea0d" )
|
||||
( "codeship" . "\xea6a" )
|
||||
( "cold-fusion" . "\xe929" )
|
||||
( "clisp" . "\xe972" )
|
||||
( "composer" . "\xe683" )
|
||||
( "config" . "\xf07c" )
|
||||
( "coq" . "\xe95f" )
|
||||
( "cordova" . "\xea11" )
|
||||
( "cp" . "\xe942" )
|
||||
( "cpan" . "\xea87" )
|
||||
( "creole" . "\xe95e" )
|
||||
( "crystal" . "\xe902" )
|
||||
( "cs-script" . "\xe9e2" )
|
||||
( "csound" . "\xe9f0" )
|
||||
( "cucumber" . "\xf02b" )
|
||||
( "cython" . "\xe963" )
|
||||
( "d3" . "\xea10" )
|
||||
( "darcs" . "\xe964" )
|
||||
( "dart" . "\xe698" )
|
||||
( "dashboard" . "\xf07d" )
|
||||
( "dbase" . "\xe9f1" )
|
||||
( "default" . "\x1f5cc" )
|
||||
( "delphi" . "\xea40" )
|
||||
( "devicetree" . "\xea57" )
|
||||
( "diff" . "\xe960" )
|
||||
( "dockerfile" . "\xf106" )
|
||||
( "doclets" . "\xea3f" )
|
||||
( "doge" . "\xe946" )
|
||||
( "dom" . "\xea71" )
|
||||
( "donejs" . "\x1f3c1" )
|
||||
( "doxygen" . "\xe928" )
|
||||
( "dragula" . "\x1f44c" )
|
||||
( "drone" . "\xea3d" )
|
||||
( "dyalog" . "\xe90c" )
|
||||
( "dylib" . "\xea15" )
|
||||
( "e" . "\x45" )
|
||||
( "eagle" . "\xe965" )
|
||||
( "easybuild" . "\xea85" )
|
||||
( "ec" . "\xe9c9" )
|
||||
( "ecere" . "\xe966" )
|
||||
( "edge" . "\xea78" )
|
||||
( "editorconfig" . "\xea1b" )
|
||||
( "eiffel" . "\xe967" )
|
||||
( "ejs" . "\xea4b" )
|
||||
( "electron" . "\xea27" )
|
||||
( "elm" . "\xf102" )
|
||||
( "emacs" . "\xe926" )
|
||||
( "elisp" . "\xe926" )
|
||||
( "ember" . "\xe61b" )
|
||||
( "emberscript" . "\xe968" )
|
||||
( "eq" . "\xea0a" )
|
||||
( "esdoc" . "\xea5c" )
|
||||
( "eslint" . "\xea0f" )
|
||||
( "eslint-old" . "\xe90e" )
|
||||
( "excel" . "\xe9ee" )
|
||||
( "fabfile" . "\xe94b" )
|
||||
( "factor" . "\xe96a" )
|
||||
( "fancy" . "\xe96b" )
|
||||
( "fantom" . "\xe96f" )
|
||||
( "fbx" . "\xe9fc" )
|
||||
( "ffmpeg" . "\xea22" )
|
||||
( "finder" . "\xe9e9" )
|
||||
( "firebase" . "\xea7f" )
|
||||
( "flow" . "\xe921" )
|
||||
( "flux" . "\xe969" )
|
||||
( "font" . "\xe90f" )
|
||||
( "fontforge" . "\xfb00" )
|
||||
( "fortran" . "\xe90a" )
|
||||
( "franca" . "\xea56" )
|
||||
( "freemarker" . "\xe970" )
|
||||
( "frege" . "\xe96e" )
|
||||
( "fsharp" . "\xe6a7" )
|
||||
( "fuel-ux" . "\xea09" )
|
||||
( "gams" . "\xe973" )
|
||||
( "gap" . "\xe971" )
|
||||
( "gdb" . "\xea08" )
|
||||
( "genshi" . "\xe976" )
|
||||
( "gentoo" . "\xe96d" )
|
||||
( "gf" . "\xe978" )
|
||||
( "gitlab" . "\xea3c" )
|
||||
( "glade" . "\xe938" )
|
||||
( "glyphs" . "\x47" )
|
||||
( "gn" . "\xea25" )
|
||||
( "gnu" . "\xe679" )
|
||||
( "go" . "\xeaae" )
|
||||
( "godot" . "\xe974" )
|
||||
( "golo" . "\xe979" )
|
||||
( "gosu" . "\xe97a" )
|
||||
( "gradle" . "\xe903" )
|
||||
( "graphql" . "\xe97c" )
|
||||
( "graphviz" . "\xe97d" )
|
||||
( "groovy" . "\xe904" )
|
||||
( "grunt" . "\xe611" )
|
||||
( "gulp" . "\xe610" )
|
||||
( "hack" . "\xe9ce" )
|
||||
( "haml" . "\xf15b" )
|
||||
( "harbour" . "\xe97b" )
|
||||
( "hashicorp" . "\xe97e" )
|
||||
( "haxe" . "\xe907" )
|
||||
( "haxedevelop" . "\xea3b" )
|
||||
( "hg" . "\x263f" )
|
||||
( "hoplon" . "\xea4d" )
|
||||
( "hy" . "\xe97f" )
|
||||
( "icu" . "\xea23" )
|
||||
( "id" . "\xe9f4" )
|
||||
( "idl" . "\xe947" )
|
||||
( "idris" . "\xe983" )
|
||||
( "igorpro" . "\xe980" )
|
||||
( "image" . "\xf012" )
|
||||
( "inform7" . "\xe984" )
|
||||
( "inno" . "\xe985" )
|
||||
( "io" . "\xe981" )
|
||||
( "ioke" . "\xe982" )
|
||||
( "ionic-project" . "\xf14b" )
|
||||
( "isabelle" . "\xe945" )
|
||||
( "j" . "\xe937" )
|
||||
( "jade" . "\xe90d" )
|
||||
( "jake" . "\xe948" )
|
||||
( "jasmine" . "\xea3a" )
|
||||
( "jenkins" . "\xe667" )
|
||||
( "jest" . "\xea39" )
|
||||
( "jinja" . "\xe944" )
|
||||
( "jison" . "\xea55" )
|
||||
( "jolie" . "\xea75" )
|
||||
( "jsonld" . "\xe958" )
|
||||
( "jsx" . "\xf100" )
|
||||
( "jsx-2" . "\xf101" )
|
||||
( "jsx2-alt" . "\xe9e6" )
|
||||
( "julia" . "\x26ec" )
|
||||
( "junos" . "\xea81" )
|
||||
( "jupyter" . "\xe987" )
|
||||
( "karma" . "\xe9cd" )
|
||||
( "keynote" . "\xe9e5" )
|
||||
( "khronos" . "\xe9f8" )
|
||||
( "kicad" . "\xea4c" )
|
||||
( "kitchenci" . "\xea38" )
|
||||
( "kivy" . "\xe901" )
|
||||
( "knockout" . "\x4b" )
|
||||
( "kotlin" . "\xe989" )
|
||||
( "krl" . "\xe988" )
|
||||
( "labview" . "\xe98a" )
|
||||
( "lasso" . "\xe98c" )
|
||||
( "leaflet" . "\xea07" )
|
||||
( "lean" . "\x4c" )
|
||||
( "lerna" . "\xea37" )
|
||||
( "lfe" . "\xe94c" )
|
||||
( "libuv" . "\xea21" )
|
||||
( "lightwave" . "\xe9fb" )
|
||||
( "lime" . "\xea36" )
|
||||
( "lisp" . "\xe908" )
|
||||
( "livescript" . "\xe914" )
|
||||
( "llvm" . "\xe91d" )
|
||||
( "logtalk" . "\xe98d" )
|
||||
( "lookml" . "\xe98e" )
|
||||
( "lsl" . "\xe98b" )
|
||||
( "lua" . "\xe91b" )
|
||||
( "mako" . "\xe98f" )
|
||||
( "man-page" . "\xe936" )
|
||||
( "mapbox" . "\xe941" )
|
||||
( "markdownlint" . "\xf0c9" )
|
||||
( "marko" . "\xe920" )
|
||||
( "mathematica" . "\xe990" )
|
||||
( "mathjax" . "\xea06" )
|
||||
( "matlab" . "\xe991" )
|
||||
( "max" . "\xe993" )
|
||||
( "maxscript" . "\xe900" )
|
||||
( "maya" . "\xe9f6" )
|
||||
( "mediawiki" . "\xe954" )
|
||||
( "mercury" . "\xe994" )
|
||||
( "meson" . "\xea54" )
|
||||
( "metal" . "\x4d" )
|
||||
( "meteor" . "\xe6a5" )
|
||||
( "microsoft-infopath" . "\xea35" )
|
||||
( "minecraft" . "\xe9dc" )
|
||||
( "minizinc" . "\xea53" )
|
||||
( "mirah" . "\xe995" )
|
||||
( "miranda" . "\xea52" )
|
||||
( "mocha" . "\x26fe" )
|
||||
( "modula-2" . "\xe996" )
|
||||
( "moment" . "\x1f558" )
|
||||
( "moment-tz" . "\x1f30d" )
|
||||
( "monkey" . "\xe997" )
|
||||
( "moustache" . "\xe60f" )
|
||||
( "mruby" . "\xea18" )
|
||||
( "mupad" . "\xe9ca" )
|
||||
( "nano" . "\xea76" )
|
||||
( "nanoc" . "\xea51" )
|
||||
( "nant" . "\xe9e1" )
|
||||
( "nasm" . "\xea72" )
|
||||
( "neko" . "\xea05" )
|
||||
( "netlogo" . "\xe99c" )
|
||||
( "new-relic" . "\xe9d7" )
|
||||
( "nginx" . "\xf146b" )
|
||||
( "nib" . "\x2712" )
|
||||
( "nimrod" . "\xe998" )
|
||||
( "nit" . "\xe999" )
|
||||
( "nix" . "\xe99a" )
|
||||
( "nmap" . "\xe94d" )
|
||||
( "nodemon" . "\xea26" )
|
||||
( "normalize" . "\xea04" )
|
||||
( "npm" . "\xe91c" )
|
||||
( "npm-old" . "\xf17b" )
|
||||
( "nsis" . "\xea1e" )
|
||||
( "nsis-old" . "\xe992" )
|
||||
( "nuclide" . "\xea34" )
|
||||
( "nuget" . "\xe9d9" )
|
||||
( "numpy" . "\xe99d" )
|
||||
( "nunjucks" . "\xe953" )
|
||||
( "nvidia" . "\xe95d" )
|
||||
( "nxc" . "\xea6b" )
|
||||
( "obj" . "\xe9e8" )
|
||||
( "objective-j" . "\xe99e" )
|
||||
( "ocaml" . "\xe91a" )
|
||||
( "octave" . "\xea33" )
|
||||
( "onenote" . "\xe9eb" )
|
||||
( "ooc" . "\xe9cb" )
|
||||
( "opa" . "\x2601" )
|
||||
( "opencl" . "\xe99f" )
|
||||
( "opengl" . "\xea7a" )
|
||||
( "openoffice" . "\xe9e4" )
|
||||
( "openscad" . "\xe911" )
|
||||
( "org" . "\xe917" )
|
||||
( "owl" . "\xe957" )
|
||||
( "ox" . "\xe9a1" )
|
||||
( "oxygene" . "\xe9bf" )
|
||||
( "oz" . "\xe9be" )
|
||||
( "p4" . "\xea50" )
|
||||
( "pan" . "\xe9bd" )
|
||||
( "papyrus" . "\xe9bc" )
|
||||
( "parrot" . "\xe9bb" )
|
||||
( "pascal" . "\xe92a" )
|
||||
( "patch" . "\xe961" )
|
||||
( "pawn" . "\x265f" )
|
||||
( "pb" . "\xea14" )
|
||||
( "pegjs" . "\xea74" )
|
||||
( "raku" . "\xe96c" )
|
||||
( "phalcon" . "\xe94a" )
|
||||
( "phoenix" . "\xea5f" )
|
||||
( "php" . "\xf147" )
|
||||
( "phpunit" . "\xea32" )
|
||||
( "pickle" . "\xe9c4" )
|
||||
( "pike" . "\xe9b9" )
|
||||
( "platformio" . "\xea2c" )
|
||||
( "pm2" . "\x2630" )
|
||||
( "pod" . "\xea84" )
|
||||
( "pogo" . "\xe9b8" )
|
||||
( "pointwise" . "\xe977" )
|
||||
( "polymer" . "\xea2b" )
|
||||
( "pony" . "\xe9b7" )
|
||||
( "postcss" . "\xe910" )
|
||||
( "postscript" . "\xe955" )
|
||||
( "povray" . "\x50" )
|
||||
( "powerpoint" . "\xe9ec" )
|
||||
( "powershell" . "\xe9da" )
|
||||
( "precision" . "\x2295" )
|
||||
( "premiere" . "\xe9f5" )
|
||||
( "processing" . "\xe9a0" )
|
||||
( "progress" . "\xe9c0" )
|
||||
( "propeller" . "\xe9b5" )
|
||||
( "proselint" . "\xea6d" )
|
||||
( "protractor" . "\xe9de" )
|
||||
( "ps" . "\xe6b8" )
|
||||
( "pug" . "\xea13" )
|
||||
( "pug-alt" . "\xe9d0" )
|
||||
( "puppet" . "\xf0c3" )
|
||||
( "purebasic" . "\x1b5" )
|
||||
( "purescript" . "\xe9b2" )
|
||||
( "racket" . "\xe9b1" )
|
||||
( "raml" . "\xe913" )
|
||||
( "rascal" . "\xea24" )
|
||||
( "rdoc" . "\xe9b0" )
|
||||
( "realbasic" . "\xe9af" )
|
||||
( "reason" . "\xea1d" )
|
||||
( "rebol" . "\xe9ae" )
|
||||
( "red" . "\xe9ad" )
|
||||
( "redux" . "\xea30" )
|
||||
( "regex" . "\x2a" )
|
||||
( "rexx" . "\xea16" )
|
||||
( "rhino" . "\xea4a" )
|
||||
( "ring" . "\x1f48d" )
|
||||
( "riot" . "\xe919" )
|
||||
( "robot" . "\xe9ac" )
|
||||
( "rollup" . "\xea20" )
|
||||
( "rollup-old" . "\xe9fd" )
|
||||
( "rot" . "\x1f764" )
|
||||
( "rspec" . "\xea31" )
|
||||
( "rst" . "\xe9cc" )
|
||||
( "sage" . "\xe9ab" )
|
||||
( "saltstack" . "\xe915" )
|
||||
( "sas" . "\xe95a" )
|
||||
( "sbt" . "\xe9d2" )
|
||||
( "sc" . "\xe9a2" )
|
||||
( "scheme" . "\x3bb" )
|
||||
( "scilab" . "\xe9a9" )
|
||||
( "scrutinizer" . "\xe9d4" )
|
||||
( "self" . "\xe9a8" )
|
||||
( "sequelize" . "\xea2f" )
|
||||
( "sf" . "\xe9db" )
|
||||
( "shen" . "\xe9a7" )
|
||||
( "shipit" . "\x26f5" )
|
||||
( "shippable" . "\xea2d" )
|
||||
( "shopify" . "\xe9cf" )
|
||||
( "shuriken" . "\x272b" )
|
||||
( "silverstripe" . "\xe800" )
|
||||
( "sinatra" . "\xea03" )
|
||||
( "sketch" . "\xe927" )
|
||||
( "sketchup-layout" . "\xea7c" )
|
||||
( "sketchup-make" . "\xea7e" )
|
||||
( "sketchup-stylebuilder" . "\xea7d" )
|
||||
( "slash" . "\xe9a6" )
|
||||
( "snyk" . "\xea1c" )
|
||||
( "solidity" . "\xea86" )
|
||||
( "sparql" . "\xe959" )
|
||||
( "spray" . "\xea02" )
|
||||
( "sqf" . "\xe9a5" )
|
||||
( "sqlite" . "\xe9dd" )
|
||||
( "squarespace" . "\xea5e" )
|
||||
( "stan" . "\xe9a4" )
|
||||
( "stata" . "\xe9a3" )
|
||||
( "storyist" . "\xe9ef" )
|
||||
( "strings" . "\xe9e0" )
|
||||
( "stylelint" . "\xe93d" )
|
||||
( "stylus" . "\x73" )
|
||||
( "stylus-full" . "\xe9f7" )
|
||||
( "stylus-orb" . "\x53" )
|
||||
( "sublime" . "\xe986" )
|
||||
( "sv" . "\xe9c3" )
|
||||
( "svn" . "\xea17" )
|
||||
( "swagger" . "\xea29" )
|
||||
( "tag" . "\xf015" )
|
||||
( "tcl" . "\xe956" )
|
||||
( "telegram" . "\x2708" )
|
||||
( "terminal" . "\xf0c8" )
|
||||
( "tern" . "\x1f54a" )
|
||||
( "terraform" . "\xe916" )
|
||||
( "test-coffeescript" . "\xea62" )
|
||||
( "test-dir" . "\xea60" )
|
||||
( "test-generic" . "\xea63" )
|
||||
( "test-js" . "\xea64" )
|
||||
( "test-perl" . "\xea65" )
|
||||
( "test-python" . "\xea66" )
|
||||
( "test-react" . "\xea67" )
|
||||
( "test-ruby" . "\xea68" )
|
||||
( "test-typescript" . "\xea69" )
|
||||
( "tex" . "\xe600" )
|
||||
( "textile" . "\x74" )
|
||||
( "textmate" . "\x2122" )
|
||||
( "thor" . "\xe9d8" )
|
||||
( "tinymce" . "\xea01" )
|
||||
( "tsx" . "\xe9d1" )
|
||||
( "tsx-alt" . "\xe9e7" )
|
||||
( "tt" . "\x54" )
|
||||
( "turing" . "\xe9b6" )
|
||||
( "twig" . "\x2e19" )
|
||||
( "twine" . "\xea5d" )
|
||||
( "txl" . "\xe9c1" )
|
||||
( "typedoc" . "\xe9fe" )
|
||||
( "typescript" . "\xe912" )
|
||||
( "typescript-alt" . "\x2a6" )
|
||||
( "typings" . "\xe9df" )
|
||||
( "uno" . "\xe9b3" )
|
||||
( "unreal" . "\x75" )
|
||||
( "urweb" . "\xe9ba" )
|
||||
( "v8" . "\xea1f" )
|
||||
( "vagrant" . "\x56" )
|
||||
( "vcl" . "\xe9b4" )
|
||||
( "verilog" . "\xe949" )
|
||||
( "vertex-shader" . "\xea79" )
|
||||
( "vhdl" . "\xe9aa" )
|
||||
( "video" . "\xf057" )
|
||||
( "virtualbox" . "\xea3e" )
|
||||
( "virtualbox-alt" . "\xea2e" )
|
||||
( "visio" . "\xea83" )
|
||||
( "vmware" . "\xea49" )
|
||||
( "vue" . "\xe906" )
|
||||
( "wasm" . "\xea70" )
|
||||
( "watchman" . "\xea4f" )
|
||||
( "webgl" . "\xea7b" )
|
||||
( "webpack" . "\xea61" )
|
||||
( "webpack-old" . "\xe91e" )
|
||||
( "wercker" . "\xea19" )
|
||||
( "word" . "\xe9ed" )
|
||||
( "x10" . "\x2169" )
|
||||
( "xamarin" . "\xea77" )
|
||||
( "xmos" . "\x58" )
|
||||
( "xpages" . "\xe9c5" )
|
||||
( "xtend" . "\xe9c6" )
|
||||
( "yarn" . "\xea1a" )
|
||||
( "yasm" . "\xea73" )
|
||||
( "yin-yang" . "\x262f" )
|
||||
( "yoyo" . "\xe975" )
|
||||
( "yui" . "\xea00" )
|
||||
( "zbrush" . "\xe9f2" )
|
||||
( "zephir" . "\xe9c7" )
|
||||
("zig" . "\x7A")
|
||||
( "zimpl" . "\xe9c8" )
|
||||
|
||||
)
|
||||
)
|
||||
|
||||
(provide 'data-fileicons)
|
BIN
code/elpa/all-the-icons-20220325.1238/data/data-fileicons.elc
Normal file
BIN
code/elpa/all-the-icons-20220325.1238/data/data-fileicons.elc
Normal file
Binary file not shown.
935
code/elpa/all-the-icons-20220325.1238/data/data-material.el
Normal file
935
code/elpa/all-the-icons-20220325.1238/data/data-material.el
Normal file
|
@ -0,0 +1,935 @@
|
|||
(defvar all-the-icons-data/material-icons-alist
|
||||
'(("3d_rotation" . "\xe84d")
|
||||
("ac_unit" . "\xeb3b")
|
||||
("access_alarm" . "\xe190")
|
||||
("access_alarms" . "\xe191")
|
||||
("access_time" . "\xe192")
|
||||
("accessibility" . "\xe84e")
|
||||
("accessible" . "\xe914")
|
||||
("account_balance" . "\xe84f")
|
||||
("account_balance_wallet" . "\xe850")
|
||||
("account_box" . "\xe851")
|
||||
("account_circle" . "\xe853")
|
||||
("adb" . "\xe60e")
|
||||
("add" . "\xe145")
|
||||
("add_a_photo" . "\xe439")
|
||||
("add_alarm" . "\xe193")
|
||||
("add_alert" . "\xe003")
|
||||
("add_box" . "\xe146")
|
||||
("add_circle" . "\xe147")
|
||||
("add_circle_outline" . "\xe148")
|
||||
("add_location" . "\xe567")
|
||||
("add_shopping_cart" . "\xe854")
|
||||
("add_to_photos" . "\xe39d")
|
||||
("add_to_queue" . "\xe05c")
|
||||
("adjust" . "\xe39e")
|
||||
("airline_seat_flat" . "\xe630")
|
||||
("airline_seat_flat_angled" . "\xe631")
|
||||
("airline_seat_individual_suite" . "\xe632")
|
||||
("airline_seat_legroom_extra" . "\xe633")
|
||||
("airline_seat_legroom_normal" . "\xe634")
|
||||
("airline_seat_legroom_reduced" . "\xe635")
|
||||
("airline_seat_recline_extra" . "\xe636")
|
||||
("airline_seat_recline_normal" . "\xe637")
|
||||
("airplanemode_active" . "\xe195")
|
||||
("airplanemode_inactive" . "\xe194")
|
||||
("airplay" . "\xe055")
|
||||
("airport_shuttle" . "\xeb3c")
|
||||
("alarm" . "\xe855")
|
||||
("alarm_add" . "\xe856")
|
||||
("alarm_off" . "\xe857")
|
||||
("alarm_on" . "\xe858")
|
||||
("album" . "\xe019")
|
||||
("all_inclusive" . "\xeb3d")
|
||||
("all_out" . "\xe90b")
|
||||
("android" . "\xe859")
|
||||
("announcement" . "\xe85a")
|
||||
("apps" . "\xe5c3")
|
||||
("archive" . "\xe149")
|
||||
("arrow_back" . "\xe5c4")
|
||||
("arrow_downward" . "\xe5db")
|
||||
("arrow_drop_down" . "\xe5c5")
|
||||
("arrow_drop_down_circle" . "\xe5c6")
|
||||
("arrow_drop_up" . "\xe5c7")
|
||||
("arrow_forward" . "\xe5c8")
|
||||
("arrow_upward" . "\xe5d8")
|
||||
("art_track" . "\xe060")
|
||||
("aspect_ratio" . "\xe85b")
|
||||
("assessment" . "\xe85c")
|
||||
("assignment" . "\xe85d")
|
||||
("assignment_ind" . "\xe85e")
|
||||
("assignment_late" . "\xe85f")
|
||||
("assignment_return" . "\xe860")
|
||||
("assignment_returned" . "\xe861")
|
||||
("assignment_turned_in" . "\xe862")
|
||||
("assistant" . "\xe39f")
|
||||
("assistant_photo" . "\xe3a0")
|
||||
("attach_file" . "\xe226")
|
||||
("attach_money" . "\xe227")
|
||||
("attachment" . "\xe2bc")
|
||||
("audiotrack" . "\xe3a1")
|
||||
("autorenew" . "\xe863")
|
||||
("av_timer" . "\xe01b")
|
||||
("backspace" . "\xe14a")
|
||||
("backup" . "\xe864")
|
||||
("battery_alert" . "\xe19c")
|
||||
("battery_charging_full" . "\xe1a3")
|
||||
("battery_full" . "\xe1a4")
|
||||
("battery_std" . "\xe1a5")
|
||||
("battery_unknown" . "\xe1a6")
|
||||
("beach_access" . "\xeb3e")
|
||||
("beenhere" . "\xe52d")
|
||||
("block" . "\xe14b")
|
||||
("bluetooth" . "\xe1a7")
|
||||
("bluetooth_audio" . "\xe60f")
|
||||
("bluetooth_connected" . "\xe1a8")
|
||||
("bluetooth_disabled" . "\xe1a9")
|
||||
("bluetooth_searching" . "\xe1aa")
|
||||
("blur_circular" . "\xe3a2")
|
||||
("blur_linear" . "\xe3a3")
|
||||
("blur_off" . "\xe3a4")
|
||||
("blur_on" . "\xe3a5")
|
||||
("book" . "\xe865")
|
||||
("bookmark" . "\xe866")
|
||||
("bookmark_border" . "\xe867")
|
||||
("border_all" . "\xe228")
|
||||
("border_bottom" . "\xe229")
|
||||
("border_clear" . "\xe22a")
|
||||
("border_color" . "\xe22b")
|
||||
("border_horizontal" . "\xe22c")
|
||||
("border_inner" . "\xe22d")
|
||||
("border_left" . "\xe22e")
|
||||
("border_outer" . "\xe22f")
|
||||
("border_right" . "\xe230")
|
||||
("border_style" . "\xe231")
|
||||
("border_top" . "\xe232")
|
||||
("border_vertical" . "\xe233")
|
||||
("branding_watermark" . "\xe06b")
|
||||
("brightness_1" . "\xe3a6")
|
||||
("brightness_2" . "\xe3a7")
|
||||
("brightness_3" . "\xe3a8")
|
||||
("brightness_4" . "\xe3a9")
|
||||
("brightness_5" . "\xe3aa")
|
||||
("brightness_6" . "\xe3ab")
|
||||
("brightness_7" . "\xe3ac")
|
||||
("brightness_auto" . "\xe1ab")
|
||||
("brightness_high" . "\xe1ac")
|
||||
("brightness_low" . "\xe1ad")
|
||||
("brightness_medium" . "\xe1ae")
|
||||
("broken_image" . "\xe3ad")
|
||||
("brush" . "\xe3ae")
|
||||
("bubble_chart" . "\xe6dd")
|
||||
("bug_report" . "\xe868")
|
||||
("build" . "\xe869")
|
||||
("burst_mode" . "\xe43c")
|
||||
("business" . "\xe0af")
|
||||
("business_center" . "\xeb3f")
|
||||
("cached" . "\xe86a")
|
||||
("cake" . "\xe7e9")
|
||||
("call" . "\xe0b0")
|
||||
("call_end" . "\xe0b1")
|
||||
("call_made" . "\xe0b2")
|
||||
("call_merge" . "\xe0b3")
|
||||
("call_missed" . "\xe0b4")
|
||||
("call_missed_outgoing" . "\xe0e4")
|
||||
("call_received" . "\xe0b5")
|
||||
("call_split" . "\xe0b6")
|
||||
("call_to_action" . "\xe06c")
|
||||
("camera" . "\xe3af")
|
||||
("camera_alt" . "\xe3b0")
|
||||
("camera_enhance" . "\xe8fc")
|
||||
("camera_front" . "\xe3b1")
|
||||
("camera_rear" . "\xe3b2")
|
||||
("camera_roll" . "\xe3b3")
|
||||
("cancel" . "\xe5c9")
|
||||
("card_giftcard" . "\xe8f6")
|
||||
("card_membership" . "\xe8f7")
|
||||
("card_travel" . "\xe8f8")
|
||||
("casino" . "\xeb40")
|
||||
("cast" . "\xe307")
|
||||
("cast_connected" . "\xe308")
|
||||
("center_focus_strong" . "\xe3b4")
|
||||
("center_focus_weak" . "\xe3b5")
|
||||
("change_history" . "\xe86b")
|
||||
("chat" . "\xe0b7")
|
||||
("chat_bubble" . "\xe0ca")
|
||||
("chat_bubble_outline" . "\xe0cb")
|
||||
("check" . "\xe5ca")
|
||||
("check_box" . "\xe834")
|
||||
("check_box_outline_blank" . "\xe835")
|
||||
("check_circle" . "\xe86c")
|
||||
("chevron_left" . "\xe5cb")
|
||||
("chevron_right" . "\xe5cc")
|
||||
("child_care" . "\xeb41")
|
||||
("child_friendly" . "\xeb42")
|
||||
("chrome_reader_mode" . "\xe86d")
|
||||
("class" . "\xe86e")
|
||||
("clear" . "\xe14c")
|
||||
("clear_all" . "\xe0b8")
|
||||
("close" . "\xe5cd")
|
||||
("closed_caption" . "\xe01c")
|
||||
("cloud" . "\xe2bd")
|
||||
("cloud_circle" . "\xe2be")
|
||||
("cloud_done" . "\xe2bf")
|
||||
("cloud_download" . "\xe2c0")
|
||||
("cloud_off" . "\xe2c1")
|
||||
("cloud_queue" . "\xe2c2")
|
||||
("cloud_upload" . "\xe2c3")
|
||||
("code" . "\xe86f")
|
||||
("collections" . "\xe3b6")
|
||||
("collections_bookmark" . "\xe431")
|
||||
("color_lens" . "\xe3b7")
|
||||
("colorize" . "\xe3b8")
|
||||
("comment" . "\xe0b9")
|
||||
("compare" . "\xe3b9")
|
||||
("compare_arrows" . "\xe915")
|
||||
("computer" . "\xe30a")
|
||||
("confirmation_number" . "\xe638")
|
||||
("contact_mail" . "\xe0d0")
|
||||
("contact_phone" . "\xe0cf")
|
||||
("contacts" . "\xe0ba")
|
||||
("content_copy" . "\xe14d")
|
||||
("content_cut" . "\xe14e")
|
||||
("content_paste" . "\xe14f")
|
||||
("control_point" . "\xe3ba")
|
||||
("control_point_duplicate" . "\xe3bb")
|
||||
("copyright" . "\xe90c")
|
||||
("create" . "\xe150")
|
||||
("create_new_folder" . "\xe2cc")
|
||||
("credit_card" . "\xe870")
|
||||
("crop" . "\xe3be")
|
||||
("crop_16_9" . "\xe3bc")
|
||||
("crop_3_2" . "\xe3bd")
|
||||
("crop_5_4" . "\xe3bf")
|
||||
("crop_7_5" . "\xe3c0")
|
||||
("crop_din" . "\xe3c1")
|
||||
("crop_free" . "\xe3c2")
|
||||
("crop_landscape" . "\xe3c3")
|
||||
("crop_original" . "\xe3c4")
|
||||
("crop_portrait" . "\xe3c5")
|
||||
("crop_rotate" . "\xe437")
|
||||
("crop_square" . "\xe3c6")
|
||||
("dashboard" . "\xe871")
|
||||
("data_usage" . "\xe1af")
|
||||
("date_range" . "\xe916")
|
||||
("dehaze" . "\xe3c7")
|
||||
("delete" . "\xe872")
|
||||
("delete_forever" . "\xe92b")
|
||||
("delete_sweep" . "\xe16c")
|
||||
("description" . "\xe873")
|
||||
("desktop_mac" . "\xe30b")
|
||||
("desktop_windows" . "\xe30c")
|
||||
("details" . "\xe3c8")
|
||||
("developer_board" . "\xe30d")
|
||||
("developer_mode" . "\xe1b0")
|
||||
("device_hub" . "\xe335")
|
||||
("devices" . "\xe1b1")
|
||||
("devices_other" . "\xe337")
|
||||
("dialer_sip" . "\xe0bb")
|
||||
("dialpad" . "\xe0bc")
|
||||
("directions" . "\xe52e")
|
||||
("directions_bike" . "\xe52f")
|
||||
("directions_boat" . "\xe532")
|
||||
("directions_bus" . "\xe530")
|
||||
("directions_car" . "\xe531")
|
||||
("directions_railway" . "\xe534")
|
||||
("directions_run" . "\xe566")
|
||||
("directions_subway" . "\xe533")
|
||||
("directions_transit" . "\xe535")
|
||||
("directions_walk" . "\xe536")
|
||||
("disc_full" . "\xe610")
|
||||
("dns" . "\xe875")
|
||||
("do_not_disturb" . "\xe612")
|
||||
("do_not_disturb_alt" . "\xe611")
|
||||
("do_not_disturb_off" . "\xe643")
|
||||
("do_not_disturb_on" . "\xe644")
|
||||
("dock" . "\xe30e")
|
||||
("domain" . "\xe7ee")
|
||||
("done" . "\xe876")
|
||||
("done_all" . "\xe877")
|
||||
("donut_large" . "\xe917")
|
||||
("donut_small" . "\xe918")
|
||||
("drafts" . "\xe151")
|
||||
("drag_handle" . "\xe25d")
|
||||
("drive_eta" . "\xe613")
|
||||
("dvr" . "\xe1b2")
|
||||
("edit" . "\xe3c9")
|
||||
("edit_location" . "\xe568")
|
||||
("eject" . "\xe8fb")
|
||||
("email" . "\xe0be")
|
||||
("enhanced_encryption" . "\xe63f")
|
||||
("equalizer" . "\xe01d")
|
||||
("error" . "\xe000")
|
||||
("error_outline" . "\xe001")
|
||||
("euro_symbol" . "\xe926")
|
||||
("ev_station" . "\xe56d")
|
||||
("event" . "\xe878")
|
||||
("event_available" . "\xe614")
|
||||
("event_busy" . "\xe615")
|
||||
("event_note" . "\xe616")
|
||||
("event_seat" . "\xe903")
|
||||
("exit_to_app" . "\xe879")
|
||||
("expand_less" . "\xe5ce")
|
||||
("expand_more" . "\xe5cf")
|
||||
("explicit" . "\xe01e")
|
||||
("explore" . "\xe87a")
|
||||
("exposure" . "\xe3ca")
|
||||
("exposure_neg_1" . "\xe3cb")
|
||||
("exposure_neg_2" . "\xe3cc")
|
||||
("exposure_plus_1" . "\xe3cd")
|
||||
("exposure_plus_2" . "\xe3ce")
|
||||
("exposure_zero" . "\xe3cf")
|
||||
("extension" . "\xe87b")
|
||||
("face" . "\xe87c")
|
||||
("fast_forward" . "\xe01f")
|
||||
("fast_rewind" . "\xe020")
|
||||
("favorite" . "\xe87d")
|
||||
("favorite_border" . "\xe87e")
|
||||
("featured_play_list" . "\xe06d")
|
||||
("featured_video" . "\xe06e")
|
||||
("feedback" . "\xe87f")
|
||||
("fiber_dvr" . "\xe05d")
|
||||
("fiber_manual_record" . "\xe061")
|
||||
("fiber_new" . "\xe05e")
|
||||
("fiber_pin" . "\xe06a")
|
||||
("fiber_smart_record" . "\xe062")
|
||||
("file_download" . "\xe2c4")
|
||||
("file_upload" . "\xe2c6")
|
||||
("filter" . "\xe3d3")
|
||||
("filter_1" . "\xe3d0")
|
||||
("filter_2" . "\xe3d1")
|
||||
("filter_3" . "\xe3d2")
|
||||
("filter_4" . "\xe3d4")
|
||||
("filter_5" . "\xe3d5")
|
||||
("filter_6" . "\xe3d6")
|
||||
("filter_7" . "\xe3d7")
|
||||
("filter_8" . "\xe3d8")
|
||||
("filter_9" . "\xe3d9")
|
||||
("filter_9_plus" . "\xe3da")
|
||||
("filter_b_and_w" . "\xe3db")
|
||||
("filter_center_focus" . "\xe3dc")
|
||||
("filter_drama" . "\xe3dd")
|
||||
("filter_frames" . "\xe3de")
|
||||
("filter_hdr" . "\xe3df")
|
||||
("filter_list" . "\xe152")
|
||||
("filter_none" . "\xe3e0")
|
||||
("filter_tilt_shift" . "\xe3e2")
|
||||
("filter_vintage" . "\xe3e3")
|
||||
("find_in_page" . "\xe880")
|
||||
("find_replace" . "\xe881")
|
||||
("fingerprint" . "\xe90d")
|
||||
("first_page" . "\xe5dc")
|
||||
("fitness_center" . "\xeb43")
|
||||
("flag" . "\xe153")
|
||||
("flare" . "\xe3e4")
|
||||
("flash_auto" . "\xe3e5")
|
||||
("flash_off" . "\xe3e6")
|
||||
("flash_on" . "\xe3e7")
|
||||
("flight" . "\xe539")
|
||||
("flight_land" . "\xe904")
|
||||
("flight_takeoff" . "\xe905")
|
||||
("flip" . "\xe3e8")
|
||||
("flip_to_back" . "\xe882")
|
||||
("flip_to_front" . "\xe883")
|
||||
("folder" . "\xe2c7")
|
||||
("folder_open" . "\xe2c8")
|
||||
("folder_shared" . "\xe2c9")
|
||||
("folder_special" . "\xe617")
|
||||
("font_download" . "\xe167")
|
||||
("format_align_center" . "\xe234")
|
||||
("format_align_justify" . "\xe235")
|
||||
("format_align_left" . "\xe236")
|
||||
("format_align_right" . "\xe237")
|
||||
("format_bold" . "\xe238")
|
||||
("format_clear" . "\xe239")
|
||||
("format_color_fill" . "\xe23a")
|
||||
("format_color_reset" . "\xe23b")
|
||||
("format_color_text" . "\xe23c")
|
||||
("format_indent_decrease" . "\xe23d")
|
||||
("format_indent_increase" . "\xe23e")
|
||||
("format_italic" . "\xe23f")
|
||||
("format_line_spacing" . "\xe240")
|
||||
("format_list_bulleted" . "\xe241")
|
||||
("format_list_numbered" . "\xe242")
|
||||
("format_paint" . "\xe243")
|
||||
("format_quote" . "\xe244")
|
||||
("format_shapes" . "\xe25e")
|
||||
("format_size" . "\xe245")
|
||||
("format_strikethrough" . "\xe246")
|
||||
("format_textdirection_l_to_r" . "\xe247")
|
||||
("format_textdirection_r_to_l" . "\xe248")
|
||||
("format_underlined" . "\xe249")
|
||||
("forum" . "\xe0bf")
|
||||
("forward" . "\xe154")
|
||||
("forward_10" . "\xe056")
|
||||
("forward_30" . "\xe057")
|
||||
("forward_5" . "\xe058")
|
||||
("free_breakfast" . "\xeb44")
|
||||
("fullscreen" . "\xe5d0")
|
||||
("fullscreen_exit" . "\xe5d1")
|
||||
("functions" . "\xe24a")
|
||||
("g_translate" . "\xe927")
|
||||
("gamepad" . "\xe30f")
|
||||
("games" . "\xe021")
|
||||
("gavel" . "\xe90e")
|
||||
("gesture" . "\xe155")
|
||||
("get_app" . "\xe884")
|
||||
("gif" . "\xe908")
|
||||
("golf_course" . "\xeb45")
|
||||
("gps_fixed" . "\xe1b3")
|
||||
("gps_not_fixed" . "\xe1b4")
|
||||
("gps_off" . "\xe1b5")
|
||||
("grade" . "\xe885")
|
||||
("gradient" . "\xe3e9")
|
||||
("grain" . "\xe3ea")
|
||||
("graphic_eq" . "\xe1b8")
|
||||
("grid_off" . "\xe3eb")
|
||||
("grid_on" . "\xe3ec")
|
||||
("group" . "\xe7ef")
|
||||
("group_add" . "\xe7f0")
|
||||
("group_work" . "\xe886")
|
||||
("hd" . "\xe052")
|
||||
("hdr_off" . "\xe3ed")
|
||||
("hdr_on" . "\xe3ee")
|
||||
("hdr_strong" . "\xe3f1")
|
||||
("hdr_weak" . "\xe3f2")
|
||||
("headset" . "\xe310")
|
||||
("headset_mic" . "\xe311")
|
||||
("healing" . "\xe3f3")
|
||||
("hearing" . "\xe023")
|
||||
("help" . "\xe887")
|
||||
("help_outline" . "\xe8fd")
|
||||
("high_quality" . "\xe024")
|
||||
("highlight" . "\xe25f")
|
||||
("highlight_off" . "\xe888")
|
||||
("history" . "\xe889")
|
||||
("home" . "\xe88a")
|
||||
("hot_tub" . "\xeb46")
|
||||
("hotel" . "\xe53a")
|
||||
("hourglass_empty" . "\xe88b")
|
||||
("hourglass_full" . "\xe88c")
|
||||
("http" . "\xe902")
|
||||
("https" . "\xe88d")
|
||||
("image" . "\xe3f4")
|
||||
("image_aspect_ratio" . "\xe3f5")
|
||||
("import_contacts" . "\xe0e0")
|
||||
("import_export" . "\xe0c3")
|
||||
("important_devices" . "\xe912")
|
||||
("inbox" . "\xe156")
|
||||
("indeterminate_check_box" . "\xe909")
|
||||
("info" . "\xe88e")
|
||||
("info_outline" . "\xe88f")
|
||||
("input" . "\xe890")
|
||||
("insert_chart" . "\xe24b")
|
||||
("insert_comment" . "\xe24c")
|
||||
("insert_drive_file" . "\xe24d")
|
||||
("insert_emoticon" . "\xe24e")
|
||||
("insert_invitation" . "\xe24f")
|
||||
("insert_link" . "\xe250")
|
||||
("insert_photo" . "\xe251")
|
||||
("invert_colors" . "\xe891")
|
||||
("invert_colors_off" . "\xe0c4")
|
||||
("iso" . "\xe3f6")
|
||||
("keyboard" . "\xe312")
|
||||
("keyboard_arrow_down" . "\xe313")
|
||||
("keyboard_arrow_left" . "\xe314")
|
||||
("keyboard_arrow_right" . "\xe315")
|
||||
("keyboard_arrow_up" . "\xe316")
|
||||
("keyboard_backspace" . "\xe317")
|
||||
("keyboard_capslock" . "\xe318")
|
||||
("keyboard_hide" . "\xe31a")
|
||||
("keyboard_return" . "\xe31b")
|
||||
("keyboard_tab" . "\xe31c")
|
||||
("keyboard_voice" . "\xe31d")
|
||||
("kitchen" . "\xeb47")
|
||||
("label" . "\xe892")
|
||||
("label_outline" . "\xe893")
|
||||
("landscape" . "\xe3f7")
|
||||
("language" . "\xe894")
|
||||
("laptop" . "\xe31e")
|
||||
("laptop_chromebook" . "\xe31f")
|
||||
("laptop_mac" . "\xe320")
|
||||
("laptop_windows" . "\xe321")
|
||||
("last_page" . "\xe5dd")
|
||||
("launch" . "\xe895")
|
||||
("layers" . "\xe53b")
|
||||
("layers_clear" . "\xe53c")
|
||||
("leak_add" . "\xe3f8")
|
||||
("leak_remove" . "\xe3f9")
|
||||
("lens" . "\xe3fa")
|
||||
("library_add" . "\xe02e")
|
||||
("library_books" . "\xe02f")
|
||||
("library_music" . "\xe030")
|
||||
("lightbulb_outline" . "\xe90f")
|
||||
("line_style" . "\xe919")
|
||||
("line_weight" . "\xe91a")
|
||||
("linear_scale" . "\xe260")
|
||||
("link" . "\xe157")
|
||||
("linked_camera" . "\xe438")
|
||||
("list" . "\xe896")
|
||||
("live_help" . "\xe0c6")
|
||||
("live_tv" . "\xe639")
|
||||
("local_activity" . "\xe53f")
|
||||
("local_airport" . "\xe53d")
|
||||
("local_atm" . "\xe53e")
|
||||
("local_bar" . "\xe540")
|
||||
("local_cafe" . "\xe541")
|
||||
("local_car_wash" . "\xe542")
|
||||
("local_convenience_store" . "\xe543")
|
||||
("local_dining" . "\xe556")
|
||||
("local_drink" . "\xe544")
|
||||
("local_florist" . "\xe545")
|
||||
("local_gas_station" . "\xe546")
|
||||
("local_grocery_store" . "\xe547")
|
||||
("local_hospital" . "\xe548")
|
||||
("local_hotel" . "\xe549")
|
||||
("local_laundry_service" . "\xe54a")
|
||||
("local_library" . "\xe54b")
|
||||
("local_mall" . "\xe54c")
|
||||
("local_movies" . "\xe54d")
|
||||
("local_offer" . "\xe54e")
|
||||
("local_parking" . "\xe54f")
|
||||
("local_pharmacy" . "\xe550")
|
||||
("local_phone" . "\xe551")
|
||||
("local_pizza" . "\xe552")
|
||||
("local_play" . "\xe553")
|
||||
("local_post_office" . "\xe554")
|
||||
("local_printshop" . "\xe555")
|
||||
("local_see" . "\xe557")
|
||||
("local_shipping" . "\xe558")
|
||||
("local_taxi" . "\xe559")
|
||||
("location_city" . "\xe7f1")
|
||||
("location_disabled" . "\xe1b6")
|
||||
("location_off" . "\xe0c7")
|
||||
("location_on" . "\xe0c8")
|
||||
("location_searching" . "\xe1b7")
|
||||
("lock" . "\xe897")
|
||||
("lock_open" . "\xe898")
|
||||
("lock_outline" . "\xe899")
|
||||
("looks" . "\xe3fc")
|
||||
("looks_3" . "\xe3fb")
|
||||
("looks_4" . "\xe3fd")
|
||||
("looks_5" . "\xe3fe")
|
||||
("looks_6" . "\xe3ff")
|
||||
("looks_one" . "\xe400")
|
||||
("looks_two" . "\xe401")
|
||||
("loop" . "\xe028")
|
||||
("loupe" . "\xe402")
|
||||
("low_priority" . "\xe16d")
|
||||
("loyalty" . "\xe89a")
|
||||
("mail" . "\xe158")
|
||||
("mail_outline" . "\xe0e1")
|
||||
("map" . "\xe55b")
|
||||
("markunread" . "\xe159")
|
||||
("markunread_mailbox" . "\xe89b")
|
||||
("memory" . "\xe322")
|
||||
("menu" . "\xe5d2")
|
||||
("merge_type" . "\xe252")
|
||||
("message" . "\xe0c9")
|
||||
("mic" . "\xe029")
|
||||
("mic_none" . "\xe02a")
|
||||
("mic_off" . "\xe02b")
|
||||
("mms" . "\xe618")
|
||||
("mode_comment" . "\xe253")
|
||||
("mode_edit" . "\xe254")
|
||||
("monetization_on" . "\xe263")
|
||||
("money_off" . "\xe25c")
|
||||
("monochrome_photos" . "\xe403")
|
||||
("mood" . "\xe7f2")
|
||||
("mood_bad" . "\xe7f3")
|
||||
("more" . "\xe619")
|
||||
("more_horiz" . "\xe5d3")
|
||||
("more_vert" . "\xe5d4")
|
||||
("motorcycle" . "\xe91b")
|
||||
("mouse" . "\xe323")
|
||||
("move_to_inbox" . "\xe168")
|
||||
("movie" . "\xe02c")
|
||||
("movie_creation" . "\xe404")
|
||||
("movie_filter" . "\xe43a")
|
||||
("multiline_chart" . "\xe6df")
|
||||
("music_note" . "\xe405")
|
||||
("music_video" . "\xe063")
|
||||
("my_location" . "\xe55c")
|
||||
("nature" . "\xe406")
|
||||
("nature_people" . "\xe407")
|
||||
("navigate_before" . "\xe408")
|
||||
("navigate_next" . "\xe409")
|
||||
("navigation" . "\xe55d")
|
||||
("near_me" . "\xe569")
|
||||
("network_cell" . "\xe1b9")
|
||||
("network_check" . "\xe640")
|
||||
("network_locked" . "\xe61a")
|
||||
("network_wifi" . "\xe1ba")
|
||||
("new_releases" . "\xe031")
|
||||
("next_week" . "\xe16a")
|
||||
("nfc" . "\xe1bb")
|
||||
("no_encryption" . "\xe641")
|
||||
("no_sim" . "\xe0cc")
|
||||
("not_interested" . "\xe033")
|
||||
("note" . "\xe06f")
|
||||
("note_add" . "\xe89c")
|
||||
("notifications" . "\xe7f4")
|
||||
("notifications_active" . "\xe7f7")
|
||||
("notifications_none" . "\xe7f5")
|
||||
("notifications_off" . "\xe7f6")
|
||||
("notifications_paused" . "\xe7f8")
|
||||
("offline_pin" . "\xe90a")
|
||||
("ondemand_video" . "\xe63a")
|
||||
("opacity" . "\xe91c")
|
||||
("open_in_browser" . "\xe89d")
|
||||
("open_in_new" . "\xe89e")
|
||||
("open_with" . "\xe89f")
|
||||
("pages" . "\xe7f9")
|
||||
("pageview" . "\xe8a0")
|
||||
("palette" . "\xe40a")
|
||||
("pan_tool" . "\xe925")
|
||||
("panorama" . "\xe40b")
|
||||
("panorama_fish_eye" . "\xe40c")
|
||||
("panorama_horizontal" . "\xe40d")
|
||||
("panorama_vertical" . "\xe40e")
|
||||
("panorama_wide_angle" . "\xe40f")
|
||||
("party_mode" . "\xe7fa")
|
||||
("pause" . "\xe034")
|
||||
("pause_circle_filled" . "\xe035")
|
||||
("pause_circle_outline" . "\xe036")
|
||||
("payment" . "\xe8a1")
|
||||
("people" . "\xe7fb")
|
||||
("people_outline" . "\xe7fc")
|
||||
("perm_camera_mic" . "\xe8a2")
|
||||
("perm_contact_calendar" . "\xe8a3")
|
||||
("perm_data_setting" . "\xe8a4")
|
||||
("perm_device_information" . "\xe8a5")
|
||||
("perm_identity" . "\xe8a6")
|
||||
("perm_media" . "\xe8a7")
|
||||
("perm_phone_msg" . "\xe8a8")
|
||||
("perm_scan_wifi" . "\xe8a9")
|
||||
("person" . "\xe7fd")
|
||||
("person_add" . "\xe7fe")
|
||||
("person_outline" . "\xe7ff")
|
||||
("person_pin" . "\xe55a")
|
||||
("person_pin_circle" . "\xe56a")
|
||||
("personal_video" . "\xe63b")
|
||||
("pets" . "\xe91d")
|
||||
("phone" . "\xe0cd")
|
||||
("phone_android" . "\xe324")
|
||||
("phone_bluetooth_speaker" . "\xe61b")
|
||||
("phone_forwarded" . "\xe61c")
|
||||
("phone_in_talk" . "\xe61d")
|
||||
("phone_iphone" . "\xe325")
|
||||
("phone_locked" . "\xe61e")
|
||||
("phone_missed" . "\xe61f")
|
||||
("phone_paused" . "\xe620")
|
||||
("phonelink" . "\xe326")
|
||||
("phonelink_erase" . "\xe0db")
|
||||
("phonelink_lock" . "\xe0dc")
|
||||
("phonelink_off" . "\xe327")
|
||||
("phonelink_ring" . "\xe0dd")
|
||||
("phonelink_setup" . "\xe0de")
|
||||
("photo" . "\xe410")
|
||||
("photo_album" . "\xe411")
|
||||
("photo_camera" . "\xe412")
|
||||
("photo_filter" . "\xe43b")
|
||||
("photo_library" . "\xe413")
|
||||
("photo_size_select_actual" . "\xe432")
|
||||
("photo_size_select_large" . "\xe433")
|
||||
("photo_size_select_small" . "\xe434")
|
||||
("picture_as_pdf" . "\xe415")
|
||||
("picture_in_picture" . "\xe8aa")
|
||||
("picture_in_picture_alt" . "\xe911")
|
||||
("pie_chart" . "\xe6c4")
|
||||
("pie_chart_outlined" . "\xe6c5")
|
||||
("pin_drop" . "\xe55e")
|
||||
("place" . "\xe55f")
|
||||
("play_arrow" . "\xe037")
|
||||
("play_circle_filled" . "\xe038")
|
||||
("play_circle_outline" . "\xe039")
|
||||
("play_for_work" . "\xe906")
|
||||
("playlist_add" . "\xe03b")
|
||||
("playlist_add_check" . "\xe065")
|
||||
("playlist_play" . "\xe05f")
|
||||
("plus_one" . "\xe800")
|
||||
("poll" . "\xe801")
|
||||
("polymer" . "\xe8ab")
|
||||
("pool" . "\xeb48")
|
||||
("portable_wifi_off" . "\xe0ce")
|
||||
("portrait" . "\xe416")
|
||||
("power" . "\xe63c")
|
||||
("power_input" . "\xe336")
|
||||
("power_settings_new" . "\xe8ac")
|
||||
("pregnant_woman" . "\xe91e")
|
||||
("present_to_all" . "\xe0df")
|
||||
("print" . "\xe8ad")
|
||||
("priority_high" . "\xe645")
|
||||
("public" . "\xe80b")
|
||||
("publish" . "\xe255")
|
||||
("query_builder" . "\xe8ae")
|
||||
("question_answer" . "\xe8af")
|
||||
("queue" . "\xe03c")
|
||||
("queue_music" . "\xe03d")
|
||||
("queue_play_next" . "\xe066")
|
||||
("radio" . "\xe03e")
|
||||
("radio_button_checked" . "\xe837")
|
||||
("radio_button_unchecked" . "\xe836")
|
||||
("rate_review" . "\xe560")
|
||||
("receipt" . "\xe8b0")
|
||||
("recent_actors" . "\xe03f")
|
||||
("record_voice_over" . "\xe91f")
|
||||
("redeem" . "\xe8b1")
|
||||
("redo" . "\xe15a")
|
||||
("refresh" . "\xe5d5")
|
||||
("remove" . "\xe15b")
|
||||
("remove_circle" . "\xe15c")
|
||||
("remove_circle_outline" . "\xe15d")
|
||||
("remove_from_queue" . "\xe067")
|
||||
("remove_red_eye" . "\xe417")
|
||||
("remove_shopping_cart" . "\xe928")
|
||||
("reorder" . "\xe8fe")
|
||||
("repeat" . "\xe040")
|
||||
("repeat_one" . "\xe041")
|
||||
("replay" . "\xe042")
|
||||
("replay_10" . "\xe059")
|
||||
("replay_30" . "\xe05a")
|
||||
("replay_5" . "\xe05b")
|
||||
("reply" . "\xe15e")
|
||||
("reply_all" . "\xe15f")
|
||||
("report" . "\xe160")
|
||||
("report_problem" . "\xe8b2")
|
||||
("restaurant" . "\xe56c")
|
||||
("restaurant_menu" . "\xe561")
|
||||
("restore" . "\xe8b3")
|
||||
("restore_page" . "\xe929")
|
||||
("ring_volume" . "\xe0d1")
|
||||
("room" . "\xe8b4")
|
||||
("room_service" . "\xeb49")
|
||||
("rotate_90_degrees_ccw" . "\xe418")
|
||||
("rotate_left" . "\xe419")
|
||||
("rotate_right" . "\xe41a")
|
||||
("rounded_corner" . "\xe920")
|
||||
("router" . "\xe328")
|
||||
("rowing" . "\xe921")
|
||||
("rss_feed" . "\xe0e5")
|
||||
("rv_hookup" . "\xe642")
|
||||
("satellite" . "\xe562")
|
||||
("save" . "\xe161")
|
||||
("scanner" . "\xe329")
|
||||
("schedule" . "\xe8b5")
|
||||
("school" . "\xe80c")
|
||||
("screen_lock_landscape" . "\xe1be")
|
||||
("screen_lock_portrait" . "\xe1bf")
|
||||
("screen_lock_rotation" . "\xe1c0")
|
||||
("screen_rotation" . "\xe1c1")
|
||||
("screen_share" . "\xe0e2")
|
||||
("sd_card" . "\xe623")
|
||||
("sd_storage" . "\xe1c2")
|
||||
("search" . "\xe8b6")
|
||||
("security" . "\xe32a")
|
||||
("select_all" . "\xe162")
|
||||
("send" . "\xe163")
|
||||
("sentiment_dissatisfied" . "\xe811")
|
||||
("sentiment_neutral" . "\xe812")
|
||||
("sentiment_satisfied" . "\xe813")
|
||||
("sentiment_very_dissatisfied" . "\xe814")
|
||||
("sentiment_very_satisfied" . "\xe815")
|
||||
("settings" . "\xe8b8")
|
||||
("settings_applications" . "\xe8b9")
|
||||
("settings_backup_restore" . "\xe8ba")
|
||||
("settings_bluetooth" . "\xe8bb")
|
||||
("settings_brightness" . "\xe8bd")
|
||||
("settings_cell" . "\xe8bc")
|
||||
("settings_ethernet" . "\xe8be")
|
||||
("settings_input_antenna" . "\xe8bf")
|
||||
("settings_input_component" . "\xe8c0")
|
||||
("settings_input_composite" . "\xe8c1")
|
||||
("settings_input_hdmi" . "\xe8c2")
|
||||
("settings_input_svideo" . "\xe8c3")
|
||||
("settings_overscan" . "\xe8c4")
|
||||
("settings_phone" . "\xe8c5")
|
||||
("settings_power" . "\xe8c6")
|
||||
("settings_remote" . "\xe8c7")
|
||||
("settings_system_daydream" . "\xe1c3")
|
||||
("settings_voice" . "\xe8c8")
|
||||
("share" . "\xe80d")
|
||||
("shop" . "\xe8c9")
|
||||
("shop_two" . "\xe8ca")
|
||||
("shopping_basket" . "\xe8cb")
|
||||
("shopping_cart" . "\xe8cc")
|
||||
("short_text" . "\xe261")
|
||||
("show_chart" . "\xe6e1")
|
||||
("shuffle" . "\xe043")
|
||||
("signal_cellular_4_bar" . "\xe1c8")
|
||||
("signal_cellular_connected_no_internet_4_bar" . "\xe1cd")
|
||||
("signal_cellular_no_sim" . "\xe1ce")
|
||||
("signal_cellular_null" . "\xe1cf")
|
||||
("signal_cellular_off" . "\xe1d0")
|
||||
("signal_wifi_4_bar" . "\xe1d8")
|
||||
("signal_wifi_4_bar_lock" . "\xe1d9")
|
||||
("signal_wifi_off" . "\xe1da")
|
||||
("sim_card" . "\xe32b")
|
||||
("sim_card_alert" . "\xe624")
|
||||
("skip_next" . "\xe044")
|
||||
("skip_previous" . "\xe045")
|
||||
("slideshow" . "\xe41b")
|
||||
("slow_motion_video" . "\xe068")
|
||||
("smartphone" . "\xe32c")
|
||||
("smoke_free" . "\xeb4a")
|
||||
("smoking_rooms" . "\xeb4b")
|
||||
("sms" . "\xe625")
|
||||
("sms_failed" . "\xe626")
|
||||
("snooze" . "\xe046")
|
||||
("sort" . "\xe164")
|
||||
("sort_by_alpha" . "\xe053")
|
||||
("spa" . "\xeb4c")
|
||||
("space_bar" . "\xe256")
|
||||
("speaker" . "\xe32d")
|
||||
("speaker_group" . "\xe32e")
|
||||
("speaker_notes" . "\xe8cd")
|
||||
("speaker_notes_off" . "\xe92a")
|
||||
("speaker_phone" . "\xe0d2")
|
||||
("spellcheck" . "\xe8ce")
|
||||
("star" . "\xe838")
|
||||
("star_border" . "\xe83a")
|
||||
("star_half" . "\xe839")
|
||||
("stars" . "\xe8d0")
|
||||
("stay_current_landscape" . "\xe0d3")
|
||||
("stay_current_portrait" . "\xe0d4")
|
||||
("stay_primary_landscape" . "\xe0d5")
|
||||
("stay_primary_portrait" . "\xe0d6")
|
||||
("stop" . "\xe047")
|
||||
("stop_screen_share" . "\xe0e3")
|
||||
("storage" . "\xe1db")
|
||||
("store" . "\xe8d1")
|
||||
("store_mall_directory" . "\xe563")
|
||||
("straighten" . "\xe41c")
|
||||
("streetview" . "\xe56e")
|
||||
("strikethrough_s" . "\xe257")
|
||||
("style" . "\xe41d")
|
||||
("subdirectory_arrow_left" . "\xe5d9")
|
||||
("subdirectory_arrow_right" . "\xe5da")
|
||||
("subject" . "\xe8d2")
|
||||
("subscriptions" . "\xe064")
|
||||
("subtitles" . "\xe048")
|
||||
("subway" . "\xe56f")
|
||||
("supervisor_account" . "\xe8d3")
|
||||
("surround_sound" . "\xe049")
|
||||
("swap_calls" . "\xe0d7")
|
||||
("swap_horiz" . "\xe8d4")
|
||||
("swap_vert" . "\xe8d5")
|
||||
("swap_vertical_circle" . "\xe8d6")
|
||||
("switch_camera" . "\xe41e")
|
||||
("switch_video" . "\xe41f")
|
||||
("sync" . "\xe627")
|
||||
("sync_disabled" . "\xe628")
|
||||
("sync_problem" . "\xe629")
|
||||
("system_update" . "\xe62a")
|
||||
("system_update_alt" . "\xe8d7")
|
||||
("tab" . "\xe8d8")
|
||||
("tab_unselected" . "\xe8d9")
|
||||
("tablet" . "\xe32f")
|
||||
("tablet_android" . "\xe330")
|
||||
("tablet_mac" . "\xe331")
|
||||
("tag_faces" . "\xe420")
|
||||
("tap_and_play" . "\xe62b")
|
||||
("terrain" . "\xe564")
|
||||
("text_fields" . "\xe262")
|
||||
("text_format" . "\xe165")
|
||||
("textsms" . "\xe0d8")
|
||||
("texture" . "\xe421")
|
||||
("theaters" . "\xe8da")
|
||||
("thumb_down" . "\xe8db")
|
||||
("thumb_up" . "\xe8dc")
|
||||
("thumbs_up_down" . "\xe8dd")
|
||||
("time_to_leave" . "\xe62c")
|
||||
("timelapse" . "\xe422")
|
||||
("timeline" . "\xe922")
|
||||
("timer" . "\xe425")
|
||||
("timer_10" . "\xe423")
|
||||
("timer_3" . "\xe424")
|
||||
("timer_off" . "\xe426")
|
||||
("title" . "\xe264")
|
||||
("toc" . "\xe8de")
|
||||
("today" . "\xe8df")
|
||||
("toll" . "\xe8e0")
|
||||
("tonality" . "\xe427")
|
||||
("touch_app" . "\xe913")
|
||||
("toys" . "\xe332")
|
||||
("track_changes" . "\xe8e1")
|
||||
("traffic" . "\xe565")
|
||||
("train" . "\xe570")
|
||||
("tram" . "\xe571")
|
||||
("transfer_within_a_station" . "\xe572")
|
||||
("transform" . "\xe428")
|
||||
("translate" . "\xe8e2")
|
||||
("trending_down" . "\xe8e3")
|
||||
("trending_flat" . "\xe8e4")
|
||||
("trending_up" . "\xe8e5")
|
||||
("tune" . "\xe429")
|
||||
("turned_in" . "\xe8e6")
|
||||
("turned_in_not" . "\xe8e7")
|
||||
("tv" . "\xe333")
|
||||
("unarchive" . "\xe169")
|
||||
("undo" . "\xe166")
|
||||
("unfold_less" . "\xe5d6")
|
||||
("unfold_more" . "\xe5d7")
|
||||
("update" . "\xe923")
|
||||
("usb" . "\xe1e0")
|
||||
("verified_user" . "\xe8e8")
|
||||
("vertical_align_bottom" . "\xe258")
|
||||
("vertical_align_center" . "\xe259")
|
||||
("vertical_align_top" . "\xe25a")
|
||||
("vibration" . "\xe62d")
|
||||
("video_call" . "\xe070")
|
||||
("video_label" . "\xe071")
|
||||
("video_library" . "\xe04a")
|
||||
("videocam" . "\xe04b")
|
||||
("videocam_off" . "\xe04c")
|
||||
("videogame_asset" . "\xe338")
|
||||
("view_agenda" . "\xe8e9")
|
||||
("view_array" . "\xe8ea")
|
||||
("view_carousel" . "\xe8eb")
|
||||
("view_column" . "\xe8ec")
|
||||
("view_comfy" . "\xe42a")
|
||||
("view_compact" . "\xe42b")
|
||||
("view_day" . "\xe8ed")
|
||||
("view_headline" . "\xe8ee")
|
||||
("view_list" . "\xe8ef")
|
||||
("view_module" . "\xe8f0")
|
||||
("view_quilt" . "\xe8f1")
|
||||
("view_stream" . "\xe8f2")
|
||||
("view_week" . "\xe8f3")
|
||||
("vignette" . "\xe435")
|
||||
("visibility" . "\xe8f4")
|
||||
("visibility_off" . "\xe8f5")
|
||||
("voice_chat" . "\xe62e")
|
||||
("voicemail" . "\xe0d9")
|
||||
("volume_down" . "\xe04d")
|
||||
("volume_mute" . "\xe04e")
|
||||
("volume_off" . "\xe04f")
|
||||
("volume_up" . "\xe050")
|
||||
("vpn_key" . "\xe0da")
|
||||
("vpn_lock" . "\xe62f")
|
||||
("wallpaper" . "\xe1bc")
|
||||
("warning" . "\xe002")
|
||||
("watch" . "\xe334")
|
||||
("watch_later" . "\xe924")
|
||||
("wb_auto" . "\xe42c")
|
||||
("wb_cloudy" . "\xe42d")
|
||||
("wb_incandescent" . "\xe42e")
|
||||
("wb_iridescent" . "\xe436")
|
||||
("wb_sunny" . "\xe430")
|
||||
("wc" . "\xe63d")
|
||||
("web" . "\xe051")
|
||||
("web_asset" . "\xe069")
|
||||
("weekend" . "\xe16b")
|
||||
("whatshot" . "\xe80e")
|
||||
("widgets" . "\xe1bd")
|
||||
("wifi" . "\xe63e")
|
||||
("wifi_lock" . "\xe1e1")
|
||||
("wifi_tethering" . "\xe1e2")
|
||||
("work" . "\xe8f9")
|
||||
("wrap_text" . "\xe25b")
|
||||
("youtube_searched_for" . "\xe8fa")
|
||||
("zoom_in" . "\xe8ff")
|
||||
("zoom_out" . "\xe900")
|
||||
("zoom_out_map" . "\xe56b")))
|
||||
|
||||
(provide 'data-material)
|
BIN
code/elpa/all-the-icons-20220325.1238/data/data-material.elc
Normal file
BIN
code/elpa/all-the-icons-20220325.1238/data/data-material.elc
Normal file
Binary file not shown.
165
code/elpa/all-the-icons-20220325.1238/data/data-octicons.el
Normal file
165
code/elpa/all-the-icons-20220325.1238/data/data-octicons.el
Normal file
|
@ -0,0 +1,165 @@
|
|||
(defvar all-the-icons-data/octicons-alist
|
||||
'(
|
||||
|
||||
("alert" . "\xf02d")
|
||||
("arrow-down" . "\xf03f")
|
||||
("arrow-left" . "\xf040")
|
||||
("arrow-right" . "\xf03e")
|
||||
("arrow-small-down" . "\xf0a0")
|
||||
("arrow-small-left" . "\xf0a1")
|
||||
("arrow-small-right" . "\xf071")
|
||||
("arrow-small-up" . "\xf09f")
|
||||
("arrow-up" . "\xf03d")
|
||||
("book" . "\xf007")
|
||||
("bookmark" . "\xf07b")
|
||||
("briefcase" . "\xf0d3")
|
||||
("broadcast" . "\xf048")
|
||||
("browser" . "\xf0c5")
|
||||
("bug" . "\xf091")
|
||||
("calendar" . "\xf068")
|
||||
("check" . "\xf03a")
|
||||
("checklist" . "\xf076")
|
||||
("chevron-down" . "\xf0a3")
|
||||
("chevron-left" . "\xf0a4")
|
||||
("chevron-right" . "\xf078")
|
||||
("chevron-up" . "\xf0a2")
|
||||
("circle-slash" . "\xf084")
|
||||
("circuit-board" . "\xf0d6")
|
||||
("clippy" . "\xf035")
|
||||
("clock" . "\xf046")
|
||||
("cloud-download" . "\xf00b")
|
||||
("cloud-upload" . "\xf00c")
|
||||
("code" . "\xf05f")
|
||||
("comment" . "\xf02b")
|
||||
("comment-discussion" . "\xf04f")
|
||||
("credit-card" . "\xf045")
|
||||
("dash" . "\xf0ca")
|
||||
("dashboard" . "\xf07d")
|
||||
("database" . "\xf096")
|
||||
("device-camera" . "\xf056")
|
||||
("device-camera-video" . "\xf057")
|
||||
("device-desktop" . "\xf27c")
|
||||
("device-mobile" . "\xf038")
|
||||
("diff" . "\xf04d")
|
||||
("diff-added" . "\xf06b")
|
||||
("diff-ignored" . "\xf099")
|
||||
("diff-modified" . "\xf06d")
|
||||
("diff-removed" . "\xf06c")
|
||||
("diff-renamed" . "\xf06e")
|
||||
("ellipsis" . "\xf09a")
|
||||
("eye" . "\xf04e")
|
||||
("file-binary" . "\xf094")
|
||||
("file-code" . "\xf010")
|
||||
("file-directory" . "\xf016")
|
||||
("file-media" . "\xf012")
|
||||
("file-pdf" . "\xf014")
|
||||
("file-submodule" . "\xf017")
|
||||
("file-symlink-directory" . "\xf0b1")
|
||||
("file-symlink-file" . "\xf0b0")
|
||||
("file-text" . "\xf011")
|
||||
("file-zip" . "\xf013")
|
||||
("flame" . "\xf0d2")
|
||||
("fold" . "\xf0cc")
|
||||
("gear" . "\xf02f")
|
||||
("gift" . "\xf042")
|
||||
("gist" . "\xf00e")
|
||||
("gist-secret" . "\xf08c")
|
||||
("git-branch" . "\xf020")
|
||||
("git-commit" . "\xf01f")
|
||||
("git-compare" . "\xf0ac")
|
||||
("git-merge" . "\xf023")
|
||||
("git-pull-request" . "\xf009")
|
||||
("globe" . "\xf0b6")
|
||||
("graph" . "\xf043")
|
||||
("beaker" . "\xf0dd")
|
||||
("heart" . "\x2665")
|
||||
("history" . "\xf07e")
|
||||
("home" . "\xf08d")
|
||||
("horizontal-rule" . "\xf070")
|
||||
("hourglass" . "\xf09e")
|
||||
("hubot" . "\xf09d")
|
||||
("inbox" . "\xf0cf")
|
||||
("info" . "\xf059")
|
||||
("issue-closed" . "\xf028")
|
||||
("issue-opened" . "\xf026")
|
||||
("issue-reopened" . "\xf027")
|
||||
("jersey" . "\xf019")
|
||||
("key" . "\xf049")
|
||||
("keyboard" . "\xf00d")
|
||||
("law" . "\xf0d8")
|
||||
("light-bulb" . "\xf000")
|
||||
("link" . "\xf05c")
|
||||
("link-external" . "\xf07f")
|
||||
("list-ordered" . "\xf062")
|
||||
("list-unordered" . "\xf061")
|
||||
("location" . "\xf060")
|
||||
("lock" . "\xf06a")
|
||||
("logo-github" . "\xf092")
|
||||
("mail" . "\xf03b")
|
||||
("mail-read" . "\xf03c")
|
||||
("mail-reply" . "\xf051")
|
||||
("mark-github" . "\xf00a")
|
||||
("markdown" . "\xf0c9")
|
||||
("megaphone" . "\xf077")
|
||||
("mention" . "\xf0be")
|
||||
("milestone" . "\xf075")
|
||||
("mirror" . "\xf024")
|
||||
("mortar-board" . "\xf0d7")
|
||||
("mute" . "\xf080")
|
||||
("no-newline" . "\xf09c")
|
||||
("octoface" . "\xf008")
|
||||
("organization" . "\xf037")
|
||||
("package" . "\xf0c4")
|
||||
("paintcan" . "\xf0d1")
|
||||
("pencil" . "\xf058")
|
||||
("person" . "\xf018")
|
||||
("pin" . "\xf041")
|
||||
("plug" . "\xf0d4")
|
||||
("plus" . "\xf05d")
|
||||
("primitive-dot" . "\xf052")
|
||||
("primitive-square" . "\xf053")
|
||||
("pulse" . "\xf085")
|
||||
("puzzle" . "\xf0c0")
|
||||
("question" . "\xf02c")
|
||||
("quote" . "\xf063")
|
||||
("radio-tower" . "\xf030")
|
||||
("repo" . "\xf001")
|
||||
("repo-clone" . "\xf04c")
|
||||
("repo-force-push" . "\xf04a")
|
||||
("repo-forked" . "\xf002")
|
||||
("repo-pull" . "\xf006")
|
||||
("repo-push" . "\xf005")
|
||||
("rocket" . "\xf033")
|
||||
("rss" . "\xf034")
|
||||
("ruby" . "\xf047")
|
||||
("search" . "\xf02e")
|
||||
("server" . "\xf097")
|
||||
("settings" . "\xf07c")
|
||||
("sign-in" . "\xf036")
|
||||
("sign-out" . "\xf032")
|
||||
("squirrel" . "\xf0b2")
|
||||
("star" . "\xf02a")
|
||||
("steps" . "\xf0c7")
|
||||
("stop" . "\xf08f")
|
||||
("sync" . "\xf087")
|
||||
("tag" . "\xf015")
|
||||
("telescope" . "\xf088")
|
||||
("terminal" . "\xf0c8")
|
||||
("three-bars" . "\xf05e")
|
||||
("thumbsdown" . "\xf0db")
|
||||
("thumbsup" . "\xf0da")
|
||||
("tools" . "\xf031")
|
||||
("trashcan" . "\xf0d0")
|
||||
("triangle-down" . "\xf05b")
|
||||
("triangle-left" . "\xf044")
|
||||
("triangle-right" . "\xf05a")
|
||||
("triangle-up" . "\xf0aa")
|
||||
("unfold" . "\xf039")
|
||||
("unmute" . "\xf0ba")
|
||||
("versions" . "\xf064")
|
||||
("x" . "\xf081")
|
||||
("zap" . "\x26A1")
|
||||
|
||||
))
|
||||
|
||||
(provide 'data-octicons)
|
BIN
code/elpa/all-the-icons-20220325.1238/data/data-octicons.elc
Normal file
BIN
code/elpa/all-the-icons-20220325.1238/data/data-octicons.elc
Normal file
Binary file not shown.
594
code/elpa/all-the-icons-20220325.1238/data/data-weathericons.el
Normal file
594
code/elpa/all-the-icons-20220325.1238/data/data-weathericons.el
Normal file
|
@ -0,0 +1,594 @@
|
|||
(defvar all-the-icons-data/weather-icons-alist
|
||||
'(
|
||||
|
||||
("alien" . "\xf075")
|
||||
("barometer" . "\xf079")
|
||||
("celsius" . "\xf03c")
|
||||
("cloud" . "\xf041")
|
||||
("cloud-down" . "\xf03d")
|
||||
("cloud-refresh" . "\xf03e")
|
||||
("cloud-up" . "\xf040")
|
||||
("cloudy" . "\xf013")
|
||||
("cloudy-gusts" . "\xf011")
|
||||
("cloudy-windy" . "\xf012")
|
||||
("day-cloudy" . "\xf002")
|
||||
("day-cloudy-gusts" . "\xf000")
|
||||
("day-cloudy-high" . "\xf07d")
|
||||
("day-cloudy-windy" . "\xf001")
|
||||
("day-fog" . "\xf003")
|
||||
("day-hail" . "\xf004")
|
||||
("day-haze" . "\xf0b6")
|
||||
("day-light-wind" . "\xf0c4")
|
||||
("day-lightning" . "\xf005")
|
||||
("day-rain" . "\xf008")
|
||||
("day-rain-mix" . "\xf006")
|
||||
("day-rain-wind" . "\xf007")
|
||||
("day-showers" . "\xf009")
|
||||
("day-sleet" . "\xf0b2")
|
||||
("day-sleet-storm" . "\xf068")
|
||||
("day-snow" . "\xf00a")
|
||||
("day-snow-thunderstorm" . "\xf06b")
|
||||
("day-snow-wind" . "\xf065")
|
||||
("day-sprinkle" . "\xf00b")
|
||||
("day-storm-showers" . "\xf00e")
|
||||
("day-sunny" . "\xf00d")
|
||||
("day-sunny-overcast" . "\xf00c")
|
||||
("day-thunderstorm" . "\xf010")
|
||||
("day-windy" . "\xf085")
|
||||
("degrees" . "\xf042")
|
||||
("direction-down" . "\xf044")
|
||||
("direction-down-left" . "\xf043")
|
||||
("direction-down-right" . "\xf088")
|
||||
("direction-left" . "\xf048")
|
||||
("direction-right" . "\xf04d")
|
||||
("direction-up" . "\xf058")
|
||||
("direction-up-left" . "\xf087")
|
||||
("direction-up-right" . "\xf057")
|
||||
("dust" . "\xf063")
|
||||
("earthquake" . "\xf0c6")
|
||||
("fahrenheit" . "\xf045")
|
||||
("fire" . "\xf0c7")
|
||||
("flood" . "\xf07c")
|
||||
("fog" . "\xf014")
|
||||
("forecast-io-clear-day" . "\xf00d")
|
||||
("forecast-io-clear-night" . "\xf02e")
|
||||
("forecast-io-cloudy" . "\xf013")
|
||||
("forecast-io-fog" . "\xf014")
|
||||
("forecast-io-hail" . "\xf015")
|
||||
("forecast-io-partly-cloudy-day" . "\xf002")
|
||||
("forecast-io-partly-cloudy-night" . "\xf031")
|
||||
("forecast-io-rain" . "\xf019")
|
||||
("forecast-io-sleet" . "\xf0b5")
|
||||
("forecast-io-snow" . "\xf01b")
|
||||
("forecast-io-thunderstorm" . "\xf01e")
|
||||
("forecast-io-tornado" . "\xf056")
|
||||
("forecast-io-wind" . "\xf050")
|
||||
("gale-warning" . "\xf0cd")
|
||||
("hail" . "\xf015")
|
||||
("horizon" . "\xf047")
|
||||
("horizon-alt" . "\xf046")
|
||||
("hot" . "\xf072")
|
||||
("humidity" . "\xf07a")
|
||||
("hurricane" . "\xf073")
|
||||
("hurricane-warning" . "\xf0cf")
|
||||
("lightning" . "\xf016")
|
||||
("lunar-eclipse" . "\xf070")
|
||||
("meteor" . "\xf071")
|
||||
("moon-0" . "\xf095")
|
||||
("moon-1" . "\xf096")
|
||||
("moon-10" . "\xf09f")
|
||||
("moon-11" . "\xf0a0")
|
||||
("moon-12" . "\xf0a1")
|
||||
("moon-13" . "\xf0a2")
|
||||
("moon-14" . "\xf0a3")
|
||||
("moon-15" . "\xf0a4")
|
||||
("moon-16" . "\xf0a5")
|
||||
("moon-17" . "\xf0a6")
|
||||
("moon-18" . "\xf0a7")
|
||||
("moon-19" . "\xf0a8")
|
||||
("moon-2" . "\xf097")
|
||||
("moon-20" . "\xf0a9")
|
||||
("moon-21" . "\xf0aa")
|
||||
("moon-22" . "\xf0ab")
|
||||
("moon-23" . "\xf0ac")
|
||||
("moon-24" . "\xf0ad")
|
||||
("moon-25" . "\xf0ae")
|
||||
("moon-26" . "\xf0af")
|
||||
("moon-27" . "\xf0b0")
|
||||
("moon-3" . "\xf098")
|
||||
("moon-4" . "\xf099")
|
||||
("moon-5" . "\xf09a")
|
||||
("moon-6" . "\xf09b")
|
||||
("moon-7" . "\xf09c")
|
||||
("moon-8" . "\xf09d")
|
||||
("moon-9" . "\xf09e")
|
||||
("moon-alt-first-quarter" . "\xf0d6")
|
||||
("moon-alt-full" . "\xf0dd")
|
||||
("moon-alt-new" . "\xf0eb")
|
||||
("moon-alt-third-quarter" . "\xf0e4")
|
||||
("moon-alt-waning-crescent-1" . "\xf0e5")
|
||||
("moon-alt-waning-crescent-2" . "\xf0e6")
|
||||
("moon-alt-waning-crescent-3" . "\xf0e7")
|
||||
("moon-alt-waning-crescent-4" . "\xf0e8")
|
||||
("moon-alt-waning-crescent-5" . "\xf0e9")
|
||||
("moon-alt-waning-crescent-6" . "\xf0ea")
|
||||
("moon-alt-waning-gibbous-1" . "\xf0de")
|
||||
("moon-alt-waning-gibbous-2" . "\xf0df")
|
||||
("moon-alt-waning-gibbous-3" . "\xf0e0")
|
||||
("moon-alt-waning-gibbous-4" . "\xf0e1")
|
||||
("moon-alt-waning-gibbous-5" . "\xf0e2")
|
||||
("moon-alt-waning-gibbous-6" . "\xf0e3")
|
||||
("moon-alt-waxing-crescent-1" . "\xf0d0")
|
||||
("moon-alt-waxing-crescent-2" . "\xf0d1")
|
||||
("moon-alt-waxing-crescent-3" . "\xf0d2")
|
||||
("moon-alt-waxing-crescent-4" . "\xf0d3")
|
||||
("moon-alt-waxing-crescent-5" . "\xf0d4")
|
||||
("moon-alt-waxing-crescent-6" . "\xf0d5")
|
||||
("moon-alt-waxing-gibbous-1" . "\xf0d7")
|
||||
("moon-alt-waxing-gibbous-2" . "\xf0d8")
|
||||
("moon-alt-waxing-gibbous-3" . "\xf0d9")
|
||||
("moon-alt-waxing-gibbous-4" . "\xf0da")
|
||||
("moon-alt-waxing-gibbous-5" . "\xf0db")
|
||||
("moon-alt-waxing-gibbous-6" . "\xf0dc")
|
||||
("moon-first-quarter" . "\xf09c")
|
||||
("moon-full" . "\xf0a3")
|
||||
("moon-new" . "\xf095")
|
||||
("moon-third-quarter" . "\xf0aa")
|
||||
("moon-waning-crescent-1" . "\xf0ab")
|
||||
("moon-waning-crescent-2" . "\xf0ac")
|
||||
("moon-waning-crescent-3" . "\xf0ad")
|
||||
("moon-waning-crescent-4" . "\xf0ae")
|
||||
("moon-waning-crescent-5" . "\xf0af")
|
||||
("moon-waning-crescent-6" . "\xf0b0")
|
||||
("moon-waning-gibbous-1" . "\xf0a4")
|
||||
("moon-waning-gibbous-2" . "\xf0a5")
|
||||
("moon-waning-gibbous-3" . "\xf0a6")
|
||||
("moon-waning-gibbous-4" . "\xf0a7")
|
||||
("moon-waning-gibbous-5" . "\xf0a8")
|
||||
("moon-waning-gibbous-6" . "\xf0a9")
|
||||
("moon-waxing-crescent-1" . "\xf096")
|
||||
("moon-waxing-crescent-2" . "\xf097")
|
||||
("moon-waxing-crescent-3" . "\xf098")
|
||||
("moon-waxing-crescent-4" . "\xf099")
|
||||
("moon-waxing-crescent-5" . "\xf09a")
|
||||
("moon-waxing-crescent-6" . "\xf09b")
|
||||
("moon-waxing-gibbous-1" . "\xf09d")
|
||||
("moon-waxing-gibbous-2" . "\xf09e")
|
||||
("moon-waxing-gibbous-3" . "\xf09f")
|
||||
("moon-waxing-gibbous-4" . "\xf0a0")
|
||||
("moon-waxing-gibbous-5" . "\xf0a1")
|
||||
("moon-waxing-gibbous-6" . "\xf0a2")
|
||||
("moonrise" . "\xf0c9")
|
||||
("moonset" . "\xf0ca")
|
||||
("na" . "\xf07b")
|
||||
("night-alt-cloudy" . "\xf086")
|
||||
("night-alt-cloudy-gusts" . "\xf022")
|
||||
("night-alt-cloudy-high" . "\xf07e")
|
||||
("night-alt-cloudy-windy" . "\xf023")
|
||||
("night-alt-hail" . "\xf024")
|
||||
("night-alt-lightning" . "\xf025")
|
||||
("night-alt-partly-cloudy" . "\xf081")
|
||||
("night-alt-rain" . "\xf028")
|
||||
("night-alt-rain-mix" . "\xf026")
|
||||
("night-alt-rain-wind" . "\xf027")
|
||||
("night-alt-showers" . "\xf029")
|
||||
("night-alt-sleet" . "\xf0b4")
|
||||
("night-alt-sleet-storm" . "\xf06a")
|
||||
("night-alt-snow" . "\xf02a")
|
||||
("night-alt-snow-thunderstorm" . "\xf06d")
|
||||
("night-alt-snow-wind" . "\xf067")
|
||||
("night-alt-sprinkle" . "\xf02b")
|
||||
("night-alt-storm-showers" . "\xf02c")
|
||||
("night-alt-thunderstorm" . "\xf02d")
|
||||
("night-clear" . "\xf02e")
|
||||
("night-cloudy" . "\xf031")
|
||||
("night-cloudy-gusts" . "\xf02f")
|
||||
("night-cloudy-high" . "\xf080")
|
||||
("night-cloudy-windy" . "\xf030")
|
||||
("night-fog" . "\xf04a")
|
||||
("night-hail" . "\xf032")
|
||||
("night-lightning" . "\xf033")
|
||||
("night-partly-cloudy" . "\xf083")
|
||||
("night-rain" . "\xf036")
|
||||
("night-rain-mix" . "\xf034")
|
||||
("night-rain-wind" . "\xf035")
|
||||
("night-showers" . "\xf037")
|
||||
("night-sleet" . "\xf0b3")
|
||||
("night-sleet-storm" . "\xf069")
|
||||
("night-snow" . "\xf038")
|
||||
("night-snow-thunderstorm" . "\xf06c")
|
||||
("night-snow-wind" . "\xf066")
|
||||
("night-sprinkle" . "\xf039")
|
||||
("night-storm-showers" . "\xf03a")
|
||||
("night-thunderstorm" . "\xf03b")
|
||||
("owm-200" . "\xf01e")
|
||||
("owm-201" . "\xf01e")
|
||||
("owm-202" . "\xf01e")
|
||||
("owm-210" . "\xf016")
|
||||
("owm-211" . "\xf016")
|
||||
("owm-212" . "\xf016")
|
||||
("owm-221" . "\xf016")
|
||||
("owm-230" . "\xf01e")
|
||||
("owm-231" . "\xf01e")
|
||||
("owm-232" . "\xf01e")
|
||||
("owm-300" . "\xf01c")
|
||||
("owm-301" . "\xf01c")
|
||||
("owm-302" . "\xf019")
|
||||
("owm-310" . "\xf017")
|
||||
("owm-311" . "\xf019")
|
||||
("owm-312" . "\xf019")
|
||||
("owm-313" . "\xf01a")
|
||||
("owm-314" . "\xf019")
|
||||
("owm-321" . "\xf01c")
|
||||
("owm-500" . "\xf01c")
|
||||
("owm-501" . "\xf019")
|
||||
("owm-502" . "\xf019")
|
||||
("owm-503" . "\xf019")
|
||||
("owm-504" . "\xf019")
|
||||
("owm-511" . "\xf017")
|
||||
("owm-520" . "\xf01a")
|
||||
("owm-521" . "\xf01a")
|
||||
("owm-522" . "\xf01a")
|
||||
("owm-531" . "\xf01d")
|
||||
("owm-600" . "\xf01b")
|
||||
("owm-601" . "\xf01b")
|
||||
("owm-602" . "\xf0b5")
|
||||
("owm-611" . "\xf017")
|
||||
("owm-612" . "\xf017")
|
||||
("owm-615" . "\xf017")
|
||||
("owm-616" . "\xf017")
|
||||
("owm-620" . "\xf017")
|
||||
("owm-621" . "\xf01b")
|
||||
("owm-622" . "\xf01b")
|
||||
("owm-701" . "\xf01a")
|
||||
("owm-711" . "\xf062")
|
||||
("owm-721" . "\xf0b6")
|
||||
("owm-731" . "\xf063")
|
||||
("owm-741" . "\xf014")
|
||||
("owm-761" . "\xf063")
|
||||
("owm-762" . "\xf063")
|
||||
("owm-771" . "\xf011")
|
||||
("owm-781" . "\xf056")
|
||||
("owm-800" . "\xf00d")
|
||||
("owm-801" . "\xf011")
|
||||
("owm-802" . "\xf011")
|
||||
("owm-803" . "\xf012")
|
||||
("owm-804" . "\xf013")
|
||||
("owm-900" . "\xf056")
|
||||
("owm-901" . "\xf01d")
|
||||
("owm-902" . "\xf073")
|
||||
("owm-903" . "\xf076")
|
||||
("owm-904" . "\xf072")
|
||||
("owm-905" . "\xf021")
|
||||
("owm-906" . "\xf015")
|
||||
("owm-957" . "\xf050")
|
||||
("owm-day-200" . "\xf010")
|
||||
("owm-day-201" . "\xf010")
|
||||
("owm-day-202" . "\xf010")
|
||||
("owm-day-210" . "\xf005")
|
||||
("owm-day-211" . "\xf005")
|
||||
("owm-day-212" . "\xf005")
|
||||
("owm-day-221" . "\xf005")
|
||||
("owm-day-230" . "\xf010")
|
||||
("owm-day-231" . "\xf010")
|
||||
("owm-day-232" . "\xf010")
|
||||
("owm-day-300" . "\xf00b")
|
||||
("owm-day-301" . "\xf00b")
|
||||
("owm-day-302" . "\xf008")
|
||||
("owm-day-310" . "\xf008")
|
||||
("owm-day-311" . "\xf008")
|
||||
("owm-day-312" . "\xf008")
|
||||
("owm-day-313" . "\xf008")
|
||||
("owm-day-314" . "\xf008")
|
||||
("owm-day-321" . "\xf00b")
|
||||
("owm-day-500" . "\xf00b")
|
||||
("owm-day-501" . "\xf008")
|
||||
("owm-day-502" . "\xf008")
|
||||
("owm-day-503" . "\xf008")
|
||||
("owm-day-504" . "\xf008")
|
||||
("owm-day-511" . "\xf006")
|
||||
("owm-day-520" . "\xf009")
|
||||
("owm-day-521" . "\xf009")
|
||||
("owm-day-522" . "\xf009")
|
||||
("owm-day-531" . "\xf00e")
|
||||
("owm-day-600" . "\xf00a")
|
||||
("owm-day-601" . "\xf0b2")
|
||||
("owm-day-602" . "\xf00a")
|
||||
("owm-day-611" . "\xf006")
|
||||
("owm-day-612" . "\xf006")
|
||||
("owm-day-615" . "\xf006")
|
||||
("owm-day-616" . "\xf006")
|
||||
("owm-day-620" . "\xf006")
|
||||
("owm-day-621" . "\xf00a")
|
||||
("owm-day-622" . "\xf00a")
|
||||
("owm-day-701" . "\xf009")
|
||||
("owm-day-711" . "\xf062")
|
||||
("owm-day-721" . "\xf0b6")
|
||||
("owm-day-731" . "\xf063")
|
||||
("owm-day-741" . "\xf003")
|
||||
("owm-day-761" . "\xf063")
|
||||
("owm-day-762" . "\xf063")
|
||||
("owm-day-781" . "\xf056")
|
||||
("owm-day-800" . "\xf00d")
|
||||
("owm-day-801" . "\xf000")
|
||||
("owm-day-802" . "\xf000")
|
||||
("owm-day-803" . "\xf000")
|
||||
("owm-day-804" . "\xf00c")
|
||||
("owm-day-900" . "\xf056")
|
||||
("owm-day-902" . "\xf073")
|
||||
("owm-day-903" . "\xf076")
|
||||
("owm-day-904" . "\xf072")
|
||||
("owm-day-906" . "\xf004")
|
||||
("owm-day-957" . "\xf050")
|
||||
("owm-night-200" . "\xf02d")
|
||||
("owm-night-201" . "\xf02d")
|
||||
("owm-night-202" . "\xf02d")
|
||||
("owm-night-210" . "\xf025")
|
||||
("owm-night-211" . "\xf025")
|
||||
("owm-night-212" . "\xf025")
|
||||
("owm-night-221" . "\xf025")
|
||||
("owm-night-230" . "\xf02d")
|
||||
("owm-night-231" . "\xf02d")
|
||||
("owm-night-232" . "\xf02d")
|
||||
("owm-night-300" . "\xf02b")
|
||||
("owm-night-301" . "\xf02b")
|
||||
("owm-night-302" . "\xf028")
|
||||
("owm-night-310" . "\xf028")
|
||||
("owm-night-311" . "\xf028")
|
||||
("owm-night-312" . "\xf028")
|
||||
("owm-night-313" . "\xf028")
|
||||
("owm-night-314" . "\xf028")
|
||||
("owm-night-321" . "\xf02b")
|
||||
("owm-night-500" . "\xf02b")
|
||||
("owm-night-501" . "\xf028")
|
||||
("owm-night-502" . "\xf028")
|
||||
("owm-night-503" . "\xf028")
|
||||
("owm-night-504" . "\xf028")
|
||||
("owm-night-511" . "\xf026")
|
||||
("owm-night-520" . "\xf029")
|
||||
("owm-night-521" . "\xf029")
|
||||
("owm-night-522" . "\xf029")
|
||||
("owm-night-531" . "\xf02c")
|
||||
("owm-night-600" . "\xf02a")
|
||||
("owm-night-601" . "\xf0b4")
|
||||
("owm-night-602" . "\xf02a")
|
||||
("owm-night-611" . "\xf026")
|
||||
("owm-night-612" . "\xf026")
|
||||
("owm-night-615" . "\xf026")
|
||||
("owm-night-616" . "\xf026")
|
||||
("owm-night-620" . "\xf026")
|
||||
("owm-night-621" . "\xf02a")
|
||||
("owm-night-622" . "\xf02a")
|
||||
("owm-night-701" . "\xf029")
|
||||
("owm-night-711" . "\xf062")
|
||||
("owm-night-721" . "\xf0b6")
|
||||
("owm-night-731" . "\xf063")
|
||||
("owm-night-741" . "\xf04a")
|
||||
("owm-night-761" . "\xf063")
|
||||
("owm-night-762" . "\xf063")
|
||||
("owm-night-781" . "\xf056")
|
||||
("owm-night-800" . "\xf02e")
|
||||
("owm-night-801" . "\xf022")
|
||||
("owm-night-802" . "\xf022")
|
||||
("owm-night-803" . "\xf022")
|
||||
("owm-night-804" . "\xf086")
|
||||
("owm-night-900" . "\xf056")
|
||||
("owm-night-902" . "\xf073")
|
||||
("owm-night-903" . "\xf076")
|
||||
("owm-night-904" . "\xf072")
|
||||
("owm-night-906" . "\xf024")
|
||||
("owm-night-957" . "\xf050")
|
||||
("rain" . "\xf019")
|
||||
("rain-mix" . "\xf017")
|
||||
("rain-wind" . "\xf018")
|
||||
("raindrop" . "\xf078")
|
||||
("raindrops" . "\xf04e")
|
||||
("refresh" . "\xf04c")
|
||||
("refresh-alt" . "\xf04b")
|
||||
("sandstorm" . "\xf082")
|
||||
("showers" . "\xf01a")
|
||||
("sleet" . "\xf0b5")
|
||||
("small-craft-advisory" . "\xf0cc")
|
||||
("smog" . "\xf074")
|
||||
("smoke" . "\xf062")
|
||||
("snow" . "\xf01b")
|
||||
("snow" . "\xf01b")
|
||||
("snow-wind" . "\xf064")
|
||||
("snowflake-cold" . "\xf076")
|
||||
("solar-eclipse" . "\xf06e")
|
||||
("sprinkle" . "\xf01c")
|
||||
("stars" . "\xf077")
|
||||
("storm-showers" . "\xf01d")
|
||||
("storm-showers" . "\xf01d")
|
||||
("storm-warning" . "\xf0ce")
|
||||
("strong-wind" . "\xf050")
|
||||
("sunrise" . "\xf051")
|
||||
("sunset" . "\xf052")
|
||||
("thermometer" . "\xf055")
|
||||
("thermometer-exterior" . "\xf053")
|
||||
("thermometer-internal" . "\xf054")
|
||||
("thunderstorm" . "\xf01e")
|
||||
("thunderstorm" . "\xf01e")
|
||||
("time-1" . "\xf08a")
|
||||
("time-10" . "\xf093")
|
||||
("time-11" . "\xf094")
|
||||
("time-12" . "\xf089")
|
||||
("time-2" . "\xf08b")
|
||||
("time-3" . "\xf08c")
|
||||
("time-4" . "\xf08d")
|
||||
("time-5" . "\xf08e")
|
||||
("time-6" . "\xf08f")
|
||||
("time-7" . "\xf090")
|
||||
("time-8" . "\xf091")
|
||||
("time-9" . "\xf092")
|
||||
("tornado" . "\xf056")
|
||||
("train" . "\xf0cb")
|
||||
("tsunami" . "\xf0c5")
|
||||
("umbrella" . "\xf084")
|
||||
("volcano" . "\xf0c8")
|
||||
("wind-beaufort-0" . "\xf0b7")
|
||||
("wind-beaufort-1" . "\xf0b8")
|
||||
("wind-beaufort-10" . "\xf0c1")
|
||||
("wind-beaufort-11" . "\xf0c2")
|
||||
("wind-beaufort-12" . "\xf0c3")
|
||||
("wind-beaufort-2" . "\xf0b9")
|
||||
("wind-beaufort-3" . "\xf0ba")
|
||||
("wind-beaufort-4" . "\xf0bb")
|
||||
("wind-beaufort-5" . "\xf0bc")
|
||||
("wind-beaufort-6" . "\xf0bd")
|
||||
("wind-beaufort-7" . "\xf0be")
|
||||
("wind-beaufort-8" . "\xf0bf")
|
||||
("wind-beaufort-9" . "\xf0c0")
|
||||
("wind-direction" . "\xf0b1")
|
||||
("windy" . "\xf021")
|
||||
("wmo4680-00" . "\xf055")
|
||||
("wmo4680-01" . "\xf013")
|
||||
("wmo4680-02" . "\xf055")
|
||||
("wmo4680-03" . "\xf013")
|
||||
("wmo4680-04" . "\xf014")
|
||||
("wmo4680-05" . "\xf014")
|
||||
("wmo4680-10" . "\xf014")
|
||||
("wmo4680-11" . "\xf014")
|
||||
("wmo4680-12" . "\xf016")
|
||||
("wmo4680-18" . "\xf050")
|
||||
("wmo4680-20" . "\xf014")
|
||||
("wmo4680-21" . "\xf017")
|
||||
("wmo4680-22" . "\xf017")
|
||||
("wmo4680-23" . "\xf019")
|
||||
("wmo4680-24" . "\xf01b")
|
||||
("wmo4680-25" . "\xf015")
|
||||
("wmo4680-26" . "\xf01e")
|
||||
("wmo4680-27" . "\xf063")
|
||||
("wmo4680-28" . "\xf063")
|
||||
("wmo4680-29" . "\xf063")
|
||||
("wmo4680-30" . "\xf014")
|
||||
("wmo4680-31" . "\xf014")
|
||||
("wmo4680-32" . "\xf014")
|
||||
("wmo4680-33" . "\xf014")
|
||||
("wmo4680-34" . "\xf014")
|
||||
("wmo4680-35" . "\xf014")
|
||||
("wmo4680-40" . "\xf017")
|
||||
("wmo4680-41" . "\xf01c")
|
||||
("wmo4680-42" . "\xf019")
|
||||
("wmo4680-43" . "\xf01c")
|
||||
("wmo4680-44" . "\xf019")
|
||||
("wmo4680-45" . "\xf015")
|
||||
("wmo4680-46" . "\xf015")
|
||||
("wmo4680-47" . "\xf01b")
|
||||
("wmo4680-48" . "\xf01b")
|
||||
("wmo4680-50" . "\xf01c")
|
||||
("wmo4680-51" . "\xf01c")
|
||||
("wmo4680-52" . "\xf019")
|
||||
("wmo4680-53" . "\xf019")
|
||||
("wmo4680-54" . "\xf076")
|
||||
("wmo4680-55" . "\xf076")
|
||||
("wmo4680-56" . "\xf076")
|
||||
("wmo4680-57" . "\xf01c")
|
||||
("wmo4680-58" . "\xf019")
|
||||
("wmo4680-60" . "\xf01c")
|
||||
("wmo4680-61" . "\xf01c")
|
||||
("wmo4680-62" . "\xf019")
|
||||
("wmo4680-63" . "\xf019")
|
||||
("wmo4680-64" . "\xf015")
|
||||
("wmo4680-65" . "\xf015")
|
||||
("wmo4680-66" . "\xf015")
|
||||
("wmo4680-67" . "\xf017")
|
||||
("wmo4680-68" . "\xf017")
|
||||
("wmo4680-70" . "\xf01b")
|
||||
("wmo4680-71" . "\xf01b")
|
||||
("wmo4680-72" . "\xf01b")
|
||||
("wmo4680-73" . "\xf01b")
|
||||
("wmo4680-74" . "\xf076")
|
||||
("wmo4680-75" . "\xf076")
|
||||
("wmo4680-76" . "\xf076")
|
||||
("wmo4680-77" . "\xf01b")
|
||||
("wmo4680-78" . "\xf076")
|
||||
("wmo4680-80" . "\xf019")
|
||||
("wmo4680-81" . "\xf01c")
|
||||
("wmo4680-82" . "\xf019")
|
||||
("wmo4680-83" . "\xf019")
|
||||
("wmo4680-84" . "\xf01d")
|
||||
("wmo4680-85" . "\xf017")
|
||||
("wmo4680-86" . "\xf017")
|
||||
("wmo4680-87" . "\xf017")
|
||||
("wmo4680-89" . "\xf015")
|
||||
("wmo4680-90" . "\xf016")
|
||||
("wmo4680-91" . "\xf01d")
|
||||
("wmo4680-92" . "\xf01e")
|
||||
("wmo4680-93" . "\xf01e")
|
||||
("wmo4680-94" . "\xf016")
|
||||
("wmo4680-95" . "\xf01e")
|
||||
("wmo4680-96" . "\xf01e")
|
||||
("wmo4680-99" . "\xf056")
|
||||
("wu-chanceflurries" . "\xf064")
|
||||
("wu-chancerain" . "\xf019")
|
||||
("wu-chancesleat" . "\xf0b5")
|
||||
("wu-chancesnow" . "\xf01b")
|
||||
("wu-chancetstorms" . "\xf01e")
|
||||
("wu-clear" . "\xf00d")
|
||||
("wu-cloudy" . "\xf002")
|
||||
("wu-flurries" . "\xf064")
|
||||
("wu-hazy" . "\xf0b6")
|
||||
("wu-mostlycloudy" . "\xf002")
|
||||
("wu-mostlysunny" . "\xf00d")
|
||||
("wu-partlycloudy" . "\xf002")
|
||||
("wu-partlysunny" . "\xf00d")
|
||||
("wu-rain" . "\xf01a")
|
||||
("wu-sleat" . "\xf0b5")
|
||||
("wu-snow" . "\xf01b")
|
||||
("wu-sunny" . "\xf00d")
|
||||
("wu-tstorms" . "\xf01e")
|
||||
("wu-unknown" . "\xf00d")
|
||||
("yahoo-0" . "\xf056")
|
||||
("yahoo-1" . "\xf00e")
|
||||
("yahoo-10" . "\xf015")
|
||||
("yahoo-11" . "\xf01a")
|
||||
("yahoo-12" . "\xf01a")
|
||||
("yahoo-13" . "\xf01b")
|
||||
("yahoo-14" . "\xf00a")
|
||||
("yahoo-15" . "\xf064")
|
||||
("yahoo-16" . "\xf01b")
|
||||
("yahoo-17" . "\xf015")
|
||||
("yahoo-18" . "\xf017")
|
||||
("yahoo-19" . "\xf063")
|
||||
("yahoo-2" . "\xf073")
|
||||
("yahoo-20" . "\xf014")
|
||||
("yahoo-21" . "\xf021")
|
||||
("yahoo-22" . "\xf062")
|
||||
("yahoo-23" . "\xf050")
|
||||
("yahoo-24" . "\xf050")
|
||||
("yahoo-25" . "\xf076")
|
||||
("yahoo-26" . "\xf013")
|
||||
("yahoo-27" . "\xf031")
|
||||
("yahoo-28" . "\xf002")
|
||||
("yahoo-29" . "\xf031")
|
||||
("yahoo-3" . "\xf01e")
|
||||
("yahoo-30" . "\xf002")
|
||||
("yahoo-31" . "\xf02e")
|
||||
("yahoo-32" . "\xf00d")
|
||||
("yahoo-3200" . "\xf077")
|
||||
("yahoo-33" . "\xf083")
|
||||
("yahoo-34" . "\xf00c")
|
||||
("yahoo-35" . "\xf017")
|
||||
("yahoo-36" . "\xf072")
|
||||
("yahoo-37" . "\xf00e")
|
||||
("yahoo-38" . "\xf00e")
|
||||
("yahoo-39" . "\xf00e")
|
||||
("yahoo-4" . "\xf01e")
|
||||
("yahoo-40" . "\xf01a")
|
||||
("yahoo-41" . "\xf064")
|
||||
("yahoo-42" . "\xf01b")
|
||||
("yahoo-43" . "\xf064")
|
||||
("yahoo-44" . "\xf00c")
|
||||
("yahoo-45" . "\xf00e")
|
||||
("yahoo-46" . "\xf01b")
|
||||
("yahoo-47" . "\xf00e")
|
||||
("yahoo-5" . "\xf017")
|
||||
("yahoo-6" . "\xf017")
|
||||
("yahoo-7" . "\xf017")
|
||||
("yahoo-8" . "\xf015")
|
||||
("yahoo-9" . "\xf01a")
|
||||
|
||||
))
|
||||
|
||||
(provide 'data-weathericons)
|
BIN
code/elpa/all-the-icons-20220325.1238/data/data-weathericons.elc
Normal file
BIN
code/elpa/all-the-icons-20220325.1238/data/data-weathericons.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,33 @@
|
|||
;;; all-the-icons-dired-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "all-the-icons-dired" "all-the-icons-dired.el"
|
||||
;;;;;; (0 0 0 0))
|
||||
;;; Generated autoloads from all-the-icons-dired.el
|
||||
|
||||
(autoload 'all-the-icons-dired-mode "all-the-icons-dired" "\
|
||||
Display all-the-icons icon for each file in a dired buffer.
|
||||
|
||||
If called interactively, enable All-The-Icons-Dired mode if ARG
|
||||
is positive, and disable it if ARG is zero or negative. If
|
||||
called from Lisp, also enable the mode if ARG is omitted or nil,
|
||||
and toggle it if ARG is `toggle'; disable the mode otherwise.
|
||||
|
||||
\(fn &optional ARG)" t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "all-the-icons-dired" '("all-the-icons-dired-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; all-the-icons-dired-autoloads.el ends here
|
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from all-the-icons-dired.el -*- no-byte-compile: t -*-
|
||||
(define-package "all-the-icons-dired" "20220304.1638" "Shows icons for each file in dired mode" '((emacs "24.4") (all-the-icons "2.2.0")) :commit "147ed0dfd1034a686795a08dc63e2c293128597e" :authors '(("jtbm37")) :maintainer '("Jimmy Yuen Ho Wong" . "wyuenho@gmail.com") :keywords '("files" "icons" "dired") :url "https://github.com/wyuenho/all-the-icons-dired")
|
|
@ -0,0 +1,159 @@
|
|||
;;; all-the-icons-dired.el --- Shows icons for each file in dired mode -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2016-2020 jtbm37
|
||||
;; Copyright (C) 2021 Jimmy Yuen Ho Wong
|
||||
|
||||
;; Author: jtbm37
|
||||
;; Maintainer: Jimmy Yuen Ho Wong <wyuenho@gmail.com>
|
||||
;; Version: 2.0
|
||||
;; Package-Version: 20220304.1638
|
||||
;; Package-Commit: 147ed0dfd1034a686795a08dc63e2c293128597e
|
||||
;; Keywords: files icons dired
|
||||
;; Package-Requires: ((emacs "24.4") (all-the-icons "2.2.0"))
|
||||
;; URL: https://github.com/wyuenho/all-the-icons-dired
|
||||
|
||||
;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
;; To use this package, simply add this to your init.el:
|
||||
;; (add-hook 'dired-mode-hook 'all-the-icons-dired-mode)
|
||||
|
||||
;; To manually install, add this to your init.el before the hook mentioned above.
|
||||
;; (add-to-load-path (expand-file-name "~/path/to/all-the-icons-dired"))
|
||||
;; (load "all-the-icons-dired.el")
|
||||
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'cl-lib)
|
||||
(require 'dired)
|
||||
(require 'all-the-icons)
|
||||
(require 'subr-x)
|
||||
|
||||
(defface all-the-icons-dired-dir-face
|
||||
'((((background dark)) :foreground "white")
|
||||
(((background light)) :foreground "black"))
|
||||
"Face for the directory icon"
|
||||
:group 'all-the-icons-faces)
|
||||
|
||||
(defcustom all-the-icons-dired-v-adjust 0.01
|
||||
"The default vertical adjustment of the icon in the dired buffer."
|
||||
:group 'all-the-icons
|
||||
:type 'number)
|
||||
|
||||
(defcustom all-the-icons-dired-monochrome t
|
||||
"Whether to show the icons as the same color as the text on the same line."
|
||||
:group 'all-the-icons
|
||||
:type 'boolean)
|
||||
|
||||
(defvar all-the-icons-dired-mode)
|
||||
|
||||
(defun all-the-icons-dired--add-overlay (pos string)
|
||||
"Add overlay to display STRING at POS."
|
||||
(let ((ov (make-overlay (1- pos) pos)))
|
||||
(overlay-put ov 'all-the-icons-dired-overlay t)
|
||||
(overlay-put ov 'after-string string)))
|
||||
|
||||
(defun all-the-icons-dired--overlays-in (beg end)
|
||||
"Get all all-the-icons-dired overlays between BEG to END."
|
||||
(cl-remove-if-not
|
||||
(lambda (ov)
|
||||
(overlay-get ov 'all-the-icons-dired-overlay))
|
||||
(overlays-in beg end)))
|
||||
|
||||
(defun all-the-icons-dired--overlays-at (pos)
|
||||
"Get all-the-icons-dired overlays at POS."
|
||||
(apply #'all-the-icons-dired--overlays-in `(,pos ,pos)))
|
||||
|
||||
(defun all-the-icons-dired--remove-all-overlays ()
|
||||
"Remove all `all-the-icons-dired' overlays."
|
||||
(save-restriction
|
||||
(widen)
|
||||
(mapc #'delete-overlay
|
||||
(all-the-icons-dired--overlays-in (point-min) (point-max)))))
|
||||
|
||||
(defun all-the-icons-dired--refresh ()
|
||||
"Display the icons of files in a dired buffer."
|
||||
(all-the-icons-dired--remove-all-overlays)
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
(when (dired-move-to-filename nil)
|
||||
(let ((case-fold-search t))
|
||||
(when-let* ((file (dired-get-filename 'relative 'noerror))
|
||||
(icon (if (file-directory-p file)
|
||||
(all-the-icons-icon-for-dir file
|
||||
:face 'all-the-icons-dired-dir-face
|
||||
:v-adjust all-the-icons-dired-v-adjust)
|
||||
(apply 'all-the-icons-icon-for-file file
|
||||
(append
|
||||
`(:v-adjust ,all-the-icons-dired-v-adjust)
|
||||
(when all-the-icons-dired-monochrome
|
||||
`(:face ,(face-at-point))))))))
|
||||
(if (member file '("." ".."))
|
||||
(all-the-icons-dired--add-overlay (dired-move-to-filename) " \t")
|
||||
(all-the-icons-dired--add-overlay (dired-move-to-filename) (concat icon "\t"))))))
|
||||
(forward-line 1))))
|
||||
|
||||
(defun all-the-icons-dired--refresh-advice (fn &rest args)
|
||||
"Advice function for FN with ARGS."
|
||||
(prog1 (apply fn args)
|
||||
(when all-the-icons-dired-mode
|
||||
(all-the-icons-dired--refresh))))
|
||||
|
||||
(defvar all-the-icons-dired-advice-alist
|
||||
'((dired-aux dired-do-redisplay all-the-icons-dired--refresh-advice)
|
||||
(dired-aux dired-create-directory all-the-icons-dired--refresh-advice)
|
||||
(dired-aux dired-do-create-files all-the-icons-dired--refresh-advice)
|
||||
(dired-aux dired-do-kill-lines all-the-icons-dired--refresh-advice)
|
||||
(dired-aux dired-do-rename all-the-icons-dired--refresh-advice)
|
||||
(dired-aux dired-insert-subdir all-the-icons-dired--refresh-advice)
|
||||
(dired-aux dired-kill-subdir all-the-icons-dired--refresh-advice)
|
||||
(dired wdired-abort-changes all-the-icons-dired--refresh-advice)
|
||||
(dired dired-internal-do-deletions all-the-icons-dired--refresh-advice)
|
||||
(dired-narrow dired-narrow--internal all-the-icons-dired--refresh-advice)
|
||||
(dired-subtree dired-subtree-insert all-the-icons-dired--refresh-advice)
|
||||
(dired-subtree dired-subtree-remove all-the-icons-dired--refresh-advice)
|
||||
(dired dired-readin all-the-icons-dired--refresh-advice)
|
||||
(dired dired-revert all-the-icons-dired--refresh-advice)
|
||||
(find-dired find-dired-sentinel all-the-icons-dired--refresh-advice))
|
||||
"A list of file, adviced function, and advice function.")
|
||||
|
||||
(defun all-the-icons-dired--setup ()
|
||||
"Setup `all-the-icons-dired'."
|
||||
(setq-local tab-width 1)
|
||||
(pcase-dolist (`(,file ,sym ,fn) all-the-icons-dired-advice-alist)
|
||||
(with-eval-after-load file
|
||||
(advice-add sym :around fn)))
|
||||
(all-the-icons-dired--refresh))
|
||||
|
||||
(defun all-the-icons-dired--teardown ()
|
||||
"Functions used as advice when redisplaying buffer."
|
||||
(kill-local-variable 'tab-width)
|
||||
(pcase-dolist (`(,file ,sym ,fn) all-the-icons-dired-advice-alist)
|
||||
(with-eval-after-load file
|
||||
(advice-remove sym fn)))
|
||||
(all-the-icons-dired--remove-all-overlays))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode all-the-icons-dired-mode
|
||||
"Display all-the-icons icon for each file in a dired buffer."
|
||||
:lighter " all-the-icons-dired-mode"
|
||||
(when (derived-mode-p 'dired-mode)
|
||||
(if all-the-icons-dired-mode
|
||||
(all-the-icons-dired--setup)
|
||||
(all-the-icons-dired--teardown))))
|
||||
|
||||
(provide 'all-the-icons-dired)
|
||||
;;; all-the-icons-dired.el ends here
|
Binary file not shown.
3429
code/elpa/archives/gnu/archive-contents
Normal file
3429
code/elpa/archives/gnu/archive-contents
Normal file
File diff suppressed because it is too large
Load diff
1
code/elpa/archives/gnu/archive-contents.signed
Normal file
1
code/elpa/archives/gnu/archive-contents.signed
Normal file
|
@ -0,0 +1 @@
|
|||
Good signature from 066DAFCB81E42C40 GNU ELPA Signing Agent (2019) <elpasign@elpa.gnu.org> (trust undefined) created at 2022-04-21T17:15:02-0400 using RSA
|
5164
code/elpa/archives/melpa/archive-contents
Normal file
5164
code/elpa/archives/melpa/archive-contents
Normal file
File diff suppressed because it is too large
Load diff
84
code/elpa/bind-key-20210210.1609/bind-key-autoloads.el
Normal file
84
code/elpa/bind-key-20210210.1609/bind-key-autoloads.el
Normal file
|
@ -0,0 +1,84 @@
|
|||
;;; bind-key-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "bind-key" "bind-key.el" (0 0 0 0))
|
||||
;;; Generated autoloads from bind-key.el
|
||||
|
||||
(autoload 'bind-key "bind-key" "\
|
||||
Bind KEY-NAME to COMMAND in KEYMAP (`global-map' if not passed).
|
||||
|
||||
KEY-NAME may be a vector, in which case it is passed straight to
|
||||
`define-key'. Or it may be a string to be interpreted as
|
||||
spelled-out keystrokes, e.g., \"C-c C-z\". See documentation of
|
||||
`edmacro-mode' for details.
|
||||
|
||||
COMMAND must be an interactive function or lambda form.
|
||||
|
||||
KEYMAP, if present, should be a keymap variable or symbol.
|
||||
For example:
|
||||
|
||||
(bind-key \"M-h\" #'some-interactive-function my-mode-map)
|
||||
|
||||
(bind-key \"M-h\" #'some-interactive-function 'my-mode-map)
|
||||
|
||||
If PREDICATE is non-nil, it is a form evaluated to determine when
|
||||
a key should be bound. It must return non-nil in such cases.
|
||||
Emacs can evaluate this form at any time that it does redisplay
|
||||
or operates on menu data structures, so you should write it so it
|
||||
can safely be called at any time.
|
||||
|
||||
\(fn KEY-NAME COMMAND &optional KEYMAP PREDICATE)" nil t)
|
||||
|
||||
(autoload 'unbind-key "bind-key" "\
|
||||
Unbind the given KEY-NAME, within the KEYMAP (if specified).
|
||||
See `bind-key' for more details.
|
||||
|
||||
\(fn KEY-NAME &optional KEYMAP)" nil t)
|
||||
|
||||
(autoload 'bind-key* "bind-key" "\
|
||||
Similar to `bind-key', but overrides any mode-specific bindings.
|
||||
|
||||
\(fn KEY-NAME COMMAND &optional PREDICATE)" nil t)
|
||||
|
||||
(autoload 'bind-keys "bind-key" "\
|
||||
Bind multiple keys at once.
|
||||
|
||||
Accepts keyword arguments:
|
||||
:map MAP - a keymap into which the keybindings should be
|
||||
added
|
||||
:prefix KEY - prefix key for these bindings
|
||||
:prefix-map MAP - name of the prefix map that should be created
|
||||
for these bindings
|
||||
:prefix-docstring STR - docstring for the prefix-map variable
|
||||
:menu-name NAME - optional menu string for prefix map
|
||||
:filter FORM - optional form to determine when bindings apply
|
||||
|
||||
The rest of the arguments are conses of keybinding string and a
|
||||
function symbol (unquoted).
|
||||
|
||||
\(fn &rest ARGS)" nil t)
|
||||
|
||||
(autoload 'bind-keys* "bind-key" "\
|
||||
|
||||
|
||||
\(fn &rest ARGS)" nil t)
|
||||
|
||||
(autoload 'describe-personal-keybindings "bind-key" "\
|
||||
Display all the personal keybindings defined by `bind-key'." t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "bind-key" '("bind-key" "compare-keybindings" "get-binding-description" "override-global-m" "personal-keybindings")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; bind-key-autoloads.el ends here
|
2
code/elpa/bind-key-20210210.1609/bind-key-pkg.el
Normal file
2
code/elpa/bind-key-20210210.1609/bind-key-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from bind-key.el -*- no-byte-compile: t -*-
|
||||
(define-package "bind-key" "20210210.1609" "A simple way to manage personal keybindings" 'nil :commit "a7422fb8ab1baee19adb2717b5b47b9c3812a84c" :authors '(("John Wiegley" . "johnw@newartisans.com")) :maintainer '("John Wiegley" . "johnw@newartisans.com") :keywords '("keys" "keybinding" "config" "dotemacs") :url "https://github.com/jwiegley/use-package")
|
492
code/elpa/bind-key-20210210.1609/bind-key.el
Normal file
492
code/elpa/bind-key-20210210.1609/bind-key.el
Normal file
|
@ -0,0 +1,492 @@
|
|||
;;; bind-key.el --- A simple way to manage personal keybindings
|
||||
|
||||
;; Copyright (c) 2012-2017 John Wiegley
|
||||
|
||||
;; Author: John Wiegley <johnw@newartisans.com>
|
||||
;; Maintainer: John Wiegley <johnw@newartisans.com>
|
||||
;; Created: 16 Jun 2012
|
||||
;; Modified: 29 Nov 2017
|
||||
;; Version: 2.4
|
||||
;; Package-Version: 20210210.1609
|
||||
;; Package-Commit: a7422fb8ab1baee19adb2717b5b47b9c3812a84c
|
||||
;; Keywords: keys keybinding config dotemacs
|
||||
;; URL: https://github.com/jwiegley/use-package
|
||||
|
||||
;; 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 gnu emacs; see the file copying. if not, write to the
|
||||
;; free software foundation, inc., 59 temple place - suite 330,
|
||||
;; boston, ma 02111-1307, usa.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; If you have lots of keybindings set in your .emacs file, it can be hard to
|
||||
;; know which ones you haven't set yet, and which may now be overriding some
|
||||
;; new default in a new emacs version. This module aims to solve that
|
||||
;; problem.
|
||||
;;
|
||||
;; Bind keys as follows in your .emacs:
|
||||
;;
|
||||
;; (require 'bind-key)
|
||||
;;
|
||||
;; (bind-key "C-c x" 'my-ctrl-c-x-command)
|
||||
;;
|
||||
;; If the keybinding argument is a vector, it is passed straight to
|
||||
;; `define-key', so remapping a key with `[remap COMMAND]' works as
|
||||
;; expected:
|
||||
;;
|
||||
;; (bind-key [remap original-ctrl-c-x-command] 'my-ctrl-c-x-command)
|
||||
;;
|
||||
;; If you want the keybinding to override all minor modes that may also bind
|
||||
;; the same key, use the `bind-key*' form:
|
||||
;;
|
||||
;; (bind-key* "<C-return>" 'other-window)
|
||||
;;
|
||||
;; If you want to rebind a key only in a particular keymap, use:
|
||||
;;
|
||||
;; (bind-key "C-c x" 'my-ctrl-c-x-command some-other-mode-map)
|
||||
;;
|
||||
;; To unbind a key within a keymap (for example, to stop your favorite major
|
||||
;; mode from changing a binding that you don't want to override everywhere),
|
||||
;; use `unbind-key':
|
||||
;;
|
||||
;; (unbind-key "C-c x" some-other-mode-map)
|
||||
;;
|
||||
;; To bind multiple keys at once, or set up a prefix map, a `bind-keys' macro
|
||||
;; is provided. It accepts keyword arguments, please see its documentation
|
||||
;; for a detailed description.
|
||||
;;
|
||||
;; To add keys into a specific map, use :map argument
|
||||
;;
|
||||
;; (bind-keys :map dired-mode-map
|
||||
;; ("o" . dired-omit-mode)
|
||||
;; ("a" . some-custom-dired-function))
|
||||
;;
|
||||
;; To set up a prefix map, use `:prefix-map' and `:prefix' arguments (both are
|
||||
;; required)
|
||||
;;
|
||||
;; (bind-keys :prefix-map my-customize-prefix-map
|
||||
;; :prefix "C-c c"
|
||||
;; ("f" . customize-face)
|
||||
;; ("v" . customize-variable))
|
||||
;;
|
||||
;; You can combine all the keywords together. Additionally,
|
||||
;; `:prefix-docstring' can be specified to set documentation of created
|
||||
;; `:prefix-map' variable.
|
||||
;;
|
||||
;; To bind multiple keys in a `bind-key*' way (to be sure that your bindings
|
||||
;; will not be overridden by other modes), you may use `bind-keys*' macro:
|
||||
;;
|
||||
;; (bind-keys*
|
||||
;; ("C-o" . other-window)
|
||||
;; ("C-M-n" . forward-page)
|
||||
;; ("C-M-p" . backward-page))
|
||||
;;
|
||||
;; After Emacs loads, you can see a summary of all your personal keybindings
|
||||
;; currently in effect with this command:
|
||||
;;
|
||||
;; M-x describe-personal-keybindings
|
||||
;;
|
||||
;; This display will tell you if you've overridden a default keybinding, and
|
||||
;; what the default was. Also, it will tell you if the key was rebound after
|
||||
;; your binding it with `bind-key', and what it was rebound it to.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'cl-lib)
|
||||
(require 'easy-mmode)
|
||||
|
||||
(defgroup bind-key nil
|
||||
"A simple way to manage personal keybindings"
|
||||
:group 'emacs)
|
||||
|
||||
(defcustom bind-key-column-widths '(18 . 40)
|
||||
"Width of columns in `describe-personal-keybindings'."
|
||||
:type '(cons integer integer)
|
||||
:group 'bind-key)
|
||||
|
||||
(defcustom bind-key-segregation-regexp
|
||||
"\\`\\(\\(C-[chx] \\|M-[gso] \\)\\([CM]-\\)?\\|.+-\\)"
|
||||
"Regular expression used to divide key sets in the output from
|
||||
\\[describe-personal-keybindings]."
|
||||
:type 'regexp
|
||||
:group 'bind-key)
|
||||
|
||||
(defcustom bind-key-describe-special-forms nil
|
||||
"If non-nil, extract docstrings from lambdas, closures and keymaps if possible."
|
||||
:type 'boolean
|
||||
:group 'bind-key)
|
||||
|
||||
;; Create override-global-mode to force key remappings
|
||||
|
||||
(defvar override-global-map (make-keymap)
|
||||
"override-global-mode keymap")
|
||||
|
||||
(define-minor-mode override-global-mode
|
||||
"A minor mode so that keymap settings override other modes."
|
||||
t "")
|
||||
|
||||
;; the keymaps in `emulation-mode-map-alists' take precedence over
|
||||
;; `minor-mode-map-alist'
|
||||
(add-to-list 'emulation-mode-map-alists
|
||||
`((override-global-mode . ,override-global-map)))
|
||||
|
||||
(defvar personal-keybindings nil
|
||||
"List of bindings performed by `bind-key'.
|
||||
|
||||
Elements have the form ((KEY . [MAP]) CMD ORIGINAL-CMD)")
|
||||
|
||||
;;;###autoload
|
||||
(defmacro bind-key (key-name command &optional keymap predicate)
|
||||
"Bind KEY-NAME to COMMAND in KEYMAP (`global-map' if not passed).
|
||||
|
||||
KEY-NAME may be a vector, in which case it is passed straight to
|
||||
`define-key'. Or it may be a string to be interpreted as
|
||||
spelled-out keystrokes, e.g., \"C-c C-z\". See documentation of
|
||||
`edmacro-mode' for details.
|
||||
|
||||
COMMAND must be an interactive function or lambda form.
|
||||
|
||||
KEYMAP, if present, should be a keymap variable or symbol.
|
||||
For example:
|
||||
|
||||
(bind-key \"M-h\" #'some-interactive-function my-mode-map)
|
||||
|
||||
(bind-key \"M-h\" #'some-interactive-function 'my-mode-map)
|
||||
|
||||
If PREDICATE is non-nil, it is a form evaluated to determine when
|
||||
a key should be bound. It must return non-nil in such cases.
|
||||
Emacs can evaluate this form at any time that it does redisplay
|
||||
or operates on menu data structures, so you should write it so it
|
||||
can safely be called at any time."
|
||||
(let ((namevar (make-symbol "name"))
|
||||
(keyvar (make-symbol "key"))
|
||||
(kmapvar (make-symbol "kmap"))
|
||||
(kdescvar (make-symbol "kdesc"))
|
||||
(bindingvar (make-symbol "binding")))
|
||||
`(let* ((,namevar ,key-name)
|
||||
(,keyvar (if (vectorp ,namevar) ,namevar
|
||||
(read-kbd-macro ,namevar)))
|
||||
(,kmapvar (or (if (and ,keymap (symbolp ,keymap))
|
||||
(symbol-value ,keymap) ,keymap)
|
||||
global-map))
|
||||
(,kdescvar (cons (if (stringp ,namevar) ,namevar
|
||||
(key-description ,namevar))
|
||||
(if (symbolp ,keymap) ,keymap (quote ,keymap))))
|
||||
(,bindingvar (lookup-key ,kmapvar ,keyvar)))
|
||||
(let ((entry (assoc ,kdescvar personal-keybindings))
|
||||
(details (list ,command
|
||||
(unless (numberp ,bindingvar)
|
||||
,bindingvar))))
|
||||
(if entry
|
||||
(setcdr entry details)
|
||||
(add-to-list 'personal-keybindings (cons ,kdescvar details))))
|
||||
,(if predicate
|
||||
`(define-key ,kmapvar ,keyvar
|
||||
'(menu-item "" nil :filter (lambda (&optional _)
|
||||
(when ,predicate
|
||||
,command))))
|
||||
`(define-key ,kmapvar ,keyvar ,command)))))
|
||||
|
||||
;;;###autoload
|
||||
(defmacro unbind-key (key-name &optional keymap)
|
||||
"Unbind the given KEY-NAME, within the KEYMAP (if specified).
|
||||
See `bind-key' for more details."
|
||||
(let ((namevar (make-symbol "name"))
|
||||
(kdescvar (make-symbol "kdesc")))
|
||||
`(let* ((,namevar ,key-name)
|
||||
(,kdescvar (cons (if (stringp ,namevar) ,namevar
|
||||
(key-description ,namevar))
|
||||
(if (symbolp ,keymap) ,keymap (quote ,keymap)))))
|
||||
(bind-key--remove (if (vectorp ,namevar) ,namevar
|
||||
(read-kbd-macro ,namevar))
|
||||
(or (if (and ,keymap (symbolp ,keymap))
|
||||
(symbol-value ,keymap) ,keymap)
|
||||
global-map))
|
||||
(setq personal-keybindings
|
||||
(cl-delete-if (lambda (k) (equal (car k) ,kdescvar))
|
||||
personal-keybindings))
|
||||
nil)))
|
||||
|
||||
(defun bind-key--remove (key keymap)
|
||||
"Remove KEY from KEYMAP.
|
||||
|
||||
In contrast to `define-key', this function removes the binding from the keymap."
|
||||
(define-key keymap key nil)
|
||||
;; Split M-key in ESC key
|
||||
(setq key (mapcan (lambda (k)
|
||||
(if (and (integerp k) (/= (logand k ?\M-\0) 0))
|
||||
(list ?\e (logxor k ?\M-\0))
|
||||
(list k)))
|
||||
key))
|
||||
;; Delete single keys directly
|
||||
(if (= (length key) 1)
|
||||
(delete key keymap)
|
||||
;; Lookup submap and delete key from there
|
||||
(let* ((prefix (vconcat (butlast key)))
|
||||
(submap (lookup-key keymap prefix)))
|
||||
(unless (keymapp submap)
|
||||
(error "Not a keymap for %s" key))
|
||||
(when (symbolp submap)
|
||||
(setq submap (symbol-function submap)))
|
||||
(delete (last key) submap)
|
||||
;; Delete submap if it is empty
|
||||
(when (= 1 (length submap))
|
||||
(bind-key--remove prefix keymap)))))
|
||||
|
||||
;;;###autoload
|
||||
(defmacro bind-key* (key-name command &optional predicate)
|
||||
"Similar to `bind-key', but overrides any mode-specific bindings."
|
||||
`(bind-key ,key-name ,command override-global-map ,predicate))
|
||||
|
||||
(defun bind-keys-form (args keymap)
|
||||
"Bind multiple keys at once.
|
||||
|
||||
Accepts keyword arguments:
|
||||
:map MAP - a keymap into which the keybindings should be
|
||||
added
|
||||
:prefix KEY - prefix key for these bindings
|
||||
:prefix-map MAP - name of the prefix map that should be created
|
||||
for these bindings
|
||||
:prefix-docstring STR - docstring for the prefix-map variable
|
||||
:menu-name NAME - optional menu string for prefix map
|
||||
:filter FORM - optional form to determine when bindings apply
|
||||
|
||||
The rest of the arguments are conses of keybinding string and a
|
||||
function symbol (unquoted)."
|
||||
(let (map
|
||||
doc
|
||||
prefix-map
|
||||
prefix
|
||||
filter
|
||||
menu-name
|
||||
pkg)
|
||||
|
||||
;; Process any initial keyword arguments
|
||||
(let ((cont t))
|
||||
(while (and cont args)
|
||||
(if (cond ((and (eq :map (car args))
|
||||
(not prefix-map))
|
||||
(setq map (cadr args)))
|
||||
((eq :prefix-docstring (car args))
|
||||
(setq doc (cadr args)))
|
||||
((and (eq :prefix-map (car args))
|
||||
(not (memq map '(global-map
|
||||
override-global-map))))
|
||||
(setq prefix-map (cadr args)))
|
||||
((eq :prefix (car args))
|
||||
(setq prefix (cadr args)))
|
||||
((eq :filter (car args))
|
||||
(setq filter (cadr args)) t)
|
||||
((eq :menu-name (car args))
|
||||
(setq menu-name (cadr args)))
|
||||
((eq :package (car args))
|
||||
(setq pkg (cadr args))))
|
||||
(setq args (cddr args))
|
||||
(setq cont nil))))
|
||||
|
||||
(when (or (and prefix-map (not prefix))
|
||||
(and prefix (not prefix-map)))
|
||||
(error "Both :prefix-map and :prefix must be supplied"))
|
||||
|
||||
(when (and menu-name (not prefix))
|
||||
(error "If :menu-name is supplied, :prefix must be too"))
|
||||
|
||||
(unless map (setq map keymap))
|
||||
|
||||
;; Process key binding arguments
|
||||
(let (first next)
|
||||
(while args
|
||||
(if (keywordp (car args))
|
||||
(progn
|
||||
(setq next args)
|
||||
(setq args nil))
|
||||
(if first
|
||||
(nconc first (list (car args)))
|
||||
(setq first (list (car args))))
|
||||
(setq args (cdr args))))
|
||||
|
||||
(cl-flet
|
||||
((wrap (map bindings)
|
||||
(if (and map pkg (not (memq map '(global-map
|
||||
override-global-map))))
|
||||
`((if (boundp ',map)
|
||||
,(macroexp-progn bindings)
|
||||
(eval-after-load
|
||||
,(if (symbolp pkg) `',pkg pkg)
|
||||
',(macroexp-progn bindings))))
|
||||
bindings)))
|
||||
|
||||
(append
|
||||
(when prefix-map
|
||||
`((defvar ,prefix-map)
|
||||
,@(when doc `((put ',prefix-map 'variable-documentation ,doc)))
|
||||
,@(if menu-name
|
||||
`((define-prefix-command ',prefix-map nil ,menu-name))
|
||||
`((define-prefix-command ',prefix-map)))
|
||||
,@(if (and map (not (eq map 'global-map)))
|
||||
(wrap map `((bind-key ,prefix ',prefix-map ,map ,filter)))
|
||||
`((bind-key ,prefix ',prefix-map nil ,filter)))))
|
||||
(wrap map
|
||||
(cl-mapcan
|
||||
(lambda (form)
|
||||
(let ((fun (and (cdr form) (list 'function (cdr form)))))
|
||||
(if prefix-map
|
||||
`((bind-key ,(car form) ,fun ,prefix-map ,filter))
|
||||
(if (and map (not (eq map 'global-map)))
|
||||
`((bind-key ,(car form) ,fun ,map ,filter))
|
||||
`((bind-key ,(car form) ,fun nil ,filter))))))
|
||||
first))
|
||||
(when next
|
||||
(bind-keys-form (if pkg
|
||||
(cons :package (cons pkg next))
|
||||
next) map)))))))
|
||||
|
||||
;;;###autoload
|
||||
(defmacro bind-keys (&rest args)
|
||||
"Bind multiple keys at once.
|
||||
|
||||
Accepts keyword arguments:
|
||||
:map MAP - a keymap into which the keybindings should be
|
||||
added
|
||||
:prefix KEY - prefix key for these bindings
|
||||
:prefix-map MAP - name of the prefix map that should be created
|
||||
for these bindings
|
||||
:prefix-docstring STR - docstring for the prefix-map variable
|
||||
:menu-name NAME - optional menu string for prefix map
|
||||
:filter FORM - optional form to determine when bindings apply
|
||||
|
||||
The rest of the arguments are conses of keybinding string and a
|
||||
function symbol (unquoted)."
|
||||
(macroexp-progn (bind-keys-form args nil)))
|
||||
|
||||
;;;###autoload
|
||||
(defmacro bind-keys* (&rest args)
|
||||
(macroexp-progn (bind-keys-form args 'override-global-map)))
|
||||
|
||||
(defun get-binding-description (elem)
|
||||
(cond
|
||||
((listp elem)
|
||||
(cond
|
||||
((memq (car elem) '(lambda function))
|
||||
(if (and bind-key-describe-special-forms
|
||||
(stringp (nth 2 elem)))
|
||||
(nth 2 elem)
|
||||
"#<lambda>"))
|
||||
((eq 'closure (car elem))
|
||||
(if (and bind-key-describe-special-forms
|
||||
(stringp (nth 3 elem)))
|
||||
(nth 3 elem)
|
||||
"#<closure>"))
|
||||
((eq 'keymap (car elem))
|
||||
"#<keymap>")
|
||||
(t
|
||||
elem)))
|
||||
;; must be a symbol, non-symbol keymap case covered above
|
||||
((and bind-key-describe-special-forms (keymapp elem))
|
||||
(let ((doc (get elem 'variable-documentation)))
|
||||
(if (stringp doc) doc elem)))
|
||||
((symbolp elem)
|
||||
elem)
|
||||
(t
|
||||
"#<byte-compiled lambda>")))
|
||||
|
||||
(defun compare-keybindings (l r)
|
||||
(let* ((regex bind-key-segregation-regexp)
|
||||
(lgroup (and (string-match regex (caar l))
|
||||
(match-string 0 (caar l))))
|
||||
(rgroup (and (string-match regex (caar r))
|
||||
(match-string 0 (caar r))))
|
||||
(lkeymap (cdar l))
|
||||
(rkeymap (cdar r)))
|
||||
(cond
|
||||
((and (null lkeymap) rkeymap)
|
||||
(cons t t))
|
||||
((and lkeymap (null rkeymap))
|
||||
(cons nil t))
|
||||
((and lkeymap rkeymap
|
||||
(not (string= (symbol-name lkeymap) (symbol-name rkeymap))))
|
||||
(cons (string< (symbol-name lkeymap) (symbol-name rkeymap)) t))
|
||||
((and (null lgroup) rgroup)
|
||||
(cons t t))
|
||||
((and lgroup (null rgroup))
|
||||
(cons nil t))
|
||||
((and lgroup rgroup)
|
||||
(if (string= lgroup rgroup)
|
||||
(cons (string< (caar l) (caar r)) nil)
|
||||
(cons (string< lgroup rgroup) t)))
|
||||
(t
|
||||
(cons (string< (caar l) (caar r)) nil)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun describe-personal-keybindings ()
|
||||
"Display all the personal keybindings defined by `bind-key'."
|
||||
(interactive)
|
||||
(with-output-to-temp-buffer "*Personal Keybindings*"
|
||||
(princ (format (concat "Key name%s Command%s Comments\n%s %s "
|
||||
"---------------------\n")
|
||||
(make-string (- (car bind-key-column-widths) 9) ? )
|
||||
(make-string (- (cdr bind-key-column-widths) 8) ? )
|
||||
(make-string (1- (car bind-key-column-widths)) ?-)
|
||||
(make-string (1- (cdr bind-key-column-widths)) ?-)))
|
||||
(let (last-binding)
|
||||
(dolist (binding
|
||||
(setq personal-keybindings
|
||||
(sort personal-keybindings
|
||||
(lambda (l r)
|
||||
(car (compare-keybindings l r))))))
|
||||
|
||||
(if (not (eq (cdar last-binding) (cdar binding)))
|
||||
(princ (format "\n\n%s: %s\n%s\n\n"
|
||||
(cdar binding) (caar binding)
|
||||
(make-string (+ 21 (car bind-key-column-widths)
|
||||
(cdr bind-key-column-widths)) ?-)))
|
||||
(if (and last-binding
|
||||
(cdr (compare-keybindings last-binding binding)))
|
||||
(princ "\n")))
|
||||
|
||||
(let* ((key-name (caar binding))
|
||||
(at-present (lookup-key (or (symbol-value (cdar binding))
|
||||
(current-global-map))
|
||||
(read-kbd-macro key-name)))
|
||||
(command (nth 1 binding))
|
||||
(was-command (nth 2 binding))
|
||||
(command-desc (get-binding-description command))
|
||||
(was-command-desc (and was-command
|
||||
(get-binding-description was-command)))
|
||||
(at-present-desc (get-binding-description at-present))
|
||||
)
|
||||
(let ((line
|
||||
(format
|
||||
(format "%%-%ds%%-%ds%%s\n" (car bind-key-column-widths)
|
||||
(cdr bind-key-column-widths))
|
||||
key-name (format "`%s\'" command-desc)
|
||||
(if (string= command-desc at-present-desc)
|
||||
(if (or (null was-command)
|
||||
(string= command-desc was-command-desc))
|
||||
""
|
||||
(format "was `%s\'" was-command-desc))
|
||||
(format "[now: `%s\']" at-present)))))
|
||||
(princ (if (string-match "[ \t]+\n" line)
|
||||
(replace-match "\n" t t line)
|
||||
line))))
|
||||
|
||||
(setq last-binding binding)))))
|
||||
|
||||
(provide 'bind-key)
|
||||
|
||||
;; Local Variables:
|
||||
;; outline-regexp: ";;;\\(;* [^\s\t\n]\\|###autoload\\)\\|("
|
||||
;; indent-tabs-mode: nil
|
||||
;; End:
|
||||
|
||||
;;; bind-key.el ends here
|
BIN
code/elpa/bind-key-20210210.1609/bind-key.elc
Normal file
BIN
code/elpa/bind-key-20210210.1609/bind-key.elc
Normal file
Binary file not shown.
74
code/elpa/dash-20220417.2250/dash-autoloads.el
Normal file
74
code/elpa/dash-20220417.2250/dash-autoloads.el
Normal file
|
@ -0,0 +1,74 @@
|
|||
;;; dash-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "dash" "dash.el" (0 0 0 0))
|
||||
;;; Generated autoloads from dash.el
|
||||
|
||||
(autoload 'dash-fontify-mode "dash" "\
|
||||
Toggle fontification of Dash special variables.
|
||||
|
||||
If called interactively, enable Dash-Fontify mode if ARG is
|
||||
positive, and disable it if ARG is zero or negative. If called
|
||||
from Lisp, also enable the mode if ARG is omitted or nil, and
|
||||
toggle it if ARG is `toggle'; disable the mode otherwise.
|
||||
|
||||
Dash-Fontify mode is a buffer-local minor mode intended for Emacs
|
||||
Lisp buffers. Enabling it causes the special variables bound in
|
||||
anaphoric Dash macros to be fontified. These anaphoras include
|
||||
`it', `it-index', `acc', and `other'. In older Emacs versions
|
||||
which do not dynamically detect macros, Dash-Fontify mode
|
||||
additionally fontifies Dash macro calls.
|
||||
|
||||
See also `dash-fontify-mode-lighter' and
|
||||
`global-dash-fontify-mode'.
|
||||
|
||||
\(fn &optional ARG)" t nil)
|
||||
|
||||
(put 'global-dash-fontify-mode 'globalized-minor-mode t)
|
||||
|
||||
(defvar global-dash-fontify-mode nil "\
|
||||
Non-nil if Global Dash-Fontify mode is enabled.
|
||||
See the `global-dash-fontify-mode' command
|
||||
for a description of this minor mode.
|
||||
Setting this variable directly does not take effect;
|
||||
either customize it (see the info node `Easy Customization')
|
||||
or call the function `global-dash-fontify-mode'.")
|
||||
|
||||
(custom-autoload 'global-dash-fontify-mode "dash" nil)
|
||||
|
||||
(autoload 'global-dash-fontify-mode "dash" "\
|
||||
Toggle Dash-Fontify mode in all buffers.
|
||||
With prefix ARG, enable Global Dash-Fontify mode if ARG is positive;
|
||||
otherwise, disable it. If called from Lisp, enable the mode if
|
||||
ARG is omitted or nil.
|
||||
|
||||
Dash-Fontify mode is enabled in all buffers where
|
||||
`dash--turn-on-fontify-mode' would do it.
|
||||
See `dash-fontify-mode' for more information on Dash-Fontify mode.
|
||||
|
||||
\(fn &optional ARG)" t nil)
|
||||
|
||||
(autoload 'dash-register-info-lookup "dash" "\
|
||||
Register the Dash Info manual with `info-lookup-symbol'.
|
||||
This allows Dash symbols to be looked up with \\[info-lookup-symbol]." t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dash" '("!cdr" "!cons" "--" "->" "-a" "-butlast" "-c" "-d" "-e" "-f" "-gr" "-i" "-juxt" "-keep" "-l" "-m" "-no" "-o" "-p" "-r" "-s" "-t" "-u" "-value-to-list" "-when-let" "-zip" "dash-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;;;### (autoloads nil nil ("dash-pkg.el") (0 0 0 0))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; dash-autoloads.el ends here
|
12
code/elpa/dash-20220417.2250/dash-pkg.el
Normal file
12
code/elpa/dash-20220417.2250/dash-pkg.el
Normal file
|
@ -0,0 +1,12 @@
|
|||
(define-package "dash" "20220417.2250" "A modern list library for Emacs"
|
||||
'((emacs "24"))
|
||||
:commit "7fd71338dce041b352f84e7939f6966f4d379459" :authors
|
||||
'(("Magnar Sveen" . "magnars@gmail.com"))
|
||||
:maintainer
|
||||
'("Magnar Sveen" . "magnars@gmail.com")
|
||||
:keywords
|
||||
'("extensions" "lisp")
|
||||
:url "https://github.com/magnars/dash.el")
|
||||
;; Local Variables:
|
||||
;; no-byte-compile: t
|
||||
;; End:
|
3570
code/elpa/dash-20220417.2250/dash.el
Normal file
3570
code/elpa/dash-20220417.2250/dash.el
Normal file
File diff suppressed because it is too large
Load diff
BIN
code/elpa/dash-20220417.2250/dash.elc
Normal file
BIN
code/elpa/dash-20220417.2250/dash.elc
Normal file
Binary file not shown.
4766
code/elpa/dash-20220417.2250/dash.info
Normal file
4766
code/elpa/dash-20220417.2250/dash.info
Normal file
File diff suppressed because it is too large
Load diff
18
code/elpa/dash-20220417.2250/dir
Normal file
18
code/elpa/dash-20220417.2250/dir
Normal file
|
@ -0,0 +1,18 @@
|
|||
This is the file .../info/dir, which contains the
|
||||
topmost node of the Info hierarchy, called (dir)Top.
|
||||
The first time you invoke Info you start off looking at this node.
|
||||
|
||||
File: dir, Node: Top This is the top of the INFO tree
|
||||
|
||||
This (the Directory node) gives a menu of major topics.
|
||||
Typing "q" exits, "H" lists all Info commands, "d" returns here,
|
||||
"h" gives a primer for first-timers,
|
||||
"mEmacs<Return>" visits the Emacs manual, etc.
|
||||
|
||||
In Emacs, you can click mouse button 2 on a menu item or cross reference
|
||||
to select it.
|
||||
|
||||
* Menu:
|
||||
|
||||
Emacs
|
||||
* Dash: (dash.info). A modern list library for GNU Emacs.
|
60
code/elpa/diminish-20220104.1539/diminish-autoloads.el
Normal file
60
code/elpa/diminish-20220104.1539/diminish-autoloads.el
Normal file
|
@ -0,0 +1,60 @@
|
|||
;;; diminish-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "diminish" "diminish.el" (0 0 0 0))
|
||||
;;; Generated autoloads from diminish.el
|
||||
|
||||
(autoload 'diminish "diminish" "\
|
||||
Diminish mode-line display of minor mode MODE to TO-WHAT (default \"\").
|
||||
|
||||
Interactively, enter (with completion) the name of any minor mode, followed
|
||||
on the next line by what you want it diminished to (default empty string).
|
||||
The response to neither prompt should be quoted. However, in Lisp code,
|
||||
both args must be quoted, the first as a symbol, the second as a string,
|
||||
as in (diminish 'jiggle-mode \" Jgl\").
|
||||
|
||||
The mode-line displays of minor modes usually begin with a space, so
|
||||
the modes' names appear as separate words on the mode line. However, if
|
||||
you're having problems with a cramped mode line, you may choose to use single
|
||||
letters for some modes, without leading spaces. Capitalizing them works
|
||||
best; if you then diminish some mode to \"X\" but have `abbrev-mode' enabled as
|
||||
well, you'll get a display like \"AbbrevX\". This function prepends a space
|
||||
to TO-WHAT if it's > 1 char long & doesn't already begin with a space.
|
||||
|
||||
\(fn MODE &optional TO-WHAT)" t nil)
|
||||
|
||||
(autoload 'diminish-undo "diminish" "\
|
||||
Restore mode-line display of diminished mode MODE to its minor-mode value.
|
||||
Do nothing if the arg is a minor mode that hasn't been diminished.
|
||||
|
||||
Interactively, enter (with completion) the name of any diminished mode (a
|
||||
mode that was formerly a minor mode on which you invoked \\[diminish]).
|
||||
To restore all diminished modes to minor status, answer `diminished-modes'.
|
||||
The response to the prompt shouldn't be quoted. However, in Lisp code,
|
||||
the arg must be quoted as a symbol, as in (diminish-undo 'diminished-modes).
|
||||
|
||||
\(fn MODE)" t nil)
|
||||
|
||||
(autoload 'diminished-modes "diminish" "\
|
||||
Echo all active diminished or minor modes as if they were minor.
|
||||
The display goes in the echo area; if it's too long even for that,
|
||||
you can see the whole thing in the *Messages* buffer.
|
||||
This doesn't change the status of any modes; it just lets you see
|
||||
what diminished modes would be on the mode-line if they were still minor." t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "diminish" '("diminish")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; diminish-autoloads.el ends here
|
2
code/elpa/diminish-20220104.1539/diminish-pkg.el
Normal file
2
code/elpa/diminish-20220104.1539/diminish-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from diminish.el -*- no-byte-compile: t -*-
|
||||
(define-package "diminish" "20220104.1539" "Diminished modes are minor modes with no modeline display" '((emacs "24.3")) :commit "6b7e837b0cf0129e9d7d6abae48093cf599bb9e8" :authors '(("Will Mengarini" . "seldon@eskimo.com")) :maintainer '("Martin Yrjölä" . "martin.yrjola@gmail.com") :keywords '("extensions" "diminish" "minor" "codeprose") :url "https://github.com/myrjola/diminish.el")
|
294
code/elpa/diminish-20220104.1539/diminish.el
Normal file
294
code/elpa/diminish-20220104.1539/diminish.el
Normal file
|
@ -0,0 +1,294 @@
|
|||
;;; diminish.el --- Diminished modes are minor modes with no modeline display
|
||||
|
||||
;; Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Will Mengarini <seldon@eskimo.com>
|
||||
;; Maintainer: Martin Yrjölä <martin.yrjola@gmail.com>
|
||||
;; URL: https://github.com/myrjola/diminish.el
|
||||
;; Package-Version: 20220104.1539
|
||||
;; Package-Commit: 6b7e837b0cf0129e9d7d6abae48093cf599bb9e8
|
||||
;; Created: Th 19 Feb 98
|
||||
;; Version: 0.46
|
||||
;; Package-Requires: ((emacs "24.3"))
|
||||
;; Keywords: extensions, diminish, minor, codeprose
|
||||
|
||||
;; 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Minor modes each put a word on the mode line to signify that they're
|
||||
;; active. This can cause other displays, such as % of file that point is
|
||||
;; at, to run off the right side of the screen. For some minor modes, such
|
||||
;; as mouse-avoidance-mode, the display is a waste of space, since users
|
||||
;; typically set the mode in their .emacs & never change it. For other
|
||||
;; modes, such as my jiggle-mode, it's a waste because there's already a
|
||||
;; visual indication of whether the mode is in effect.
|
||||
|
||||
;; A diminished mode is a minor mode that has had its mode line
|
||||
;; display diminished, usually to nothing, although diminishing to a
|
||||
;; shorter word or a single letter is also supported. This package
|
||||
;; implements diminished modes.
|
||||
|
||||
;; You can use this package either interactively or from your .emacs file.
|
||||
;; In either case, first you'll need to copy this file to a directory that
|
||||
;; appears in your load-path. `load-path' is the name of a variable that
|
||||
;; contains a list of directories Emacs searches for files to load.
|
||||
;; To prepend another directory to load-path, put a line like
|
||||
;; (add-to-list 'load-path "c:/My_Directory") in your .emacs file.
|
||||
|
||||
;; To create diminished modes interactively, type
|
||||
;; M-x load-library
|
||||
;; to get a prompt like
|
||||
;; Load library:
|
||||
;; and respond `diminish' (unquoted). Then type
|
||||
;; M-x diminish
|
||||
;; to get a prompt like
|
||||
;; Diminish what minor mode:
|
||||
;; and respond with the name of some minor mode, like mouse-avoidance-mode.
|
||||
;; You'll then get this prompt:
|
||||
;; To what mode-line display:
|
||||
;; Respond by just hitting <Enter> if you want the name of the mode
|
||||
;; completely removed from the mode line. If you prefer, you can abbreviate
|
||||
;; the name. If your abbreviation is 2 characters or more, such as "Av",
|
||||
;; it'll be displayed as a separate word on the mode line, just like minor
|
||||
;; modes' names. If it's a single character, such as "V", it'll be scrunched
|
||||
;; up against the previous word, so for example if the undiminished mode line
|
||||
;; display had been "Abbrev Fill Avoid", it would become "Abbrev FillV".
|
||||
;; Multiple single-letter diminished modes will all be scrunched together.
|
||||
;; The display of undiminished modes will not be affected.
|
||||
|
||||
;; To find out what the mode line would look like if all diminished modes
|
||||
;; were still minor, type M-x diminished-modes. This displays in the echo
|
||||
;; area the complete list of minor or diminished modes now active, but
|
||||
;; displays them all as minor. They remain diminished on the mode line.
|
||||
|
||||
;; To convert a diminished mode back to a minor mode, type M-x diminish-undo
|
||||
;; to get a prompt like
|
||||
;; Restore what diminished mode:
|
||||
;; Respond with the name of some diminished mode. To convert all
|
||||
;; diminished modes back to minor modes, respond to that prompt
|
||||
;; with `diminished-modes' (unquoted, & note the hyphen).
|
||||
|
||||
;; When you're responding to the prompts for mode names, you can use
|
||||
;; completion to avoid extra typing; for example, m o u SPC SPC SPC
|
||||
;; is usually enough to specify mouse-avoidance-mode. Mode names
|
||||
;; typically end in "-mode", but for historical reasons
|
||||
;; auto-fill-mode is named by "auto-fill-function".
|
||||
|
||||
;; To create diminished modes noninteractively in your .emacs file, put
|
||||
;; code like
|
||||
;; (require 'diminish)
|
||||
;; (diminish 'abbrev-mode "Abv")
|
||||
;; (diminish 'jiggle-mode)
|
||||
;; (diminish 'mouse-avoidance-mode "M")
|
||||
;; near the end of your .emacs file. It should be near the end so that any
|
||||
;; minor modes your .emacs loads will already have been loaded by the time
|
||||
;; they're to be converted to diminished modes.
|
||||
|
||||
;; To diminish a major mode, (setq mode-name "whatever") in the mode hook.
|
||||
|
||||
;;; Epigraph:
|
||||
|
||||
;; "The quality of our thoughts is bordered on all sides
|
||||
;; by our facility with language."
|
||||
;; --J. Michael Straczynski
|
||||
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile (require 'cl-lib))
|
||||
|
||||
(defvar diminish-must-not-copy-minor-mode-alist nil
|
||||
"Non-nil means loading diminish.el won't (copy-alist minor-mode-alist).
|
||||
Normally `minor-mode-alist' is setq to that copy on loading diminish because
|
||||
at least one of its cons cells, that for abbrev-mode, is read-only (see
|
||||
ELisp Info on \"pure storage\"). If you setq this variable to t & then
|
||||
try to diminish abbrev-mode under GNU Emacs 19.34, you'll get the error
|
||||
message \"Attempt to modify read-only object\".")
|
||||
|
||||
(or diminish-must-not-copy-minor-mode-alist
|
||||
(cl-callf copy-alist minor-mode-alist))
|
||||
|
||||
(defvar diminished-mode-alist nil
|
||||
"The original `minor-mode-alist' value of all (diminish)ed modes.")
|
||||
|
||||
(defvar diminish-history-symbols nil
|
||||
"Command history for symbols of diminished modes.")
|
||||
|
||||
(defvar diminish-history-names nil
|
||||
"Command history for names of diminished modes.")
|
||||
|
||||
;; When we diminish a mode, we are saying we want it to continue doing its
|
||||
;; work for us, but we no longer want to be reminded of it. It becomes a
|
||||
;; night worker, like a janitor; it becomes an invisible man; it remains a
|
||||
;; component, perhaps an important one, sometimes an indispensable one, of
|
||||
;; the mechanism that maintains the day-people's world, but its place in
|
||||
;; their thoughts is diminished, usually to nothing. As we grow old we
|
||||
;; diminish more and more such thoughts, such people, usually to nothing.
|
||||
|
||||
;; "The wise man knows that to keep under is to endure." The diminished
|
||||
;; often come to value their invisibility. We speak--speak--of "the strong
|
||||
;; silent type", but only as a superficiality; a stereotype in a movie,
|
||||
;; perhaps, but even if an acquaintance, necessarily, by hypothesis, a
|
||||
;; distant one. The strong silent type is actually a process. It begins
|
||||
;; with introspection, continues with judgment, and is shaped by the
|
||||
;; discovery that these judgments are impractical to share; there is no
|
||||
;; appetite for the wisdom of the self-critical among the creatures of
|
||||
;; material appetite who dominate our world. Their dominance's Darwinian
|
||||
;; implications reinforce the self-doubt that is the germ of higher wisdom.
|
||||
;; The thoughtful contemplate the evolutionary triumph of the predator.
|
||||
;; Gnostics deny the cosmos could be so evil; this must all be a prank; the
|
||||
;; thoughtful remain silent, invisible, self-diminished, and discover,
|
||||
;; perhaps at first in surprise, the freedom they thus gain, and grow strong.
|
||||
|
||||
;;;###autoload
|
||||
(defun diminish (mode &optional to-what)
|
||||
"Diminish mode-line display of minor mode MODE to TO-WHAT (default \"\").
|
||||
|
||||
Interactively, enter (with completion) the name of any minor mode, followed
|
||||
on the next line by what you want it diminished to (default empty string).
|
||||
The response to neither prompt should be quoted. However, in Lisp code,
|
||||
both args must be quoted, the first as a symbol, the second as a string,
|
||||
as in (diminish 'jiggle-mode \" Jgl\").
|
||||
|
||||
The mode-line displays of minor modes usually begin with a space, so
|
||||
the modes' names appear as separate words on the mode line. However, if
|
||||
you're having problems with a cramped mode line, you may choose to use single
|
||||
letters for some modes, without leading spaces. Capitalizing them works
|
||||
best; if you then diminish some mode to \"X\" but have `abbrev-mode' enabled as
|
||||
well, you'll get a display like \"AbbrevX\". This function prepends a space
|
||||
to TO-WHAT if it's > 1 char long & doesn't already begin with a space."
|
||||
(interactive (list (read (completing-read
|
||||
"Diminish what minor mode: "
|
||||
(mapcar (lambda (x) (list (symbol-name (car x))))
|
||||
minor-mode-alist)
|
||||
nil t nil 'diminish-history-symbols))
|
||||
(read-from-minibuffer
|
||||
"To what mode-line display: "
|
||||
nil nil nil 'diminish-history-names)))
|
||||
(let ((minor (assq mode minor-mode-alist)))
|
||||
(when minor
|
||||
(progn (cl-callf or to-what "")
|
||||
(when (and (stringp to-what)
|
||||
(> (length to-what) 1))
|
||||
(or (= (string-to-char to-what) ?\ )
|
||||
(cl-callf2 concat " " to-what)))
|
||||
(or (assq mode diminished-mode-alist)
|
||||
(push (copy-sequence minor) diminished-mode-alist))
|
||||
(setcdr minor (list to-what))))))
|
||||
|
||||
;; But an image comes to me, vivid in its unreality, of a loon alone on his
|
||||
;; forest lake, shrieking his soul out into a canopy of stars. Alone this
|
||||
;; afternoon in my warm city apartment, I can feel the bite of his night air,
|
||||
;; and smell his conifers. In him there is no acceptance of diminishment.
|
||||
|
||||
;; "I have a benevolent habit of pouring out myself to everybody,
|
||||
;; and would even pay for a listener, and I am afraid
|
||||
;; that the Athenians may think me too talkative."
|
||||
;; --Socrates, in the /Euthyphro/
|
||||
|
||||
;; I remember a news story about a retired plumber who had somehow managed to
|
||||
;; steal a military tank. He rode it down city streets, rode over a parked
|
||||
;; car--no one was hurt--rode onto a freeway, that concrete symbol of the
|
||||
;; American spirit, or so we fancy it, shouting "Plumber Bob! Plumber Bob!".
|
||||
;; He was shot dead by police.
|
||||
|
||||
;;;###autoload
|
||||
(defun diminish-undo (mode)
|
||||
"Restore mode-line display of diminished mode MODE to its minor-mode value.
|
||||
Do nothing if the arg is a minor mode that hasn't been diminished.
|
||||
|
||||
Interactively, enter (with completion) the name of any diminished mode (a
|
||||
mode that was formerly a minor mode on which you invoked \\[diminish]).
|
||||
To restore all diminished modes to minor status, answer `diminished-modes'.
|
||||
The response to the prompt shouldn't be quoted. However, in Lisp code,
|
||||
the arg must be quoted as a symbol, as in (diminish-undo 'diminished-modes)."
|
||||
(interactive
|
||||
(list (read (completing-read
|
||||
"Restore what diminished mode: "
|
||||
(cons (list "diminished-modes")
|
||||
(mapcar (lambda (x) (list (symbol-name (car x))))
|
||||
diminished-mode-alist))
|
||||
nil t nil 'diminish-history-symbols))))
|
||||
(if (eq mode 'diminished-modes)
|
||||
(let ((diminished-modes diminished-mode-alist))
|
||||
(while diminished-modes
|
||||
(diminish-undo (caar diminished-modes))
|
||||
(cl-callf cdr diminished-modes)))
|
||||
(let ((minor (assq mode minor-mode-alist))
|
||||
(diminished (assq mode diminished-mode-alist)))
|
||||
(or minor
|
||||
(error "%S is not currently registered as a minor mode" mode))
|
||||
(when diminished
|
||||
(setcdr minor (cdr diminished))))))
|
||||
|
||||
;; Plumber Bob was not from Seattle, my grey city, for rainy Seattle is a
|
||||
;; city of interiors, a city of the self-diminished. When I moved here one
|
||||
;; sunny June I was delighted to find that ducks and geese were common in
|
||||
;; the streets. But I hoped to find a loon or two, and all I found were
|
||||
;; ducks and geese. I wondered about this; I wondered why there were no
|
||||
;; loons in Seattle; but my confusion resulted from my ignorance of the
|
||||
;; psychology of rain, which is to say my ignorance of diminished modes.
|
||||
;; What I needed, and lacked, was a way to discover they were there.
|
||||
|
||||
;;;###autoload
|
||||
(defun diminished-modes ()
|
||||
"Echo all active diminished or minor modes as if they were minor.
|
||||
The display goes in the echo area; if it's too long even for that,
|
||||
you can see the whole thing in the *Messages* buffer.
|
||||
This doesn't change the status of any modes; it just lets you see
|
||||
what diminished modes would be on the mode-line if they were still minor."
|
||||
(interactive)
|
||||
(let ((minor-modes minor-mode-alist)
|
||||
message)
|
||||
(while minor-modes
|
||||
(when (symbol-value (caar minor-modes))
|
||||
;; This minor mode is active in this buffer
|
||||
(let* ((mode-pair (car minor-modes))
|
||||
(mode (car mode-pair))
|
||||
(minor-pair (or (assq mode diminished-mode-alist) mode-pair))
|
||||
(minor-name (cadr minor-pair)))
|
||||
(when (symbolp minor-name)
|
||||
;; This minor mode uses symbol indirection in the cdr
|
||||
(let ((symbols-seen (list minor-name)))
|
||||
(while (and (symbolp (cl-callf symbol-value minor-name))
|
||||
(not (memq minor-name symbols-seen)))
|
||||
(push minor-name symbols-seen))))
|
||||
(push minor-name message)))
|
||||
(cl-callf cdr minor-modes))
|
||||
(setq message (mapconcat 'identity (nreverse message) ""))
|
||||
(when (= (string-to-char message) ?\ )
|
||||
(cl-callf substring message 1))
|
||||
(message "%s" message)))
|
||||
|
||||
;; A human mind is a Black Forest of diminished modes. Some are dangerous;
|
||||
;; most of the mind of an intimate is a secret stranger, and these diminished
|
||||
;; modes are rendered more unpredictable by their long isolation from the
|
||||
;; corrective influence of interaction with reality. The student of history
|
||||
;; learns that this description applies to whole societies as well. In some
|
||||
;; ways the self-diminished are better able to discern the night worker.
|
||||
;; They are rendered safer by their heightened awareness of others'
|
||||
;; diminished modes, and more congenial by the spare blandness of their own
|
||||
;; mode lines. To some people rain is truly depressing, but others it just
|
||||
;; makes pensive, and, forcing them indoors where they may not have the
|
||||
;; luxury of solitude, teaches them to self-diminish. That was what I had
|
||||
;; not understood when I was searching for loons among the ducks and geese.
|
||||
;; Loons come to Seattle all the time, but the ones that like it learn to be
|
||||
;; silent, learn to self-diminish, and take on the colors of ducks and geese.
|
||||
;; Now, here a dozen years, I can recognize them everywhere, standing quietly
|
||||
;; in line with the ducks and geese at the espresso counter, gazing placidly
|
||||
;; out on the world through loon-red eyes, thinking secret thoughts.
|
||||
|
||||
(provide 'diminish)
|
||||
|
||||
;;; diminish.el ends here
|
BIN
code/elpa/diminish-20220104.1539/diminish.elc
Normal file
BIN
code/elpa/diminish-20220104.1539/diminish.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,33 @@
|
|||
;;; dired-collapse-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "dired-collapse" "dired-collapse.el" (0 0 0
|
||||
;;;;;; 0))
|
||||
;;; Generated autoloads from dired-collapse.el
|
||||
|
||||
(autoload 'dired-collapse-mode "dired-collapse" "\
|
||||
Toggle collapsing of unique nested paths in Dired.
|
||||
|
||||
If called interactively, enable Dired-Collapse mode if ARG is
|
||||
positive, and disable it if ARG is zero or negative. If called
|
||||
from Lisp, also enable the mode if ARG is omitted or nil, and
|
||||
toggle it if ARG is `toggle'; disable the mode otherwise.
|
||||
|
||||
\(fn &optional ARG)" t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-collapse" '("dired-collapse")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; dired-collapse-autoloads.el ends here
|
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from dired-collapse.el -*- no-byte-compile: t -*-
|
||||
(define-package "dired-collapse" "20210403.1230" "Collapse unique nested paths in dired listing" '((dash "2.10.0") (f "0.19.0") (dired-hacks-utils "0.0.1")) :commit "7c0ef09d57a80068a11edc74c3568e5ead5cc15a" :authors '(("Matúš Goljer" . "matus.goljer@gmail.com")) :maintainer '("Matúš Goljer" . "matus.goljer@gmail.com") :keywords '("files"))
|
162
code/elpa/dired-collapse-20210403.1230/dired-collapse.el
Normal file
162
code/elpa/dired-collapse-20210403.1230/dired-collapse.el
Normal file
|
@ -0,0 +1,162 @@
|
|||
;;; dired-collapse.el --- Collapse unique nested paths in dired listing -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2017 Matúš Goljer
|
||||
|
||||
;; Author: Matúš Goljer <matus.goljer@gmail.com>
|
||||
;; Maintainer: Matúš Goljer <matus.goljer@gmail.com>
|
||||
;; Version: 1.1.0
|
||||
;; Package-Version: 20210403.1230
|
||||
;; Package-Commit: 7c0ef09d57a80068a11edc74c3568e5ead5cc15a
|
||||
;; Created: 15th July 2017
|
||||
;; Package-requires: ((dash "2.10.0") (f "0.19.0") (dired-hacks-utils "0.0.1"))
|
||||
;; Keywords: files
|
||||
|
||||
;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Often times we find ourselves in a situation where a single file
|
||||
;; or directory is nested in a chain of nested directories with no
|
||||
;; other content. This is sometimes due to various mandatory
|
||||
;; layouts demanded by packaging tools or tools generating these
|
||||
;; deeply-nested "unique" paths to disambiguate architectures or
|
||||
;; versions (but we often use only one anyway). If the user wants
|
||||
;; to access these directories they have to quite needlessly
|
||||
;; drill-down through varying number of "uninteresting" directories
|
||||
;; to get to the content.
|
||||
|
||||
;; This minor mode is in main inspired by how GitHub renders these
|
||||
;; paths: if there is a chain of directories where each one only has
|
||||
;; one child, they are concatenated together and shown on the first
|
||||
;; level in this collapsed form. When the user clicks this
|
||||
;; collapsed directory they are immediately brought to the deepest
|
||||
;; directory with some actual content.
|
||||
|
||||
;; To enable or disable this functionality use `dired-collapse-mode'
|
||||
;; to toggle it for the current dired buffer.
|
||||
|
||||
;; If the deepest directory contains only a single file this file is
|
||||
;; displayed instead of the last directory. This way we can get
|
||||
;; directly to the file itself. This is often helpful with config
|
||||
;; files which are stored in their own directories, for example in
|
||||
;; `~/.config/foo/config' and similar situations.
|
||||
|
||||
;; The files or directories re-inserted in this manner will also
|
||||
;; have updated permissions, file sizes and modification dates so
|
||||
;; they truly correspond to the properties of the file being shown.
|
||||
|
||||
;; The path to the deepest file is dimmed with the `shadow' face so
|
||||
;; that it does not distract but at the same time is still available
|
||||
;; for inspection.
|
||||
|
||||
;; The mode is integrated with `dired-rainbow' so the nested files
|
||||
;; are properly colored according to user's rules.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'dash)
|
||||
(require 'dired)
|
||||
(require 'f)
|
||||
(require 'dired-hacks-utils)
|
||||
|
||||
(defgroup dired-collapse ()
|
||||
"Collapse unique nested paths in dired listing."
|
||||
:group 'dired-hacks
|
||||
:prefix "dired-collapse-")
|
||||
|
||||
(defcustom dired-collapse-remote nil
|
||||
"If non-nil, enable `dired-collapse' in remote (TRAMP) buffers."
|
||||
:type 'boolean
|
||||
:group 'dired-collapse)
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode dired-collapse-mode
|
||||
"Toggle collapsing of unique nested paths in Dired."
|
||||
:group 'dired-collapse
|
||||
:lighter ""
|
||||
(if dired-collapse-mode
|
||||
(progn
|
||||
(add-hook 'dired-after-readin-hook 'dired-collapse 'append 'local)
|
||||
(add-hook 'dired-subtree-after-insert-hook 'dired-collapse 'append 'local)
|
||||
;; collapse the buffer only if it is not empty (= we haven't
|
||||
;; yet read in the current directory)
|
||||
(unless (= (buffer-size) 0)
|
||||
(dired-collapse)))
|
||||
(remove-hook 'dired-after-readin-hook 'dired-collapse 'local)
|
||||
(remove-hook 'dired-subtree-after-insert-hook 'dired-collapse 'local)
|
||||
(revert-buffer)))
|
||||
|
||||
(defun dired-collapse--replace-file (file)
|
||||
"Replace file on the current line with FILE."
|
||||
(delete-region (line-beginning-position) (1+ (line-end-position)))
|
||||
(insert " ")
|
||||
(insert-directory file dired-listing-switches nil nil)
|
||||
(forward-line -1)
|
||||
(dired-align-file (line-beginning-position) (1+ (line-end-position)))
|
||||
(-when-let (replaced-file (dired-utils-get-filename))
|
||||
(when (file-remote-p replaced-file)
|
||||
(while (search-forward (dired-current-directory) (line-end-position) t)
|
||||
(replace-match "")))))
|
||||
|
||||
(defun dired-collapse--create-ov (&optional to-eol)
|
||||
"Create the shadow overlay which marks the collapsed path.
|
||||
|
||||
If TO-EOL is non-nil, extend the overlay over the whole
|
||||
filename (for example when the final directory is empty)."
|
||||
(save-excursion
|
||||
(dired-move-to-filename)
|
||||
(let* ((beg (point))
|
||||
(end (save-excursion
|
||||
(dired-move-to-end-of-filename)
|
||||
(if to-eol
|
||||
(point)
|
||||
(1+ (search-backward "/")))))
|
||||
(ov (make-overlay beg end)))
|
||||
(overlay-put ov 'face 'shadow)
|
||||
ov)))
|
||||
|
||||
(defun dired-collapse ()
|
||||
"Collapse unique nested paths in dired listing."
|
||||
(when (or (not (file-remote-p default-directory)) dired-collapse-remote)
|
||||
(-let* (;; dired-hide-details-mode hides details by assigning a special invisibility text property
|
||||
;; to them, while dired-collapse requires all the details. So we disable invisibility here
|
||||
;; temporarily.
|
||||
(buffer-invisibility-spec nil)
|
||||
(inhibit-read-only t))
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(while (not (eobp))
|
||||
(when (and (looking-at-p dired-re-dir)
|
||||
(not (member (dired-utils-get-filename 'no-dir) (list "." "..")))
|
||||
(not (eolp)))
|
||||
(let ((path (dired-utils-get-filename))
|
||||
files)
|
||||
(while (and (file-directory-p path)
|
||||
(file-accessible-directory-p path)
|
||||
(setq files (f-entries path))
|
||||
(= 1 (length files)))
|
||||
(setq path (car files)))
|
||||
(if (and (not files)
|
||||
(equal path (dired-utils-get-filename)))
|
||||
(dired-collapse--create-ov 'to-eol)
|
||||
(setq path (s-chop-prefix (dired-current-directory) path))
|
||||
(when (string-match-p "/" path)
|
||||
(let ((default-directory (dired-current-directory)))
|
||||
(dired-collapse--replace-file path))
|
||||
(dired-insert-set-properties (line-beginning-position) (line-end-position))
|
||||
(dired-collapse--create-ov (= 0 (length files)))))))
|
||||
(forward-line 1))))))
|
||||
|
||||
(provide 'dired-collapse)
|
||||
;;; dired-collapse.el ends here
|
BIN
code/elpa/dired-collapse-20210403.1230/dired-collapse.elc
Normal file
BIN
code/elpa/dired-collapse-20210403.1230/dired-collapse.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,23 @@
|
|||
;;; dired-hacks-utils-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "dired-hacks-utils" "dired-hacks-utils.el"
|
||||
;;;;;; (0 0 0 0))
|
||||
;;; Generated autoloads from dired-hacks-utils.el
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-hacks-utils" '("dired-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; dired-hacks-utils-autoloads.el ends here
|
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from dired-hacks-utils.el -*- no-byte-compile: t -*-
|
||||
(define-package "dired-hacks-utils" "20201005.2318" "Utilities and helpers for dired-hacks collection" '((dash "2.5.0")) :commit "7c0ef09d57a80068a11edc74c3568e5ead5cc15a" :authors '(("Matúš Goljer" . "matus.goljer@gmail.com")) :maintainer '("Matúš Goljer" . "matus.goljer@gmail.com") :keywords '("files"))
|
275
code/elpa/dired-hacks-utils-20201005.2318/dired-hacks-utils.el
Normal file
275
code/elpa/dired-hacks-utils-20201005.2318/dired-hacks-utils.el
Normal file
|
@ -0,0 +1,275 @@
|
|||
;;; dired-hacks-utils.el --- Utilities and helpers for dired-hacks collection
|
||||
|
||||
;; Copyright (C) 2014-2015 Matúš Goljer
|
||||
|
||||
;; Author: Matúš Goljer <matus.goljer@gmail.com>
|
||||
;; Maintainer: Matúš Goljer <matus.goljer@gmail.com>
|
||||
;; Keywords: files
|
||||
;; Package-Version: 20201005.2318
|
||||
;; Package-Commit: 7c0ef09d57a80068a11edc74c3568e5ead5cc15a
|
||||
;; Version: 0.0.1
|
||||
;; Created: 14th February 2014
|
||||
;; Package-requires: ((dash "2.5.0"))
|
||||
|
||||
;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Utilities and helpers for `dired-hacks' collection of dired
|
||||
;; improvements.
|
||||
|
||||
;; This package also provides these interactive functions:
|
||||
;; * `dired-hacks-next-file' - go to next file, skipping empty and non-file lines
|
||||
;; * `dired-hacks-previous-file' - go to previous file, skipping empty
|
||||
;; and non-file lines
|
||||
;; * `dired-utils-format-information-line-mode' - Format the information
|
||||
;; (summary) line file sizes to be human readable (e.g. 1GB instead of 1048576).
|
||||
|
||||
|
||||
;; See https://github.com/Fuco1/dired-hacks for the entire collection
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'dash)
|
||||
(require 'dired)
|
||||
|
||||
(defgroup dired-hacks ()
|
||||
"Collection of useful dired additions."
|
||||
:group 'dired
|
||||
:prefix "dired-hacks-")
|
||||
|
||||
(defcustom dired-hacks-file-size-formatter 'file-size-human-readable
|
||||
"The function used to format file sizes.
|
||||
|
||||
See `dired-utils-format-file-sizes'."
|
||||
:type 'symbol
|
||||
:group 'dired-hacks)
|
||||
|
||||
(defcustom dired-hacks-datetime-regexp
|
||||
"\\sw\\sw\\sw....\\(?:[0-9][0-9]:[0-9][0-9]\\|.[0-9]\\{4\\}\\)"
|
||||
"A regexp matching the date/time in the dired listing.
|
||||
|
||||
It is used to determine where the filename starts. It should
|
||||
*not* match any characters after the last character of the
|
||||
timestamp. It is assumed that the timestamp is preceded and
|
||||
followed by at least one space character. You should only use
|
||||
shy groups (prefixed with ?:) because the first group is used by
|
||||
the font-lock to determine what portion of the name should be
|
||||
colored."
|
||||
:type 'string
|
||||
:group 'dired-hacks)
|
||||
|
||||
(defalias 'dired-utils--string-trim
|
||||
(if (and (require 'subr-x nil t)
|
||||
(fboundp 'string-trim))
|
||||
#'string-trim
|
||||
(lambda (string)
|
||||
(let ((s string))
|
||||
(when (string-match "\\`[ \t\n\r]+" s)
|
||||
(setq s (replace-match "" t t s)))
|
||||
(when (string-match "[ \t\n\r]+\\'" s)
|
||||
(setq s (replace-match "" t t s)))
|
||||
s)))
|
||||
"Trim STRING of trailing whitespace.
|
||||
|
||||
\(fn STRING)")
|
||||
|
||||
(defun dired-utils-get-filename (&optional localp)
|
||||
"Like `dired-get-filename' but never signal an error.
|
||||
|
||||
Optional arg LOCALP with value `no-dir' means don't include
|
||||
directory name in result."
|
||||
(dired-get-filename localp t))
|
||||
|
||||
(defun dired-utils-get-all-files (&optional localp)
|
||||
"Return all files in this dired buffer as a list.
|
||||
|
||||
LOCALP has same semantics as in `dired-get-filename'."
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(let (r)
|
||||
(while (= 0 (forward-line))
|
||||
(--when-let (dired-utils-get-filename localp)
|
||||
(push it r)))
|
||||
(nreverse r))))
|
||||
|
||||
(defconst dired-utils-file-attributes-keywords
|
||||
'(:isdir :nlinks :uid :gid :atime :mtime :ctime :size :modes :gidchg :inode :devnum)
|
||||
"List of keywords to map with `file-attributes'.")
|
||||
|
||||
(defconst dired-utils-info-keywords
|
||||
`(:name :issym :target ,@dired-utils-file-attributes-keywords)
|
||||
"List of keywords available for `dired-utils-get-info'.")
|
||||
|
||||
(defun dired-utils--get-keyword-info (keyword)
|
||||
"Get file information about KEYWORD."
|
||||
(let ((filename (dired-utils-get-filename)))
|
||||
(cl-case keyword
|
||||
(:name filename)
|
||||
(:isdir (file-directory-p filename))
|
||||
(:issym (and (file-symlink-p filename) t))
|
||||
(:target (file-symlink-p filename))
|
||||
(t
|
||||
(nth (-elem-index keyword dired-utils-file-attributes-keywords)
|
||||
(file-attributes filename))))))
|
||||
|
||||
(defun dired-utils-get-info (&rest keywords)
|
||||
"Query for info about the file at point.
|
||||
|
||||
KEYWORDS is a list of attributes to query.
|
||||
|
||||
When querying for one attribute, its value is returned. When
|
||||
querying for more than one, a list of results is returned.
|
||||
|
||||
The available keywords are listed in
|
||||
`dired-utils-info-keywords'."
|
||||
(let ((attributes (mapcar 'dired-utils--get-keyword-info keywords)))
|
||||
(if (> (length attributes) 1)
|
||||
attributes
|
||||
(car attributes))))
|
||||
|
||||
(defun dired-utils-goto-line (filename)
|
||||
"Go to line describing FILENAME in listing.
|
||||
|
||||
Should be absolute file name matched against
|
||||
`dired-get-filename'."
|
||||
(goto-char (point-min))
|
||||
(let (stop)
|
||||
(while (and (not stop)
|
||||
(= (forward-line) 0))
|
||||
(when (equal filename (dired-utils-get-filename))
|
||||
(setq stop t)
|
||||
(dired-move-to-filename)))
|
||||
stop))
|
||||
|
||||
(defun dired-utils-match-filename-regexp (filename alist)
|
||||
"Match FILENAME against each car in ALIST and return first matched cons.
|
||||
|
||||
Each car in ALIST is a regular expression.
|
||||
|
||||
The matching is done using `string-match-p'."
|
||||
(let (match)
|
||||
(--each-while alist (not match)
|
||||
(when (string-match-p (car it) filename)
|
||||
(setq match it)))
|
||||
match))
|
||||
|
||||
(defun dired-utils-match-filename-extension (filename alist)
|
||||
"Match FILENAME against each car in ALIST and return first matched cons.
|
||||
|
||||
Each car in ALIST is a string representing file extension
|
||||
*without* the delimiting dot."
|
||||
(let (done)
|
||||
(--each-while alist (not done)
|
||||
(when (string-match-p (concat "\\." (regexp-quote (car it)) "\\'") filename)
|
||||
(setq done it)))
|
||||
done))
|
||||
|
||||
(defun dired-utils-format-information-line ()
|
||||
"Format the disk space on the Dired information line."
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(forward-line)
|
||||
(let ((inhibit-read-only t)
|
||||
(limit (line-end-position)))
|
||||
(while (re-search-forward "\\(?:directory\\|available\\) \\(\\<[0-9]+$\\>\\)" nil t)
|
||||
(replace-match
|
||||
(save-match-data
|
||||
(propertize (dired-utils--string-trim
|
||||
(funcall dired-hacks-file-size-formatter
|
||||
(* 1024 (string-to-number (match-string 1))) t))
|
||||
'invisible 'dired-hide-details-information))
|
||||
t nil nil 1)))))
|
||||
|
||||
|
||||
;;; Predicates
|
||||
(defun dired-utils-is-file-p ()
|
||||
"Return non-nil if the line at point is a file or a directory."
|
||||
(dired-utils-get-filename 'no-dir))
|
||||
|
||||
(defun dired-utils-is-dir-p ()
|
||||
"Return non-nil if the line at point is a directory."
|
||||
(--when-let (dired-utils-get-filename)
|
||||
(file-directory-p it)))
|
||||
|
||||
|
||||
;;; Interactive
|
||||
;; TODO: add wrap-around option
|
||||
(defun dired-hacks-next-file (&optional arg)
|
||||
"Move point to the next file.
|
||||
|
||||
Optional prefix ARG says how many lines to move; default is one
|
||||
line."
|
||||
(interactive "p")
|
||||
(unless arg (setq arg 1))
|
||||
(if (< arg 0)
|
||||
(dired-hacks-previous-file (- arg))
|
||||
(--dotimes arg
|
||||
(forward-line)
|
||||
(while (and (or (not (dired-utils-is-file-p))
|
||||
(get-text-property (point) 'invisible))
|
||||
(= (forward-line) 0))))
|
||||
(if (not (= (point) (point-max)))
|
||||
(dired-move-to-filename)
|
||||
(forward-line -1)
|
||||
(dired-move-to-filename)
|
||||
nil)))
|
||||
|
||||
(defun dired-hacks-previous-file (&optional arg)
|
||||
"Move point to the previous file.
|
||||
|
||||
Optional prefix ARG says how many lines to move; default is one
|
||||
line."
|
||||
(interactive "p")
|
||||
(unless arg (setq arg 1))
|
||||
(if (< arg 0)
|
||||
(dired-hacks-next-file (- arg))
|
||||
(--dotimes arg
|
||||
(forward-line -1)
|
||||
(while (and (or (not (dired-utils-is-file-p))
|
||||
(get-text-property (point) 'invisible))
|
||||
(= (forward-line -1) 0))))
|
||||
(if (not (= (point) (point-min)))
|
||||
(dired-move-to-filename)
|
||||
(dired-hacks-next-file)
|
||||
nil)))
|
||||
|
||||
(defun dired-hacks-compare-files (file-a file-b)
|
||||
"Test if two files FILE-A and FILE-B are the (probably) the same."
|
||||
(interactive (let ((other-dir (dired-dwim-target-directory)))
|
||||
(list (read-file-name "File A: " default-directory (car (dired-get-marked-files)) t)
|
||||
(read-file-name "File B: " other-dir (with-current-buffer (cdr (assoc other-dir dired-buffers))
|
||||
(car (dired-get-marked-files))) t))))
|
||||
(let ((md5-a (with-temp-buffer
|
||||
(shell-command (format "md5sum %s" file-a) (current-buffer))
|
||||
(buffer-string)))
|
||||
(md5-b (with-temp-buffer
|
||||
(shell-command (format "md5sum %s" file-b) (current-buffer))
|
||||
(buffer-string))))
|
||||
(message "%s%sFiles are %s." md5-a md5-b
|
||||
(if (equal (car (split-string md5-a))
|
||||
(car (split-string md5-b)))
|
||||
"probably the same" "different"))))
|
||||
|
||||
(define-minor-mode dired-utils-format-information-line-mode
|
||||
"Toggle formatting of disk space in the Dired information line."
|
||||
:group 'dired-utils
|
||||
:lighter ""
|
||||
(if dired-utils-format-information-line-mode
|
||||
(add-hook 'dired-after-readin-hook #'dired-utils-format-information-line)
|
||||
(remove-hook 'dired-after-readin-hook #'dired-utils-format-information-line)))
|
||||
|
||||
(provide 'dired-hacks-utils)
|
||||
|
||||
;;; dired-hacks-utils.el ends here
|
BIN
code/elpa/dired-hacks-utils-20201005.2318/dired-hacks-utils.elc
Normal file
BIN
code/elpa/dired-hacks-utils-20201005.2318/dired-hacks-utils.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,22 @@
|
|||
;;; dired-rainbow-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "dired-rainbow" "dired-rainbow.el" (0 0 0 0))
|
||||
;;; Generated autoloads from dired-rainbow.el
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-rainbow" '("dired-rainbow-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; dired-rainbow-autoloads.el ends here
|
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from dired-rainbow.el -*- no-byte-compile: t -*-
|
||||
(define-package "dired-rainbow" "20190722.1109" "Extended file highlighting according to its type" '((dash "2.5.0") (dired-hacks-utils "0.0.1")) :commit "7c0ef09d57a80068a11edc74c3568e5ead5cc15a" :authors '(("Matus Goljer" . "matus.goljer@gmail.com")) :maintainer '("Matus Goljer" . "matus.goljer@gmail.com") :keywords '("files"))
|
181
code/elpa/dired-rainbow-20190722.1109/dired-rainbow.el
Normal file
181
code/elpa/dired-rainbow-20190722.1109/dired-rainbow.el
Normal file
|
@ -0,0 +1,181 @@
|
|||
;;; dired-rainbow.el --- Extended file highlighting according to its type
|
||||
|
||||
;; Copyright (C) 2014-2017 Matus Goljer
|
||||
|
||||
;; Author: Matus Goljer <matus.goljer@gmail.com>
|
||||
;; Maintainer: Matus Goljer <matus.goljer@gmail.com>
|
||||
;; Keywords: files
|
||||
;; Package-Commit: 7c0ef09d57a80068a11edc74c3568e5ead5cc15a
|
||||
;; Package-Version: 20190722.1109
|
||||
;; Package-X-Original-Version: 20170922.817
|
||||
;; Version: 0.0.3
|
||||
;; Created: 16th February 2014
|
||||
;; Package-requires: ((dash "2.5.0") (dired-hacks-utils "0.0.1"))
|
||||
|
||||
;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This package adds more customizable highlighting for files in dired
|
||||
;; listings. The group `dired-faces' provides only nine faces and
|
||||
;; isn't very fine-grained.
|
||||
;;
|
||||
;; The definitions are added by several macros, currently available
|
||||
;; are:
|
||||
;;
|
||||
;; * `dired-rainbow-define` - add face by file extension
|
||||
;; * `dired-rainbow-define-chmod` - add face by file permissions
|
||||
;;
|
||||
;; You can display their documentation by calling (substituting the
|
||||
;; desired macro name):
|
||||
;;
|
||||
;; M-x describe-function RET dired-rainbow-define RET
|
||||
;;
|
||||
;; Here are some example uses:
|
||||
;;
|
||||
;; (defconst my-dired-media-files-extensions
|
||||
;; '("mp3" "mp4" "MP3" "MP4" "avi" "mpg" "flv" "ogg")
|
||||
;; "Media files.")
|
||||
;;
|
||||
;; (dired-rainbow-define html "#4e9a06" ("htm" "html" "xhtml"))
|
||||
;; (dired-rainbow-define media "#ce5c00" my-dired-media-files-extensions)
|
||||
;;
|
||||
;; ; boring regexp due to lack of imagination
|
||||
;; (dired-rainbow-define log (:inherit default
|
||||
;; :italic t) ".*\\.log")
|
||||
;;
|
||||
;; ; highlight executable files, but not directories
|
||||
;; (dired-rainbow-define-chmod executable-unix "Green" "-.*x.*")
|
||||
;;
|
||||
;; See https://github.com/Fuco1/dired-hacks for the entire collection.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'dired-hacks-utils)
|
||||
(require 'dash)
|
||||
|
||||
(defgroup dired-rainbow ()
|
||||
"Extended file highlighting according to its type."
|
||||
:group 'dired-hacks
|
||||
:prefix "dired-rainbow-")
|
||||
|
||||
(defvar dired-rainbow-ext-to-face nil
|
||||
"An alist mapping extension groups to face and compiled regexp.
|
||||
|
||||
This alist is constructed in `dired-rainbow-define' for the case
|
||||
when the user wants to reuse the associations outside of dired.")
|
||||
|
||||
(defun dired-rainbow--get-face (face-props)
|
||||
"Return face specification according to FACE-PROPS.
|
||||
|
||||
See `dired-rainbow-define'."
|
||||
(cond
|
||||
((stringp face-props)
|
||||
`(:foreground ,face-props))
|
||||
((symbolp face-props)
|
||||
`(:inherit ,face-props))
|
||||
(t face-props)))
|
||||
|
||||
(defmacro dired-rainbow-define (symbol face-props extensions &optional how)
|
||||
"Define a custom dired face highlighting files by extension.
|
||||
|
||||
SYMBOL is the identifier of the face. The macro will define a face named
|
||||
|
||||
dired-rainbow-SYMBOL-face.
|
||||
|
||||
FACE-PROPS is a string, a list or a symbol. If a string, it is
|
||||
assumed to be either a color name or a hexadecimal code (#......)
|
||||
describing a color. If a list, it is assumed to be a property
|
||||
list describing the face. See `defface' for list of possible
|
||||
attributes. If a symbol it is taken as the name of an existing
|
||||
face which is used.
|
||||
|
||||
EXTENSIONS is either a list or a symbol evaluating to a list of
|
||||
extensions that should be highlighted with this face. Note that
|
||||
if you specify a symbol, its value *must* be known during
|
||||
compilation and must be defined before this macro is processed.
|
||||
|
||||
Additionally, EXTENSIONS can be a single string or a symbol
|
||||
evaluating to a string that is interpreted as a regexp matching
|
||||
the entire file name.
|
||||
|
||||
HOW is a parameter that is passed directly to `font-lock-add-keywords'
|
||||
to control the order."
|
||||
(declare (debug (symbolp [&or stringp listp symbolp] [&or symbolp listp stringp])))
|
||||
(let* ((matcher (if (or (listp extensions)
|
||||
(stringp extensions))
|
||||
extensions
|
||||
(symbol-value extensions)))
|
||||
(regexp (concat
|
||||
"^[^!].[^d].*[ ]"
|
||||
dired-hacks-datetime-regexp
|
||||
"[ ]\\("
|
||||
(if (listp matcher)
|
||||
(concat ".*\\." (regexp-opt matcher))
|
||||
matcher)
|
||||
"\\)$"))
|
||||
(face-name (intern (concat "dired-rainbow-" (symbol-name symbol) "-face"))))
|
||||
`(progn
|
||||
(defface ,face-name
|
||||
'((t ,(dired-rainbow--get-face face-props)))
|
||||
,(concat "dired-rainbow face matching " (symbol-name symbol) " files.")
|
||||
:group 'dired-rainbow)
|
||||
(font-lock-add-keywords 'dired-mode '((,regexp 1 ',face-name prepend)) ,how)
|
||||
(font-lock-add-keywords 'wdired-mode '((,regexp 1 ',face-name prepend)) ,how)
|
||||
,(if (listp matcher) `(push
|
||||
'(,matcher ,face-name ,(concat "\\." (regexp-opt matcher)))
|
||||
dired-rainbow-ext-to-face)))))
|
||||
|
||||
(defmacro dired-rainbow-define-chmod (symbol face-props chmod &optional how)
|
||||
"Define a custom dired face highlighting files by chmod permissions.
|
||||
|
||||
SYMBOL is the identifier of the face. The macro will define a face named
|
||||
|
||||
dired-rainbow-SYMBOL-face.
|
||||
|
||||
FACE-PROPS is a string, a list or a symbol. If a string, it is
|
||||
assumed to be either a color name or a hexadecimal code (#......)
|
||||
describing a color. If a list, it is assumed to be a property
|
||||
list describing the face. See `defface' for list of possible
|
||||
attributes. If a symbol it is taken as the name of an existing
|
||||
face which is used.
|
||||
|
||||
CHMOD is a regexp matching \"ls -l\" style permissions string.
|
||||
For example, the pattern
|
||||
|
||||
\"-.*x.*\"
|
||||
|
||||
matches any file with executable flag set for user, group or everyone.
|
||||
|
||||
HOW is a parameter that is passed directly to `font-lock-add-keywords'
|
||||
to control the order."
|
||||
(declare (debug (symbolp [&or stringp listp symbolp] stringp)))
|
||||
(let* ((regexp (concat
|
||||
"^[^!]."
|
||||
chmod
|
||||
".*[ ]"
|
||||
dired-hacks-datetime-regexp
|
||||
"[ ]\\(.*?\\)$"))
|
||||
(face-name (intern (concat "dired-rainbow-" (symbol-name symbol) "-face"))))
|
||||
`(progn
|
||||
(defface ,face-name
|
||||
'((t ,(dired-rainbow--get-face face-props)))
|
||||
,(concat "dired-rainbow face matching " (symbol-name symbol) " files.")
|
||||
:group 'dired-rainbow)
|
||||
(font-lock-add-keywords 'dired-mode '((,regexp 1 ',face-name prepend)) ,how)
|
||||
(font-lock-add-keywords 'wdired-mode '((,regexp 1 ',face-name prepend)) ,how))))
|
||||
|
||||
(provide 'dired-rainbow)
|
||||
|
||||
;;; dired-rainbow.el ends here
|
BIN
code/elpa/dired-rainbow-20190722.1109/dired-rainbow.elc
Normal file
BIN
code/elpa/dired-rainbow-20190722.1109/dired-rainbow.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,73 @@
|
|||
;;; dired-ranger-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "dired-ranger" "dired-ranger.el" (0 0 0 0))
|
||||
;;; Generated autoloads from dired-ranger.el
|
||||
|
||||
(autoload 'dired-ranger-copy "dired-ranger" "\
|
||||
Place the marked items in the copy ring.
|
||||
|
||||
With non-nil prefix argument, add the marked items to the current
|
||||
selection. This allows you to gather files from multiple dired
|
||||
buffers for a single paste.
|
||||
|
||||
\(fn ARG)" t nil)
|
||||
|
||||
(autoload 'dired-ranger-paste "dired-ranger" "\
|
||||
Copy the items from copy ring to current directory.
|
||||
|
||||
With raw prefix argument \\[universal-argument], do not remove
|
||||
the selection from the stack so it can be copied again.
|
||||
|
||||
With numeric prefix argument, copy the n-th selection from the
|
||||
copy ring.
|
||||
|
||||
\(fn ARG)" t nil)
|
||||
|
||||
(autoload 'dired-ranger-move "dired-ranger" "\
|
||||
Move the items from copy ring to current directory.
|
||||
|
||||
This behaves like `dired-ranger-paste' but moves the files
|
||||
instead of copying them.
|
||||
|
||||
\(fn ARG)" t nil)
|
||||
|
||||
(autoload 'dired-ranger-bookmark "dired-ranger" "\
|
||||
Bookmark current dired buffer.
|
||||
|
||||
CHAR is a single character (a-zA-Z0-9) representing the bookmark.
|
||||
Reusing a bookmark replaces the content. These bookmarks are not
|
||||
persistent, they are used for quick jumping back and forth
|
||||
between currently used directories.
|
||||
|
||||
\(fn CHAR)" t nil)
|
||||
|
||||
(autoload 'dired-ranger-bookmark-visit "dired-ranger" "\
|
||||
Visit bookmark CHAR.
|
||||
|
||||
If the associated dired buffer was killed, we try to reopen it
|
||||
according to the setting `dired-ranger-bookmark-reopen'.
|
||||
|
||||
The special bookmark `dired-ranger-bookmark-LRU' always jumps to
|
||||
the least recently visited dired buffer.
|
||||
|
||||
See also `dired-ranger-bookmark'.
|
||||
|
||||
\(fn CHAR)" t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-ranger" '("dired-ranger-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; dired-ranger-autoloads.el ends here
|
2
code/elpa/dired-ranger-20180401.2206/dired-ranger-pkg.el
Normal file
2
code/elpa/dired-ranger-20180401.2206/dired-ranger-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from dired-ranger.el -*- no-byte-compile: t -*-
|
||||
(define-package "dired-ranger" "20180401.2206" "Implementation of useful ranger features for dired" '((dash "2.7.0") (dired-hacks-utils "0.0.1")) :commit "7c0ef09d57a80068a11edc74c3568e5ead5cc15a" :authors '(("Matúš Goljer" . "matus.goljer@gmail.com")) :maintainer '("Matúš Goljer" . "matus.goljer@gmail.com") :keywords '("files"))
|
299
code/elpa/dired-ranger-20180401.2206/dired-ranger.el
Normal file
299
code/elpa/dired-ranger-20180401.2206/dired-ranger.el
Normal file
|
@ -0,0 +1,299 @@
|
|||
;;; dired-ranger.el --- Implementation of useful ranger features for dired
|
||||
|
||||
;; Copyright (C) 2014-2015 Matúš Goljer
|
||||
|
||||
;; Author: Matúš Goljer <matus.goljer@gmail.com>
|
||||
;; Maintainer: Matúš Goljer <matus.goljer@gmail.com>
|
||||
;; Version: 0.0.1
|
||||
;; Package-Version: 20180401.2206
|
||||
;; Package-Commit: 7c0ef09d57a80068a11edc74c3568e5ead5cc15a
|
||||
;; Created: 17th June 2014
|
||||
;; Package-requires: ((dash "2.7.0") (dired-hacks-utils "0.0.1"))
|
||||
;; Keywords: files
|
||||
|
||||
;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This package implements useful features present in the
|
||||
;; [ranger](http://ranger.github.io/) file manager which are missing
|
||||
;; in dired.
|
||||
|
||||
;; Multi-stage copy/pasting of files
|
||||
;; ---------------------------------
|
||||
|
||||
;; A feature present in most orthodox file managers is a "two-stage"
|
||||
;; copy/paste process. Roughly, the user first selects some files,
|
||||
;; "copies" them into a clipboard and then pastes them to the target
|
||||
;; location. This workflow is missing in dired.
|
||||
|
||||
;; In dired, user first marks the files, then issues the
|
||||
;; `dired-do-copy' command which prompts for the destination. The
|
||||
;; files are then copied there. The `dired-dwim-target' option makes
|
||||
;; this a bit friendlier---if two dired windows are opened, the other
|
||||
;; one is automatically the default target.
|
||||
|
||||
;; With the multi-stage operations, you can gather files from
|
||||
;; *multiple* dired buffers into a single "clipboard", then copy or
|
||||
;; move all of them to the target location. Another huge advantage is
|
||||
;; that if the target dired buffer is already opened, switching to it
|
||||
;; via ido or ibuffer is often faster than selecting the path.
|
||||
|
||||
;; Call `dired-ranger-copy' to add marked files (or the file under
|
||||
;; point if no files are marked) to the "clipboard". With non-nil
|
||||
;; prefix argument, add the marked files to the current clipboard.
|
||||
|
||||
;; Past clipboards are stored in `dired-ranger-copy-ring' so you can
|
||||
;; repeat the past pastes.
|
||||
|
||||
;; Call `dired-ranger-paste' or `dired-ranger-move' to copy or move
|
||||
;; the files in the current clipboard to the current dired buffer.
|
||||
;; With raw prefix argument (usually C-u), the clipboard is not
|
||||
;; cleared, so you can repeat the copy operation in another dired
|
||||
;; buffer.
|
||||
|
||||
;; Bookmarks
|
||||
;; ---------
|
||||
|
||||
;; Use `dired-ranger-bookmark' to bookmark current dired buffer. You
|
||||
;; can later quickly revisit it by calling
|
||||
;; `dired-ranger-bookmark-visit'.
|
||||
|
||||
;; A bookmark name is any single character, letter, digit or a symbol.
|
||||
|
||||
;; A special bookmark with name `dired-ranger-bookmark-LRU' represents
|
||||
;; the least recently used dired buffer. Its default value is `. If
|
||||
;; you bind `dired-ranger-bookmark-visit' to the same keybinding,
|
||||
;; hitting `` will instantly bring you to the previously used dired
|
||||
;; buffer. This can be used to toggle between two dired buffers in a
|
||||
;; very fast way.
|
||||
|
||||
;; These bookmarks are not persistent. If you want persistent
|
||||
;; bookmarks use the bookmarks provided by emacs, see (info "(emacs)
|
||||
;; Bookmarks").
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'dired-hacks-utils)
|
||||
(require 'dash)
|
||||
(require 'ring)
|
||||
|
||||
(defgroup dired-ranger ()
|
||||
"Implementation of useful ranger features for dired."
|
||||
:group 'dired-hacks
|
||||
:prefix "dired-ranger-")
|
||||
|
||||
|
||||
;; multi-stage copy/paste operations
|
||||
(defcustom dired-ranger-copy-ring-size 10
|
||||
"Specifies how many filesets for copy/paste operations should be stored."
|
||||
:type 'integer
|
||||
:group 'dired-ranger)
|
||||
|
||||
(defvar dired-ranger-copy-ring (make-ring dired-ranger-copy-ring-size))
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-ranger-copy (arg)
|
||||
"Place the marked items in the copy ring.
|
||||
|
||||
With non-nil prefix argument, add the marked items to the current
|
||||
selection. This allows you to gather files from multiple dired
|
||||
buffers for a single paste."
|
||||
(interactive "P")
|
||||
;; TODO: add dired+ `dired-get-marked-files' support?
|
||||
(let ((marked (dired-get-marked-files)))
|
||||
(if (or (not arg)
|
||||
(ring-empty-p dired-ranger-copy-ring))
|
||||
(progn
|
||||
(ring-insert
|
||||
dired-ranger-copy-ring
|
||||
(cons (list (current-buffer)) marked))
|
||||
;; TODO: abstract the message/plural detection somewhere
|
||||
;; (e.g. give it a verb and number to produce the correct
|
||||
;; string.)
|
||||
(message (format "Copied %d item%s into copy ring."
|
||||
(length marked)
|
||||
(if (> (length marked) 1) "s" ""))))
|
||||
(let ((current (ring-remove dired-ranger-copy-ring 0)))
|
||||
(ring-insert
|
||||
dired-ranger-copy-ring
|
||||
(cons (-distinct (cons (current-buffer) (car current)))
|
||||
(-distinct (-concat (dired-get-marked-files) (cdr current)))))
|
||||
(message (format "Added %d item%s into copy ring."
|
||||
(length marked)
|
||||
(if (> (length marked) 1) "s" "")))))))
|
||||
|
||||
(defun dired-ranger--revert-target (char target-directory files)
|
||||
"Revert the target buffer and mark the new files.
|
||||
|
||||
CHAR is the temporary value for `dired-marker-char'.
|
||||
|
||||
TARGET-DIRECTORY is the current dired directory.
|
||||
|
||||
FILES is the list of files (from the `dired-ranger-copy-ring') we
|
||||
operated on."
|
||||
(let ((current-file (dired-utils-get-filename)))
|
||||
(revert-buffer)
|
||||
(let ((dired-marker-char char))
|
||||
(--each (-map 'file-name-nondirectory files)
|
||||
(dired-utils-goto-line (concat target-directory it))
|
||||
(dired-mark 1)))
|
||||
(dired-utils-goto-line current-file)))
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-ranger-paste (arg)
|
||||
"Copy the items from copy ring to current directory.
|
||||
|
||||
With raw prefix argument \\[universal-argument], do not remove
|
||||
the selection from the stack so it can be copied again.
|
||||
|
||||
With numeric prefix argument, copy the n-th selection from the
|
||||
copy ring."
|
||||
(interactive "P")
|
||||
(let* ((index (if (numberp arg) arg 0))
|
||||
(data (ring-ref dired-ranger-copy-ring index))
|
||||
(files (cdr data))
|
||||
(target-directory (dired-current-directory))
|
||||
(copied-files 0))
|
||||
(--each files (when (file-exists-p it)
|
||||
(if (file-directory-p it)
|
||||
(copy-directory it target-directory)
|
||||
(condition-case err
|
||||
(copy-file it target-directory 0)
|
||||
(file-already-exists nil)))
|
||||
(cl-incf copied-files)))
|
||||
(dired-ranger--revert-target ?P target-directory files)
|
||||
(unless arg (ring-remove dired-ranger-copy-ring 0))
|
||||
(message (format "Pasted %d/%d item%s from copy ring."
|
||||
copied-files
|
||||
(length files)
|
||||
(if (> (length files) 1) "s" "")))))
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-ranger-move (arg)
|
||||
"Move the items from copy ring to current directory.
|
||||
|
||||
This behaves like `dired-ranger-paste' but moves the files
|
||||
instead of copying them."
|
||||
(interactive "P")
|
||||
(let* ((index (if (numberp arg) arg 0))
|
||||
(data (ring-ref dired-ranger-copy-ring index))
|
||||
(buffers (car data))
|
||||
(files (cdr data))
|
||||
(target-directory (dired-current-directory))
|
||||
(copied-files 0))
|
||||
(--each files (when (file-exists-p it)
|
||||
(condition-case err
|
||||
(rename-file it target-directory 0)
|
||||
(file-already-exists nil))
|
||||
(cl-incf copied-files)))
|
||||
(dired-ranger--revert-target ?M target-directory files)
|
||||
(--each buffers
|
||||
(when (buffer-live-p it)
|
||||
(with-current-buffer it (revert-buffer))))
|
||||
(unless arg (ring-remove dired-ranger-copy-ring 0))
|
||||
(message (format "Moved %d/%d item%s from copy ring."
|
||||
copied-files
|
||||
(length files)
|
||||
(if (> (length files) 1) "s" "")))))
|
||||
|
||||
|
||||
;; bookmarks
|
||||
(defcustom dired-ranger-bookmark-reopen 'ask
|
||||
"Should we reopen closed dired buffer when visiting a bookmark?
|
||||
|
||||
This does only correctly reopen regular dired buffers listing one
|
||||
directory. Special dired buffers like the output of `find-dired'
|
||||
or `ag-dired', virtual dired buffers and subdirectories can not
|
||||
be recreated.
|
||||
|
||||
The value 'never means never reopen the directory.
|
||||
|
||||
The value 'always means always reopen the directory.
|
||||
|
||||
The value 'ask will ask if we should reopen or not. Reopening a
|
||||
dired buffer for a directory that is already opened in dired will
|
||||
bring that up, which might be unexpected as that directory might
|
||||
come from a non-standard source (i.e. not be file-system
|
||||
backed)."
|
||||
:type '(radio
|
||||
(const :tag "Never reopen automatically." never)
|
||||
(const :tag "Always reopen automatically." always)
|
||||
(const :tag "Reopen automatically only in standard dired buffers, ask otherwise." ask))
|
||||
:group 'dired-ranger)
|
||||
|
||||
(defcustom dired-ranger-bookmark-LRU ?`
|
||||
"Bookmark representing the least recently used/visited dired buffer.
|
||||
|
||||
If a dired buffer is currently active, select the one visited
|
||||
before. If a non-dired buffer is active, visit the least
|
||||
recently visited dired buffer."
|
||||
:type 'char
|
||||
:group 'dired-ranger)
|
||||
|
||||
(defvar dired-ranger-bookmarks nil
|
||||
"An alist mapping bookmarks to dired buffers and locations.")
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-ranger-bookmark (char)
|
||||
"Bookmark current dired buffer.
|
||||
|
||||
CHAR is a single character (a-zA-Z0-9) representing the bookmark.
|
||||
Reusing a bookmark replaces the content. These bookmarks are not
|
||||
persistent, they are used for quick jumping back and forth
|
||||
between currently used directories."
|
||||
(interactive "cBookmark name: ")
|
||||
(let ((dir (file-truename default-directory)))
|
||||
(-if-let (value (cdr (assoc char dired-ranger-bookmarks)))
|
||||
(setf (cdr (assoc char dired-ranger-bookmarks)) (cons dir (current-buffer)))
|
||||
(push (-cons* char dir (current-buffer)) dired-ranger-bookmarks))
|
||||
(message "Bookmarked directory %s as `%c'" dir char)))
|
||||
|
||||
;;;###autoload
|
||||
(defun dired-ranger-bookmark-visit (char)
|
||||
"Visit bookmark CHAR.
|
||||
|
||||
If the associated dired buffer was killed, we try to reopen it
|
||||
according to the setting `dired-ranger-bookmark-reopen'.
|
||||
|
||||
The special bookmark `dired-ranger-bookmark-LRU' always jumps to
|
||||
the least recently visited dired buffer.
|
||||
|
||||
See also `dired-ranger-bookmark'."
|
||||
(interactive "cBookmark name: ")
|
||||
(if (eq char dired-ranger-bookmark-LRU)
|
||||
(progn
|
||||
(let ((buffers (buffer-list)))
|
||||
(when (eq (with-current-buffer (car buffers) major-mode) 'dired-mode)
|
||||
(pop buffers))
|
||||
(switch-to-buffer (--first (eq (with-current-buffer it major-mode) 'dired-mode) buffers))))
|
||||
(-if-let* ((value (cdr (assoc char dired-ranger-bookmarks)))
|
||||
(dir (car value))
|
||||
(buffer (cdr value)))
|
||||
(if (buffer-live-p buffer)
|
||||
(switch-to-buffer buffer)
|
||||
(when
|
||||
;; TODO: abstract this never/always/ask pattern. It is
|
||||
;; also used in filter.
|
||||
(cond
|
||||
((eq dired-ranger-bookmark-reopen 'never) nil)
|
||||
((eq dired-ranger-bookmark-reopen 'always) t)
|
||||
((eq dired-ranger-bookmark-reopen 'ask)
|
||||
(y-or-n-p (format "The dired buffer referenced by this bookmark does not exist. Should we try to reopen `%s'?" dir))))
|
||||
(find-file dir)
|
||||
(setf (cdr (assoc char dired-ranger-bookmarks)) (cons dir (current-buffer)))))
|
||||
(message "Bookmark `%c' does not exist." char))))
|
||||
|
||||
(provide 'dired-ranger)
|
||||
;;; dired-ranger.el ends here
|
BIN
code/elpa/dired-ranger-20180401.2206/dired-ranger.elc
Normal file
BIN
code/elpa/dired-ranger-20180401.2206/dired-ranger.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,73 @@
|
|||
;;; dired-single-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "dired-single" "dired-single.el" (0 0 0 0))
|
||||
;;; Generated autoloads from dired-single.el
|
||||
|
||||
(autoload 'dired-single-buffer "dired-single" "\
|
||||
Visit selected directory in current buffer.
|
||||
|
||||
Visits the selected directory in the current buffer, replacing the
|
||||
current contents with the contents of the new directory. This doesn't
|
||||
prevent you from having more than one dired buffer. The main difference
|
||||
is that a given dired buffer will not spawn off a new buffer every time
|
||||
a new directory is visited.
|
||||
|
||||
If the variable `dired-single-use-magic-buffer' is non-nil, and the current
|
||||
buffer's name is the same as that specified by the variable
|
||||
`dired-single-magic-buffer-name', then the new directory's buffer will retain
|
||||
that same name (i.e. not only will dired only use a single buffer, but
|
||||
its name will not change every time a new directory is entered).
|
||||
|
||||
Optional argument DEFAULT-DIRNAME specifies the directory to visit; if not
|
||||
specified, the directory or file on the current line is used (assuming it's
|
||||
a dired buffer). If the current line represents a file, the file is visited
|
||||
in another window.
|
||||
|
||||
\(fn &optional DEFAULT-DIRNAME)" t nil)
|
||||
|
||||
(autoload 'dired-single-buffer-mouse "dired-single" "\
|
||||
Mouse-initiated version of `dired-single-buffer' (which see).
|
||||
|
||||
Argument CLICK is the mouse-click event.
|
||||
|
||||
\(fn CLICK)" t nil)
|
||||
|
||||
(autoload 'dired-single-magic-buffer "dired-single" "\
|
||||
Switch to buffer whose name is the value of `dired-single-magic-buffer-name'.
|
||||
|
||||
If no such buffer exists, launch dired in a new buffer and rename that buffer
|
||||
to the value of `dired-single-magic-buffer-name'. If the current buffer is the
|
||||
magic buffer, it will prompt for a new directory to visit.
|
||||
|
||||
Optional argument DEFAULT-DIRNAME specifies the directory to visit (defaults to
|
||||
the currently displayed directory).
|
||||
|
||||
\(fn &optional DEFAULT-DIRNAME)" t nil)
|
||||
|
||||
(autoload 'dired-single-toggle-buffer-name "dired-single" "\
|
||||
Toggle between the 'magic' buffer name and the 'real' dired buffer name.
|
||||
|
||||
Will also seek to uniquify the 'real' buffer name." t nil)
|
||||
|
||||
(autoload 'dired-single-up-directory "dired-single" "\
|
||||
Like `dired-up-directory' but with `dired-single-buffer'.
|
||||
|
||||
\(fn &optional OTHER-WINDOW)" t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dired-single" '("dired-single-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; dired-single-autoloads.el ends here
|
2
code/elpa/dired-single-20211101.2319/dired-single-pkg.el
Normal file
2
code/elpa/dired-single-20211101.2319/dired-single-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from dired-single.el -*- no-byte-compile: t -*-
|
||||
(define-package "dired-single" "20211101.2319" "Reuse the current dired buffer to visit a directory" 'nil :commit "b254f9b7bfc96a5eab5760a56811f2872d2c590a" :keywords '("dired" "reuse" "buffer") :url "https://github.com/crocket/dired-single")
|
215
code/elpa/dired-single-20211101.2319/dired-single.el
Normal file
215
code/elpa/dired-single-20211101.2319/dired-single.el
Normal file
|
@ -0,0 +1,215 @@
|
|||
;;; dired-single.el --- Reuse the current dired buffer to visit a directory
|
||||
|
||||
;; Version: 0.3.0
|
||||
;; Package-Version: 20211101.2319
|
||||
;; Package-Commit: b254f9b7bfc96a5eab5760a56811f2872d2c590a
|
||||
;; Keywords: dired, reuse, buffer
|
||||
;; URL: https://github.com/crocket/dired-single
|
||||
;; License: public-domain
|
||||
|
||||
;;; Code:
|
||||
(eval-when-compile
|
||||
(defvar byte-compile-dynamic nil) ; silence the old byte-compiler
|
||||
(set (make-local-variable 'byte-compile-dynamic) t))
|
||||
|
||||
(eval-and-compile
|
||||
(require 'cl-lib)
|
||||
(require 'dired)
|
||||
(autoload 'dired-get-filename "dired"))
|
||||
|
||||
;;; **************************************************************************
|
||||
;;; ***** customization routines
|
||||
;;; **************************************************************************
|
||||
(defgroup dired-single nil
|
||||
"dired-single package customization"
|
||||
:group 'tools)
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
(defun dired-single-customize ()
|
||||
"Customization of the group `dired-single'."
|
||||
(interactive)
|
||||
(customize-group "dired-single"))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
(defcustom dired-single-use-magic-buffer t
|
||||
"Boolean that indicates the use of a single dired buffer name.
|
||||
|
||||
It is used to determine if the dired-single functions should look for and
|
||||
retain a specific buffer name. The buffer name to look for is specified
|
||||
with `dired-single-magic-buffer-name'."
|
||||
:group 'dired-single
|
||||
:type 'boolean)
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
(defcustom dired-single-magic-buffer-name "*dired*"
|
||||
"Name of buffer to use if `dired-single-use-magic-buffer' is true.
|
||||
|
||||
Once a dired buffer has this name, it will always keep this name (unless it's
|
||||
explicitly renamed by you)."
|
||||
:group 'dired-single
|
||||
:type 'string)
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
(defcustom dired-single-load-hook nil
|
||||
"Hook to run when package is loaded."
|
||||
:type 'hook
|
||||
:group 'dired-single)
|
||||
|
||||
;;; **************************************************************************
|
||||
;;; ***** version related routines
|
||||
;;; **************************************************************************
|
||||
(defconst dired-single-version
|
||||
"$Revision: 1.7 $"
|
||||
"Version number for dired-single package.")
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
(defun dired-single-version-number ()
|
||||
"Return dired-single version number."
|
||||
(string-match "[0123456789.]+" dired-single-version)
|
||||
(match-string 0 dired-single-version))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
(defun dired-single-display-version ()
|
||||
"Display dired-single version."
|
||||
(interactive)
|
||||
(message "dired-single version <%s>." (dired-single-version-number)))
|
||||
|
||||
;;; **************************************************************************
|
||||
;;; ***** interactive functions
|
||||
;;; **************************************************************************
|
||||
;;;###autoload
|
||||
(defun dired-single-buffer (&optional default-dirname)
|
||||
"Visit selected directory in current buffer.
|
||||
|
||||
Visits the selected directory in the current buffer, replacing the
|
||||
current contents with the contents of the new directory. This doesn't
|
||||
prevent you from having more than one dired buffer. The main difference
|
||||
is that a given dired buffer will not spawn off a new buffer every time
|
||||
a new directory is visited.
|
||||
|
||||
If the variable `dired-single-use-magic-buffer' is non-nil, and the current
|
||||
buffer's name is the same as that specified by the variable
|
||||
`dired-single-magic-buffer-name', then the new directory's buffer will retain
|
||||
that same name (i.e. not only will dired only use a single buffer, but
|
||||
its name will not change every time a new directory is entered).
|
||||
|
||||
Optional argument DEFAULT-DIRNAME specifies the directory to visit; if not
|
||||
specified, the directory or file on the current line is used (assuming it's
|
||||
a dired buffer). If the current line represents a file, the file is visited
|
||||
in another window."
|
||||
(interactive)
|
||||
;; use arg passed in or find name of current line
|
||||
(let ((name (or default-dirname (dired-get-filename nil t))))
|
||||
(save-excursion
|
||||
(save-match-data
|
||||
;; See if the selection is a directory or not.
|
||||
(end-of-line)
|
||||
(let ((eol (point)))
|
||||
(beginning-of-line)
|
||||
;; assume directory if arg passed in
|
||||
(if (or default-dirname (re-search-forward "^ d" eol t))
|
||||
;; save current buffer's name
|
||||
(let ((current-buffer-name (buffer-name)))
|
||||
;; go ahead and read in the directory
|
||||
(find-alternate-file name)
|
||||
;; if the saved buffer's name was the magic name, rename this buffer
|
||||
(if (and dired-single-use-magic-buffer
|
||||
(string= current-buffer-name dired-single-magic-buffer-name))
|
||||
(rename-buffer dired-single-magic-buffer-name)))
|
||||
;; it's just a file
|
||||
(find-file name)))))))
|
||||
|
||||
;;;; ------------------------------------------------------------------------
|
||||
;;;###autoload
|
||||
(defun dired-single-buffer-mouse (click)
|
||||
"Mouse-initiated version of `dired-single-buffer' (which see).
|
||||
|
||||
Argument CLICK is the mouse-click event."
|
||||
(interactive "e")
|
||||
(let* ( (start (event-start click))
|
||||
(window (car start))
|
||||
(pos (car (cdr start))) )
|
||||
(select-window window)
|
||||
(goto-char pos))
|
||||
(dired-single-buffer))
|
||||
|
||||
;;;; ------------------------------------------------------------------------
|
||||
;;;###autoload
|
||||
(defun dired-single-magic-buffer (&optional default-dirname)
|
||||
"Switch to buffer whose name is the value of `dired-single-magic-buffer-name'.
|
||||
|
||||
If no such buffer exists, launch dired in a new buffer and rename that buffer
|
||||
to the value of `dired-single-magic-buffer-name'. If the current buffer is the
|
||||
magic buffer, it will prompt for a new directory to visit.
|
||||
|
||||
Optional argument DEFAULT-DIRNAME specifies the directory to visit (defaults to
|
||||
the currently displayed directory)."
|
||||
(interactive)
|
||||
;; do we not have one or are we already in it?
|
||||
(let ((magic-dired-buffer (get-buffer dired-single-magic-buffer-name)))
|
||||
(if (or (eq magic-dired-buffer nil)
|
||||
(eq magic-dired-buffer (current-buffer)))
|
||||
;; nothing to switch to
|
||||
;; get directory name to start in
|
||||
(let ((dirname (or default-dirname
|
||||
(read-file-name (format "Dired %s(directory): " "")
|
||||
nil default-directory t))))
|
||||
|
||||
;; make sure it's really a directory
|
||||
(if (not (file-directory-p dirname))
|
||||
(error "Error: <%s> is not a directory" dirname))
|
||||
|
||||
;; do we need a new buffer?
|
||||
(if (eq magic-dired-buffer nil)
|
||||
;; find the file in new buffer, current window
|
||||
(find-file dirname)
|
||||
;; just find in place of current buffer
|
||||
(find-alternate-file dirname))
|
||||
;; rename the buffer, where ever we found it
|
||||
(rename-buffer dired-single-magic-buffer-name))
|
||||
;; we're not there (we have one already), so simply switch to it
|
||||
(switch-to-buffer magic-dired-buffer)
|
||||
;; if called with a default, try it again
|
||||
(if default-dirname
|
||||
(dired-single-magic-buffer default-dirname)))))
|
||||
|
||||
;;;; ------------------------------------------------------------------------
|
||||
;;;###autoload
|
||||
(defun dired-single-toggle-buffer-name ()
|
||||
"Toggle between the 'magic' buffer name and the 'real' dired buffer name.
|
||||
|
||||
Will also seek to uniquify the 'real' buffer name."
|
||||
(interactive)
|
||||
|
||||
;; make sure it's a dired buffer
|
||||
(if (not (string= major-mode "dired-mode"))
|
||||
(error "Error: not a dired buffer"))
|
||||
|
||||
;; do we have magic name currently?
|
||||
(if (string= (buffer-name) dired-single-magic-buffer-name)
|
||||
(rename-buffer
|
||||
(abbreviate-file-name
|
||||
(expand-file-name (directory-file-name default-directory))) t)
|
||||
|
||||
;; make sure the buffer doesn't currently exist
|
||||
(let ((existing-buffer (get-buffer dired-single-magic-buffer-name)))
|
||||
(if existing-buffer
|
||||
(kill-buffer existing-buffer))
|
||||
(rename-buffer dired-single-magic-buffer-name))))
|
||||
|
||||
;;;; ------------------------------------------------------------------------
|
||||
;;;###autoload
|
||||
(defun dired-single-up-directory (&optional other-window)
|
||||
"Like `dired-up-directory' but with `dired-single-buffer'."
|
||||
(interactive)
|
||||
;; replace dired with dired-single-buffer
|
||||
(cl-letf (((symbol-function 'dired) (symbol-function 'dired-single-buffer)))
|
||||
(dired-up-directory other-window)))
|
||||
|
||||
;;; **************************************************************************
|
||||
;;; ***** we're done
|
||||
;;; **************************************************************************
|
||||
(provide 'dired-single)
|
||||
(run-hooks 'dired-single-load-hook)
|
||||
|
||||
;;; dired-single.el ends here
|
BIN
code/elpa/dired-single-20211101.2319/dired-single.elc
Normal file
BIN
code/elpa/dired-single-20211101.2319/dired-single.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,47 @@
|
|||
;;; dockerfile-mode-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "dockerfile-mode" "dockerfile-mode.el" (0 0
|
||||
;;;;;; 0 0))
|
||||
;;; Generated autoloads from dockerfile-mode.el
|
||||
|
||||
(autoload 'dockerfile-build-buffer "dockerfile-mode" "\
|
||||
Build an image called IMAGE-NAME based upon the buffer.
|
||||
|
||||
If prefix arg NO-CACHE is set, don't cache the image.
|
||||
The build string will be of the format:
|
||||
`sudo docker build --no-cache --tag IMAGE-NAME --build-args arg1.. -f filename directory`
|
||||
|
||||
\(fn IMAGE-NAME &optional NO-CACHE)" t nil)
|
||||
|
||||
(autoload 'dockerfile-build-no-cache-buffer "dockerfile-mode" "\
|
||||
Build an image called IMAGE-NAME based upon the buffer without cache.
|
||||
|
||||
\(fn IMAGE-NAME)" t nil)
|
||||
|
||||
(autoload 'dockerfile-mode "dockerfile-mode" "\
|
||||
A major mode to edit Dockerfiles.
|
||||
\\{dockerfile-mode-map}
|
||||
|
||||
\(fn)" t nil)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("/Dockerfile\\(?:\\.[^/\\]*\\)?\\'" . dockerfile-mode))
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.dockerfile\\'" . dockerfile-mode))
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dockerfile-mode" '("dockerfile-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; dockerfile-mode-autoloads.el ends here
|
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from dockerfile-mode.el -*- no-byte-compile: t -*-
|
||||
(define-package "dockerfile-mode" "20220220.1439" "Major mode for editing Docker's Dockerfiles" '((emacs "24")) :commit "b63a3d12b7dea0cb9efc7f78d7ad5672ceab2a3f" :keywords '("docker") :url "https://github.com/spotify/dockerfile-mode")
|
275
code/elpa/dockerfile-mode-20220220.1439/dockerfile-mode.el
Normal file
275
code/elpa/dockerfile-mode-20220220.1439/dockerfile-mode.el
Normal file
|
@ -0,0 +1,275 @@
|
|||
;;; dockerfile-mode.el --- Major mode for editing Docker's Dockerfiles -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (c) 2013 Spotify AB
|
||||
;; Package-Requires: ((emacs "24"))
|
||||
;; Package-Version: 20220220.1439
|
||||
;; Package-Commit: b63a3d12b7dea0cb9efc7f78d7ad5672ceab2a3f
|
||||
;; Homepage: https://github.com/spotify/dockerfile-mode
|
||||
;; URL: https://github.com/spotify/dockerfile-mode
|
||||
;; Version: 1.5
|
||||
;; Keywords: docker
|
||||
;;
|
||||
;; Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
;; use this file except in compliance with the License. You may obtain a copy of
|
||||
;; the License at
|
||||
;;
|
||||
;; http://www.apache.org/licenses/LICENSE-2.0
|
||||
;;
|
||||
;; Unless required by applicable law or agreed to in writing, software
|
||||
;; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
;; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
;; License for the specific language governing permissions and limitations under
|
||||
;; the License.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Provides a major mode `dockerfile-mode' for use with the standard
|
||||
;; `Dockerfile' file format. Additional convenience functions allow
|
||||
;; images to be built easily.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'sh-script)
|
||||
(require 'rx)
|
||||
|
||||
|
||||
(declare-function cygwin-convert-file-name-to-windows "cygw32.c" (file &optional absolute-p))
|
||||
|
||||
(defgroup dockerfile nil
|
||||
"dockerfile code editing commands for Emacs."
|
||||
:link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
|
||||
:prefix "dockerfile-"
|
||||
:group 'languages)
|
||||
|
||||
(defcustom dockerfile-mode-command "docker"
|
||||
"Which binary to use to build images."
|
||||
:group 'dockerfile
|
||||
:type 'string)
|
||||
|
||||
(defcustom dockerfile-use-sudo nil
|
||||
"Runs docker builder command with sudo."
|
||||
:type 'boolean
|
||||
:group 'dockerfile)
|
||||
|
||||
(defcustom dockerfile-build-force-rm nil
|
||||
"Runs docker builder command with --force-rm switch."
|
||||
:type 'boolean
|
||||
:group 'dockerfile)
|
||||
|
||||
(defcustom dockerfile-build-pull nil
|
||||
"Runs docker builder command with --pull switch."
|
||||
:type 'boolean
|
||||
:group 'dockerfile)
|
||||
|
||||
(defcustom dockerfile-build-args nil
|
||||
"List of --build-arg to pass to docker build.
|
||||
|
||||
Each element of the list will be passed as a separate
|
||||
--build-arg to the docker build command."
|
||||
:type '(repeat string)
|
||||
:group 'dockerfile)
|
||||
|
||||
(defcustom dockerfile-use-buildkit nil
|
||||
"Use Docker buildkit for building images?
|
||||
|
||||
This is the new buildsystem for docker, and in time it will replace the old one
|
||||
but for now it has to be explicitly enabled to work.
|
||||
It is supported from docker 18.09"
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom dockerfile-enable-auto-indent t
|
||||
"Toggles the auto indentation functionality."
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom dockerfile-indent-offset (or standard-indent 2)
|
||||
"Dockerfile number of columns for margin-changing functions to indent."
|
||||
:type 'integer
|
||||
:safe #'integerp
|
||||
:group 'dockerfile)
|
||||
|
||||
(defface dockerfile-image-name
|
||||
'((t (:inherit (font-lock-type-face bold))))
|
||||
"Face to highlight the base image name after FROM instruction.")
|
||||
|
||||
(defface dockerfile-image-alias
|
||||
'((t (:inherit (font-lock-constant-face bold))))
|
||||
"Face to highlight the base image alias inf FROM ... AS <alias> construct.")
|
||||
|
||||
(defconst dockerfile--from-regex
|
||||
(rx "from " (group (+? nonl)) (or " " eol) (? "as " (group (1+ nonl)))))
|
||||
|
||||
(defvar dockerfile-font-lock-keywords
|
||||
`(,(cons (rx (or line-start "onbuild ")
|
||||
(group (or "from" "maintainer" "run" "cmd" "expose" "env" "arg"
|
||||
"add" "copy" "entrypoint" "volume" "user" "workdir" "onbuild"
|
||||
"label" "stopsignal" "shell" "healthcheck"))
|
||||
word-boundary)
|
||||
font-lock-keyword-face)
|
||||
(,dockerfile--from-regex
|
||||
(1 'dockerfile-image-name)
|
||||
(2 'dockerfile-image-alias nil t))
|
||||
,@(sh-font-lock-keywords)
|
||||
,@(sh-font-lock-keywords-2)
|
||||
,@(sh-font-lock-keywords-1))
|
||||
"Default `font-lock-keywords' for `dockerfile mode'.")
|
||||
|
||||
(defvar dockerfile-mode-map
|
||||
(let ((map (make-sparse-keymap))
|
||||
(menu-map (make-sparse-keymap)))
|
||||
(define-key map "\C-c\C-b" #'dockerfile-build-buffer)
|
||||
(define-key map "\C-c\M-b" #'dockerfile-build-no-cache-buffer)
|
||||
(define-key map "\C-c\C-c" #'comment-region)
|
||||
(define-key map [menu-bar dockerfile-mode] (cons "Dockerfile" menu-map))
|
||||
(define-key menu-map [dfc]
|
||||
'(menu-item "Comment Region" comment-region
|
||||
:help "Comment Region"))
|
||||
(define-key menu-map [dfb]
|
||||
'(menu-item "Build" dockerfile-build-buffer
|
||||
:help "Send the Dockerfile to docker build"))
|
||||
(define-key menu-map [dfb]
|
||||
'(menu-item "Build without cache" dockerfile-build-no-cache-buffer
|
||||
:help "Send the Dockerfile to docker build without cache"))
|
||||
map))
|
||||
|
||||
(defvar dockerfile-mode-syntax-table
|
||||
(let ((table (make-syntax-table)))
|
||||
(modify-syntax-entry ?# "<" table)
|
||||
(modify-syntax-entry ?\n ">" table)
|
||||
(modify-syntax-entry ?' "\"" table)
|
||||
(modify-syntax-entry ?= "." table)
|
||||
table)
|
||||
"Syntax table for `dockerfile-mode'.")
|
||||
|
||||
(define-abbrev-table 'dockerfile-mode-abbrev-table nil
|
||||
"Abbrev table used while in `dockerfile-mode'.")
|
||||
|
||||
(unless dockerfile-mode-abbrev-table
|
||||
(define-abbrev-table 'dockerfile-mode-abbrev-table ()))
|
||||
|
||||
(defun dockerfile-indent-line-function ()
|
||||
"Indent lines in a Dockerfile.
|
||||
|
||||
Lines beginning with a keyword are ignored, and any others are
|
||||
indented by one `dockerfile-indent-offset'. Functionality toggled
|
||||
by `dockerfile-enable-auto-indent'."
|
||||
(when dockerfile-enable-auto-indent
|
||||
(unless (member (get-text-property (point-at-bol) 'face)
|
||||
'(font-lock-comment-delimiter-face font-lock-keyword-face))
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(skip-chars-forward "[ \t]" (point-at-eol))
|
||||
(unless (equal (point) (point-at-eol)) ; Ignore empty lines.
|
||||
;; Delete existing whitespace.
|
||||
(delete-char (- (point-at-bol) (point)))
|
||||
(indent-to dockerfile-indent-offset))))))
|
||||
|
||||
(defun dockerfile-build-arg-string ()
|
||||
"Create a --build-arg string for each element in `dockerfile-build-args'."
|
||||
(mapconcat (lambda (arg) (concat "--build-arg " (shell-quote-argument arg)))
|
||||
dockerfile-build-args " "))
|
||||
|
||||
(defun dockerfile-standard-filename (file)
|
||||
"Convert the FILE name to OS standard.
|
||||
If in Cygwin environment, uses Cygwin specific function to convert the
|
||||
file name. Otherwise, uses Emacs' standard conversion function."
|
||||
(if (fboundp 'cygwin-convert-file-name-to-windows)
|
||||
(replace-regexp-in-string
|
||||
(rx "\\") "\\\\" (cygwin-convert-file-name-to-windows file) t t)
|
||||
(convert-standard-filename file)))
|
||||
|
||||
(defun dockerfile-tag-string (image-name)
|
||||
"Return a --tag shell-quoted IMAGE-NAME string or an empty string if image-name is blank."
|
||||
(if (string= image-name "") "" (format "--tag %s " (shell-quote-argument image-name))))
|
||||
|
||||
(define-obsolete-variable-alias 'docker-image-name 'dockerfile-image-name "2017-10-22")
|
||||
|
||||
(defvar dockerfile-image-name nil
|
||||
"Name of the dockerfile currently being used.
|
||||
This can be set in file or directory-local variables.")
|
||||
|
||||
(defvar dockerfile-image-name-history nil
|
||||
"History of image names read by `dockerfile-read-image-name'.")
|
||||
|
||||
(defun dockerfile-read-image-name ()
|
||||
"Read a docker image name."
|
||||
(read-string "Image name: " dockerfile-image-name 'dockerfile-image-name-history))
|
||||
|
||||
|
||||
;;;###autoload
|
||||
(defun dockerfile-build-buffer (image-name &optional no-cache)
|
||||
"Build an image called IMAGE-NAME based upon the buffer.
|
||||
|
||||
If prefix arg NO-CACHE is set, don't cache the image.
|
||||
The build string will be of the format:
|
||||
`sudo docker build --no-cache --tag IMAGE-NAME --build-args arg1.. -f filename directory`"
|
||||
|
||||
(interactive (list (dockerfile-read-image-name) prefix-arg))
|
||||
(save-buffer)
|
||||
(compilation-start
|
||||
(format
|
||||
"%s%s%s build %s %s %s %s %s -f %s %s"
|
||||
(if dockerfile-use-buildkit "DOCKER_BUILDKIT=1 " "")
|
||||
(if dockerfile-use-sudo "sudo " "")
|
||||
dockerfile-mode-command
|
||||
(if no-cache "--no-cache" "")
|
||||
(if dockerfile-build-force-rm "--force-rm " "")
|
||||
(if dockerfile-build-pull "--pull " "")
|
||||
(dockerfile-tag-string image-name)
|
||||
(dockerfile-build-arg-string)
|
||||
(shell-quote-argument (dockerfile-standard-filename
|
||||
(or (file-remote-p (buffer-file-name) 'localname)
|
||||
(buffer-file-name))))
|
||||
(shell-quote-argument (dockerfile-standard-filename
|
||||
(or (file-remote-p default-directory 'localname)
|
||||
default-directory))))
|
||||
nil
|
||||
(lambda (_) (format "*docker-build-output: %s *" image-name))))
|
||||
|
||||
;;;###autoload
|
||||
(defun dockerfile-build-no-cache-buffer (image-name)
|
||||
"Build an image called IMAGE-NAME based upon the buffer without cache."
|
||||
(interactive (list (dockerfile-read-image-name)))
|
||||
(dockerfile-build-buffer image-name t))
|
||||
|
||||
(defun dockerfile--imenu-function ()
|
||||
"Find the previous headline from point.
|
||||
|
||||
Search for a FROM instruction. If an alias is used this is
|
||||
returned, otherwise the base image name is used."
|
||||
(when (re-search-backward dockerfile--from-regex nil t)
|
||||
(let ((data (match-data)))
|
||||
(when (match-string 2)
|
||||
;; we drop the first match group because
|
||||
;; imenu-generic-expression can only use one offset, so we
|
||||
;; normalize to `1'.
|
||||
(set-match-data (list (nth 0 data) (nth 1 data) (nth 4 data) (nth 5 data))))
|
||||
t)))
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode dockerfile-mode prog-mode "Dockerfile"
|
||||
"A major mode to edit Dockerfiles.
|
||||
\\{dockerfile-mode-map}
|
||||
"
|
||||
(set-syntax-table dockerfile-mode-syntax-table)
|
||||
(set (make-local-variable 'imenu-generic-expression)
|
||||
`(("Stage" dockerfile--imenu-function 1)))
|
||||
(set (make-local-variable 'require-final-newline) mode-require-final-newline)
|
||||
(set (make-local-variable 'comment-start) "#")
|
||||
(set (make-local-variable 'comment-end) "")
|
||||
(set (make-local-variable 'comment-start-skip) "#+ *")
|
||||
(set (make-local-variable 'parse-sexp-ignore-comments) t)
|
||||
(set (make-local-variable 'font-lock-defaults)
|
||||
'(dockerfile-font-lock-keywords nil t))
|
||||
(setq local-abbrev-table dockerfile-mode-abbrev-table)
|
||||
(set (make-local-variable 'indent-line-function) #'dockerfile-indent-line-function))
|
||||
|
||||
;;;###autoload
|
||||
(add-to-list 'auto-mode-alist '("/Dockerfile\\(?:\\.[^/\\]*\\)?\\'" .
|
||||
dockerfile-mode))
|
||||
|
||||
;;;###autoload
|
||||
(add-to-list 'auto-mode-alist '("\\.dockerfile\\'" . dockerfile-mode))
|
||||
|
||||
(provide 'dockerfile-mode)
|
||||
|
||||
;;; dockerfile-mode.el ends here
|
BIN
code/elpa/dockerfile-mode-20220220.1439/dockerfile-mode.elc
Normal file
BIN
code/elpa/dockerfile-mode-20220220.1439/dockerfile-mode.elc
Normal file
Binary file not shown.
68
code/elpa/elisp-refs-20220220.2305/elisp-refs-autoloads.el
Normal file
68
code/elpa/elisp-refs-20220220.2305/elisp-refs-autoloads.el
Normal file
|
@ -0,0 +1,68 @@
|
|||
;;; elisp-refs-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "elisp-refs" "elisp-refs.el" (0 0 0 0))
|
||||
;;; Generated autoloads from elisp-refs.el
|
||||
|
||||
(autoload 'elisp-refs-function "elisp-refs" "\
|
||||
Display all the references to function SYMBOL, in all loaded
|
||||
elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the search.
|
||||
|
||||
This searches for functions, not macros. For that, see
|
||||
`elisp-refs-macro'.
|
||||
|
||||
\(fn SYMBOL &optional PATH-PREFIX)" t nil)
|
||||
|
||||
(autoload 'elisp-refs-macro "elisp-refs" "\
|
||||
Display all the references to macro SYMBOL, in all loaded
|
||||
elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the search.
|
||||
|
||||
This searches for macros, not functions. For that, see
|
||||
`elisp-refs-function'.
|
||||
|
||||
\(fn SYMBOL &optional PATH-PREFIX)" t nil)
|
||||
|
||||
(autoload 'elisp-refs-special "elisp-refs" "\
|
||||
Display all the references to special form SYMBOL, in all loaded
|
||||
elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the search.
|
||||
|
||||
\(fn SYMBOL &optional PATH-PREFIX)" t nil)
|
||||
|
||||
(autoload 'elisp-refs-variable "elisp-refs" "\
|
||||
Display all the references to variable SYMBOL, in all loaded
|
||||
elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the search.
|
||||
|
||||
\(fn SYMBOL &optional PATH-PREFIX)" t nil)
|
||||
|
||||
(autoload 'elisp-refs-symbol "elisp-refs" "\
|
||||
Display all the references to SYMBOL in all loaded elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the
|
||||
search.
|
||||
|
||||
\(fn SYMBOL &optional PATH-PREFIX)" t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "elisp-refs" '("elisp-refs-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; elisp-refs-autoloads.el ends here
|
2
code/elpa/elisp-refs-20220220.2305/elisp-refs-pkg.el
Normal file
2
code/elpa/elisp-refs-20220220.2305/elisp-refs-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from elisp-refs.el -*- no-byte-compile: t -*-
|
||||
(define-package "elisp-refs" "20220220.2305" "find callers of elisp functions or macros" '((dash "2.12.0") (s "1.11.0")) :commit "8f84280997d8b233d66fb9958a34b46078c58b03" :authors '(("Wilfred Hughes" . "me@wilfred.me.uk")) :maintainer '("Wilfred Hughes" . "me@wilfred.me.uk") :keywords '("lisp"))
|
867
code/elpa/elisp-refs-20220220.2305/elisp-refs.el
Normal file
867
code/elpa/elisp-refs-20220220.2305/elisp-refs.el
Normal file
|
@ -0,0 +1,867 @@
|
|||
;;; elisp-refs.el --- find callers of elisp functions or macros -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2016-2020 Wilfred Hughes <me@wilfred.me.uk>
|
||||
|
||||
;; Author: Wilfred Hughes <me@wilfred.me.uk>
|
||||
;; Version: 1.5
|
||||
;; Package-Version: 20220220.2305
|
||||
;; Package-Commit: 8f84280997d8b233d66fb9958a34b46078c58b03
|
||||
;; Keywords: lisp
|
||||
;; Package-Requires: ((dash "2.12.0") (s "1.11.0"))
|
||||
|
||||
;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; elisp-refs.el is an Emacs package for finding references to
|
||||
;; functions, macros or variables. Unlike a dumb text search,
|
||||
;; elisp-refs.el actually parses the code, so it's never confused by
|
||||
;; comments or `foo-bar' matching `foo'.
|
||||
;;
|
||||
;; See https://github.com/Wilfred/refs.el/blob/master/README.md for
|
||||
;; more information.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'dash)
|
||||
(require 's)
|
||||
(require 'format)
|
||||
(eval-when-compile (require 'cl-lib))
|
||||
|
||||
;;; Internal
|
||||
|
||||
(defvar elisp-refs-verbose t)
|
||||
|
||||
(defun elisp-refs--format-int (integer)
|
||||
"Format INTEGER as a string, with , separating thousands."
|
||||
(let ((number (abs integer))
|
||||
(parts nil))
|
||||
(while (> number 999)
|
||||
(push (format "%03d" (mod number 1000))
|
||||
parts)
|
||||
(setq number (/ number 1000)))
|
||||
(push (format "%d" number) parts)
|
||||
(concat
|
||||
(if (< integer 0) "-" "")
|
||||
(s-join "," parts))))
|
||||
|
||||
(defsubst elisp-refs--start-pos (end-pos)
|
||||
"Find the start position of form ending at END-POS
|
||||
in the current buffer."
|
||||
(let ((parse-sexp-ignore-comments t))
|
||||
(scan-sexps end-pos -1)))
|
||||
|
||||
(defun elisp-refs--sexp-positions (buffer start-pos end-pos)
|
||||
"Return a list of start and end positions of all the sexps
|
||||
between START-POS and END-POS (inclusive) in BUFFER.
|
||||
|
||||
Positions exclude quote characters, so given 'foo or `foo, we
|
||||
report the position of the f.
|
||||
|
||||
Not recursive, so we don't consider subelements of nested sexps."
|
||||
(let ((positions nil))
|
||||
(with-current-buffer buffer
|
||||
(condition-case _err
|
||||
(catch 'done
|
||||
(while t
|
||||
(let* ((sexp-end-pos (let ((parse-sexp-ignore-comments t))
|
||||
(scan-sexps start-pos 1))))
|
||||
;; If we've reached a sexp beyond the range requested,
|
||||
;; or if there are no sexps left, we're done.
|
||||
(when (or (null sexp-end-pos) (> sexp-end-pos end-pos))
|
||||
(throw 'done nil))
|
||||
;; Otherwise, this sexp is in the range requested.
|
||||
(push (list (elisp-refs--start-pos sexp-end-pos) sexp-end-pos)
|
||||
positions)
|
||||
(setq start-pos sexp-end-pos))))
|
||||
;; Terminate when we see "Containing expression ends prematurely"
|
||||
(scan-error nil)))
|
||||
(nreverse positions)))
|
||||
|
||||
(defun elisp-refs--read-buffer-form ()
|
||||
"Read a form from the current buffer, starting at point.
|
||||
Returns a list:
|
||||
\(form form-start-pos form-end-pos symbol-positions read-start-pos)
|
||||
|
||||
SYMBOL-POSITIONS are 0-indexed, relative to READ-START-POS."
|
||||
(let* ((read-with-symbol-positions t)
|
||||
(read-start-pos (point))
|
||||
(form (read (current-buffer)))
|
||||
(symbols (if (boundp 'read-symbol-positions-list)
|
||||
read-symbol-positions-list
|
||||
(read-positioning-symbols (current-buffer))))
|
||||
(end-pos (point))
|
||||
(start-pos (elisp-refs--start-pos end-pos)))
|
||||
(list form start-pos end-pos symbols read-start-pos)))
|
||||
|
||||
(defvar elisp-refs--path nil
|
||||
"A buffer-local variable used by `elisp-refs--contents-buffer'.
|
||||
Internal implementation detail.")
|
||||
|
||||
(defun elisp-refs--read-all-buffer-forms (buffer)
|
||||
"Read all the forms in BUFFER, along with their positions."
|
||||
(with-current-buffer buffer
|
||||
(goto-char (point-min))
|
||||
(let ((forms nil))
|
||||
(condition-case err
|
||||
(while t
|
||||
(push (elisp-refs--read-buffer-form) forms))
|
||||
(error
|
||||
(if (or (equal (car err) 'end-of-file)
|
||||
;; TODO: this shouldn't occur in valid elisp files,
|
||||
;; but it's happening in helm-utils.el.
|
||||
(equal (car err) 'scan-error))
|
||||
;; Reached end of file, we're done.
|
||||
(nreverse forms)
|
||||
;; Some unexpected error, propagate.
|
||||
(error "Unexpected error whilst reading %s position %s: %s"
|
||||
(abbreviate-file-name elisp-refs--path) (point) err)))))))
|
||||
|
||||
(defun elisp-refs--proper-list-p (val)
|
||||
"Is VAL a proper list?"
|
||||
(if (fboundp 'format-proper-list-p)
|
||||
;; Emacs stable.
|
||||
(with-no-warnings (format-proper-list-p val))
|
||||
;; Function was renamed in Emacs master:
|
||||
;; http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=2fde6275b69fd113e78243790bf112bbdd2fe2bf
|
||||
(with-no-warnings (proper-list-p val))))
|
||||
|
||||
(defun elisp-refs--walk (buffer form start-pos end-pos symbol match-p &optional path)
|
||||
"Walk FORM, a nested list, and return a list of sublists (with
|
||||
their positions) where MATCH-P returns t. FORM is traversed
|
||||
depth-first (pre-order traversal, left-to-right).
|
||||
|
||||
MATCH-P is called with three arguments:
|
||||
\(SYMBOL CURRENT-FORM PATH).
|
||||
|
||||
PATH is the first element of all the enclosing forms of
|
||||
CURRENT-FORM, innermost first, along with the index of the
|
||||
current form.
|
||||
|
||||
For example if we are looking at h in (e f (g h)), PATH takes the
|
||||
value ((g . 1) (e . 2)).
|
||||
|
||||
START-POS and END-POS should be the position of FORM within BUFFER."
|
||||
(cond
|
||||
((funcall match-p symbol form path)
|
||||
;; If this form matches, just return it, along with the position.
|
||||
(list (list form start-pos end-pos)))
|
||||
;; Otherwise, recurse on the subforms.
|
||||
((consp form)
|
||||
(let ((matches nil)
|
||||
;; Find the positions of the subforms.
|
||||
(subforms-positions
|
||||
(if (eq (car-safe form) '\`)
|
||||
;; Kludge: `elisp-refs--sexp-positions' excludes the ` when
|
||||
;; calculating positions. So, to find the inner
|
||||
;; positions when walking from `(...) to (...), we
|
||||
;; don't need to increment the start position.
|
||||
(cons nil (elisp-refs--sexp-positions buffer start-pos end-pos))
|
||||
;; Calculate the positions after the opening paren.
|
||||
(elisp-refs--sexp-positions buffer (1+ start-pos) end-pos))))
|
||||
;; For each subform, recurse if it's a list, or a matching symbol.
|
||||
(--each (-zip form subforms-positions)
|
||||
(-let [(subform subform-start subform-end) it]
|
||||
(when (or
|
||||
(and (consp subform) (elisp-refs--proper-list-p subform))
|
||||
(and (symbolp subform) (eq subform symbol)))
|
||||
(-when-let (subform-matches
|
||||
(elisp-refs--walk
|
||||
buffer subform
|
||||
subform-start subform-end
|
||||
symbol match-p
|
||||
(cons (cons (car-safe form) it-index) path)))
|
||||
(push subform-matches matches)))))
|
||||
|
||||
;; Concat the results from all the subforms.
|
||||
(apply #'append (nreverse matches))))))
|
||||
|
||||
;; TODO: condition-case (condition-case ... (error ...)) is not a call
|
||||
;; TODO: (cl-destructuring-bind (foo &rest bar) ...) is not a call
|
||||
;; TODO: letf, cl-letf, -let, -let*
|
||||
(defun elisp-refs--function-p (symbol form path)
|
||||
"Return t if FORM looks like a function call to SYMBOL."
|
||||
(cond
|
||||
((not (consp form))
|
||||
nil)
|
||||
;; Ignore (defun _ (SYMBOL ...) ...)
|
||||
((or (equal (car path) '(defsubst . 2))
|
||||
(equal (car path) '(defun . 2))
|
||||
(equal (car path) '(defmacro . 2))
|
||||
(equal (car path) '(cl-defun . 2)))
|
||||
nil)
|
||||
;; Ignore (lambda (SYMBOL ...) ...)
|
||||
((equal (car path) '(lambda . 1))
|
||||
nil)
|
||||
;; Ignore (let (SYMBOL ...) ...)
|
||||
;; and (let* (SYMBOL ...) ...)
|
||||
((or
|
||||
(equal (car path) '(let . 1))
|
||||
(equal (car path) '(let* . 1)))
|
||||
nil)
|
||||
;; Ignore (let ((SYMBOL ...)) ...)
|
||||
((or
|
||||
(equal (cl-second path) '(let . 1))
|
||||
(equal (cl-second path) '(let* . 1)))
|
||||
nil)
|
||||
;; Ignore (declare-function NAME (ARGS...))
|
||||
((equal (car path) '(declare-function . 3))
|
||||
nil)
|
||||
;; (SYMBOL ...)
|
||||
((eq (car form) symbol)
|
||||
t)
|
||||
;; (foo ... #'SYMBOL ...)
|
||||
((--any-p (equal it (list 'function symbol)) form)
|
||||
t)
|
||||
;; (funcall 'SYMBOL ...)
|
||||
((and (eq (car form) 'funcall)
|
||||
(equal `',symbol (cl-second form)))
|
||||
t)
|
||||
;; (apply 'SYMBOL ...)
|
||||
((and (eq (car form) 'apply)
|
||||
(equal `',symbol (cl-second form)))
|
||||
t)))
|
||||
|
||||
(defun elisp-refs--macro-p (symbol form path)
|
||||
"Return t if FORM looks like a macro call to SYMBOL."
|
||||
(cond
|
||||
((not (consp form))
|
||||
nil)
|
||||
;; Ignore (defun _ (SYMBOL ...) ...)
|
||||
((or (equal (car path) '(defsubst . 2))
|
||||
(equal (car path) '(defun . 2))
|
||||
(equal (car path) '(defmacro . 2)))
|
||||
nil)
|
||||
;; Ignore (lambda (SYMBOL ...) ...)
|
||||
((equal (car path) '(lambda . 1))
|
||||
nil)
|
||||
;; Ignore (let (SYMBOL ...) ...)
|
||||
;; and (let* (SYMBOL ...) ...)
|
||||
((or
|
||||
(equal (car path) '(let . 1))
|
||||
(equal (car path) '(let* . 1)))
|
||||
nil)
|
||||
;; Ignore (let ((SYMBOL ...)) ...)
|
||||
((or
|
||||
(equal (cl-second path) '(let . 1))
|
||||
(equal (cl-second path) '(let* . 1)))
|
||||
nil)
|
||||
;; (SYMBOL ...)
|
||||
((eq (car form) symbol)
|
||||
t)))
|
||||
|
||||
;; Looking for a special form is exactly the same as looking for a
|
||||
;; macro.
|
||||
(defalias 'elisp-refs--special-p 'elisp-refs--macro-p)
|
||||
|
||||
(defun elisp-refs--variable-p (symbol form path)
|
||||
"Return t if this looks like a variable reference to SYMBOL.
|
||||
We consider parameters to be variables too."
|
||||
(cond
|
||||
((consp form)
|
||||
nil)
|
||||
;; Ignore (defun _ (SYMBOL ...) ...)
|
||||
((or (equal (car path) '(defsubst . 1))
|
||||
(equal (car path) '(defun . 1))
|
||||
(equal (car path) '(defmacro . 1))
|
||||
(equal (car path) '(cl-defun . 1)))
|
||||
nil)
|
||||
;; (let (SYMBOL ...) ...) is a variable, not a function call.
|
||||
((or
|
||||
(equal (cl-second path) '(let . 1))
|
||||
(equal (cl-second path) '(let* . 1)))
|
||||
t)
|
||||
;; (lambda (SYMBOL ...) ...) is a variable
|
||||
((equal (cl-second path) '(lambda . 1))
|
||||
t)
|
||||
;; (let ((SYMBOL ...)) ...) is also a variable.
|
||||
((or
|
||||
(equal (cl-third path) '(let . 1))
|
||||
(equal (cl-third path) '(let* . 1)))
|
||||
t)
|
||||
;; Ignore (SYMBOL ...) otherwise, we assume it's a function/macro
|
||||
;; call.
|
||||
((equal (car path) (cons symbol 0))
|
||||
nil)
|
||||
((eq form symbol)
|
||||
t)))
|
||||
|
||||
;; TODO: benchmark building a list with `push' rather than using
|
||||
;; mapcat.
|
||||
(defun elisp-refs--read-and-find (buffer symbol match-p)
|
||||
"Read all the forms in BUFFER, and return a list of all forms that
|
||||
contain SYMBOL where MATCH-P returns t.
|
||||
|
||||
For every matching form found, we return the form itself along
|
||||
with its start and end position."
|
||||
(-non-nil
|
||||
(--mapcat
|
||||
(-let [(form start-pos end-pos symbol-positions _read-start-pos) it]
|
||||
;; Optimisation: don't bother walking a form if contains no
|
||||
;; references to the symbol we're looking for.
|
||||
(when (assq symbol symbol-positions)
|
||||
(elisp-refs--walk buffer form start-pos end-pos symbol match-p)))
|
||||
(elisp-refs--read-all-buffer-forms buffer))))
|
||||
|
||||
(defun elisp-refs--read-and-find-symbol (buffer symbol)
|
||||
"Read all the forms in BUFFER, and return a list of all
|
||||
positions of SYMBOL."
|
||||
(-non-nil
|
||||
(--mapcat
|
||||
(-let [(_ _ _ symbol-positions read-start-pos) it]
|
||||
(--map
|
||||
(-let [(sym . offset) it]
|
||||
(when (eq sym symbol)
|
||||
(-let* ((start-pos (+ read-start-pos offset))
|
||||
(end-pos (+ start-pos (length (symbol-name sym)))))
|
||||
(list sym start-pos end-pos))))
|
||||
symbol-positions))
|
||||
|
||||
(elisp-refs--read-all-buffer-forms buffer))))
|
||||
|
||||
(defun elisp-refs--filter-obarray (pred)
|
||||
"Return a list of all the items in `obarray' where PRED returns t."
|
||||
(let (symbols)
|
||||
(mapatoms (lambda (symbol)
|
||||
(when (and (funcall pred symbol)
|
||||
(not (equal (symbol-name symbol) "")))
|
||||
(push symbol symbols))))
|
||||
symbols))
|
||||
|
||||
(defun elisp-refs--loaded-paths ()
|
||||
"Return a list of all files that have been loaded in Emacs.
|
||||
Where the file was a .elc, return the path to the .el file instead."
|
||||
(let ((elc-paths (-non-nil (mapcar #'-first-item load-history))))
|
||||
(-non-nil
|
||||
(--map
|
||||
(let ((el-name (format "%s.el" (file-name-sans-extension it)))
|
||||
(el-gz-name (format "%s.el.gz" (file-name-sans-extension it))))
|
||||
(cond ((file-exists-p el-name) el-name)
|
||||
((file-exists-p el-gz-name) el-gz-name)
|
||||
;; Ignore files where we can't find a .el file.
|
||||
(t nil)))
|
||||
elc-paths))))
|
||||
|
||||
(defun elisp-refs--contents-buffer (path)
|
||||
"Read PATH into a disposable buffer, and return it.
|
||||
Works around the fact that Emacs won't allow multiple buffers
|
||||
visiting the same file."
|
||||
(let ((fresh-buffer (generate-new-buffer (format " *refs-%s*" path)))
|
||||
;; Be defensive against users overriding encoding
|
||||
;; configurations (Helpful bugs #75 and #147).
|
||||
(coding-system-for-read nil)
|
||||
(file-name-handler-alist
|
||||
'(("\\(?:\\.dz\\|\\.txz\\|\\.xz\\|\\.lzma\\|\\.lz\\|\\.g?z\\|\\.\\(?:tgz\\|svgz\\|sifz\\)\\|\\.tbz2?\\|\\.bz2\\|\\.Z\\)\\(?:~\\|\\.~[-[:alnum:]:#@^._]+\\(?:~[[:digit:]]+\\)?~\\)?\\'" .
|
||||
jka-compr-handler)
|
||||
("\\`/:" . file-name-non-special))))
|
||||
(with-current-buffer fresh-buffer
|
||||
(setq-local elisp-refs--path path)
|
||||
(insert-file-contents path)
|
||||
;; We don't enable emacs-lisp-mode because it slows down this
|
||||
;; function significantly. We just need the syntax table for
|
||||
;; scan-sexps to do the right thing with comments.
|
||||
(set-syntax-table emacs-lisp-mode-syntax-table))
|
||||
fresh-buffer))
|
||||
|
||||
(defvar elisp-refs--highlighting-buffer
|
||||
nil
|
||||
"A temporary buffer used for highlighting.
|
||||
Since `elisp-refs--syntax-highlight' is a hot function, we
|
||||
don't want to create lots of temporary buffers.")
|
||||
|
||||
(defun elisp-refs--syntax-highlight (str)
|
||||
"Apply font-lock properties to a string STR of Emacs lisp code."
|
||||
;; Ensure we have a highlighting buffer to work with.
|
||||
(unless (and elisp-refs--highlighting-buffer
|
||||
(buffer-live-p elisp-refs--highlighting-buffer))
|
||||
(setq elisp-refs--highlighting-buffer
|
||||
(generate-new-buffer " *refs-highlighting*"))
|
||||
(with-current-buffer elisp-refs--highlighting-buffer
|
||||
(delay-mode-hooks (emacs-lisp-mode))))
|
||||
|
||||
(with-current-buffer elisp-refs--highlighting-buffer
|
||||
(erase-buffer)
|
||||
(insert str)
|
||||
(if (fboundp 'font-lock-ensure)
|
||||
(font-lock-ensure)
|
||||
(with-no-warnings
|
||||
(font-lock-fontify-buffer)))
|
||||
(buffer-string)))
|
||||
|
||||
(defun elisp-refs--replace-tabs (string)
|
||||
"Replace tabs in STRING with spaces."
|
||||
;; This is important for unindenting, as we may unindent by less
|
||||
;; than one whole tab.
|
||||
(s-replace "\t" (s-repeat tab-width " ") string))
|
||||
|
||||
(defun elisp-refs--lines (string)
|
||||
"Return a list of all the lines in STRING.
|
||||
'a\nb' -> ('a\n' 'b')"
|
||||
(let ((lines nil))
|
||||
(while (> (length string) 0)
|
||||
(let ((index (s-index-of "\n" string)))
|
||||
(if index
|
||||
(progn
|
||||
(push (substring string 0 (1+ index)) lines)
|
||||
(setq string (substring string (1+ index))))
|
||||
(push string lines)
|
||||
(setq string ""))))
|
||||
(nreverse lines)))
|
||||
|
||||
(defun elisp-refs--map-lines (string fn)
|
||||
"Execute FN for each line in string, and join the result together."
|
||||
(let ((result nil))
|
||||
(dolist (line (elisp-refs--lines string))
|
||||
(push (funcall fn line) result))
|
||||
(apply #'concat (nreverse result))))
|
||||
|
||||
(defun elisp-refs--unindent-rigidly (string)
|
||||
"Given an indented STRING, unindent rigidly until
|
||||
at least one line has no indent.
|
||||
|
||||
STRING should have a 'elisp-refs-start-pos property. The returned
|
||||
string will have this property updated to reflect the unindent."
|
||||
(let* ((lines (s-lines string))
|
||||
;; Get the leading whitespace for each line.
|
||||
(indents (--map (car (s-match (rx bos (+ whitespace)) it))
|
||||
lines))
|
||||
(min-indent (-min (--map (length it) indents))))
|
||||
(propertize
|
||||
(elisp-refs--map-lines
|
||||
string
|
||||
(lambda (line) (substring line min-indent)))
|
||||
'elisp-refs-unindented min-indent)))
|
||||
|
||||
(defun elisp-refs--containing-lines (buffer start-pos end-pos)
|
||||
"Return a string, all the lines in BUFFER that are between
|
||||
START-POS and END-POS (inclusive).
|
||||
|
||||
For the characters that are between START-POS and END-POS,
|
||||
propertize them."
|
||||
(let (expanded-start-pos expanded-end-pos)
|
||||
(with-current-buffer buffer
|
||||
;; Expand START-POS and END-POS to line boundaries.
|
||||
(goto-char start-pos)
|
||||
(beginning-of-line)
|
||||
(setq expanded-start-pos (point))
|
||||
(goto-char end-pos)
|
||||
(end-of-line)
|
||||
(setq expanded-end-pos (point))
|
||||
|
||||
;; Extract the rest of the line before and after the section we're interested in.
|
||||
(let* ((before-match (buffer-substring expanded-start-pos start-pos))
|
||||
(after-match (buffer-substring end-pos expanded-end-pos))
|
||||
;; Concat the extra text with the actual match, ensuring we
|
||||
;; highlight the match as code, but highlight the rest as as
|
||||
;; comments.
|
||||
(text (concat
|
||||
(propertize before-match
|
||||
'face 'font-lock-comment-face)
|
||||
(elisp-refs--syntax-highlight (buffer-substring start-pos end-pos))
|
||||
(propertize after-match
|
||||
'face 'font-lock-comment-face))))
|
||||
(-> text
|
||||
(elisp-refs--replace-tabs)
|
||||
(elisp-refs--unindent-rigidly)
|
||||
(propertize 'elisp-refs-start-pos expanded-start-pos
|
||||
'elisp-refs-path elisp-refs--path))))))
|
||||
|
||||
(defun elisp-refs--find-file (button)
|
||||
"Open the file referenced by BUTTON."
|
||||
(find-file (button-get button 'path))
|
||||
(goto-char (point-min)))
|
||||
|
||||
(define-button-type 'elisp-refs-path-button
|
||||
'action 'elisp-refs--find-file
|
||||
'follow-link t
|
||||
'help-echo "Open file")
|
||||
|
||||
(defun elisp-refs--path-button (path)
|
||||
"Return a button that navigates to PATH."
|
||||
(with-temp-buffer
|
||||
(insert-text-button
|
||||
(abbreviate-file-name path)
|
||||
:type 'elisp-refs-path-button
|
||||
'path path)
|
||||
(buffer-string)))
|
||||
|
||||
(defun elisp-refs--describe (button)
|
||||
"Show *Help* for the symbol referenced by BUTTON."
|
||||
(let ((symbol (button-get button 'symbol))
|
||||
(kind (button-get button 'kind)))
|
||||
(cond ((eq kind 'symbol)
|
||||
(describe-symbol symbol))
|
||||
((eq kind 'variable)
|
||||
(describe-variable symbol))
|
||||
(t
|
||||
;; Emacs uses `describe-function' for functions, macros and
|
||||
;; special forms.
|
||||
(describe-function symbol)))))
|
||||
|
||||
(define-button-type 'elisp-refs-describe-button
|
||||
'action 'elisp-refs--describe
|
||||
'follow-link t
|
||||
'help-echo "Describe")
|
||||
|
||||
(defun elisp-refs--describe-button (symbol kind)
|
||||
"Return a button that shows *Help* for SYMBOL.
|
||||
KIND should be 'function, 'macro, 'variable, 'special or 'symbol."
|
||||
(with-temp-buffer
|
||||
(insert (symbol-name kind) " ")
|
||||
(insert-text-button
|
||||
(symbol-name symbol)
|
||||
:type 'elisp-refs-describe-button
|
||||
'symbol symbol
|
||||
'kind kind)
|
||||
(buffer-string)))
|
||||
|
||||
(defun elisp-refs--pluralize (number thing)
|
||||
"Human-friendly description of NUMBER occurrences of THING."
|
||||
(format "%s %s%s"
|
||||
(elisp-refs--format-int number)
|
||||
thing
|
||||
(if (equal number 1) "" "s")))
|
||||
|
||||
(defun elisp-refs--format-count (symbol ref-count file-count
|
||||
searched-file-count prefix)
|
||||
(let* ((file-str (if (zerop file-count)
|
||||
""
|
||||
(format " in %s" (elisp-refs--pluralize file-count "file"))))
|
||||
(found-str (format "Found %s to %s%s."
|
||||
(elisp-refs--pluralize ref-count "reference")
|
||||
symbol
|
||||
file-str))
|
||||
(searched-str (if prefix
|
||||
(format "Searched %s in %s."
|
||||
(elisp-refs--pluralize searched-file-count "loaded file")
|
||||
(elisp-refs--path-button (file-name-as-directory prefix)))
|
||||
(format "Searched all %s loaded in Emacs."
|
||||
(elisp-refs--pluralize searched-file-count "file")))))
|
||||
(s-word-wrap 70 (format "%s %s" found-str searched-str))))
|
||||
|
||||
;; TODO: if we have multiple matches on one line, we repeatedly show
|
||||
;; that line. That's slightly confusing.
|
||||
(defun elisp-refs--show-results (symbol description results
|
||||
searched-file-count prefix)
|
||||
"Given a RESULTS list where each element takes the form \(forms . buffer\),
|
||||
render a friendly results buffer."
|
||||
(let ((buf (get-buffer-create (format "*refs: %s*" symbol))))
|
||||
(switch-to-buffer buf)
|
||||
(let ((inhibit-read-only t))
|
||||
(erase-buffer)
|
||||
(save-excursion
|
||||
;; Insert the header.
|
||||
(insert
|
||||
(elisp-refs--format-count
|
||||
description
|
||||
(-sum (--map (length (car it)) results))
|
||||
(length results)
|
||||
searched-file-count
|
||||
prefix)
|
||||
"\n\n")
|
||||
;; Insert the results.
|
||||
(--each results
|
||||
(-let* (((forms . buf) it)
|
||||
(path (with-current-buffer buf elisp-refs--path)))
|
||||
(insert
|
||||
(propertize "File: " 'face 'bold)
|
||||
(elisp-refs--path-button path) "\n")
|
||||
(--each forms
|
||||
(-let [(_ start-pos end-pos) it]
|
||||
(insert (elisp-refs--containing-lines buf start-pos end-pos)
|
||||
"\n")))
|
||||
(insert "\n")))
|
||||
;; Prepare the buffer for the user.
|
||||
(elisp-refs-mode)))
|
||||
;; Cleanup buffers created when highlighting results.
|
||||
(when elisp-refs--highlighting-buffer
|
||||
(kill-buffer elisp-refs--highlighting-buffer))))
|
||||
|
||||
(defun elisp-refs--loaded-bufs ()
|
||||
"Return a list of open buffers, one for each path in `load-path'."
|
||||
(mapcar #'elisp-refs--contents-buffer (elisp-refs--loaded-paths)))
|
||||
|
||||
(defun elisp-refs--search-1 (bufs match-fn)
|
||||
"Call MATCH-FN on each buffer in BUFS, reporting progress
|
||||
and accumulating results.
|
||||
|
||||
BUFS should be disposable: we make no effort to preserve their
|
||||
state during searching.
|
||||
|
||||
MATCH-FN should return a list where each element takes the form:
|
||||
\(form start-pos end-pos)."
|
||||
(let* (;; Our benchmark suggests we spend a lot of time in GC, and
|
||||
;; performance improves if we GC less frequently.
|
||||
(gc-cons-percentage 0.8)
|
||||
(total-bufs (length bufs)))
|
||||
(let ((searched 0)
|
||||
(forms-and-bufs nil))
|
||||
(dolist (buf bufs)
|
||||
(let* ((matching-forms (funcall match-fn buf)))
|
||||
;; If there were any matches in this buffer, push the
|
||||
;; matches along with the buffer into our results
|
||||
;; list.
|
||||
(when matching-forms
|
||||
(push (cons matching-forms buf) forms-and-bufs))
|
||||
;; Give feedback to the user on our progress, because
|
||||
;; searching takes several seconds.
|
||||
(when (and (zerop (mod searched 10))
|
||||
elisp-refs-verbose)
|
||||
(message "Searched %s/%s files" searched total-bufs))
|
||||
(cl-incf searched)))
|
||||
(when elisp-refs-verbose
|
||||
(message "Searched %s/%s files" total-bufs total-bufs))
|
||||
forms-and-bufs)))
|
||||
|
||||
(defun elisp-refs--search (symbol description match-fn &optional path-prefix)
|
||||
"Find references to SYMBOL in all loaded files; call MATCH-FN on each buffer.
|
||||
When PATH-PREFIX, limit to loaded files whose path starts with that prefix.
|
||||
|
||||
Display the results in a hyperlinked buffer.
|
||||
|
||||
MATCH-FN should return a list where each element takes the form:
|
||||
\(form start-pos end-pos)."
|
||||
(let* ((loaded-paths (elisp-refs--loaded-paths))
|
||||
(matching-paths (if path-prefix
|
||||
(--filter (s-starts-with? path-prefix it) loaded-paths)
|
||||
loaded-paths))
|
||||
(loaded-src-bufs (mapcar #'elisp-refs--contents-buffer matching-paths)))
|
||||
;; Use unwind-protect to ensure we always cleanup temporary
|
||||
;; buffers, even if the user hits C-g.
|
||||
(unwind-protect
|
||||
(progn
|
||||
(let ((forms-and-bufs
|
||||
(elisp-refs--search-1 loaded-src-bufs match-fn)))
|
||||
(elisp-refs--show-results symbol description forms-and-bufs
|
||||
(length loaded-src-bufs) path-prefix)))
|
||||
;; Clean up temporary buffers.
|
||||
(--each loaded-src-bufs (kill-buffer it)))))
|
||||
|
||||
(defun elisp-refs--completing-read-symbol (prompt &optional filter)
|
||||
"Read an interned symbol from the minibuffer,
|
||||
defaulting to the symbol at point. PROMPT is the string to prompt
|
||||
with.
|
||||
|
||||
If FILTER is given, only offer symbols where (FILTER sym) returns
|
||||
t."
|
||||
(let ((filter (or filter (lambda (_) t))))
|
||||
(read
|
||||
(completing-read prompt
|
||||
(elisp-refs--filter-obarray filter)
|
||||
nil nil nil nil
|
||||
(-if-let (sym (thing-at-point 'symbol))
|
||||
(when (funcall filter (read sym))
|
||||
sym))))))
|
||||
|
||||
;;; Commands
|
||||
|
||||
;;;###autoload
|
||||
(defun elisp-refs-function (symbol &optional path-prefix)
|
||||
"Display all the references to function SYMBOL, in all loaded
|
||||
elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the search.
|
||||
|
||||
This searches for functions, not macros. For that, see
|
||||
`elisp-refs-macro'."
|
||||
(interactive
|
||||
(list (elisp-refs--completing-read-symbol "Function: " #'functionp)
|
||||
(when current-prefix-arg
|
||||
(read-directory-name "Limit search to loaded files in: "))))
|
||||
(when (not (functionp symbol))
|
||||
(if (macrop symbol)
|
||||
(user-error "%s is a macro. Did you mean elisp-refs-macro?"
|
||||
symbol)
|
||||
(user-error "%s is not a function. Did you mean elisp-refs-symbol?"
|
||||
symbol)))
|
||||
(elisp-refs--search symbol
|
||||
(elisp-refs--describe-button symbol 'function)
|
||||
(lambda (buf)
|
||||
(elisp-refs--read-and-find buf symbol #'elisp-refs--function-p))
|
||||
path-prefix))
|
||||
|
||||
;;;###autoload
|
||||
(defun elisp-refs-macro (symbol &optional path-prefix)
|
||||
"Display all the references to macro SYMBOL, in all loaded
|
||||
elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the search.
|
||||
|
||||
This searches for macros, not functions. For that, see
|
||||
`elisp-refs-function'."
|
||||
(interactive
|
||||
(list (elisp-refs--completing-read-symbol "Macro: " #'macrop)
|
||||
(when current-prefix-arg
|
||||
(read-directory-name "Limit search to loaded files in: "))))
|
||||
(when (not (macrop symbol))
|
||||
(if (functionp symbol)
|
||||
(user-error "%s is a function. Did you mean elisp-refs-function?"
|
||||
symbol)
|
||||
(user-error "%s is not a function. Did you mean elisp-refs-symbol?"
|
||||
symbol)))
|
||||
(elisp-refs--search symbol
|
||||
(elisp-refs--describe-button symbol 'macro)
|
||||
(lambda (buf)
|
||||
(elisp-refs--read-and-find buf symbol #'elisp-refs--macro-p))
|
||||
path-prefix))
|
||||
|
||||
;;;###autoload
|
||||
(defun elisp-refs-special (symbol &optional path-prefix)
|
||||
"Display all the references to special form SYMBOL, in all loaded
|
||||
elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the search."
|
||||
(interactive
|
||||
(list (elisp-refs--completing-read-symbol "Special form: " #'special-form-p)
|
||||
(when current-prefix-arg
|
||||
(read-directory-name "Limit search to loaded files in: "))))
|
||||
(elisp-refs--search symbol
|
||||
(elisp-refs--describe-button symbol 'special-form)
|
||||
(lambda (buf)
|
||||
(elisp-refs--read-and-find buf symbol #'elisp-refs--special-p))
|
||||
path-prefix))
|
||||
|
||||
;;;###autoload
|
||||
(defun elisp-refs-variable (symbol &optional path-prefix)
|
||||
"Display all the references to variable SYMBOL, in all loaded
|
||||
elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the search."
|
||||
(interactive
|
||||
;; This is awkward. We don't want to just offer defvar variables,
|
||||
;; because then we can't search for code which uses `let' to bind
|
||||
;; symbols. There doesn't seem to be a good way to only offer
|
||||
;; variables that have been bound at some point.
|
||||
(list (elisp-refs--completing-read-symbol "Variable: " )
|
||||
(when current-prefix-arg
|
||||
(read-directory-name "Limit search to loaded files in: "))))
|
||||
(elisp-refs--search symbol
|
||||
(elisp-refs--describe-button symbol 'variable)
|
||||
(lambda (buf)
|
||||
(elisp-refs--read-and-find buf symbol #'elisp-refs--variable-p))
|
||||
path-prefix))
|
||||
|
||||
;;;###autoload
|
||||
(defun elisp-refs-symbol (symbol &optional path-prefix)
|
||||
"Display all the references to SYMBOL in all loaded elisp files.
|
||||
|
||||
If called with a prefix, prompt for a directory to limit the
|
||||
search."
|
||||
(interactive
|
||||
(list (elisp-refs--completing-read-symbol "Symbol: " )
|
||||
(when current-prefix-arg
|
||||
(read-directory-name "Limit search to loaded files in: "))))
|
||||
(elisp-refs--search symbol
|
||||
(elisp-refs--describe-button symbol 'symbol)
|
||||
(lambda (buf)
|
||||
(elisp-refs--read-and-find-symbol buf symbol))
|
||||
path-prefix))
|
||||
|
||||
;;; Mode
|
||||
|
||||
(defvar elisp-refs-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
;; TODO: it would be nice for TAB to navigate to file buttons too,
|
||||
;; like *Help* does.
|
||||
(set-keymap-parent map special-mode-map)
|
||||
(define-key map (kbd "<tab>") #'elisp-refs-next-match)
|
||||
(define-key map (kbd "<backtab>") #'elisp-refs-prev-match)
|
||||
(define-key map (kbd "n") #'elisp-refs-next-match)
|
||||
(define-key map (kbd "p") #'elisp-refs-prev-match)
|
||||
(define-key map (kbd "q") #'kill-this-buffer)
|
||||
(define-key map (kbd "RET") #'elisp-refs-visit-match)
|
||||
map)
|
||||
"Keymap for `elisp-refs-mode'.")
|
||||
|
||||
(define-derived-mode elisp-refs-mode special-mode "Refs"
|
||||
"Major mode for refs results buffers.")
|
||||
|
||||
(defun elisp-refs-visit-match ()
|
||||
"Go to the search result at point."
|
||||
(interactive)
|
||||
(let* ((path (get-text-property (point) 'elisp-refs-path))
|
||||
(pos (get-text-property (point) 'elisp-refs-start-pos))
|
||||
(unindent (get-text-property (point) 'elisp-refs-unindented))
|
||||
(column-offset (current-column))
|
||||
(line-offset -1))
|
||||
(when (null path)
|
||||
(user-error "No match here"))
|
||||
|
||||
;; If point is not on the first line of the match, work out how
|
||||
;; far away the first line is.
|
||||
(save-excursion
|
||||
(while (equal pos (get-text-property (point) 'elisp-refs-start-pos))
|
||||
(forward-line -1)
|
||||
(cl-incf line-offset)))
|
||||
|
||||
(find-file path)
|
||||
(goto-char pos)
|
||||
;; Move point so we're on the same char in the buffer that we were
|
||||
;; on in the results buffer.
|
||||
(forward-line line-offset)
|
||||
(beginning-of-line)
|
||||
(let ((target-offset (+ column-offset unindent))
|
||||
(i 0))
|
||||
(while (< i target-offset)
|
||||
(if (looking-at "\t")
|
||||
(cl-incf i tab-width)
|
||||
(cl-incf i))
|
||||
(forward-char 1)))))
|
||||
|
||||
(defun elisp-refs--move-to-match (direction)
|
||||
"Move point one match forwards.
|
||||
If DIRECTION is -1, moves backwards instead."
|
||||
(let* ((start-pos (point))
|
||||
(match-pos (get-text-property start-pos 'elisp-refs-start-pos))
|
||||
current-match-pos)
|
||||
(condition-case _err
|
||||
(progn
|
||||
;; Move forward/backwards until we're on the next/previous match.
|
||||
(catch 'done
|
||||
(while t
|
||||
(setq current-match-pos
|
||||
(get-text-property (point) 'elisp-refs-start-pos))
|
||||
(when (and current-match-pos
|
||||
(not (equal match-pos current-match-pos)))
|
||||
(throw 'done nil))
|
||||
(forward-char direction)))
|
||||
;; Move to the beginning of that match.
|
||||
(while (equal (get-text-property (point) 'elisp-refs-start-pos)
|
||||
(get-text-property (1- (point)) 'elisp-refs-start-pos))
|
||||
(forward-char -1))
|
||||
;; Move forward until we're on the first char of match within that
|
||||
;; line.
|
||||
(while (or
|
||||
(looking-at " ")
|
||||
(eq (get-text-property (point) 'face)
|
||||
'font-lock-comment-face))
|
||||
(forward-char 1)))
|
||||
;; If we're at the last result, don't move point.
|
||||
(end-of-buffer
|
||||
(progn
|
||||
(goto-char start-pos)
|
||||
(signal 'end-of-buffer nil))))))
|
||||
|
||||
(defun elisp-refs-prev-match ()
|
||||
"Move to the previous search result in the Refs buffer."
|
||||
(interactive)
|
||||
(elisp-refs--move-to-match -1))
|
||||
|
||||
(defun elisp-refs-next-match ()
|
||||
"Move to the next search result in the Refs buffer."
|
||||
(interactive)
|
||||
(elisp-refs--move-to-match 1))
|
||||
|
||||
(provide 'elisp-refs)
|
||||
;;; elisp-refs.el ends here
|
BIN
code/elpa/elisp-refs-20220220.2305/elisp-refs.elc
Normal file
BIN
code/elpa/elisp-refs-20220220.2305/elisp-refs.elc
Normal file
Binary file not shown.
22
code/elpa/f-20220405.1534/f-autoloads.el
Normal file
22
code/elpa/f-20220405.1534/f-autoloads.el
Normal file
|
@ -0,0 +1,22 @@
|
|||
;;; f-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "f" "f.el" (0 0 0 0))
|
||||
;;; Generated autoloads from f.el
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "f" '("f-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; f-autoloads.el ends here
|
2
code/elpa/f-20220405.1534/f-pkg.el
Normal file
2
code/elpa/f-20220405.1534/f-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from f.el -*- no-byte-compile: t -*-
|
||||
(define-package "f" "20220405.1534" "Modern API for working with files and directories" '((s "1.7.0") (dash "2.2.0")) :commit "b5cb884b3b4372a6f3d1d4428cf092ca1e5c8044" :authors '(("Johan Andersson" . "johan.rejeep@gmail.com")) :maintainer '("Johan Andersson" . "johan.rejeep@gmail.com") :keywords '("files" "directories") :url "http://github.com/rejeep/f.el")
|
599
code/elpa/f-20220405.1534/f.el
Normal file
599
code/elpa/f-20220405.1534/f.el
Normal file
|
@ -0,0 +1,599 @@
|
|||
;;; f.el --- Modern API for working with files and directories -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2013 Johan Andersson
|
||||
|
||||
;; Author: Johan Andersson <johan.rejeep@gmail.com>
|
||||
;; Maintainer: Johan Andersson <johan.rejeep@gmail.com>
|
||||
;; Version: 0.20.0
|
||||
;; Package-Version: 20220405.1534
|
||||
;; Package-Commit: b5cb884b3b4372a6f3d1d4428cf092ca1e5c8044
|
||||
;; Keywords: files, directories
|
||||
;; URL: http://github.com/rejeep/f.el
|
||||
;; Package-Requires: ((s "1.7.0") (dash "2.2.0"))
|
||||
|
||||
;; This file is NOT part of GNU Emacs.
|
||||
|
||||
;;; License:
|
||||
|
||||
;; 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 GNU Emacs; see the file COPYING. If not, write to the
|
||||
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;; Boston, MA 02110-1301, USA.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(require 's)
|
||||
(require 'dash)
|
||||
|
||||
(put 'f-guard-error 'error-conditions '(error f-guard-error))
|
||||
(put 'f-guard-error 'error-message "Destructive operation outside sandbox")
|
||||
|
||||
(defvar f--guard-paths nil
|
||||
"List of allowed paths to modify when guarded.
|
||||
|
||||
Do not modify this variable.")
|
||||
|
||||
(defmacro f--destructive (path &rest body)
|
||||
"If PATH is allowed to be modified, yield BODY.
|
||||
|
||||
If PATH is not allowed to be modified, throw error."
|
||||
(declare (indent 1))
|
||||
`(if f--guard-paths
|
||||
(if (--any? (or (f-same? it ,path)
|
||||
(f-ancestor-of? it ,path)) f--guard-paths)
|
||||
(progn ,@body)
|
||||
(signal 'f-guard-error (list ,path f--guard-paths)))
|
||||
,@body))
|
||||
|
||||
|
||||
;;;; Paths
|
||||
|
||||
(defun f-join (&rest args)
|
||||
"Join ARGS to a single path."
|
||||
(let (path (relative (f-relative? (car args))))
|
||||
(-map
|
||||
(lambda (arg)
|
||||
(setq path (f-expand arg path)))
|
||||
args)
|
||||
(if relative (f-relative path) path)))
|
||||
|
||||
(defun f-split (path)
|
||||
"Split PATH and return list containing parts."
|
||||
(let ((parts (s-split (f-path-separator) path 'omit-nulls)))
|
||||
(if (f-absolute? path)
|
||||
(push (f-path-separator) parts)
|
||||
parts)))
|
||||
|
||||
(defun f-expand (path &optional dir)
|
||||
"Expand PATH relative to DIR (or `default-directory').
|
||||
PATH and DIR can be either a directory names or directory file
|
||||
names. Return a directory name if PATH is a directory name, and
|
||||
a directory file name otherwise. File name handlers are
|
||||
ignored."
|
||||
(let (file-name-handler-alist)
|
||||
(expand-file-name path dir)))
|
||||
|
||||
(defun f-filename (path)
|
||||
"Return the name of PATH."
|
||||
(file-name-nondirectory (directory-file-name path)))
|
||||
|
||||
(defalias 'f-parent 'f-dirname)
|
||||
(defun f-dirname (path)
|
||||
"Return the parent directory to PATH."
|
||||
(let ((parent (file-name-directory
|
||||
(directory-file-name (f-expand path default-directory)))))
|
||||
(unless (f-same? path parent)
|
||||
(if (f-relative? path)
|
||||
(f-relative parent)
|
||||
(directory-file-name parent)))))
|
||||
|
||||
(defun f-common-parent (paths)
|
||||
"Return the deepest common parent directory of PATHS."
|
||||
(cond
|
||||
((not paths) nil)
|
||||
((not (cdr paths)) (f-parent (car paths)))
|
||||
(:otherwise
|
||||
(let* ((paths (-map 'f-split paths))
|
||||
(common (caar paths))
|
||||
(re nil))
|
||||
(while (and (not (null (car paths))) (--all? (equal (car it) common) paths))
|
||||
(setq paths (-map 'cdr paths))
|
||||
(push common re)
|
||||
(setq common (caar paths)))
|
||||
(cond
|
||||
((null re) "")
|
||||
((and (= (length re) 1) (f-root? (car re)))
|
||||
(f-root))
|
||||
(:otherwise
|
||||
(concat (apply 'f-join (nreverse re)) "/")))))))
|
||||
|
||||
(defalias 'f-ext 'file-name-extension)
|
||||
|
||||
(defalias 'f-no-ext 'file-name-sans-extension)
|
||||
|
||||
(defun f-swap-ext (path ext)
|
||||
"Return PATH but with EXT as the new extension.
|
||||
EXT must not be nil or empty."
|
||||
(if (s-blank? ext)
|
||||
(error "Extension cannot be empty or nil")
|
||||
(concat (f-no-ext path) "." ext)))
|
||||
|
||||
(defun f-base (path)
|
||||
"Return the name of PATH, excluding the extension of file."
|
||||
(f-no-ext (f-filename path)))
|
||||
|
||||
(defalias 'f-relative 'file-relative-name)
|
||||
|
||||
(defalias 'f-short 'abbreviate-file-name)
|
||||
(defalias 'f-abbrev 'abbreviate-file-name)
|
||||
|
||||
(defun f-long (path)
|
||||
"Return long version of PATH."
|
||||
(f-expand path))
|
||||
|
||||
(defalias 'f-canonical 'file-truename)
|
||||
|
||||
(defun f-slash (path)
|
||||
"Append slash to PATH unless one already.
|
||||
|
||||
Some functions, such as `call-process' requires there to be an
|
||||
ending slash."
|
||||
(if (f-dir? path)
|
||||
(file-name-as-directory path)
|
||||
path))
|
||||
|
||||
(defun f-full (path)
|
||||
"Return absolute path to PATH, with ending slash."
|
||||
(f-slash (f-long path)))
|
||||
|
||||
(defun f--uniquify (paths)
|
||||
"Helper for `f-uniquify' and `f-uniquify-alist'."
|
||||
(let* ((files-length (length paths))
|
||||
(uniq-filenames (--map (cons it (f-filename it)) paths))
|
||||
(uniq-filenames-next (-group-by 'cdr uniq-filenames)))
|
||||
(while (/= files-length (length uniq-filenames-next))
|
||||
(setq uniq-filenames-next
|
||||
(-group-by 'cdr
|
||||
(--mapcat
|
||||
(let ((conf-files (cdr it)))
|
||||
(if (> (length conf-files) 1)
|
||||
(--map (cons
|
||||
(car it)
|
||||
(concat
|
||||
(f-filename (s-chop-suffix (cdr it)
|
||||
(car it)))
|
||||
(f-path-separator) (cdr it)))
|
||||
conf-files)
|
||||
conf-files))
|
||||
uniq-filenames-next))))
|
||||
uniq-filenames-next))
|
||||
|
||||
(defun f-uniquify (files)
|
||||
"Return unique suffixes of FILES.
|
||||
|
||||
This function expects no duplicate paths."
|
||||
(-map 'car (f--uniquify files)))
|
||||
|
||||
(defun f-uniquify-alist (files)
|
||||
"Return alist mapping FILES to unique suffixes of FILES.
|
||||
|
||||
This function expects no duplicate paths."
|
||||
(-map 'cadr (f--uniquify files)))
|
||||
|
||||
|
||||
;;;; I/O
|
||||
|
||||
(defun f-read-bytes (path &optional beg end)
|
||||
"Read binary data from PATH.
|
||||
|
||||
Return the binary data as unibyte string. The optional second and
|
||||
third arguments BEG and END specify what portion of the file to
|
||||
read."
|
||||
(with-temp-buffer
|
||||
(set-buffer-multibyte nil)
|
||||
(setq buffer-file-coding-system 'binary)
|
||||
(insert-file-contents-literally path nil beg end)
|
||||
(buffer-substring-no-properties (point-min) (point-max))))
|
||||
|
||||
(defalias 'f-read 'f-read-text)
|
||||
(defun f-read-text (path &optional coding)
|
||||
"Read text with PATH, using CODING.
|
||||
|
||||
CODING defaults to `utf-8'.
|
||||
|
||||
Return the decoded text as multibyte string."
|
||||
(decode-coding-string (f-read-bytes path) (or coding 'utf-8)))
|
||||
|
||||
(defalias 'f-write 'f-write-text)
|
||||
(defun f-write-text (text coding path)
|
||||
"Write TEXT with CODING to PATH.
|
||||
|
||||
TEXT is a multibyte string. CODING is a coding system to encode
|
||||
TEXT with. PATH is a file name to write to."
|
||||
(f-write-bytes (encode-coding-string text coding) path))
|
||||
|
||||
(defun f-unibyte-string-p (s)
|
||||
"Determine whether S is a unibyte string."
|
||||
(not (multibyte-string-p s)))
|
||||
|
||||
(defun f-write-bytes (data path)
|
||||
"Write binary DATA to PATH.
|
||||
|
||||
DATA is a unibyte string. PATH is a file name to write to."
|
||||
(f--write-bytes data path nil))
|
||||
|
||||
(defalias 'f-append 'f-append-text)
|
||||
(defun f-append-text (text coding path)
|
||||
"Append TEXT with CODING to PATH.
|
||||
|
||||
If PATH does not exist, it is created."
|
||||
(f-append-bytes (encode-coding-string text coding) path))
|
||||
|
||||
(defun f-append-bytes (data path)
|
||||
"Append binary DATA to PATH.
|
||||
|
||||
If PATH does not exist, it is created."
|
||||
(f--write-bytes data path :append))
|
||||
|
||||
(defun f--write-bytes (data filename append)
|
||||
"Write binary DATA to FILENAME.
|
||||
If APPEND is non-nil, append the DATA to the existing contents."
|
||||
(f--destructive filename
|
||||
(unless (f-unibyte-string-p data)
|
||||
(signal 'wrong-type-argument (list 'f-unibyte-string-p data)))
|
||||
(let ((coding-system-for-write 'binary)
|
||||
(write-region-annotate-functions nil)
|
||||
(write-region-post-annotation-function nil))
|
||||
(write-region data nil filename append :silent)
|
||||
nil)))
|
||||
|
||||
|
||||
;;;; Destructive
|
||||
|
||||
(defun f-mkdir (&rest dirs)
|
||||
"Create directories DIRS."
|
||||
(let (path)
|
||||
(-each
|
||||
dirs
|
||||
(lambda (dir)
|
||||
(setq path (f-expand dir path))
|
||||
(unless (f-directory? path)
|
||||
(f--destructive path (make-directory path)))))))
|
||||
|
||||
(defun f-delete (path &optional force)
|
||||
"Delete PATH, which can be file or directory.
|
||||
|
||||
If FORCE is t, a directory will be deleted recursively."
|
||||
(f--destructive path
|
||||
(if (or (f-file? path) (f-symlink? path))
|
||||
(delete-file path)
|
||||
(delete-directory path force))))
|
||||
|
||||
(defun f-symlink (source path)
|
||||
"Create a symlink to SOURCE from PATH."
|
||||
(f--destructive path (make-symbolic-link source path)))
|
||||
|
||||
(defun f-move (from to)
|
||||
"Move or rename FROM to TO.
|
||||
If TO is a directory name, move FROM into TO."
|
||||
(f--destructive to (rename-file from to t)))
|
||||
|
||||
(defun f-copy (from to)
|
||||
"Copy file or directory FROM to TO.
|
||||
If FROM names a directory and TO is a directory name, copy FROM
|
||||
into TO as a subdirectory."
|
||||
(f--destructive to
|
||||
(if (f-file? from)
|
||||
(copy-file from to)
|
||||
;; The behavior of `copy-directory' differs between Emacs 23 and
|
||||
;; 24 in that in Emacs 23, the contents of `from' is copied to
|
||||
;; `to', while in Emacs 24 the directory `from' is copied to
|
||||
;; `to'. We want the Emacs 24 behavior.
|
||||
(if (> emacs-major-version 23)
|
||||
(copy-directory from to)
|
||||
(if (f-dir? to)
|
||||
(progn
|
||||
(apply 'f-mkdir (f-split to))
|
||||
(let ((new-to (f-expand (f-filename from) to)))
|
||||
(copy-directory from new-to)))
|
||||
(copy-directory from to))))))
|
||||
|
||||
(defun f-copy-contents (from to)
|
||||
"Copy contents in directory FROM, to directory TO."
|
||||
(unless (f-exists? to)
|
||||
(error "Cannot copy contents to non existing directory %s" to))
|
||||
(unless (f-dir? from)
|
||||
(error "Cannot copy contents as %s is a file" from))
|
||||
(--each (f-entries from)
|
||||
(f-copy it (file-name-as-directory to))))
|
||||
|
||||
(defun f-touch (path)
|
||||
"Update PATH last modification date or create if it does not exist."
|
||||
(f--destructive path
|
||||
(if (f-file? path)
|
||||
(set-file-times path)
|
||||
(f-write-bytes "" path))))
|
||||
|
||||
|
||||
;;;; Predicates
|
||||
|
||||
(defalias 'f-exists? 'file-exists-p)
|
||||
(defalias 'f-exists-p 'file-exists-p)
|
||||
|
||||
(defalias 'f-directory? 'file-directory-p)
|
||||
(defalias 'f-directory-p 'file-directory-p)
|
||||
(defalias 'f-dir? 'file-directory-p)
|
||||
(defalias 'f-dir-p 'file-directory-p)
|
||||
|
||||
|
||||
(defalias 'f-file? 'file-regular-p)
|
||||
(defalias 'f-file-p 'file-regular-p)
|
||||
|
||||
(defun f-symlink? (path)
|
||||
"Return t if PATH is symlink, false otherwise."
|
||||
(not (not (file-symlink-p path))))
|
||||
|
||||
(defalias 'f-symlink-p 'f-symlink?)
|
||||
|
||||
(defalias 'f-readable? 'file-readable-p)
|
||||
(defalias 'f-readable-p 'file-readable-p)
|
||||
|
||||
(defalias 'f-writable? 'file-writable-p)
|
||||
(defalias 'f-writable-p 'file-writable-p)
|
||||
|
||||
(defalias 'f-executable? 'file-executable-p)
|
||||
(defalias 'f-executable-p 'f-executable?)
|
||||
|
||||
(defalias 'f-absolute? 'file-name-absolute-p)
|
||||
(defalias 'f-absolute-p 'file-name-absolute-p)
|
||||
|
||||
(defun f-relative? (path)
|
||||
"Return t if PATH is relative, false otherwise."
|
||||
(not (f-absolute? path)))
|
||||
|
||||
(defalias 'f-relative-p 'f-relative?)
|
||||
|
||||
(defun f-root? (path)
|
||||
"Return t if PATH is root directory, false otherwise."
|
||||
(not (f-parent path)))
|
||||
|
||||
(defalias 'f-root-p 'f-root?)
|
||||
|
||||
(defun f-ext? (path &optional ext)
|
||||
"Return t if extension of PATH is EXT, false otherwise.
|
||||
|
||||
If EXT is nil or omitted, return t if PATH has any extension,
|
||||
false otherwise.
|
||||
|
||||
The extension, in a file name, is the part that follows the last
|
||||
'.', excluding version numbers and backup suffixes."
|
||||
(if ext
|
||||
(string= (f-ext path) ext)
|
||||
(not (eq (f-ext path) nil))))
|
||||
|
||||
(defalias 'f-ext-p 'f-ext?)
|
||||
|
||||
(defalias 'f-equal? 'f-same?)
|
||||
(defalias 'f-equal-p 'f-equal?)
|
||||
|
||||
(defun f-same? (path-a path-b)
|
||||
"Return t if PATH-A and PATH-B are references to same file."
|
||||
(when (and (f-exists? path-a)
|
||||
(f-exists? path-b))
|
||||
(equal
|
||||
(f-canonical (directory-file-name (f-expand path-a)))
|
||||
(f-canonical (directory-file-name (f-expand path-b))))))
|
||||
|
||||
(defalias 'f-same-p 'f-same?)
|
||||
|
||||
(defun f-parent-of? (path-a path-b)
|
||||
"Return t if PATH-A is parent of PATH-B."
|
||||
(--when-let (f-parent path-b)
|
||||
(f-same? path-a it)))
|
||||
|
||||
(defalias 'f-parent-of-p 'f-parent-of?)
|
||||
|
||||
(defun f-child-of? (path-a path-b)
|
||||
"Return t if PATH-A is child of PATH-B."
|
||||
(--when-let (f-parent path-a)
|
||||
(f-same? it path-b)))
|
||||
|
||||
(defalias 'f-child-of-p 'f-child-of?)
|
||||
|
||||
(defun f-ancestor-of? (path-a path-b)
|
||||
"Return t if PATH-A is ancestor of PATH-B."
|
||||
(unless (f-same? path-a path-b)
|
||||
(s-starts-with? (f-full path-a)
|
||||
(f-full path-b))))
|
||||
|
||||
(defalias 'f-ancestor-of-p 'f-ancestor-of?)
|
||||
|
||||
(defun f-descendant-of? (path-a path-b)
|
||||
"Return t if PATH-A is desendant of PATH-B."
|
||||
(unless (f-same? path-a path-b)
|
||||
(s-starts-with? (f-full path-b)
|
||||
(f-full path-a))))
|
||||
|
||||
(defalias 'f-descendant-of-p 'f-descendant-of?)
|
||||
|
||||
(defun f-hidden? (path)
|
||||
"Return t if PATH is hidden, nil otherwise."
|
||||
(unless (f-exists? path)
|
||||
(error "Path does not exist: %s" path))
|
||||
(string= (substring path 0 1) "."))
|
||||
|
||||
(defalias 'f-hidden-p 'f-hidden?)
|
||||
|
||||
(defun f-empty? (path)
|
||||
"If PATH is a file, return t if the file in PATH is empty, nil otherwise.
|
||||
If PATH is directory, return t if directory has no files, nil otherwise."
|
||||
(if (f-directory? path)
|
||||
(equal (f-files path nil t) nil)
|
||||
(= (f-size path) 0)))
|
||||
|
||||
(defalias 'f-empty-p 'f-empty?)
|
||||
|
||||
|
||||
;;;; Stats
|
||||
|
||||
(defun f-size (path)
|
||||
"Return size of PATH.
|
||||
|
||||
If PATH is a file, return size of that file. If PATH is
|
||||
directory, return sum of all files in PATH."
|
||||
(if (f-directory? path)
|
||||
(-sum (-map 'f-size (f-files path nil t)))
|
||||
(nth 7 (file-attributes path))))
|
||||
|
||||
(defun f-depth (path)
|
||||
"Return the depth of PATH.
|
||||
|
||||
At first, PATH is expanded with `f-expand'. Then the full path is used to
|
||||
detect the depth.
|
||||
'/' will be zero depth, '/usr' will be one depth. And so on."
|
||||
(- (length (f-split (f-expand path))) 1))
|
||||
|
||||
|
||||
;;;; Misc
|
||||
|
||||
(defun f-this-file ()
|
||||
"Return path to this file."
|
||||
(cond
|
||||
(load-in-progress load-file-name)
|
||||
((and (boundp 'byte-compile-current-file) byte-compile-current-file)
|
||||
byte-compile-current-file)
|
||||
(:else (buffer-file-name))))
|
||||
|
||||
(defvar f--path-separator nil
|
||||
"A variable to cache result of `f-path-separator'.")
|
||||
|
||||
(defun f-path-separator ()
|
||||
"Return path separator."
|
||||
(or f--path-separator
|
||||
(setq f--path-separator (substring (f-join "x" "y") 1 2))))
|
||||
|
||||
(defun f-glob (pattern &optional path)
|
||||
"Find PATTERN in PATH."
|
||||
(file-expand-wildcards
|
||||
(f-join (or path default-directory) pattern)))
|
||||
|
||||
(defun f--collect-entries (path recursive)
|
||||
(let (result
|
||||
(entries
|
||||
(-reject
|
||||
(lambda (file)
|
||||
(or
|
||||
(equal (f-filename file) ".")
|
||||
(equal (f-filename file) "..")))
|
||||
(directory-files path t))))
|
||||
(cond (recursive
|
||||
(-map
|
||||
(lambda (entry)
|
||||
(if (f-file? entry)
|
||||
(setq result (cons entry result))
|
||||
(when (f-directory? entry)
|
||||
(setq result (cons entry result))
|
||||
(setq result (append result (f--collect-entries entry recursive))))))
|
||||
entries))
|
||||
(t (setq result entries)))
|
||||
result))
|
||||
|
||||
(defmacro f--entries (path body &optional recursive)
|
||||
"Anaphoric version of `f-entries'."
|
||||
`(f-entries
|
||||
,path
|
||||
(lambda (path)
|
||||
(let ((it path))
|
||||
,body))
|
||||
,recursive))
|
||||
|
||||
(defun f-entries (path &optional fn recursive)
|
||||
"Find all files and directories in PATH.
|
||||
|
||||
FN - called for each found file and directory. If FN returns a thruthy
|
||||
value, file or directory will be included.
|
||||
RECURSIVE - Search for files and directories recursive."
|
||||
(let ((entries (f--collect-entries path recursive)))
|
||||
(if fn (-select fn entries) entries)))
|
||||
|
||||
(defmacro f--directories (path body &optional recursive)
|
||||
"Anaphoric version of `f-directories'."
|
||||
`(f-directories
|
||||
,path
|
||||
(lambda (path)
|
||||
(let ((it path))
|
||||
,body))
|
||||
,recursive))
|
||||
|
||||
(defun f-directories (path &optional fn recursive)
|
||||
"Find all directories in PATH. See `f-entries'."
|
||||
(let ((directories (-select 'f-directory? (f--collect-entries path recursive))))
|
||||
(if fn (-select fn directories) directories)))
|
||||
|
||||
(defmacro f--files (path body &optional recursive)
|
||||
"Anaphoric version of `f-files'."
|
||||
`(f-files
|
||||
,path
|
||||
(lambda (path)
|
||||
(let ((it path))
|
||||
,body))
|
||||
,recursive))
|
||||
|
||||
(defun f-files (path &optional fn recursive)
|
||||
"Find all files in PATH. See `f-entries'."
|
||||
(let ((files (-select 'f-file? (f--collect-entries path recursive))))
|
||||
(if fn (-select fn files) files)))
|
||||
|
||||
(defmacro f--traverse-upwards (body &optional path)
|
||||
"Anaphoric version of `f-traverse-upwards'."
|
||||
`(f-traverse-upwards
|
||||
(lambda (dir)
|
||||
(let ((it dir))
|
||||
,body))
|
||||
,path))
|
||||
|
||||
(defun f-traverse-upwards (fn &optional path)
|
||||
"Traverse up as long as FN return nil, starting at PATH.
|
||||
|
||||
If FN returns a non-nil value, the path sent as argument to FN is
|
||||
returned. If no function callback return a non-nil value, nil is
|
||||
returned."
|
||||
(unless path
|
||||
(setq path default-directory))
|
||||
(when (f-relative? path)
|
||||
(setq path (f-expand path)))
|
||||
(if (funcall fn path)
|
||||
path
|
||||
(unless (f-root? path)
|
||||
(f-traverse-upwards fn (f-parent path)))))
|
||||
|
||||
(defun f-root ()
|
||||
"Return absolute root."
|
||||
(f-traverse-upwards 'f-root?))
|
||||
|
||||
(defmacro f-with-sandbox (path-or-paths &rest body)
|
||||
"Only allow PATH-OR-PATHS and descendants to be modified in BODY."
|
||||
(declare (indent 1))
|
||||
`(let ((paths (if (listp ,path-or-paths)
|
||||
,path-or-paths
|
||||
(list ,path-or-paths))))
|
||||
(unwind-protect
|
||||
(let ((f--guard-paths paths))
|
||||
,@body)
|
||||
(setq f--guard-paths nil))))
|
||||
|
||||
(provide 'f)
|
||||
|
||||
;;; f.el ends here
|
BIN
code/elpa/f-20220405.1534/f.elc
Normal file
BIN
code/elpa/f-20220405.1534/f.elc
Normal file
Binary file not shown.
2
code/elpa/gnupg/S.gpg-agent
Normal file
2
code/elpa/gnupg/S.gpg-agent
Normal file
|
@ -0,0 +1,2 @@
|
|||
53960
|
||||
<EFBFBD>d6Nzp9Pホセw羯.
|
BIN
code/elpa/gnupg/S.gpg-agent.browser
Normal file
BIN
code/elpa/gnupg/S.gpg-agent.browser
Normal file
Binary file not shown.
3
code/elpa/gnupg/S.gpg-agent.extra
Normal file
3
code/elpa/gnupg/S.gpg-agent.extra
Normal file
|
@ -0,0 +1,3 @@
|
|||
53961
|
||||
<EFBFBD>
|
||||
Ё0iclЌюd+-<2D>B В
|
2
code/elpa/gnupg/S.gpg-agent.ssh
Normal file
2
code/elpa/gnupg/S.gpg-agent.ssh
Normal file
|
@ -0,0 +1,2 @@
|
|||
53964
|
||||
(¿יתֵ<D7AA>)<29><>[·™^9y
|
0
code/elpa/gnupg/gnupg_spawn_agent_sentinel.lock
Normal file
0
code/elpa/gnupg/gnupg_spawn_agent_sentinel.lock
Normal file
BIN
code/elpa/gnupg/pubring.kb_
Normal file
BIN
code/elpa/gnupg/pubring.kb_
Normal file
Binary file not shown.
BIN
code/elpa/gnupg/pubring.kbx
Normal file
BIN
code/elpa/gnupg/pubring.kbx
Normal file
Binary file not shown.
0
code/elpa/gnupg/pubring.kbx.lock
Normal file
0
code/elpa/gnupg/pubring.kbx.lock
Normal file
BIN
code/elpa/gnupg/trustdb.gpg
Normal file
BIN
code/elpa/gnupg/trustdb.gpg
Normal file
Binary file not shown.
0
code/elpa/gnupg/trustdb.gpg.lock
Normal file
0
code/elpa/gnupg/trustdb.gpg.lock
Normal file
114
code/elpa/go-mode-20220114.2239/go-mode-autoloads.el
Normal file
114
code/elpa/go-mode-20220114.2239/go-mode-autoloads.el
Normal file
|
@ -0,0 +1,114 @@
|
|||
;;; go-mode-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "go-mode" "go-mode.el" (0 0 0 0))
|
||||
;;; Generated autoloads from go-mode.el
|
||||
|
||||
(autoload 'go-mode "go-mode" "\
|
||||
Major mode for editing Go source text.
|
||||
|
||||
This mode provides (not just) basic editing capabilities for
|
||||
working with Go code. It offers almost complete syntax
|
||||
highlighting, indentation that is almost identical to gofmt and
|
||||
proper parsing of the buffer content to allow features such as
|
||||
navigation by function, manipulation of comments or detection of
|
||||
strings.
|
||||
|
||||
In addition to these core features, it offers various features to
|
||||
help with writing Go code. You can directly run buffer content
|
||||
through gofmt, read godoc documentation from within Emacs, modify
|
||||
and clean up the list of package imports or interact with the
|
||||
Playground (uploading and downloading pastes).
|
||||
|
||||
The following extra functions are defined:
|
||||
|
||||
- `gofmt'
|
||||
- `godoc' and `godoc-at-point'
|
||||
- `go-import-add'
|
||||
- `go-remove-unused-imports'
|
||||
- `go-goto-arguments'
|
||||
- `go-goto-docstring'
|
||||
- `go-goto-function'
|
||||
- `go-goto-function-name'
|
||||
- `go-goto-imports'
|
||||
- `go-goto-return-values'
|
||||
- `go-goto-method-receiver'
|
||||
- `go-play-buffer' and `go-play-region'
|
||||
- `go-download-play'
|
||||
- `godef-describe' and `godef-jump'
|
||||
- `go-coverage'
|
||||
- `go-set-project'
|
||||
- `go-reset-gopath'
|
||||
|
||||
If you want to automatically run `gofmt' before saving a file,
|
||||
add the following hook to your emacs configuration:
|
||||
|
||||
\(add-hook 'before-save-hook #'gofmt-before-save)
|
||||
|
||||
If you want to use `godef-jump' instead of etags (or similar),
|
||||
consider binding godef-jump to `M-.', which is the default key
|
||||
for `find-tag':
|
||||
|
||||
\(add-hook 'go-mode-hook (lambda ()
|
||||
(local-set-key (kbd \"M-.\") #'godef-jump)))
|
||||
|
||||
Please note that godef is an external dependency. You can install
|
||||
it with
|
||||
|
||||
go get github.com/rogpeppe/godef
|
||||
|
||||
|
||||
If you're looking for even more integration with Go, namely
|
||||
on-the-fly syntax checking, auto-completion and snippets, it is
|
||||
recommended that you look at flycheck
|
||||
\(see URL `https://github.com/flycheck/flycheck') or flymake in combination
|
||||
with goflymake (see URL `https://github.com/dougm/goflymake'), gocode
|
||||
\(see URL `https://github.com/nsf/gocode'), go-eldoc
|
||||
\(see URL `github.com/syohex/emacs-go-eldoc') and yasnippet-go
|
||||
\(see URL `https://github.com/dominikh/yasnippet-go')
|
||||
|
||||
\(fn)" t nil)
|
||||
|
||||
(add-to-list 'auto-mode-alist (cons "\\.go\\'" 'go-mode))
|
||||
|
||||
(autoload 'gofmt-before-save "go-mode" "\
|
||||
Add this to .emacs to run gofmt on the current buffer when saving:
|
||||
\(add-hook 'before-save-hook 'gofmt-before-save).
|
||||
|
||||
Note that this will cause ‘go-mode’ to get loaded the first time
|
||||
you save any file, kind of defeating the point of autoloading." t nil)
|
||||
|
||||
(autoload 'godoc "go-mode" "\
|
||||
Show Go documentation for QUERY, much like \\<go-mode-map>\\[man].
|
||||
|
||||
\(fn QUERY)" t nil)
|
||||
|
||||
(autoload 'go-download-play "go-mode" "\
|
||||
Download a paste from the playground and insert it in a Go buffer.
|
||||
Tries to look for a URL at point.
|
||||
|
||||
\(fn URL)" t nil)
|
||||
|
||||
(autoload 'go-dot-mod-mode "go-mode" "\
|
||||
A major mode for editing go.mod files.
|
||||
|
||||
\(fn)" t nil)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("go\\.mod\\'" . go-dot-mod-mode))
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "go-mode" '("go-" "god" "gofmt")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; go-mode-autoloads.el ends here
|
2
code/elpa/go-mode-20220114.2239/go-mode-pkg.el
Normal file
2
code/elpa/go-mode-20220114.2239/go-mode-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from go-mode.el -*- no-byte-compile: t -*-
|
||||
(define-package "go-mode" "20220114.2239" "Major mode for the Go programming language" '((emacs "26.1")) :commit "fa2693278637f56759480d2bf203bb8aad107230" :authors '(("The go-mode Authors")) :maintainer '("The go-mode Authors") :keywords '("languages" "go") :url "https://github.com/dominikh/go-mode.el")
|
3049
code/elpa/go-mode-20220114.2239/go-mode.el
Normal file
3049
code/elpa/go-mode-20220114.2239/go-mode.el
Normal file
File diff suppressed because it is too large
Load diff
BIN
code/elpa/go-mode-20220114.2239/go-mode.elc
Normal file
BIN
code/elpa/go-mode-20220114.2239/go-mode.elc
Normal file
Binary file not shown.
68
code/elpa/helpful-20220412.421/helpful-autoloads.el
Normal file
68
code/elpa/helpful-20220412.421/helpful-autoloads.el
Normal file
|
@ -0,0 +1,68 @@
|
|||
;;; helpful-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "helpful" "helpful.el" (0 0 0 0))
|
||||
;;; Generated autoloads from helpful.el
|
||||
|
||||
(autoload 'helpful-function "helpful" "\
|
||||
Show help for function named SYMBOL.
|
||||
|
||||
See also `helpful-macro', `helpful-command' and `helpful-callable'.
|
||||
|
||||
\(fn SYMBOL)" t nil)
|
||||
|
||||
(autoload 'helpful-command "helpful" "\
|
||||
Show help for interactive function named SYMBOL.
|
||||
|
||||
See also `helpful-function'.
|
||||
|
||||
\(fn SYMBOL)" t nil)
|
||||
|
||||
(autoload 'helpful-key "helpful" "\
|
||||
Show help for interactive command bound to KEY-SEQUENCE.
|
||||
|
||||
\(fn KEY-SEQUENCE)" t nil)
|
||||
|
||||
(autoload 'helpful-macro "helpful" "\
|
||||
Show help for macro named SYMBOL.
|
||||
|
||||
\(fn SYMBOL)" t nil)
|
||||
|
||||
(autoload 'helpful-callable "helpful" "\
|
||||
Show help for function, macro or special form named SYMBOL.
|
||||
|
||||
See also `helpful-macro', `helpful-function' and `helpful-command'.
|
||||
|
||||
\(fn SYMBOL)" t nil)
|
||||
|
||||
(autoload 'helpful-symbol "helpful" "\
|
||||
Show help for SYMBOL, a variable, function or macro.
|
||||
|
||||
See also `helpful-callable' and `helpful-variable'.
|
||||
|
||||
\(fn SYMBOL)" t nil)
|
||||
|
||||
(autoload 'helpful-variable "helpful" "\
|
||||
Show help for variable named SYMBOL.
|
||||
|
||||
\(fn SYMBOL)" t nil)
|
||||
|
||||
(autoload 'helpful-at-point "helpful" "\
|
||||
Show help for the symbol at point." t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "helpful" '("helpful-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; helpful-autoloads.el ends here
|
2
code/elpa/helpful-20220412.421/helpful-pkg.el
Normal file
2
code/elpa/helpful-20220412.421/helpful-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from helpful.el -*- no-byte-compile: t -*-
|
||||
(define-package "helpful" "20220412.421" "A better *help* buffer" '((emacs "25") (dash "2.18.0") (s "1.11.0") (f "0.20.0") (elisp-refs "1.2")) :commit "c2729a236a84a1fbd3d184c163fbd10e0fd62077" :authors '(("Wilfred Hughes" . "me@wilfred.me.uk")) :maintainer '("Wilfred Hughes" . "me@wilfred.me.uk") :keywords '("help" "lisp") :url "https://github.com/Wilfred/helpful")
|
2946
code/elpa/helpful-20220412.421/helpful.el
Normal file
2946
code/elpa/helpful-20220412.421/helpful.el
Normal file
File diff suppressed because it is too large
Load diff
BIN
code/elpa/helpful-20220412.421/helpful.elc
Normal file
BIN
code/elpa/helpful-20220412.421/helpful.elc
Normal file
Binary file not shown.
65
code/elpa/json-mode-20211011.630/json-mode-autoloads.el
Normal file
65
code/elpa/json-mode-20211011.630/json-mode-autoloads.el
Normal file
|
@ -0,0 +1,65 @@
|
|||
;;; json-mode-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "json-mode" "json-mode.el" (0 0 0 0))
|
||||
;;; Generated autoloads from json-mode.el
|
||||
|
||||
(defconst json-mode-standard-file-ext '(".json" ".jsonld") "\
|
||||
List of JSON file extensions.")
|
||||
|
||||
(defsubst json-mode--update-auto-mode (filenames) "\
|
||||
Update the `json-mode' entry of `auto-mode-alist'.
|
||||
|
||||
FILENAMES should be a list of file as string.
|
||||
Return the new `auto-mode-alist' entry" (let* ((new-regexp (rx-to-string `(seq (eval (cons 'or (append json-mode-standard-file-ext ',filenames))) eot))) (new-entry (cons new-regexp 'json-mode)) (old-entry (when (boundp 'json-mode--auto-mode-entry) json-mode--auto-mode-entry))) (setq auto-mode-alist (delete old-entry auto-mode-alist)) (add-to-list 'auto-mode-alist new-entry) new-entry))
|
||||
|
||||
(defvar json-mode-auto-mode-list '(".babelrc" ".bowerrc" "composer.lock") "\
|
||||
List of filenames for the JSON entry of `auto-mode-alist'.
|
||||
|
||||
Note however that custom `json-mode' entries in `auto-mode-alist'
|
||||
won’t be affected.")
|
||||
|
||||
(custom-autoload 'json-mode-auto-mode-list "json-mode" nil)
|
||||
|
||||
(defvar json-mode--auto-mode-entry (json-mode--update-auto-mode json-mode-auto-mode-list) "\
|
||||
Regexp generated from the `json-mode-auto-mode-list'.")
|
||||
|
||||
(autoload 'json-mode "json-mode" "\
|
||||
Major mode for editing JSON files
|
||||
|
||||
\(fn)" t nil)
|
||||
|
||||
(autoload 'jsonc-mode "json-mode" "\
|
||||
Major mode for editing JSON files with comments
|
||||
|
||||
\(fn)" t nil)
|
||||
|
||||
(add-to-list 'magic-fallback-mode-alist '("^[{[]$" . json-mode))
|
||||
|
||||
(autoload 'json-mode-show-path "json-mode" "\
|
||||
Print the path to the node at point to the minibuffer." t nil)
|
||||
|
||||
(autoload 'json-mode-kill-path "json-mode" "\
|
||||
Save JSON path to object at point to kill ring." t nil)
|
||||
|
||||
(autoload 'json-mode-beautify "json-mode" "\
|
||||
Beautify / pretty-print the active region (or the entire buffer if no active region).
|
||||
|
||||
\(fn BEGIN END)" t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "json-mode" '("json")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; json-mode-autoloads.el ends here
|
2
code/elpa/json-mode-20211011.630/json-mode-pkg.el
Normal file
2
code/elpa/json-mode-20211011.630/json-mode-pkg.el
Normal file
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from json-mode.el -*- no-byte-compile: t -*-
|
||||
(define-package "json-mode" "20211011.630" "Major mode for editing JSON files." '((json-snatcher "1.0.0") (emacs "24.4")) :commit "eedb4560034f795a7950fa07016bd4347c368873" :authors '(("Josh Johnston")) :maintainer '("Josh Johnston") :url "https://github.com/joshwnj/json-mode")
|
267
code/elpa/json-mode-20211011.630/json-mode.el
Normal file
267
code/elpa/json-mode-20211011.630/json-mode.el
Normal file
|
@ -0,0 +1,267 @@
|
|||
;;; json-mode.el --- Major mode for editing JSON files.
|
||||
|
||||
;; Copyright (C) 2011-2014 Josh Johnston
|
||||
|
||||
;; Author: Josh Johnston
|
||||
;; URL: https://github.com/joshwnj/json-mode
|
||||
;; Package-Version: 20211011.630
|
||||
;; Package-Commit: eedb4560034f795a7950fa07016bd4347c368873
|
||||
;; Version: 1.6.0
|
||||
;; Package-Requires: ((json-snatcher "1.0.0") (emacs "24.4"))
|
||||
|
||||
;; 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; extend the builtin js-mode's syntax highlighting
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'js)
|
||||
(require 'rx)
|
||||
(require 'json-snatcher)
|
||||
|
||||
(defgroup json-mode '()
|
||||
"Major mode for editing JSON files."
|
||||
:group 'js)
|
||||
|
||||
;;;###autoload
|
||||
(defconst json-mode-standard-file-ext '(".json" ".jsonld")
|
||||
"List of JSON file extensions.")
|
||||
|
||||
;; This is to be sure the customization is loaded. Otherwise,
|
||||
;; autoload discards any defun or defcustom.
|
||||
;;;###autoload
|
||||
(defsubst json-mode--update-auto-mode (filenames)
|
||||
"Update the `json-mode' entry of `auto-mode-alist'.
|
||||
|
||||
FILENAMES should be a list of file as string.
|
||||
Return the new `auto-mode-alist' entry"
|
||||
(let* ((new-regexp
|
||||
(rx-to-string
|
||||
`(seq (eval
|
||||
(cons 'or
|
||||
(append json-mode-standard-file-ext
|
||||
',filenames))) eot)))
|
||||
(new-entry (cons new-regexp 'json-mode))
|
||||
(old-entry (when (boundp 'json-mode--auto-mode-entry)
|
||||
json-mode--auto-mode-entry)))
|
||||
(setq auto-mode-alist (delete old-entry auto-mode-alist))
|
||||
(add-to-list 'auto-mode-alist new-entry)
|
||||
new-entry))
|
||||
|
||||
;;; make byte-compiler happy
|
||||
(defvar json-mode--auto-mode-entry)
|
||||
|
||||
;;;###autoload
|
||||
(defcustom json-mode-auto-mode-list '(
|
||||
".babelrc"
|
||||
".bowerrc"
|
||||
"composer.lock"
|
||||
)
|
||||
"List of filenames for the JSON entry of `auto-mode-alist'.
|
||||
|
||||
Note however that custom `json-mode' entries in `auto-mode-alist'
|
||||
won’t be affected."
|
||||
:group 'json-mode
|
||||
:type '(repeat string)
|
||||
:set (lambda (symbol value)
|
||||
"Update SYMBOL with a new regexp made from VALUE.
|
||||
|
||||
This function calls `json-mode--update-auto-mode' to change the
|
||||
`json-mode--auto-mode-entry' entry in `auto-mode-alist'."
|
||||
(set-default symbol value)
|
||||
(setq json-mode--auto-mode-entry (json-mode--update-auto-mode value))))
|
||||
|
||||
;; Autoload needed to initalize the the `auto-list-mode' entry.
|
||||
;;;###autoload
|
||||
(defvar json-mode--auto-mode-entry (json-mode--update-auto-mode json-mode-auto-mode-list)
|
||||
"Regexp generated from the `json-mode-auto-mode-list'.")
|
||||
|
||||
(defconst json-mode-quoted-string-re
|
||||
(rx (group (char ?\")
|
||||
(zero-or-more (or (seq ?\\ ?\\)
|
||||
(seq ?\\ ?\")
|
||||
(seq ?\\ (not (any ?\" ?\\)))
|
||||
(not (any ?\" ?\\))))
|
||||
(char ?\"))))
|
||||
(defconst json-mode-quoted-key-re
|
||||
(rx (group (char ?\")
|
||||
(zero-or-more (or (seq ?\\ ?\\)
|
||||
(seq ?\\ ?\")
|
||||
(seq ?\\ (not (any ?\" ?\\)))
|
||||
(not (any ?\" ?\\))))
|
||||
(char ?\"))
|
||||
(zero-or-more blank)
|
||||
?\:))
|
||||
(defconst json-mode-number-re (rx (group (one-or-more digit)
|
||||
(optional ?\. (one-or-more digit)))))
|
||||
(defconst json-mode-keyword-re (rx (group (or "true" "false" "null"))))
|
||||
|
||||
(defconst json-font-lock-keywords-1
|
||||
(list
|
||||
(list json-mode-keyword-re 1 font-lock-constant-face)
|
||||
(list json-mode-number-re 1 font-lock-constant-face))
|
||||
"Level one font lock.")
|
||||
|
||||
(defvar json-mode-syntax-table
|
||||
(let ((st (make-syntax-table)))
|
||||
;; Objects
|
||||
(modify-syntax-entry ?\{ "(}" st)
|
||||
(modify-syntax-entry ?\} "){" st)
|
||||
;; Arrays
|
||||
(modify-syntax-entry ?\[ "(]" st)
|
||||
(modify-syntax-entry ?\] ")[" st)
|
||||
;; Strings
|
||||
(modify-syntax-entry ?\" "\"" st)
|
||||
st))
|
||||
|
||||
(defvar jsonc-mode-syntax-table
|
||||
(let ((st (copy-syntax-table json-mode-syntax-table)))
|
||||
;; Comments
|
||||
(modify-syntax-entry ?/ ". 124" st)
|
||||
(modify-syntax-entry ?\n ">" st)
|
||||
(modify-syntax-entry ?\^m ">" st)
|
||||
(modify-syntax-entry ?* ". 23bn" st)
|
||||
st))
|
||||
|
||||
(defun json-mode--syntactic-face (state)
|
||||
"Return syntactic face function for the position represented by STATE.
|
||||
STATE is a `parse-partial-sexp' state, and the returned function is the
|
||||
json font lock syntactic face function."
|
||||
(cond
|
||||
((nth 3 state)
|
||||
;; This might be a string or a name
|
||||
(let ((startpos (nth 8 state)))
|
||||
(save-excursion
|
||||
(goto-char startpos)
|
||||
(if (looking-at-p json-mode-quoted-key-re)
|
||||
font-lock-keyword-face
|
||||
font-lock-string-face))))
|
||||
((nth 4 state) font-lock-comment-face)))
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode json-mode javascript-mode "JSON"
|
||||
"Major mode for editing JSON files"
|
||||
:syntax-table json-mode-syntax-table
|
||||
(set (make-local-variable 'font-lock-defaults)
|
||||
'(json-font-lock-keywords-1
|
||||
nil nil nil nil
|
||||
(font-lock-syntactic-face-function . json-mode--syntactic-face))))
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode jsonc-mode json-mode "JSONC"
|
||||
"Major mode for editing JSON files with comments"
|
||||
:syntax-table jsonc-mode-syntax-table)
|
||||
|
||||
;; Well formatted JSON files almost always begin with “{” or “[”.
|
||||
;;;###autoload
|
||||
(add-to-list 'magic-fallback-mode-alist '("^[{[]$" . json-mode))
|
||||
|
||||
;;;###autoload
|
||||
(defun json-mode-show-path ()
|
||||
"Print the path to the node at point to the minibuffer."
|
||||
(interactive)
|
||||
(message (jsons-print-path)))
|
||||
|
||||
(define-key json-mode-map (kbd "C-c C-p") 'json-mode-show-path)
|
||||
|
||||
;;;###autoload
|
||||
(defun json-mode-kill-path ()
|
||||
"Save JSON path to object at point to kill ring."
|
||||
(interactive)
|
||||
(kill-new (jsons-print-path)))
|
||||
|
||||
(define-key json-mode-map (kbd "C-c P") 'json-mode-kill-path)
|
||||
|
||||
;;;###autoload
|
||||
(defun json-mode-beautify (begin end)
|
||||
"Beautify / pretty-print the active region (or the entire buffer if no active region)."
|
||||
(interactive "r")
|
||||
(unless (use-region-p)
|
||||
(setq begin (point-min)
|
||||
end (point-max)))
|
||||
(json-pretty-print begin end))
|
||||
|
||||
(define-key json-mode-map (kbd "C-c C-f") 'json-mode-beautify)
|
||||
|
||||
(defun json-toggle-boolean ()
|
||||
"If point is on `true' or `false', toggle it."
|
||||
(interactive)
|
||||
(unless (nth 8 (syntax-ppss)) ; inside a keyword, string or comment
|
||||
(let* ((bounds (bounds-of-thing-at-point 'symbol))
|
||||
(string (and bounds (buffer-substring-no-properties (car bounds) (cdr bounds))))
|
||||
(pt (point)))
|
||||
(when (and bounds (member string '("true" "false")))
|
||||
(delete-region (car bounds) (cdr bounds))
|
||||
(cond
|
||||
((string= "true" string)
|
||||
(insert "false")
|
||||
(goto-char (if (= pt (cdr bounds)) (1+ pt) pt)))
|
||||
(t
|
||||
(insert "true")
|
||||
(goto-char (if (= pt (cdr bounds)) (1- pt) pt))))))))
|
||||
|
||||
(define-key json-mode-map (kbd "C-c C-t") 'json-toggle-boolean)
|
||||
|
||||
(defun json-nullify-sexp ()
|
||||
"Replace the sexp at point with `null'."
|
||||
(interactive)
|
||||
(let ((syntax (syntax-ppss)) symbol)
|
||||
(cond
|
||||
((nth 4 syntax) nil) ; inside a comment
|
||||
((nth 3 syntax) ; inside a string
|
||||
(goto-char (nth 8 syntax))
|
||||
(when (save-excursion (forward-sexp) (skip-chars-forward "[:space:]") (eq (char-after) ?:))
|
||||
;; sexp is an object key, so we nullify the entire object
|
||||
(goto-char (nth 1 syntax)))
|
||||
(kill-sexp)
|
||||
(insert "null"))
|
||||
((setq symbol (bounds-of-thing-at-point 'symbol))
|
||||
(cond
|
||||
((looking-at-p "null"))
|
||||
((save-excursion (skip-chars-backward "[0-9.]") (looking-at json-mode-number-re))
|
||||
(kill-region (match-beginning 0) (match-end 0))
|
||||
(insert "null"))
|
||||
(t (kill-region (car symbol) (cdr symbol)) (insert "null"))))
|
||||
((< 0 (nth 0 syntax))
|
||||
(goto-char (nth 1 syntax))
|
||||
(kill-sexp)
|
||||
(insert "null"))
|
||||
(t nil))))
|
||||
|
||||
(define-key json-mode-map (kbd "C-c C-k") 'json-nullify-sexp)
|
||||
|
||||
(defun json-increment-number-at-point (&optional delta)
|
||||
"Add DELTA to the number at point; DELTA defaults to 1."
|
||||
(interactive)
|
||||
(when (save-excursion (skip-chars-backward "[0-9.]") (looking-at json-mode-number-re))
|
||||
(let ((num (+ (or delta 1)
|
||||
(string-to-number (buffer-substring-no-properties (match-beginning 0) (match-end 0)))))
|
||||
(pt (point)))
|
||||
(delete-region (match-beginning 0) (match-end 0))
|
||||
(insert (number-to-string num))
|
||||
(goto-char pt))))
|
||||
|
||||
(define-key json-mode-map (kbd "C-c C-i") 'json-increment-number-at-point)
|
||||
|
||||
(defun json-decrement-number-at-point ()
|
||||
"Decrement the number at point."
|
||||
(interactive)
|
||||
(json-increment-number-at-point -1))
|
||||
|
||||
(define-key json-mode-map (kbd "C-c C-d") 'json-decrement-number-at-point)
|
||||
|
||||
(provide 'json-mode)
|
||||
;;; json-mode.el ends here
|
BIN
code/elpa/json-mode-20211011.630/json-mode.elc
Normal file
BIN
code/elpa/json-mode-20211011.630/json-mode.elc
Normal file
Binary file not shown.
|
@ -0,0 +1,25 @@
|
|||
;;; json-snatcher-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "json-snatcher" "json-snatcher.el" (0 0 0 0))
|
||||
;;; Generated autoloads from json-snatcher.el
|
||||
|
||||
(autoload 'jsons-print-path "json-snatcher" "\
|
||||
Print the path to the JSON value under point, and save it in the kill ring." t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "json-snatcher" '("jsons-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; json-snatcher-autoloads.el ends here
|
|
@ -0,0 +1,2 @@
|
|||
;;; Generated package description from json-snatcher.el -*- no-byte-compile: t -*-
|
||||
(define-package "json-snatcher" "20200916.1717" "Grabs the path to JSON values in a JSON file" '((emacs "24")) :commit "b28d1c0670636da6db508d03872d96ffddbc10f2" :authors '(("Sterling Graham" . "sterlingrgraham@gmail.com")) :maintainer '("Sterling Graham" . "sterlingrgraham@gmail.com") :url "http://github.com/sterlingg/json-snatcher")
|
353
code/elpa/json-snatcher-20200916.1717/json-snatcher.el
Normal file
353
code/elpa/json-snatcher-20200916.1717/json-snatcher.el
Normal file
|
@ -0,0 +1,353 @@
|
|||
;;; json-snatcher.el --- Grabs the path to JSON values in a JSON file -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2013 Sterling Graham <sterlingrgraham@gmail.com>
|
||||
|
||||
;; Author: Sterling Graham <sterlingrgraham@gmail.com>
|
||||
;; URL: http://github.com/sterlingg/json-snatcher
|
||||
;; Package-Version: 20200916.1717
|
||||
;; Package-Commit: b28d1c0670636da6db508d03872d96ffddbc10f2
|
||||
;; Version: 1.0
|
||||
;; Package-Requires: ((emacs "24"))
|
||||
|
||||
;; This file is not part of GNU Emacs.
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Well this was my first excursion into ELisp programmming. It didn't go too badly once
|
||||
;; I fiddled around with a bunch of the functions.
|
||||
;;
|
||||
;; The process of getting the path to a JSON value at point starts with
|
||||
;; a call to the jsons-print-path function.
|
||||
;;
|
||||
;; It works by parsing the current buffer into a list of parse tree nodes
|
||||
;; if the buffer hasn't already been parsed in the current Emacs session.
|
||||
;; While parsing, the region occupied by the node is recorded into the
|
||||
;; jsons-parsed-regions hash table as a list.The list contains the location
|
||||
;; of the first character occupied by the node, the location of the last
|
||||
;; character occupied, and the path to the node. The parse tree is also stored
|
||||
;; in the jsons-parsed list for possible future use.
|
||||
;;
|
||||
;; Once the buffer has been parsed, the node at point is looked up in the
|
||||
;; jsons-curr-region list, which is the list of regions described in the
|
||||
;; previous paragraph for the current buffer. If point is not in one of these
|
||||
;; interval ranges nil is returned, otherwise the path to the value is returned
|
||||
;; in the form [<key-string>] for objects, and [<loc-int>] for arrays.
|
||||
;; eg: ['value1'][0]['value2'] gets the array at with name value1, then gets the
|
||||
;; 0th element of the array (another object), then gets the value at 'value2'.
|
||||
;;
|
||||
|
||||
;;; Installation:
|
||||
;;
|
||||
;; IMPORTANT: Works ONLY in Emacs 24 due to the use of the lexical-binding variable.
|
||||
;;
|
||||
;; To install add the json-snatcher.el file to your load-path, and
|
||||
;; add the following lines to your .emacs file:
|
||||
;;(require 'json-snatcher)
|
||||
;; (defun js-mode-bindings ()
|
||||
;; "Sets a hotkey for using the json-snatcher plugin."
|
||||
;; (when (string-match "\\.json$" (buffer-name))
|
||||
;; (local-set-key (kbd "C-c C-g") 'jsons-print-path)))
|
||||
;; (add-hook 'js-mode-hook 'js-mode-bindings)
|
||||
;; (add-hook 'js2-mode-hook 'js-mode-bindings)
|
||||
;;
|
||||
;; This binds the key to snatch the path to the JSON value to C-c C-g only
|
||||
;; when either JS mode, or JS2 mode is active on a buffer ending with
|
||||
;; the .json extension.
|
||||
|
||||
;;; License:
|
||||
|
||||
;; 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 GNU Emacs; see the file COPYING. If not, write to the
|
||||
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;; Boston, MA 02110-1301, USA.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
(defvar jsons-curr-token 0
|
||||
"The current character in the buffer being parsed.")
|
||||
(defvar jsons-parsed (make-hash-table :test 'equal)
|
||||
"Hashes each open buffer to the parse tree for that buffer.")
|
||||
(defvar jsons-parsed-regions (make-hash-table :test 'equal)
|
||||
"Hashes each open buffer to the ranges in the buffer for each of the parse trees nodes.")
|
||||
(defvar jsons-curr-region () "The node ranges in the current buffer.")
|
||||
(defvar jsons-path-printer 'jsons-print-path-python "Default jsons path printer")
|
||||
|
||||
(defun jsons-consume-token ()
|
||||
"Return the next token in the stream."
|
||||
(goto-char jsons-curr-token)
|
||||
(let* ((delim_regex "\\([\][\\{\\}:,]\\)")
|
||||
;; TODO: Improve this regex. Although now it SEEMS to be working, and can be
|
||||
;; used to validate escapes if needed later. The second half of the string regex is pretty
|
||||
;; pointless at the moment. I did it this way, so that the code closely mirrors
|
||||
;; the RFC.
|
||||
(string_regex "\\(\"\\(\\([^\"\\\\\r\s\t\n]\\)*\\([\r\s\t\n]\\)*\\|\\(\\(\\\\\\\\\\)*\\\\\\(\\([^\r\s\t\n]\\|\\(u[0-9A-Fa-f]\\{4\\}\\)\\)\\)\\)\\)+\"\\)")
|
||||
(num_regex "\\(-?\\(0\\|\\([1-9][[:digit:]]*\\)\\)\\(\\.[[:digit:]]+\\)?\\([eE][-+]?[[:digit:]]+\\)?\\)")
|
||||
(literal_regex "\\(true\\|false\\|null\\)")
|
||||
(full_regex (concat "\\(" delim_regex "\\|" literal_regex "\\|" string_regex "\\|" num_regex "\\)")))
|
||||
|
||||
(if (re-search-forward full_regex (point-max) "Not nil")
|
||||
(progn
|
||||
(setq jsons-curr-token (match-end 0))
|
||||
(buffer-substring-no-properties (match-beginning 0) (match-end 0)))
|
||||
(message "Reached EOF. Possibly invalid JSON."))))
|
||||
|
||||
(defun jsons-array (path)
|
||||
"Create a new json array object that contain the identifier \"json-array\".
|
||||
a list of the elements contained in the array, and the PATH to the array."
|
||||
(let*(
|
||||
(token (jsons-consume-token))
|
||||
(array "json-array")
|
||||
(elements ())
|
||||
(i 0))
|
||||
(while (not (string= token "]"))
|
||||
(if (not (string= token ","))
|
||||
(let ((json-val (jsons-value token path i)))
|
||||
(setq i (+ i 1))
|
||||
(push json-val elements)
|
||||
(setq token (jsons-consume-token)))
|
||||
(setq token (jsons-consume-token))))
|
||||
(list array (reverse elements) path)))
|
||||
|
||||
(defun jsons-literal (token path)
|
||||
"Given a TOKEN and PATH, this function return the PATH to the literal."
|
||||
(let ((match_start (match-beginning 0))
|
||||
(match_end (match-end 0)))
|
||||
(progn
|
||||
(setq jsons-curr-region (append (list (list match_start match_end path)) jsons-curr-region))
|
||||
(list "json-literal" token path (list match_start match_end)))))
|
||||
|
||||
(defun jsons-member (token path)
|
||||
"This function is called when a member in a JSON object needs to be parsed.
|
||||
Given the current TOKEN, and the PATH to this member."
|
||||
(let* ((member ())
|
||||
(value token)
|
||||
(range_start (match-beginning 0))
|
||||
(range_end (match-end 0))
|
||||
)
|
||||
(setq member (list "json-member" token))
|
||||
(if (not (string= (jsons-consume-token) ":"))
|
||||
(error "Encountered token other than : in jsons-member")
|
||||
nil)
|
||||
(let ((json-val (jsons-value (jsons-consume-token) (cons value path) nil)))
|
||||
(setq member (list member (append json-val
|
||||
(list range_start range_end))))
|
||||
(setq jsons-curr-region (append (list (list range_start range_end (elt json-val 2))) jsons-curr-region))
|
||||
member)))
|
||||
|
||||
(defun jsons-number (token path)
|
||||
"This function will return a json-number given by the current TOKEN.
|
||||
PATH points to the path to this number. A json-number is defined as per
|
||||
the num_regex in the `jsons-get-tokens' function."
|
||||
(progn
|
||||
(setq jsons-curr-region (append (list (list (match-beginning 0) (match-end 0) path)) jsons-curr-region))
|
||||
(list "json-number" token path)))
|
||||
|
||||
(defun jsons-object (path)
|
||||
"This function is called when a { is encountered while parsing.
|
||||
PATH is the path in the tree to this object."
|
||||
(let*(
|
||||
(token (jsons-consume-token))
|
||||
(members (make-hash-table :test 'equal))
|
||||
(object (list "json-object" members path)))
|
||||
(while (not (string= token "}"))
|
||||
(if (not (string= token ","))
|
||||
(let ((json-mem (jsons-member token path)))
|
||||
(puthash (elt (elt json-mem 0) 1) (elt json-mem 1) (elt object 1))
|
||||
(setq token (jsons-consume-token)))
|
||||
(setq token (jsons-consume-token))))
|
||||
object))
|
||||
|
||||
(defun jsons-string (token path)
|
||||
"This function is called when a string is encountered while parsing.
|
||||
The TOKEN is the current token being examined.
|
||||
The PATH is the path to this string."
|
||||
(let ((match_start (match-beginning 0))
|
||||
(match_end (match-end 0)))
|
||||
(progn
|
||||
(setq jsons-curr-region (append (list (list match_start match_end path)) jsons-curr-region))
|
||||
(list "json-string" token path (list match_start match_end)))))
|
||||
|
||||
(defun jsons-value (token path array-index)
|
||||
"A value, which is either an object, array, string, number, or literal.
|
||||
The is-array variable is nil if inside an array, or the index in
|
||||
the array that it occupies.
|
||||
TOKEN is the current token being parsed.
|
||||
PATH is the path to this value.
|
||||
ARRAY-INDEX is non-nil if the value is contained within an array, and
|
||||
points to the index of this value in the containing array."
|
||||
;;TODO: Refactor the if array-index statement.
|
||||
(if array-index
|
||||
(if (jsons-is-number token)
|
||||
(list "json-value" (jsons-number token (cons array-index path)) (list (match-beginning 0) (match-end 0)))
|
||||
(cond
|
||||
((string= token "{") (jsons-object (cons array-index path)))
|
||||
((string= token "[") (jsons-array (cons array-index path)))
|
||||
((string= (substring token 0 1) "\"") (jsons-string token (cons array-index path)))
|
||||
(t (jsons-literal token (cons array-index path)))))
|
||||
(if (jsons-is-number token)
|
||||
(list "json-value" (jsons-number token path) path (list (match-beginning 0) (match-end 0)))
|
||||
(cond
|
||||
((string= token "{") (jsons-object path))
|
||||
((string= token "[") (jsons-array path))
|
||||
((string= (substring token 0 1) "\"") (jsons-string token path))
|
||||
(t (jsons-literal token path))))))
|
||||
|
||||
|
||||
(defun jsons-get-path ()
|
||||
"Function to check whether we can grab the json path from the cursor position in the json file."
|
||||
(let ((i 0)
|
||||
(node nil))
|
||||
(setq jsons-curr-region (gethash (current-buffer) jsons-parsed-regions))
|
||||
(when (not (gethash (current-buffer) jsons-parsed))
|
||||
(jsons-parse))
|
||||
(while (< i (length jsons-curr-region))
|
||||
(let*
|
||||
((json_region (elt jsons-curr-region i))
|
||||
(min_token (elt json_region 0))
|
||||
(max_token (elt json_region 1)))
|
||||
(when (and (> (point) min_token) (< (point) max_token))
|
||||
(setq node (elt json_region 2))))
|
||||
(setq i (+ i 1)))
|
||||
node))
|
||||
|
||||
(defun jsons-is-number (str)
|
||||
"Test to see whether STR is a valid JSON number."
|
||||
(progn
|
||||
(match-end 0)
|
||||
(save-match-data
|
||||
(if (string-match "^\\(-?\\(0\\|\\([1-9][[:digit:]]*\\)\\)\\(\\.[[:digit:]]+\\)?\\([eE][-+]?[[:digit:]]+\\)?\\)$" str)
|
||||
(progn
|
||||
(match-end 0)
|
||||
t)
|
||||
nil))))
|
||||
|
||||
(defun jsons-parse ()
|
||||
"Parse the file given in file, return a list of nodes representing the file."
|
||||
(save-excursion
|
||||
(setq jsons-curr-token 0)
|
||||
(setq jsons-curr-region ())
|
||||
(if (not (gethash (current-buffer) jsons-parsed))
|
||||
(let* ((token (jsons-consume-token))
|
||||
(return_val nil))
|
||||
(cond
|
||||
((string= token "{") (setq return_val (jsons-object ())))
|
||||
((string= token "[") (setq return_val (jsons-array ())))
|
||||
(t nil))
|
||||
(puthash (current-buffer) return_val jsons-parsed)
|
||||
(puthash (current-buffer) jsons-curr-region jsons-parsed-regions)
|
||||
return_val)
|
||||
(gethash (current-buffer) jsons-parsed))))
|
||||
|
||||
(defun jsons-print-to-buffer (node buffer)
|
||||
"Prints the given NODE to the BUFFER specified in buffer argument.
|
||||
TODO: Remove extra comma printed after lists of object members, and lists of array members."
|
||||
(let ((id (elt node 0)))
|
||||
(cond
|
||||
((string= id "json-array")
|
||||
(progn
|
||||
(jsons-put-string buffer "[")
|
||||
(mapc (lambda (x) (progn
|
||||
(jsons-print-to-buffer buffer x)
|
||||
(jsons-put-string buffer ",") )) (elt node 1))
|
||||
(jsons-put-string buffer "]")))
|
||||
((string= id "json-literal")
|
||||
(jsons-put-string buffer (elt node 1)))
|
||||
((string= id "json-member")
|
||||
(jsons-put-string buffer (elt node 1))
|
||||
(jsons-put-string buffer ": ")
|
||||
(jsons-print-to-buffer buffer (elt node 2)))
|
||||
((string= id "json-number")
|
||||
(jsons-put-string buffer (elt node 1)))
|
||||
((string= id "json-object")
|
||||
(progn
|
||||
(jsons-put-string buffer "{")
|
||||
(maphash (lambda (key value)
|
||||
(progn
|
||||
(jsons-put-string buffer key)
|
||||
(jsons-put-string buffer ":")
|
||||
(jsons-print-to-buffer buffer value)
|
||||
(jsons-put-string buffer ","))) (elt node 1))
|
||||
(jsons-put-string buffer "}")))
|
||||
((string= id "json-string")
|
||||
(jsons-put-string buffer (elt node 1)))
|
||||
((string= id "json-value")
|
||||
(jsons-print-to-buffer buffer (elt node 1)))
|
||||
(t nil))))
|
||||
|
||||
(defun jsons-print-path-jq ()
|
||||
"Print the jq path to the JSON value under point, and save it in the kill ring."
|
||||
(let* ((path (jsons-get-path))
|
||||
(i 0)
|
||||
(jq_str ".")
|
||||
key)
|
||||
(setq path (reverse path))
|
||||
(while (< i (length path))
|
||||
(if (numberp (elt path i))
|
||||
(progn
|
||||
(setq jq_str (concat jq_str "[" (number-to-string (elt path i)) "]"))
|
||||
(setq i (+ i 1)))
|
||||
(progn
|
||||
(setq key (elt path i))
|
||||
(setq jq_str (concat jq_str (substring key 1 (- (length key) 1))))
|
||||
(setq i (+ i 1))))
|
||||
(when (elt path i)
|
||||
(unless (numberp (elt path i))
|
||||
(setq jq_str (concat jq_str ".")))))
|
||||
(progn (kill-new jq_str)
|
||||
(princ jq_str))))
|
||||
|
||||
(defun jsons-print-path-python ()
|
||||
"Print the python path to the JSON value under point, and save it in the kill ring."
|
||||
(let ((path (jsons-get-path))
|
||||
(i 0)
|
||||
(python_str ""))
|
||||
(setq path (reverse path))
|
||||
(while (< i (length path))
|
||||
(if (numberp (elt path i))
|
||||
(progn
|
||||
(setq python_str (concat python_str "[" (number-to-string (elt path i)) "]"))
|
||||
(setq i (+ i 1)))
|
||||
(progn
|
||||
(setq python_str (concat python_str "[" (elt path i) "]"))
|
||||
(setq i (+ i 1)))))
|
||||
(progn (kill-new python_str)
|
||||
(princ python_str))))
|
||||
|
||||
;;;###autoload
|
||||
(defun jsons-print-path ()
|
||||
"Print the path to the JSON value under point, and save it in the kill ring."
|
||||
(interactive)
|
||||
(funcall jsons-path-printer))
|
||||
|
||||
(defun jsons-put-string (buffer str)
|
||||
"Append STR to the BUFFER specified in the argument."
|
||||
(save-current-buffer
|
||||
(set-buffer (get-buffer-create buffer))
|
||||
(insert (prin1-to-string str t))))
|
||||
|
||||
(defun jsons-remove-buffer ()
|
||||
"Used to clean up the token regions, and parse tree used by the parser."
|
||||
(progn
|
||||
(remhash (current-buffer) jsons-parsed)
|
||||
(remhash (current-buffer) jsons-parsed-regions)))
|
||||
|
||||
(add-hook 'kill-buffer-hook 'jsons-remove-buffer)
|
||||
|
||||
(provide 'json-snatcher)
|
||||
|
||||
;; Local-Variables:
|
||||
;; indent-tabs-mode: nil
|
||||
;; End:
|
||||
|
||||
;;; json-snatcher.el ends here
|
BIN
code/elpa/json-snatcher-20200916.1717/json-snatcher.elc
Normal file
BIN
code/elpa/json-snatcher-20200916.1717/json-snatcher.elc
Normal file
Binary file not shown.
40
code/elpa/lua-mode-20210809.1320/lua-mode-autoloads.el
Normal file
40
code/elpa/lua-mode-20210809.1320/lua-mode-autoloads.el
Normal file
|
@ -0,0 +1,40 @@
|
|||
;;; lua-mode-autoloads.el --- automatically extracted autoloads
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(add-to-list 'load-path (directory-file-name
|
||||
(or (file-name-directory #$) (car load-path))))
|
||||
|
||||
|
||||
;;;### (autoloads nil "lua-mode" "lua-mode.el" (0 0 0 0))
|
||||
;;; Generated autoloads from lua-mode.el
|
||||
|
||||
(autoload 'lua-mode "lua-mode" "\
|
||||
Major mode for editing Lua code.
|
||||
|
||||
\(fn)" t nil)
|
||||
|
||||
(add-to-list 'auto-mode-alist '("\\.lua\\'" . lua-mode))
|
||||
|
||||
(add-to-list 'interpreter-mode-alist '("lua" . lua-mode))
|
||||
|
||||
(defalias 'run-lua #'lua-start-process)
|
||||
|
||||
(autoload 'lua-start-process "lua-mode" "\
|
||||
Start a Lua process named NAME, running PROGRAM.
|
||||
PROGRAM defaults to NAME, which defaults to `lua-default-application'.
|
||||
When called interactively, switch to the process buffer.
|
||||
|
||||
\(fn &optional NAME PROGRAM STARTFILE &rest SWITCHES)" t nil)
|
||||
|
||||
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "lua-mode" '("lua-")))
|
||||
|
||||
;;;***
|
||||
|
||||
;; Local Variables:
|
||||
;; version-control: never
|
||||
;; no-byte-compile: t
|
||||
;; no-update-autoloads: t
|
||||
;; coding: utf-8
|
||||
;; End:
|
||||
;;; lua-mode-autoloads.el ends here
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue