Allows customization of faces using customize-set-faces. This makes it
easier to manage customization in version control. Instead of having all the
faces written in a custom.el, the faces can be customized where the rest
of the package is configured.
Allows customization of variable using customize-set-variables. This makes it
easier to manage customization in version control. Instead of having all the
variables written in a custom.el, the variable can be customized where the rest
of the package is configured.
When given no arguments, have :diminish assume it should diminish a
mode named after the current package (the package’s name, with “-mode”
appended, if it’s not already) to an empty string.
When given only a string to diminish an implicit package name to, do
not append “-mode” to the package name if it already ends with
it. (This is a backwards-incompatible change if someone was
diminishing a package named “foo-mode” implementing `foo-mode-mode`.)
Add test cases for `use-package-normalize-diminish`.
This addresses some of the redundancy mentioned in issue https://github.com/jwiegley/use-package/issues/288.
This allows using forms such as
(use-package foo :delight)
;; => (delight 'foo-mode)
(use-package foo :delight " f")
;; => (delight 'foo-mode " f")
(use-package foo :delight (a-mode) (b-mode " b")
;; => (delight 'a-mode) (delight 'b-mode " b")
This brings support for `:delight` in line with `:diminish`.
GitHub-reference: https://github.com/jwiegley/use-package/issues/477
Previously, deferred installation didn't work because I didn't convert
the result of a `completing-read' back from a string to a symbol,
which meant the hash-table lookup failed.
These keywords work equivalently to `:mode` or `:interpreter`, but for
`magic-mode-alist` and `magic-fallback-mode-alist`.
The handler function implementation is now passed a list to add to,
and shared by all four of them.
GitHub-reference: https://github.com/jwiegley/use-package/issues/469
If the network is missing and there is a new use-package with :ensure,
startup would fail part of the way through due package.el being unable
to reach the package repo. This will catch that error and report it
while allowing startup to continue.
Copyright-paperwork-exempt: yes
The previous version of `use-package-normalize-value', when passed
nil, would return the list (symbol-value (quote nil)). This meant that
keywords which used `use-package-normalize-value' or the higher-level
normalizer `use-package-normalize-test' would get a non-nil
argument (i.e. the above list) even when the user specified nil to the
package.
This had the concrete impact of making it so that :defer-install nil
was treated as :defer-install t.
The parsing logic in `use-package-normalize-pairs' is not designed to
deal with keyword arguments. However, `use-package-normalize-pairs' is
used to process the arguments to :bind, which can include keyword
arguments. These keyword arguments are supposed to be passed untouched
to the underlying `bind-keys' function, but there is a clause in
`use-package-normalize-pairs' that replaces lists with their first
element. Thus an invocation like:
(use-package company
:bind (:map company-active-map
:filter (company-explicit-action-p)
("RET" . company-complete-selection)))
Generates code like this:
(bind-keys
:map company-active-map
:filter company-explicit-action-p
("RET" . company-complete-selection))
Which generates an error since `company-explicit-action-p' is now
being referenced as a variable rather than a function.
The proper solution is to refactor the logic that goes into parsing
uses of :bind, but this commit adds a temporary patch to eliminate the
above problem, while trying to be as reverse-compatible as possible.
In particular it just inhibits the list-to-first-element
transformation when the previous element processed was a keyword.