Browse Source

Squashed 'emacs.d/use-package/' changes from a7422fb..a6e8564

a6e8564 Update README and NEWS to reflect most recent commit
b59b4dc Merge pull request #1047 from jwiegley/johnw/revert
343c40d Fix another test
692e6a5 Fix normalize test for :hook
cba23de Revert "Auto detect mode suffix in hook keyword"
77945e0 Merge pull request #1029 from joelpet/bind-which-key-cons
007a15b Allow describing commands when using :bind in use-package
bcf0984 Merge pull request #1030 from skangas/merge-emacs
ff8c572 Merge code changes from emacs.git
ff2b0fd Merge new use-package manual from emacs.git
9078709 Merge pull request #1026 from skangas/revert-for-copyright
d4e932e Merge pull request #1027 from skangas/revert-for-copyright2
221d0b2 Revert "Add: 'local' keyword"
634ceb7 Remove tests lacking a copyright assignment for now
9090080 Merge pull request #1024 from skangas/package-requires
5576e40 Add package keyword from finder-known-keywords
84af5d4 Fix Package-Requires for bind-{chord,key}.el
f23d1d9 Merge pull request #1023 from skangas/dir-locals
41bf2aa Merge pull request #1022 from skangas/fix-headers
34c6313 Add .dir-locals.el
63866e6 Delete redundant headers
4ae6c5e Normalize GPLv3 license statements
696f068 Merge pull request #1020 from skangas/elpa-ignore
149ecf4 Merge pull request #1021 from jwiegley/revert-1019-johnw/multi-keymap
a6ea8b3 Revert "Allow multiple keymaps in :map argument"
def9275 Ignore LICENSE in .elpaignore
09f210c Merge pull request #1019 from jwiegley/johnw/multi-keymap
0f976b3 Delete use-package.org
44a859e Merge remote-tracking branch 'origin/master' into pr-830
21a126c Merge pull request #1018 from skangas/texinfo-wip
b8f0537 Merge branch 'master' into texinfo-wip
8bdfe31 Merge pull request #1017 from skangas/gnu-elpa
2f7544a Fix makeinfo warnings
1938f50 Use two spaces to end sentences
7126fb7 Move incorrectly placed example in README
77e04dc Recommend GNU ELPA over MELPA
8354533 Delete use-package.org
2a7da68 manual: Regenerate texi file
87c03df Merge pull request #1015 from skangas/checkdoc
d9b136d Merge pull request #1014 from skangas/readme-fixes
042778a Merge pull request #1013 from skangas/ci
116e042 Merge pull request #1012 from skangas/makefile-emacsbin
3627881 Various checkdoc fixes
da899c4 Merge pull request #1011 from bhankas/master
0572eaf Fix building on Emacs 24.3
98fa02c Fix tests on Emacs 26 or older
cb79d4f Harden GitHub CI configuration
09c8ce9 Add all supported versions to GitHub CI matrix
bc2f09f Delete Travis CI configuration
dc279c7 Remove variable EMACSBIN from Makefile (Close #649)
f1ce5ef Fix typo in README.md
6291949 Don't mention versions <2.x at start of README.md
942617d Bump version to 2.4.4
9519904 Remove doc/
0be480e Merge pull request #1009 from andreyorst/face-spec-set-third-argument
2dd93e0 fix #1008: allow passing the SPEC-TYPE argument via :custom-face
4095f1b Merge pull request #1007 from bhankas/master
c81f9e7 Bump version to 2.4.3
4932ed2 bind-key.el: Bump version for ELPA
cdd59d5 Add README.org to explain purpose of doc/ directory
17a049b Merge pull request #1004 from andreyorst/face-spec-set
31fe8dc Merge pull request #1006 from bhankas/master
7b05028 Update version to 2.4.2
5c95dcb Merge pull request #1005 from bhankas/master
e6932fe Add .elpaignore
057e25c Update copyright for submission to ELPA
4fdc36a fix #934: use face-spec-set instead of custom-set-faces
28531e9 Merge pull request #917 from conao3/add-commands-keyword
d3e9239 bind-keys supports passing a list of keymaps as :map argument
89c507b Fix bind-chords docs: :map argument may be a list of keymaps
9a45a80 Merge pull request #998 from sdwolfz/native-compiler-warning
ba9007c Update CI and Makefile to fail on compiler warnings
b749cef Fix emacs native compilation warning for bind-key
9407f5f Merge pull request #743 from CeleritasCelery/master
4db51ba Merge pull request #997 from sdwolfz/native-compiler-warning
b8ac02f Fix emacs native compilation warning
e2d173b Revert "Remove use-package-font-lock-keywords"
8a3d29e Merge pull request #859 from belak/remove-extra-font-lock-keywords
ec39415 Merge pull request #992 from syohex/badge-url
7b0499b Merge pull request #993 from realcomplex/override-global-mode-fix
e1a08c5 Go back to making `override-global-mode` non-global
cdec032 Correct badge URL
b635f58 Make sure that bind-key's `override-global-mode` is initially on
e5f64cc Merge pull request #990 from tarsiiformes/quote-quote
b9400ec Quote single quotes in docstrings or use different quoting
d2fb5ee Merge pull request #968 from tarsiiformes/cleanup-manual
17056cc gitignore: Ignore more generated documentation and stats
66834ff manual: Regenerate texi file
b185c6b manual: Copy text from Introduction to info entry page
df8cc6b manual: Downcase src and example keywords
4f7eab7 manual: Consistently indent code-blocks
e4aa988 manual: Do not enumerate basic concepts
324105f manual: Wrap preamble using drawer
5bd0d8a manual: No longer insert Emacs and Org versions used to generate
ea84a79 manual: Remove unused FAQ and indices
44b8acf manual: Downcase keywords
1e49b57 manual: Use Org macros for version and year strings
f230528 manual: No longer depend on unused ox-texinfo+ and org-man
502f24e manual: No longer use dissolvable sections
c1d8da7 Merge pull request #760 from conao3/fix-declare-style
d3c648a Merge pull request #774 from waymondo/ensure-system-packages-use-package-as-one
bc1b0be Merge pull request #775 from waymondo/use-package-hook-handler-flatten-mode-symbols
e0d0fd7 Merge pull request #778 from waymondo/use-package-chords-autoloading-and-mapping-improvements
573e616 Merge pull request #787 from matzebond/master
87ae6dc Merge pull request #822 from wcy123/master
96ec1f2 Merge pull request #834 from tarsiiformes/typo
d511e7d Merge pull request #848 from phst/lex
2f3cb75 Merge pull request #849 from phst/flet
e89fd30 Merge pull request #863 from conao3/add-custom-face-description
fd6dfd0 Merge pull request #873 from Sasanidas/patch-1
b8c1d1a Merge pull request #905 from tinloaf/patch-1
9fdd284 Merge pull request #909 from kidd/require-doesnt-throw
f9c927e Merge pull request #912 from iaeerfung/master
ab95af0 Merge pull request #915 from conao3/add-github-actions
ab15465 Merge pull request #919 from rich-murphey/patch-1
2cdf401 Merge pull request #920 from wyuenho/set-default-use-package-enable-imenu-support
b2bd195 Merge pull request #921 from wyuenho/statistics-sorting
4d87d9d Merge pull request #922 from wyuenho/travis-emacs-27
da0e2ec Merge pull request #974 from Hugo-Heagren/bind-keys-repeat-map
003dd48 Merge pull request #930 from danielpza/add-update-custom-package
828ff88 Merge pull request #936 from tarsiiformes/silencio
a2e3eee Merge pull request #979 from DamienCassou/update-texi
ece5c10 Merge pull request #981 from DamienCassou/fix-makefile-doc
be3f818 Merge pull request #987 from skangas/fix-typo
2808c84 Add: 'local' keyword
cb90d3f Avoid positional arguments to define-minor-mode
ae415de Fix typo in use-package docstring
0ad5d9d Add further notes to the README
84ee9c4 Makefile.doc: Rename org-man to ol-man
2e1b8a2 Update use-package.texi
3f17d4b optimization: constand folding for read-kbd-macro
6084b09 readme: update with repeat-map syntax
29307ad bind-keys-form: error for repeat sub-keywords without :repeat-map
7e35bd5 bind-key-form: allow :continue keyword inside repeat map
1b131cc bind-key-form: allow :exit keyword inside repeat map
32d4d4d bind-keys-form: new keyword :repeat-map, for defining repeat maps
be3c570 Fix tests and documentation for hook
8bad61f Auto detect mode suffix in hook keyword
d3d72a9 feat: add update custom packages command
b43cf59 Add emacs 26.3 and 27.1 to test matrix
d9ff887 Properly sort use-package-statistics-report
a7b37d7 Fix void-variable use-package-enable-imenu-support
9d381ea Consistency in description of :map
f0f4029 Remove uses of deprecated ‘flet’ macro.
9cec9cf add testcase
4964d5d add documentation
b4bf767 add autoload keyword
a5270e4 add GitHub Actions config yaml
e99b2c8 fix docstring. was: invalid function name
e014a6d require ox-hugo doesn't error if not found
d679a25 Update README.md
e764e39 Update MELPA links
601a2ed add multiple and eval :custom-face usage
37d8832 Remove use-package-font-lock-keywords
5e15c89 Migrate remaining files to lexical binding
55360f9 Fix typo
58c2941 update bind-chords to use of eval-after-load when maps declared
b8c2cdc rename function
5360929 extract use-package-hook-handler-flatten-mode-symbols function
57001bb use `use-package-as-one` for normalizing `:ensure-system-package`
0474a21 * use-package-core.el (use-package): fix declare style

git-subtree-dir: emacs.d/use-package
git-subtree-split: a6e856418d2ebd053b34e0ab2fda328abeba731c
master
Brett Langdon 2 years ago
parent
commit
9a0c521bcd
61 changed files with 3131 additions and 4992 deletions
  1. +8
    -0
      .dir-locals.el
  2. +1
    -0
      .elpaignore
  3. +45
    -0
      .github/workflows/test.yml
  4. +9
    -2
      .gitignore
  5. +0
    -47
      .travis.yml
  6. +3
    -32
      Makefile
  7. +1
    -15
      Makefile.doc
  8. +2
    -1
      Makefile.lisp
  9. +13
    -0
      NEWS.md
  10. +176
    -52
      README.md
  11. +76
    -25
      bind-chord.el
  12. +135
    -60
      bind-key.el
  13. +5
    -9
      default.mk
  14. +0
    -0
      doc/.nosearch
  15. +0
    -169
      doc/Makefile
  16. +0
    -90
      doc/config.toml
  17. +0
    -0
      doc/content/.gitkeep
  18. +0
    -7
      doc/layouts/section/issues.html
  19. +0
    -217
      doc/setup-ox-hugo.el
  20. +0
    -71
      doc/static/css/github_chroma.css
  21. +0
    -142
      doc/static/css/style.css
  22. BIN
      doc/static/favicon-16x16.png
  23. BIN
      doc/static/favicon-32x32.png
  24. BIN
      doc/static/favicon-96x96.png
  25. BIN
      doc/static/favicon.ico
  26. +0
    -11
      doc/static/img/logo-raw/use-package-logo-16x16-v1.svg
  27. +0
    -168
      doc/static/img/logo-raw/use-package-logo-32x32-v1.svg
  28. +0
    -168
      doc/static/img/logo-raw/use-package-logo-48x48-v1.svg
  29. +0
    -172
      doc/static/img/logo-raw/use-package-logo-96x96-v1.svg
  30. +0
    -172
      doc/static/img/use-package-logo-96x96-v1.svg
  31. +0
    -34
      doc/themes/hugo-alabaster-theme/LICENSE.md
  32. +0
    -42
      doc/themes/hugo-alabaster-theme/README.md
  33. +0
    -6
      doc/themes/hugo-alabaster-theme/index.html
  34. +0
    -5
      doc/themes/hugo-alabaster-theme/layouts/404.html
  35. +0
    -35
      doc/themes/hugo-alabaster-theme/layouts/_default/baseof.html
  36. +0
    -5
      doc/themes/hugo-alabaster-theme/layouts/_default/single.html
  37. +0
    -6
      doc/themes/hugo-alabaster-theme/layouts/index.html
  38. +0
    -18
      doc/themes/hugo-alabaster-theme/layouts/partials/footer.html
  39. +0
    -30
      doc/themes/hugo-alabaster-theme/layouts/partials/head.html
  40. +0
    -32
      doc/themes/hugo-alabaster-theme/layouts/partials/sidebar/buttons.html
  41. +0
    -11
      doc/themes/hugo-alabaster-theme/layouts/partials/sidebar/menu.html
  42. +0
    -21
      doc/themes/hugo-alabaster-theme/layouts/partials/sidebar/sidebar.html
  43. +0
    -4
      doc/themes/hugo-alabaster-theme/layouts/shortcodes/admonition.html
  44. +0
    -569
      doc/themes/hugo-alabaster-theme/static/css/alabaster.css
  45. +0
    -599
      doc/themes/hugo-alabaster-theme/static/css/basic.css
  46. +505
    -0
      doclicense.texi
  47. +19
    -0
      docstyle.texi
  48. +42
    -29
      use-package-bind-key.el
  49. +153
    -0
      use-package-chords-tests.el
  50. +17
    -7
      use-package-chords.el
  51. +164
    -99
      use-package-core.el
  52. +19
    -22
      use-package-delight.el
  53. +19
    -22
      use-package-diminish.el
  54. +37
    -10
      use-package-ensure-system-package.el
  55. +25
    -27
      use-package-ensure.el
  56. +21
    -26
      use-package-jump.el
  57. +17
    -21
      use-package-lint.el
  58. +67
    -87
      use-package-tests.el
  59. +20
    -21
      use-package.el
  60. +0
    -941
      use-package.org
  61. +1532
    -633
      use-package.texi

+ 8
- 0
.dir-locals.el View File

@ -0,0 +1,8 @@
;;; Directory Local Variables -*- no-byte-compile: t; -*-
;;; For more information see (info "(emacs) Directory Variables")
((nil . ((sentence-end-double-space . t)
(emacs-lisp-docstring-fill-column . 65)
(fill-column . 70)))
(emacs-lisp-mode . ((indent-tabs-mode . nil)))
(lisp-data-mode . ((indent-tabs-mode . nil))))

+ 1
- 0
.elpaignore View File

@ -0,0 +1 @@
LICENSE

+ 45
- 0
.github/workflows/test.yml View File

@ -0,0 +1,45 @@
## test.yml
name: Main workflow
on: [push, pull_request]
permissions: {}
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
emacs_version:
- 24.3
- 24.4
- 24.5
- 25.1
- 25.3
- 26.1
- 26.2
- 26.3
- 27.1
- 27.2
- 28.1
- 28.2
- snapshot
include:
- emacs_version: 'snapshot'
allow_failure: true
steps:
- uses: actions/checkout@v3
with:
persist-credentials: false
- name: Install Emacs
uses: purcell/setup-emacs@master
with:
version: ${{ matrix.emacs_version }}
- name: Run tests
if: matrix.allow_failure != true
run: 'make && make test'
- name: Run tests (allow failure)
if: matrix.allow_failure == true
run: 'make && make test || true'

+ 9
- 2
.gitignore View File

@ -1,5 +1,12 @@
/use-package.info
*~
*.elc
/*-autoloads.el
/*.elc
/*.html
/*.info
/*.pdf
/config.mk
/dir
/doc/content/*
/stats/
/use-package/
.dir-locals-2.el

+ 0
- 47
.travis.yml View File

@ -1,47 +0,0 @@
language: generic
sudo: false
env:
global:
- CURL="curl -fsSkL --retry 9 --retry-delay 9"
matrix:
- EMACS_VERSION=26
- EMACS_VERSION=25.3
- EMACS_VERSION=24.5
- EMACS_VERSION=24.4
- EMACS_VERSION=24.3
- EMACS_VERSION=master
install:
- $CURL -O https://github.com/npostavs/emacs-travis/releases/download/bins/emacs-bin-${EMACS_VERSION}.tar.gz
- tar xf emacs-bin-${EMACS_VERSION}.tar.gz -C /
- export EMACS=/tmp/emacs/bin/emacs
- $EMACS --version
dist: bionic
addons:
apt:
packages:
- texinfo
- libgnutls30
script:
- make
- make test
- make info
before_deploy: cd doc && make doc
deploy:
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
local_dir: doc/public
on:
branch: master
condition: $EMACS_VERSION = 26
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/848b93e13f8e6ab0cc86
on_success: always
on_failure: always
on_start: always
email:
on_success: change
on_failure: always
on_start: never

+ 3
- 32
Makefile View File

@ -43,7 +43,7 @@ help:
$(info make clean-lisp - clean elisp)
$(info make clean-docs - clean docs)
$(info make clean-archives - clean release tarball)
$(info make clean-all - clean everything except tracked texi)
$(info make clean-all - clean everything)
$(info make clean-stats - clean stats)
$(info )
$(info Test)
@ -56,7 +56,6 @@ help:
$(info Release Management)
$(info ==================)
$(info )
$(info make texi - regenerate texi from org)
$(info make stats - regenerate statistics)
$(info make authors - regenerate AUTHORS.md)
$(info make preview-stats - preview statistics)
@ -64,8 +63,6 @@ help:
$(info make preview-manuals - preview manuals)
$(info make publish-manuals - publish manuals)
$(info make dist - create tarballs)
$(info make bump-versions - bump versions for release)
$(info make bump-snapshots - bump versions after release)
@printf "\n"
## Build #############################################################
@ -109,12 +106,12 @@ test:
(ert-run-tests-batch-and-exit))"
test-interactive:
@$(EMACSBIN) -Q $(LOAD_PATH) --eval "(progn\
@$(EMACS) -Q $(LOAD_PATH) --eval "(progn\
(load-file \"use-package-tests.el\")\
(ert t))"
emacs-Q: clean-lisp
@$(EMACSBIN) -Q $(LOAD_PATH) --debug-init --eval "(progn\
@$(EMACS) -Q $(LOAD_PATH) --debug-init --eval "(progn\
(setq debug-on-error t)\
(require 'use-package))"
@ -142,9 +139,6 @@ clean-stats:
## Release management ################################################
texi:
@$(MAKE) -f Makefile.doc texi
stats:
@$(MAKE) -f Makefile.doc stats
@ -175,26 +169,3 @@ use-package-$(VERSION).tar.gz: lisp info
@$(CP) $(DIST_ROOT_FILES) use-package-$(VERSION)
@$(TAR) cz --mtime=./use-package-$(VERSION) -f use-package-$(VERSION).tar.gz use-package-$(VERSION)
@$(RMDIR) use-package-$(VERSION)
define set_manual_version
(let ((version (split-string "$(USE_PACKAGE_VERSION)" "\\.")))
(setq version (concat (car version) "." (cadr version)))
(dolist (file (list "use-package"))
(with-current-buffer (find-file-noselect (format "%s.org" file))
(goto-char (point-min))
(re-search-forward "^#\\+SUBTITLE: for version ")
(delete-region (point) (line-end-position))
(insert version)
(save-buffer))))
endef
export set_manual_version
bump-versions: bump-versions-1 texi
bump-versions-1:
@$(BATCH) --eval "(progn\
$$set_manual_version)"
bump-snapshots:
@$(BATCH) --eval "(progn\
$$set_package_requires)"
git commit -a -m "Reset Package-Requires for Melpa"

+ 1
- 15
Makefile.doc View File

@ -5,7 +5,7 @@ include default.mk
## ###################################################################
.PHONY: texi install clean AUTHORS.md stats
.PHONY: install clean AUTHORS.md stats
all: info
@ -55,20 +55,6 @@ clean:
## Release management ################################################
# Because most users don't have the necessary tools we cannot
# use "%.texi: %.org". Instead we have to hardcode each file
# using a shared target.
DOC_ARGS = --batch -Q $(DOC_LOAD_PATH)
DOC_ARGS += -l ox-extra -l org-man -l ox-texinfo+.el
DOC_EVAL = --eval "(ox-extras-activate '(ignore-headlines))"
DOC_EVAL += -f org-texinfo-export-to-texinfo
texi:
@printf "Generating use-package.texi\n"
@$(EMACSBIN) $(DOC_ARGS) use-package.org $(DOC_EVAL)
@echo >> use-package.texi
stats:
@printf "Generating statistics\n"
@gitstats -c style=/assets/stats.css -c max_authors=999 $(TOP) $(statsdir)


+ 2
- 1
Makefile.lisp View File

@ -19,7 +19,8 @@ lisp: $(ELCS)
%.elc: %.el
@printf "Compiling $<\n"
-@$(BATCH) --eval "(progn\
@$(BATCH) -q --eval "(progn\
(setq byte-compile-error-on-warn t) \
(when (file-exists-p \"$@\")\
(delete-file \"$@\"))\
(fset 'message* (symbol-function 'message))\


+ 13
- 0
NEWS.md View File

@ -1,5 +1,18 @@
# Changes
## 2.4.5
This is mostly a bug-fix release:
- When `:hook` is using in the form `(use-package foo :hook bar)`,
this is once again equivalent to
`(use-package foo :hook (bar . foo))` and no longer the same as
`(use-package foo :hook (bar . foo-mode))`.
## 2.4.4
This release prepares for inclusion to GNU ELPA and includes no other changes
## 2.4.1
This is mostly a bug-fix release:


+ 176
- 52
README.md View File

@ -1,9 +1,8 @@
# `use-package`
[![Join the chat at https://gitter.im/use-package/Lobby](https://badges.gitter.im/use-package/Lobby.svg)](https://gitter.im/use-package/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/jwiegley/use-package.svg?branch=master)](https://travis-ci.org/jwiegley/use-package)
[![MELPA](http://melpa.milkbox.net/packages/use-package-badge.svg)](http://melpa.milkbox.net/#/use-package)
[![MELPA Stable](https://stable.melpa.org/packages/use-package-badge.svg)](https://stable.melpa.org/#/use-package)
[![Build Status](https://github.com/jwiegley/use-package/actions/workflows/test.yml/badge.svg)](https://github.com/jwiegley/use-package/actions)
[![GNU ELPA](https://elpa.gnu.org/packages/use-package.svg)](https://elpa.gnu.org/packages/use-package.html)
The `use-package` macro allows you to isolate package configuration in your
`.emacs` file in a way that is both performance-oriented and, well, tidy. I
@ -16,8 +15,6 @@ does have the useful capability to interface with package managers (see
[below](#package-installation)), its primary purpose is for the configuration
and loading of packages.
Notes for users upgrading to 2.x are located [at the bottom](#upgrading-to-2x).
- [Installing use-package](#installing-use-package)
- [Getting started](#getting-started)
- [Key-binding](#key-binding)
@ -56,13 +53,13 @@ Notes for users upgrading to 2.x are located [at the bottom](#upgrading-to-2x).
+ [Semantics of :init is now consistent](#semantics-of-init-is-now-consistent)
+ [:idle has been removed](#idle-has-been-removed)
+ [:defer now accepts an optional numeric argument](#defer-now-accepts-an-optional-numeric-argument)
+ [Add :preface, occuring before everything except :disabled](#add-preface-occurring-before-everything-except-disabled)
+ [Add :preface, occurring before everything except :disabled](#add-preface-occurring-before-everything-except-disabled)
+ [Add :functions, for declaring functions to the byte-compiler](#add-functions-for-declaring-functions-to-the-byte-compiler)
+ [use-package.el is no longer needed at runtime](#use-packageel-is-no-longer-needed-at-runtime)
## Installing use-package
Either clone from this GitHub repository or install from
[MELPA](http://melpa.milkbox.net/) (recommended).
[GNU ELPA](https://elpa.gnu.org/) (recommended).
## Getting started
@ -123,6 +120,13 @@ and within the `isearch-mode-map` (see next section). When the package is
actually loaded (by using one of these commands), `moccur-edit` is also
loaded, to allow editing of the `moccur` buffer.
If you autoload non-interactive function, please use `:autoload`.
```elisp
(use-package org-crypt
:autoload org-crypt-use-before-save-magic)
```
## Key-binding
Another common thing to do when loading a module is to bind a key to primary
@ -162,7 +166,21 @@ The `:bind` keyword takes either a cons or a list of conses:
("M-o w" . highlight-phrase)))
```
The `:commands` keyword likewise takes either a symbol or a list of symbols.
Alternatively, the command name may be replaced with a cons `(desc . command)`,
where `desc` is a string describing `command`, which is the name of a command
to bind to:
```elisp
(use-package avy
:bind ("C-:" ("Jump to char" . avy-goto-char)
"M-g f" ("Jump to line" . avy-goto-line)))
```
These descriptions can be used by other code that deals with key bindings.
For example, the GNU ELPA package which-key displays them when showing key
bindings, instead of the plain command names.
The `:commands` keyword takes either a symbol or a list of symbols.
**NOTE**: inside strings, special keys like `tab` or `F1`-`Fn` have to be written inside angle brackets, e.g. `"C-<up>"`.
Standalone special keys (and some combinations) can be written in square brackets, e.g. `[tab]` instead of `"<tab>"`. The syntax for the keybindings is similar to
@ -226,7 +244,7 @@ supports this with a `:map` modifier, taking the local keymap to bind to:
The effect of this statement is to wait until `helm` has loaded, and then to
bind the key `C-c h` to `helm-execute-persistent-action` within Helm's local
keymap, `helm-mode-map`.
keymap, `helm-command-map`.
Multiple uses of `:map` may be specified. Any binding occurring before the
first use of `:map` are applied to the global keymap:
@ -242,6 +260,87 @@ first use of `:map` are applied to the global keymap:
("M-p" . term-send-up)
("M-n" . term-send-down)))
```
### Binding to repeat-maps
A special case of binding within a local keymap is when that keymap is
used by `repeat-mode`. These keymaps are usually defined specifically
for this. Using the `:repeat-map` keyword, and passing it a name for
the map it defines, will bind all following keys inside that map, and
(by default) set the `repeat-map` property of each bound command to
that map.
This creates a keymap called `git-gutter+-repeat-map`, makes four
bindings in it as above, then sets the `repeat-map` property of each
bound command (`git-gutter+-next-hunk` `git-gutter+-previous-hunk`,
`git-gutter+-stage-hunks` and `git-gutter+-revert-hunk`) to that
keymap.
``` elisp
(use-package git-gutter+
:bind
(:repeat-map git-gutter+-repeat-map
("n" . git-gutter+-next-hunk)
("p" . git-gutter+-previous-hunk)
("s" . git-gutter+-stage-hunks)
("r" . git-gutter+-revert-hunk)))
```
Specifying `:exit` inside the scope of `:repeat-map` will prevent the
`repeat-map` property being set, so that the command can be used from
within the repeat map, but after it using it the repeat map will no
longer be available. This is useful for commands often used at the end
of a series of repeated commands:
``` elisp
(use-package git-gutter+
:bind
(:repeat-map my/git-gutter+-repeat-map
("n" . git-gutter+-next-hunk)
("p" . git-gutter+-previous-hunk)
("s" . git-gutter+-stage-hunks)
("r" . git-gutter+-revert-hunk)
:exit
("c" . magit-commit-create)
("C" . magit-commit)
("b" . magit-blame)))
```
Specifying `:continue` *forces* setting the `repeat-map` property
(just like *not* specifying `:exit`), so these two snippets are
equivalent:
``` elisp
(use-package git-gutter+
:bind
(:repeat-map my/git-gutter+-repeat-map
("n" . git-gutter+-next-hunk)
("p" . git-gutter+-previous-hunk)
("s" . git-gutter+-stage-hunks)
("r" . git-gutter+-revert-hunk)
:exit
("c" . magit-commit-create)
("C" . magit-commit)
("b" . magit-blame)))
```
``` elisp
(use-package git-gutter+
:bind
(:repeat-map my/git-gutter+-repeat-map
:exit
("c" . magit-commit-create)
("C" . magit-commit)
("b" . magit-blame)
:continue
("n" . git-gutter+-next-hunk)
("p" . git-gutter+-previous-hunk)
("s" . git-gutter+-stage-hunks)
("r" . git-gutter+-revert-hunk)))
```
## Modes and interpreters
@ -302,45 +401,48 @@ string `"%PDF"`.
## Hooks
The `:hook` keyword allows adding functions onto package hooks. Thus,
all of the following are equivalent:
The `:hook` keyword allows adding functions onto package hooks. The
following are equivalent:
``` elisp
(use-package ace-jump-mode
:hook prog-mode)
(use-package ace-jump-mode
:hook (prog-mode . ace-jump-mode))
(use-package company
:hook (prog-mode . company-mode))
(use-package ace-jump-mode
:commands ace-jump-mode
(use-package company
:commands company-mode
:init
(add-hook 'prog-mode-hook #'ace-jump-mode))
(add-hook 'prog-mode-hook #'company-mode))
```
And likewise, when multiple hooks should be applied, the following are also
equivalent:
And likewise, when multiple hooks should be applied, all of the
following are also equivalent:
``` elisp
(use-package ace-jump-mode
:hook (prog-mode text-mode))
(use-package company
:hook ((prog-mode text-mode) . company-mode))
(use-package ace-jump-mode
:hook ((prog-mode text-mode) . ace-jump-mode))
(use-package company
:hook ((prog-mode . company-mode)
(text-mode . company-mode)))
(use-package ace-jump-mode
:hook ((prog-mode . ace-jump-mode)
(text-mode . ace-jump-mode)))
(use-package company
:hook (prog-mode . company-mode)
:hook (text-mode . company-mode))
(use-package ace-jump-mode
:commands ace-jump-mode
(use-package company
:hook
(prog-mode . company-mode)
(text-mode . company-mode))
(use-package company
:commands company-mode
:init
(add-hook 'prog-mode-hook #'ace-jump-mode)
(add-hook 'text-mode-hook #'ace-jump-mode))
(add-hook 'prog-mode-hook #'company-mode)
(add-hook 'text-mode-hook #'company-mode))
```
When using `:hook` omit the "-hook" suffix if you specify the hook
explicitly, as this is appended by default. For example the following
When using `:hook`, omit the "-hook" suffix if you specify the hook
explicitly, as this is appended by default. For example, the following
code will not work as it attempts to add to the `prog-mode-hook-hook`
which does not exist:
@ -391,19 +493,41 @@ The `:custom-face` keyword allows customization of package custom faces.
(use-package eruby-mode
:custom-face
(eruby-standard-face ((t (:slant italic)))))
(use-package example
:custom-face
(example-1-face ((t (:foreground "LightPink"))))
(example-2-face ((t (:foreground "LightGreen"))) face-defspec-spec))
(use-package zenburn-theme
:preface
(setq my/zenburn-colors-alist
'((fg . "#DCDCCC") (bg . "#1C1C1C") (cyan . "#93E0E3")))
:custom-face
(region ((t (:background ,(alist-get my/zenburn-colors-alist 'cyan)))))
:config
(load-theme 'zenburn t))
```
## Notes about lazy loading
In almost all cases you don't need to manually specify `:defer t`. This is
implied whenever `:bind` or `:mode` or `:interpreter` is used. Typically, you
only need to specify `:defer` if you know for a fact that some other package
will do something to cause your package to load at the appropriate time, and
thus you would like to defer loading even though use-package isn't creating
any autoloads for you.
You can override package deferral with the `:demand` keyword. Thus, even if
you use `:bind`, using `:demand` will force loading to occur immediately and
The keywords `:commands`, et al, provide "triggers" that cause a package to be
loaded when certain events occur. However, if `use-package` cannot determine
that any trigger has been declared, it will load the package immediately (when
Emacs is starting up) unless `:defer t` is given. The presence of triggers can
be overridden using `:demand t` to force immediately loading anyway. For
example, `:hook` represents a trigger that fires when the specified hook is
run.
In almost all cases you don't need to manually specify `:defer t`, because
this is implied whenever `:bind` or `:mode` or `:interpreter` are used.
Typically, you only need to specify `:defer` if you know for a fact that some
other package will do something to cause your package to load at the
appropriate time, and thus you would like to defer loading even though
`use-package` has not created any autoloads for you.
You can override package deferral with the `:demand` keyword. Thus, even if
you use `:bind`, adding `:demand` will force loading to occur immediately and
not establish an autoload for the bound key.
## Information about package loads
@ -460,7 +584,13 @@ When byte-compiling your `.emacs` file, disabled declarations are omitted
from the output entirely, to accelerate startup times.
**NOTE**: `:when` is provided as an alias for `:if`, and `:unless foo` means
the same thing as `:if (not foo)`. For example, the following will also stop
the same thing as `:if (not foo)`.
### Conditional loading before :preface
If you need to conditionalize a use-package form so that the condition occurs
before even the `:preface` is executed, simply use `when` around the
use-package form itself. For example, the following will also stop
`:ensure` from happening on Mac systems:
``` elisp
@ -471,12 +601,6 @@ the same thing as `:if (not foo)`. For example, the following will also stop
(exec-path-from-shell-initialize)))
```
### Conditional loading before :preface
If you need to conditionalize a use-package form so that the condition occurs
before even the `:preface` is executed, simply use `when` around the
use-package form itself:
### Loading packages in sequence
Sometimes it only makes sense to configure a package after another has been
@ -768,7 +892,7 @@ like
Lastly, when running on Emacs 24.4 or later, use-package can pin a package to
a specific archive, allowing you to mix and match packages from different
archives. The primary use-case for this is preferring packages from the
`melpa-stable` and `gnu` archives, but using specific packages from `melpa`
`gnu` and `melpa-stable` archives, but using specific packages from `melpa`
when you need to track newer versions than what is available in the `stable`
archives is also a valid use-case.
@ -795,7 +919,7 @@ Example:
``` elisp
(use-package company
:ensure t
:pin melpa-stable)
:pin gnu)
(use-package evil
:ensure t)


+ 76
- 25
bind-chord.el View File

@ -1,18 +1,28 @@
;;; bind-chord.el --- key-chord binding helper for use-package-chords
;;; bind-chord.el --- key-chord binding helper for use-package-chords -*- lexical-binding: t; -*-
;; Copyright (C) 2015-2017 Justin Talbott
;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
;; Author: Justin Talbott <justin@waymondo.com>
;; Keywords: convenience, tools, extensions
;; URL: https://github.com/waymondo/use-package-chords
;; Version: 0.2
;; Package-Requires: ((bind-key "1.0") (key-chord "0.6"))
;; URL: https://github.com/jwiegley/use-package
;; Version: 0.2.1
;; Package-Requires: ((emacs "24.3") (bind-key "1.0") (key-chord "0.6"))
;; Filename: bind-chord.el
;; License: GNU General Public License version 3, or (at your option) any later version
;;
;; 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:
;;
;;; Code:
@ -30,6 +40,63 @@
(bind-key (vector 'key-chord ,key1 ,key2) ,command ,keymap)
(bind-key (vector 'key-chord ,key2 ,key1) ,command ,keymap)))))
(defun bind-chords-form (args keymap)
"Bind multiple chords at once.
Accepts keyword arguments:
:map MAP - a keymap into which the keybindings should be
added
The rest of the arguments are conses of keybinding string and a
function symbol (unquoted)."
(let (map pkg)
(let ((cont t))
(while (and cont args)
(if (cond ((eq :map (car args))
(setq map (cadr args)))
((eq :package (car args))
(setq pkg (cadr args))))
(setq args (cddr args))
(setq cont nil))))
(unless map (setq map keymap))
(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
(wrap map
(cl-mapcan
(lambda (form)
(let ((fun (and (cdr form) (list 'function (cdr form)))))
(if (and map (not (eq map 'global-map)))
`((bind-chord ,(car form) ,fun ,map))
`((bind-chord ,(car form) ,fun nil)))))
first))
(when next
(bind-chords-form (if pkg
(cons :package (cons pkg next))
next) map)))))))
;;;###autoload
(defmacro bind-chords (&rest args)
"Bind multiple chords at once.
@ -39,23 +106,7 @@ Accepts keyword argument:
The rest of the arguments are conses of keybinding string and a
function symbol (unquoted)."
(let* ((map (plist-get args :map))
(maps (if (listp map) map (list map)))
(key-bindings (progn
(while (keywordp (car args))
(pop args)
(pop args))
args)))
(macroexp-progn
(apply
#'nconc
(mapcar (lambda (form)
(if maps
(mapcar
#'(lambda (m)
`(bind-chord ,(car form) ',(cdr form) ,m)) maps)
`((bind-chord ,(car form) ',(cdr form)))))
key-bindings)))))
(macroexp-progn (bind-chords-form args nil)))
(provide 'bind-chord)


+ 135
- 60
bind-key.el View File

@ -1,40 +1,38 @@
;;; bind-key.el --- A simple way to manage personal keybindings
;;; bind-key.el --- A simple way to manage personal keybindings -*- lexical-binding: t; -*-
;; Copyright (c) 2012-2017 John Wiegley
;; Copyright (c) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 16 Jun 2012
;; Modified: 29 Nov 2017
;; Version: 2.4
;; Keywords: keys keybinding config dotemacs
;; Version: 2.4.1
;; Package-Requires: ((emacs "24.3"))
;; Keywords: keys keybinding config dotemacs extensions
;; 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.
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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. If not, see <https://www.gnu.org/licenses/>.
;;; 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:
;; If you have lots of keybindings set in your init 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.
;;
;; (require 'bind-key)
;; Bind keys as follows in your init file:
;;
;; (bind-key "C-c x" 'my-ctrl-c-x-command)
;;
@ -97,6 +95,8 @@
;; 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.
;;
;; See the `use-package' info manual for more information.
;;; Code:
@ -104,8 +104,11 @@
(require 'easy-mmode)
(defgroup bind-key nil
"A simple way to manage personal keybindings"
:group 'emacs)
"A simple way to manage personal keybindings."
:group 'keyboard
:group 'convenience
:link '(emacs-commentary-link :tag "Commentary" "bind-key.el")
:version "29.1")
(defcustom bind-key-column-widths '(18 . 40)
"Width of columns in `describe-personal-keybindings'."
@ -114,8 +117,7 @@
(defcustom bind-key-segregation-regexp
"\\`\\(\\(C-[chx] \\|M-[gso] \\)\\([CM]-\\)?\\|.+-\\)"
"Regular expression used to divide key sets in the output from
\\[describe-personal-keybindings]."
"Regexp used by \\[describe-personal-keybindings] to divide key sets."
:type 'regexp
:group 'bind-key)
@ -127,11 +129,23 @@
;; Create override-global-mode to force key remappings
(defvar override-global-map (make-keymap)
"override-global-mode keymap")
"Keymap for `override-global-mode'.")
(define-minor-mode override-global-mode
"A minor mode so that keymap settings override other modes."
t "")
"A minor mode for allowing keybindings to override other modes.
The main purpose of this mode is to simplify bindings keys in
such a way that they take precedence over other modes.
To achieve this, the keymap `override-global-map' is added to
`emulation-mode-map-alists', which makes it take precedence over
keymaps in `minor-mode-map-alist'. Thereby, key bindings get an
even higher precedence than global key bindings defined with
`keymap-global-set' (or, in Emacs 28 or older, `global-set-key').
The macro `bind-key*' (which see) provides a convenient way to
add keys to that keymap."
:init-value t
:lighter "")
;; the keymaps in `emulation-mode-map-alists' take precedence over
;; `minor-mode-map-alist'
@ -148,18 +162,19 @@ Elements have the form ((KEY . [MAP]) CMD ORIGINAL-CMD)")
"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.
`define-key'. Or it may be a string to be interpreted as
spelled-out keystrokes, e.g., \"C-c C-z\". See the documentation
of `edmacro-mode' for details.
COMMAND must be an interactive function or lambda form.
COMMAND must be an interactive function, lambda form, or a cons
`(STRING . DEFN)'.
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)
(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.
@ -172,8 +187,9 @@ can safely be called at any time."
(kdescvar (make-symbol "kdesc"))
(bindingvar (make-symbol "binding")))
`(let* ((,namevar ,key-name)
(,keyvar (if (vectorp ,namevar) ,namevar
(read-kbd-macro ,namevar)))
(,keyvar ,(if (stringp key-name) (read-kbd-macro key-name)
`(if (vectorp ,namevar) ,namevar
(read-kbd-macro ,namevar))))
(,kmapvar (or (if (and ,keymap (symbolp ,keymap))
(symbol-value ,keymap) ,keymap)
global-map))
@ -221,11 +237,11 @@ See `bind-key' for more details."
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))
(setq key (cl-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)
@ -239,7 +255,7 @@ In contrast to `define-key', this function removes the binding from the keymap."
(delete (last key) submap)
;; Delete submap if it is empty
(when (= 1 (length submap))
(bind-key--remove prefix keymap)))))
(bind-key--remove prefix keymap)))))
;;;###autoload
(defmacro bind-key* (key-name command &optional predicate)
@ -257,30 +273,60 @@ Accepts keyword arguments:
for these bindings
:prefix-docstring STR - docstring for the prefix-map variable
:menu-name NAME - optional menu string for prefix map
:repeat-docstring STR - docstring for the repeat-map variable
:repeat-map MAP - name of the repeat map that should be created
for these bindings. If specified, the
`repeat-map' property of each command bound
(within the scope of the `:repeat-map' keyword)
is set to this map.
:exit BINDINGS - Within the scope of `:repeat-map' will bind the
key in the repeat map, but will not set the
`repeat-map' property of the bound command.
:continue BINDINGS - Within the scope of `:repeat-map' forces the
same behaviour as if no special keyword had
been used (that is, the command is bound, and
it's `repeat-map' property set)
: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-doc
prefix-map
prefix
repeat-map
repeat-doc
repeat-type ;; Only used internally
filter
menu-name
pkg)
;; Process any initial keyword arguments
(let ((cont t))
(let ((cont t)
(arg-change-func 'cddr))
(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)))
(setq prefix-doc (cadr args)))
((and (eq :prefix-map (car args))
(not (memq map '(global-map
override-global-map))))
(setq prefix-map (cadr args)))
((eq :repeat-docstring (car args))
(setq repeat-doc (cadr args)))
((and (eq :repeat-map (car args))
(not (memq map '(global-map
override-global-map))))
(setq repeat-map (cadr args))
(setq map repeat-map))
((eq :continue (car args))
(setq repeat-type :continue
arg-change-func 'cdr))
((eq :exit (car args))
(setq repeat-type :exit
arg-change-func 'cdr))
((eq :prefix (car args))
(setq prefix (cadr args)))
((eq :filter (car args))
@ -289,13 +335,17 @@ function symbol (unquoted)."
(setq menu-name (cadr args)))
((eq :package (car args))
(setq pkg (cadr args))))
(setq args (cddr args))
(setq args (funcall arg-change-func 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 repeat-type
(unless repeat-map
(error ":continue and :exit require specifying :repeat-map")))
(when (and menu-name (not prefix))
(error "If :menu-name is supplied, :prefix must be too"))
@ -327,13 +377,16 @@ function symbol (unquoted)."
(append
(when prefix-map
`((defvar ,prefix-map)
,@(when doc `((put ',prefix-map 'variable-documentation ,doc)))
,@(when prefix-doc `((put ',prefix-map 'variable-documentation ,prefix-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)))))
(when repeat-map
`((defvar ,repeat-map (make-sparse-keymap)
,@(when repeat-doc `(,repeat-doc)))))
(wrap map
(cl-mapcan
(lambda (form)
@ -341,13 +394,19 @@ function symbol (unquoted)."
(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))
;; Only needed in this branch, since when
;; repeat-map is non-nil, map is always
;; non-nil
`(,@(when (and repeat-map (not (eq repeat-type :exit)))
`((put ,fun 'repeat-map ',repeat-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)))))))
(bind-keys-form `(,@(when repeat-map `(:repeat-map ,repeat-map))
,@(if pkg
(cons :package (cons pkg next))
next)) map)))))))
;;;###autoload
(defmacro bind-keys (&rest args)
@ -361,6 +420,19 @@ Accepts keyword arguments:
for these bindings
:prefix-docstring STR - docstring for the prefix-map variable
:menu-name NAME - optional menu string for prefix map
:repeat-docstring STR - docstring for the repeat-map variable
:repeat-map MAP - name of the repeat map that should be created
for these bindings. If specified, the
`repeat-map' property of each command bound
(within the scope of the `:repeat-map' keyword)
is set to this map.
:exit BINDINGS - Within the scope of `:repeat-map' will bind the
key in the repeat map, but will not set the
`repeat-map' property of the bound command.
:continue BINDINGS - Within the scope of `:repeat-map' forces the
same behaviour as if no special keyword had
been used (that is, the command is bound, and
it's `repeat-map' property set)
:filter FORM - optional form to determine when bindings apply
The rest of the arguments are conses of keybinding string and a
@ -369,6 +441,11 @@ function symbol (unquoted)."
;;;###autoload
(defmacro bind-keys* (&rest args)
"Bind multiple keys at once, in `override-global-map'.
Accepts the same keyword arguments as `bind-keys' (which see).
This binds keys in such a way that bindings are not overridden by
other modes. See `override-global-mode'."
(macroexp-progn (bind-keys-form args 'override-global-map)))
(defun get-binding-description (elem)
@ -461,8 +538,7 @@ function symbol (unquoted)."
(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))
)
(at-present-desc (get-binding-description at-present)))
(let ((line
(format
(format "%%-%ds%%-%ds%%s\n" (car bind-key-column-widths)
@ -484,7 +560,6 @@ function symbol (unquoted)."
;; Local Variables:
;; outline-regexp: ";;;\\(;* [^\s\t\n]\\|###autoload\\)\\|("
;; indent-tabs-mode: nil
;; End:
;;; bind-key.el ends here

+ 5
- 9
default.mk View File

@ -27,8 +27,7 @@ TAR ?= tar
SED ?= sed
EMACS ?= emacs
EMACSBIN ?= $(EMACS)
BATCH = $(EMACSBIN) -Q --batch $(LOAD_PATH)
BATCH = $(EMACS) -Q --batch $(LOAD_PATH)
INSTALL_INFO ?= $(shell command -v ginstall-info || printf install-info)
MAKEINFO ?= makeinfo
@ -63,9 +62,9 @@ ELGS =
## Versions ##########################################################
VERSION = 2.4.1
VERSION = 2.4.4
USE_PACKAGE_VERSION = 2.4.1
USE_PACKAGE_VERSION = 2.4.4
EMACS_VERSION = 24.3
@ -81,7 +80,7 @@ ifndef LOAD_PATH
ELPA_DIR ?= $(HOME)/.emacs.d/elpa
SYSTYPE := $(shell $(EMACSBIN) -Q --batch --eval "(princ system-type)")
SYSTYPE := $(shell $(EMACS) -Q --batch --eval "(princ system-type)")
ifeq ($(SYSTYPE), windows-nt)
CYGPATH := $(shell cygpath --version 2>/dev/null)
endif
@ -90,7 +89,4 @@ LOAD_PATH = -L $(TOP)
endif # ifndef LOAD_PATH
DOC_LOAD_PATH ?= $(LOAD_PATH) \
-L $(HOME)/emacs/site-lisp \
-L $(HOME)/emacs/site-lisp/ox-texinfo-plus \
-L $(HOME)/emacs/site-lisp/org-mode/contrib/lisp
DOC_LOAD_PATH ?= $(LOAD_PATH) -L $(HOME)/emacs/site-lisp

+ 0
- 0
doc/.nosearch View File


+ 0
- 169
doc/Makefile View File

@ -1,169 +0,0 @@
# Time-stamp: <2018-01-27 22:11:28 kmodi>
# Makefile to generate use-package doc site
EMACS ?= emacs
EMACS_exists := $(shell command -v $(EMACS) 2> /dev/null)
ifeq ("$(EMACS_exists)","")
EMACS := /tmp/emacs/bin/emacs
endif
# EMACS_BIN_SOURCE and EMACS_VERSION are used later in the vcheck rule
# only if EMACS_exists has evaluated to "".
EMACS_BIN_SOURCE ?= https://github.com/npostavs/emacs-travis/releases/download/bins
EMACS_VERSION ?= 25.3
# Directory where the required elisp packages are auto-installed
TMPDIR ?= /tmp
OX_HUGO_ELPA=$(TMPDIR)/$(USER)/ox-hugo-dev/
HUGO ?= hugo
HUGO_exists := $(shell command -v $(HUGO) 2> /dev/null)
ifeq ("$(HUGO_exists)","")
HUGO := $(OX_HUGO_ELPA)hugo
endif
# HUGO_VERSION and HUGO_OS are used later in the vcheck rule only if
# HUGO_exists has evaluated to "".
HUGO_VERSION ?= 0.34
# |--------------------|
# | HUGO_OS |
# |--------------------|
# | DragonFlyBSD-64bit |
# | FreeBSD-32bit |
# | FreeBSD-64bit |
# | FreeBSD-ARM |
# | Linux-32bit |
# | Linux-64bit |
# | Linux-ARM |
# | Linux-ARM64 |
# | NetBSD-32bit |
# | NetBSD-64bit |
# | NetBSD-ARM |
# | OpenBSD-32bit |
# | OpenBSD-64bit |
# | macOS-32bit |
# | macOS-64bit |
# |--------------------|
HUGO_OS ?= Linux-64bit
# Directory containing the Hugo site's config.toml
HUGO_BASE_DIR=./
# Value to be passed to hugo's --baseURL argument
HUGO_BASE_URL ?= http://localhost
# Other hugo arguments
HUGO_ARGS=
# Set TIMEZONE to the TZ environment variable. If TZ is unset, Emacs
# uses system wall clock time, which is a platform-dependent default
# time zone --
# https://www.gnu.org/software/emacs/manual/html_node/elisp/Time-Zone-Rules.html
TIMEZONE=${TZ}
# Port for hugo server
PORT=1337
USE_PACKAGE_DOC_DIR=$(shell pwd)
USE_PACKAGE_DOC_SITE_DIR=$(shell pwd)
# https://stackoverflow.com/a/3774731/1219634
# Note that the use of immediate assignment := rather than recursive
# assignment = is important here: you do not want to be running the
# shell escape every time SOURCES is inspected by make.
org_files := $(shell find ../ -type f -name '*.org')
# Path to the Org file (relative to pwd, or absolute)
# ORG_FILE=
# # Function to be run in emacs --batch
# FUNC=
.PHONY: emacs-batch md1 vcheck hugo doc_site
md $(org_files) \
doc_md doc_gh doc \
ctemp clean
# Note: The Org file from $(ORG_FILE) is loaded *after* the --eval
# section gets evaluated i.e. --eval '(progn ..)' $(ORG_FILE) If the
# order is reversed i.e. i.e.$(ORG_FILE) --eval '(progn ..)', the act
# of loading the $(ORG_FILE) file first will load the older Org
# version that ships with Emacs and then run the stuff in --eval that
# loads the new Org version.. and thus we'll end up with mixed Org in
# the load-path.
emacs-batch:
@echo ""
@echo "$(ORG_FILE) ::"
@$(EMACS) --batch --eval "(progn\
(setenv \"OX_HUGO_ELPA\" \"$(OX_HUGO_ELPA)\")\
(when (> (length \"$(TIMEZONE)\") 0) (setenv \"TZ\" \"$(TIMEZONE)\"))\
(setq-default make-backup-files nil)\
(load-file (expand-file-name \"setup-ox-hugo.el\" \"$(USE_PACKAGE_DOC_DIR)\"))\
)" $(ORG_FILE) \
-f $(FUNC) \
--kill
md1:
@$(MAKE) emacs-batch FUNC=org-hugo-export-all-wim-to-md
vcheck:
ifeq ("$(EMACS_exists)","")
@curl -fsSkL --retry 9 --retry-delay 9 -O $(EMACS_BIN_SOURCE)/emacs-bin-$(EMACS_VERSION).tar.gz
@tar xf emacs-bin-$(EMACS_VERSION).tar.gz -C /
endif
@echo "Emacs binary used: $(EMACS)"
@$(EMACS) --batch --eval "(progn\
(setenv \"OX_HUGO_ELPA\" \"$(OX_HUGO_ELPA)\")\
(load-file (expand-file-name \"setup-ox-hugo.el\" \"$(USE_PACKAGE_DOC_DIR)\"))\
(message \"[Version check] Emacs %s\" emacs-version)\
(message \"[Version check] %s\" (org-version nil :full))\
)" \
--kill
ifeq ("$(HUGO_exists)","")
@curl https://github.com/gohugoio/hugo/releases/download/v$(HUGO_VERSION)/hugo_$(HUGO_VERSION)_$(HUGO_OS).tar.gz -L --create-dirs -o $(OX_HUGO_ELPA)hugo.tar.gz
@tar xf $(OX_HUGO_ELPA)hugo.tar.gz -C $(OX_HUGO_ELPA)
@rm -f $(OX_HUGO_ELPA)hugo.tar.gz
endif
@$(HUGO) version
hugo: vcheck
@cd $(HUGO_BASE_DIR) && $(HUGO) --baseURL=$(HUGO_BASE_URL) $(HUGO_ARGS)
doc_site:
@$(MAKE) hugo HUGO_BASE_DIR=.
serve server: vcheck
@echo "Serving the site on $(HUGO_BASE_URL):$(PORT) .."
@cd $(HUGO_BASE_DIR) && $(HUGO) server --baseURL=$(HUGO_BASE_URL) --port $(PORT) --buildDrafts --buildFuture --navigateToChanged
# Run the md1 rules in loop on all of $(org_files)
# https://stackoverflow.com/a/37748952/1219634
md: $(org_files)
$(org_files):
@$(MAKE) md1 ORG_FILE=$@ TIMEZONE=UTC # Use UTC/Universal time zone for tests
doc_md:
@echo "[Doc Site] Generating use-package Documentation Site content .."
@$(MAKE) md1 ORG_FILE=../use-package.org
@echo "[Doc Site] Done"
# doc_gh:
# @echo "[GitHub Docs] Generating README.org and CONTRIBUTING.org for GitHub .."
# @$(MAKE) emacs-batch FUNC=use-package-export-gh-doc ORG_FILE=./doc/github-files.org
# @echo "[GitHub Docs] Done"
doc: doc_md doc_site
ctemp:
@find $(USE_PACKAGE_DOC_SITE_DIR)/content -name "*.*~" -delete
clean: ctemp
@find ./content -name "*.md" -delete
@find ./content -name "issues" -delete
@rm -rf $(USE_PACKAGE_DOC_SITE_DIR)/public
@rm -rf $(OX_HUGO_ELPA)
# Set a make variable during rule execution
# https://stackoverflow.com/a/1909390/1219634
# Check if an executable exists
# https://stackoverflow.com/a/34756868/1219634

+ 0
- 90
doc/config.toml View File

@ -1,90 +0,0 @@
baseURL = "http://example.org/"
Title = "use-package"
theme = "hugo-alabaster-theme"
contentdir = "content"
layoutdir = "layouts"
publishdir = "public"
# Remove files from destination not found in static directories
cleandestinationdir = true
# Needed for relative references like in the below image link
# ![Example PNG image](/images/org-mode-unicorn-logo.png)
canonifyURLs = true
enableGitInfo = true
# https://gohugo.io/extras/highlighting/
# Syntax highlighting using Pygments
# $ python
# >>> from pygments.styles import STYLE_MAP
# >>> STYLE_MAP.keys()
# ['manni', 'igor', 'lovelace', 'xcode', 'vim', 'autumn', 'vs', 'rrt', 'native',
# 'perldoc', 'borland', 'tango', 'emacs', 'friendly', 'monokai', 'paraiso-dark',
# 'colorful', 'murphy', 'bw', 'pastie', 'algol_nu', 'paraiso-light', 'trac',
# 'default', 'algol', 'fruity']
# pygmentsStyle = "native"
# pygmentsStyle = "trac" # This is not needed as the theme is set using external CSS -- Tue Sep 26 13:26:59 EDT 2017 - kmodi
pygmentsCodeFences = true # This applies to Chroma too.
# Use pygmentize generated CSS file instead of inlining the code codes in the HTML.
# See https://gohugo.io/tools/syntax-highlighting/#pygments and
# https://github.com/richleland/pygments-css
pygmentsUseClasses = true # This applies to Chroma too.
pygmentsUseClassic = false # Needs Hugo 0.28+, default=false => Use Chroma for syntax highlighting
enableEmoji = true
LanguageCode = "en-us" # Used in RSS generation
disableFastRender = true # Hugo 0.30
# [Permalinks]
# # post = "/:year/:month/:title/"
# # Below, we have
# # foo = "bar"
# # where foo = section name without double quotes for which we want to have
# # the custom permalinks. If foo is 'posts', it will apply to content in
# # content/posts/ dir. The "bar" portion is how you want the links to look.
# # https://gohugo.io/content-management/urls/#permalink-configuration-values
# doc = "/doc/:filename/"
# test = "/test/:slug/"
[params]
name = "use-package"
description = "A use-package declaration for simplifying your .emacs"
# Go date formats: https://golang.org/pkg/time/#pkg-constants
dateform = "Mon Jan 2, 2006"
github_user = "jwiegley"
github_repo = "use-package"
github_banner = true
custom_css = [ # Chroma GitHub theme
"css/github_chroma.css" # Needs pygmentsUseClasses to be true
, "css/style.css"
]
custom_css_absolute = [ # Iosevka fonts
"https://cdn.rawgit.com/kaushalmodi/iosevka-mirror/v1.13.2/iosevka.css"
]
custom_js = []
favicon = "favicon.ico?v=1"
[params.sidebar]
logo = "img/use-package-logo-96x96-v1.svg"
github_button = true
travis_button = true
codecov_button = false
[params.footer]
copyright = ""
show_powered_by = true
# Blackfriday is Hugo's markdown engine.
# https://gohugo.io/overview/configuration/#configure-blackfriday-rendering
[blackfriday]
hrefTargetBlank = true # open external links in a new window or tab

+ 0
- 0
doc/content/.gitkeep View File


+ 0
- 7
doc/layouts/section/issues.html View File

@ -1,7 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<title>use-package Issues</title>
<meta http-equiv="refresh" content="0; URL='https://github.com/jwiegley/use-package/issues'" />
</head>
</html>

+ 0
- 217
doc/setup-ox-hugo.el View File

@ -1,217 +0,0 @@
;; Time-stamp: <2017-12-19 16:49:24 kmodi>
;; Setup to export Org files to Hugo-compatible Markdown using
;; `ox-hugo' in an "emacs -Q" environment.
;; Some sane settings
(setq-default require-final-newline t)
(setq-default indent-tabs-mode nil)
(defvar ox-hugo-test-setup-verbose nil
"When non-nil, enable printing more messages from setup-ox-hugo.el.")
(defvar ox-hugo-install-org-from-elpa (version< emacs-version "26.0")
"When non-nil, install Org from Org Elpa.
The default value of this variable is non-nil if emacs version is
older than 26, and nil otherwise.
Emacs 26 onwards comes with at least Org 9.1.4. So there is no
need to install Org from Elpa as that Org version meets the
minimum requirement for `ox-hugo', and thus the doc site
generation.")
(defvar ox-hugo-elpa (let ((dir (getenv "OX_HUGO_ELPA")))
(unless dir
(setq dir (concat (file-name-as-directory
(concat temporary-file-directory (getenv "USER")))
"ox-hugo-site/")))
(setq dir (file-name-as-directory dir))
(make-directory dir :parents)
dir))
(when ox-hugo-test-setup-verbose
(message "ox-hugo-elpa: %s" ox-hugo-elpa))
(defvar ox-hugo-packages '(;; toc-org ;No need to install toc-org yet, needed only if exporting to README.org
ox-hugo))
(when ox-hugo-install-org-from-elpa
;; `org' will always be detected as installed, so use
;; `org-plus-contrib'.
;; Fri Sep 22 18:24:19 EDT 2017 - kmodi
;; Install the packages in the specified order. We do not want
;; `toc-org' to be installed first. If that happens, `org' will be
;; required before the newer version of Org gets installed and we
;; will end up with mixed Org version. So put `org-plus-contrib' at
;; the beginning of `ox-hugo-packages'.
(add-to-list 'ox-hugo-packages 'org-plus-contrib))
(defvar ox-hugo-site-git-root (progn
(require 'vc-git)
(file-truename (vc-git-root default-directory)))
"Absolute path of the git root of the current project.")
(when ox-hugo-test-setup-verbose
(message "ox-hugo-site-git-root: %S" ox-hugo-site-git-root))
;; Below will prevent installation of `org' package as a dependency
;; when installing `ox-hugo' from Melpa.
(defun ox-hugo-package-dependency-check-ignore (orig-ret)
"Remove the `black listed packages' from ORIG-RET.
Packages listed in the let-bound `pkg-black-list' will not be auto-installed
even if they are found as dependencies."
(let ((pkg-black-list '(org))
new-ret
pkg-name)
(dolist (pkg-struct orig-ret)
(setq pkg-name (package-desc-name pkg-struct))
(if (member pkg-name pkg-black-list)
(message (concat "Package `%s' will not be installed. "
"See `ox-hugo-package-dependency-check-ignore'.")
pkg-name)
;; (message "Package to be installed: %s" pkg-name)
(push pkg-struct new-ret)))
(setq new-ret (reverse new-ret))
;; (message "after %S" new-ret)
new-ret))
(advice-add 'package-compute-transaction :filter-return #'ox-hugo-package-dependency-check-ignore)
;; (advice-remove 'package-compute-transaction #'ox-hugo-package-dependency-check-ignore)
(if (and (stringp ox-hugo-elpa)
(file-exists-p ox-hugo-elpa))
(progn
;; Load newer version of .el and .elc if both are available
(setq load-prefer-newer t)
(setq package-user-dir (format "%selpa_%s/" ox-hugo-elpa emacs-major-version))
;; Below require will auto-create `package-user-dir' it doesn't exist.
(require 'package)
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
(not (gnutls-available-p))))
(url (concat (if no-ssl "http" "https") "://melpa.org/packages/")))
(add-to-list 'package-archives (cons "melpa" url)))
;; Even if we don't need to install Org from Elpa, we need to
;; add Org Elpa in `package-archives' to prevent the "Package
;; ‘org-9.0’ is unavailable" error.
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) ;For latest stable `org'
;; Load emacs packages and activate them.
;; Don't delete this line.
(package-initialize)
;; `package-initialize' call is required before any of the below
;; can happen.
;; (add-to-list 'load-path (concat ox-hugo-site-git-root "doc/")) ;For ox-hugo-export-gh-doc.el
(defvar ox-hugo-missing-packages '()
"List populated at each startup that contains the list of packages that need
to be installed.")
(dolist (p ox-hugo-packages)
;; (message "Is %S installed? %s" p (package-installed-p p))
(unless (package-installed-p p)
(add-to-list 'ox-hugo-missing-packages p :append)))
(when ox-hugo-missing-packages
(message "Emacs is now refreshing its package database...")
(package-refresh-contents)
;; Install the missing packages
(dolist (p ox-hugo-missing-packages)
(message "Installing `%s' .." p)
(package-install p))
(setq ox-hugo-missing-packages '())))
(error "The environment variable OX_HUGO_ELPA needs to be set"))
;; Remove Org that ships with Emacs from the `load-path' if installing
;; it from Elpa.
(when ox-hugo-install-org-from-elpa
(let* ((bin-dir (when (and invocation-directory
(file-exists-p invocation-directory))
(file-truename invocation-directory)))
(prefix-dir (when bin-dir
(replace-regexp-in-string "bin/\\'" "" bin-dir)))
(share-dir (when prefix-dir
(concat prefix-dir "share/")))
(lisp-dir-1 (when share-dir ;Possibility where the lisp dir is something like ../emacs/26.0.50/lisp/
(concat share-dir "emacs/"
;; If `emacs-version' is x.y.z.w, remove the ".w" portion
;; Though, this is not needed and also will do nothing in emacs 26+
;; http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=22b2207471807bda86534b4faf1a29b3a6447536
(replace-regexp-in-string "\\([0-9]+\\.[0-9]+\\.[0-9]+\\).*" "\\1" emacs-version)
"/lisp/")))
(lisp-dir-2 (when share-dir ;Possibility where the lisp dir is something like ../emacs/25.2/lisp/
(concat share-dir "emacs/"
(replace-regexp-in-string "\\([0-9]+\\.[0-9]+\\).*" "\\1" emacs-version)
"/lisp/"))))
(when ox-hugo-test-setup-verbose
(message "emacs bin-dir: %s" bin-dir)
(message "emacs prefix-dir: %s" prefix-dir)
(message "emacs share-dir: %s" share-dir)
(message "emacs lisp-dir-1: %s" lisp-dir-1)
(message "emacs lisp-dir-2: %s" lisp-dir-2))
(defvar ox-hugo-default-lisp-directory (cond
((file-exists-p lisp-dir-1)
lisp-dir-1)
((file-exists-p lisp-dir-2)
lisp-dir-2)
(t
nil))
"Directory containing lisp files for the Emacs installation.
This value must match the path to the lisp/ directory of the
Emacs installation. If Emacs is installed using
--prefix=\"${PREFIX_DIR}\" this value would typically be
\"${PREFIX_DIR}/share/emacs/<VERSION>/lisp/\"."))
(when ox-hugo-test-setup-verbose
(message "ox-hugo-default-lisp-directory: %S" ox-hugo-default-lisp-directory))
(with-eval-after-load 'package
;; Remove Org that ships with Emacs from the `load-path'.
(when (stringp ox-hugo-default-lisp-directory)
(dolist (path load-path)
(when (string-match-p (expand-file-name "org" ox-hugo-default-lisp-directory) path)
(setq load-path (delete path load-path))))))
;; (message "`load-path': %S" load-path)
;; (message "`load-path' Shadows:")
;; (message (list-load-path-shadows :stringp))
)
(require 'ox-hugo)
(defun org-hugo-export-all-wim-to-md ()
(org-hugo-export-wim-to-md :all-subtrees nil nil :noerror))
;; (require 'ox-hugo-export-gh-doc) ;For `ox-hugo-export-gh-doc'
(with-eval-after-load 'org
;; Allow multiple line Org emphasis markup
;; http://emacs.stackexchange.com/a/13828/115
(setcar (nthcdr 4 org-emphasis-regexp-components) 20) ;Up to 20 lines, default is just 1
;; Below is needed to apply the modified `org-emphasis-regexp-components'
;; settings from above.
(org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components)
;; Prevent prompts like:
;; Non-existent agenda file
(defun org-check-agenda-file (file))
(let (ob-lang-alist)
(add-to-list 'ob-lang-alist '(emacs-lisp . t))
(add-to-list 'ob-lang-alist '(org . t))
(org-babel-do-load-languages 'org-babel-load-languages ob-lang-alist))
(with-eval-after-load 'ob-core
(defun ox-hugo-org-confirm-babel-evaluate-fn (lang body)
"Mark `org' as a safe language for ox-hugo tests and docs."
(let* ((ob-enabled-langs '("org"))
(ob-enabled-langs-re (regexp-opt ob-enabled-langs 'words))
(unsafe t)) ;Set the return value `unsafe' to t by default
(when (string-match-p ob-enabled-langs-re lang)
(setq unsafe nil))
unsafe))
(setq org-confirm-babel-evaluate #'ox-hugo-org-confirm-babel-evaluate-fn))
(with-eval-after-load 'ox
(setq org-export-headline-levels 4) ;default is 3
(add-to-list 'org-export-exclude-tags "ignore")))

+ 0
- 71
doc/static/css/github_chroma.css View File

@ -1,71 +0,0 @@
/* Background */ .chroma { background-color: #ffffff }
/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
/* LineTableTD */ .chroma .lntd { ; vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { ; border-spacing: 0; padding: 0; margin: 0; border: 0; width: 100%; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { background-color: #ffffcc; display: block; width: 100% }
/* LineNumbersTable */ .chroma .lnt { ; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; display: block; }
/* LineNumbers */ .chroma .ln { ; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; }
/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
/* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold }
/* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold }
/* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold }
/* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold }
/* KeywordType */ .chroma .kt { color: #445588; font-weight: bold }
/* NameAttribute */ .chroma .na { color: #008080 }
/* NameBuiltin */ .chroma .nb { color: #0086b3 }
/* NameBuiltinPseudo */ .chroma .bp { color: #999999 }
/* NameClass */ .chroma .nc { color: #445588; font-weight: bold }
/* NameConstant */ .chroma .no { color: #008080 }
/* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold }
/* NameEntity */ .chroma .ni { color: #800080 }
/* NameException */ .chroma .ne { color: #990000; font-weight: bold }
/* NameFunction */ .chroma .nf { color: #990000; font-weight: bold }
/* NameLabel */ .chroma .nl { color: #990000; font-weight: bold }
/* NameNamespace */ .chroma .nn { color: #555555 }
/* NameTag */ .chroma .nt { color: #000080 }
/* NameVariable */ .chroma .nv { color: #008080 }
/* NameVariableClass */ .chroma .vc { color: #008080 }
/* NameVariableGlobal */ .chroma .vg { color: #008080 }
/* NameVariableInstance */ .chroma .vi { color: #008080 }
/* LiteralString */ .chroma .s { color: #dd1144 }
/* LiteralStringAffix */ .chroma .sa { color: #dd1144 }
/* LiteralStringBacktick */ .chroma .sb { color: #dd1144 }
/* LiteralStringChar */ .chroma .sc { color: #dd1144 }
/* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 }
/* LiteralStringDoc */ .chroma .sd { color: #dd1144 }
/* LiteralStringDouble */ .chroma .s2 { color: #dd1144 }
/* LiteralStringEscape */ .chroma .se { color: #dd1144 }
/* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 }
/* LiteralStringInterpol */ .chroma .si { color: #dd1144 }
/* LiteralStringOther */ .chroma .sx { color: #dd1144 }
/* LiteralStringRegex */ .chroma .sr { color: #009926 }
/* LiteralStringSingle */ .chroma .s1 { color: #dd1144 }
/* LiteralStringSymbol */ .chroma .ss { color: #990073 }
/* LiteralNumber */ .chroma .m { color: #009999 }
/* LiteralNumberBin */ .chroma .mb { color: #009999 }
/* LiteralNumberFloat */ .chroma .mf { color: #009999 }
/* LiteralNumberHex */ .chroma .mh { color: #009999 }
/* LiteralNumberInteger */ .chroma .mi { color: #009999 }
/* LiteralNumberIntegerLong */ .chroma .il { color: #009999 }
/* LiteralNumberOct */ .chroma .mo { color: #009999 }
/* Operator */ .chroma .o { color: #000000; font-weight: bold }
/* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold }
/* Comment */ .chroma .c { color: #999988; font-style: italic }
/* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic }
/* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic }
/* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic }
/* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic }
/* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic }
/* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic }
/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
/* GenericError */ .chroma .gr { color: #aa0000 }
/* GenericHeading */ .chroma .gh { color: #999999 }
/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
/* GenericOutput */ .chroma .go { color: #888888 }
/* GenericPrompt */ .chroma .gp { color: #555555 }
/* GenericStrong */ .chroma .gs { font-weight: bold }
/* GenericSubheading */ .chroma .gu { color: #aaaaaa }
/* GenericTraceback */ .chroma .gt { color: #aa0000 }
/* TextWhitespace */ .chroma .w { color: #bbbbbb }

+ 0
- 142
doc/static/css/style.css View File

@ -1,142 +0,0 @@
.post-date {
/* display: block; */
float: right;
/* Italicize the date stamp */
font-style: italic;
margin-top: -0.5em;
margin-bottom: 0.3em;
color: #9a9a9a;
}
/* Show actual underline under "underline" class spanned text. */
.underline {
text-decoration: underline;
}
/* Iosevka font is awesome! */
pre, tt, code {
font-family: 'Iosevka', 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
font-size: 0.9em;
}
/* Tue Sep 26 12:32:04 EDT 2017 - kmodi*/
/* Override the background-color for pre blocks.. overrides the Hugo theme, and Pygments/Chroma CSS. */
pre, pre code, .chroma {
/* background-color: inherit; */
background-color: #EEE;
}
/* Very little padding on the left and right margins of code blocks */
li pre, pre {
padding-left: 5px;
padding-right: 5px;
}
/* Do not show list bullets for checkbox list items */
ul.task-list {
list-style-type: none;
}
/* Org timestamps */
/* Example: In Changelog */
.timestamp {
color: #BEBEBE;
font-family: monospace;
font-weight: bold;
font-size: 0.7em;
}
/* * Table of Contents on side */
.toc {
font-family: 'Source Sans Pro', sans-serif;
display: none;
position: fixed;
left: 50%;
top: 110px;
width: 260px;
margin-left: 500px;
overflow-y: auto;
max-height: 85%;
padding: 0;
}
.toc li {
list-style: none;
}
.toc ul>li {
font-size: 0.9rem;
margin-bottom: 0.4rem;
}
.toc ul>li>ul>li {
font-size: 0.8rem;
margin-bottom: 0.4rem;
}
.toc ul>li>ul>li>ul>li {
font-size: 0.7rem;
margin-bottom: 0.3rem;
}
.toc ul { /* Add left padding for headings in TOC */
padding-left: 1rem;
margin: 0;
}
.toc nav>ul { /* The highest level heading in a blog post is level-2 */
padding-left: 0; /* The level-1 heading is reserved for the blog title. */
/* So do not add any padding for level-1 heading, as that will never show*/
/* up in the TOC. */
}
.toc a {
text-decoration: none;
}
.toc a:hover {
color: gray;
}
.toc a.current {
color: gray;
font-weight: bold;
}
/* Override the bullets customization done above, just for list items*/
/* in .toc class */
.toc ul:not(.catlist):not(.navbar):not(.post-list) li:before {
content: '';
}
.toc .back-to-top { /* Back to top link */
font-size: 0.7rem;
padding-left: 1rem;
}
/* Don't display section numbers */
.section-num {
display: none;
}
@media screen and (min-width: 1400px) {
.toc {
display: block;
}
}
/* Captions */
figcaption,
.src-block-caption,
.table-caption {
font-style: italic;
text-align: center;
}
/* Don't underline captions in hyperlinked images */
figure a,
figure a:hover {
text-decoration: none;
}
/* Sane Table */
/* https://css-tricks.com/complete-guide-table-element/#article-header-id-17 */
.sane-table table {
border-collapse: collapse;
width: 100%;
}
.sane-table th,
.sane-table td {
padding: 0.25rem;
text-align: left;
border: 1px solid #ccc;
}

BIN
doc/static/favicon-16x16.png View File

Before After
Width: 16  |  Height: 16  |  Size: 282 B

BIN
doc/static/favicon-32x32.png View File

Before After
Width: 32  |  Height: 32  |  Size: 816 B

BIN
doc/static/favicon-96x96.png View File

Before After
Width: 96  |  Height: 96  |  Size: 2.3 KiB

BIN
doc/static/favicon.ico View File

Before After

+ 0
- 11
doc/static/img/logo-raw/use-package-logo-16x16-v1.svg View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<g>
<path fill="#FFFFFF" d="M16,13c0,1.65-1.35,3-3,3H3c-1.65,0-3-1.35-3-3V3c0-1.65,1.35-3,3-3h10c1.65,0,3,1.35,3,3V13z"/>
</g>
<polygon id="u" fill="#5F29C6" points="13,4.29 13,10.55 8,13.16 3,10.55 3,4.29 3,4.29 5.77,2.84 5.77,8.98 8,10.15 10.23,8.98
10.23,2.84 13,4.29 "/>
</svg>

+ 0
- 168
doc/static/img/logo-raw/use-package-logo-32x32-v1.svg View File

@ -1,168 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
<g opacity="0.4">
<path id="shadow_2_" fill="#FFFFFF" fill-opacity="0" d="M24.28,21.99c-1.06-0.56-2.8-0.56-3.87,0l-1.97,1.04
c-1.06,0.56-2.81,0.56-3.87,0l-1.97-1.04c-1.06-0.56-2.8-0.56-3.87,0L5.7,23.58c-1.06,0.56-1.06,1.48,0,2.04l8.86,4.67
c1.06,0.56,2.81,0.56,3.87,0l8.86-4.67c1.06-0.56,1.06-1.48,0-2.04L24.28,21.99z"/>
<path opacity="0.0118" fill="#FBFBFC" enable-background="new " d="M24.22,22.01c-1.05-0.55-2.78-0.55-3.84,0l-1.96,1.03
c-1.06,0.56-2.78,0.56-3.84,0l-1.96-1.03c-1.06-0.55-2.78-0.55-3.84,0l-3,1.58c-1.06,0.56-1.06,1.47,0,2.02l8.79,4.63
c1.06,0.55,2.78,0.55,3.84,0l8.79-4.63c1.05-0.55,1.05-1.46,0-2.02L24.22,22.01z"/>
<path opacity="0.0235" fill="#F7F6F9" enable-background="new " d="M24.15,22.03c-1.05-0.55-2.76-0.55-3.81,0l-1.94,1.02
c-1.05,0.55-2.76,0.55-3.81,0l-1.94-1.02c-1.05-0.55-2.76-0.55-3.81,0L5.87,23.6c-1.05,0.55-1.05,1.46,0,2l8.72,4.6
c1.05,0.55,2.76,0.55,3.81,0l8.72-4.6c1.05-0.55,1.05-1.45,0-2L24.15,22.03z"/>
<path opacity="0.0353" fill="#F4F2F6" enable-background="new " d="M24.09,22.06c-1.04-0.54-2.74-0.54-3.78,0l-1.93,1.01
c-1.04,0.55-2.74,0.55-3.78,0l-1.93-1.01c-1.04-0.54-2.74-0.54-3.78,0l-2.95,1.55c-1.04,0.55-1.04,1.45,0,1.99l8.65,4.56
c1.04,0.54,2.74,0.54,3.78,0l8.66-4.56c1.04-0.54,1.04-1.44,0-1.99L24.09,22.06z"/>
<path opacity="0.0471" fill="#F0EEF3" enable-background="new " d="M24.03,22.08c-1.03-0.54-2.72-0.54-3.75,0l-1.91,1
c-1.03,0.54-2.72,0.54-3.75,0l-1.91-1c-1.03-0.54-2.72-0.54-3.75,0l-2.93,1.54C5,24.16,5,25.05,6.03,25.59l8.58,4.52
c1.03,0.54,2.72,0.54,3.75,0l8.58-4.52c1.03-0.54,1.03-1.43,0-1.97L24.03,22.08z"/>
<path opacity="0.0588" fill="#ECEAF0" enable-background="new " d="M23.97,22.11c-1.02-0.54-2.7-0.54-3.72,0l-1.9,1
c-1.02,0.54-2.7,0.54-3.72,0l-1.9-1c-1.02-0.54-2.69-0.54-3.72,0l-2.9,1.53c-1.02,0.54-1.02,1.42,0,1.96l8.52,4.49
c1.02,0.54,2.7,0.54,3.72,0l8.52-4.49c1.02-0.54,1.02-1.42,0-1.96L23.97,22.11z"/>
<path opacity="0.0706" fill="#E8E5EE" enable-background="new " d="M23.91,22.13c-1.01-0.53-2.67-0.53-3.68,0l-1.88,0.99
c-1.01,0.54-2.67,0.54-3.69,0l-1.88-0.99c-1.01-0.53-2.67-0.53-3.69,0l-2.88,1.52c-1.01,0.53-1.01,1.41,0,1.94l8.45,4.45
c1.01,0.53,2.67,0.53,3.69,0l8.45-4.45c1.01-0.53,1.01-1.41,0-1.94L23.91,22.13z"/>
<path opacity="0.0824" fill="#E4E1EB" enable-background="new " d="M23.85,22.15c-1-0.53-2.65-0.53-3.66,0l-1.87,0.98
c-1.01,0.53-2.65,0.53-3.66,0l-1.87-0.98c-1.01-0.53-2.65-0.53-3.66,0l-2.85,1.5c-1.01,0.53-1.01,1.4,0,1.93L14.67,30
c1.01,0.53,2.65,0.53,3.66,0l8.38-4.41c1-0.53,1-1.4,0-1.93L23.85,22.15z"/>
<path opacity="0.0941" fill="#E0DDE8" enable-background="new " d="M23.79,22.18c-1-0.52-2.63-0.52-3.62,0l-1.85,0.97
c-1,0.53-2.63,0.53-3.63,0l-1.85-0.97c-1-0.52-2.63-0.52-3.63,0l-2.83,1.49c-1,0.53-1,1.39,0,1.91l8.31,4.38
c1,0.52,2.63,0.52,3.63,0l8.31-4.38c1-0.52,1-1.38,0-1.91L23.79,22.18z"/>
<path opacity="0.1059" fill="#DDD8E5" enable-background="new " d="M23.73,22.2c-0.99-0.52-2.61-0.52-3.59,0l-1.83,0.96
c-0.99,0.52-2.61,0.52-3.6,0l-1.83-0.96c-0.99-0.52-2.61-0.52-3.6,0l-2.81,1.48c-0.99,0.52-0.99,1.38,0,1.89l8.24,4.34
c0.99,0.52,2.61,0.52,3.6,0l8.24-4.34c0.99-0.52,0.99-1.37,0-1.89L23.73,22.2z"/>
<path opacity="0.1176" fill="#D9D4E2" enable-background="new " d="M23.67,22.23c-0.98-0.51-2.58-0.51-3.56,0l-1.82,0.96
c-0.98,0.52-2.59,0.52-3.57,0l-1.82-0.96c-0.98-0.51-2.58-0.51-3.57,0L6.55,23.7c-0.98,0.52-0.98,1.36,0,1.88l8.17,4.3
c0.98,0.52,2.59,0.52,3.57,0l8.17-4.3c0.98-0.51,0.98-1.36,0-1.88L23.67,22.23z"/>
<path opacity="0.1294" fill="#D5D0DF" enable-background="new " d="M23.61,22.25c-0.97-0.51-2.56-0.51-3.53,0l-1.8,0.95
c-0.97,0.51-2.56,0.51-3.54,0l-1.8-0.95c-0.97-0.51-2.56-0.51-3.54,0L6.63,23.7c-0.97,0.51-0.97,1.35,0,1.86l8.1,4.27
c0.97,0.51,2.56,0.51,3.54,0l8.1-4.27c0.97-0.51,0.97-1.35,0-1.86L23.61,22.25z"/>
<path opacity="0.1412" fill="#D1CBDC" enable-background="new " d="M23.54,22.27c-0.96-0.51-2.54-0.51-3.5,0l-1.79,0.94
c-0.96,0.51-2.54,0.51-3.51,0l-1.79-0.94c-0.96-0.51-2.54-0.51-3.5,0l-2.74,1.44c-0.96,0.51-0.96,1.34,0,1.85l8.03,4.23
c0.96,0.51,2.54,0.51,3.51,0l8.03-4.23c0.96-0.5,0.96-1.34,0-1.85L23.54,22.27z"/>
<path opacity="0.1529" fill="#CDC7D9" enable-background="new " d="M23.48,22.3c-0.95-0.5-2.52-0.5-3.47,0l-1.77,0.93
c-0.96,0.5-2.52,0.5-3.48,0l-1.77-0.93c-0.96-0.5-2.52-0.5-3.47,0L6.8,23.73c-0.96,0.5-0.96,1.33,0,1.83l7.96,4.19
c0.96,0.5,2.52,0.5,3.48,0l7.96-4.19c0.95-0.5,0.95-1.33,0-1.83L23.48,22.3z"/>
<path opacity="0.1647" fill="#C9C3D6" enable-background="new " d="M23.42,22.32c-0.95-0.5-2.5-0.5-3.44,0l-1.76,0.92
c-0.95,0.5-2.5,0.5-3.44,0l-1.76-0.92c-0.95-0.5-2.5-0.5-3.44,0l-2.69,1.42c-0.95,0.5-0.95,1.32,0,1.81l7.89,4.16
c0.95,0.5,2.5,0.5,3.44,0l7.89-4.16c0.95-0.5,0.95-1.32,0-1.81L23.42,22.32z"/>
<path opacity="0.1765" fill="#C6BFD3" enable-background="new " d="M23.36,22.35c-0.94-0.49-2.47-0.49-3.41,0l-1.74,0.92
c-0.94,0.5-2.48,0.5-3.42,0l-1.74-0.92c-0.94-0.49-2.47-0.49-3.41,0l-2.67,1.4c-0.94,0.49-0.94,1.31,0,1.8l7.82,4.12
c0.94,0.49,2.48,0.49,3.42,0l7.82-4.12c0.94-0.49,0.94-1.3,0-1.8L23.36,22.35z"/>
<path opacity="0.1882" fill="#C2BAD1" enable-background="new " d="M23.3,22.37c-0.93-0.49-2.45-0.49-3.38,0l-1.73,0.91
c-0.93,0.49-2.45,0.49-3.39,0l-1.73-0.91c-0.93-0.49-2.45-0.49-3.38,0l-2.64,1.39c-0.93,0.49-0.93,1.29,0,1.78l7.75,4.08
c0.93,0.49,2.45,0.49,3.39,0l7.75-4.08c0.93-0.49,0.93-1.29,0-1.78L23.3,22.37z"/>
<path opacity="0.2" fill="#BEB6CE" enable-background="new " d="M23.24,22.39c-0.92-0.49-2.43-0.49-3.35,0l-1.71,0.9
c-0.92,0.49-2.43,0.49-3.35,0l-1.71-0.9c-0.92-0.49-2.43-0.49-3.35,0l-2.62,1.38c-0.92,0.49-0.92,1.28,0,1.77l7.68,4.05
c0.92,0.48,2.43,0.48,3.35,0l7.68-4.05c0.92-0.48,0.92-1.28,0-1.77L23.24,22.39z"/>
<path opacity="0.2118" fill="#BAB2CB" enable-background="new " d="M23.18,22.42c-0.91-0.48-2.41-0.48-3.32,0l-1.7,0.89
c-0.91,0.48-2.41,0.48-3.32,0l-1.7-0.89c-0.91-0.48-2.41-0.48-3.32,0l-2.59,1.37c-0.91,0.48-0.91,1.27,0,1.75l7.61,4.01
c0.91,0.48,2.41,0.48,3.32,0l7.61-4.01c0.91-0.48,0.91-1.27,0-1.75L23.18,22.42z"/>
<path opacity="0.2235" fill="#B6ADC8" enable-background="new " d="M23.12,22.44c-0.91-0.48-2.39-0.48-3.29,0l-1.68,0.88
c-0.91,0.48-2.39,0.48-3.29,0l-1.68-0.88c-0.91-0.48-2.39-0.48-3.29,0L7.31,23.8c-0.91,0.48-0.91,1.26,0,1.73l7.54,3.97
c0.91,0.48,2.39,0.48,3.29,0l7.54-3.97c0.9-0.48,0.9-1.26,0-1.73L23.12,22.44z"/>
<path opacity="0.2353" fill="#B3A9C5" enable-background="new " d="M23.06,22.46c-0.9-0.47-2.36-0.47-3.26,0l-1.66,0.88
c-0.9,0.47-2.37,0.47-3.26,0l-1.66-0.88c-0.9-0.47-2.36-0.47-3.26,0L7.4,23.81c-0.9,0.47-0.9,1.25,0,1.72l7.47,3.94
c0.9,0.47,2.37,0.47,3.26,0l7.47-3.94c0.9-0.47,0.9-1.25,0-1.72L23.06,22.46z"/>
<path opacity="0.2471" fill="#AFA5C2" enable-background="new " d="M23,22.49c-0.89-0.47-2.34-0.47-3.23,0l-1.65,0.87
c-0.89,0.47-2.34,0.47-3.23,0l-1.65-0.87c-0.89-0.47-2.34-0.47-3.23,0l-2.52,1.33c-0.89,0.47-0.89,1.24,0,1.7l7.4,3.9
c0.89,0.47,2.34,0.47,3.23,0l7.4-3.9c0.89-0.47,0.89-1.23,0-1.7L23,22.49z"/>
<path opacity="0.2588" fill="#ABA1BF" enable-background="new " d="M22.94,22.51c-0.88-0.46-2.32-0.46-3.2,0l-1.63,0.86
c-0.88,0.46-2.32,0.46-3.2,0l-1.63-0.86c-0.88-0.46-2.32-0.46-3.2,0l-2.5,1.32c-0.88,0.46-0.88,1.22,0,1.69l7.33,3.86
c0.88,0.46,2.32,0.46,3.2,0l7.33-3.86c0.88-0.46,0.88-1.22,0-1.69L22.94,22.51z"/>
<path opacity="0.2706" fill="#A79CBC" enable-background="new " d="M22.87,22.54c-0.87-0.46-2.3-0.46-3.17,0l-1.62,0.85
c-0.87,0.46-2.3,0.46-3.17,0l-1.62-0.85c-0.87-0.46-2.3-0.46-3.17,0l-2.48,1.3c-0.87,0.46-0.87,1.21,0,1.67l7.26,3.83
c0.87,0.46,2.3,0.46,3.17,0l7.26-3.83c0.87-0.46,0.87-1.21,0-1.67L22.87,22.54z"/>
<path opacity="0.2824" fill="#A398B9" enable-background="new " d="M22.81,22.56c-0.86-0.45-2.28-0.45-3.14,0l-1.6,0.84
c-0.86,0.45-2.28,0.45-3.14,0l-1.6-0.84c-0.86-0.45-2.28-0.45-3.14,0l-2.45,1.29c-0.86,0.46-0.86,1.2,0,1.66l7.19,3.79
c0.86,0.46,2.28,0.46,3.14,0l7.2-3.79c0.86-0.45,0.86-1.2,0-1.66L22.81,22.56z"/>
<path opacity="0.2941" fill="#9F94B6" enable-background="new " d="M22.75,22.58c-0.85-0.45-2.25-0.45-3.11,0l-1.59,0.84
c-0.86,0.45-2.26,0.45-3.11,0l-1.59-0.84c-0.85-0.45-2.25-0.45-3.11,0l-2.43,1.28c-0.86,0.45-0.86,1.19,0,1.64l7.13,3.75
c0.86,0.45,2.26,0.45,3.11,0l7.13-3.75c0.85-0.45,0.85-1.19,0-1.64L22.75,22.58z"/>
<path opacity="0.3059" fill="#9C8FB4" enable-background="new " d="M22.69,22.61c-0.85-0.45-2.23-0.45-3.08,0l-1.57,0.83
c-0.85,0.45-2.23,0.45-3.08,0l-1.57-0.83c-0.85-0.45-2.23-0.45-3.08,0l-2.4,1.27c-0.85,0.45-0.85,1.18,0,1.62l7.06,3.72
c0.85,0.45,2.23,0.45,3.08,0l7.06-3.72c0.85-0.44,0.85-1.18,0-1.62L22.69,22.61z"/>
<path opacity="0.3176" fill="#988BB1" enable-background="new " d="M22.63,22.63c-0.84-0.44-2.21-0.44-3.05,0l-1.55,0.82
c-0.84,0.44-2.21,0.44-3.05,0l-1.55-0.82c-0.84-0.44-2.21-0.44-3.05,0L8,23.88c-0.84,0.44-0.84,1.17,0,1.61l6.99,3.68
c0.84,0.44,2.21,0.44,3.05,0l6.99-3.68c0.84-0.44,0.84-1.17,0-1.61L22.63,22.63z"/>
<path opacity="0.3294" fill="#9487AE" enable-background="new " d="M22.57,22.66c-0.83-0.44-2.19-0.44-3.02,0l-1.54,0.81
c-0.83,0.44-2.19,0.44-3.02,0l-1.54-0.81c-0.83-0.44-2.19-0.44-3.02,0L8.07,23.9c-0.83,0.44-0.83,1.15,0,1.59l6.92,3.64
c0.83,0.44,2.19,0.44,3.02,0l6.92-3.64c0.83-0.44,0.83-1.15,0-1.59L22.57,22.66z"/>
<path opacity="0.3412" fill="#9082AB" enable-background="new " d="M22.51,22.68c-0.82-0.43-2.17-0.43-2.99,0L18,23.48
c-0.82,0.43-2.17,0.43-2.99,0l-1.52-0.8c-0.82-0.43-2.17-0.43-2.99,0l-2.33,1.23c-0.82,0.43-0.82,1.14,0,1.58l6.85,3.61
c0.82,0.43,2.17,0.43,2.99,0l6.85-3.61c0.82-0.43,0.82-1.14,0-1.58L22.51,22.68z"/>
<path opacity="0.3529" fill="#8C7EA8" enable-background="new " d="M22.45,22.71c-0.81-0.43-2.14-0.43-2.96,0l-1.51,0.79
c-0.81,0.43-2.15,0.43-2.96,0l-1.51-0.79c-0.81-0.43-2.14-0.43-2.96,0l-2.31,1.22c-0.81,0.43-0.81,1.13,0,1.56l6.78,3.57
c0.81,0.43,2.15,0.43,2.96,0l6.78-3.57c0.81-0.43,0.81-1.13,0-1.56L22.45,22.71z"/>
<path opacity="0.3647" fill="#887AA5" enable-background="new " d="M22.39,22.73c-0.81-0.42-2.12-0.42-2.93,0l-1.49,0.79
c-0.81,0.42-2.12,0.42-2.93,0l-1.49-0.79c-0.81-0.42-2.12-0.42-2.93,0l-2.29,1.21c-0.8,0.42-0.8,1.12,0,1.54l6.71,3.53
c0.81,0.43,2.12,0.43,2.93,0l6.71-3.53c0.8-0.42,0.8-1.12,0-1.54L22.39,22.73z"/>
<path opacity="0.3765" fill="#8576A2" enable-background="new " d="M22.33,22.75c-0.8-0.42-2.1-0.42-2.9,0l-1.48,0.78
c-0.8,0.42-2.1,0.42-2.9,0l-1.48-0.78c-0.8-0.42-2.1-0.42-2.9,0l-2.26,1.19c-0.8,0.42-0.8,1.11,0,1.53l6.64,3.5
c0.8,0.42,2.1,0.42,2.9,0l6.64-3.5c0.79-0.42,0.79-1.11,0-1.53L22.33,22.75z"/>
<path opacity="0.3882" fill="#81719F" enable-background="new " d="M22.26,22.78c-0.79-0.41-2.08-0.41-2.87,0l-1.46,0.77
c-0.79,0.42-2.08,0.42-2.87,0l-1.46-0.77c-0.79-0.41-2.08-0.41-2.87,0L8.5,23.96c-0.79,0.42-0.79,1.1,0,1.51l6.57,3.46
c0.79,0.42,2.08,0.42,2.87,0l6.57-3.46c0.79-0.42,0.79-1.1,0-1.51L22.26,22.78z"/>
<path opacity="0.4" fill="#7D6D9C" enable-background="new " d="M22.2,22.8c-0.78-0.41-2.06-0.41-2.84,0l-1.45,0.76
c-0.78,0.41-2.06,0.41-2.84,0l-1.45-0.76c-0.78-0.41-2.06-0.41-2.84,0l-2.21,1.17c-0.78,0.41-0.78,1.08,0,1.5l6.5,3.42
c0.78,0.41,2.06,0.41,2.84,0l6.5-3.42c0.78-0.41,0.78-1.08,0-1.5L22.2,22.8z"/>
<path opacity="0.4118" fill="#796999" enable-background="new " d="M22.14,22.82c-0.77-0.41-2.04-0.41-2.81,0l-1.43,0.76
c-0.77,0.41-2.04,0.41-2.81,0l-1.43-0.76c-0.77-0.41-2.04-0.41-2.81,0l-2.19,1.15c-0.77,0.41-0.77,1.07,0,1.48l6.43,3.39
c0.77,0.41,2.04,0.41,2.81,0l6.43-3.39c0.77-0.41,0.77-1.07,0-1.48L22.14,22.82z"/>
<path opacity="0.4235" fill="#756497" enable-background="new " d="M22.08,22.85c-0.76-0.4-2.01-0.4-2.78,0l-1.42,0.75
c-0.76,0.4-2.01,0.4-2.78,0l-1.42-0.75c-0.76-0.4-2.01-0.4-2.78,0l-2.17,1.14c-0.76,0.4-0.76,1.06,0,1.46l6.36,3.35
c0.76,0.4,2.01,0.4,2.78,0l6.36-3.35c0.76-0.4,0.76-1.06,0-1.46L22.08,22.85z"/>
<path opacity="0.4353" fill="#726094" enable-background="new " d="M22.02,22.87c-0.75-0.4-1.99-0.4-2.75,0l-1.4,0.74
c-0.76,0.4-1.99,0.4-2.75,0l-1.4-0.74c-0.75-0.4-1.99-0.4-2.75,0L8.84,24c-0.76,0.4-0.76,1.05,0,1.45l6.29,3.31
c0.76,0.4,1.99,0.4,2.75,0l6.29-3.31c0.75-0.4,0.75-1.05,0-1.45L22.02,22.87z"/>
<path opacity="0.4471" fill="#6E5C91" enable-background="new " d="M21.96,22.9c-0.75-0.39-1.97-0.39-2.72,0l-1.38,0.73
c-0.75,0.39-1.97,0.39-2.72,0l-1.39-0.73c-0.75-0.39-1.97-0.39-2.72,0l-2.12,1.12c-0.75,0.39-0.75,1.04,0,1.43l6.22,3.28
c0.75,0.4,1.97,0.4,2.72,0l6.22-3.28c0.75-0.39,0.75-1.04,0-1.43L21.96,22.9z"/>
<path opacity="0.4588" fill="#6A588E" enable-background="new " d="M21.9,22.92c-0.74-0.39-1.95-0.39-2.68,0l-1.37,0.72
c-0.74,0.39-1.95,0.39-2.69,0l-1.37-0.72c-0.74-0.39-1.95-0.39-2.69,0L9,24.03c-0.74,0.39-0.74,1.03,0,1.42l6.15,3.24
c0.74,0.39,1.95,0.39,2.69,0L24,25.44c0.74-0.39,0.74-1.03,0-1.42L21.9,22.92z"/>
<path opacity="0.4706" fill="#66538B" enable-background="new " d="M21.84,22.94c-0.73-0.38-1.92-0.38-2.65,0l-1.35,0.72
c-0.73,0.38-1.93,0.38-2.66,0l-1.35-0.72c-0.73-0.38-1.92-0.38-2.66,0L9.1,24.03c-0.73,0.38-0.73,1.01,0,1.4l6.08,3.2
c0.73,0.39,1.92,0.39,2.66,0l6.08-3.2c0.73-0.38,0.73-1.01,0-1.4L21.84,22.94z"/>
<path opacity="0.4824" fill="#624F88" enable-background="new " d="M21.78,22.97c-0.72-0.38-1.9-0.38-2.63,0l-1.34,0.71
c-0.72,0.38-1.9,0.38-2.63,0l-1.34-0.71c-0.72-0.38-1.9-0.38-2.63,0l-2.05,1.08c-0.72,0.38-0.72,1,0,1.38l6.01,3.17
c0.72,0.38,1.9,0.38,2.63,0l6.01-3.17c0.72-0.38,0.72-1,0-1.38L21.78,22.97z"/>
<path opacity="0.4941" fill="#5E4B85" enable-background="new " d="M21.72,22.99c-0.71-0.38-1.88-0.38-2.59,0l-1.32,0.7
c-0.71,0.37-1.88,0.37-2.6,0l-1.32-0.7c-0.71-0.38-1.88-0.38-2.6,0l-2.03,1.07c-0.71,0.38-0.71,0.99,0,1.37l5.94,3.13
c0.71,0.38,1.88,0.38,2.6,0l5.94-3.13c0.71-0.38,0.71-0.99,0-1.37L21.72,22.99z"/>
<path opacity="0.5059" fill="#5B4682" enable-background="new " d="M21.65,23.02c-0.7-0.37-1.86-0.37-2.56,0l-1.31,0.69
c-0.71,0.37-1.86,0.37-2.57,0l-1.31-0.69c-0.71-0.37-1.86-0.37-2.56,0l-2,1.05c-0.71,0.37-0.71,0.98,0,1.35l5.87,3.09
c0.71,0.37,1.86,0.37,2.57,0l5.88-3.09c0.7-0.37,0.7-0.98,0-1.35L21.65,23.02z"/>
<path opacity="0.5176" fill="#57427F" enable-background="new " d="M21.59,23.04c-0.7-0.37-1.84-0.37-2.53,0l-1.29,0.68
c-0.7,0.37-1.84,0.37-2.54,0l-1.29-0.68c-0.7-0.37-1.84-0.37-2.53,0l-1.98,1.04c-0.7,0.37-0.7,0.97,0,1.34l5.81,3.06
c0.7,0.37,1.84,0.37,2.54,0l5.8-3.06c0.7-0.37,0.7-0.97,0-1.34L21.59,23.04z"/>
<path opacity="0.5294" fill="#533E7C" enable-background="new " d="M21.53,23.06c-0.69-0.36-1.82-0.36-2.5,0l-1.28,0.67
c-0.69,0.36-1.82,0.36-2.5,0l-1.28-0.67c-0.69-0.36-1.81-0.36-2.5,0l-1.95,1.03c-0.69,0.36-0.69,0.96,0,1.32l5.73,3.02
c0.69,0.37,1.82,0.37,2.5,0l5.74-3.02c0.69-0.36,0.69-0.96,0-1.32L21.53,23.06z"/>
<path opacity="0.5412" fill="#4F397A" enable-background="new " d="M21.47,23.09c-0.68-0.36-1.79-0.36-2.47,0l-1.26,0.67
c-0.68,0.36-1.79,0.36-2.48,0L14,23.09c-0.68-0.36-1.79-0.36-2.47,0L9.6,24.1c-0.68,0.36-0.68,0.95,0,1.3l5.67,2.98
c0.68,0.36,1.79,0.36,2.48,0l5.67-2.98c0.68-0.36,0.68-0.95,0-1.3L21.47,23.09z"/>
<path opacity="0.5529" fill="#4B3577" enable-background="new " d="M21.41,23.11c-0.67-0.35-1.77-0.35-2.44,0l-1.25,0.66
c-0.67,0.35-1.77,0.35-2.44,0l-1.25-0.66c-0.67-0.35-1.77-0.35-2.44,0l-1.91,1c-0.67,0.35-0.67,0.93,0,1.29l5.6,2.95
c0.67,0.36,1.77,0.36,2.44,0l5.6-2.95c0.67-0.35,0.67-0.93,0-1.29L21.41,23.11z"/>
<path opacity="0.5647" fill="#473174" enable-background="new " d="M21.35,23.13c-0.66-0.35-1.75-0.35-2.41,0l-1.23,0.65
c-0.66,0.35-1.75,0.35-2.41,0l-1.23-0.65c-0.66-0.35-1.75-0.35-2.41,0l-1.88,0.99c-0.66,0.35-0.66,0.92,0,1.27l5.53,2.91
c0.66,0.35,1.75,0.35,2.41,0l5.53-2.91c0.66-0.35,0.66-0.92,0-1.27L21.35,23.13z"/>
<path opacity="0.5765" fill="#442D71" enable-background="new " d="M21.29,23.16c-0.66-0.34-1.73-0.34-2.38,0L17.7,23.8
c-0.66,0.34-1.73,0.34-2.38,0l-1.21-0.64c-0.65-0.34-1.73-0.34-2.38,0l-1.86,0.98c-0.66,0.34-0.66,0.91,0,1.26l5.46,2.87
c0.66,0.35,1.73,0.35,2.38,0l5.46-2.87c0.65-0.35,0.65-0.91,0-1.26L21.29,23.16z"/>
<path opacity="0.5882" fill="#40286E" enable-background="new " d="M21.23,23.18c-0.65-0.34-1.71-0.34-2.35,0l-1.2,0.63
c-0.65,0.34-1.71,0.34-2.35,0l-1.2-0.63c-0.65-0.34-1.7-0.34-2.35,0l-1.84,0.97c-0.65,0.34-0.65,0.9,0,1.24l5.39,2.84
c0.65,0.34,1.71,0.34,2.35,0l5.39-2.84c0.64-0.34,0.64-0.9,0-1.24L21.23,23.18z"/>
<path id="shadow_1_" opacity="0.6" fill="#3C246B" enable-background="new " d="M21.17,23.21c-0.64-0.34-1.68-0.34-2.32,0
l-1.18,0.63c-0.64,0.33-1.68,0.33-2.32,0l-1.18-0.63c-0.64-0.34-1.68-0.34-2.32,0l-1.81,0.96c-0.64,0.34-0.64,0.89,0,1.22l5.32,2.8
c0.64,0.34,1.68,0.34,2.32,0l5.32-2.8c0.64-0.34,0.64-0.89,0-1.22L21.17,23.21z"/>
</g>
<polygon id="u" fill="#5F29C6" points="29,6.91 29,22.57 16.5,29.09 4,22.57 4,6.91 4,6.91 10.93,3.3 10.93,18.66 16.5,21.56
22.07,18.66 22.07,3.3 "/>
<polygon id="line" fill="#EAE3F9" points="29,6.91 29,7.92 22.07,11.54 16.95,14.21 16.95,28.86 16.5,29.09 16.05,28.86
16.05,14.21 10.93,11.54 4,7.92 4,6.91 4,6.91 10.93,10.52 16.5,13.43 22.07,10.52 "/>
</svg>

+ 0
- 168
doc/static/img/logo-raw/use-package-logo-48x48-v1.svg View File

@ -1,168 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
<g opacity="0.4">
<path id="shadow_2_" fill="#FFFFFF" fill-opacity="0" d="M35.82,34.58c-1.62-0.85-4.26-0.85-5.88,0l-3,1.58
c-1.62,0.86-4.27,0.86-5.88,0l-3-1.58c-1.62-0.85-4.26-0.85-5.88,0L7.59,37c-1.62,0.85-1.62,2.25,0,3.09l13.47,7.1
c1.62,0.85,4.27,0.85,5.88,0l13.47-7.1c1.62-0.85,1.62-2.25,0-3.09L35.82,34.58z"/>
<path opacity="0.0118" fill="#FBFBFC" enable-background="new " d="M35.73,34.62c-1.6-0.84-4.23-0.84-5.83,0l-2.98,1.56
c-1.61,0.85-4.23,0.85-5.84,0l-2.98-1.56c-1.6-0.84-4.23-0.84-5.83,0l-4.55,2.4c-1.61,0.84-1.61,2.23,0,3.07l13.37,7.04
c1.6,0.84,4.23,0.84,5.84,0l13.37-7.04c1.6-0.84,1.6-2.23,0-3.07L35.73,34.62z"/>
<path opacity="0.0235" fill="#F7F6F9" enable-background="new " d="M35.63,34.65c-1.59-0.84-4.2-0.84-5.79,0L26.9,36.2
c-1.59,0.84-4.2,0.84-5.79,0l-2.95-1.55c-1.59-0.84-4.2-0.84-5.79,0l-4.52,2.38c-1.59,0.84-1.59,2.21,0,3.05l13.26,6.99
c1.59,0.83,4.2,0.83,5.79,0l13.26-6.99c1.59-0.83,1.59-2.21,0-3.05L35.63,34.65z"/>
<path opacity="0.0353" fill="#F4F2F6" enable-background="new " d="M35.54,34.69c-1.58-0.83-4.16-0.83-5.74,0l-2.93,1.54
c-1.58,0.83-4.17,0.83-5.74,0l-2.93-1.54c-1.58-0.83-4.16-0.83-5.74,0l-4.48,2.36c-1.58,0.83-1.58,2.19,0,3.02L21.13,47
c1.58,0.83,4.16,0.83,5.74,0l13.16-6.93c1.58-0.83,1.58-2.19,0-3.02L35.54,34.69z"/>
<path opacity="0.0471" fill="#F0EEF3" enable-background="new " d="M35.45,34.73c-1.56-0.82-4.13-0.82-5.69,0l-2.91,1.53
c-1.57,0.83-4.13,0.83-5.7,0l-2.91-1.53c-1.57-0.82-4.13-0.82-5.7,0L8.1,37.07c-1.57,0.82-1.57,2.18,0,3l13.05,6.88
c1.57,0.82,4.13,0.82,5.7,0l13.05-6.88c1.56-0.82,1.56-2.17,0-3L35.45,34.73z"/>
<path opacity="0.0588" fill="#ECEAF0" enable-background="new " d="M35.36,34.76c-1.55-0.82-4.1-0.82-5.65,0l-2.88,1.51
c-1.55,0.82-4.1,0.82-5.65,0l-2.88-1.51c-1.55-0.82-4.1-0.82-5.65,0l-4.41,2.33c-1.55,0.82-1.55,2.16,0,2.97l12.94,6.82
c1.55,0.81,4.1,0.81,5.65,0l12.95-6.82c1.55-0.82,1.55-2.16,0-2.97L35.36,34.76z"/>
<path opacity="0.0706" fill="#E8E5EE" enable-background="new " d="M35.26,34.8c-1.54-0.81-4.06-0.81-5.6,0l-2.86,1.5
c-1.54,0.81-4.06,0.81-5.61,0l-2.86-1.5c-1.54-0.81-4.06-0.81-5.6,0l-4.37,2.31c-1.54,0.81-1.54,2.14,0,2.95l12.84,6.76
c1.54,0.81,4.06,0.81,5.61,0l12.84-6.76c1.54-0.81,1.54-2.14,0-2.95L35.26,34.8z"/>
<path opacity="0.0824" fill="#E4E1EB" enable-background="new " d="M35.17,34.83c-1.53-0.8-4.03-0.8-5.56,0l-2.83,1.49
c-1.53,0.81-4.03,0.81-5.56,0l-2.84-1.49c-1.53-0.8-4.03-0.8-5.56,0l-4.34,2.29c-1.53,0.8-1.53,2.12,0,2.92l12.73,6.71
c1.53,0.8,4.03,0.8,5.56,0l12.73-6.71c1.53-0.8,1.53-2.12,0-2.92L35.17,34.83z"/>
<path opacity="0.0941" fill="#E0DDE8" enable-background="new " d="M35.08,34.87c-1.51-0.8-4-0.8-5.51,0l-2.81,1.48
c-1.52,0.8-4,0.8-5.51,0l-2.81-1.48c-1.52-0.8-4-0.8-5.51,0l-4.3,2.27c-1.52,0.8-1.52,2.1,0,2.9l12.63,6.65c1.52,0.8,4,0.8,5.51,0
l12.63-6.65c1.51-0.8,1.51-2.1,0-2.9L35.08,34.87z"/>
<path opacity="0.1059" fill="#DDD8E5" enable-background="new " d="M34.99,34.91c-1.5-0.79-3.96-0.79-5.46,0l-2.79,1.46
c-1.5,0.79-3.96,0.79-5.47,0l-2.79-1.46c-1.5-0.79-3.96-0.79-5.47,0l-4.27,2.25c-1.5,0.79-1.5,2.09,0,2.88l12.52,6.6
c1.5,0.79,3.96,0.79,5.47,0l12.52-6.6c1.5-0.79,1.5-2.09,0-2.88L34.99,34.91z"/>
<path opacity="0.1176" fill="#D9D4E2" enable-background="new " d="M34.89,34.94c-1.49-0.78-3.93-0.78-5.42,0l-2.76,1.45
c-1.49,0.79-3.93,0.79-5.42,0l-2.77-1.45c-1.49-0.78-3.93-0.78-5.42,0l-4.23,2.23c-1.49,0.78-1.49,2.07,0,2.85l12.41,6.54
c1.49,0.78,3.93,0.78,5.42,0l12.42-6.54c1.49-0.78,1.49-2.07,0-2.85L34.89,34.94z"/>
<path opacity="0.1294" fill="#D5D0DF" enable-background="new " d="M34.8,34.98c-1.48-0.78-3.9-0.78-5.37,0l-2.74,1.44
c-1.48,0.78-3.9,0.78-5.38,0l-2.74-1.44c-1.48-0.78-3.9-0.78-5.37,0L9,37.19c-1.48,0.78-1.48,2.05,0,2.83l12.31,6.49
c1.48,0.78,3.9,0.78,5.38,0L39,40.02c1.48-0.78,1.48-2.05,0-2.83L34.8,34.98z"/>
<path opacity="0.1412" fill="#D1CBDC" enable-background="new " d="M34.71,35.02c-1.46-0.77-3.86-0.77-5.32,0l-2.72,1.43
c-1.47,0.77-3.86,0.77-5.33,0l-2.72-1.43c-1.47-0.77-3.86-0.77-5.33,0l-4.16,2.19c-1.47,0.77-1.47,2.03,0,2.8l12.2,6.43
c1.47,0.77,3.86,0.77,5.33,0l12.21-6.43c1.46-0.77,1.46-2.03,0-2.8L34.71,35.02z"/>
<path opacity="0.1529" fill="#CDC7D9" enable-background="new " d="M34.62,35.05c-1.45-0.76-3.83-0.76-5.28,0l-2.69,1.42
c-1.45,0.77-3.83,0.77-5.28,0l-2.69-1.42c-1.45-0.76-3.83-0.76-5.28,0l-4.12,2.17c-1.45,0.76-1.45,2.02,0,2.78l12.1,6.38
c1.45,0.76,3.83,0.76,5.28,0L38.76,40c1.45-0.76,1.45-2.02,0-2.78L34.62,35.05z"/>
<path opacity="0.1647" fill="#C9C3D6" enable-background="new " d="M34.52,35.09c-1.44-0.76-3.79-0.76-5.23,0l-2.67,1.4
c-1.44,0.76-3.8,0.76-5.24,0l-2.67-1.4c-1.44-0.76-3.79-0.76-5.23,0l-4.09,2.15c-1.44,0.76-1.44,2,0,2.76l11.99,6.32
c1.44,0.76,3.8,0.76,5.24,0L38.61,40c1.44-0.76,1.44-2,0-2.76L34.52,35.09z"/>
<path opacity="0.1765" fill="#C6BFD3" enable-background="new " d="M34.43,35.13c-1.43-0.75-3.76-0.75-5.19,0l-2.65,1.39
c-1.43,0.75-3.76,0.75-5.19,0l-2.65-1.39c-1.43-0.75-3.76-0.75-5.19,0l-4.05,2.14c-1.43,0.75-1.43,1.98,0,2.73l11.89,6.26
c1.43,0.75,3.76,0.75,5.19,0L38.48,40c1.42-0.75,1.42-1.98,0-2.73L34.43,35.13z"/>
<path opacity="0.1882" fill="#C2BAD1" enable-background="new " d="M34.34,35.16c-1.41-0.74-3.73-0.74-5.14,0l-2.62,1.38
c-1.42,0.75-3.73,0.75-5.14,0l-2.62-1.38c-1.41-0.74-3.73-0.74-5.14,0l-4.01,2.12c-1.42,0.74-1.42,1.96,0,2.71l11.78,6.21
c1.41,0.74,3.73,0.74,5.14,0l11.78-6.21c1.41-0.74,1.41-1.96,0-2.71L34.34,35.16z"/>
<path opacity="0.2" fill="#BEB6CE" enable-background="new " d="M34.24,35.2c-1.4-0.74-3.69-0.74-5.09,0l-2.6,1.37
c-1.4,0.74-3.7,0.74-5.1,0l-2.6-1.37c-1.4-0.74-3.69-0.74-5.1,0l-3.98,2.1c-1.4,0.74-1.4,1.95,0,2.68l11.67,6.15
c1.4,0.74,3.7,0.74,5.1,0l11.68-6.15c1.4-0.74,1.4-1.95,0-2.68L34.24,35.2z"/>
<path opacity="0.2118" fill="#BAB2CB" enable-background="new " d="M34.15,35.24c-1.39-0.73-3.66-0.73-5.05,0l-2.58,1.35
c-1.39,0.73-3.66,0.73-5.05,0l-2.58-1.35c-1.39-0.73-3.66-0.73-5.05,0L9.9,37.32c-1.39,0.73-1.39,1.93,0,2.66l11.57,6.1
c1.39,0.73,3.66,0.73,5.05,0l11.57-6.1c1.39-0.73,1.39-1.93,0-2.66L34.15,35.24z"/>
<path opacity="0.2235" fill="#B6ADC8" enable-background="new " d="M34.06,35.27c-1.38-0.72-3.63-0.72-5,0l-2.55,1.34
c-1.38,0.73-3.63,0.73-5.01,0l-2.55-1.34c-1.38-0.72-3.63-0.72-5.01,0l-3.91,2.06c-1.38,0.72-1.38,1.91,0,2.63L21.49,46
c1.38,0.72,3.63,0.72,5.01,0l11.47-6.04c1.37-0.72,1.37-1.91,0-2.63L34.06,35.27z"/>
<path opacity="0.2353" fill="#B3A9C5" enable-background="new " d="M33.97,35.31c-1.36-0.72-3.6-0.72-4.96,0l-2.53,1.33
c-1.36,0.72-3.6,0.72-4.96,0l-2.53-1.33c-1.36-0.72-3.59-0.72-4.96,0l-3.87,2.04c-1.36,0.71-1.36,1.89,0,2.61l11.36,5.98
c1.36,0.72,3.6,0.72,4.96,0l11.36-5.98c1.36-0.72,1.36-1.89,0-2.61L33.97,35.31z"/>
<path opacity="0.2471" fill="#AFA5C2" enable-background="new " d="M33.87,35.34c-1.35-0.71-3.56-0.71-4.91,0l-2.5,1.32
c-1.35,0.71-3.56,0.71-4.91,0l-2.51-1.32c-1.35-0.71-3.56-0.71-4.91,0l-3.83,2.02c-1.35,0.71-1.35,1.87,0,2.58l11.25,5.93
c1.35,0.71,3.56,0.71,4.91,0l11.25-5.93c1.35-0.71,1.35-1.88,0-2.58L33.87,35.34z"/>
<path opacity="0.2588" fill="#ABA1BF" enable-background="new " d="M33.78,35.38c-1.34-0.7-3.53-0.7-4.86,0l-2.48,1.3
c-1.34,0.71-3.53,0.71-4.87,0l-2.48-1.3c-1.34-0.7-3.53-0.7-4.87,0l-3.8,2c-1.34,0.7-1.34,1.86,0,2.56l11.15,5.87
c1.34,0.7,3.53,0.7,4.87,0l11.15-5.87c1.34-0.71,1.34-1.86,0-2.56L33.78,35.38z"/>
<path opacity="0.2706" fill="#A79CBC" enable-background="new " d="M33.69,35.42c-1.32-0.7-3.5-0.7-4.82,0l-2.46,1.29
c-1.33,0.7-3.5,0.7-4.82,0l-2.46-1.29c-1.33-0.7-3.49-0.7-4.82,0l-3.76,1.98c-1.33,0.7-1.33,1.84,0,2.54l11.04,5.82
c1.33,0.7,3.5,0.7,4.82,0l11.04-5.82c1.32-0.7,1.32-1.84,0-2.54L33.69,35.42z"/>
<path opacity="0.2824" fill="#A398B9" enable-background="new " d="M33.6,35.45c-1.31-0.69-3.46-0.69-4.77,0l-2.44,1.28
c-1.31,0.69-3.46,0.69-4.78,0l-2.44-1.28c-1.31-0.69-3.46-0.69-4.77,0l-3.73,1.97c-1.31,0.69-1.31,1.82,0,2.51l10.94,5.76
c1.31,0.69,3.46,0.69,4.78,0l10.94-5.76c1.31-0.69,1.31-1.82,0-2.51L33.6,35.45z"/>
<path opacity="0.2941" fill="#9F94B6" enable-background="new " d="M33.5,35.49c-1.3-0.68-3.43-0.68-4.73,0l-2.41,1.27
c-1.3,0.68-3.43,0.68-4.73,0l-2.41-1.27c-1.3-0.68-3.43-0.68-4.73,0l-3.69,1.95c-1.3,0.68-1.3,1.8,0,2.49l10.83,5.71
c1.3,0.68,3.43,0.68,4.73,0l10.83-5.71c1.3-0.68,1.3-1.81,0-2.49L33.5,35.49z"/>
<path opacity="0.3059" fill="#9C8FB4" enable-background="new " d="M33.41,35.53c-1.29-0.68-3.39-0.68-4.68,0l-2.39,1.26
c-1.29,0.68-3.4,0.68-4.68,0l-2.39-1.26c-1.29-0.68-3.39-0.68-4.68,0l-3.65,1.93c-1.29,0.68-1.29,1.79,0,2.46l10.72,5.65
c1.29,0.68,3.39,0.68,4.68,0l10.73-5.65c1.28-0.68,1.28-1.79,0-2.46L33.41,35.53z"/>
<path opacity="0.3176" fill="#988BB1" enable-background="new " d="M33.32,35.56c-1.27-0.67-3.36-0.67-4.63,0l-2.37,1.24
c-1.28,0.67-3.36,0.67-4.64,0l-2.37-1.24c-1.27-0.67-3.36-0.67-4.64,0l-3.62,1.91c-1.28,0.67-1.28,1.77,0,2.44l10.62,5.59
c1.27,0.67,3.36,0.67,4.64,0l10.62-5.59c1.27-0.67,1.27-1.77,0-2.44L33.32,35.56z"/>
<path opacity="0.3294" fill="#9487AE" enable-background="new " d="M33.23,35.6c-1.26-0.66-3.33-0.66-4.59,0l-2.34,1.23
c-1.26,0.67-3.33,0.67-4.59,0l-2.34-1.23c-1.26-0.66-3.33-0.66-4.59,0l-3.58,1.89c-1.26,0.66-1.26,1.75,0,2.42l10.51,5.54
c1.26,0.66,3.33,0.66,4.59,0l10.51-5.54c1.26-0.67,1.26-1.75,0-2.42L33.23,35.6z"/>
<path opacity="0.3412" fill="#9082AB" enable-background="new " d="M33.13,35.64c-1.25-0.66-3.29-0.66-4.54,0l-2.32,1.22
c-1.25,0.66-3.3,0.66-4.54,0l-2.32-1.22c-1.25-0.66-3.29-0.66-4.54,0l-3.55,1.87c-1.25,0.66-1.25,1.73,0,2.39l10.41,5.48
c1.25,0.66,3.29,0.66,4.54,0l10.41-5.48c1.25-0.66,1.25-1.74,0-2.39L33.13,35.64z"/>
<path opacity="0.3529" fill="#8C7EA8" enable-background="new " d="M33.04,35.67c-1.24-0.65-3.26-0.65-4.5,0l-2.29,1.21
c-1.24,0.65-3.26,0.65-4.5,0l-2.29-1.21c-1.24-0.65-3.26-0.65-4.5,0l-3.51,1.85c-1.24,0.65-1.24,1.71,0,2.37l10.3,5.43
c1.24,0.65,3.26,0.65,4.5,0l10.3-5.43c1.23-0.65,1.23-1.72,0-2.37L33.04,35.67z"/>
<path opacity="0.3647" fill="#887AA5" enable-background="new " d="M32.95,35.71c-1.22-0.64-3.23-0.64-4.45,0l-2.27,1.19
c-1.22,0.64-3.23,0.64-4.45,0l-2.27-1.19c-1.22-0.64-3.23-0.64-4.45,0l-3.47,1.83c-1.22,0.64-1.22,1.7,0,2.34l10.2,5.37
c1.22,0.65,3.23,0.65,4.45,0l10.2-5.37c1.22-0.65,1.22-1.7,0-2.34L32.95,35.71z"/>
<path opacity="0.3765" fill="#8576A2" enable-background="new " d="M32.86,35.75c-1.21-0.64-3.19-0.64-4.4,0l-2.25,1.18
c-1.21,0.64-3.2,0.64-4.41,0l-2.25-1.18c-1.21-0.64-3.19-0.64-4.41,0l-3.44,1.81c-1.21,0.64-1.21,1.68,0,2.32l10.09,5.32
c1.21,0.64,3.19,0.64,4.41,0l10.09-5.32c1.21-0.64,1.21-1.68,0-2.32L32.86,35.75z"/>
<path opacity="0.3882" fill="#81719F" enable-background="new " d="M32.76,35.78c-1.2-0.63-3.16-0.63-4.36,0l-2.22,1.17
c-1.2,0.63-3.16,0.63-4.36,0l-2.22-1.17c-1.2-0.63-3.16-0.63-4.36,0l-3.4,1.79c-1.2,0.63-1.2,1.66,0,2.29l9.99,5.26
c1.2,0.63,3.16,0.63,4.36,0l9.99-5.26c1.2-0.63,1.2-1.67,0-2.29L32.76,35.78z"/>
<path opacity="0.4" fill="#7D6D9C" enable-background="new " d="M32.67,35.82c-1.19-0.63-3.13-0.63-4.31,0l-2.2,1.16
c-1.19,0.62-3.13,0.62-4.31,0l-2.2-1.16c-1.19-0.63-3.13-0.63-4.31,0l-3.37,1.77c-1.19,0.62-1.19,1.64,0,2.27l9.88,5.2
c1.19,0.63,3.13,0.63,4.31,0l9.88-5.2c1.18-0.63,1.18-1.65,0-2.27L32.67,35.82z"/>
<path opacity="0.4118" fill="#796999" enable-background="new " d="M32.58,35.85c-1.17-0.62-3.09-0.62-4.27,0L26.13,37
c-1.17,0.62-3.09,0.62-4.27,0l-2.18-1.15c-1.17-0.62-3.09-0.62-4.27,0l-3.33,1.76c-1.17,0.62-1.17,1.63,0,2.25L21.87,45
c1.17,0.62,3.09,0.62,4.27,0l9.78-5.15c1.17-0.62,1.17-1.63,0-2.25L32.58,35.85z"/>
<path opacity="0.4235" fill="#756497" enable-background="new " d="M32.48,35.89c-1.16-0.61-3.06-0.61-4.22,0l-2.15,1.13
c-1.16,0.61-3.06,0.61-4.22,0l-2.15-1.13c-1.16-0.61-3.06-0.61-4.22,0l-3.29,1.74c-1.16,0.61-1.16,1.61,0,2.22l9.67,5.09
c1.16,0.61,3.06,0.61,4.22,0l9.67-5.09c1.16-0.61,1.16-1.61,0-2.22L32.48,35.89z"/>
<path opacity="0.4353" fill="#726094" enable-background="new " d="M32.39,35.93c-1.15-0.6-3.03-0.6-4.17,0l-2.13,1.12
c-1.15,0.6-3.03,0.6-4.18,0l-2.13-1.12c-1.15-0.6-3.03-0.6-4.18,0l-3.26,1.72c-1.15,0.6-1.15,1.59,0,2.2l9.56,5.04
c1.15,0.61,3.03,0.61,4.18,0l9.56-5.04c1.15-0.61,1.15-1.6,0-2.2L32.39,35.93z"/>
<path opacity="0.4471" fill="#6E5C91" enable-background="new " d="M32.3,35.96c-1.13-0.6-2.99-0.6-4.13,0l-2.11,1.11
c-1.14,0.6-2.99,0.6-4.13,0l-2.11-1.11c-1.14-0.6-2.99-0.6-4.13,0l-3.22,1.7c-1.14,0.6-1.14,1.57,0,2.17l9.46,4.98
c1.13,0.6,2.99,0.6,4.13,0l9.46-4.98c1.13-0.6,1.13-1.58,0-2.17L32.3,35.96z"/>
<path opacity="0.4588" fill="#6A588E" enable-background="new " d="M32.21,36c-1.12-0.59-2.96-0.59-4.08,0l-2.08,1.1
c-1.12,0.59-2.96,0.59-4.08,0L19.88,36c-1.12-0.59-2.96-0.59-4.08,0l-3.19,1.68c-1.12,0.59-1.12,1.56,0,2.15l9.35,4.92
c1.12,0.59,2.96,0.59,4.08,0l9.35-4.92c1.12-0.59,1.12-1.56,0-2.15L32.21,36z"/>
<path opacity="0.4706" fill="#66538B" enable-background="new " d="M32.11,36.04c-1.11-0.58-2.93-0.58-4.04,0l-2.06,1.08
c-1.11,0.58-2.93,0.58-4.04,0l-2.06-1.08c-1.11-0.58-2.93-0.58-4.04,0l-3.15,1.66c-1.11,0.58-1.11,1.54,0,2.13l9.25,4.87
c1.11,0.59,2.93,0.59,4.04,0l9.25-4.87c1.11-0.59,1.11-1.54,0-2.13L32.11,36.04z"/>
<path opacity="0.4824" fill="#624F88" enable-background="new " d="M32.02,36.07c-1.1-0.58-2.89-0.58-3.99,0L26,37.14
c-1.1,0.58-2.89,0.58-3.99,0l-2.04-1.07c-1.1-0.58-2.89-0.58-3.99,0l-3.11,1.64c-1.1,0.58-1.1,1.52,0,2.1l9.14,4.81
c1.1,0.58,2.89,0.58,3.99,0l9.14-4.81c1.09-0.58,1.09-1.53,0-2.1L32.02,36.07z"/>
<path opacity="0.4941" fill="#5E4B85" enable-background="new " d="M31.93,36.11c-1.08-0.57-2.86-0.57-3.94,0l-2.01,1.06
c-1.09,0.57-2.86,0.57-3.94,0l-2.01-1.06c-1.09-0.57-2.86-0.57-3.94,0l-3.08,1.62c-1.08,0.57-1.08,1.5,0,2.08l9.04,4.76
c1.08,0.57,2.86,0.57,3.94,0l9.04-4.76c1.08-0.57,1.08-1.51,0-2.08L31.93,36.11z"/>
<path opacity="0.5059" fill="#5B4682" enable-background="new " d="M31.84,36.15c-1.07-0.57-2.83-0.57-3.9,0l-1.99,1.05
c-1.07,0.56-2.83,0.56-3.9,0l-1.99-1.05c-1.07-0.57-2.82-0.57-3.9,0l-3.04,1.6c-1.07,0.56-1.07,1.49,0,2.05l8.93,4.7
c1.07,0.57,2.82,0.57,3.9,0l8.93-4.7c1.07-0.57,1.07-1.49,0-2.05L31.84,36.15z"/>
<path opacity="0.5176" fill="#57427F" enable-background="new " d="M31.74,36.18c-1.06-0.56-2.79-0.56-3.85,0l-1.96,1.04
c-1.06,0.56-2.79,0.56-3.85,0l-1.96-1.04c-1.06-0.56-2.79-0.56-3.85,0l-3.01,1.58c-1.06,0.56-1.06,1.47,0,2.03l8.82,4.65
c1.06,0.56,2.79,0.56,3.85,0l8.82-4.65c1.06-0.56,1.06-1.47,0-2.03L31.74,36.18z"/>
<path opacity="0.5294" fill="#533E7C" enable-background="new " d="M31.65,36.22c-1.05-0.55-2.76-0.55-3.8,0l-1.94,1.02
c-1.05,0.55-2.76,0.55-3.81,0l-1.94-1.02c-1.05-0.55-2.76-0.55-3.81,0l-2.97,1.57c-1.05,0.55-1.05,1.45,0,2l8.72,4.59
c1.05,0.55,2.76,0.55,3.81,0l8.72-4.59c1.04-0.55,1.04-1.46,0-2L31.65,36.22z"/>
<path opacity="0.5412" fill="#4F397A" enable-background="new " d="M31.56,36.25c-1.03-0.54-2.73-0.54-3.76,0l-1.92,1.01
c-1.04,0.54-2.73,0.54-3.76,0l-1.92-1.01c-1.03-0.54-2.72-0.54-3.76,0l-2.93,1.55c-1.03,0.54-1.03,1.43,0,1.98l8.61,4.54
c1.03,0.55,2.72,0.55,3.76,0l8.61-4.54c1.03-0.55,1.03-1.44,0-1.98L31.56,36.25z"/>
<path opacity="0.5529" fill="#4B3577" enable-background="new " d="M31.46,36.29c-1.02-0.54-2.69-0.54-3.71,0l-1.9,1
c-1.02,0.54-2.69,0.54-3.71,0l-1.89-1c-1.02-0.54-2.69-0.54-3.71,0l-2.9,1.53c-1.02,0.54-1.02,1.41,0,1.96l8.51,4.48
c1.02,0.54,2.69,0.54,3.71,0l8.51-4.48c1.02-0.54,1.02-1.42,0-1.96L31.46,36.29z"/>
<path opacity="0.5647" fill="#473174" enable-background="new " d="M31.37,36.33c-1.01-0.53-2.66-0.53-3.67,0l-1.87,0.99
c-1.01,0.53-2.66,0.53-3.67,0l-1.87-0.99c-1.01-0.53-2.66-0.53-3.67,0l-2.86,1.51c-1.01,0.53-1.01,1.4,0,1.93l8.4,4.42
c1.01,0.53,2.66,0.53,3.67,0l8.4-4.42c1-0.53,1-1.4,0-1.93L31.37,36.33z"/>
<path opacity="0.5765" fill="#442D71" enable-background="new " d="M31.28,36.36c-1-0.52-2.63-0.52-3.62,0l-1.85,0.97
c-1,0.52-2.63,0.52-3.62,0l-1.85-0.97c-1-0.52-2.63-0.52-3.62,0l-2.83,1.49c-1,0.52-1,1.38,0,1.91l8.3,4.37
c1,0.53,2.62,0.53,3.62,0l8.3-4.37c0.99-0.53,0.99-1.38,0-1.91L31.28,36.36z"/>
<path opacity="0.5882" fill="#40286E" enable-background="new " d="M31.19,36.4c-0.98-0.52-2.59-0.52-3.57,0l-1.82,0.96
c-0.99,0.51-2.59,0.51-3.58,0L20.4,36.4c-0.98-0.52-2.59-0.52-3.58,0l-2.79,1.47c-0.98,0.52-0.98,1.36,0,1.88l8.19,4.31
c0.98,0.52,2.59,0.52,3.58,0l8.19-4.31c0.98-0.52,0.98-1.37,0-1.88L31.19,36.4z"/>
<path id="shadow_1_" opacity="0.6" fill="#3C246B" enable-background="new " d="M31.09,36.44c-0.97-0.51-2.56-0.51-3.53,0
l-1.8,0.95c-0.97,0.51-2.56,0.51-3.53,0l-1.8-0.95c-0.97-0.51-2.56-0.51-3.53,0l-2.75,1.45c-0.97,0.51-0.97,1.34,0,1.86L22.24,44
c0.97,0.51,2.56,0.51,3.53,0l8.08-4.26c0.97-0.51,0.97-1.35,0-1.86L31.09,36.44z"/>
</g>
<polygon id="u" fill="#5F29C6" points="43,11.66 43,35.47 24,45.38 5,35.47 5,11.66 5.01,11.66 15.53,6.17 15.53,29.52 24,33.93
32.47,29.52 32.47,6.17 "/>
<polygon id="line" fill="#EAE3F9" points="43,11.66 43,13.2 32.47,18.7 24.69,22.76 24.69,45.02 24,45.38 23.31,45.02 23.31,22.76
15.53,18.7 5,13.2 5,11.66 5.01,11.66 15.53,17.15 24,21.57 32.47,17.15 "/>
</svg>

+ 0
- 172
doc/static/img/logo-raw/use-package-logo-96x96-v1.svg View File

@ -1,172 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="use-package" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" width="96px" height="96px" viewBox="0 0 96 96" enable-background="new 0 0 96 96" xml:space="preserve">
<g id="shadow_9_" opacity="0.4">
<g id="shadow_1_">
<g>
<path id="shadow_3_" fill="#FFFFFF" fill-opacity="0" d="M73.82,67.05c-3.53-1.86-9.31-1.86-12.84,0l-6.55,3.45
c-3.53,1.87-9.31,1.87-12.85,0l-6.55-3.45c-3.53-1.86-9.31-1.86-12.84,0l-10.03,5.29c-3.53,1.86-3.53,4.91,0,6.77l29.43,15.5
c3.53,1.86,9.31,1.86,12.85,0l29.42-15.5c3.53-1.86,3.53-4.91,0-6.77L73.82,67.05z"/>
<path opacity="0.0118" fill="#FBFBFC" enable-background="new " d="M73.62,67.13c-3.5-1.84-9.24-1.84-12.74,0l-6.5,3.42
c-3.5,1.85-9.24,1.85-12.75,0l-6.5-3.42c-3.5-1.84-9.24-1.84-12.74,0l-9.95,5.25c-3.51,1.84-3.51,4.87,0,6.71l29.19,15.38
c3.51,1.84,9.24,1.84,12.75,0l29.19-15.38c3.51-1.84,3.51-4.87,0-6.71L73.62,67.13z"/>
<path opacity="0.0235" fill="#F7F6F9" enable-background="new " d="M73.42,67.21c-3.48-1.83-9.17-1.83-12.64,0l-6.45,3.4
c-3.48,1.84-9.17,1.84-12.65,0l-6.45-3.4c-3.48-1.83-9.17-1.83-12.64,0l-9.87,5.2c-3.48,1.83-3.48,4.83,0,6.66l28.96,15.26
c3.48,1.83,9.17,1.83,12.65,0l28.96-15.26c3.48-1.83,3.48-4.83,0-6.66L73.42,67.21z"/>
<path opacity="0.0353" fill="#F4F2F6" enable-background="new " d="M73.21,67.29c-3.45-1.81-9.09-1.81-12.54,0l-6.4,3.37
c-3.45,1.82-9.09,1.82-12.55,0l-6.4-3.37c-3.45-1.81-9.09-1.81-12.54,0l-9.79,5.16c-3.45,1.81-3.45,4.79,0,6.61L41.73,94.2
c3.45,1.81,9.1,1.81,12.55,0l28.73-15.14c3.45-1.81,3.45-4.79,0-6.61L73.21,67.29z"/>
<path opacity="0.0471" fill="#F0EEF3" enable-background="new " d="M73.01,67.37c-3.42-1.8-9.02-1.8-12.44,0l-6.35,3.34
c-3.42,1.81-9.02,1.81-12.44,0l-6.35-3.34c-3.42-1.8-9.02-1.8-12.44,0l-9.71,5.12c-3.42,1.8-3.42,4.76,0,6.55l28.5,15.01
c3.42,1.8,9.02,1.8,12.44,0l28.5-15.01c3.42-1.8,3.42-4.76,0-6.55L73.01,67.37z"/>
<path opacity="0.0588" fill="#ECEAF0" enable-background="new " d="M72.81,67.45c-3.39-1.78-8.95-1.78-12.34,0l-6.3,3.32
c-3.39,1.79-8.95,1.79-12.34,0l-6.29-3.32c-3.39-1.78-8.95-1.78-12.34,0l-9.64,5.08c-3.4,1.78-3.4,4.72,0,6.5l28.27,14.89
c3.4,1.78,8.95,1.78,12.34,0l28.27-14.89c3.4-1.78,3.4-4.72,0-6.5L72.81,67.45z"/>
<path opacity="0.0706" fill="#E8E5EE" enable-background="new " d="M72.61,67.53c-3.37-1.77-8.88-1.77-12.24,0l-6.25,3.29
c-3.37,1.78-8.88,1.78-12.24,0l-6.24-3.29c-3.37-1.77-8.87-1.77-12.24,0l-9.56,5.04c-3.37,1.77-3.37,4.68,0,6.45l28.04,14.77
c3.37,1.77,8.88,1.77,12.24,0l28.04-14.77c3.37-1.77,3.37-4.68,0-6.45L72.61,67.53z"/>
<path opacity="0.0824" fill="#E4E1EB" enable-background="new " d="M72.4,67.61c-3.34-1.75-8.8-1.75-12.14,0l-6.19,3.26
c-3.34,1.76-8.8,1.76-12.14,0l-6.19-3.26c-3.34-1.75-8.8-1.75-12.14,0l-9.48,5c-3.34,1.75-3.34,4.64,0,6.39l27.81,14.65
c3.34,1.76,8.8,1.76,12.14,0L81.88,79c3.34-1.75,3.34-4.64,0-6.39L72.4,67.61z"/>
<path opacity="0.0941" fill="#E0DDE8" enable-background="new " d="M72.2,67.69c-3.31-1.74-8.73-1.74-12.04,0l-6.14,3.23
c-3.31,1.75-8.73,1.75-12.04,0l-6.14-3.23c-3.31-1.74-8.73-1.74-12.04,0l-9.4,4.96c-3.31,1.74-3.31,4.6,0,6.34l27.58,14.53
c3.31,1.74,8.73,1.74,12.04,0L81.6,78.99c3.31-1.74,3.31-4.6,0-6.34L72.2,67.69z"/>
<path opacity="0.1059" fill="#DDD8E5" enable-background="new " d="M72,67.77c-3.28-1.72-8.66-1.72-11.94,0l-6.09,3.21
c-3.28,1.74-8.66,1.74-11.94,0l-6.09-3.21c-3.28-1.72-8.66-1.72-11.94,0l-9.32,4.91c-3.28,1.73-3.28,4.56,0,6.29l27.35,14.41
c3.28,1.73,8.66,1.73,11.94,0l27.35-14.41c3.28-1.72,3.28-4.56,0-6.29L72,67.77z"/>
<path opacity="0.1176" fill="#D9D4E2" enable-background="new " d="M71.8,67.85c-3.26-1.71-8.58-1.71-11.84,0l-6.04,3.18
c-3.26,1.72-8.58,1.72-11.84,0l-6.04-3.18c-3.26-1.71-8.58-1.71-11.84,0l-9.24,4.87c-3.26,1.71-3.26,4.53,0,6.24l27.12,14.28
c3.26,1.71,8.58,1.71,11.84,0l27.12-14.28c3.26-1.71,3.26-4.52,0-6.24L71.8,67.85z"/>
<path opacity="0.1294" fill="#D5D0DF" enable-background="new " d="M71.59,67.93c-3.23-1.7-8.51-1.7-11.74,0l-5.99,3.15
c-3.23,1.71-8.51,1.71-11.74,0l-5.99-3.15c-3.23-1.7-8.51-1.7-11.74,0l-9.16,4.83c-3.23,1.7-3.23,4.49,0,6.18l26.9,14.16
c3.23,1.7,8.51,1.7,11.74,0l26.89-14.16c3.23-1.7,3.23-4.49,0-6.18L71.59,67.93z"/>
<path opacity="0.1412" fill="#D1CBDC" enable-background="new " d="M71.39,68.01c-3.2-1.68-8.44-1.68-11.64,0l-5.94,3.13
c-3.2,1.69-8.44,1.69-11.64,0l-5.94-3.13c-3.2-1.68-8.44-1.68-11.64,0L15.5,72.8c-3.2,1.68-3.2,4.45,0,6.13l26.66,14.04
c3.2,1.68,8.44,1.68,11.64,0l26.66-14.04c3.2-1.68,3.2-4.45,0-6.13L71.39,68.01z"/>
<path opacity="0.1529" fill="#CDC7D9" enable-background="new " d="M71.19,68.09c-3.17-1.67-8.36-1.67-11.54,0l-5.88,3.1
c-3.17,1.68-8.36,1.68-11.54,0l-5.88-3.1c-3.17-1.67-8.36-1.67-11.54,0l-9.01,4.75c-3.17,1.67-3.17,4.41,0,6.08l26.43,13.92
c3.17,1.67,8.37,1.67,11.54,0l26.42-13.92c3.17-1.67,3.17-4.41,0-6.08L71.19,68.09z"/>
<path opacity="0.1647" fill="#C9C3D6" enable-background="new " d="M70.99,68.17c-3.14-1.65-8.29-1.65-11.43,0l-5.83,3.07
c-3.15,1.66-8.29,1.66-11.44,0l-5.83-3.07c-3.14-1.65-8.29-1.65-11.43,0l-8.93,4.71c-3.15,1.65-3.15,4.37,0,6.02l26.2,13.8
c3.15,1.66,8.29,1.66,11.44,0l26.19-13.8c3.14-1.65,3.14-4.37,0-6.02L70.99,68.17z"/>
<path opacity="0.1765" fill="#C6BFD3" enable-background="new " d="M70.78,68.25c-3.12-1.64-8.22-1.64-11.33,0l-5.78,3.05
c-3.12,1.65-8.22,1.65-11.34,0l-5.78-3.05c-3.12-1.64-8.22-1.64-11.33,0l-8.85,4.67c-3.12,1.64-3.12,4.33,0,5.97l25.96,13.68
c3.12,1.64,8.22,1.64,11.34,0l25.96-13.68c3.12-1.64,3.12-4.33,0-5.97L70.78,68.25z"/>
<path opacity="0.1882" fill="#C2BAD1" enable-background="new " d="M70.58,68.33c-3.09-1.62-8.14-1.62-11.23,0l-5.73,3.02
c-3.09,1.63-8.15,1.63-11.24,0l-5.73-3.02c-3.09-1.62-8.14-1.62-11.23,0l-8.77,4.62c-3.09,1.62-3.09,4.29,0,5.92l25.73,13.55
c3.09,1.63,8.15,1.63,11.24,0l25.73-13.55c3.09-1.62,3.09-4.29,0-5.92L70.58,68.33z"/>
<path opacity="0.2" fill="#BEB6CE" enable-background="new " d="M70.38,68.41c-3.06-1.61-8.07-1.61-11.13,0l-5.68,2.99
c-3.06,1.62-8.07,1.62-11.13,0l-5.68-2.99c-3.06-1.61-8.07-1.61-11.13,0l-8.69,4.58c-3.06,1.61-3.06,4.26,0,5.86l25.5,13.43
c3.06,1.61,8.07,1.61,11.13,0l25.5-13.43c3.06-1.61,3.06-4.25,0-5.86L70.38,68.41z"/>
<path opacity="0.2118" fill="#BAB2CB" enable-background="new " d="M70.18,68.48c-3.03-1.59-8-1.59-11.03,0l-5.63,2.97
c-3.04,1.6-8,1.6-11.03,0l-5.63-2.97c-3.03-1.59-8-1.59-11.03,0l-8.61,4.54c-3.03,1.59-3.03,4.22,0,5.81l25.27,13.31
c3.03,1.6,8,1.6,11.03,0l25.27-13.31c3.03-1.59,3.03-4.22,0-5.81L70.18,68.48z"/>
<path opacity="0.2235" fill="#B6ADC8" enable-background="new " d="M69.97,68.56c-3.01-1.58-7.93-1.58-10.93,0l-5.58,2.94
c-3.01,1.59-7.93,1.59-10.93,0l-5.58-2.94c-3.01-1.58-7.92-1.58-10.93,0l-8.54,4.5c-3.01,1.58-3.01,4.18,0,5.76l25.04,13.19
c3.01,1.58,7.93,1.58,10.93,0l25.04-13.19c3.01-1.58,3.01-4.18,0-5.76L69.97,68.56z"/>
<path opacity="0.2353" fill="#B3A9C5" enable-background="new " d="M69.77,68.64c-2.98-1.56-7.85-1.56-10.83,0l-5.52,2.91
c-2.98,1.57-7.85,1.57-10.83,0l-5.52-2.91c-2.98-1.56-7.85-1.56-10.83,0l-8.46,4.46c-2.98,1.57-2.98,4.14,0,5.71l24.81,13.07
c2.98,1.57,7.85,1.57,10.83,0l24.81-13.07c2.98-1.56,2.98-4.14,0-5.71L69.77,68.64z"/>
<path opacity="0.2471" fill="#AFA5C2" enable-background="new " d="M69.57,68.72c-2.95-1.55-7.78-1.55-10.73,0l-5.47,2.89
c-2.95,1.56-7.78,1.56-10.73,0l-5.47-2.89c-2.95-1.55-7.78-1.55-10.73,0l-8.38,4.42c-2.95,1.55-2.95,4.1,0,5.65l24.58,12.95
c2.95,1.55,7.78,1.55,10.73,0l24.58-12.95c2.95-1.55,2.95-4.1,0-5.65L69.57,68.72z"/>
<path opacity="0.2588" fill="#ABA1BF" enable-background="new " d="M69.37,68.8c-2.92-1.54-7.71-1.54-10.63,0l-5.42,2.86
c-2.92,1.54-7.71,1.54-10.63,0l-5.42-2.86c-2.92-1.54-7.71-1.54-10.63,0l-8.3,4.38c-2.92,1.54-2.92,4.06,0,5.6L42.69,91.6
c2.92,1.54,7.71,1.54,10.63,0l24.35-12.82c2.92-1.54,2.92-4.06,0-5.6L69.37,68.8z"/>
<path opacity="0.2706" fill="#A79CBC" enable-background="new " d="M69.16,68.88c-2.9-1.52-7.63-1.52-10.53,0l-5.37,2.83
c-2.9,1.53-7.63,1.53-10.53,0l-5.37-2.83c-2.89-1.52-7.63-1.52-10.53,0l-8.22,4.33c-2.9,1.52-2.9,4.03,0,5.55l24.12,12.7
c2.9,1.53,7.63,1.53,10.53,0l24.12-12.7c2.9-1.52,2.9-4.02,0-5.55L69.16,68.88z"/>
<path opacity="0.2824" fill="#A398B9" enable-background="new " d="M68.96,68.96c-2.87-1.51-7.56-1.51-10.43,0l-5.32,2.81
c-2.87,1.51-7.56,1.51-10.43,0l-5.32-2.81c-2.87-1.51-7.56-1.51-10.43,0l-8.14,4.29c-2.87,1.51-2.87,3.99,0,5.49l23.89,12.58
c2.87,1.51,7.56,1.51,10.43,0L77.1,78.75c2.87-1.51,2.87-3.99,0-5.49L68.96,68.96z"/>
<path opacity="0.2941" fill="#9F94B6" enable-background="new " d="M68.76,69.04c-2.84-1.49-7.49-1.49-10.33,0l-5.27,2.78
c-2.84,1.5-7.49,1.5-10.33,0l-5.27-2.78c-2.84-1.49-7.49-1.49-10.33,0l-8.06,4.25c-2.84,1.49-2.84,3.95,0,5.44l23.66,12.46
c2.84,1.5,7.49,1.5,10.33,0l23.65-12.46c2.84-1.49,2.84-3.95,0-5.44L68.76,69.04z"/>
<path opacity="0.3059" fill="#9C8FB4" enable-background="new " d="M68.56,69.12c-2.81-1.48-7.41-1.48-10.23,0l-5.22,2.75
c-2.81,1.48-7.42,1.48-10.23,0l-5.22-2.75c-2.81-1.48-7.41-1.48-10.23,0l-7.98,4.21c-2.81,1.48-2.81,3.91,0,5.39l23.43,12.34
c2.81,1.48,7.42,1.48,10.23,0l23.42-12.34c2.81-1.48,2.81-3.91,0-5.39L68.56,69.12z"/>
<path opacity="0.3176" fill="#988BB1" enable-background="new " d="M68.35,69.2c-2.78-1.46-7.34-1.46-10.12,0l-5.16,2.72
c-2.79,1.47-7.34,1.47-10.13,0l-5.16-2.72c-2.78-1.46-7.34-1.46-10.13,0l-7.91,4.17c-2.78,1.46-2.78,3.87,0,5.33l23.2,12.22
c2.79,1.47,7.34,1.47,10.13,0L76.26,78.7c2.79-1.46,2.79-3.87,0-5.33L68.35,69.2z"/>
<path opacity="0.3294" fill="#9487AE" enable-background="new " d="M68.15,69.28c-2.76-1.45-7.27-1.45-10.02,0l-5.11,2.7
c-2.76,1.45-7.27,1.45-10.03,0l-5.11-2.7c-2.76-1.45-7.27-1.45-10.02,0l-7.83,4.13c-2.76,1.45-2.76,3.83,0,5.28L43,90.79
c2.76,1.46,7.27,1.46,10.03,0l22.96-12.1c2.76-1.45,2.76-3.83,0-5.28L68.15,69.28z"/>
<path opacity="0.3412" fill="#9082AB" enable-background="new " d="M67.95,69.36c-2.73-1.43-7.2-1.43-9.92,0l-5.06,2.67
c-2.73,1.44-7.2,1.44-9.93,0l-5.06-2.67c-2.73-1.43-7.19-1.43-9.92,0l-7.75,4.08c-2.73,1.43-2.73,3.79,0,5.23l22.73,11.97
c2.73,1.44,7.2,1.44,9.93,0L75.7,78.67c2.73-1.43,2.73-3.79,0-5.23L67.95,69.36z"/>
<path opacity="0.3529" fill="#8C7EA8" enable-background="new " d="M67.75,69.44c-2.7-1.42-7.12-1.42-9.82,0l-5.01,2.64
c-2.7,1.42-7.12,1.42-9.83,0l-5.01-2.64c-2.7-1.42-7.12-1.42-9.82,0l-7.67,4.04c-2.7,1.42-2.7,3.76,0,5.17l22.5,11.85
c2.7,1.43,7.12,1.43,9.83,0l22.5-11.85c2.7-1.42,2.7-3.75,0-5.17L67.75,69.44z"/>
<path opacity="0.3647" fill="#887AA5" enable-background="new " d="M67.54,69.52c-2.67-1.41-7.05-1.41-9.72,0l-4.96,2.62
c-2.67,1.41-7.05,1.41-9.72,0l-4.96-2.62c-2.67-1.4-7.05-1.4-9.72,0l-7.59,4c-2.67,1.41-2.67,3.72,0,5.12l22.27,11.73
c2.67,1.41,7.05,1.41,9.72,0l22.27-11.73c2.67-1.4,2.67-3.71,0-5.12L67.54,69.52z"/>
<path opacity="0.3765" fill="#8576A2" enable-background="new " d="M67.34,69.6c-2.65-1.39-6.98-1.39-9.62,0l-4.91,2.59
c-2.65,1.39-6.98,1.39-9.62,0l-4.91-2.59c-2.65-1.39-6.98-1.39-9.62,0l-7.51,3.96c-2.65,1.39-2.65,3.68,0,5.07l22.04,11.61
c2.65,1.4,6.98,1.4,9.62,0l22.04-11.61c2.65-1.39,2.65-3.68,0-5.07L67.34,69.6z"/>
<path opacity="0.3882" fill="#81719F" enable-background="new " d="M67.14,69.68c-2.62-1.38-6.9-1.38-9.52,0l-4.86,2.56
c-2.62,1.38-6.9,1.38-9.52,0l-4.86-2.56c-2.62-1.38-6.9-1.38-9.52,0l-7.43,3.92c-2.62,1.38-2.62,3.64,0,5.01L43.24,90.1
c2.62,1.38,6.9,1.38,9.52,0l21.81-11.49c2.62-1.38,2.62-3.64,0-5.01L67.14,69.68z"/>
<path opacity="0.4" fill="#7D6D9C" enable-background="new " d="M66.94,69.76c-2.59-1.36-6.83-1.36-9.42,0l-4.8,2.54
c-2.59,1.37-6.83,1.37-9.42,0l-4.8-2.54c-2.59-1.36-6.83-1.36-9.42,0l-7.35,3.88c-2.59,1.36-2.59,3.6,0,4.96l21.58,11.37
c2.59,1.37,6.83,1.37,9.42,0L74.29,78.6c2.59-1.36,2.59-3.6,0-4.96L66.94,69.76z"/>
<path opacity="0.4118" fill="#796999" enable-background="new " d="M66.73,69.84c-2.56-1.35-6.76-1.35-9.32,0l-4.75,2.51
c-2.56,1.35-6.76,1.35-9.32,0l-4.75-2.51c-2.56-1.35-6.76-1.35-9.32,0l-7.28,3.84c-2.56,1.35-2.56,3.56,0,4.91l21.35,11.24
c2.56,1.36,6.76,1.36,9.32,0l21.35-11.24c2.56-1.35,2.56-3.56,0-4.91L66.73,69.84z"/>
<path opacity="0.4235" fill="#756497" enable-background="new " d="M66.53,69.92c-2.54-1.33-6.68-1.33-9.22,0l-4.7,2.48
c-2.54,1.33-6.69,1.33-9.22,0l-4.7-2.48c-2.53-1.33-6.68-1.33-9.22,0l-7.2,3.79c-2.53,1.33-2.53,3.52,0,4.86l21.12,11.12
c2.54,1.34,6.68,1.34,9.22,0l21.12-11.12c2.54-1.33,2.54-3.52,0-4.86L66.53,69.92z"/>
<path opacity="0.4353" fill="#726094" enable-background="new " d="M66.33,70c-2.51-1.32-6.61-1.32-9.12,0l-4.65,2.46
c-2.51,1.32-6.61,1.32-9.12,0L38.79,70c-2.51-1.32-6.61-1.32-9.12,0l-7.12,3.75c-2.51,1.32-2.51,3.49,0,4.8l20.89,11
c2.51,1.33,6.61,1.33,9.12,0l20.89-11c2.51-1.32,2.51-3.48,0-4.8L66.33,70z"/>
<path opacity="0.4471" fill="#6E5C91" enable-background="new " d="M66.13,70.08c-2.48-1.3-6.54-1.3-9.02,0l-4.6,2.43
c-2.48,1.31-6.54,1.31-9.02,0l-4.6-2.43c-2.48-1.3-6.54-1.3-9.02,0l-7.04,3.71c-2.48,1.3-2.48,3.45,0,4.75l20.66,10.88
c2.48,1.31,6.54,1.31,9.02,0l20.65-10.88c2.48-1.3,2.48-3.45,0-4.75L66.13,70.08z"/>
<path opacity="0.4588" fill="#6A588E" enable-background="new " d="M65.92,70.15c-2.45-1.29-6.46-1.29-8.92,0l-4.55,2.4
c-2.45,1.29-6.47,1.29-8.92,0l-4.55-2.4c-2.45-1.29-6.46-1.29-8.92,0l-6.96,3.67c-2.45,1.29-2.45,3.41,0,4.7l20.43,10.76
c2.45,1.3,6.47,1.3,8.92,0l20.42-10.76c2.45-1.29,2.45-3.41,0-4.7L65.92,70.15z"/>
<path opacity="0.4706" fill="#66538B" enable-background="new " d="M65.72,70.23c-2.42-1.27-6.39-1.27-8.81,0l-4.5,2.38
c-2.43,1.28-6.39,1.28-8.82,0l-4.5-2.38c-2.42-1.27-6.39-1.27-8.82,0l-6.88,3.63c-2.42,1.27-2.42,3.37,0,4.64l20.2,10.63
c2.42,1.28,6.39,1.28,8.82,0L72.6,78.51c2.43-1.27,2.43-3.37,0-4.64L65.72,70.23z"/>
<path opacity="0.4824" fill="#624F88" enable-background="new " d="M65.52,70.31c-2.4-1.26-6.32-1.26-8.71,0l-4.44,2.35
c-2.4,1.26-6.32,1.26-8.72,0l-4.45-2.35c-2.4-1.26-6.32-1.26-8.72,0l-6.8,3.59c-2.4,1.26-2.4,3.33,0,4.59L43.64,89
c2.4,1.27,6.32,1.27,8.72,0l19.96-10.51c2.4-1.26,2.4-3.33,0-4.59L65.52,70.31z"/>
<path opacity="0.4941" fill="#5E4B85" enable-background="new " d="M65.32,70.39c-2.37-1.25-6.25-1.25-8.61,0l-4.39,2.32
c-2.37,1.25-6.25,1.25-8.62,0l-4.39-2.32c-2.37-1.24-6.24-1.24-8.62,0l-6.73,3.54c-2.37,1.25-2.37,3.29,0,4.54l19.73,10.39
c2.37,1.26,6.25,1.26,8.62,0l19.73-10.39c2.37-1.24,2.37-3.29,0-4.54L65.32,70.39z"/>
<path opacity="0.5059" fill="#5B4682" enable-background="new " d="M65.11,70.47c-2.34-1.23-6.17-1.23-8.51,0l-4.34,2.3
c-2.34,1.23-6.17,1.23-8.52,0l-4.34-2.3c-2.34-1.23-6.17-1.23-8.51,0l-6.65,3.5c-2.34,1.23-2.34,3.25,0,4.48l19.5,10.27
c2.34,1.24,6.17,1.24,8.52,0l19.5-10.27c2.34-1.23,2.34-3.25,0-4.48L65.11,70.47z"/>
<path opacity="0.5176" fill="#57427F" enable-background="new " d="M64.91,70.55c-2.31-1.22-6.1-1.22-8.41,0l-4.29,2.27
c-2.31,1.22-6.1,1.22-8.41,0l-4.3-2.27c-2.31-1.21-6.1-1.21-8.41,0l-6.57,3.46c-2.31,1.22-2.31,3.22,0,4.43l19.27,10.15
c2.31,1.23,6.1,1.23,8.41,0l19.27-10.15c2.32-1.21,2.32-3.21,0-4.43L64.91,70.55z"/>
<path opacity="0.5294" fill="#533E7C" enable-background="new " d="M64.71,70.63c-2.29-1.2-6.03-1.2-8.31,0l-4.24,2.24
c-2.29,1.2-6.03,1.2-8.31,0l-4.24-2.24c-2.29-1.2-6.03-1.2-8.31,0l-6.49,3.42c-2.28,1.2-2.28,3.18,0,4.38l19.04,10.03
c2.29,1.21,6.03,1.21,8.31,0L71.2,78.43c2.29-1.2,2.29-3.18,0-4.38L64.71,70.63z"/>
<path opacity="0.5412" fill="#4F397A" enable-background="new " d="M64.51,70.71c-2.26-1.19-5.95-1.19-8.21,0l-4.19,2.21
c-2.26,1.19-5.96,1.19-8.21,0l-4.19-2.21c-2.26-1.19-5.95-1.19-8.21,0l-6.41,3.38c-2.26,1.19-2.26,3.14,0,4.33l18.81,9.91
c2.26,1.2,5.95,1.2,8.21,0l18.81-9.91c2.26-1.19,2.26-3.14,0-4.33L64.51,70.71z"/>
<path opacity="0.5529" fill="#4B3577" enable-background="new " d="M64.3,70.79c-2.23-1.17-5.88-1.17-8.11,0l-4.14,2.19
c-2.23,1.17-5.88,1.17-8.11,0l-4.14-2.19c-2.23-1.17-5.88-1.17-8.11,0l-6.33,3.34c-2.23,1.17-2.23,3.1,0,4.27l18.58,9.78
c2.23,1.18,5.88,1.18,8.11,0l18.58-9.78c2.23-1.17,2.23-3.1,0-4.27L64.3,70.79z"/>
<path opacity="0.5647" fill="#473174" enable-background="new " d="M64.1,70.87c-2.2-1.16-5.81-1.16-8.01,0l-4.08,2.16
c-2.2,1.16-5.81,1.16-8.01,0l-4.09-2.16c-2.2-1.16-5.81-1.16-8.01,0l-6.25,3.3c-2.2,1.16-2.2,3.06,0,4.22L44,88.05
c2.2,1.17,5.81,1.17,8.01,0l18.35-9.66c2.2-1.16,2.2-3.06,0-4.22L64.1,70.87z"/>
<path opacity="0.5765" fill="#442D71" enable-background="new " d="M63.9,70.95c-2.17-1.14-5.74-1.14-7.91,0l-4.03,2.13
c-2.18,1.14-5.74,1.14-7.91,0l-4.03-2.13c-2.17-1.14-5.73-1.14-7.91,0l-6.18,3.25c-2.17,1.14-2.17,3.02,0,4.17l18.12,9.54
c2.17,1.16,5.73,1.16,7.91,0l18.12-9.54c2.18-1.14,2.18-3.02,0-4.17L63.9,70.95z"/>
<path opacity="0.5882" fill="#40286E" enable-background="new " d="M63.7,71.03c-2.15-1.13-5.66-1.13-7.81,0l-3.98,2.11
c-2.15,1.13-5.66,1.13-7.81,0l-3.98-2.11c-2.15-1.13-5.66-1.13-7.81,0l-6.1,3.21c-2.15,1.13-2.15,2.99,0,4.11l17.89,9.42
c2.15,1.14,5.66,1.14,7.81,0l17.89-9.42c2.15-1.13,2.15-2.98,0-4.11L63.7,71.03z"/>
<path id="shadow_2_" opacity="0.6" fill="#3C246B" enable-background="new " d="M63.49,71.11c-2.12-1.11-5.59-1.11-7.71,0
l-3.93,2.08c-2.12,1.11-5.59,1.11-7.71,0l-3.93-2.08c-2.12-1.11-5.59-1.11-7.71,0l-6.02,3.17c-2.12,1.11-2.12,2.95,0,4.06
l17.66,9.3c2.12,1.13,5.59,1.13,7.71,0l17.65-9.3c2.12-1.11,2.12-2.95,0-4.06L63.49,71.11z"/>
</g>
</g>
</g>
<polygon id="u" fill="#5F29C6" points="89.5,17 89.5,69 48,90.65 6.5,69 6.5,17 6.51,17 29.5,5 29.5,56 48,65.65 66.5,56 66.5,5
89.49,17 "/>
<polygon id="line" fill="#EAE3F9" points="89.5,17 89.5,20.37 66.5,32.37 49.5,41.24 49.5,89.87 48,90.65 46.5,89.87 46.5,41.24
29.5,32.37 6.5,20.37 6.5,17 6.51,17 29.5,28.99 48,38.64 66.5,28.99 89.49,17 "/>
</svg>

+ 0
- 172
doc/static/img/use-package-logo-96x96-v1.svg View File

@ -1,172 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="use-package" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
y="0px" width="96px" height="96px" viewBox="0 0 96 96" enable-background="new 0 0 96 96" xml:space="preserve">
<g id="shadow_9_" opacity="0.4">
<g id="shadow_1_">
<g>
<path id="shadow_3_" fill="#FFFFFF" fill-opacity="0" d="M73.82,67.05c-3.53-1.86-9.31-1.86-12.84,0l-6.55,3.45
c-3.53,1.87-9.31,1.87-12.85,0l-6.55-3.45c-3.53-1.86-9.31-1.86-12.84,0l-10.03,5.29c-3.53,1.86-3.53,4.91,0,6.77l29.43,15.5
c3.53,1.86,9.31,1.86,12.85,0l29.42-15.5c3.53-1.86,3.53-4.91,0-6.77L73.82,67.05z"/>
<path opacity="0.0118" fill="#FBFBFC" enable-background="new " d="M73.62,67.13c-3.5-1.84-9.24-1.84-12.74,0l-6.5,3.42
c-3.5,1.85-9.24,1.85-12.75,0l-6.5-3.42c-3.5-1.84-9.24-1.84-12.74,0l-9.95,5.25c-3.51,1.84-3.51,4.87,0,6.71l29.19,15.38
c3.51,1.84,9.24,1.84,12.75,0l29.19-15.38c3.51-1.84,3.51-4.87,0-6.71L73.62,67.13z"/>
<path opacity="0.0235" fill="#F7F6F9" enable-background="new " d="M73.42,67.21c-3.48-1.83-9.17-1.83-12.64,0l-6.45,3.4
c-3.48,1.84-9.17,1.84-12.65,0l-6.45-3.4c-3.48-1.83-9.17-1.83-12.64,0l-9.87,5.2c-3.48,1.83-3.48,4.83,0,6.66l28.96,15.26
c3.48,1.83,9.17,1.83,12.65,0l28.96-15.26c3.48-1.83,3.48-4.83,0-6.66L73.42,67.21z"/>
<path opacity="0.0353" fill="#F4F2F6" enable-background="new " d="M73.21,67.29c-3.45-1.81-9.09-1.81-12.54,0l-6.4,3.37
c-3.45,1.82-9.09,1.82-12.55,0l-6.4-3.37c-3.45-1.81-9.09-1.81-12.54,0l-9.79,5.16c-3.45,1.81-3.45,4.79,0,6.61L41.73,94.2
c3.45,1.81,9.1,1.81,12.55,0l28.73-15.14c3.45-1.81,3.45-4.79,0-6.61L73.21,67.29z"/>
<path opacity="0.0471" fill="#F0EEF3" enable-background="new " d="M73.01,67.37c-3.42-1.8-9.02-1.8-12.44,0l-6.35,3.34
c-3.42,1.81-9.02,1.81-12.44,0l-6.35-3.34c-3.42-1.8-9.02-1.8-12.44,0l-9.71,5.12c-3.42,1.8-3.42,4.76,0,6.55l28.5,15.01
c3.42,1.8,9.02,1.8,12.44,0l28.5-15.01c3.42-1.8,3.42-4.76,0-6.55L73.01,67.37z"/>
<path opacity="0.0588" fill="#ECEAF0" enable-background="new " d="M72.81,67.45c-3.39-1.78-8.95-1.78-12.34,0l-6.3,3.32
c-3.39,1.79-8.95,1.79-12.34,0l-6.29-3.32c-3.39-1.78-8.95-1.78-12.34,0l-9.64,5.08c-3.4,1.78-3.4,4.72,0,6.5l28.27,14.89
c3.4,1.78,8.95,1.78,12.34,0l28.27-14.89c3.4-1.78,3.4-4.72,0-6.5L72.81,67.45z"/>
<path opacity="0.0706" fill="#E8E5EE" enable-background="new " d="M72.61,67.53c-3.37-1.77-8.88-1.77-12.24,0l-6.25,3.29
c-3.37,1.78-8.88,1.78-12.24,0l-6.24-3.29c-3.37-1.77-8.87-1.77-12.24,0l-9.56,5.04c-3.37,1.77-3.37,4.68,0,6.45l28.04,14.77
c3.37,1.77,8.88,1.77,12.24,0l28.04-14.77c3.37-1.77,3.37-4.68,0-6.45L72.61,67.53z"/>
<path opacity="0.0824" fill="#E4E1EB" enable-background="new " d="M72.4,67.61c-3.34-1.75-8.8-1.75-12.14,0l-6.19,3.26
c-3.34,1.76-8.8,1.76-12.14,0l-6.19-3.26c-3.34-1.75-8.8-1.75-12.14,0l-9.48,5c-3.34,1.75-3.34,4.64,0,6.39l27.81,14.65
c3.34,1.76,8.8,1.76,12.14,0L81.88,79c3.34-1.75,3.34-4.64,0-6.39L72.4,67.61z"/>
<path opacity="0.0941" fill="#E0DDE8" enable-background="new " d="M72.2,67.69c-3.31-1.74-8.73-1.74-12.04,0l-6.14,3.23
c-3.31,1.75-8.73,1.75-12.04,0l-6.14-3.23c-3.31-1.74-8.73-1.74-12.04,0l-9.4,4.96c-3.31,1.74-3.31,4.6,0,6.34l27.58,14.53
c3.31,1.74,8.73,1.74,12.04,0L81.6,78.99c3.31-1.74,3.31-4.6,0-6.34L72.2,67.69z"/>
<path opacity="0.1059" fill="#DDD8E5" enable-background="new " d="M72,67.77c-3.28-1.72-8.66-1.72-11.94,0l-6.09,3.21
c-3.28,1.74-8.66,1.74-11.94,0l-6.09-3.21c-3.28-1.72-8.66-1.72-11.94,0l-9.32,4.91c-3.28,1.73-3.28,4.56,0,6.29l27.35,14.41
c3.28,1.73,8.66,1.73,11.94,0l27.35-14.41c3.28-1.72,3.28-4.56,0-6.29L72,67.77z"/>
<path opacity="0.1176" fill="#D9D4E2" enable-background="new " d="M71.8,67.85c-3.26-1.71-8.58-1.71-11.84,0l-6.04,3.18
c-3.26,1.72-8.58,1.72-11.84,0l-6.04-3.18c-3.26-1.71-8.58-1.71-11.84,0l-9.24,4.87c-3.26,1.71-3.26,4.53,0,6.24l27.12,14.28
c3.26,1.71,8.58,1.71,11.84,0l27.12-14.28c3.26-1.71,3.26-4.52,0-6.24L71.8,67.85z"/>
<path opacity="0.1294" fill="#D5D0DF" enable-background="new " d="M71.59,67.93c-3.23-1.7-8.51-1.7-11.74,0l-5.99,3.15
c-3.23,1.71-8.51,1.71-11.74,0l-5.99-3.15c-3.23-1.7-8.51-1.7-11.74,0l-9.16,4.83c-3.23,1.7-3.23,4.49,0,6.18l26.9,14.16
c3.23,1.7,8.51,1.7,11.74,0l26.89-14.16c3.23-1.7,3.23-4.49,0-6.18L71.59,67.93z"/>
<path opacity="0.1412" fill="#D1CBDC" enable-background="new " d="M71.39,68.01c-3.2-1.68-8.44-1.68-11.64,0l-5.94,3.13
c-3.2,1.69-8.44,1.69-11.64,0l-5.94-3.13c-3.2-1.68-8.44-1.68-11.64,0L15.5,72.8c-3.2,1.68-3.2,4.45,0,6.13l26.66,14.04
c3.2,1.68,8.44,1.68,11.64,0l26.66-14.04c3.2-1.68,3.2-4.45,0-6.13L71.39,68.01z"/>
<path opacity="0.1529" fill="#CDC7D9" enable-background="new " d="M71.19,68.09c-3.17-1.67-8.36-1.67-11.54,0l-5.88,3.1
c-3.17,1.68-8.36,1.68-11.54,0l-5.88-3.1c-3.17-1.67-8.36-1.67-11.54,0l-9.01,4.75c-3.17,1.67-3.17,4.41,0,6.08l26.43,13.92
c3.17,1.67,8.37,1.67,11.54,0l26.42-13.92c3.17-1.67,3.17-4.41,0-6.08L71.19,68.09z"/>
<path opacity="0.1647" fill="#C9C3D6" enable-background="new " d="M70.99,68.17c-3.14-1.65-8.29-1.65-11.43,0l-5.83,3.07
c-3.15,1.66-8.29,1.66-11.44,0l-5.83-3.07c-3.14-1.65-8.29-1.65-11.43,0l-8.93,4.71c-3.15,1.65-3.15,4.37,0,6.02l26.2,13.8
c3.15,1.66,8.29,1.66,11.44,0l26.19-13.8c3.14-1.65,3.14-4.37,0-6.02L70.99,68.17z"/>
<path opacity="0.1765" fill="#C6BFD3" enable-background="new " d="M70.78,68.25c-3.12-1.64-8.22-1.64-11.33,0l-5.78,3.05
c-3.12,1.65-8.22,1.65-11.34,0l-5.78-3.05c-3.12-1.64-8.22-1.64-11.33,0l-8.85,4.67c-3.12,1.64-3.12,4.33,0,5.97l25.96,13.68
c3.12,1.64,8.22,1.64,11.34,0l25.96-13.68c3.12-1.64,3.12-4.33,0-5.97L70.78,68.25z"/>
<path opacity="0.1882" fill="#C2BAD1" enable-background="new " d="M70.58,68.33c-3.09-1.62-8.14-1.62-11.23,0l-5.73,3.02
c-3.09,1.63-8.15,1.63-11.24,0l-5.73-3.02c-3.09-1.62-8.14-1.62-11.23,0l-8.77,4.62c-3.09,1.62-3.09,4.29,0,5.92l25.73,13.55
c3.09,1.63,8.15,1.63,11.24,0l25.73-13.55c3.09-1.62,3.09-4.29,0-5.92L70.58,68.33z"/>
<path opacity="0.2" fill="#BEB6CE" enable-background="new " d="M70.38,68.41c-3.06-1.61-8.07-1.61-11.13,0l-5.68,2.99
c-3.06,1.62-8.07,1.62-11.13,0l-5.68-2.99c-3.06-1.61-8.07-1.61-11.13,0l-8.69,4.58c-3.06,1.61-3.06,4.26,0,5.86l25.5,13.43
c3.06,1.61,8.07,1.61,11.13,0l25.5-13.43c3.06-1.61,3.06-4.25,0-5.86L70.38,68.41z"/>
<path opacity="0.2118" fill="#BAB2CB" enable-background="new " d="M70.18,68.48c-3.03-1.59-8-1.59-11.03,0l-5.63,2.97
c-3.04,1.6-8,1.6-11.03,0l-5.63-2.97c-3.03-1.59-8-1.59-11.03,0l-8.61,4.54c-3.03,1.59-3.03,4.22,0,5.81l25.27,13.31
c3.03,1.6,8,1.6,11.03,0l25.27-13.31c3.03-1.59,3.03-4.22,0-5.81L70.18,68.48z"/>
<path opacity="0.2235" fill="#B6ADC8" enable-background="new " d="M69.97,68.56c-3.01-1.58-7.93-1.58-10.93,0l-5.58,2.94
c-3.01,1.59-7.93,1.59-10.93,0l-5.58-2.94c-3.01-1.58-7.92-1.58-10.93,0l-8.54,4.5c-3.01,1.58-3.01,4.18,0,5.76l25.04,13.19
c3.01,1.58,7.93,1.58,10.93,0l25.04-13.19c3.01-1.58,3.01-4.18,0-5.76L69.97,68.56z"/>
<path opacity="0.2353" fill="#B3A9C5" enable-background="new " d="M69.77,68.64c-2.98-1.56-7.85-1.56-10.83,0l-5.52,2.91
c-2.98,1.57-7.85,1.57-10.83,0l-5.52-2.91c-2.98-1.56-7.85-1.56-10.83,0l-8.46,4.46c-2.98,1.57-2.98,4.14,0,5.71l24.81,13.07
c2.98,1.57,7.85,1.57,10.83,0l24.81-13.07c2.98-1.56,2.98-4.14,0-5.71L69.77,68.64z"/>
<path opacity="0.2471" fill="#AFA5C2" enable-background="new " d="M69.57,68.72c-2.95-1.55-7.78-1.55-10.73,0l-5.47,2.89
c-2.95,1.56-7.78,1.56-10.73,0l-5.47-2.89c-2.95-1.55-7.78-1.55-10.73,0l-8.38,4.42c-2.95,1.55-2.95,4.1,0,5.65l24.58,12.95
c2.95,1.55,7.78,1.55,10.73,0l24.58-12.95c2.95-1.55,2.95-4.1,0-5.65L69.57,68.72z"/>
<path opacity="0.2588" fill="#ABA1BF" enable-background="new " d="M69.37,68.8c-2.92-1.54-7.71-1.54-10.63,0l-5.42,2.86
c-2.92,1.54-7.71,1.54-10.63,0l-5.42-2.86c-2.92-1.54-7.71-1.54-10.63,0l-8.3,4.38c-2.92,1.54-2.92,4.06,0,5.6L42.69,91.6
c2.92,1.54,7.71,1.54,10.63,0l24.35-12.82c2.92-1.54,2.92-4.06,0-5.6L69.37,68.8z"/>
<path opacity="0.2706" fill="#A79CBC" enable-background="new " d="M69.16,68.88c-2.9-1.52-7.63-1.52-10.53,0l-5.37,2.83
c-2.9,1.53-7.63,1.53-10.53,0l-5.37-2.83c-2.89-1.52-7.63-1.52-10.53,0l-8.22,4.33c-2.9,1.52-2.9,4.03,0,5.55l24.12,12.7
c2.9,1.53,7.63,1.53,10.53,0l24.12-12.7c2.9-1.52,2.9-4.02,0-5.55L69.16,68.88z"/>
<path opacity="0.2824" fill="#A398B9" enable-background="new " d="M68.96,68.96c-2.87-1.51-7.56-1.51-10.43,0l-5.32,2.81
c-2.87,1.51-7.56,1.51-10.43,0l-5.32-2.81c-2.87-1.51-7.56-1.51-10.43,0l-8.14,4.29c-2.87,1.51-2.87,3.99,0,5.49l23.89,12.58
c2.87,1.51,7.56,1.51,10.43,0L77.1,78.75c2.87-1.51,2.87-3.99,0-5.49L68.96,68.96z"/>
<path opacity="0.2941" fill="#9F94B6" enable-background="new " d="M68.76,69.04c-2.84-1.49-7.49-1.49-10.33,0l-5.27,2.78
c-2.84,1.5-7.49,1.5-10.33,0l-5.27-2.78c-2.84-1.49-7.49-1.49-10.33,0l-8.06,4.25c-2.84,1.49-2.84,3.95,0,5.44l23.66,12.46
c2.84,1.5,7.49,1.5,10.33,0l23.65-12.46c2.84-1.49,2.84-3.95,0-5.44L68.76,69.04z"/>
<path opacity="0.3059" fill="#9C8FB4" enable-background="new " d="M68.56,69.12c-2.81-1.48-7.41-1.48-10.23,0l-5.22,2.75
c-2.81,1.48-7.42,1.48-10.23,0l-5.22-2.75c-2.81-1.48-7.41-1.48-10.23,0l-7.98,4.21c-2.81,1.48-2.81,3.91,0,5.39l23.43,12.34
c2.81,1.48,7.42,1.48,10.23,0l23.42-12.34c2.81-1.48,2.81-3.91,0-5.39L68.56,69.12z"/>
<path opacity="0.3176" fill="#988BB1" enable-background="new " d="M68.35,69.2c-2.78-1.46-7.34-1.46-10.12,0l-5.16,2.72
c-2.79,1.47-7.34,1.47-10.13,0l-5.16-2.72c-2.78-1.46-7.34-1.46-10.13,0l-7.91,4.17c-2.78,1.46-2.78,3.87,0,5.33l23.2,12.22
c2.79,1.47,7.34,1.47,10.13,0L76.26,78.7c2.79-1.46,2.79-3.87,0-5.33L68.35,69.2z"/>
<path opacity="0.3294" fill="#9487AE" enable-background="new " d="M68.15,69.28c-2.76-1.45-7.27-1.45-10.02,0l-5.11,2.7
c-2.76,1.45-7.27,1.45-10.03,0l-5.11-2.7c-2.76-1.45-7.27-1.45-10.02,0l-7.83,4.13c-2.76,1.45-2.76,3.83,0,5.28L43,90.79
c2.76,1.46,7.27,1.46,10.03,0l22.96-12.1c2.76-1.45,2.76-3.83,0-5.28L68.15,69.28z"/>
<path opacity="0.3412" fill="#9082AB" enable-background="new " d="M67.95,69.36c-2.73-1.43-7.2-1.43-9.92,0l-5.06,2.67
c-2.73,1.44-7.2,1.44-9.93,0l-5.06-2.67c-2.73-1.43-7.19-1.43-9.92,0l-7.75,4.08c-2.73,1.43-2.73,3.79,0,5.23l22.73,11.97
c2.73,1.44,7.2,1.44,9.93,0L75.7,78.67c2.73-1.43,2.73-3.79,0-5.23L67.95,69.36z"/>
<path opacity="0.3529" fill="#8C7EA8" enable-background="new " d="M67.75,69.44c-2.7-1.42-7.12-1.42-9.82,0l-5.01,2.64
c-2.7,1.42-7.12,1.42-9.83,0l-5.01-2.64c-2.7-1.42-7.12-1.42-9.82,0l-7.67,4.04c-2.7,1.42-2.7,3.76,0,5.17l22.5,11.85
c2.7,1.43,7.12,1.43,9.83,0l22.5-11.85c2.7-1.42,2.7-3.75,0-5.17L67.75,69.44z"/>
<path opacity="0.3647" fill="#887AA5" enable-background="new " d="M67.54,69.52c-2.67-1.41-7.05-1.41-9.72,0l-4.96,2.62
c-2.67,1.41-7.05,1.41-9.72,0l-4.96-2.62c-2.67-1.4-7.05-1.4-9.72,0l-7.59,4c-2.67,1.41-2.67,3.72,0,5.12l22.27,11.73
c2.67,1.41,7.05,1.41,9.72,0l22.27-11.73c2.67-1.4,2.67-3.71,0-5.12L67.54,69.52z"/>
<path opacity="0.3765" fill="#8576A2" enable-background="new " d="M67.34,69.6c-2.65-1.39-6.98-1.39-9.62,0l-4.91,2.59
c-2.65,1.39-6.98,1.39-9.62,0l-4.91-2.59c-2.65-1.39-6.98-1.39-9.62,0l-7.51,3.96c-2.65,1.39-2.65,3.68,0,5.07l22.04,11.61
c2.65,1.4,6.98,1.4,9.62,0l22.04-11.61c2.65-1.39,2.65-3.68,0-5.07L67.34,69.6z"/>
<path opacity="0.3882" fill="#81719F" enable-background="new " d="M67.14,69.68c-2.62-1.38-6.9-1.38-9.52,0l-4.86,2.56
c-2.62,1.38-6.9,1.38-9.52,0l-4.86-2.56c-2.62-1.38-6.9-1.38-9.52,0l-7.43,3.92c-2.62,1.38-2.62,3.64,0,5.01L43.24,90.1
c2.62,1.38,6.9,1.38,9.52,0l21.81-11.49c2.62-1.38,2.62-3.64,0-5.01L67.14,69.68z"/>
<path opacity="0.4" fill="#7D6D9C" enable-background="new " d="M66.94,69.76c-2.59-1.36-6.83-1.36-9.42,0l-4.8,2.54
c-2.59,1.37-6.83,1.37-9.42,0l-4.8-2.54c-2.59-1.36-6.83-1.36-9.42,0l-7.35,3.88c-2.59,1.36-2.59,3.6,0,4.96l21.58,11.37
c2.59,1.37,6.83,1.37,9.42,0L74.29,78.6c2.59-1.36,2.59-3.6,0-4.96L66.94,69.76z"/>
<path opacity="0.4118" fill="#796999" enable-background="new " d="M66.73,69.84c-2.56-1.35-6.76-1.35-9.32,0l-4.75,2.51
c-2.56,1.35-6.76,1.35-9.32,0l-4.75-2.51c-2.56-1.35-6.76-1.35-9.32,0l-7.28,3.84c-2.56,1.35-2.56,3.56,0,4.91l21.35,11.24
c2.56,1.36,6.76,1.36,9.32,0l21.35-11.24c2.56-1.35,2.56-3.56,0-4.91L66.73,69.84z"/>
<path opacity="0.4235" fill="#756497" enable-background="new " d="M66.53,69.92c-2.54-1.33-6.68-1.33-9.22,0l-4.7,2.48
c-2.54,1.33-6.69,1.33-9.22,0l-4.7-2.48c-2.53-1.33-6.68-1.33-9.22,0l-7.2,3.79c-2.53,1.33-2.53,3.52,0,4.86l21.12,11.12
c2.54,1.34,6.68,1.34,9.22,0l21.12-11.12c2.54-1.33,2.54-3.52,0-4.86L66.53,69.92z"/>
<path opacity="0.4353" fill="#726094" enable-background="new " d="M66.33,70c-2.51-1.32-6.61-1.32-9.12,0l-4.65,2.46
c-2.51,1.32-6.61,1.32-9.12,0L38.79,70c-2.51-1.32-6.61-1.32-9.12,0l-7.12,3.75c-2.51,1.32-2.51,3.49,0,4.8l20.89,11
c2.51,1.33,6.61,1.33,9.12,0l20.89-11c2.51-1.32,2.51-3.48,0-4.8L66.33,70z"/>
<path opacity="0.4471" fill="#6E5C91" enable-background="new " d="M66.13,70.08c-2.48-1.3-6.54-1.3-9.02,0l-4.6,2.43
c-2.48,1.31-6.54,1.31-9.02,0l-4.6-2.43c-2.48-1.3-6.54-1.3-9.02,0l-7.04,3.71c-2.48,1.3-2.48,3.45,0,4.75l20.66,10.88
c2.48,1.31,6.54,1.31,9.02,0l20.65-10.88c2.48-1.3,2.48-3.45,0-4.75L66.13,70.08z"/>
<path opacity="0.4588" fill="#6A588E" enable-background="new " d="M65.92,70.15c-2.45-1.29-6.46-1.29-8.92,0l-4.55,2.4
c-2.45,1.29-6.47,1.29-8.92,0l-4.55-2.4c-2.45-1.29-6.46-1.29-8.92,0l-6.96,3.67c-2.45,1.29-2.45,3.41,0,4.7l20.43,10.76
c2.45,1.3,6.47,1.3,8.92,0l20.42-10.76c2.45-1.29,2.45-3.41,0-4.7L65.92,70.15z"/>
<path opacity="0.4706" fill="#66538B" enable-background="new " d="M65.72,70.23c-2.42-1.27-6.39-1.27-8.81,0l-4.5,2.38
c-2.43,1.28-6.39,1.28-8.82,0l-4.5-2.38c-2.42-1.27-6.39-1.27-8.82,0l-6.88,3.63c-2.42,1.27-2.42,3.37,0,4.64l20.2,10.63
c2.42,1.28,6.39,1.28,8.82,0L72.6,78.51c2.43-1.27,2.43-3.37,0-4.64L65.72,70.23z"/>
<path opacity="0.4824" fill="#624F88" enable-background="new " d="M65.52,70.31c-2.4-1.26-6.32-1.26-8.71,0l-4.44,2.35
c-2.4,1.26-6.32,1.26-8.72,0l-4.45-2.35c-2.4-1.26-6.32-1.26-8.72,0l-6.8,3.59c-2.4,1.26-2.4,3.33,0,4.59L43.64,89
c2.4,1.27,6.32,1.27,8.72,0l19.96-10.51c2.4-1.26,2.4-3.33,0-4.59L65.52,70.31z"/>
<path opacity="0.4941" fill="#5E4B85" enable-background="new " d="M65.32,70.39c-2.37-1.25-6.25-1.25-8.61,0l-4.39,2.32
c-2.37,1.25-6.25,1.25-8.62,0l-4.39-2.32c-2.37-1.24-6.24-1.24-8.62,0l-6.73,3.54c-2.37,1.25-2.37,3.29,0,4.54l19.73,10.39
c2.37,1.26,6.25,1.26,8.62,0l19.73-10.39c2.37-1.24,2.37-3.29,0-4.54L65.32,70.39z"/>
<path opacity="0.5059" fill="#5B4682" enable-background="new " d="M65.11,70.47c-2.34-1.23-6.17-1.23-8.51,0l-4.34,2.3
c-2.34,1.23-6.17,1.23-8.52,0l-4.34-2.3c-2.34-1.23-6.17-1.23-8.51,0l-6.65,3.5c-2.34,1.23-2.34,3.25,0,4.48l19.5,10.27
c2.34,1.24,6.17,1.24,8.52,0l19.5-10.27c2.34-1.23,2.34-3.25,0-4.48L65.11,70.47z"/>
<path opacity="0.5176" fill="#57427F" enable-background="new " d="M64.91,70.55c-2.31-1.22-6.1-1.22-8.41,0l-4.29,2.27
c-2.31,1.22-6.1,1.22-8.41,0l-4.3-2.27c-2.31-1.21-6.1-1.21-8.41,0l-6.57,3.46c-2.31,1.22-2.31,3.22,0,4.43l19.27,10.15
c2.31,1.23,6.1,1.23,8.41,0l19.27-10.15c2.32-1.21,2.32-3.21,0-4.43L64.91,70.55z"/>
<path opacity="0.5294" fill="#533E7C" enable-background="new " d="M64.71,70.63c-2.29-1.2-6.03-1.2-8.31,0l-4.24,2.24
c-2.29,1.2-6.03,1.2-8.31,0l-4.24-2.24c-2.29-1.2-6.03-1.2-8.31,0l-6.49,3.42c-2.28,1.2-2.28,3.18,0,4.38l19.04,10.03
c2.29,1.21,6.03,1.21,8.31,0L71.2,78.43c2.29-1.2,2.29-3.18,0-4.38L64.71,70.63z"/>
<path opacity="0.5412" fill="#4F397A" enable-background="new " d="M64.51,70.71c-2.26-1.19-5.95-1.19-8.21,0l-4.19,2.21
c-2.26,1.19-5.96,1.19-8.21,0l-4.19-2.21c-2.26-1.19-5.95-1.19-8.21,0l-6.41,3.38c-2.26,1.19-2.26,3.14,0,4.33l18.81,9.91
c2.26,1.2,5.95,1.2,8.21,0l18.81-9.91c2.26-1.19,2.26-3.14,0-4.33L64.51,70.71z"/>
<path opacity="0.5529" fill="#4B3577" enable-background="new " d="M64.3,70.79c-2.23-1.17-5.88-1.17-8.11,0l-4.14,2.19
c-2.23,1.17-5.88,1.17-8.11,0l-4.14-2.19c-2.23-1.17-5.88-1.17-8.11,0l-6.33,3.34c-2.23,1.17-2.23,3.1,0,4.27l18.58,9.78
c2.23,1.18,5.88,1.18,8.11,0l18.58-9.78c2.23-1.17,2.23-3.1,0-4.27L64.3,70.79z"/>
<path opacity="0.5647" fill="#473174" enable-background="new " d="M64.1,70.87c-2.2-1.16-5.81-1.16-8.01,0l-4.08,2.16
c-2.2,1.16-5.81,1.16-8.01,0l-4.09-2.16c-2.2-1.16-5.81-1.16-8.01,0l-6.25,3.3c-2.2,1.16-2.2,3.06,0,4.22L44,88.05
c2.2,1.17,5.81,1.17,8.01,0l18.35-9.66c2.2-1.16,2.2-3.06,0-4.22L64.1,70.87z"/>
<path opacity="0.5765" fill="#442D71" enable-background="new " d="M63.9,70.95c-2.17-1.14-5.74-1.14-7.91,0l-4.03,2.13
c-2.18,1.14-5.74,1.14-7.91,0l-4.03-2.13c-2.17-1.14-5.73-1.14-7.91,0l-6.18,3.25c-2.17,1.14-2.17,3.02,0,4.17l18.12,9.54
c2.17,1.16,5.73,1.16,7.91,0l18.12-9.54c2.18-1.14,2.18-3.02,0-4.17L63.9,70.95z"/>
<path opacity="0.5882" fill="#40286E" enable-background="new " d="M63.7,71.03c-2.15-1.13-5.66-1.13-7.81,0l-3.98,2.11
c-2.15,1.13-5.66,1.13-7.81,0l-3.98-2.11c-2.15-1.13-5.66-1.13-7.81,0l-6.1,3.21c-2.15,1.13-2.15,2.99,0,4.11l17.89,9.42
c2.15,1.14,5.66,1.14,7.81,0l17.89-9.42c2.15-1.13,2.15-2.98,0-4.11L63.7,71.03z"/>
<path id="shadow_2_" opacity="0.6" fill="#3C246B" enable-background="new " d="M63.49,71.11c-2.12-1.11-5.59-1.11-7.71,0
l-3.93,2.08c-2.12,1.11-5.59,1.11-7.71,0l-3.93-2.08c-2.12-1.11-5.59-1.11-7.71,0l-6.02,3.17c-2.12,1.11-2.12,2.95,0,4.06
l17.66,9.3c2.12,1.13,5.59,1.13,7.71,0l17.65-9.3c2.12-1.11,2.12-2.95,0-4.06L63.49,71.11z"/>
</g>
</g>
</g>
<polygon id="u" fill="#5F29C6" points="89.5,17 89.5,69 48,90.65 6.5,69 6.5,17 6.51,17 29.5,5 29.5,56 48,65.65 66.5,56 66.5,5
89.49,17 "/>
<polygon id="line" fill="#EAE3F9" points="89.5,17 89.5,20.37 66.5,32.37 49.5,41.24 49.5,89.87 48,90.65 46.5,89.87 46.5,41.24
29.5,32.37 6.5,20.37 6.5,17 6.51,17 29.5,28.99 48,38.64 66.5,28.99 89.49,17 "/>
</svg>

+ 0
- 34
doc/themes/hugo-alabaster-theme/LICENSE.md View File

@ -1,34 +0,0 @@
Copyright (c) 2016 Digitalcraftsman
Based on original work copyright (c) Jeff Forcier, copyright (c) 2011 Kenneth Reitz
and copyright (c) 2010 Armin Ronacher.
Some rights reserved.
Redistribution and use in source and binary forms of the theme, with or
without modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* The names of the contributors may not be used to endorse or
promote products derived from this software without specific
prior written permission.
THIS THEME IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS THEME, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

+ 0
- 42
doc/themes/hugo-alabaster-theme/README.md View File

@ -1,42 +0,0 @@
# Alabaster
A documentation theme ported from [Sphinx](http://www.sphinx-doc.org/en/stable/) to [Hugo](https://gohugo.io).
[![Screenshot](https://raw.githubusercontent.com/digitalcraftsman/hugo-alabaster-theme/dev/images/screenshot.png)](https://digitalcraftsman.github.io/hugo-alabaster-theme/)
## Quick start
Install with `git`:
```sh
git clone git@github.com:digitalcraftsman/hugo-alabaster-theme.git themes/hugo-alabaster-theme
```
> This theme uses the latest development version of Hugo. Therefore, it doesn't work with the official releases. Look [here](https://github.com/spf13/hugo#build-and-install-the-binaries-from-source-advanced-install) if you want to know how to build Hugo from source.
Next, take a look in the `exampleSite` folder at. This directory contains an example config file and the content for the demo. It serves as an example setup for your documentation.
Copy at least the `config.toml` in the root directory of your website. Overwrite the existing config file if necessary.
Hugo includes a development server, so you can view your changes as you go -
very handy. Spin it up with the following command:
``` sh
hugo server
```
Now you can go to [localhost:1313](http://localhost:1313) and the Alabaster
theme should be visible.
For detailed installation instructions visit the [demo](https://digitalcraftsman.github.io/hugo-alabaster-theme/).
## Acknowledgements
Last but not I want to give a big shout-out to [Jeff Forcier](https://github.com/bitprophet), [Kenneth Reitz](https://github.com/kennethreitz) and [Armin Ronacher](https://github.com/mitsuhiko). Their work and modifications on the original codebase made this port possible.
Furthermore, thanks to [Steve Francia](https://gihub.com/spf13) for creating Hugo and the [awesome community](https://github.com/spf13/hugo/graphs/contributors) around the project.
## License
The theme is released under the BSD license. Read the [license](https://github.com/digitalcraftsman/hugo-alabaster-theme/blob/master/LICENSE.md) for more information.

+ 0
- 6
doc/themes/hugo-alabaster-theme/index.html View File

@ -1,6 +0,0 @@
{{ define "main" }}
{{ range where .Site.Pages "Type" "homepage" }}
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ end }}
{{ end }}

+ 0
- 5
doc/themes/hugo-alabaster-theme/layouts/404.html View File

@ -1,5 +0,0 @@
{{ define "main" }}
<h1>Page not found</h1>
I'm sorry, but the requested page wasn’t found on the server.
{{ end }}

+ 0
- 35
doc/themes/hugo-alabaster-theme/layouts/_default/baseof.html View File

@ -1,35 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
{{ partial "head" . }}
<body role="document">
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
{{ block "main" . }}{{ end }}
{{ if not .IsHome -}}
{{ template "_internal/disqus.html" . }}
{{- end }}
</div>
</div>
</div>
{{ partial "sidebar/sidebar" . }}
{{ partial "footer" . }}
{{ range .Site.Params.custom_js -}}
<script src="{{ . | relURL }}"></script>
{{- end }}
{{ with .Site.Params.highlightjs -}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.3.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
{{ end }}
{{ template "_internal/google_analytics.html" . }}
</div>
</body>
</html>

+ 0
- 5
doc/themes/hugo-alabaster-theme/layouts/_default/single.html View File

@ -1,5 +0,0 @@
{{ define "main" }}
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ end }}

+ 0
- 6
doc/themes/hugo-alabaster-theme/layouts/index.html View File

@ -1,6 +0,0 @@
{{ define "main" }}
{{ range where .Site.Pages "Type" "homepage" }}
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ end }}
{{ end }}

+ 0
- 18
doc/themes/hugo-alabaster-theme/layouts/partials/footer.html View File

@ -1,18 +0,0 @@
<div class="footer">
{{ if .Site.Params.footer.show_powered_by -}}
Exported from <a href="https://raw.githubusercontent.com/jwiegley/use-package/master/use-package.org"><code>use-package.org</code></a>
using
{{ with .Params.creator }}
<a href="https://www.gnu.org/software/emacs/">{{ . | replaceRE "\\(Org.*" "" }}</a> &plus;
<a href="https://orgmode.org/">{{ . | replaceRE "Emacs.*\\(" "" | replaceRE "\\+ ox-.*" "" }}</a>
{{ end }}
and published using <a href="http://gohugo.io/">Hugo {{ .Hugo.Version }}</a>
&plus; <a href="https://github.com/digitalcraftsman/hugo-alabaster-theme">Alabaster</a>
{{ end }}
</div>
{{ if .Site.Params.github_banner -}}
<a href="https://github.com/{{ .Site.Params.github_user }}/{{ .Site.Params.github_repo }}" class="github">
<img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" class="github"/>
</a>
{{- end }}

+ 0
- 30
doc/themes/hugo-alabaster-theme/layouts/partials/head.html View File

@ -1,30 +0,0 @@
<head {{ with .Site.LanguageCode }}lang="{{ . }}"{{ end }}>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
{{- with .Site.Params.description -}}
<meta name="description" content="{{ . }}">
{{- end -}}
{{ .Hugo.Generator }}
<title>{{ if not .IsHome }}{{ .Title }} &mdash;{{ end }} {{ .Site.Title }}</title>
<link rel="stylesheet" href="{{ "css/basic.css" | relURL }}" type="text/css" />
<link rel="stylesheet" href="{{ "css/alabaster.css" | relURL }}" type="text/css" />
{{ with .Site.Params.highlightjs -}}
<link rel="stylesheet" href="{{ . | relURL }}" type="text/css" />
{{- end }}
{{ range .Site.Params.custom_css -}}
<link rel="stylesheet" href="{{ . | relURL }}">
{{- end }}
{{ range .Site.Params.custom_css_absolute -}}
<link rel="stylesheet" href="{{ . }}">
{{- end }}
{{ with .Site.Params.favicon -}}
<link rel="shortcut icon" href="{{ . | relURL }}" type="image/x-icon"/>
{{- else -}}
<link rel="shortcut icon" href="{{ "favicon.ico" | relURL }}" type="image/x-icon"/>
{{- end }}
</head>

+ 0
- 32
doc/themes/hugo-alabaster-theme/layouts/partials/sidebar/buttons.html View File

@ -1,32 +0,0 @@
{{ if .Site.Params.github_user | and .Site.Params.github_repo -}}
{{ $path := printf "%s/%s" .Site.Params.github_user .Site.Params.github_repo }}
{{ if .Site.Params.sidebar.github_button -}}
<p>
<iframe src="https://ghbtns.com/github-btn.html?user={{ .Site.Params.github_user }}&repo={{ .Site.Params.github_repo }}&type=watch&count=true&size=large"
allowtransparency="true" frameborder="0" scrolling="0" width="200px" height="35px"></iframe>
</p>
{{- end }}
{{ if .Site.Params.sidebar.travis_button -}}
<p>
<a href="https://travis-ci.org/{{ $path }}">
<img
alt="https://secure.travis-ci.org/{{ $path }}.svg?branch=master"
src="https://secure.travis-ci.org/{{ $path }}.svg?branch=master"
/>
</a>
</p>
{{- end }}
{{ if .Site.Params.sidebar.codecov_button -}}
<p>
<a href="https://codecov.io/github/{{ $path }}">
<img
alt="https://codecov.io/github/{{ $path }}/coverage.svg?branch=master"
src="https://codecov.io/github/{{ $path }}/coverage.svg?branch=master"
/>
</a>
</p>
{{- end }}
{{- end }}

+ 0
- 11
doc/themes/hugo-alabaster-theme/layouts/partials/sidebar/menu.html View File

@ -1,11 +0,0 @@
{{ if ne .Site.Menus.main nil }}
{{ if gt (len .Site.Menus.main) 0 }}
<ul>
{{ range .Site.Menus.main }}
<li class="toctree-l1">
<a class="reference internal" href="{{ .URL }}">{{ .Name }}</a>
</li>
{{ end }}
</ul>
{{ end }}
{{ end }}

+ 0
- 21
doc/themes/hugo-alabaster-theme/layouts/partials/sidebar/sidebar.html View File

@ -1,21 +0,0 @@
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo">
<a href="/">
{{ with .Site.Params.sidebar.logo -}}
<img class="logo" src="{{ . | relURL }}" alt="Logo"/>
{{- end }}
<h1 class="logo logo-name">{{ .Site.Params.name }}</h1>
</a>
</p>
{{ with .Site.Params.description -}}
<p class="blurb">{{ . | markdownify }}</p>
{{- end }}
{{ partial "sidebar/buttons" . }}
{{ partial "sidebar/menu" . }}
</div>
</div>
<div class="clearer"></div>
</div>

+ 0
- 4
doc/themes/hugo-alabaster-theme/layouts/shortcodes/admonition.html View File

@ -1,4 +0,0 @@
<div class="admonition {{ .Get "type" | lower }}">
<p class="first admonition-title">{{ .Get "title" }}</p>
<p>{{ string .Inner | markdownify }}</p>
</div>

+ 0
- 569
doc/themes/hugo-alabaster-theme/static/css/alabaster.css View File

@ -1,569 +0,0 @@
/* -- page layout ----------------------------------------------------------- */
body {
font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif;
font-size: 17px;
background-color: white;
color: #000;
margin: 0;
padding: 0;
}
div.document {
width: 940px;
margin: 30px auto 0 auto;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 220px;
}
div.sphinxsidebar {
width: 220px;
}
hr {
border: 1px solid #B1B4B6;
}
div.body {
background-color: #ffffff;
color: #3E4349;
padding: 0 30px 0 30px;
}
div.body > .section {
text-align: left;
}
div.footer {
width: 940px;
margin: 20px auto 30px auto;
font-size: 14px;
color: #888;
text-align: right;
}
div.footer a {
color: #888;
}
div.relations {
display: none;
}
div.sphinxsidebar a {
color: #444;
text-decoration: none;
border-bottom: 1px dotted #999;
}
div.sphinxsidebar a:hover {
border-bottom: 1px solid #999;
}
div.sphinxsidebar {
font-size: 14px;
line-height: 1.5;
}
div.sphinxsidebarwrapper {
padding: 18px 10px;
}
div.sphinxsidebarwrapper p.logo {
padding: 0;
margin: -10px 0 0 0px;
text-align: center;
}
div.sphinxsidebarwrapper h1.logo {
margin-top: -10px;
text-align: center;
margin-bottom: 5px;
text-align: center;
}
div.sphinxsidebarwrapper h1.logo-name {
margin-top: 0px;
}
div.sphinxsidebarwrapper p.blurb {
margin-top: 0;
font-style: normal;
}
div.sphinxsidebar h3,
div.sphinxsidebar h4 {
font-family: 'Garamond', 'Georgia', serif;
color: #444;
font-size: 24px;
font-weight: normal;
margin: 0 0 5px 0;
padding: 0;
}
div.sphinxsidebar h4 {
font-size: 20px;
}
div.sphinxsidebar h3 a {
color: #444;
}
div.sphinxsidebar p.logo a,
div.sphinxsidebar h3 a,
div.sphinxsidebar p.logo a:hover,
div.sphinxsidebar h3 a:hover {
border: none;
}
div.sphinxsidebar p {
color: #555;
margin: 10px 0;
}
div.sphinxsidebar ul {
margin: 10px 0;
padding: 0;
color: #000;
}
div.sphinxsidebar ul li.toctree-l1 > a {
font-size: 120%;
}
div.sphinxsidebar ul li.toctree-l2 > a {
font-size: 110%;
}
div.sphinxsidebar input {
border: 1px solid #CCC;
font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif;
font-size: 1em;
}
div.sphinxsidebar hr {
border: none;
height: 1px;
color: #AAA;
background: #AAA;
text-align: left;
margin-left: 0;
width: 50%;
}
/* -- body styles ----------------------------------------------------------- */
a {
color: #3782BE;
text-decoration: underline;
}
a:hover {
color: #3782BE;
text-decoration: underline;
}
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: 'Garamond', 'Georgia', serif;
font-weight: normal;
margin: 30px 0px 10px 0px;
padding: 0;
}
div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
div.body h2 { font-size: 180%; }
div.body h3 { font-size: 150%; }
div.body h4 { font-size: 130%; }
div.body h5 { font-size: 100%; }
div.body h6 { font-size: 100%; }
a.headerlink {
color: #DDD;
padding: 0 4px;
text-decoration: none;
}
a.headerlink:hover {
color: #444;
background: #EAEAEA;
}
div.body p, div.body dd, div.body li {
line-height: 1.4em;
}
div.admonition {
margin: 20px 0px;
padding: 10px 30px;
background-color: #FCC;
border: 1px solid #FAA;
}
div.admonition tt.xref, div.admonition a tt {
border-bottom: 1px solid #fafafa;
}
dd div.admonition {
margin-left: -60px;
padding-left: 60px;
}
div.admonition p.admonition-title {
font-family: 'Garamond', 'Georgia', serif;
font-weight: normal;
font-size: 24px;
margin: 0 0 10px 0;
padding: 0;
line-height: 1;
}
div.admonition p.last {
margin-bottom: 0;
}
div.highlight {
background-color: white;
}
dt:target, .highlight {
background: #FAF3E8;
}
div.note {
background-color: #EEE;
border: 1px solid #CCC;
}
div.seealso {
background-color: #EEE;
border: 1px solid #CCC;
}
div.topic {
background-color: #eee;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre, tt, code {
font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
font-size: 0.9em;
}
.hll {
background-color: #FFC;
margin: 0 -12px;
padding: 0 12px;
display: block;
}
img.screenshot {
}
tt.descname, tt.descclassname, code.descname, code.descclassname {
font-size: 0.95em;
}
tt.descname, code.descname {
padding-right: 0.08em;
}
img.screenshot {
-moz-box-shadow: 2px 2px 4px #eee;
-webkit-box-shadow: 2px 2px 4px #eee;
box-shadow: 2px 2px 4px #eee;
}
table.docutils {
border: 1px solid #888;
-moz-box-shadow: 2px 2px 4px #eee;
-webkit-box-shadow: 2px 2px 4px #eee;
box-shadow: 2px 2px 4px #eee;
}
table.docutils td, table.docutils th {
border: 1px solid #888;
padding: 0.25em 0.7em;
}
table.field-list, table.footnote {
border: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
table.footnote {
margin: 15px 0;
width: 100%;
border: 1px solid #EEE;
background: #FDFDFD;
font-size: 0.9em;
}
table.footnote + table.footnote {
margin-top: -15px;
border-top: none;
}
table.field-list th {
padding: 0 0.8em 0 0;
}
table.field-list td {
padding: 0;
}
table.field-list p {
margin-bottom: 0.8em;
}
table.footnote td.label {
width: 0px;
padding: 0.3em 0 0.3em 0.5em;
}
table.footnote td {
padding: 0.3em 0.5em;
}
dl {
margin: 0;
padding: 0;
}
dl dd {
margin-left: 30px;
}
blockquote {
margin: 0 0 0 30px;
padding: 0;
}
ul, ol {
margin: 10px 0 10px 30px;
padding: 0;
}
pre {
background: #EEE;
padding: 7px 30px;
margin: 15px 0px;
line-height: 1.3em;
}
dl pre, blockquote pre, li pre {
margin-left: 0;
padding-left: 30px;
}
dl dl pre {
margin-left: -90px;
padding-left: 90px;
}
tt, code {
background-color: #ecf0f3;
color: #222;
/* padding: 1px 2px; */
}
tt.xref, code.xref, a tt {
background-color: #FBFBFB;
border-bottom: 1px solid white;
}
a.reference {
text-decoration: none;
border-bottom: 1px dotted #3782BE;
}
a.reference:hover {
border-bottom: 1px solid #3782BE;
}
a.footnote-reference {
text-decoration: none;
font-size: 0.7em;
vertical-align: top;
border-bottom: 1px dotted #3782BE;
}
a.footnote-reference:hover {
border-bottom: 1px solid #3782BE;
}
a:hover tt, a:hover code {
background: #EEE;
}
@media screen and (max-width: 870px) {
div.sphinxsidebar {
display: none;
}
div.document {
width: 100%;
}
div.documentwrapper {
margin-left: 0;
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
}
div.bodywrapper {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
}
ul {
margin-left: 0;
}
.document {
width: auto;
}
.bodywrapper {
margin: 0;
}
.footer {
width: auto;
}
.github {
display: none;
}
}
@media screen and (max-width: 875px) {
body {
margin: 0;
padding: 20px 30px;
}
div.documentwrapper {
float: none;
background: white;
}
div.sphinxsidebar {
display: block;
float: none;
width: 102.5%;
margin: 50px -30px -20px -30px;
padding: 10px 20px;
background: #333;
color: #FFF;
}
div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
div.sphinxsidebar h3 a {
color: white;
}
div.sphinxsidebar a {
color: #AAA;
}
div.sphinxsidebar p.logo {
display: none;
}
div.document {
width: 100%;
margin: 0;
}
div.footer {
width: auto;
margin-top: 30px;
margin-bottom: 0;
text-align: center;
}
div.bodywrapper {
margin: 0;
}
div.body {
min-height: 0;
padding: 0;
}
.rtd_doc_footer {
display: none;
}
.document {
width: auto;
}
.footer {
width: auto;
}
.github {
display: none;
}
}
/* misc. */
.revsys-inline {
display: none!important;
}
/* Make nested-list/multi-paragraph items look better in Releases changelog
* pages. Without this, docutils' magical list fuckery causes inconsistent
* formatting between different release sub-lists.
*/
div#changelog > div.section > ul > li > p:only-child {
margin-bottom: 0;
}
/* Hide fugly table cell borders in ..bibliography:: directive output */
table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
border: none;
/* Below needed in some edge cases; if not applied, bottom shadows appear */
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}

+ 0
- 599
doc/themes/hugo-alabaster-theme/static/css/basic.css View File

@ -1,599 +0,0 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar #searchbox input[type="text"] {
width: 170px;
}
div.sphinxsidebar #searchbox input[type="submit"] {
width: 30px;
}
img {
border: 0;
max-width: 100%;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable {
width: 100%;
}
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable dl, table.indextable dd {
margin-top: 0;
margin-bottom: 0;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
/* -- general body styles --------------------------------------------------- */
a.headerlink {
visibility: hidden;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink,
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.field-list ul {
padding-left: 1em;
}
.first {
margin-top: 0 !important;
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px 7px 0 7px;
background-color: #ffe;
width: 40%;
float: right;
}
p.sidebar-title {
font-weight: bold;
}
/* -- topics ---------------------------------------------------------------- */
div.topic {
border: 1px solid #ccc;
padding: 7px 7px 0 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
div.admonition dl {
margin-bottom: 0;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
border: 0;
border-collapse: collapse;
}
table caption span.caption-number {
font-style: italic;
}
table caption span.caption-text {
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
table.field-list td, table.field-list th {
border: 0 !important;
}
table.footnote td, table.footnote th {
border: 0 !important;
}
th {
text-align: left;
padding-right: 5px;
}
table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}
table.citation td {
border-bottom: none;
}
/* -- figures --------------------------------------------------------------- */
div.figure {
margin: 0.5em;
padding: 0.5em;
}
div.figure p.caption {
padding: 0.3em;
}
div.figure p.caption span.caption-number {
font-style: italic;
}
div.figure p.caption span.caption-text {
}
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
list-style: decimal;
}
ol.loweralpha {
list-style: lower-alpha;
}
ol.upperalpha {
list-style: upper-alpha;
}
ol.lowerroman {
list-style: lower-roman;
}
ol.upperroman {
list-style: upper-roman;
}
dl {
margin-bottom: 15px;
}
dd p {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
dt:target, .highlighted {
background-color: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.optional {
font-size: 1.3em;
}
.sig-paren {
font-size: larger;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
.guilabel, .menuselection {
font-family: sans-serif;
}
.accelerator {
text-decoration: underline;
}
.classifier {
font-style: oblique;
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
td.linenos pre {
padding: 5px 0px;
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
margin-left: 0.5em;
}
table.highlighttable td {
padding: 0 0.5em 0 0.5em;
}
div.code-block-caption {
padding: 2px 5px;
font-size: small;
}
div.code-block-caption code {
background-color: transparent;
}
div.code-block-caption + div > div.highlight > pre {
margin-top: 0;
}
div.code-block-caption span.caption-number {
padding: 0.1em 0.3em;
font-style: italic;
}
div.code-block-caption span.caption-text {
}
div.literal-block-wrapper {
padding: 1em 1em 0;
}
div.literal-block-wrapper div.highlight {
margin: 0;
}
code.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
code.descclassname {
background-color: transparent;
}
code.xref, a code {
background-color: transparent;
font-weight: bold;
}
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
background-color: transparent;
}
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family: sans-serif;
}
div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

+ 505
- 0
doclicense.texi View File

@ -0,0 +1,505 @@
@c The GNU Free Documentation License.
@center Version 1.3, 3 November 2008
@c This file is intended to be included within another document,
@c hence no sectioning command or @node.
@display
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
@uref{https://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@end display
@enumerate 0
@item
PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document @dfn{free} in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of ``copyleft'', which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
@item
APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The ``Document'', below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as ``you''. You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A ``Modified Version'' of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A ``Secondary Section'' is a named appendix or a front-matter section
of the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall
subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in
part a textbook of mathematics, a Secondary Section may not explain
any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The ``Invariant Sections'' are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The ``Cover Texts'' are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.
A ``Transparent'' copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not ``Transparent'' is called ``Opaque''.
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, La@TeX{} input
format, SGML or XML using a publicly available
DTD, and standard-conforming simple HTML,
PostScript or PDF designed for human modification. Examples
of transparent image formats include PNG, XCF and
JPG@. Opaque formats include proprietary formats that can be
read and edited only by proprietary word processors, SGML or
XML for which the DTD and/or processing tools are
not generally available, and the machine-generated HTML,
PostScript or PDF produced by some word processors for
output purposes only.
The ``Title Page'' means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, ``Title Page'' means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
The ``publisher'' means any person or entity that distributes copies
of the Document to the public.
A section ``Entitled XYZ'' means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as ``Acknowledgements'',
``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
of such a section when you modify the Document means that it remains a
section ``Entitled XYZ'' according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
@item
VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
@item
COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
@item
MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
@enumerate A
@item
Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
@item
List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
@item
State on the Title page the name of the publisher of the
Modified Version, as the publisher.
@item
Preserve all the copyright notices of the Document.
@item
Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
@item
Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
@item
Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
@item
Include an unaltered copy of this License.
@item
Preserve the section Entitled ``History'', Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled ``History'' in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
@item
Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the ``History'' section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
@item
For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
the Title of the section, and preserve in the section all the
substance and tone of each of the contributor acknowledgements and/or
dedications given therein.
@item
Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
@item
Delete any section Entitled ``Endorsements''. Such a section
may not be included in the Modified Version.
@item
Do not retitle any existing section to be Entitled ``Endorsements'' or
to conflict in title with any Invariant Section.
@item
Preserve any Warranty Disclaimers.
@end enumerate
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled ``Endorsements'', provided it contains
nothing but endorsements of your Modified Version by various
parties---for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
@item
COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled ``History''
in the various original documents, forming one section Entitled
``History''; likewise combine any sections Entitled ``Acknowledgements'',
and any sections Entitled ``Dedications''. You must delete all
sections Entitled ``Endorsements.''
@item
COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
@item
AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an ``aggregate'' if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
@item
TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled ``Acknowledgements'',
``Dedications'', or ``History'', the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
@item
TERMINATION
You may not copy, modify, sublicense, or distribute the Document
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense, or distribute it is void, and
will automatically terminate your rights under this License.
However, if you cease all violation of this License, then your license
from a particular copyright holder is reinstated (a) provisionally,
unless and until the copyright holder explicitly and finally
terminates your license, and (b) permanently, if the copyright holder
fails to notify you of the violation by some reasonable means prior to
60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, receipt of a copy of some or all of the same material does
not give you any rights to use it.
@item
FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
@uref{https://www.gnu.org/licenses/}.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License ``or any later version'' applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation. If the Document
specifies that a proxy can decide which future versions of this
License can be used, that proxy's public statement of acceptance of a
version permanently authorizes you to choose that version for the
Document.
@item
RELICENSING
``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
World Wide Web server that publishes copyrightable works and also
provides prominent facilities for anybody to edit those works. A
public wiki that anybody can edit is an example of such a server. A
``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
site means any set of copyrightable works thus published on the MMC
site.
``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
license published by Creative Commons Corporation, a not-for-profit
corporation with a principal place of business in San Francisco,
California, as well as future copyleft versions of that license
published by that same organization.
``Incorporate'' means to publish or republish a Document, in whole or
in part, as part of another Document.
An MMC is ``eligible for relicensing'' if it is licensed under this
License, and if all works that were first published under this License
somewhere other than this MMC, and subsequently incorporated in whole
or in part into the MMC, (1) had no cover texts or invariant sections,
and (2) were thus incorporated prior to November 1, 2008.
The operator of an MMC Site may republish an MMC contained in the site
under CC-BY-SA on the same site at any time before August 1, 2009,
provided the MMC is eligible for relicensing.
@end enumerate
@page
@heading ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
@smallexample
@group
Copyright (C) @var{year} @var{your name}.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
@end group
@end smallexample
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the ``with@dots{}Texts.''@: line with this:
@smallexample
@group
with the Invariant Sections being @var{list their titles}, with
the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
being @var{list}.
@end group
@end smallexample
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.
@c Local Variables:
@c ispell-local-pdict: "ispell-dict"
@c End:

+ 19
- 0
docstyle.texi View File

@ -0,0 +1,19 @@
@c Emacs documentation style settings
@documentencoding UTF-8
@c These two require Texinfo 5.0 or later, so we use the older
@c equivalent @set variables supported in 4.11 and hence
@ignore
@codequotebacktick on
@codequoteundirected on
@end ignore
@set txicodequoteundirected
@set txicodequotebacktick
@iftex
@c It turns out TeX sometimes fails to hyphenate, so we help it here
@hyphenation{au-to-mat-i-cal-ly}
@hyphenation{spec-i-fied}
@hyphenation{work-a-round}
@hyphenation{work-a-rounds}
@hyphenation{un-marked}
@hyphenation{dic-tion-ary}
@end iftex

+ 42
- 29
use-package-bind-key.el View File

@ -1,37 +1,35 @@
;;; use-package-bind-key.el --- Support for the :bind/:bind-keymap keywords -*- lexical-binding: t; -*-
;; Copyright (C) 2012-2017 John Wiegley
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 17 Jun 2012
;; Modified: 4 Dec 2017
;; Version: 1.0
;; Package-Requires: ((emacs "24.3") (use-package "2.4") (bind-key "2.4"))
;; Keywords: dotemacs startup speed config package
;; 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.
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Provides support for the :bind, :bind*, :bind-keymap and :bind-keymap*
;; keywords. Note that these are currently still baked into
;; keywords. Note that these are currently still baked into
;; `use-package-keywords' and `use-package-deferring-keywords', although this
;; is harmless if they are never used.
;;
;; These keywords are made available by default by requiring `use-package'.
;;
;; See the `use-package' info manual for more information.
;;; Code:
@ -40,15 +38,14 @@
;;;###autoload
(defun use-package-autoload-keymap (keymap-symbol package override)
"Loads PACKAGE and then binds the key sequence used to invoke
this function to KEYMAP-SYMBOL. It then simulates pressing the
same key sequence a again, so that the next key pressed is routed
to the newly loaded keymap.
"Load PACKAGE and bind key sequence invoking this function to KEYMAP-SYMBOL.
Then simulate pressing the same key sequence a again, so that the
next key pressed is routed to the newly loaded keymap.
This function supports use-package's :bind-keymap keyword. It
This function supports use-package's :bind-keymap keyword. It
works by binding the given key sequence to an invocation of this
function for a particular keymap. The keymap is expected to be
defined by the package. In this way, loading the package is
function for a particular keymap. The keymap is expected to be
defined by the package. In this way, loading the package is
deferred until the prefix key sequence is pressed."
(if (not (require package nil t))
(use-package-error (format "Cannot load package.el: %s" package))
@ -72,8 +69,17 @@ deferred until the prefix key sequence is pressed."
(let ((arg args)
args*)
(while arg
(let ((x (car arg)))
(let ((x (car arg))
(y (cadr arg)))
(cond
;; (KEY DESC . COMMAND), i.e. (KEY . (DESC . COMMAND))
((and (or (stringp x)
(vectorp x))
(consp y)
(stringp (car y))
(or (use-package-recognize-function (cdr y) t #'stringp)))
(setq args* (nconc args* (list (cons x y))))
(setq arg (cddr arg)))
;; (KEY . COMMAND)
((and (consp x)
(or (stringp (car x))
@ -86,13 +92,20 @@ deferred until the prefix key sequence is pressed."
;; :prefix-docstring STRING
;; :prefix-map SYMBOL
;; :prefix STRING
;; :repeat-docstring STRING
;; :repeat-map SYMBOL
;; :filter SEXP
;; :menu-name STRING
;; :package SYMBOL
;; :continue and :exit are used within :repeat-map
((or (and (eq x :map) (symbolp (cadr arg)))
(and (eq x :prefix) (stringp (cadr arg)))
(and (eq x :prefix-map) (symbolp (cadr arg)))
(and (eq x :prefix-docstring) (stringp (cadr arg)))
(and (eq x :repeat-map) (symbolp (cadr arg)))
(eq x :continue)
(eq x :exit)
(and (eq x :repeat-docstring) (stringp (cadr arg)))
(eq x :filter)
(and (eq x :menu-name) (stringp (cadr arg)))
(and (eq x :package) (symbolp (cadr arg))))


+ 153
- 0
use-package-chords-tests.el View File

@ -0,0 +1,153 @@
;;; use-package-chords-tests.el --- Tests for use-package-chords.el -*- lexical-binding: t; -*-
;; 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/>.
;;; Code:
(require 'use-package)
(require 'use-package-tests)
(require 'use-package-chords)
(defmacro match-expansion (form &rest value)
`(should (pcase (expand-minimally ,form)
,@(mapcar #'(lambda (x) (list x t)) value))))
(defun use-package-test-normalize-chord (&rest args)
(apply #'use-package-normalize-binder 'foo :chords args))
(ert-deftest use-package-test-normalize/:chords-1 ()
(should (equal (use-package-test-normalize-chord
'(("C-a" . alpha)))
'(("C-a" . alpha)))))
(ert-deftest use-package-test-normalize/:chords-2 ()
(should (equal (use-package-test-normalize-chord
'(("C-a" . alpha)
:map foo-map
("C-b" . beta)))
'(("C-a" . alpha)
:map foo-map
("C-b" . beta)))))
(ert-deftest use-package-test-normalize/:chords-3 ()
(should (equal (use-package-test-normalize-chord
'(:map foo-map
("C-a" . alpha)
("C-b" . beta)))
'(:map foo-map
("C-a" . alpha)
("C-b" . beta)))))
(ert-deftest use-package-test/:chords-1 ()
(match-expansion
(use-package foo :chords ("C-k" . key1) ("C-u" . key2))
`(progn
(unless
(fboundp 'key1)
(autoload #'key1 "foo" nil t))
(unless
(fboundp 'key2)
(autoload #'key2 "foo" nil t))
(bind-chord "C-k" #'key1 nil)
(bind-chord "C-u" #'key2 nil))))
(ert-deftest use-package-test/:chords-2 ()
(match-expansion
(use-package foo :chords (("C-k" . key1) ("C-u" . key2)))
`(progn
(unless (fboundp 'key1)
(autoload #'key1 "foo" nil t))
(unless (fboundp 'key2)
(autoload #'key2 "foo" nil t))
(bind-chord "C-k" #'key1 nil)
(bind-chord "C-u" #'key2 nil))))
(ert-deftest use-package-test/:chords-3 ()
(match-expansion
(use-package foo :chords (:map my-map ("C-k" . key1) ("C-u" . key2)))
`(progn
(unless
(fboundp 'key1)
(autoload #'key1 "foo" nil t))
(unless
(fboundp 'key2)
(autoload #'key2 "foo" nil t))
(if
(boundp 'my-map)
(progn
(bind-chord "C-k" #'key1 my-map)
(bind-chord "C-u" #'key2 my-map))
(eval-after-load 'foo
'(progn
(bind-chord "C-k" #'key1 my-map)
(bind-chord "C-u" #'key2 my-map)))))))
(ert-deftest use-package-test/:chords-4 ()
(should-error
(match-expansion
(use-package foo :chords :map my-map ("C-k" . key1) ("C-u" . key2))
`(bind-chords :package foo))))
(ert-deftest use-package-test/:chords-5 ()
(match-expansion
(use-package foo :chords ("C-k" . key1) (:map my-map ("C-u" . key2)))
`(progn
(unless (fboundp 'key1)
(autoload #'key1 "foo" nil t))
(unless (fboundp 'key2)
(autoload #'key2 "foo" nil t))
(progn
(bind-chord "C-k" #'key1 nil)
(if
(boundp 'my-map)
(bind-chord "C-u" #'key2 my-map)
(eval-after-load 'foo
'(bind-chord "C-u" #'key2 my-map)))))))
(ert-deftest use-package-test/:chords-6 ()
(match-expansion
(use-package foo
:chords
("C-k" . key1)
(:map my-map ("C-u" . key2))
(:map my-map2 ("C-u" . key3)))
`(progn
(unless
(fboundp 'key1)
(autoload #'key1 "foo" nil t))
(unless
(fboundp 'key2)
(autoload #'key2 "foo" nil t))
(unless
(fboundp 'key3)
(autoload #'key3 "foo" nil t))
(progn
(bind-chord "C-k" #'key1 nil)
(if
(boundp 'my-map)
(bind-chord "C-u" #'key2 my-map)
(eval-after-load 'foo
'(bind-chord "C-u" #'key2 my-map)))
(if
(boundp 'my-map2)
(bind-chord "C-u" #'key3 my-map2)
(eval-after-load 'foo
'(bind-chord "C-u" #'key3 my-map2)))))))
;; Local Variables:
;; no-byte-compile: t
;; no-update-autoloads: t
;; End:
;;; use-package-chords-tests.el ends here

+ 17
- 7
use-package-chords.el View File

@ -1,22 +1,32 @@
;;; use-package-chords.el --- key-chord keyword for use-package -*- lexical-binding: t; -*-
;; Copyright (C) 2015-2017 Justin Talbott
;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
;; Author: Justin Talbott <justin@waymondo.com>
;; Keywords: convenience, tools, extensions
;; URL: https://github.com/waymondo/use-package-chords
;; Version: 0.2
;; URL: https://github.com/jwiegley/use-package
;; Version: 0.2.1
;; Package-Requires: ((use-package "2.1") (bind-key "1.0") (bind-chord "0.2") (key-chord "0.6"))
;; Filename: use-package-chords.el
;; License: GNU General Public License version 3, or (at your option) any later version
;;
;; 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:
;;
;; The `:chords' keyword allows you to define `key-chord' bindings for
;; `use-package' declarations in the same manner as the `:bind'
;; keyword.
;;
;;; Code:


+ 164
- 99
use-package-core.el View File

@ -1,41 +1,31 @@
;;; use-package-core.el --- A configuration macro for simplifying your .emacs -*- lexical-binding: t; -*-
;; Copyright (C) 2012-2017 John Wiegley
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 17 Jun 2012
;; Modified: 29 Nov 2017
;; Version: 2.4.1
;; Package-Requires: ((emacs "24.3"))
;; Keywords: dotemacs startup speed config package
;; 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.
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; The `use-package' declaration macro allows you to isolate package
;; configuration in your ".emacs" in a way that is performance-oriented and,
;; well, just tidy. I created it because I have over 80 packages that I use
;; in Emacs, and things were getting difficult to manage. Yet with this
;; utility my total load time is just under 1 second, with no loss of
;; functionality!
;; This file contains the core implementation of the `use-package'
;; macro.
;;
;; Please see README.md from the same repository for documentation.
;; See the `use-package' info manual for more information.
;;; Code:
@ -53,21 +43,30 @@
;; iterating over them to "disable all themes" won't disable it.
(setq custom-enabled-themes (remq 'use-package custom-enabled-themes))
(if (and (eq emacs-major-version 24) (eq emacs-minor-version 3))
(defsubst hash-table-keys (hash-table)
"Return a list of keys in HASH-TABLE."
(cl-loop for k being the hash-keys of hash-table collect k))
(eval-when-compile (require 'subr-x)))
(eval-when-compile
(if (and (eq emacs-major-version 24) (eq emacs-minor-version 3))
(progn
(defsubst hash-table-keys (hash-table)
"Return a list of keys in HASH-TABLE."
(cl-loop for k being the hash-keys of hash-table collect k))
(defsubst string-suffix-p (suffix string &optional ignore-case)
(let ((start-pos (- (length string) (length suffix))))
(and (>= start-pos 0)
(eq t (compare-strings suffix nil nil
string start-pos nil ignore-case))))))
(require 'subr-x)))
(eval-when-compile
(require 'regexp-opt))
(defgroup use-package nil
"A use-package declaration for simplifying your `.emacs'."
:group 'startup)
"A `use-package' declaration for simplifying your `.emacs'."
:group 'initialization
:link '(custom-manual "(use-package) Top")
:version "29.1")
(defconst use-package-version "2.4.1"
"This version of use-package.")
(defconst use-package-version "2.4.4"
"This version of `use-package'.")
(defcustom use-package-keywords
'(:disabled
@ -94,6 +93,7 @@
;; Any other keyword that also declares commands to be autoloaded (such as
;; :bind) must appear before this keyword.
:commands
:autoload
:init
:defer
:demand
@ -104,13 +104,13 @@
"The set of valid keywords, in the order they are processed in.
The order of this list is *very important*, so it is only
advisable to insert new keywords, never to delete or reorder
them. Further, attention should be paid to the NEWS.md if the
them. Further, attention should be paid to the NEWS.md if the
default order ever changes, as they may have subtle effects on
the semantics of use-package declarations and may necessitate
the semantics of `use-package' declarations and may necessitate
changing where you had inserted a new keyword earlier.
Note that `:disabled' is special in this list, as it causes
nothing at all to happen, even if the rest of the use-package
nothing at all to happen, even if the rest of the `use-package'
declaration is incorrect."
:type '(repeat symbol)
:group 'use-package)
@ -118,7 +118,8 @@ declaration is incorrect."
(defcustom use-package-deferring-keywords
'(:bind-keymap
:bind-keymap*
:commands)
:commands
:autoload)
"Unless `:demand' is used, keywords in this list imply deferred loading.
The reason keywords like `:hook' are not in this list is that
they only imply deferred loading if they reference actual
@ -129,9 +130,9 @@ otherwise requested."
:group 'use-package)
(defcustom use-package-ignore-unknown-keywords nil
"If non-nil, issue warning instead of error when unknown
keyword is encountered. The unknown keyword and its associated
arguments will be ignored in the `use-package' expansion."
"If non-nil, warn instead of signaling error for unknown keywords.
The unknown keyword and its associated arguments will be ignored
in the `use-package' expansion."
:type 'boolean
:group 'use-package)
@ -146,7 +147,7 @@ call)."
"Whether to report about loading and configuration details.
If you customize this, then you should require the `use-package'
feature in files that use `use-package', even if these files only
contain compiled expansions of the macros. If you don't do so,
contain compiled expansions of the macros. If you don't do so,
then the expanded macros do their job silently."
:type '(choice (const :tag "Quiet, without catching errors" errors)
(const :tag "Quiet" nil)
@ -193,9 +194,9 @@ Each entry in the alist is a list of three elements:
The first element is the `use-package' keyword.
The second is a form that can be evaluated to get the default
value. It can also be a function that will receive the name of
the use-package declaration and the keyword plist given to
`use-package', in normalized form. The value it returns should
value. It can also be a function that will receive the name of
the `use-package' declaration and the keyword plist given to
`use-package', in normalized form. The value it returns should
also be in normalized form (which is sometimes *not* what one
would normally write in a `use-package' declaration, so use
caution).
@ -203,9 +204,9 @@ caution).
The third element is a form that can be evaluated to determine
whether or not to assign a default value; if it evaluates to nil,
then the default value is not assigned even if the keyword is not
present in the `use-package' form. This third element may also be
present in the `use-package' form. This third element may also be
a function, in which case it receives the name of the package (as
a symbol) and a list of keywords (in normalized form). It should
a symbol) and a list of keywords (in normalized form). It should
return nil or non-nil depending on whether defaulting should be
attempted."
:type `(repeat
@ -290,7 +291,7 @@ This disables:
The main advantage to this variable is that, if you know your
configuration works, it will make the byte-compiled file as
minimal as possible. It can also help with reading macro-expanded
minimal as possible. It can also help with reading macro-expanded
definitions, to understand the main intent of what's happening."
:type 'boolean
:group 'use-package)
@ -302,7 +303,7 @@ definitions, to understand the main intent of what's happening."
"\\s-+\\("))
(or (bound-and-true-p lisp-mode-symbol-regexp)
"\\(?:\\sw\\|\\s_\\|\\\\.\\)+") "\\)")
"Sexp providing regexp for finding use-package forms in user files.
"Sexp providing regexp for finding `use-package' forms in user files.
This is used by `use-package-jump-to-package-form' and
`use-package-enable-imenu-support'."
:type 'sexp
@ -313,17 +314,18 @@ This is used by `use-package-jump-to-package-form' and
This is done by adjusting `lisp-imenu-generic-expression' to
include support for finding `use-package' and `require' forms.
Must be set before loading use-package."
Must be set before loading `use-package'."
:type 'boolean
:set
#'(lambda (_sym value)
#'(lambda (sym value)
(eval-after-load 'lisp-mode
(if value
`(add-to-list 'lisp-imenu-generic-expression
(list "Packages" ,use-package-form-regexp-eval 2))
`(setq lisp-imenu-generic-expression
(remove (list "Packages" ,use-package-form-regexp-eval 2)
lisp-imenu-generic-expression)))))
lisp-imenu-generic-expression))))
(set-default sym value))
:group 'use-package)
(defconst use-package-font-lock-keywords
@ -334,8 +336,8 @@ Must be set before loading use-package."
(font-lock-add-keywords 'emacs-lisp-mode use-package-font-lock-keywords)
(defcustom use-package-compute-statistics nil
"If non-nil, compute statistics concerned use-package declarations.
View the statistical report using `use-package-report'. Note that
"If non-nil, compute statistics concerned `use-package' declarations.
View the statistical report using `use-package-report'. Note that
if this option is enabled, you must require `use-package' in your
user init file at loadup time, or you will see errors concerning
undefined variables."
@ -361,14 +363,14 @@ undefined variables."
(and sym (symbolp sym)))
(defsubst use-package-as-symbol (string-or-symbol)
"If STRING-OR-SYMBOL is already a symbol, return it. Otherwise
convert it to a symbol and return that."
"If STRING-OR-SYMBOL is already a symbol, return it.
Otherwise convert it to a symbol and return that."
(if (symbolp string-or-symbol) string-or-symbol
(intern string-or-symbol)))
(defsubst use-package-as-string (string-or-symbol)
"If STRING-OR-SYMBOL is already a string, return it. Otherwise
convert it to a string and return that."
"If STRING-OR-SYMBOL is already a string, return it.
Otherwise convert it to a string and return that."
(if (stringp string-or-symbol) string-or-symbol
(symbol-name string-or-symbol)))
@ -734,8 +736,8 @@ one.
If AFTER is non-nil, insert KEYWORD either at the end of the
keywords list, or after the ANCHOR if one has been provided.
If TEST is non-nil, it is the test used to compare ELEM to list
elements. The default is `eq'.
The modified list is returned. The original list is not modified."
elements. The default is `eq'.
The modified list is returned. The original list is not modified."
(let (result)
(dolist (k xs)
(if (funcall (or test #'eq) k anchor)
@ -906,14 +908,14 @@ If RECURSED is non-nil, recurse into sublists."
"A predicate that recognizes functional constructions:
nil
sym
'sym
\\='sym
(quote sym)
#'sym
#\\='sym
(function sym)
(lambda () ...)
'(lambda () ...)
\\='(lambda () ...)
(quote (lambda () ...))
#'(lambda () ...)
#\\='(lambda () ...)
(function (lambda () ...))"
(or (if binding
(symbolp v)
@ -928,7 +930,7 @@ If RECURSED is non-nil, recurse into sublists."
(defun use-package-normalize-function (v)
"Reduce functional constructions to one of two normal forms:
sym
#'(lambda () ...)"
#\\='(lambda () ...)"
(cond ((symbolp v) v)
((and (listp v)
(memq (car v) '(quote function))
@ -961,10 +963,18 @@ If RECURSED is non-nil, recurse into sublists."
(defun use-package-autoloads-mode (_name _keyword args)
(mapcar
#'(lambda (x) (cons (cdr x) 'command))
#'(lambda (x)
(cond
((consp (cdr x))
(cons (cddr x) 'command))
((consp x)
(cons (cdr x) 'command))))
(cl-remove-if-not #'(lambda (x)
(and (consp x)
(use-package-non-nil-symbolp (cdr x))))
(or (and (consp x)
(use-package-non-nil-symbolp (cdr x)))
(and (consp x)
(consp (cdr x))
(use-package-non-nil-symbolp (cddr x)))))
args)))
(defun use-package-handle-mode (name alist args rest state)
@ -985,6 +995,8 @@ If RECURSED is non-nil, recurse into sublists."
;;
(defun use-package-reset-statistics ()
"Reset statistics for `use-package'.
See also `use-package-statistics'."
(interactive)
(setq use-package-statistics (make-hash-table)))
@ -998,11 +1010,10 @@ If RECURSED is non-nil, recurse into sublists."
(defun use-package-statistics-last-event (package)
"Return the date when PACKAGE's status last changed.
The date is returned as a string."
(format-time-string "%Y-%m-%d %a %H:%M"
(or (gethash :config package)
(gethash :init package)
(gethash :preface package)
(gethash :use-package package))))
(or (gethash :config package)
(gethash :init package)
(gethash :preface package)
(gethash :use-package package)))
(defun use-package-statistics-time (package)
"Return the time is took for PACKAGE to load."
@ -1022,11 +1033,13 @@ The information is formatted in a way suitable for
(vector
(symbol-name package)
(use-package-statistics-status statistics)
(use-package-statistics-last-event statistics)
(format-time-string
"%H:%M:%S.%6N"
(use-package-statistics-last-event statistics))
(format "%.2f" (use-package-statistics-time statistics))))))
(defun use-package-report ()
"Show current statistics gathered about use-package declarations.
"Show current statistics gathered about `use-package' declarations.
In the table that's generated, the status field has the following
meaning:
Configured :config has been processed (the package is loaded!)
@ -1042,15 +1055,43 @@ meaning:
(tabulated-list-print)
(display-buffer (current-buffer))))
(defvar use-package-statistics-status-order
'(("Declared" . 0)
("Prefaced" . 1)
("Initialized" . 2)
("Configured" . 3)))
(define-derived-mode use-package-statistics-mode tabulated-list-mode
"use-package statistics"
"Show current statistics gathered about use-package declarations."
"Show current statistics gathered about `use-package' declarations."
(setq tabulated-list-format
;; The sum of column width is 80 characters:
[("Package" 25 t)
("Status" 13 t)
("Last Event" 23 t)
("Time" 10 t)])
("Status" 13
(lambda (a b)
(< (assoc-default
(use-package-statistics-status
(gethash (car a) use-package-statistics))
use-package-statistics-status-order)
(assoc-default
(use-package-statistics-status
(gethash (car b) use-package-statistics))
use-package-statistics-status-order))))
("Last Event" 23
(lambda (a b)
(< (float-time
(use-package-statistics-last-event
(gethash (car a) use-package-statistics)))
(float-time
(use-package-statistics-last-event
(gethash (car b) use-package-statistics))))))
("Time" 10
(lambda (a b)
(< (use-package-statistics-time
(gethash (car a) use-package-statistics))
(use-package-statistics-time
(gethash (car b) use-package-statistics)))))])
(setq tabulated-list-sort-key '("Time" . t))
(tabulated-list-init-header))
(defun use-package-statistics-gather (keyword name after)
@ -1284,9 +1325,13 @@ meaning:
(concat (symbol-name sym)
use-package-hook-name-suffix)))
(function ,fun)))
(if (use-package-non-nil-symbolp syms) (list syms) syms)))))
(use-package-hook-handler-normalize-mode-symbols syms)))))
(use-package-normalize-commands args))))
(defun use-package-hook-handler-normalize-mode-symbols (syms)
"Ensure that `SYMS' turns into a list of modes."
(if (use-package-non-nil-symbolp syms) (list syms) syms))
;;;; :commands
(defalias 'use-package-normalize/:commands 'use-package-normalize-symlist)
@ -1309,6 +1354,28 @@ meaning:
(delete-dups arg)))
(use-package-process-keywords name rest state)))
;;;; :autoload
(defalias 'use-package-normalize/:autoload 'use-package-normalize/:commands)
(defun use-package-handler/:autoload (name _keyword arg rest state)
(use-package-concat
;; Since we deferring load, establish any necessary autoloads, and also
;; keep the byte-compiler happy.
(let ((name-string (use-package-as-string name)))
(cl-mapcan
#'(lambda (command)
(when (symbolp command)
(append
(unless (plist-get state :demand)
`((unless (fboundp ',command)
(autoload #',command ,name-string))))
(when (bound-and-true-p byte-compile-current-file)
`((eval-when-compile
(declare-function ,command ,name-string)))))))
(delete-dups arg)))
(use-package-process-keywords name rest state)))
;;;; :defer
(defalias 'use-package-normalize/:defer 'use-package-normalize-predicate)
@ -1439,7 +1506,7 @@ no keyword implies `:all'."
(defun use-package-normalize/:custom-face (name-symbol _keyword arg)
"Normalize use-package custom-face keyword."
(let ((error-msg
(format "%s wants a (<symbol> <face-spec>) or list of these"
(format "%s wants a (<symbol> <face-spec> [spec-type]) or list of these"
name-symbol)))
(unless (listp arg)
(use-package-error error-msg))
@ -1450,13 +1517,13 @@ no keyword implies `:all'."
(spec (nth 1 def)))
(when (or (not face)
(not spec)
(> (length def) 2))
(> (length def) 3))
(use-package-error error-msg))))))
(defun use-package-handler/:custom-face (name _keyword args rest state)
"Generate use-package custom-face keyword code."
(use-package-concat
(mapcar #'(lambda (def) `(custom-set-faces (backquote ,def))) args)
(mapcar #'(lambda (def) `(apply #'face-spec-set (backquote ,def))) args)
(use-package-process-keywords name rest state)))
;;;; :init
@ -1547,8 +1614,8 @@ no keyword implies `:all'."
(defmacro use-package (name &rest args)
"Declare an Emacs package by specifying a group of configuration options.
For full documentation, please see the README file that came with
this file. Usage:
For the full documentation, see Info node `(use-package) top'.
Usage:
(use-package package-name
[:keyword [option]]...)
@ -1570,6 +1637,7 @@ this file. Usage:
package. This is useful if the package is being lazily
loaded, and you wish to conditionally call functions in your
`:init' block that are defined in the package.
:autoload Similar to :commands, but it for no-interactive one.
:hook Specify hook(s) to attach this package to.
:bind Bind keys, and define autoloads for the bound commands.
@ -1584,12 +1652,15 @@ this file. Usage:
`:magic-fallback', or `:interpreter'. This can be an integer,
to force loading after N seconds of idle time, if the package
has not already been loaded.
:after Delay the use-package declaration until after the named modules
have loaded. Once load, it will be as though the use-package
declaration (without `:after') had been seen at that moment.
:demand Prevent the automatic deferred loading introduced by constructs
such as `:bind' (see `:defer' for the complete list).
:after Delay the effect of the use-package declaration
until after the named libraries have loaded.
Before they have been loaded, no other keyword
has any effect at all, and once they have been
loaded it is as if `:after' was not specified.
:if EXPR Initialize and load only if EXPR evaluates to a non-nil value.
:disabled The package is ignored completely if this keyword is present.
:defines Declare certain variables to silence the byte-compiler.
@ -1597,13 +1668,13 @@ this file. Usage:
:load-path Add to the `load-path' before attempting to load the package.
:diminish Support for diminish.el (if installed).
:delight Support for delight.el (if installed).
:custom Call `custom-set' or `set-default' with each variable
:custom Call `Custom-set' or `set-default' with each variable
definition without modifying the Emacs `custom-file'.
(compare with `custom-set-variables').
:custom-face Call `customize-set-faces' with each face definition.
:custom-face Call `custom-set-faces' with each face definition.
:ensure Loads the package using package.el if necessary.
:pin Pin the package to an archive."
(declare (indent 1))
(declare (indent defun))
(unless (memq :disabled args)
(macroexp-progn
(use-package-concat
@ -1622,12 +1693,6 @@ this file. Usage:
(when use-package-compute-statistics
`((use-package-statistics-gather :use-package ',name t)))))))
(put 'use-package 'lisp-indent-function 'defun)
(provide 'use-package-core)
;; Local Variables:
;; indent-tabs-mode: nil
;; End:
;;; use-package-core.el ends here

+ 19
- 22
use-package-delight.el View File

@ -1,35 +1,32 @@
;;; use-package-delight.el --- Support for the :delight keyword -*- lexical-binding: t; -*-
;; Copyright (C) 2012-2017 John Wiegley
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 17 Jun 2012
;; Modified: 3 Dec 2017
;; Version: 1.0
;; Package-Requires: ((emacs "24.3") (use-package "2.4"))
;; Keywords: dotemacs startup speed config package
;; 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.
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Provides support for the :delight keyword, which is made available by
;; default by requiring `use-package'.
;; Provides support for the :delight keyword, which is made available
;; by default by requiring `use-package'. Using it requires the
;; `delight' package to be installed (available on GNU ELPA).
;;
;; See the `use-package' info manual for more information.
;;; Code:


+ 19
- 22
use-package-diminish.el View File

@ -1,35 +1,32 @@
;;; use-package-diminish.el --- Support for the :diminish keyword -*- lexical-binding: t; -*-
;; Copyright (C) 2012-2017 John Wiegley
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 17 Jun 2012
;; Modified: 3 Dec 2017
;; Version: 1.0
;; Package-Requires: ((emacs "24.3") (use-package "2.4"))
;; Keywords: dotemacs startup speed config package
;; 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.
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Provides support for the :diminish keyword, which is made available by
;; default by requiring `use-package'.
;; Provides support for the :diminish keyword, which is made available
;; by default by requiring `use-package'. Using it requires the
;; `diminish' package to be installed (available on GNU ELPA).
;;
;; See the `use-package' info manual for more information.
;;; Code:


+ 37
- 10
use-package-ensure-system-package.el View File

@ -1,6 +1,6 @@
;;; use-package-ensure-system-package.el --- auto install system packages -*- lexical-binding: t; -*-
;; Copyright (C) 2017 Justin Talbott
;; Copyright (C) 2022 Free Software Foundation, Inc.
;; Author: Justin Talbott <justin@waymondo.com>
;; Keywords: convenience, tools, extensions
@ -8,14 +8,30 @@
;; Version: 0.2
;; Package-Requires: ((use-package "2.1") (system-packages "1.0.4"))
;; Filename: use-package-ensure-system-package.el
;; License: GNU General Public License version 3, or (at your option) any later version
;;
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;
;; The `:ensure-system-package` keyword allows you to ensure system
;; binaries exist alongside your `use-package` declarations.
;; binaries exist alongside your `use-package` declarations. Using it
;; requires the `system-packages' package to be installed (available
;; on GNU ELPA).
;;
;; See the `use-package' info manual for more information.
;;; Code:
@ -25,9 +41,11 @@
(eval-when-compile
(declare-function system-packages-get-command "system-packages"))
(defvar use-package-ensure-system-package--custom-packages '()
"List of commands used to install custom packages.")
(defun use-package-ensure-system-package-consify (arg)
"Turn `arg' into a cons of (`package-name' . `install-command')."
"Turn ARG into a cons of the form (PACKAGE-NAME . INSTALL-COMMAND')."
(cond
((stringp arg)
(cons arg `(system-packages-install ,arg)))
@ -38,15 +56,24 @@
((not (cdr arg))
(use-package-ensure-system-package-consify (car arg)))
((stringp (cdr arg))
(cons (car arg) `(async-shell-command ,(cdr arg))))
(progn
(push (cdr arg) use-package-ensure-system-package--custom-packages)
(cons (car arg) `(async-shell-command ,(cdr arg)))))
(t
(cons (car arg)
`(system-packages-install ,(symbol-name (cdr arg)))))))))
(defun use-package-ensure-system-package-update-custom-packages ()
"Update custom packages (not installed by system package manager).
Run the same commands used for installing them."
(interactive)
(dolist (cmd use-package-ensure-system-package--custom-packages)
(async-shell-command cmd)))
;;;###autoload
(defun use-package-normalize/:ensure-system-package (_name-symbol keyword args)
"Turn `arg' into a list of cons-es of (`package-name' . `install-command')."
(use-package-only-one (symbol-name keyword) args
"Turn ARGS into a list of conses of the form (PACKAGE-NAME . INSTALL-COMMAND)."
(use-package-as-one (symbol-name keyword) args
(lambda (_label arg)
(cond
((and (listp arg) (listp (cdr arg)))
@ -55,7 +82,7 @@
(list (use-package-ensure-system-package-consify arg)))))))
(defun use-package-ensure-system-package-exists? (file-or-exe)
"If variable is a string, ensure the file path exists.
"If FILE-OR-EXE is a string, ensure the file path exists.
If it is a symbol, ensure the binary exist."
(if (stringp file-or-exe)
(file-exists-p file-or-exe)


+ 25
- 27
use-package-ensure.el View File

@ -1,35 +1,31 @@
;;; use-package-ensure.el --- Support for the :ensure and :pin keywords -*- lexical-binding: t; -*-
;; Copyright (C) 2012-2017 John Wiegley
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 17 Jun 2012
;; Modified: 3 Dec 2017
;; Version: 1.0
;; Package-Requires: ((emacs "24.3") (use-package "2.4"))
;; Keywords: dotemacs startup speed config package
;; 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.
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Provides support for the :ensure and :pin keywords, which is made available
;; by default by requiring `use-package'.
;; Provides support for the :ensure and :pin keywords, which are made
;; available by default by requiring `use-package'.
;;
;; See the `use-package' info manual for more information.
;;; Code:
@ -37,8 +33,10 @@
(require 'use-package-core)
(defgroup use-package-ensure nil
"Support for :ensure and :pin keywords in use-package declarations."
:group 'use-package)
"Support for :ensure and :pin keywords in `use-package' declarations."
:group 'use-package
:link '(custom-manual "(use-package) Installing packages")
:version "29.1")
(eval-when-compile
(declare-function package-installed-p "package")
@ -64,7 +62,7 @@ to all `:ensure' keywords (always a list, even if only one); and
the current `state' plist created by previous handlers.
Note that this function is called whenever `:ensure' is provided,
even if it is nil. It is up to the function to decide on the
even if it is nil. It is up to the function to decide on the
semantics of the various values for `:ensure'.
This function should return non-nil if the package is installed.
@ -93,7 +91,7 @@ The default value uses package.el to install the package."
(defun use-package-archive-exists-p (archive)
"Check if a given ARCHIVE is enabled.
ARCHIVE can be a string or a symbol or 'manual to indicate a
ARCHIVE can be a string or a symbol or `manual' to indicate a
manually updated package."
(if (member archive '(manual "manual"))
't
@ -111,7 +109,7 @@ manually updated package."
(archive-name (if (stringp archive) archive (symbol-name archive))))
(if (use-package-archive-exists-p archive-symbol)
(add-to-list 'package-pinned-packages (cons package archive-name))
(error "Archive '%s' requested for package '%s' is not available."
(error "Archive '%s' requested for package '%s' is not available"
archive-name package))
(unless (bound-and-true-p package--initialized)
(package-initialize t))))


+ 21
- 26
use-package-jump.el View File

@ -1,37 +1,33 @@
;;; use-package-jump.el --- Attempt to jump to a use-package declaration -*- lexical-binding: t; -*-
;; Copyright (C) 2012-2017 John Wiegley
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 17 Jun 2012
;; Modified: 3 Dec 2017
;; Version: 1.0
;; Package-Requires: ((emacs "24.3") (use-package "2.4"))
;; Keywords: dotemacs startup speed config package
;; 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 file is part of GNU Emacs.
;; 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.
;; GNU Emacs 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.
;; GNU Emacs 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.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Provides the command `M-x use-package-jump-to-package-form', however it
;; Provides the command `M-x use-package-jump-to-package-form'. However, it
;; only works if the package being jumped to was required during
;; initialization. If it was delay-loaded, it will not work. Improvements are
;; needed.
;; initialization. If it was autoloaded, it will not work.
;; Improvements are needed.
;;
;; See the `use-package' info manual for more information.
;;; Code:
@ -48,11 +44,10 @@ Returns an absolute file path or nil if none is found."
;;;###autoload
(defun use-package-jump-to-package-form (package)
"Attempt to find and jump to the `use-package' form that loaded
PACKAGE. This will only find the form if that form actually
required PACKAGE. If PACKAGE was previously required then this
function will jump to the file that originally required PACKAGE
instead."
"Attempt to find and jump to the `use-package' form that loaded PACKAGE.
This will only find the form if that form actually required
PACKAGE. If PACKAGE was previously required then this function
will jump to the file that originally required PACKAGE instead."
(interactive (list (completing-read "Package: " features)))
(let* ((package (if (stringp package) (intern package) package))
(requiring-file (use-package-find-require package))


+ 17
- 21
use-package-lint.el View File

@ -1,34 +1,30 @@
;;; use-package-lint.el --- Attempt to find errors in use-package declarations -*- lexical-binding: t; -*-
;; Copyright (C) 2012-2017 John Wiegley
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 17 Jun 2012
;; Modified: 3 Dec 2017
;; Version: 1.0
;; Package-Requires: ((emacs "24.3") (use-package "2.4"))
;; Keywords: dotemacs startup speed config package
;; 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.
;; This file is part of GNU Emacs.
;; GNU Emacs 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.
;; GNU Emacs 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.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Provides the command `M-x use-package-lint'.
;;
;; See the `use-package' info manual for more information.
;;; Code:
@ -63,7 +59,7 @@
;;;###autoload
(defun use-package-lint ()
"Check for errors in use-package declarations.
"Check for errors in `use-package' declarations.
For example, if the module's `:if' condition is met, but even
with the specified `:load-path' the module cannot be found."
(interactive)


+ 67
- 87
use-package-tests.el View File

@ -1,28 +1,25 @@
;;; use-package-tests.el --- Tests for use-package.el -*- lexical-binding: t; -*-
;; 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.
;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
;; 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.
;; This file is part of GNU Emacs.
;; 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:
;; GNU Emacs 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.
;; GNU Emacs 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. If not, see <https://www.gnu.org/licenses/>.
;;; Code:
(require 'cl)
(require 'cl-lib)
(require 'ert)
(require 'use-package)
@ -99,20 +96,6 @@
(bind-key "C-c C-u" #'fix-expansion emacs-lisp-mode-map)
(eval-when-compile
(defun plist-delete (plist property)
"Delete PROPERTY from PLIST"
(let (p)
(while plist
(if (not (eq property (car plist)))
(setq p (plist-put p (car plist) (nth 1 plist))))
(setq plist (cddr plist)))
p))
;; `cl-flet' does not work for some of the mocking we do below, while `flet'
;; always does.
(setplist 'flet (plist-delete (symbol-plist 'flet) 'byte-obsolete-info)))
(ert-deftest use-package-test-recognize-function ()
(should (use-package-recognize-function nil t))
(should-not (use-package-recognize-function nil))
@ -232,9 +215,9 @@
(require 'foo nil nil))))
(ert-deftest use-package-test-normalize/:ensure ()
(flet ((norm (&rest args)
(apply #'use-package-normalize/:ensure
'foopkg :ensure args)))
(cl-flet ((norm (&rest args)
(apply #'use-package-normalize/:ensure
'foopkg :ensure args)))
(should (equal (norm '(t)) '(t)))
(should (equal (norm '(nil)) '(nil)))
(should (equal (norm '(sym)) '(sym)))
@ -333,11 +316,11 @@
(ert-deftest use-package-test/:ensure-11 ()
(let (tried-to-install)
(flet ((use-package-ensure-elpa
(name ensure state &optional no-refresh)
(when ensure
(setq tried-to-install name)))
(require (&rest ignore)))
(cl-letf (((symbol-function #'use-package-ensure-elpa)
(lambda (name ensure state &optional no-refresh)
(when ensure
(setq tried-to-install name))))
((symbol-function #'require) #'ignore))
(use-package foo :ensure t)
(should (eq tried-to-install 'foo)))))
@ -592,7 +575,7 @@
(ert-deftest use-package-test/:bind-1 ()
(match-expansion
(use-package foo :bind ("C-k" . key1) ("C-u" . key2))
(use-package foo :bind ("C-k" . key1) ("C-u" ("Key 2" . key2)))
`(progn
(unless
(fboundp 'key1)
@ -602,11 +585,11 @@
(autoload #'key2 "foo" nil t))
(bind-keys :package foo
("C-k" . key1)
("C-u" . key2)))))
("C-u" "Key 2" . key2)))))
(ert-deftest use-package-test/:bind-2 ()
(match-expansion
(use-package foo :bind (("C-k" . key1) ("C-u" . key2)))
(use-package foo :bind (("C-k" . key1) ("C-u" ("Key 2" . key2))))
`(progn
(unless (fboundp 'key1)
(autoload #'key1 "foo" nil t))
@ -614,7 +597,7 @@
(autoload #'key2 "foo" nil t))
(bind-keys :package foo
("C-k" . key1)
("C-u" . key2)))))
("C-u" "Key 2" . key2)))))
(ert-deftest use-package-test/:bind-3 ()
(match-expansion
@ -737,9 +720,9 @@
(add-to-list 'interpreter-mode-alist '("interp" . fun)))))
(ert-deftest use-package-test-normalize/:mode ()
(flet ((norm (&rest args)
(apply #'use-package-normalize/:mode
'foopkg :mode args)))
(cl-flet ((norm (&rest args)
(apply #'use-package-normalize/:mode
'foopkg :mode args)))
(should (equal (norm '(".foo"))
'((".foo" . foopkg))))
(should (equal (norm '(".foo" ".bar"))
@ -889,6 +872,12 @@
(gnus-harvest-install))
t))))
(ert-deftest use-package-test/:autoload-1 ()
(match-expansion
(use-package foo :autoload bar)
`(unless (fboundp 'bar)
(autoload #'bar "foo"))))
(ert-deftest use-package-test/:defines-1 ()
(match-expansion
(use-package foo :defines bar)
@ -993,12 +982,14 @@
(load "foo" nil t))))))))
(ert-deftest use-package-test-normalize/:hook ()
(flet ((norm (&rest args)
(apply #'use-package-normalize/:hook
'foopkg :hook args)))
(cl-flet ((norm (&rest args)
(apply #'use-package-normalize/:hook
'foopkg :hook args)))
(should-error (norm nil))
(should (equal (norm '(bar))
'((bar . foopkg))))
(should (equal (norm '((bar . foopkg)))
'((bar . foopkg))))
(should (equal (norm '((bar . baz)))
'((bar . baz))))
(should (equal (norm '(((bar baz) . quux)))
@ -1117,9 +1108,9 @@
(add-hook 'emacs-lisp-mode-hook #'(lambda nil (function))))))))
(ert-deftest use-package-test-normalize/:custom ()
(flet ((norm (&rest args)
(apply #'use-package-normalize/:custom
'foopkg :custom args)))
(cl-flet ((norm (&rest args)
(apply #'use-package-normalize/:custom
'foopkg :custom args)))
(should-error (norm nil))
(should-error (norm '(bar)))
;; (should-error (norm '((foo bar baz quux))))
@ -1162,7 +1153,27 @@
(match-expansion
(use-package foo :custom-face (foo ((t (:background "#e4edfc")))))
`(progn
(custom-set-faces (backquote (foo ((t (:background "#e4edfc"))))))
(apply #'face-spec-set (backquote (foo ((t (:background "#e4edfc"))))))
(require 'foo nil nil))))
(ert-deftest use-package-test/:custom-face-2 ()
(match-expansion
(use-package example
:custom-face
(example-1-face ((t (:foreground "LightPink"))))
(example-2-face ((t (:foreground "LightGreen")))))
`(progn
(apply #'face-spec-set
(backquote (example-1-face ((t (:foreground "LightPink"))))))
(apply #'face-spec-set
(backquote (example-2-face ((t (:foreground "LightGreen"))))))
(require 'example nil nil))))
(ert-deftest use-package-test/:custom-face-3 ()
(match-expansion
(use-package foo :custom-face (foo ((t (:background "#e4edfc"))) face-defspec-spec))
`(progn
(apply #'face-spec-set (backquote (foo ((t (:background "#e4edfc"))) face-defspec-spec)))
(require 'foo nil nil))))
(ert-deftest use-package-test/:init-1 ()
@ -1496,37 +1507,6 @@
(config)
t))))))
(ert-deftest use-package-test/pre-post-hooks-with-:config ()
(let ((use-package-inject-hooks t))
(match-expansion
(use-package foo :config (config))
`(progn
(when
(run-hook-with-args-until-failure 'use-package--foo--pre-init-hook)
(run-hooks 'use-package--foo--post-init-hook))
(require 'foo nil nil)
(when
(run-hook-with-args-until-failure 'use-package--foo--pre-config-hook)
(config)
(run-hooks 'use-package--foo--post-config-hook))
t))))
(ert-deftest use-package-test/pre-post-hooks-without-:config ()
;; https://github.com/jwiegley/use-package/issues/785
(let ((use-package-inject-hooks t))
(match-expansion
(use-package foo)
`(progn
(when
(run-hook-with-args-until-failure 'use-package--foo--pre-init-hook)
(run-hooks 'use-package--foo--post-init-hook))
(require 'foo nil nil)
(when
(run-hook-with-args-until-failure 'use-package--foo--pre-config-hook)
t
(run-hooks 'use-package--foo--post-config-hook))
t))))
(ert-deftest use-package-test-normalize/:diminish ()
(should (equal (use-package-normalize-diminish 'foopkg :diminish nil)
'(foopkg-mode)))
@ -1818,7 +1798,7 @@
`(bind-key "C-c C-r" #'org-ref-helm-insert-cite-link override-global-map nil)))
(ert-deftest use-package-test/560 ()
(flet ((executable-find (name)))
(cl-letf (((symbol-function #'executable-find) #'ignore))
(let (notmuch-command)
(match-expansion
(use-package notmuch
@ -1929,7 +1909,8 @@
(use-package-expand-minimally t)
debug-on-error
warnings)
(flet ((display-warning (_ msg _) (push msg warnings)))
(cl-letf (((symbol-function #'display-warning)
(lambda (_ msg _) (push msg warnings))))
(progn
(macroexpand-1
'(use-package ediff :defer t (setq my-var t)))
@ -1971,7 +1952,6 @@
(should (eq (nth 2 binding) nil))))
;; Local Variables:
;; indent-tabs-mode: nil
;; no-byte-compile: t
;; no-update-autoloads: t
;; End:


+ 20
- 21
use-package.el View File

@ -1,41 +1,40 @@
;;; use-package.el --- A configuration macro for simplifying your .emacs -*- lexical-binding: t; -*-
;; Copyright (C) 2012-2017 John Wiegley
;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@newartisans.com>
;; Maintainer: John Wiegley <johnw@newartisans.com>
;; Created: 17 Jun 2012
;; Modified: 29 Nov 2017
;; Version: 2.4.1
;; Version: 2.4.4
;; Package-Requires: ((emacs "24.3") (bind-key "2.4"))
;; Keywords: dotemacs startup speed config package
;; Keywords: dotemacs startup speed config package extensions
;; 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 file is part of GNU Emacs.
;; 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.
;; GNU Emacs 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.
;; GNU Emacs 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.
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; The `use-package' declaration macro allows you to isolate package
;; configuration in your ".emacs" in a way that is performance-oriented and,
;; well, just tidy. I created it because I have over 80 packages that I use
;; in Emacs, and things were getting difficult to manage. Yet with this
;; utility my total load time is just under 1 second, with no loss of
;; functionality!
;; configuration in your init file in a way that is
;; performance-oriented and, well, just tidy. I created it because I
;; have over 80 packages that I use in Emacs, and things were getting
;; difficult to manage. Yet with this utility my total load time is
;; just under 1 second, with no loss of functionality!
;;
;; Please see README.md from the same repository for documentation.
;; See the `use-package' info manual for more information.
;;; Code:


+ 0
- 941
use-package.org View File

@ -1,941 +0,0 @@
#+TITLE: use-package User Manual
#+AUTHOR: John Wiegley
#+EMAIL: johnw@newartisans.com
#+DATE: 2012-2017
#+LANGUAGE: en
#+HUGO_BASE_DIR: ./doc
#+HUGO_SECTION: /
#+HUGO_MENU: :menu main
#+TEXINFO_DIR_CATEGORY: Emacs
#+TEXINFO_DIR_TITLE: use-package: (use-package).
#+TEXINFO_DIR_DESC: Declarative package configuration for Emacs.
#+SUBTITLE: for version 2.4.1
#+TEXINFO_DEFFN: t
#+OPTIONS: H:4 num:3 toc:2 creator:t
# Below macro is used so that both texinfo and hugo exports work
# harmoniously. For texinfo exports, the export is done using the
# scope of the whole file, so it can resolve all internal link
# references. Whereas for hugo exports, they are done only from the
# scope of a subtree (or a page of the doc site), so at the moment it
# doesn't auto-resolve Org internal links outside that scope.
# FIXME: This is just a workaround.. hope to get a better solution in
# the future.
#+MACRO: link-jump @@texinfo:@ref{$1}@@@@hugo:[$1]($2)@@
use-package is...
#+BEGIN_QUOTE
Copyright (C) 2012-2017 John Wiegley <johnw@newartisans.com>
You can redistribute this document 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 document 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.
#+END_QUOTE
* Introduction
:PROPERTIES:
:EXPORT_FILE_NAME: _index
:EXPORT_HUGO_TYPE: homepage
:END:
The ~use-package~ macro allows you to isolate package configuration in your
~.emacs~ file in a way that is both performance-oriented and, well, tidy. I
created it because I have over 80 packages that I use in Emacs, and things
were getting difficult to manage. Yet with this utility my total load time is
around 2 seconds, with no loss of functionality!
More text to come...
* Installation
:PROPERTIES:
:EXPORT_FILE_NAME: installation
:END:
** _ :ignore:
use-package can be installed using Emacs' package manager or manually from
its development repository.
** Installing from an Elpa Archive
use-package is available from Melpa and Melpa-Stable. If you haven't used
Emacs' package manager before, then it is high time you familiarize yourself
with it by reading the documentation in the Emacs manual, see
[[info:emacs#Packages]]. Then add one of the archives to ~package-archives~:
- To use Melpa:
#+BEGIN_SRC emacs-lisp
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
#+END_SRC
- To use Melpa-Stable:
#+BEGIN_SRC emacs-lisp
(require 'package)
(add-to-list 'package-archives
'("melpa-stable" . "https://stable.melpa.org/packages/") t)
#+END_SRC
Once you have added your preferred archive, you need to update the
local package list using:
#+BEGIN_EXAMPLE
M-x package-refresh-contents RET
#+END_EXAMPLE
Once you have done that, you can install use-package and its dependencies
using:
#+BEGIN_EXAMPLE
M-x package-install RET use-package RET
#+END_EXAMPLE
Now see [[*Post-Installation Tasks]].
** Installing from the Git Repository
First, use Git to clone the use-package repository:
#+BEGIN_SRC shell-script
$ git clone https://github.com/jwiegley/use-package.git ~/.emacs.d/site-lisp/use-package
$ cd ~/.emacs.d/site-lisp/use-package
#+END_SRC
Then compile the libraries and generate the info manuals:
#+BEGIN_SRC shell-script
$ make
#+END_SRC
You may need to create ~/path/to/use-package/config.mk~ with the following
content before running ~make~:
#+BEGIN_SRC makefile
LOAD_PATH = -L /path/to/use-package
#+END_SRC
Finally add this to your init file:
#+BEGIN_SRC emacs-lisp
(add-to-list 'load-path "~/.emacs.d/site-lisp/use-package")
(require 'use-package)
(with-eval-after-load 'info
(info-initialize)
(add-to-list 'Info-directory-list
"~/.emacs.d/site-lisp/use-package/"))
#+END_SRC
Note that elements of ~load-path~ should not end with a slash, while those of
~Info-directory-list~ should.
Instead of running use-package directly from the repository by adding it to
the ~load-path~, you might want to instead install it in some other directory
using ~sudo make install~ and setting ~load-path~ accordingly.
To update use-package use:
#+BEGIN_SRC shell-script
$ git pull
$ make
#+END_SRC
At times it might be necessary to run ~make clean all~ instead.
To view all available targets use ~make help~.
Now see [[*Post-Installation Tasks]].
** Post-Installation Tasks
After installing use-package you should verify that you are indeed using the
use-package release you think you are using. It's best to restart Emacs before
doing so, to make sure you are not using an outdated value for ~load-path~.
#+BEGIN_EXAMPLE
C-h v use-package-version RET
#+END_EXAMPLE
should display something like
#+BEGIN_EXAMPLE
use-package-version’s value is "2.4.1"
#+END_EXAMPLE
If you are completely new to use-package then see {{{link-jump(Getting
Started,/getting-started)}}}.
If you run into problems, then please see the
{{{link-jump(FAQ,/faq)}}}. Also see the {{{link-jump(Debugging
Tools,/debugging-tools)}}}.
* Getting Started
:PROPERTIES:
:EXPORT_FILE_NAME: getting-started
:END:
TODO. For now, see ~README.md~.
* Basic Concepts
~use-package~ was created for few basic reasons, each of which drove the
design in various ways. Understanding these reasons may help make some of
those decisions clearer:
1. To gather all configuration details of a package into one place, making
it easier to copy, disable, or move it elsewhere in the init file.
2. To reduce duplication and boilerplate, capturing several common practices
as mere keywords both easy and intuitive to use.
3. To make startup time of Emacs as quick as possible, without sacrificing
the quantity of add-on packages used.
4. To make it so errors encountered during startup disable only the package
raising the error, and as little else as possible, leaving a close to a
functional Emacs as possible.
5. To allow byte-compilation of one's init file so that any warnings or
errors seen are meaningful. In this way, even if byte-compilation is not
used for speed (reason 3), it can still be used as a sanity check.
* Issues/Requests
:PROPERTIES:
:EXPORT_HUGO_SECTION: issues
:EXPORT_FILE_NAME: _index
:END:
* Keywords
:PROPERTIES:
:EXPORT_FILE_NAME: keywords
:END:
** ~:after~
Sometimes it only makes sense to configure a package after another has been
loaded, because certain variables or functions are not in scope until that
time. This can achieved using an ~:after~ keyword that allows a fairly rich
description of the exact conditions when loading should occur. Here is an
example:
#+BEGIN_SRC emacs-lisp
(use-package hydra
:load-path "site-lisp/hydra")
(use-package ivy
:load-path "site-lisp/swiper")
(use-package ivy-hydra
:after (ivy hydra))
#+END_SRC
In this case, because all of these packages are demand-loaded in the order
they occur, the use of ~:after~ is not strictly necessary. By using it,
however, the above code becomes order-independent, without an implicit
depedence on the nature of your init file.
By default, ~:after (foo bar)~ is the same as ~:after (:all foo bar)~, meaning
that loading of the given package will not happen until both ~foo~ and ~bar~
have been loaded. Here are some of the other possibilities:
#+BEGIN_SRC emacs-lisp
:after (foo bar)
:after (:all foo bar)
:after (:any foo bar)
:after (:all (:any foo bar) (:any baz quux))
:after (:any (:all foo bar) (:all baz quux))
#+END_SRC
When you nest selectors, such as ~(:any (:all foo bar) (:all baz quux))~, it
means that the package will be loaded when either both ~foo~ and ~bar~ have
been loaded, or both ~baz~ and ~quux~ have been loaded.
*NOTE*: Pay attention if you set ~use-package-always-defer~ to t, and also use
the ~:after~ keyword, as you will need to specify how the declared package is
to be loaded: e.g., by some ~:bind~. If you're not using one of the mechanisms
that registers autoloads, such as ~:bind~ or ~:hook~, and your package manager
does not provide autoloads, it's possible that without adding ~:demand t~ to
those declarations, your package will never be loaded.
** ~:bind-keymap~, ~:bind-keymap*~
Normally ~:bind~ expects that commands are functions that will be autoloaded
from the given package. However, this does not work if one of those commands
is actually a keymap, since keymaps are not functions, and cannot be
autoloaded using Emacs' ~autoload~ mechanism.
To handle this case, ~use-package~ offers a special, limited variant of
~:bind~ called ~:bind-keymap~. The only difference is that the "commands"
bound to by ~:bind-keymap~ must be keymaps defined in the package, rather than
command functions. This is handled behind the scenes by generating custom code
that loads the package containing the keymap, and then re-executes your
keypress after the first load, to reinterpret that keypress as a prefix key.
For example:
#+BEGIN_SRC emacs-lisp
(use-package projectile
:bind-keymap
("C-c p" . projectile-command-map)
#+END_SRC
** ~:bind~, ~:bind*~
Another common thing to do when loading a module is to bind a key to primary
commands within that module:
#+BEGIN_SRC emacs-lisp
(use-package ace-jump-mode
:bind ("C-." . ace-jump-mode))
#+END_SRC
This does two things: first, it creates an autoload for the ~ace-jump-mode~
command and defers loading of ~ace-jump-mode~ until you actually use it.
Second, it binds the key ~C-.~ to that command. After loading, you can use
~M-x describe-personal-keybindings~ to see all such keybindings you've set
throughout your ~.emacs~ file.
A more literal way to do the exact same thing is:
#+BEGIN_SRC emacs-lisp
(use-package ace-jump-mode
:commands ace-jump-mode
:init
(bind-key "C-." 'ace-jump-mode))
#+END_SRC
When you use the ~:commands~ keyword, it creates autoloads for those commands
and defers loading of the module until they are used. Since the ~:init~ form
is always run---even if ~ace-jump-mode~ might not be on your system---remember
to restrict ~:init~ code to only what would succeed either way.
The ~:bind~ keyword takes either a cons or a list of conses:
#+BEGIN_SRC emacs-lisp
(use-package hi-lock
:bind (("M-o l" . highlight-lines-matching-regexp)
("M-o r" . highlight-regexp)
("M-o w" . highlight-phrase)))
#+END_SRC
The ~:commands~ keyword likewise takes either a symbol or a list of symbols.
NOTE: Special keys like ~tab~ or ~F1~-~Fn~ can be written in square brackets,
i.e. ~[tab]~ instead of ~"tab"~. The syntax for the keybindings is similar to
the "kbd" syntax: see [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-Rebinding.html][the Emacs Manual]] for more information.
Examples:
#+BEGIN_SRC emacs-lisp
(use-package helm
:bind (("M-x" . helm-M-x)
("M-<f5>" . helm-find-files)
([f10] . helm-buffers-list)
([S-f10] . helm-recentf)))
#+END_SRC
*** Binding to local keymaps
Slightly different from binding a key to a keymap, is binding a key *within* a
local keymap that only exists after the package is loaded. ~use-package~
supports this with a ~:map~ modifier, taking the local keymap to bind to:
#+BEGIN_SRC emacs-lisp
(use-package helm
:bind (:map helm-command-map
("C-c h" . helm-execute-persistent-action)))
#+END_SRC
The effect of this statement is to wait until ~helm~ has loaded, and then to
bind the key ~C-c h~ to ~helm-execute-persistent-action~ within Helm's local
keymap, ~helm-mode-map~.
Multiple uses of ~:map~ may be specified. Any binding occurring before the
first use of ~:map~ are applied to the global keymap:
#+BEGIN_SRC emacs-lisp
(use-package term
:bind (("C-c t" . term)
:map term-mode-map
("M-p" . term-send-up)
("M-n" . term-send-down)
:map term-raw-map
("M-o" . other-window)
("M-p" . term-send-up)
("M-n" . term-send-down)))
#+END_SRC
** ~:commands~
** ~:preface~, ~:init~, ~:config~
Here is the simplest ~use-package~ declaration:
#+BEGIN_SRC emacs-lisp
;; This is only needed once, near the top of the file
(eval-when-compile
;; Following line is not needed if use-package.el is in ~/.emacs.d
(add-to-list 'load-path "<path where use-package is installed>")
(require 'use-package))
(use-package foo)
#+END_SRC
This loads in the package ~foo~, but only if ~foo~ is available on your
system. If not, a warning is logged to the ~*Messages*~ buffer. If it
succeeds, a message about ~"Loading foo"~ is logged, along with the time it
took to load, if it took over 0.1 seconds.
Use the ~:init~ keyword to execute code before a package is loaded. It
accepts one or more forms, up until the next keyword:
#+BEGIN_SRC emacs-lisp
(use-package foo
:init
(setq foo-variable t))
#+END_SRC
Similarly, ~:config~ can be used to execute code after a package is loaded.
In cases where loading is done lazily (see more about autoloading below), this
execution is deferred until after the autoload occurs:
#+BEGIN_SRC emacs-lisp
(use-package foo
:init
(setq foo-variable t)
:config
(foo-mode 1))
#+END_SRC
As you might expect, you can use ~:init~ and ~:config~ together:
#+BEGIN_SRC emacs-lisp
(use-package color-moccur
:commands (isearch-moccur isearch-all)
:bind (("M-s O" . moccur)
:map isearch-mode-map
("M-o" . isearch-moccur)
("M-O" . isearch-moccur-all))
:init
(setq isearch-lazy-highlight t)
:config
(use-package moccur-edit))
#+END_SRC
In this case, I want to autoload the commands ~isearch-moccur~ and
~isearch-all~ from ~color-moccur.el~, and bind keys both at the global level
and within the ~isearch-mode-map~ (see next section). When the package is
actually loaded (by using one of these commands), ~moccur-edit~ is also
loaded, to allow editing of the ~moccur~ buffer.
** ~:custom~
The ~:custom~ keyword allows customization of package custom variables.
#+BEGIN_SRC emacs-lisp
(use-package comint
:custom
(comint-buffer-maximum-size 20000 "Increase comint buffer size.")
(comint-prompt-read-only t "Make the prompt read only."))
#+END_SRC
The documentation string is not mandatory.
** ~:custom-face~
The ~:custom-face~ keyword allows customization of package custom faces.
#+BEGIN_SRC emacs-lisp
(use-package eruby-mode
:custom-face
(eruby-standard-face ((t (:slant italic)))))
#+END_SRC
** ~:defer~, ~:demand~
In almost all cases you don't need to manually specify ~:defer t~. This is
implied whenever ~:bind~ or ~:mode~ or ~:interpreter~ is used. Typically, you
only need to specify ~:defer~ if you know for a fact that some other package
will do something to cause your package to load at the appropriate time, and
thus you would like to defer loading even though use-package isn't creating
any autoloads for you.
You can override package deferral with the ~:demand~ keyword. Thus, even if
you use ~:bind~, using ~:demand~ will force loading to occur immediately and
not establish an autoload for the bound key.
** ~:defines~, ~:functions~
Another feature of ~use-package~ is that it always loads every file that it
can when ~.emacs~ is being byte-compiled. This helps to silence spurious
warnings about unknown variables and functions.
However, there are times when this is just not enough. For those times, use
the ~:defines~ and ~:functions~ keywords to introduce dummy variable and
function declarations solely for the sake of the byte-compiler:
#+BEGIN_SRC emacs-lisp
(use-package texinfo
:defines texinfo-section-list
:commands texinfo-mode
:init
(add-to-list 'auto-mode-alist '("\\.texi$" . texinfo-mode)))
#+END_SRC
If you need to silence a missing function warning, you can use ~:functions~:
#+BEGIN_SRC emacs-lisp
(use-package ruby-mode
:mode "\\.rb\\'"
:interpreter "ruby"
:functions inf-ruby-keys
:config
(defun my-ruby-mode-hook ()
(require 'inf-ruby)
(inf-ruby-keys))
(add-hook 'ruby-mode-hook 'my-ruby-mode-hook))
#+END_SRC
** ~:diminish~, ~:delight~
~use-package~ also provides built-in support for the diminish and delight
utilities---if you have them installed. Their purpose is to remove or change
minor mode strings in your mode-line.
[[https://github.com/myrjola/diminish.el][diminish]] is invoked with the ~:diminish~ keyword, which is passed either a
minor mode symbol, a cons of the symbol and its replacement string, or just a
replacement string, in which case the minor mode symbol is guessed to be the
package name with "-mode" appended at the end:
#+BEGIN_SRC emacs-lisp
(use-package abbrev
:diminish abbrev-mode
:config
(if (file-exists-p abbrev-file-name)
(quietly-read-abbrev-file)))
#+END_SRC
[[https://elpa.gnu.org/packages/delight.html][delight]] is invoked with the ~:delight~ keyword, which is passed a minor mode
symbol, a replacement string or quoted [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Mode-Line-Data.html][mode-line data]] (in which case the minor
mode symbol is guessed to be the package name with "-mode" appended at the
end), both of these, or several lists of both. If no arguments are provided,
the default mode name is hidden completely.
#+BEGIN_SRC emacs-lisp
;; Don't show anything for rainbow-mode.
(use-package rainbow-mode
:delight)
;; Don't show anything for auto-revert-mode, which doesn't match
;; its package name.
(use-package autorevert
:delight auto-revert-mode)
;; Remove the mode name for projectile-mode, but show the project name.
(use-package projectile
:delight '(:eval (concat " " (projectile-project-name))))
;; Completely hide visual-line-mode and change auto-fill-mode to " AF".
(use-package emacs
:delight
(auto-fill-function " AF")
(visual-line-mode))
#+END_SRC
** ~:disabled~
The ~:disabled~ keyword can turn off a module you're having difficulties with,
or stop loading something you're not using at the present time:
#+BEGIN_SRC emacs-lisp
(use-package ess-site
:disabled
:commands R)
#+END_SRC
When byte-compiling your ~.emacs~ file, disabled declarations are omitted
from the output entirely, to accelerate startup times.
** ~:ensure~, ~:pin~
You can use ~use-package~ to load packages from ELPA with ~package.el~. This
is particularly useful if you share your ~.emacs~ among several machines; the
relevant packages are downloaded automatically once declared in your ~.emacs~.
The ~:ensure~ keyword causes the package(s) to be installed automatically if
not already present on your system (set ~(setq use-package-always-ensure t)~
if you wish this behavior to be global for all packages):
#+BEGIN_SRC emacs-lisp
(use-package magit
:ensure t)
#+END_SRC
If you need to install a different package from the one named by
~use-package~, you can specify it like this:
#+BEGIN_SRC emacs-lisp
(use-package tex
:ensure auctex)
#+END_SRC
Lastly, when running on Emacs 24.4 or later, use-package can pin a package to
a specific archive, allowing you to mix and match packages from different
archives. The primary use-case for this is preferring packages from the
~melpa-stable~ and ~gnu~ archives, but using specific packages from ~melpa~
when you need to track newer versions than what is available in the ~stable~
archives is also a valid use-case.
By default ~package.el~ prefers ~melpa~ over ~melpa-stable~ due to the
versioning ~(> evil-20141208.623 evil-1.0.9)~, so even if you are tracking
only a single package from ~melpa~, you will need to tag all the non-~melpa~
packages with the appropriate archive. If this really annoys you, then you can
set ~use-package-always-pin~ to set a default.
If you want to manually keep a package updated and ignore upstream updates,
you can pin it to ~manual~, which as long as there is no repository by that
name, will Just Work(tm).
~use-package~ throws an error if you try to pin a package to an archive that
has not been configured using ~package-archives~ (apart from the magic
~manual~ archive mentioned above):
#+BEGIN_SRC text-mode
Archive 'foo' requested for package 'bar' is not available.
#+END_SRC
Example:
#+BEGIN_SRC emacs-lisp
(use-package company
:ensure t
:pin melpa-stable)
(use-package evil
:ensure t)
;; no :pin needed, as package.el will choose the version in melpa
(use-package adaptive-wrap
:ensure t
;; as this package is available only in the gnu archive, this is
;; technically not needed, but it helps to highlight where it
;; comes from
:pin gnu)
(use-package org
:ensure t
;; ignore org-mode from upstream and use a manually installed version
:pin manual)
#+END_SRC
*NOTE*: the ~:pin~ argument has no effect on emacs versions < 24.4.
** ~:hook~
The ~:hook~ keyword allows adding functions onto hooks, here only the basename
of the hook is required. Thus, all of the following are equivalent:
#+BEGIN_SRC emacs-lisp
(use-package ace-jump-mode
:hook prog-mode)
(use-package ace-jump-mode
:hook (prog-mode . ace-jump-mode))
(use-package ace-jump-mode
:commands ace-jump-mode
:init
(add-hook 'prog-mode-hook #'ace-jump-mode))
#+END_SRC
And likewise, when multiple hooks should be applied, the following are also
equivalent:
#+BEGIN_SRC emacs-lisp
(use-package ace-jump-mode
:hook (prog-mode text-mode))
(use-package ace-jump-mode
:hook ((prog-mode text-mode) . ace-jump-mode))
(use-package ace-jump-mode
:hook ((prog-mode . ace-jump-mode)
(text-mode . ace-jump-mode)))
(use-package ace-jump-mode
:commands ace-jump-mode
:init
(add-hook 'prog-mode-hook #'ace-jump-mode)
(add-hook 'text-mode-hook #'ace-jump-mode))
#+END_SRC
The use of ~:hook~, as with ~:bind~, ~:mode~, ~:interpreter~, etc., causes the
functions being hooked to implicitly be read as ~:commands~ (meaning they will
establish interactive ~autoload~ definitions for that module, if not already
defined as functions), and so ~:defer t~ is also implied by ~:hook~.
** ~:if~, ~:when~, ~:unless~
You can use the ~:if~ keyword to predicate the loading and initialization of
modules.
For example, I only want ~edit-server~ running for my main, graphical Emacs,
not for other Emacsen I may start at the command line:
#+BEGIN_SRC emacs-lisp
(use-package edit-server
:if window-system
:init
(add-hook 'after-init-hook 'server-start t)
(add-hook 'after-init-hook 'edit-server-start t))
#+END_SRC
In another example, we can load things conditional on the operating system:
#+BEGIN_SRC emacs-lisp
(use-package exec-path-from-shell
:if (memq window-system '(mac ns))
:ensure t
:config
(exec-path-from-shell-initialize))
#+END_SRC
Note that ~:when~ is provided as an alias for ~:if~, and ~:unless foo~ means
the same thing as ~:if (not foo)~.
** ~:load-path~
If your package needs a directory added to the ~load-path~ in order to load,
use ~:load-path~. This takes a symbol, a function, a string or a list of
strings. If the path is relative, it is expanded within
~user-emacs-directory~:
#+BEGIN_SRC emacs-lisp
(use-package ess-site
:load-path "site-lisp/ess/lisp/"
:commands R)
#+END_SRC
Note that when using a symbol or a function to provide a dynamically generated
list of paths, you must inform the byte-compiler of this definition so the
value is available at byte-compilation time. This is done by using the special
form ~eval-and-compile~ (as opposed to ~eval-when-compile~). Further, this
value is fixed at whatever was determined during compilation, to avoid looking
up the same information again on each startup:
#+BEGIN_SRC emacs-lisp
(eval-and-compile
(defun ess-site-load-path ()
(shell-command "find ~ -path ess/lisp")))
(use-package ess-site
:load-path (lambda () (list (ess-site-load-path)))
:commands R)
#+END_SRC
** ~:mode~, ~:interpreter~
Similar to ~:bind~, you can use ~:mode~ and ~:interpreter~ to establish a
deferred binding within the ~auto-mode-alist~ and ~interpreter-mode-alist~
variables. The specifier to either keyword can be a cons cell, a list of cons
cells, or a string or regexp:
#+BEGIN_SRC emacs-lisp
(use-package ruby-mode
:mode "\\.rb\\'"
:interpreter "ruby")
;; The package is "python" but the mode is "python-mode":
(use-package python
:mode ("\\.py\\'" . python-mode)
:interpreter ("python" . python-mode))
#+END_SRC
If you aren't using ~:commands~, ~:bind~, ~:bind*~, ~:bind-keymap~,
~:bind-keymap*~, ~:mode~, or ~:interpreter~ (all of which imply ~:defer~; see
the docstring for ~use-package~ for a brief description of each), you can
still defer loading with the ~:defer~ keyword:
#+BEGIN_SRC emacs-lisp
(use-package ace-jump-mode
:defer t
:init
(autoload 'ace-jump-mode "ace-jump-mode" nil t)
(bind-key "C-." 'ace-jump-mode))
#+END_SRC
This does exactly the same thing as the following:
#+BEGIN_SRC emacs-lisp
(use-package ace-jump-mode
:bind ("C-." . ace-jump-mode))
#+END_SRC
** ~:magic~, ~:magic-fallback~
Similar to ~:mode~ and ~:interpreter~, you can also use ~:magic~ and
~:magic-fallback~ to cause certain function to be run if the beginning of a
file matches a given regular expression. The difference between the two is
that ~:magic-fallback~ has a lower priority than ~:mode~. For example:
#+BEGIN_SRC emacs-lisp
(use-package pdf-tools
:load-path "site-lisp/pdf-tools/lisp"
:magic ("%PDF" . pdf-view-mode)
:config
(pdf-tools-install))
#+END_SRC
This registers an autoloaded command for ~pdf-view-mode~, defers loading of
~pdf-tools~, and runs ~pdf-view-mode~ if the beginning of a buffer matches the
string ~"%PDF"~.
** ~:no-require~
Normally, ~use-package~ will load each package at compile time before
compiling the configuration, to ensure that any necessary symbols are in scope
to satisfy the byte-compiler. At times this can cause problems, since a
package may have special loading requirements, and all that you want to use
~use-package~ for is to add a configuration to the ~eval-after-load~ hook. In
such cases, use the ~:no-require~ keyword:
#+BEGIN_SRC emacs-lisp
(use-package foo
:no-require t
:config
(message "This is evaluated when `foo' is loaded"))
#+END_SRC
** ~:requires~
While the ~:after~ keyword delays loading until the dependencies are loaded,
the somewhat simpler ~:requires~ keyword simply never loads the package if the
dependencies are not available at the time the ~use-package~ declaration is
encountered. By "available" in this context it means that ~foo~ is available
of ~(featurep 'foo)~ evaluates to a non-nil value. For example:
#+BEGIN_SRC emacs-lisp
(use-package abbrev
:requires foo)
#+END_SRC
This is the same as:
#+BEGIN_SRC emacs-lisp
(use-package abbrev
:if (featurep 'foo))
#+END_SRC
As a convenience, a list of such packages may be specified:
#+BEGIN_SRC emacs-lisp
(use-package abbrev
:requires (foo bar baz))
#+END_SRC
For more complex logic, such as that supported by ~:after~, simply use ~:if~
and the appropriate Lisp expression.
* FAQ
:PROPERTIES:
:APPENDIX: t
:EXPORT_FILE_NAME: faq
:END:
The next two nodes lists frequently asked questions.
Please also use the {{{link-jump(Debugging Tools,/debugging-tools)}}}.
** FAQ - How to ...?
*** This is a question
This is an answer.
** FAQ - Issues and Errors
*** This is an issues
This is a description.
* Debugging Tools
:PROPERTIES:
:EXPORT_FILE_NAME: debugging-tools
:END:
TODO
Please also see the {{{link-jump(FAQ,/faq)}}}.
* Command Index
:PROPERTIES:
:APPENDIX: t
:INDEX: cp
:END:
* Function Index
:PROPERTIES:
:APPENDIX: t
:INDEX: fn
:END:
* Variable Index
:PROPERTIES:
:APPENDIX: t
:INDEX: vr
:END:
* _ Copying
:PROPERTIES:
:COPYING: t
:END:
#+BEGIN_QUOTE
Copyright (C) 2012-2017 John Wiegley <johnw@newartisans.com>
You can redistribute this document 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 document 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.
#+END_QUOTE
* _ :ignore:
# LocalWords: ARG ARGS CONDITIONs ChangeLog DNS Dired Ediff Ediffing
# LocalWords: Elpa Emacsclient FUNC Flyspell Git Git's Gitk HOOK's
# LocalWords: IDENT Ido Junio LocalWords
# LocalWords: Melpa Propertize REF REF's RET Reflog SPC SYM Spacemacs
# LocalWords: Submodules TODO TYPEs Theming Unpulled Unpushed Unstaged
# LocalWords: Untracked WORKTREE Wip ack args async autoloads autosaving
# LocalWords: autosquash backport basename branchref builtin
# LocalWords: cdr changelog committer config customizable diff's diffstat
# LocalWords: dwim ediff ediffing editmsg emacsclient filename fixup
# LocalWords: flyspell func git's gitk gitman gitmodule gitmodules goto
# LocalWords: gpg gui ident ido init inserter inserters keymap keymaps
# LocalWords: logfile use-package maildir manpage manpages minibuffer multi mv
# LocalWords: namespace newbase nocommit notesRef popup popups posix prev
# LocalWords: propertize rebase rebased rebasing reflog repo signoff str
# LocalWords: struct subcommand submodule submodule's submodules subprocess
# LocalWords: sym texinfo theming todo topdir un unhighlighted unpulled
# LocalWords: unpushed unstage unstaged unstages unstaging untracked url
# LocalWords: versa whitespace wip workflow worktree wtree
# LocalWords: backported macOS
# Local Variables:
# eval: (require 'org-man nil t)
# eval: (require 'ox-texinfo+ nil t)
# eval: (and (require 'ox-extra nil t) (ox-extras-activate '(ignore-headlines)))
# indent-tabs-mode: nil
# org-src-preserve-indentation: nil
# End:

+ 1532
- 633
use-package.texi
File diff suppressed because it is too large
View File


Loading…
Cancel
Save