about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--early-init.el39
-rw-r--r--lisp/acdw-setup.el71
2 files changed, 72 insertions, 38 deletions
diff --git a/early-init.el b/early-init.el index 2fcee66..c7d4985 100644 --- a/early-init.el +++ b/early-init.el
@@ -194,44 +194,7 @@ say, `tool-bar-mode' once to toggle the tool bar back on."
194;;; `setup' 194;;; `setup'
195(straight-use-package '(setup :host nil :repo "https://git.sr.ht/~pkal/setup")) 195(straight-use-package '(setup :host nil :repo "https://git.sr.ht/~pkal/setup"))
196(require 'setup) 196(require 'setup)
197 197(require 'acdw-setup)
198(setup setup
199 ;; Install a package using `straight-use-package'
200 (setup-define :straight
201 (lambda (recipe)
202 `(straight-use-package ',recipe))
203 :documentation
204 "Install RECIPE with `straight-use-package'.
205This macro can be used as HEAD, and will replace itself with the
206first RECIPE's package."
207 :repeatable t
208 :shorthand (lambda (sexp)
209 (let ((recipe (cadr sexp)))
210 (if (consp recipe)
211 (car recipe)
212 recipe))))
213 ;; Install a package with straight, but only under a condition
214 (setup-define :straight-if
215 (lambda (recipe condition)
216 `(if ,condition
217 (straight-use-package ',recipe)
218 ,(setup-quit)))
219 :documentation
220 "Install RECIPE with `straight-use-package' when CONDITION is met.
221If CONDITION is false, stop evaluating the body. This macro can
222be used as HEAD, and will replace itself with the RECIPE's
223package. This macro is not repeatable."
224 :repeatable nil
225 :shorthand (lambda (sexp)
226 (let ((recipe (cadr sexp)))
227 (if (consp recipe) (car recipe) recipe))))
228 ;; Hotfix
229 (setup-define :file-match
230 (lambda (pat)
231 `(add-to-list 'auto-mode-alist (cons ,pat ',(setup-get 'mode))))
232 :documentation "Associate the current mode with files that match PAT."
233 :debug '(form)
234 :repeatable t))
235 198
236;;; `no-littering' 199;;; `no-littering'
237(setup (:straight no-littering) 200(setup (:straight no-littering)
diff --git a/lisp/acdw-setup.el b/lisp/acdw-setup.el new file mode 100644 index 0000000..ca30249 --- /dev/null +++ b/lisp/acdw-setup.el
@@ -0,0 +1,71 @@
1;;; acdw-setup.el -- my `setup' commands -*- lexical-binding: t -*-
2
3;; Author: Case Duckworth <acdw@acdw.net>
4
5;; This file is NOT part of GNU Emacs.
6
7;;; License:
8;; Everyone is permitted to do whatever with this software, without
9;; limitation. This software comes without any warranty whatsoever,
10;; but with two pieces of advice:
11;; - Don't hurt yourself.
12;; - Make good choices.
13
14;;; Code:
15
16(setup-define :autoload
17 (lambda (func)
18 (if (listp func)
19 (let ((plist (cdr func)))
20 `(autoload ',(car func)
21 ,(symbol-name (setup-get 'feature))
22 ,(plist-get plist :docstring)
23 ,(plist-get plist :interactive)
24 ,(plist-get plist :type)))
25 `(autoload ',func ,(symbol-name (setup-get 'feature)))))
26 :documentation "Autoload FUNC from FEATURE.
27`:autoload' can be passed a list with keywords:
28:docstring - The DOCSTRING to give the autoloaded function.
29:interactive - Whether the function is INTERACTIVE or not.
30:type - Either `nil', `keymap', or `macro': see `autoload' for details."
31 :repeatable t)
32
33(setup-define :file-match
34 ;; Hotfix; patch here: https://github.com/phikal/setup.el/pull/1
35 (lambda (pat)
36 `(add-to-list 'auto-mode-alist (cons ,pat ',(setup-get 'mode))))
37 :documentation "Associate the current mode with files that match PAT."
38 :debug '(form)
39 :repeatable t)
40
41(setup-define :straight
42 (lambda (recipe)
43 `(straight-use-package ',recipe))
44 :documentation
45 "Install RECIPE with `straight-use-package'.
46This macro can be used as HEAD, and will replace itself with the
47first RECIPE's package."
48 :repeatable t
49 :shorthand (lambda (sexp)
50 (let ((recipe (cadr sexp)))
51 (if (consp recipe)
52 (car recipe)
53 recipe))))
54
55(setup-define :straight-if
56 (lambda (recipe condition)
57 `(if ,condition
58 (straight-use-package ',recipe)
59 ,(setup-quit)))
60 :documentation
61 "Install RECIPE with `straight-use-package' when CONDITION is met.
62If CONDITION is false, stop evaluating the body. This macro can
63be used as HEAD, and will replace itself with the RECIPE's
64package. This macro is not repeatable."
65 :repeatable nil
66 :shorthand (lambda (sexp)
67 (let ((recipe (cadr sexp)))
68 (if (consp recipe) (car recipe) recipe))))
69
70(provide 'acdw-setup)
71;;; acdw-setup.el ends here