Stop using the ensure-library macro
There are simpler ways to achieve the same thing.
This commit is contained in:
parent
bea7b141b7
commit
cfdefc4a8b
1 changed files with 20 additions and 114 deletions
|
@ -30,6 +30,15 @@ To start off, first I need to enable lexical binding.
|
|||
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")))
|
||||
#+END_SRC
|
||||
|
||||
Add all my vendored packages to the load path.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(eval-and-compile
|
||||
(mapc (lambda (d) (add-to-list 'load-path d))
|
||||
(directory-files
|
||||
(locate-user-emacs-file "vendor-lisp/") t "^[^.]")))
|
||||
#+END_SRC
|
||||
|
||||
Initialize package.el so that packages can be loaded and used. This
|
||||
also needs to be done at both run-time and compile-time so packages
|
||||
can be installed at compile-time.
|
||||
|
@ -75,48 +84,17 @@ To start off, first I need to enable lexical binding.
|
|||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(eval-when-compile
|
||||
(silently "Refresh packages"
|
||||
(package-refresh-contents)))
|
||||
#+END_SRC
|
||||
|
||||
This macro is inspired by use-package, but I want to maintain some
|
||||
control of the syntax I use to configure my settings.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defmacro ensure-library (library &rest args)
|
||||
"Make sure LIBRARY is installed.
|
||||
|
||||
ARGS should be a plist which may contain one of the following options:
|
||||
|
||||
- :package
|
||||
|
||||
Specify which package should actually be installed to ensure
|
||||
the library named in LIBRARY exists.
|
||||
|
||||
- :path
|
||||
|
||||
Specify a path to add to the load path to be able to load this
|
||||
package."
|
||||
(declare (indent 1))
|
||||
(let ((library-symbol (cl-gensym))
|
||||
(package-symbol (cl-gensym))
|
||||
(path-symbol (cl-gensym))
|
||||
(package (or (plist-get args :package) library))
|
||||
(path (plist-get args :path)))
|
||||
`(progn
|
||||
(eval-and-compile
|
||||
(let ((,path-symbol ,path))
|
||||
(if ,path-symbol
|
||||
(add-to-list 'load-path
|
||||
(if (file-name-absolute-p ,path-symbol)
|
||||
,path-symbol
|
||||
(concat user-emacs-directory ,path-symbol))))))
|
||||
(eval-when-compile
|
||||
(let ((,library-symbol ',library)
|
||||
(,package-symbol ',package))
|
||||
(unless (require ,library-symbol nil :noerror)
|
||||
(package-install ,package-symbol)
|
||||
(require ,library-symbol)))))))
|
||||
(let* ((not-installed (seq-remove 'package-installed-p
|
||||
package-selected-packages))
|
||||
(available (seq-filter (lambda (p)
|
||||
(assq p package-archive-contents))
|
||||
not-installed))
|
||||
(difference (- (length not-installed) (length available))))
|
||||
(when (> difference 0)
|
||||
(silently "Refresh packages"
|
||||
(package-refresh-contents)))
|
||||
(when available
|
||||
(mapc (lambda (p) (package-install p t)) available))))
|
||||
#+END_SRC
|
||||
|
||||
* Site lisp
|
||||
|
@ -258,8 +236,6 @@ To start off, first I need to enable lexical binding.
|
|||
with people who don't pay attention to it, it has worked flawlessly.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library destroy-trailing-whitespace
|
||||
:path "vendor-lisp/destroy-trailing-whitespace")
|
||||
(require 'destroy-trailing-whitespace)
|
||||
(global-destroy-trailing-whitespace-mode)
|
||||
#+END_SRC
|
||||
|
@ -285,8 +261,6 @@ To start off, first I need to enable lexical binding.
|
|||
* Theme
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library yoshi-theme
|
||||
:path "vendor-lisp/yoshi-theme")
|
||||
(add-to-list 'custom-theme-load-path
|
||||
(concat user-emacs-directory "vendor-lisp/yoshi-theme"))
|
||||
(load-theme 'yoshi :no-confirm)
|
||||
|
@ -297,7 +271,6 @@ To start off, first I need to enable lexical binding.
|
|||
I really don't need to see some of the minor modes.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library diminish)
|
||||
(require 'diminish)
|
||||
#+END_SRC
|
||||
|
||||
|
@ -307,16 +280,6 @@ To start off, first I need to enable lexical binding.
|
|||
vertically. I'm surprised how much I like it. I've tried Swiper
|
||||
before and I didn't like that so much.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library ivy)
|
||||
#+END_SRC
|
||||
|
||||
Also install the =flx= package to allow ivy to use fuzzy matching.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library flx)
|
||||
#+END_SRC
|
||||
|
||||
Since I immediately use and enable Ivy, there's no need to autoload
|
||||
it, so require it to keep the byte-compiler quiet.
|
||||
|
||||
|
@ -350,10 +313,6 @@ To start off, first I need to enable lexical binding.
|
|||
Counsel is a group of functions that use Ivy to specialize on
|
||||
certain built-in commands, such as M-x.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library counsel)
|
||||
#+END_SRC
|
||||
|
||||
Since I enable Counsel mode immediately, there's no point in leaving
|
||||
it to be autoloaded. Requiring it keeps the byte-compiler happy.
|
||||
|
||||
|
@ -510,10 +469,6 @@ To start off, first I need to enable lexical binding.
|
|||
first, but once you get the hang of using it, you won't want to
|
||||
live without it.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library paredit)
|
||||
#+END_SRC
|
||||
|
||||
Don't show that paredit is enabled, it should be obvious from the
|
||||
effects it has. This will save some precious real-estate on my mode
|
||||
line.
|
||||
|
@ -555,15 +510,10 @@ To start off, first I need to enable lexical binding.
|
|||
Flycheck lets me see (compiler) errors, warnings and info messages
|
||||
while writing code.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library flycheck)
|
||||
#+END_SRC
|
||||
|
||||
When developing packages with Cask, some special care needs to be
|
||||
taken to ensure the checkers work correctly.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library flycheck-cask)
|
||||
(add-hook 'flycheck-mode-hook 'flycheck-cask-setup)
|
||||
#+END_SRC
|
||||
|
||||
|
@ -588,8 +538,6 @@ To start off, first I need to enable lexical binding.
|
|||
Show the error message at point in a tooltip.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library flycheck-pos-tip)
|
||||
|
||||
(with-eval-after-load 'flycheck
|
||||
(require 'flycheck-pos-tip)
|
||||
(flycheck-pos-tip-mode))
|
||||
|
@ -623,7 +571,6 @@ To start off, first I need to enable lexical binding.
|
|||
commit.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library diff-hl)
|
||||
(require 'diff-hl)
|
||||
(global-diff-hl-mode)
|
||||
#+END_SRC
|
||||
|
@ -633,10 +580,6 @@ To start off, first I need to enable lexical binding.
|
|||
Hydra is an interesting way of managing keybindings, I want to
|
||||
experiment.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library hydra)
|
||||
#+END_SRC
|
||||
|
||||
Add a hydra for org.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
|
@ -664,7 +607,6 @@ To start off, first I need to enable lexical binding.
|
|||
Projectile is, thus far, the best project module for Emacs.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library projectile)
|
||||
(require 'projectile)
|
||||
#+END_SRC
|
||||
|
||||
|
@ -755,11 +697,6 @@ To start off, first I need to enable lexical binding.
|
|||
might release it as a package, but for now I keep it with the rest
|
||||
of my configuration.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library mbsync-conf-mode
|
||||
:path "vendor-lisp/mbsync-conf-mode")
|
||||
#+END_SRC
|
||||
|
||||
Since it isn't installed by package.el, I need to specify the
|
||||
autoload myself.
|
||||
|
||||
|
@ -782,11 +719,6 @@ To start off, first I need to enable lexical binding.
|
|||
release it as a package, but for now I keep it with the rest of my
|
||||
configuration.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library msmtprc-mode
|
||||
:path "vendor-lisp/msmtprc-mode")
|
||||
#+END_SRC
|
||||
|
||||
Since it isn't installed by package.el, I need to specify the
|
||||
autoload myself.
|
||||
|
||||
|
@ -831,10 +763,6 @@ To start off, first I need to enable lexical binding.
|
|||
Web mode is a good general-purpose web template mode. It works well
|
||||
with many template languages and PHP as well.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library web-mode)
|
||||
#+END_SRC
|
||||
|
||||
Enable a specialized whitespace mode for web mode that shows tabs
|
||||
at the beginning of a line.
|
||||
|
||||
|
@ -868,15 +796,9 @@ To start off, first I need to enable lexical binding.
|
|||
|
||||
** Clojure mode
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library clojure-mode)
|
||||
#+END_SRC
|
||||
|
||||
Install extra font-locking for clojure.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library clojure-mode-extra-font-locking)
|
||||
|
||||
(with-eval-after-load 'clojure-mode
|
||||
(require 'clojure-mode-extra-font-locking))
|
||||
#+END_SRC
|
||||
|
@ -909,10 +831,6 @@ To start off, first I need to enable lexical binding.
|
|||
Cider is like Slime for Common Lisp. This configuration is copied
|
||||
from the one provided by Clojure for the Brave and True.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library cider)
|
||||
#+END_SRC
|
||||
|
||||
Provides minibuffer documentation for the code you're typing into
|
||||
the repl.
|
||||
|
||||
|
@ -961,10 +879,6 @@ To start off, first I need to enable lexical binding.
|
|||
do just about anything with Git without leaving the comfort of your
|
||||
Emacs session.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library magit)
|
||||
#+END_SRC
|
||||
|
||||
Show refined diffs in magit. This makes it much easier to see
|
||||
/what/ has changed on a line.
|
||||
|
||||
|
@ -1179,10 +1093,6 @@ To start off, first I need to enable lexical binding.
|
|||
I switched to Circe from ERC because I couldn't make the
|
||||
customizations I wanted to, Circe seems much better at this.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library circe)
|
||||
#+END_SRC
|
||||
|
||||
Make sure that Emacs knows these function exist when the file is
|
||||
being compiled.
|
||||
|
||||
|
@ -1233,9 +1143,6 @@ To start off, first I need to enable lexical binding.
|
|||
Align all nicks.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library sermon
|
||||
:path "vendor-lisp/sermon")
|
||||
|
||||
(with-eval-after-load 'circe
|
||||
(require 'sermon)
|
||||
(enable-sermon))
|
||||
|
@ -1264,7 +1171,6 @@ To start off, first I need to enable lexical binding.
|
|||
this.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ensure-library jabber)
|
||||
(eval-when-compile (require 'jabber))
|
||||
#+END_SRC
|
||||
|
||||
|
|
Loading…
Reference in a new issue