summaryrefslogtreecommitdiffstats
path: root/.emacs.d/init.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/init.el')
-rwxr-xr-x.emacs.d/init.el60
1 files changed, 35 insertions, 25 deletions
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
index d9183a1..090592f 100755
--- a/.emacs.d/init.el
+++ b/.emacs.d/init.el
@@ -86,31 +86,41 @@
86 86
87(setq use-package-always-ensure (not jd/guix-p)) 87(setq use-package-always-ensure (not jd/guix-p))
88 88
89(defmacro use-package! (package-name 89(defun jd/generate-manifest ()
90 guix-package-name 90 "Generate GNU/Guix Emacs manifest to temp-buffer."
91 &rest body) 91 (interactive)
92 (declare (indent defun)) 92 (with-output-to-temp-buffer "*guix-emacs-packages-manifest.scm*"
93 `(progn 93 (princ (concat ";; This file is auto-generated by Emacs "
94 ,(when guix-package-name 94 "function: jd/manifest-generate-to-file \n"))
95 `(jd/add-package-to-manifest ,guix-package-name)) 95 (princ `(specifications->manifest
96 (use-package ,package-name ,@body))) 96 '(,@(mapcar #'(lambda (guix-package-name)
97 97 (concat "\""
98(defun jd/manifest-generate-to-file (file-name) 98 guix-package-name
99 "Generate GNU/Guix Emacs manifest to output file provided in: FILE-NAME." 99 "\"\n"))
100 (interactive 100 jd/manifest-list))))))
101 (list (read-from-minibuffer "Output file: " ))) 101
102 (with-temp-file file-name 102(defun use-package-normalize/:guix-package (name keyword args)
103 (insert 103 (use-package-as-one (symbol-name keyword) args
104 (with-temp-buffer 104 #'(lambda (_label arg)
105 (insert (format ";; This file is auto-generated by Emacs function: jd/manifest-generate-to-file\n%s" 105 (cond
106 `(specifications->manifest 106 ((consp arg) arg)
107 '(,@(mapcar #'(lambda (guix-package-name) 107 ((stringp arg) (list arg))
108 (concat "\"" 108 ((use-package-non-nil-symbolp arg) (symbol-name arg))
109 guix-package-name 109 (t
110 "\"\n")) 110 (use-package-error
111 jd/manifest-list))))) 111 ":pin wants an archive name (a string)"))))))
112 (pp-buffer) 112
113 (buffer-string))))) 113(defun use-package-handler/:guix-package
114 (name _keyword args rest state)
115 (let ((body (use-package-process-keywords name rest state)))
116 (use-package-concat
117 (when (consp args)
118 (mapcar #'(lambda (arg)
119 `(jd/add-package-to-manifest ,arg))
120 args))
121 body)))
122
123(add-to-list 'use-package-keywords ':guix-package)
114 124
115(jd/add-package-to-manifest "emacs") 125(jd/add-package-to-manifest "emacs")
116(jd/add-package-to-manifest "emacs-guix") 126(jd/add-package-to-manifest "emacs-guix")