1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
(declare-function log-edit-show-diff "log-edit" ())
(defun av-skempo--guix-package-name ()
""
(unless (get-buffer "*vc-diff*")
(save-excursion (log-edit-show-diff)))
(with-current-buffer "*vc-diff*"
(goto-char (point-min))
(when (re-search-forward "\n[ +](define-public \\(\\S-+\\)" nil 'noerror)
(match-string-no-properties 1))))
(defun av-skempo--guix-package-version ()
""
(unless (get-buffer "*vc-diff*")
(save-excursion (log-edit-show-diff)))
(with-current-buffer "*vc-diff*"
(goto-char (point-min))
(search-forward "\n (define-public" nil 'noerror)
;; (search-forward "+" nil 'noerror)
(cl-flet ((string-after (str)
(save-excursion
(when (and (re-search-forward
(concat "^\\+?[[:space:]]*\\(?:(let \\)*(?(" str) nil 'noerror)
(looking-at-p "\""))
(let ((end (save-excursion (search-forward "\")" nil 'noerror))))
(when end
(forward-char)
(buffer-substring-no-properties (point) (- end 2))))))))
(let ((commit (if-let ((raw (string-after "commit ")))
(substring raw 0 8)))
(revision (string-after "revision "))
(version (string-after "version ")))
(if (and commit revision)
(concat version "-" revision "-" commit)
version)))))
(defun av-skempo--git-edited-file-names ()
""
(split-string
(shell-command-to-string "git diff-index --name-only HEAD") "\n" t))
(skempo-define-skeleton guixnew (:tag t :abbrev t :mode log-edit-mode)
(skeleton-read "Namespace: " "rrr")
'(setq PACKAGE-NAME (av-skempo--guix-package-name))
'(setq GUIX-PACKAGE-FILE (av-skempo--git-edited-file-names))
str ": Add " PACKAGE-NAME "." > "\n\n"
"* " (car GUIX-PACKAGE-FILE) " (" PACKAGE-NAME "): New variable." > "\n")
(skempo-define-skeleton guixup (:tag t :abbrev t :mode log-edit-mode)
(skeleton-read "Namespace: " "rrr")
'(setq PACKAGE-NAME (av-skempo--guix-package-name))
'(setq GUIX-EDITED-FILES (av-skempo--git-edited-file-names))
'(setq PACKAGE-VERSION (av-skempo--guix-package-version))
str ": " PACKAGE-NAME ": Update to " PACKAGE-VERSION "."> "\n\n"
"* " (car GUIX-EDITED-FILES) " (" PACKAGE-NAME "): Update to " PACKAGE-VERSION "." > "\n")