* [bug#57069] Tempel snippets
@ 2022-08-09 10:16 Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 1/4] etc: Add tempel snippets Nicolas Graves via Guix-patches via
` (3 more replies)
0 siblings, 4 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-09 10:16 UTC (permalink / raw)
To: 57069; +Cc: Nicolas Graves, Liliana Marie Prikler
The first patch of this series introduces the equivalent of current
yasnippet templates, with the alternative package tempel.
I eventually chose to make a new folder in snippets dir, and to move
yasnippet files, hope it's OK.
It works quite well for me now, but can be improved:
- I selected completing-read for completion because I'm still learning
emacs and didn't tackle completion-at-point for now. Would that be
better?
- Nested snippets don't seem to work that well (e.g. expanding
git-fetch... within the edition of an origin... expansion), I had
quite a few bugs. Seems better to finish the current snippet before
tackling a sub-snippet (for now at least).
- I couldn't match a small part of current yasnippet configuration,
currently only the part in uri when url-fetch is chosen. Sent
a "help/feature report" here https://github.com/minad/tempel/issues/65.
If this is possible, we could probably further factorize and integrate the
snippets logic, maybe to reach something like that for origin
expansion.
(origin...
(let*
((method-list
'(url-fetch
url-fetch/tarbomb
url-fetch/zipbomb
cvs-fetch
git-fetch
hg-fetch
svn-fetch
bzr-fetch))
(uri (cl-case method
('git-fetch '("(git-reference" n>
"(url " p ")" n>
"(commit " p "))"))
('svn-fetch '("(svn-reference" n>
"(url " p ")" n>
"(revision " p "))"))
('hg-fetch '("(hg-reference" n>
"(url " p ")" n>
"(changeset " p "))"))
('cvs-fetch '("(cvs-reference" n>
"(root-directory " p ")" n>
"(module " p ")" n>
"(revision " p "))"))
('bzr-fetch '("(bzr-reference" n>
"(url " p ")" n>
"(revision " p "))"))
(t '("(string-append https://" p ".tar.gz)"))))
(fname (cl-case method
('git-fetch '("(file-name (git-file-name name version))" n>))
('svn-fetch '("(file-name (string-append name \"-\" version \"-checkout\"))" n>))
('hg-fetch '("(file-name (hg-file-name name version))" n>))
('cvs-fetch '("(file-name (string-append name \"-\" version \"-checkout\"))" n>))
('bzr-fetch '("(file-name (string-append name \"-\" version \"-checkout\"))" n>))
(t '("")))))
"(origin" n>
"(method \"" (p (completing-read "method:" method-list nil t)) "\")" n>
"(uri " uri ")" n>
fname
"(sha256" n> "(base32 \"" p "\")))" n>))
The next patches are just new patches proposals, including :phases and
licenses. Also note that there were 3 or 4 missing build-systems in the
yasnippet template (might add them in a patch here).
--
Best regards,
Nicolas Graves
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH 1/4] etc: Add tempel snippets.
2022-08-09 10:16 [bug#57069] Tempel snippets Nicolas Graves via Guix-patches via
@ 2022-08-09 10:24 ` Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 2/4] etc: Add tempel snippet for :phases Nicolas Graves via Guix-patches via
` (2 more replies)
2022-08-09 16:52 ` [bug#57069] Tempel snippets Liliana Marie Prikler
` (2 subsequent siblings)
3 siblings, 3 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-09 10:24 UTC (permalink / raw)
To: 57069; +Cc: ngraves
* doc/contributing.texi:
- adding configuration description for tempel snippets.
- adapting yasnippet configuration to directory move.
* etc/snippets/tempel/*.eld: adding alternative to current yasnippets.
* etc/snippets*-mode: moved to /etc/snippets/yas/*-mode not to conflit with
tempel snippets.
---
doc/contributing.texi | 17 ++-
etc/snippets/tempel/scheme-mode.eld | 112 ++++++++++++++++++
etc/snippets/tempel/text-mode.eld | 101 ++++++++++++++++
.../{ => yas}/scheme-mode/guix-bzr-reference | 0
.../{ => yas}/scheme-mode/guix-cvs-reference | 0
.../{ => yas}/scheme-mode/guix-git-reference | 0
.../{ => yas}/scheme-mode/guix-hg-reference | 0
.../{ => yas}/scheme-mode/guix-origin | 0
.../{ => yas}/scheme-mode/guix-package | 0
.../{ => yas}/scheme-mode/guix-svn-reference | 0
.../guix-commit-message-add-cl-package | 0
.../text-mode/guix-commit-message-add-package | 0
.../guix-commit-message-remove-package | 0
.../guix-commit-message-rename-package | 0
.../guix-commit-message-update-package | 0
.../guix-commit-message-use-https-home-page | 0
16 files changed, 225 insertions(+), 5 deletions(-)
create mode 100644 etc/snippets/tempel/scheme-mode.eld
create mode 100644 etc/snippets/tempel/text-mode.eld
rename etc/snippets/{ => yas}/scheme-mode/guix-bzr-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-cvs-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-git-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-hg-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-origin (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-package (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-svn-reference (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-add-cl-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-add-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-remove-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-rename-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-update-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-use-https-home-page (100%)
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 02c7c5ae59..808d71e40a 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -320,15 +320,22 @@ s-expression, etc.
@cindex reducing boilerplate
We also provide templates for common git commit messages and package
definitions in the @file{etc/snippets} directory. These templates can
-be used with @url{https://joaotavora.github.io/yasnippet/, YASnippet} to
-expand short trigger strings to interactive text snippets. You may want
-to add the snippets directory to the @var{yas-snippet-dirs} variable in
-Emacs.
+be used to expand short trigger strings to interactive text snippets,
+with either @url{https://joaotavora.github.io/yasnippet/, YASnippet} or
+@url{https://github.com/minad/tempel/, Tempel}. You may want to add the
+@file{etc/snippets/yas} (respectively @file{etc/snippets/tempel/*.eld}
+or selected files) snippets directory to the @var{yas-snippet-dirs}
+(@var{tempel-path} resp.) variable in Emacs.
@lisp
;; @r{Assuming the Guix checkout is in ~/src/guix.}
+;; @r{Yasnippet}
(with-eval-after-load 'yasnippet
- (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
+ (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets/yas"))
+;;@r{Tempel}
+(with-eval-after-load 'tempel
+ (add-to-list 'tempel-path
+ "~/src/guix/etc/snippets/tempel/*.eld"))
@end lisp
The commit message snippets depend on @url{https://magit.vc/, Magit} to
diff --git a/etc/snippets/tempel/scheme-mode.eld b/etc/snippets/tempel/scheme-mode.eld
new file mode 100644
index 0000000000..ac48a1038b
--- /dev/null
+++ b/etc/snippets/tempel/scheme-mode.eld
@@ -0,0 +1,112 @@
+-*- mode: lisp-data -*-
+
+scheme-mode
+
+(package...
+ "(define-public " (s name) n>
+ "(package" n>
+ "(name \"" (s name) "\")" n>
+ "(version \"" p "\")" n>
+ "(source origin..." p ")" n>
+ "(build-system \""
+ (p (completing-read "build-system:"
+ '("android-ndk-build-system"
+ "ant-build-system"
+ "asdf-build-system"
+ "cargo-build-system"
+ "chicken-build-system"
+ "clojure-build-system"
+ "cmake-build-system"
+ "copy-build-system"
+ "dub-build-system"
+ "dune-build-system"
+ "emacs-build-system"
+ "font-build-system"
+ "glib-or-gtk-build-system"
+ "gnu-build-system"
+ "go-build-system"
+ "guile-build-system"
+ "haskell-build-system"
+ "julia-build-system"
+ "linux-module-build-system"
+ "maven-build-system"
+ "meson-build-system"
+ "minetest-build-system"
+ "minify-build-system"
+ "node-build-system"
+ "ocaml-build-system"
+ "perl-build-system"
+ "python-build-system"
+ "qt-build-system"
+ "r-build-system"
+ "rakudo-build-system"
+ "rebar-build-system"
+ "renpy-build-system"
+ "ruby-build-system"
+ "scons-build-system"
+ "texlive-build-system"
+ "trivial-build-system"
+ "waf-build-system")
+ nil t)) "\")" n>
+ "(home-page \"" p "\")" n>
+ "(synopsis \"" p "\")" n>
+ "(description \"" p "\")" n>
+ "(license " p ")))" n)
+
+(origin...
+ "(origin" n>
+ "(method \""
+ (p (completing-read "method:"
+ '("url-fetch"
+ "url-fetch/tarbomb"
+ "url-fetch/zipbomb"
+ "cvs-fetch"
+ "git-fetch"
+ "hg-fetch"
+ "svn-fetch"
+ "bzr-fetch")
+ nil t) method) "\")" n>
+ "(uri " (cl-case (intern method)
+ ('git-fetch "git-reference...")
+ ('svn-fetch "svn-reference...")
+ ('hg-fetch "hg-reference...")
+ ('cvs-fetch "cvs-reference...")
+ ('bzr-fetch "bzr-reference...")
+ (t "(string-append \"https://"))
+ p
+ (if (equal (substring method 0 9) "url-fetch") "\")")
+ ")" n>
+ (cl-case (intern method)
+ ('git-fetch "(file-name (git-file-name name version))\n")
+ ('hg-fetch "(file-name (hg-file-name name version))\n")
+ ('svn-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ ('cvs-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ ('bzr-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ (t "")) >
+ "(sha256" n> "(base32 \"" p "\")))")
+
+(git-reference...
+ "(git-reference" n>
+ "(url \"" p "\")" n>
+ "(commit \"" p "\"))")
+
+(svn-reference...
+ "(svn-reference" n>
+ "(url \"" p "\")" n>
+ "(revision \"" p "\"))")
+
+(cvs-reference...
+ "(cvs-reference" n>
+ "(root-directory \"" p "\")" n>
+ "(module \"" p "\")" n>
+ "(revision \"" p "\"))")
+
+(hg-reference...
+ "(hg-reference" n>
+ "(url \"" p "\")" n>
+ "(changeset \"" p "\"))")
+
+(bzr-reference...
+ "(bzr-reference" n>
+ "(url \"" p "\")" n>
+ "(revision \"" p "\"))")
diff --git a/etc/snippets/tempel/text-mode.eld b/etc/snippets/tempel/text-mode.eld
new file mode 100644
index 0000000000..a51a6719d7
--- /dev/null
+++ b/etc/snippets/tempel/text-mode.eld
@@ -0,0 +1,101 @@
+-*- mode: lisp-data -*-
+
+text-mode :when (git-commit-mode)
+
+(add
+ "gnu: Add "
+ (p
+ (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "\\+(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var ) "." n n
+ "* " (car (magit-staged-files)) " (" (s var ) "): New variable.")
+
+(remove
+ "gnu: Remove "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "\\-(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var) "." n n
+ "* " (car (magit-staged-files)) " (" (s var) "): Delete variable.")
+
+(rename
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "-(define-public " nil 'noerror)
+ (thing-at-point 'sexp 'no-properties)))
+ prev-var)
+ ": Rename package to "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "+(define-public " nil 'noerror)
+ (thing-at-point 'sexp 'no-properties)))
+ new-var) "." n n
+ "* " (car (magit-staged-files)) " (" (s prev-var) "): Define in terms of" n
+ "'deprecated-package'." n
+ "(" (s new-var) "): New variable, formerly known as \"" (s prev-var) "\".")
+
+(update
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var)
+ ": Update to "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (search-forward "name" nil 'noerror)
+ (search-forward "+" nil 'noerror) ; first change
+ (when (and (search-forward "version " nil 'noerror)
+ (looking-at-p "\""))
+ (let ((end (save-excursion (search-forward "\")" nil 'noerror))))
+ (when end
+ (forward-char)
+ (buffer-substring-no-properties (point) (- end 2))))))
+ version) "." n n
+ "* " (car (magit-staged-files)) " (" (s var) "): Update to " (s version) "."
+ (mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n)
+
+(addcl
+ "gnu: Add cl-"
+ (p (replace-regexp-in-string
+ "^cl-" "" (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "+(define-public " nil 'noerror)
+ (replace-regexp-in-string
+ "^sbcl-" ""
+ (thing-at-point 'sexp 'no-properties)))))
+ var) "." n n
+ "* " (car (magit-staged-files))
+ " (cl-" (s var) ", ecl-" (s var) ", sbcl-" (s var) "): New variables.")
+
+(https
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var)
+ ": Use HTTPS home page." n n
+ "* " (car (magit-staged-files)) " (" (s var) ")[home-page]: Use HTTPS." n
+ (mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n)
diff --git a/etc/snippets/scheme-mode/guix-bzr-reference b/etc/snippets/yas/scheme-mode/guix-bzr-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-bzr-reference
rename to etc/snippets/yas/scheme-mode/guix-bzr-reference
diff --git a/etc/snippets/scheme-mode/guix-cvs-reference b/etc/snippets/yas/scheme-mode/guix-cvs-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-cvs-reference
rename to etc/snippets/yas/scheme-mode/guix-cvs-reference
diff --git a/etc/snippets/scheme-mode/guix-git-reference b/etc/snippets/yas/scheme-mode/guix-git-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-git-reference
rename to etc/snippets/yas/scheme-mode/guix-git-reference
diff --git a/etc/snippets/scheme-mode/guix-hg-reference b/etc/snippets/yas/scheme-mode/guix-hg-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-hg-reference
rename to etc/snippets/yas/scheme-mode/guix-hg-reference
diff --git a/etc/snippets/scheme-mode/guix-origin b/etc/snippets/yas/scheme-mode/guix-origin
similarity index 100%
rename from etc/snippets/scheme-mode/guix-origin
rename to etc/snippets/yas/scheme-mode/guix-origin
diff --git a/etc/snippets/scheme-mode/guix-package b/etc/snippets/yas/scheme-mode/guix-package
similarity index 100%
rename from etc/snippets/scheme-mode/guix-package
rename to etc/snippets/yas/scheme-mode/guix-package
diff --git a/etc/snippets/scheme-mode/guix-svn-reference b/etc/snippets/yas/scheme-mode/guix-svn-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-svn-reference
rename to etc/snippets/yas/scheme-mode/guix-svn-reference
diff --git a/etc/snippets/text-mode/guix-commit-message-add-cl-package b/etc/snippets/yas/text-mode/guix-commit-message-add-cl-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-add-cl-package
rename to etc/snippets/yas/text-mode/guix-commit-message-add-cl-package
diff --git a/etc/snippets/text-mode/guix-commit-message-add-package b/etc/snippets/yas/text-mode/guix-commit-message-add-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-add-package
rename to etc/snippets/yas/text-mode/guix-commit-message-add-package
diff --git a/etc/snippets/text-mode/guix-commit-message-remove-package b/etc/snippets/yas/text-mode/guix-commit-message-remove-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-remove-package
rename to etc/snippets/yas/text-mode/guix-commit-message-remove-package
diff --git a/etc/snippets/text-mode/guix-commit-message-rename-package b/etc/snippets/yas/text-mode/guix-commit-message-rename-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-rename-package
rename to etc/snippets/yas/text-mode/guix-commit-message-rename-package
diff --git a/etc/snippets/text-mode/guix-commit-message-update-package b/etc/snippets/yas/text-mode/guix-commit-message-update-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-update-package
rename to etc/snippets/yas/text-mode/guix-commit-message-update-package
diff --git a/etc/snippets/text-mode/guix-commit-message-use-https-home-page b/etc/snippets/yas/text-mode/guix-commit-message-use-https-home-page
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-use-https-home-page
rename to etc/snippets/yas/text-mode/guix-commit-message-use-https-home-page
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH 2/4] etc: Add tempel snippet for :phases.
2022-08-09 10:24 ` [bug#57069] [PATCH 1/4] etc: Add tempel snippets Nicolas Graves via Guix-patches via
@ 2022-08-09 10:24 ` Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 3/4] etc: Add tempel snippet for license: Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 4/4] etc: Update guix-package yasnippet build-system list Nicolas Graves via Guix-patches via
2 siblings, 0 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-09 10:24 UTC (permalink / raw)
To: 57069; +Cc: ngraves
---
etc/snippets/tempel/scheme-mode.eld | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/etc/snippets/tempel/scheme-mode.eld b/etc/snippets/tempel/scheme-mode.eld
index ac48a1038b..eb209d599a 100644
--- a/etc/snippets/tempel/scheme-mode.eld
+++ b/etc/snippets/tempel/scheme-mode.eld
@@ -110,3 +110,13 @@ scheme-mode
"(bzr-reference" n>
"(url \"" p "\")" n>
"(revision \"" p "\"))")
+
+(:phases
+ ":phases (modify-phases %standard-phases" n>
+ "(" (p (completing-read "modify:"
+ '("add-before"
+ "replace"
+ "add-after"
+ "delete ")
+ nil t))
+ " '" q "))" )
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH 3/4] etc: Add tempel snippet for license:.
2022-08-09 10:24 ` [bug#57069] [PATCH 1/4] etc: Add tempel snippets Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 2/4] etc: Add tempel snippet for :phases Nicolas Graves via Guix-patches via
@ 2022-08-09 10:24 ` Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 4/4] etc: Update guix-package yasnippet build-system list Nicolas Graves via Guix-patches via
2 siblings, 0 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-09 10:24 UTC (permalink / raw)
To: 57069; +Cc: ngraves
---
etc/snippets/tempel/scheme-mode.eld | 117 ++++++++++++++++++++++++++++
1 file changed, 117 insertions(+)
diff --git a/etc/snippets/tempel/scheme-mode.eld b/etc/snippets/tempel/scheme-mode.eld
index eb209d599a..d9904ea7da 100644
--- a/etc/snippets/tempel/scheme-mode.eld
+++ b/etc/snippets/tempel/scheme-mode.eld
@@ -120,3 +120,120 @@ scheme-mode
"delete ")
nil t))
" '" q "))" )
+
+(license:
+ "license:"
+ (p (completing-read "license:"
+ '("agpl1"
+ "agpl3"
+ "agpl3+"
+ "apsl2"
+ "asl1.1"
+ "asl2.0"
+ "boost1.0"
+ "bsd-0"
+ "bsd-1"
+ "bsd-2"
+ "bsd-3"
+ "bsd-4"
+ "non-copyleft"
+ "cc0"
+ "cc-by-sa4.0"
+ "cc-by-sa3.0"
+ "cc-by-sa2.0"
+ "cc-by4.0"
+ "cc-by3.0"
+ "cc-by2.0"
+ "cddl1.0"
+ "cddl1.1"
+ "cecill"
+ "cecill-b"
+ "cecill-c"
+ "artistic2.0"
+ "clarified-artistic"
+ "copyleft-next"
+ "cpl1.0"
+ "cua-opl1.0"
+ "edl1.0"
+ "epl1.0"
+ "epl2.0"
+ "eupl1.2"
+ "expat"
+ "expat-0"
+ "freetype"
+ "giftware"
+ "gpl1"
+ "gpl1+"
+ "gpl2"
+ "gpl2+"
+ "gpl3"
+ "gpl3+"
+ "gfl1.0"
+ "fdl1.1+"
+ "fdl1.2+"
+ "fdl1.3+"
+ "freebsd-doc"
+ "opl1.0+"
+ "osl2.1"
+ "isc"
+ "ijg"
+ "ibmpl1.0"
+ "imlib2"
+ "ipa"
+ "knuth"
+ "lal1.3"
+ "lgpl2.0"
+ "lgpl2.0+"
+ "lgpl2.1"
+ "lgpl2.1+"
+ "lgpl3"
+ "lgpl3+"
+ "llgpl"
+ "lppl"
+ "lppl1.0+"
+ "lppl1.1+"
+ "lppl1.2"
+ "lppl1.2+"
+ "lppl1.3"
+ "lppl1.3+"
+ "lppl1.3a"
+ "lppl1.3a+"
+ "lppl1.3b"
+ "lppl1.3b+"
+ "lppl1.3c"
+ "lppl1.3c+"
+ "miros"
+ "mpl1.0"
+ "mpl1.1"
+ "mpl2.0"
+ "ms-pl"
+ "ncsa"
+ "nmap"
+ "ogl-psi1.0"
+ "openssl"
+ "openldap2.8"
+ "perl-license"
+ "psfl"
+ "public-domain"
+ "qpl"
+ "qwt1.0"
+ "repoze"
+ "ruby"
+ "sgifreeb2.0"
+ "silofl1.1"
+ "sleepycat"
+ "tcl/tk"
+ "vim"
+ "unicode"
+ "unlicense"
+ "w3c"
+ "wtfpl2"
+ "wxwindows3.1+"
+ "x11"
+ "x11-style"
+ "zpl2.1"
+ "zlib"
+ "hpnd"
+ "fsf-free"
+ "fsdg-compatible")
+ nil t)))
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH 4/4] etc: Update guix-package yasnippet build-system list.
2022-08-09 10:24 ` [bug#57069] [PATCH 1/4] etc: Add tempel snippets Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 2/4] etc: Add tempel snippet for :phases Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 3/4] etc: Add tempel snippet for license: Nicolas Graves via Guix-patches via
@ 2022-08-09 10:24 ` Nicolas Graves via Guix-patches via
2 siblings, 0 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-09 10:24 UTC (permalink / raw)
To: 57069; +Cc: ngraves
---
etc/snippets/yas/scheme-mode/guix-package | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/etc/snippets/yas/scheme-mode/guix-package b/etc/snippets/yas/scheme-mode/guix-package
index 9ff6f997d1..724a392f81 100644
--- a/etc/snippets/yas/scheme-mode/guix-package
+++ b/etc/snippets/yas/scheme-mode/guix-package
@@ -11,6 +11,7 @@
"ant-build-system"
"asdf-build-system"
"cargo-build-system"
+ "chicken-build-system"
"clojure-build-system"
"cmake-build-system"
"copy-build-system"
@@ -27,6 +28,7 @@
"linux-module-build-system"
"maven-build-system"
"meson-build-system"
+ "minetest-build-system"
"minify-build-system"
"node-build-system"
"ocaml-build-system"
@@ -35,6 +37,8 @@
"qt-build-system"
"r-build-system"
"rakudo-build-system"
+ "rebar-build-system"
+ "renpy-build-system"
"ruby-build-system"
"scons-build-system"
"texlive-build-system"
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] Tempel snippets
2022-08-09 10:16 [bug#57069] Tempel snippets Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 1/4] etc: Add tempel snippets Nicolas Graves via Guix-patches via
@ 2022-08-09 16:52 ` Liliana Marie Prikler
2022-08-11 6:17 ` Nicolas Graves via Guix-patches via
2022-08-11 6:07 ` [bug#57069] [PATCH v2] etc: Add tempel snippets Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 1/4] " Nicolas Graves via Guix-patches via
3 siblings, 1 reply; 20+ messages in thread
From: Liliana Marie Prikler @ 2022-08-09 16:52 UTC (permalink / raw)
To: Nicolas Graves, 57069
Am Dienstag, dem 09.08.2022 um 12:16 +0200 schrieb Nicolas Graves:
>
> The first patch of this series introduces the equivalent of current
> yasnippet templates, with the alternative package tempel.
>
> I eventually chose to make a new folder in snippets dir, and to move
> yasnippet files, hope it's OK.
>
> It works quite well for me now, but can be improved:
>
> - I selected completing-read for completion because I'm still
> learning
> emacs and didn't tackle completion-at-point for now. Would that be
> better?
Don't. Use the (s ) field of tempel. If you have corfu with capf, you
should be able to expand them. For build-system you might want to add
"-build-system" at the end, so that the user only has to type "gnu",
"maven", etc. Less fancy than the yas one, but probably just as good.
> - Nested snippets don't seem to work that well (e.g. expanding
> git-fetch... within the edition of an origin... expansion), I had
> quite a few bugs. Seems better to finish the current snippet before
> tackling a sub-snippet (for now at least).
Probably a tempel limitation. I think it works to M-RET and then
expand at point (using corfu or a tempel binding). Just printing out
the unexpanded string should be enough for that.
Cheers
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH v2] etc: Add tempel snippets.
2022-08-09 10:16 [bug#57069] Tempel snippets Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 1/4] etc: Add tempel snippets Nicolas Graves via Guix-patches via
2022-08-09 16:52 ` [bug#57069] Tempel snippets Liliana Marie Prikler
@ 2022-08-11 6:07 ` Nicolas Graves via Guix-patches via
2022-08-11 16:21 ` Liliana Marie Prikler
2022-08-12 8:58 ` [bug#57069] [PATCH v3 1/4] " Nicolas Graves via Guix-patches via
3 siblings, 1 reply; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-11 6:07 UTC (permalink / raw)
To: 57069; +Cc: ngraves
* doc/contributing.texi:
- adding configuration description for tempel snippets.
- adapting yasnippet configuration to directory move.
* etc/snippets/tempel/*.eld: adding alternative to current yasnippets.
* etc/snippets*-mode: moved to /etc/snippets/yas/*-mode not to conflit with
tempel snippets.
---
doc/contributing.texi | 17 ++-
etc/snippets/tempel/scheme-mode.eld | 113 ++++++++++++++++++
etc/snippets/tempel/text-mode.eld | 101 ++++++++++++++++
.../{ => yas}/scheme-mode/guix-bzr-reference | 0
.../{ => yas}/scheme-mode/guix-cvs-reference | 0
.../{ => yas}/scheme-mode/guix-git-reference | 0
.../{ => yas}/scheme-mode/guix-hg-reference | 0
.../{ => yas}/scheme-mode/guix-origin | 0
.../{ => yas}/scheme-mode/guix-package | 0
.../{ => yas}/scheme-mode/guix-svn-reference | 0
.../guix-commit-message-add-cl-package | 0
.../text-mode/guix-commit-message-add-package | 0
.../guix-commit-message-remove-package | 0
.../guix-commit-message-rename-package | 0
.../guix-commit-message-update-package | 0
.../guix-commit-message-use-https-home-page | 0
16 files changed, 226 insertions(+), 5 deletions(-)
create mode 100644 etc/snippets/tempel/scheme-mode.eld
create mode 100644 etc/snippets/tempel/text-mode.eld
rename etc/snippets/{ => yas}/scheme-mode/guix-bzr-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-cvs-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-git-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-hg-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-origin (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-package (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-svn-reference (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-add-cl-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-add-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-remove-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-rename-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-update-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-use-https-home-page (100%)
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 02c7c5ae59..808d71e40a 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -320,15 +320,22 @@ s-expression, etc.
@cindex reducing boilerplate
We also provide templates for common git commit messages and package
definitions in the @file{etc/snippets} directory. These templates can
-be used with @url{https://joaotavora.github.io/yasnippet/, YASnippet} to
-expand short trigger strings to interactive text snippets. You may want
-to add the snippets directory to the @var{yas-snippet-dirs} variable in
-Emacs.
+be used to expand short trigger strings to interactive text snippets,
+with either @url{https://joaotavora.github.io/yasnippet/, YASnippet} or
+@url{https://github.com/minad/tempel/, Tempel}. You may want to add the
+@file{etc/snippets/yas} (respectively @file{etc/snippets/tempel/*.eld}
+or selected files) snippets directory to the @var{yas-snippet-dirs}
+(@var{tempel-path} resp.) variable in Emacs.
@lisp
;; @r{Assuming the Guix checkout is in ~/src/guix.}
+;; @r{Yasnippet}
(with-eval-after-load 'yasnippet
- (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
+ (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets/yas"))
+;;@r{Tempel}
+(with-eval-after-load 'tempel
+ (add-to-list 'tempel-path
+ "~/src/guix/etc/snippets/tempel/*.eld"))
@end lisp
The commit message snippets depend on @url{https://magit.vc/, Magit} to
diff --git a/etc/snippets/tempel/scheme-mode.eld b/etc/snippets/tempel/scheme-mode.eld
new file mode 100644
index 0000000000..5fcd7030b8
--- /dev/null
+++ b/etc/snippets/tempel/scheme-mode.eld
@@ -0,0 +1,113 @@
+-*- mode: lisp-data -*-
+
+scheme-mode
+
+(package...
+ "(define-public " (s name) n>
+ "(package" n>
+ "(name \"" (s name) "\")" n>
+ "(version \"" p "\")" n>
+ "(source origin..." p ")" n>
+ "(build-system \""
+ (p (completing-read "build-system:"
+ '("android-ndk"
+ "ant"
+ "asdf"
+ "cargo"
+ "chicken"
+ "clojure"
+ "cmake"
+ "copy"
+ "dub"
+ "dune"
+ "emacs"
+ "font"
+ "glib-or-gtk"
+ "gnu"
+ "go"
+ "guile"
+ "haskell"
+ "julia"
+ "linux-module"
+ "maven"
+ "meson"
+ "minetest"
+ "minify"
+ "node"
+ "ocaml"
+ "perl"
+ "python"
+ "qt"
+ "r"
+ "rakudo"
+ "rebar"
+ "renpy"
+ "ruby"
+ "scons"
+ "texlive"
+ "trivial"
+ "waf")
+ nil t) "-build-system")
+ "\")" n>
+ "(home-page \"" p "\")" n>
+ "(synopsis \"" p "\")" n>
+ "(description \"" p "\")" n>
+ "(license " p ")))" n)
+
+(origin...
+ "(origin" n>
+ "(method \""
+ (p (completing-read "method:"
+ '("url-fetch"
+ "url-fetch/tarbomb"
+ "url-fetch/zipbomb"
+ "cvs-fetch"
+ "git-fetch"
+ "hg-fetch"
+ "svn-fetch"
+ "bzr-fetch")
+ nil t) method) "\")" n>
+ "(uri " (cl-case (intern method)
+ ('git-fetch "git-reference...")
+ ('svn-fetch "svn-reference...")
+ ('hg-fetch "hg-reference...")
+ ('cvs-fetch "cvs-reference...")
+ ('bzr-fetch "bzr-reference...")
+ (t "(string-append \"https://"))
+ p
+ (if (equal (substring method 0 9) "url-fetch") "\")")
+ ")" n>
+ (cl-case (intern method)
+ ('git-fetch "(file-name (git-file-name name version))\n")
+ ('hg-fetch "(file-name (hg-file-name name version))\n")
+ ('svn-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ ('cvs-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ ('bzr-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ (t "")) >
+ "(sha256" n> "(base32 \"" p "\")))")
+
+(git-reference...
+ "(git-reference" n>
+ "(url \"" p "\")" n>
+ "(commit \"" p "\"))")
+
+(svn-reference...
+ "(svn-reference" n>
+ "(url \"" p "\")" n>
+ "(revision \"" p "\"))")
+
+(cvs-reference...
+ "(cvs-reference" n>
+ "(root-directory \"" p "\")" n>
+ "(module \"" p "\")" n>
+ "(revision \"" p "\"))")
+
+(hg-reference...
+ "(hg-reference" n>
+ "(url \"" p "\")" n>
+ "(changeset \"" p "\"))")
+
+(bzr-reference...
+ "(bzr-reference" n>
+ "(url \"" p "\")" n>
+ "(revision \"" p "\"))")
diff --git a/etc/snippets/tempel/text-mode.eld b/etc/snippets/tempel/text-mode.eld
new file mode 100644
index 0000000000..a51a6719d7
--- /dev/null
+++ b/etc/snippets/tempel/text-mode.eld
@@ -0,0 +1,101 @@
+-*- mode: lisp-data -*-
+
+text-mode :when (git-commit-mode)
+
+(add
+ "gnu: Add "
+ (p
+ (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "\\+(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var ) "." n n
+ "* " (car (magit-staged-files)) " (" (s var ) "): New variable.")
+
+(remove
+ "gnu: Remove "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "\\-(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var) "." n n
+ "* " (car (magit-staged-files)) " (" (s var) "): Delete variable.")
+
+(rename
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "-(define-public " nil 'noerror)
+ (thing-at-point 'sexp 'no-properties)))
+ prev-var)
+ ": Rename package to "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "+(define-public " nil 'noerror)
+ (thing-at-point 'sexp 'no-properties)))
+ new-var) "." n n
+ "* " (car (magit-staged-files)) " (" (s prev-var) "): Define in terms of" n
+ "'deprecated-package'." n
+ "(" (s new-var) "): New variable, formerly known as \"" (s prev-var) "\".")
+
+(update
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var)
+ ": Update to "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (search-forward "name" nil 'noerror)
+ (search-forward "+" nil 'noerror) ; first change
+ (when (and (search-forward "version " nil 'noerror)
+ (looking-at-p "\""))
+ (let ((end (save-excursion (search-forward "\")" nil 'noerror))))
+ (when end
+ (forward-char)
+ (buffer-substring-no-properties (point) (- end 2))))))
+ version) "." n n
+ "* " (car (magit-staged-files)) " (" (s var) "): Update to " (s version) "."
+ (mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n)
+
+(addcl
+ "gnu: Add cl-"
+ (p (replace-regexp-in-string
+ "^cl-" "" (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "+(define-public " nil 'noerror)
+ (replace-regexp-in-string
+ "^sbcl-" ""
+ (thing-at-point 'sexp 'no-properties)))))
+ var) "." n n
+ "* " (car (magit-staged-files))
+ " (cl-" (s var) ", ecl-" (s var) ", sbcl-" (s var) "): New variables.")
+
+(https
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var)
+ ": Use HTTPS home page." n n
+ "* " (car (magit-staged-files)) " (" (s var) ")[home-page]: Use HTTPS." n
+ (mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n)
diff --git a/etc/snippets/scheme-mode/guix-bzr-reference b/etc/snippets/yas/scheme-mode/guix-bzr-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-bzr-reference
rename to etc/snippets/yas/scheme-mode/guix-bzr-reference
diff --git a/etc/snippets/scheme-mode/guix-cvs-reference b/etc/snippets/yas/scheme-mode/guix-cvs-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-cvs-reference
rename to etc/snippets/yas/scheme-mode/guix-cvs-reference
diff --git a/etc/snippets/scheme-mode/guix-git-reference b/etc/snippets/yas/scheme-mode/guix-git-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-git-reference
rename to etc/snippets/yas/scheme-mode/guix-git-reference
diff --git a/etc/snippets/scheme-mode/guix-hg-reference b/etc/snippets/yas/scheme-mode/guix-hg-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-hg-reference
rename to etc/snippets/yas/scheme-mode/guix-hg-reference
diff --git a/etc/snippets/scheme-mode/guix-origin b/etc/snippets/yas/scheme-mode/guix-origin
similarity index 100%
rename from etc/snippets/scheme-mode/guix-origin
rename to etc/snippets/yas/scheme-mode/guix-origin
diff --git a/etc/snippets/scheme-mode/guix-package b/etc/snippets/yas/scheme-mode/guix-package
similarity index 100%
rename from etc/snippets/scheme-mode/guix-package
rename to etc/snippets/yas/scheme-mode/guix-package
diff --git a/etc/snippets/scheme-mode/guix-svn-reference b/etc/snippets/yas/scheme-mode/guix-svn-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-svn-reference
rename to etc/snippets/yas/scheme-mode/guix-svn-reference
diff --git a/etc/snippets/text-mode/guix-commit-message-add-cl-package b/etc/snippets/yas/text-mode/guix-commit-message-add-cl-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-add-cl-package
rename to etc/snippets/yas/text-mode/guix-commit-message-add-cl-package
diff --git a/etc/snippets/text-mode/guix-commit-message-add-package b/etc/snippets/yas/text-mode/guix-commit-message-add-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-add-package
rename to etc/snippets/yas/text-mode/guix-commit-message-add-package
diff --git a/etc/snippets/text-mode/guix-commit-message-remove-package b/etc/snippets/yas/text-mode/guix-commit-message-remove-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-remove-package
rename to etc/snippets/yas/text-mode/guix-commit-message-remove-package
diff --git a/etc/snippets/text-mode/guix-commit-message-rename-package b/etc/snippets/yas/text-mode/guix-commit-message-rename-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-rename-package
rename to etc/snippets/yas/text-mode/guix-commit-message-rename-package
diff --git a/etc/snippets/text-mode/guix-commit-message-update-package b/etc/snippets/yas/text-mode/guix-commit-message-update-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-update-package
rename to etc/snippets/yas/text-mode/guix-commit-message-update-package
diff --git a/etc/snippets/text-mode/guix-commit-message-use-https-home-page b/etc/snippets/yas/text-mode/guix-commit-message-use-https-home-page
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-use-https-home-page
rename to etc/snippets/yas/text-mode/guix-commit-message-use-https-home-page
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] Tempel snippets
2022-08-09 16:52 ` [bug#57069] Tempel snippets Liliana Marie Prikler
@ 2022-08-11 6:17 ` Nicolas Graves via Guix-patches via
2022-08-11 15:53 ` Liliana Marie Prikler
0 siblings, 1 reply; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-11 6:17 UTC (permalink / raw)
To: Liliana Marie Prikler, 57069; +Cc: Andrew Tropin
> - I couldn't match a small part of current yasnippet configuration,
> currently only the part in uri when url-fetch is chosen. Sent
> a "help/feature report" here https://github.com/minad/tempel/issues/65.
>
> If this is possible, we could probably further factorize and integrate the
> snippets logic, maybe to reach something like that for origin
> expansion.
Daniel Mendler confirmed that recursive templates were not supported,
hence I cannot further improve snippets.
I've sent an updated patch with "-build-system" added only once at the
end.
Waiting for them to be adopted ;)
PS : it would be great to add a "snippets" output to the guix package,
so that one can use (file-append guix:snippets "/tempel/") to
include them in a guix home configuration.
--
Best regards,
Nicolas Graves
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] Tempel snippets
2022-08-11 6:17 ` Nicolas Graves via Guix-patches via
@ 2022-08-11 15:53 ` Liliana Marie Prikler
2022-08-16 4:23 ` Andrew Tropin
0 siblings, 1 reply; 20+ messages in thread
From: Liliana Marie Prikler @ 2022-08-11 15:53 UTC (permalink / raw)
To: Nicolas Graves, 57069; +Cc: Andrew Tropin
Am Donnerstag, dem 11.08.2022 um 08:17 +0200 schrieb Nicolas Graves:
>
> > - I couldn't match a small part of current yasnippet configuration,
> > currently only the part in uri when url-fetch is chosen. Sent
> > a "help/feature report" here
> > https://github.com/minad/tempel/issues/65.
> >
> > If this is possible, we could probably further factorize and
> > integrate the
> > snippets logic, maybe to reach something like that for origin
> > expansion.
>
> Daniel Mendler confirmed that recursive templates were not supported,
> hence I cannot further improve snippets. I've sent an updated patch
> with "-build-system" added only once at the end.
>
> Waiting for them to be adopted ;)
I'll reply to the actual patches with the review.
> PS : it would be great to add a "snippets" output to the guix
> package, so that one can use (file-append guix:snippets "/tempel/")
> to include them in a guix home configuration.
Note that you can (file-append (package-source guix) "etc/snippets")
Cheers
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH v2] etc: Add tempel snippets.
2022-08-11 6:07 ` [bug#57069] [PATCH v2] etc: Add tempel snippets Nicolas Graves via Guix-patches via
@ 2022-08-11 16:21 ` Liliana Marie Prikler
2022-08-12 6:20 ` Nicolas Graves via Guix-patches via
0 siblings, 1 reply; 20+ messages in thread
From: Liliana Marie Prikler @ 2022-08-11 16:21 UTC (permalink / raw)
To: Nicolas Graves, 57069
Am Donnerstag, dem 11.08.2022 um 08:07 +0200 schrieb Nicolas Graves:
> * doc/contributing.texi:
> - adding configuration description for tempel snippets.
> - adapting yasnippet configuration to directory move.
Write full sentences, don't use pseudo-lists.
> * etc/snippets/tempel/*.eld: adding alternative to current
> yasnippets.
* etc/snippets/tempel/scheme-mode.eld: New file.
* etc/snippets/tempel/text-mode.eld: New file.
I'm not too sure about the suffix here. I'd personally prefer a
suffix-less file with a mode-line.
> * etc/snippets*-mode: moved to /etc/snippets/yas/*-mode not to
Again, spell out both directories, as in:
* etc/snippets/scheme-mode: Moved from here...
* etc/snippets/yas/scheme-mode: ... to here.
> conflit with
Should be conflict, but I don't think this needs to be stated when
using the ChangeLog style as above.
> tempel snippets.
> ---
> doc/contributing.texi | 17 ++-
> etc/snippets/tempel/scheme-mode.eld | 113
> ++++++++++++++++++
> etc/snippets/tempel/text-mode.eld | 101 ++++++++++++++++
> .../{ => yas}/scheme-mode/guix-bzr-reference | 0
> .../{ => yas}/scheme-mode/guix-cvs-reference | 0
> .../{ => yas}/scheme-mode/guix-git-reference | 0
> .../{ => yas}/scheme-mode/guix-hg-reference | 0
> .../{ => yas}/scheme-mode/guix-origin | 0
> .../{ => yas}/scheme-mode/guix-package | 0
> .../{ => yas}/scheme-mode/guix-svn-reference | 0
> .../guix-commit-message-add-cl-package | 0
> .../text-mode/guix-commit-message-add-package | 0
> .../guix-commit-message-remove-package | 0
> .../guix-commit-message-rename-package | 0
> .../guix-commit-message-update-package | 0
> .../guix-commit-message-use-https-home-page | 0
> 16 files changed, 226 insertions(+), 5 deletions(-)
> create mode 100644 etc/snippets/tempel/scheme-mode.eld
> create mode 100644 etc/snippets/tempel/text-mode.eld
> rename etc/snippets/{ => yas}/scheme-mode/guix-bzr-reference (100%)
> rename etc/snippets/{ => yas}/scheme-mode/guix-cvs-reference (100%)
> rename etc/snippets/{ => yas}/scheme-mode/guix-git-reference (100%)
> rename etc/snippets/{ => yas}/scheme-mode/guix-hg-reference (100%)
> rename etc/snippets/{ => yas}/scheme-mode/guix-origin (100%)
> rename etc/snippets/{ => yas}/scheme-mode/guix-package (100%)
> rename etc/snippets/{ => yas}/scheme-mode/guix-svn-reference (100%)
> rename etc/snippets/{ => yas}/text-mode/guix-commit-message-add-cl-
> package (100%)
> rename etc/snippets/{ => yas}/text-mode/guix-commit-message-add-
> package (100%)
> rename etc/snippets/{ => yas}/text-mode/guix-commit-message-remove-
> package (100%)
> rename etc/snippets/{ => yas}/text-mode/guix-commit-message-rename-
> package (100%)
> rename etc/snippets/{ => yas}/text-mode/guix-commit-message-update-
> package (100%)
> rename etc/snippets/{ => yas}/text-mode/guix-commit-message-use-
> https-home-page (100%)
>
> diff --git a/doc/contributing.texi b/doc/contributing.texi
> index 02c7c5ae59..808d71e40a 100644
> --- a/doc/contributing.texi
> +++ b/doc/contributing.texi
> @@ -320,15 +320,22 @@ s-expression, etc.
> @cindex reducing boilerplate
> We also provide templates for common git commit messages and package
> definitions in the @file{etc/snippets} directory. These templates
> can
> -be used with @url{https://joaotavora.github.io/yasnippet/,
> YASnippet} to
> -expand short trigger strings to interactive text snippets. You may
> want
> -to add the snippets directory to the @var{yas-snippet-dirs} variable
> in
> -Emacs.
> +be used to expand short trigger strings to interactive text
> snippets,
> +with either @url{https://joaotavora.github.io/yasnippet/, YASnippet}
> or
> +@url{https://github.com/minad/tempel/, Tempel}. You may want to add
> the
> +@file{etc/snippets/yas} (respectively
> @file{etc/snippets/tempel/*.eld}
> +or selected files) snippets directory to the @var{yas-snippet-dirs}
> +(@var{tempel-path} resp.) variable in Emacs.
You probably want to reorganize this a little.
"We also provide templates for common git commit messages and package
definitions in the @file{etc/snippets} directory. If you use
YASnippet, you may want to <yasnippet configuration>. If you use
Tempel, you may want to <tempel configuration>."
>
> @lisp
> ;; @r{Assuming the Guix checkout is in ~/src/guix.}
> +;; @r{Yasnippet}
> (with-eval-after-load 'yasnippet
> - (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
> + (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets/yas"))
> +;;@r{Tempel}
> +(with-eval-after-load 'tempel
> + (add-to-list 'tempel-path
> + "~/src/guix/etc/snippets/tempel/*.eld"))
> @end lisp
>
> The commit message snippets depend on @url{https://magit.vc/, Magit}
> to
> diff --git a/etc/snippets/tempel/scheme-mode.eld
> b/etc/snippets/tempel/scheme-mode.eld
> new file mode 100644
> index 0000000000..5fcd7030b8
> --- /dev/null
> +++ b/etc/snippets/tempel/scheme-mode.eld
> @@ -0,0 +1,113 @@
> +-*- mode: lisp-data -*-
> +
> +scheme-mode
> +
> +(package...
> + "(define-public " (s name) n>
> + "(package" n>
Style-wise, I think n> "(package" is better than the other way round.
You can also n > and n > on subsequent lines for clarity.
> + "(name \"" (s name) "\")" n>
> + "(version \"" p "\")" n>
> + "(source origin..." p ")" n>
I don't think you want that p here.
> + "(build-system \""
> + (p (completing-read "build-system:"
> + '("android-ndk"
> + "ant"
> + "asdf"
> + "cargo"
> + "chicken"
> + "clojure"
> + "cmake"
> + "copy"
> + "dub"
> + "dune"
> + "emacs"
> + "font"
> + "glib-or-gtk"
> + "gnu"
> + "go"
> + "guile"
> + "haskell"
> + "julia"
> + "linux-module"
> + "maven"
> + "meson"
> + "minetest"
> + "minify"
> + "node"
> + "ocaml"
> + "perl"
> + "python"
> + "qt"
> + "r"
> + "rakudo"
> + "rebar"
> + "renpy"
> + "ruby"
> + "scons"
> + "texlive"
> + "trivial"
> + "waf")
> + nil t) "-build-system")
I'd suggest skipping the completing-read and just (p "gnu"). Most
build systems should be easy enough to type without autocompletion.
> + "\")" n>
> + "(home-page \"" p "\")" n>
> + "(synopsis \"" p "\")" n>
> + "(description \"" p "\")" n>
> + "(license " p ")))" n)
> +
> +(origin...
> + "(origin" n>
> + "(method \""
> + (p (completing-read "method:"
> + '("url-fetch"
> + "url-fetch/tarbomb"
> + "url-fetch/zipbomb"
> + "cvs-fetch"
> + "git-fetch"
> + "hg-fetch"
> + "svn-fetch"
> + "bzr-fetch")
> + nil t) method) "\")" n>
Here, I think (p "url-fetch"), but (s "method") might also work.
> + "(uri " (cl-case (intern method)
> + ('git-fetch "git-reference...")
> + ('svn-fetch "svn-reference...")
> + ('hg-fetch "hg-reference...")
> + ('cvs-fetch "cvs-reference...")
> + ('bzr-fetch "bzr-reference...")
> + (t "(string-append \"https://"))
Will this cl-case be dynamically recomputed? I wonder if we can get
the result of the previous p/s here...
> + p
> + (if (equal (substring method 0 9) "url-fetch") "\")")
> + ")" n>
> + (cl-case (intern method)
> + ('git-fetch "(file-name (git-file-name name version))\n")
> + ('hg-fetch "(file-name (hg-file-name name version))\n")
> + ('svn-fetch "(file-name (string-append name \"-\" version \"-
> checkout\"))\n")
> + ('cvs-fetch "(file-name (string-append name \"-\" version \"-
> checkout\"))\n")
> + ('bzr-fetch "(file-name (string-append name \"-\" version \"-
> checkout\"))\n")
> + (t "")) >
Rather than that I think adding a template (git-file-name...) which
expands to (file-name (git-file-name (p "name") (p "version")) and
variants for the others is a better idea.
> + "(sha256" n> "(base32 \"" p "\")))")
> +
> +(git-reference...
> + "(git-reference" n>
> + "(url \"" p "\")" n>
> + "(commit \"" p "\"))")
> +
> +(svn-reference...
> + "(svn-reference" n>
> + "(url \"" p "\")" n>
> + "(revision \"" p "\"))")
> +
> +(cvs-reference...
> + "(cvs-reference" n>
> + "(root-directory \"" p "\")" n>
> + "(module \"" p "\")" n>
> + "(revision \"" p "\"))")
> +
> +(hg-reference...
> + "(hg-reference" n>
> + "(url \"" p "\")" n>
> + "(changeset \"" p "\"))")
> +
> +(bzr-reference...
> + "(bzr-reference" n>
> + "(url \"" p "\")" n>
> + "(revision \"" p "\"))")
> diff --git a/etc/snippets/tempel/text-mode.eld
> b/etc/snippets/tempel/text-mode.eld
> new file mode 100644
> index 0000000000..a51a6719d7
> --- /dev/null
> +++ b/etc/snippets/tempel/text-mode.eld
> @@ -0,0 +1,101 @@
> +-*- mode: lisp-data -*-
> +
> +text-mode :when (git-commit-mode)
> +
> +(add
> + "gnu: Add "
> + (p
> + (with-temp-buffer
> + (magit-git-wash #'magit-diff-wash-diffs
> + "diff" "--staged")
> + (goto-char (point-min))
> + (when (re-search-forward "\\+(define-public \\(\\S-+\\)" nil
> 'noerror)
> + (match-string-no-properties 1)))
> + var ) "." n n
> + "* " (car (magit-staged-files)) " (" (s var ) "): New variable.")
Pro tip: add a space after add (i.e. add\ ) or use add... as the name.
This way, you guard against premature expansion in corfu and other
packages likely to be used in combination with tempel.
> +(remove
> + "gnu: Remove "
> + (p (with-temp-buffer
> + (magit-git-wash #'magit-diff-wash-diffs
> + "diff" "--staged")
> + (goto-char (point-min))
> + (when (re-search-forward "\\-(define-public \\(\\S-+\\)" nil
> 'noerror)
> + (match-string-no-properties 1)))
> + var) "." n n
> + "* " (car (magit-staged-files)) " (" (s var) "): Delete variable.")
> +
> +(rename
> + "gnu: "
> + (p (with-temp-buffer
> + (magit-git-wash #'magit-diff-wash-diffs
> + "diff" "--staged")
> + (beginning-of-buffer)
> + (when (search-forward "-(define-public " nil 'noerror)
> + (thing-at-point 'sexp 'no-properties)))
> + prev-var)
> + ": Rename package to "
> + (p (with-temp-buffer
> + (magit-git-wash #'magit-diff-wash-diffs
> + "diff" "--staged")
> + (beginning-of-buffer)
> + (when (search-forward "+(define-public " nil 'noerror)
> + (thing-at-point 'sexp 'no-properties)))
> + new-var) "." n n
> + "* " (car (magit-staged-files)) " (" (s prev-var) "): Define in
> terms of" n
> + "'deprecated-package'." n
> + "(" (s new-var) "): New variable, formerly known as \"" (s prev-
> var) "\".")
> +
> +(update
> + "gnu: "
> + (p (with-temp-buffer
> + (magit-git-wash #'magit-diff-wash-diffs
> + "diff" "--staged")
> + (goto-char (point-min))
> + (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil
> 'noerror)
> + (match-string-no-properties 1)))
> + var)
> + ": Update to "
> + (p (with-temp-buffer
> + (magit-git-wash #'magit-diff-wash-diffs
> + "diff" "--staged")
> + (goto-char (point-min))
> + (search-forward "name" nil 'noerror)
> + (search-forward "+" nil 'noerror) ; first change
> + (when (and (search-forward "version " nil 'noerror)
> + (looking-at-p "\""))
> + (let ((end (save-excursion (search-forward "\")" nil
> 'noerror))))
> + (when end
> + (forward-char)
> + (buffer-substring-no-properties (point) (- end 2))))))
> + version) "." n n
> + "* " (car (magit-staged-files)) " (" (s var) "): Update to " (s
> version) "."
> + (mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-
> files))) n)
> +
> +(addcl
> + "gnu: Add cl-"
> + (p (replace-regexp-in-string
> + "^cl-" "" (with-temp-buffer
> + (magit-git-wash #'magit-diff-wash-diffs
> + "diff" "--staged")
> + (beginning-of-buffer)
> + (when (search-forward "+(define-public " nil
> 'noerror)
> + (replace-regexp-in-string
> + "^sbcl-" ""
> + (thing-at-point 'sexp 'no-properties)))))
> + var) "." n n
> + "* " (car (magit-staged-files))
> + " (cl-" (s var) ", ecl-" (s var) ", sbcl-" (s var) "): New
> variables.")
> +
> +(https
> + "gnu: "
> + (p (with-temp-buffer
> + (magit-git-wash #'magit-diff-wash-diffs
> + "diff" "--staged")
> + (goto-char (point-min))
> + (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil
> 'noerror)
> + (match-string-no-properties 1)))
> + var)
> + ": Use HTTPS home page." n n
> + "* " (car (magit-staged-files)) " (" (s var) ")[home-page]: Use
> HTTPS." n
> + (mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-
> files))) n)
Cheers
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH v2] etc: Add tempel snippets.
2022-08-11 16:21 ` Liliana Marie Prikler
@ 2022-08-12 6:20 ` Nicolas Graves via Guix-patches via
2022-08-30 9:51 ` Liliana Marie Prikler
0 siblings, 1 reply; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-12 6:20 UTC (permalink / raw)
To: Liliana Marie Prikler, 57069
On 2022-08-11 18:21, Liliana Marie Prikler wrote:
> I'm not too sure about the suffix here. I'd personally prefer a
> suffix-less file with a mode-line.
OK, I thought it was necessary because of a previous failed attempt, but
it seems to work. The tempel path cannot be a directory though, it is
necessary to put a wildcard (at least using this version of TempEL).
>> +text-mode :when (git-commit-mode)
Here I have a bug when magit has never been opened before opening a
text-mode file, saying that git-commit-mode is not defined. Not sure
what the best way to resolve this is. Will investigate that.
> I'd suggest skipping the completing-read and just (p "gnu"). Most
> build systems should be easy enough to type without autocompletion.
But then you have to know the name and loose the listing if you're a
beginner and not sure. I'm fine with both options. I will follow your
suggestion if you confirm that you took this type of user into account
and still prefer just (p "gnu").
> Here, I think (p "url-fetch"), but (s "method") might also work.
I'm not sure I understand what you meant here. Can you write the final
method you would get this way?
> Will this cl-case be dynamically recomputed? I wonder if we can get
> the result of the previous p/s here...
Yes it is recomputed. p/s stores the variable and for evaluations "Named
fields are lexically bound." It works when tested, we can get the result
of the previous p. As Daniel Mendler stressed here
(https://github.com/minad/tempel/issues/65), there is no possibility to
do a recursive template i.e. with a FORM evaluating to elements of a
snippet. So the best thing we might do with conditionals is to return a
string.
> Rather than that I think adding a template (git-file-name...) which
> expands to (file-name (git-file-name (p "name") (p "version")) and
> variants for the others is a better idea.
In most guix packages, it is left as simply name and version strings,
since they are defined for the package itself. I took the same approah
as the yasnippet template, since these field are almost always left
untouched. I don't see the benefit of this other approach.
Your other comments have been taken into account, I'm sending an updated
series as soon as I'm done with the git-commit-mode issue. Feel free to
send an idea for this issue if you have one!
--
Best regards,
Nicolas Graves
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH v3 1/4] etc: Add tempel snippets.
2022-08-09 10:16 [bug#57069] Tempel snippets Nicolas Graves via Guix-patches via
` (2 preceding siblings ...)
2022-08-11 6:07 ` [bug#57069] [PATCH v2] etc: Add tempel snippets Nicolas Graves via Guix-patches via
@ 2022-08-12 8:58 ` Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 2/4] etc: Add tempel snippet for :phases Nicolas Graves via Guix-patches via
` (2 more replies)
3 siblings, 3 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-12 8:58 UTC (permalink / raw)
To: 57069; +Cc: ngraves
* doc/contributing.texi:
Adding configuration description for TempEL snippets and adapting yasnippet
configuration to the directory move.
* etc/snippets/tempel/scheme-mode: New file.
* etc/snippets/tempel/text-mode: New file.
* etc/snippets/scheme-mode: Moved from here...
* etc/snippets/yas/scheme-mode: ... to here.
* etc/snippets/text-mode: Moved from here...
* etc/snippets/yas/text-mode: ... to here.
---
doc/contributing.texi | 16 ++-
etc/snippets/tempel/scheme-mode | 114 ++++++++++++++++++
etc/snippets/tempel/text-mode | 101 ++++++++++++++++
.../{ => yas}/scheme-mode/guix-bzr-reference | 0
.../{ => yas}/scheme-mode/guix-cvs-reference | 0
.../{ => yas}/scheme-mode/guix-git-reference | 0
.../{ => yas}/scheme-mode/guix-hg-reference | 0
.../{ => yas}/scheme-mode/guix-origin | 0
.../{ => yas}/scheme-mode/guix-package | 0
.../{ => yas}/scheme-mode/guix-svn-reference | 0
.../guix-commit-message-add-cl-package | 0
.../text-mode/guix-commit-message-add-package | 0
.../guix-commit-message-remove-package | 0
.../guix-commit-message-rename-package | 0
.../guix-commit-message-update-package | 0
.../guix-commit-message-use-https-home-page | 0
16 files changed, 227 insertions(+), 4 deletions(-)
create mode 100644 etc/snippets/tempel/scheme-mode
create mode 100644 etc/snippets/tempel/text-mode
rename etc/snippets/{ => yas}/scheme-mode/guix-bzr-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-cvs-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-git-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-hg-reference (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-origin (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-package (100%)
rename etc/snippets/{ => yas}/scheme-mode/guix-svn-reference (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-add-cl-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-add-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-remove-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-rename-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-update-package (100%)
rename etc/snippets/{ => yas}/text-mode/guix-commit-message-use-https-home-page (100%)
diff --git a/doc/contributing.texi b/doc/contributing.texi
index 02c7c5ae59..655ce182de 100644
--- a/doc/contributing.texi
+++ b/doc/contributing.texi
@@ -320,15 +320,23 @@ s-expression, etc.
@cindex reducing boilerplate
We also provide templates for common git commit messages and package
definitions in the @file{etc/snippets} directory. These templates can
-be used with @url{https://joaotavora.github.io/yasnippet/, YASnippet} to
-expand short trigger strings to interactive text snippets. You may want
-to add the snippets directory to the @var{yas-snippet-dirs} variable in
+be used to expand short trigger strings to interactive text snippets. If
+you use @url{https://joaotavora.github.io/yasnippet/, YASnippet}, you
+may want to add the @file{etc/snippets/yas} snippets directory to the
+@var{yas-snippet-dirs} variable. If you use
+@url{https://github.com/minad/tempel/, Tempel}, you may want to add the
+@file{etc/snippets/tempel/*} path to the @var{tempel-path} variable in
Emacs.
@lisp
;; @r{Assuming the Guix checkout is in ~/src/guix.}
+;; @r{Yasnippet}
(with-eval-after-load 'yasnippet
- (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
+ (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets/yas"))
+;;@r{Tempel}
+(with-eval-after-load 'tempel
+ (add-to-list 'tempel-path
+ "~/src/guix/etc/snippets/tempel/*"))
@end lisp
The commit message snippets depend on @url{https://magit.vc/, Magit} to
diff --git a/etc/snippets/tempel/scheme-mode b/etc/snippets/tempel/scheme-mode
new file mode 100644
index 0000000000..386c9e653f
--- /dev/null
+++ b/etc/snippets/tempel/scheme-mode
@@ -0,0 +1,114 @@
+-*- mode: lisp-data -*-
+
+scheme-mode
+
+(package...
+ "(define-public " (s name)
+ n> "(package"
+ n> "(name \"" (s name) "\")"
+ n> "(version \"" p "\")"
+ n> "(source origin...)"
+ n> "(build-system \""
+ (p (completing-read "build-system:"
+ '("android-ndk"
+ "ant"
+ "asdf"
+ "cargo"
+ "chicken"
+ "clojure"
+ "cmake"
+ "copy"
+ "dub"
+ "dune"
+ "emacs"
+ "font"
+ "glib-or-gtk"
+ "gnu"
+ "go"
+ "guile"
+ "haskell"
+ "julia"
+ "linux-module"
+ "maven"
+ "meson"
+ "minetest"
+ "minify"
+ "node"
+ "ocaml"
+ "perl"
+ "python"
+ "qt"
+ "r"
+ "rakudo"
+ "rebar"
+ "renpy"
+ "ruby"
+ "scons"
+ "texlive"
+ "trivial"
+ "waf")
+ nil t) "-build-system")
+ "\")"
+ n> "(home-page \"" p "\")"
+ n> "(synopsis \"" p "\")"
+ n> "(description \"" p "\")"
+ n> "(license " p ")))" n)
+
+(origin...
+ "(origin"
+ n> "(method \""
+ (p (completing-read "method:"
+ '("url-fetch"
+ "url-fetch/tarbomb"
+ "url-fetch/zipbomb"
+ "cvs-fetch"
+ "git-fetch"
+ "hg-fetch"
+ "svn-fetch"
+ "bzr-fetch")
+ nil t) method) "\")"
+ n> "(uri " (cl-case (intern method)
+ ('git-fetch "git-reference...")
+ ('svn-fetch "svn-reference...")
+ ('hg-fetch "hg-reference...")
+ ('cvs-fetch "cvs-reference...")
+ ('bzr-fetch "bzr-reference...")
+ (t "(string-append \"https://"))
+ p
+ (if (equal (substring method 0 9) "url-fetch") "\")")
+ ")"
+ n> (cl-case (intern method)
+ ('git-fetch "(file-name (git-file-name name version))\n")
+ ('hg-fetch "(file-name (hg-file-name name version))\n")
+ ('svn-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ ('cvs-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ ('bzr-fetch "(file-name (string-append name \"-\" version \"-checkout\"))\n")
+ (t ""))
+ > "(sha256"
+ n> "(base32 \"" p "\")))")
+
+(git-reference...
+ "(git-reference"
+ n> "(url \"" p "\")"
+ n> "(commit \"" p "\"))")
+
+(svn-reference...
+ "(svn-reference"
+ n> "(url \"" p "\")"
+ n> "(revision \"" p "\"))")
+
+(cvs-reference...
+ "(cvs-reference"
+ n> "(root-directory \"" p "\")"
+ n> "(module \"" p "\")"
+ n> "(revision \"" p "\"))")
+
+(hg-reference...
+ "(hg-reference"
+ n> "(url \"" p "\")"
+ n> "(changeset \"" p "\"))")
+
+(bzr-reference...
+ "(bzr-reference"
+ n> "(url \"" p "\")"
+ n> "(revision \"" p "\"))")
diff --git a/etc/snippets/tempel/text-mode b/etc/snippets/tempel/text-mode
new file mode 100644
index 0000000000..a1400aac69
--- /dev/null
+++ b/etc/snippets/tempel/text-mode
@@ -0,0 +1,101 @@
+-*- mode: lisp-data -*-
+
+text-mode :when (and (fboundp 'git-commit-mode) (git-commit-mode))
+
+(add\
+ "gnu: Add "
+ (p
+ (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "\\+(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var ) "." n n
+ "* " (car (magit-staged-files)) " (" (s var ) "): New variable.")
+
+(remove\
+ "gnu: Remove "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "\\-(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var) "." n n
+ "* " (car (magit-staged-files)) " (" (s var) "): Delete variable.")
+
+(rename\
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "-(define-public " nil 'noerror)
+ (thing-at-point 'sexp 'no-properties)))
+ prev-var)
+ ": Rename package to "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "+(define-public " nil 'noerror)
+ (thing-at-point 'sexp 'no-properties)))
+ new-var) "." n n
+ "* " (car (magit-staged-files)) " (" (s prev-var) "): Define in terms of" n
+ "'deprecated-package'." n
+ "(" (s new-var) "): New variable, formerly known as \"" (s prev-var) "\".")
+
+(update\
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var)
+ ": Update to "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (search-forward "name" nil 'noerror)
+ (search-forward "+" nil 'noerror) ; first change
+ (when (and (search-forward "version " nil 'noerror)
+ (looking-at-p "\""))
+ (let ((end (save-excursion (search-forward "\")" nil 'noerror))))
+ (when end
+ (forward-char)
+ (buffer-substring-no-properties (point) (- end 2))))))
+ version) "." n n
+ "* " (car (magit-staged-files)) " (" (s var) "): Update to " (s version) "."
+ (mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n)
+
+(addcl\
+ "gnu: Add cl-"
+ (p (replace-regexp-in-string
+ "^cl-" "" (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (beginning-of-buffer)
+ (when (search-forward "+(define-public " nil 'noerror)
+ (replace-regexp-in-string
+ "^sbcl-" ""
+ (thing-at-point 'sexp 'no-properties)))))
+ var) "." n n
+ "* " (car (magit-staged-files))
+ " (cl-" (s var) ", ecl-" (s var) ", sbcl-" (s var) "): New variables.")
+
+(https\
+ "gnu: "
+ (p (with-temp-buffer
+ (magit-git-wash #'magit-diff-wash-diffs
+ "diff" "--staged")
+ (goto-char (point-min))
+ (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror)
+ (match-string-no-properties 1)))
+ var)
+ ": Use HTTPS home page." n n
+ "* " (car (magit-staged-files)) " (" (s var) ")[home-page]: Use HTTPS." n
+ (mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n)
diff --git a/etc/snippets/scheme-mode/guix-bzr-reference b/etc/snippets/yas/scheme-mode/guix-bzr-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-bzr-reference
rename to etc/snippets/yas/scheme-mode/guix-bzr-reference
diff --git a/etc/snippets/scheme-mode/guix-cvs-reference b/etc/snippets/yas/scheme-mode/guix-cvs-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-cvs-reference
rename to etc/snippets/yas/scheme-mode/guix-cvs-reference
diff --git a/etc/snippets/scheme-mode/guix-git-reference b/etc/snippets/yas/scheme-mode/guix-git-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-git-reference
rename to etc/snippets/yas/scheme-mode/guix-git-reference
diff --git a/etc/snippets/scheme-mode/guix-hg-reference b/etc/snippets/yas/scheme-mode/guix-hg-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-hg-reference
rename to etc/snippets/yas/scheme-mode/guix-hg-reference
diff --git a/etc/snippets/scheme-mode/guix-origin b/etc/snippets/yas/scheme-mode/guix-origin
similarity index 100%
rename from etc/snippets/scheme-mode/guix-origin
rename to etc/snippets/yas/scheme-mode/guix-origin
diff --git a/etc/snippets/scheme-mode/guix-package b/etc/snippets/yas/scheme-mode/guix-package
similarity index 100%
rename from etc/snippets/scheme-mode/guix-package
rename to etc/snippets/yas/scheme-mode/guix-package
diff --git a/etc/snippets/scheme-mode/guix-svn-reference b/etc/snippets/yas/scheme-mode/guix-svn-reference
similarity index 100%
rename from etc/snippets/scheme-mode/guix-svn-reference
rename to etc/snippets/yas/scheme-mode/guix-svn-reference
diff --git a/etc/snippets/text-mode/guix-commit-message-add-cl-package b/etc/snippets/yas/text-mode/guix-commit-message-add-cl-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-add-cl-package
rename to etc/snippets/yas/text-mode/guix-commit-message-add-cl-package
diff --git a/etc/snippets/text-mode/guix-commit-message-add-package b/etc/snippets/yas/text-mode/guix-commit-message-add-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-add-package
rename to etc/snippets/yas/text-mode/guix-commit-message-add-package
diff --git a/etc/snippets/text-mode/guix-commit-message-remove-package b/etc/snippets/yas/text-mode/guix-commit-message-remove-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-remove-package
rename to etc/snippets/yas/text-mode/guix-commit-message-remove-package
diff --git a/etc/snippets/text-mode/guix-commit-message-rename-package b/etc/snippets/yas/text-mode/guix-commit-message-rename-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-rename-package
rename to etc/snippets/yas/text-mode/guix-commit-message-rename-package
diff --git a/etc/snippets/text-mode/guix-commit-message-update-package b/etc/snippets/yas/text-mode/guix-commit-message-update-package
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-update-package
rename to etc/snippets/yas/text-mode/guix-commit-message-update-package
diff --git a/etc/snippets/text-mode/guix-commit-message-use-https-home-page b/etc/snippets/yas/text-mode/guix-commit-message-use-https-home-page
similarity index 100%
rename from etc/snippets/text-mode/guix-commit-message-use-https-home-page
rename to etc/snippets/yas/text-mode/guix-commit-message-use-https-home-page
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH v3 2/4] etc: Add tempel snippet for :phases.
2022-08-12 8:58 ` [bug#57069] [PATCH v3 1/4] " Nicolas Graves via Guix-patches via
@ 2022-08-12 8:58 ` Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 3/4] etc: Add tempel snippet for license: Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 4/4] etc: Update guix-package yasnippet build-system list Nicolas Graves via Guix-patches via
2 siblings, 0 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-12 8:58 UTC (permalink / raw)
To: 57069; +Cc: ngraves
---
etc/snippets/tempel/scheme-mode | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/etc/snippets/tempel/scheme-mode b/etc/snippets/tempel/scheme-mode
index 386c9e653f..34625420be 100644
--- a/etc/snippets/tempel/scheme-mode
+++ b/etc/snippets/tempel/scheme-mode
@@ -112,3 +112,13 @@ scheme-mode
"(bzr-reference"
n> "(url \"" p "\")"
n> "(revision \"" p "\"))")
+
+(:phases
+ ":phases (modify-phases %standard-phases" n>
+ "(" (p (completing-read "modify:"
+ '("add-before"
+ "replace"
+ "add-after"
+ "delete ")
+ nil t))
+ " '" q "))" )
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH v3 3/4] etc: Add tempel snippet for license:.
2022-08-12 8:58 ` [bug#57069] [PATCH v3 1/4] " Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 2/4] etc: Add tempel snippet for :phases Nicolas Graves via Guix-patches via
@ 2022-08-12 8:58 ` Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 4/4] etc: Update guix-package yasnippet build-system list Nicolas Graves via Guix-patches via
2 siblings, 0 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-12 8:58 UTC (permalink / raw)
To: 57069; +Cc: ngraves
---
etc/snippets/tempel/scheme-mode | 117 ++++++++++++++++++++++++++++++++
1 file changed, 117 insertions(+)
diff --git a/etc/snippets/tempel/scheme-mode b/etc/snippets/tempel/scheme-mode
index 34625420be..1a354923fa 100644
--- a/etc/snippets/tempel/scheme-mode
+++ b/etc/snippets/tempel/scheme-mode
@@ -122,3 +122,120 @@ scheme-mode
"delete ")
nil t))
" '" q "))" )
+
+(license:
+ "license:"
+ (p (completing-read "license:"
+ '("agpl1"
+ "agpl3"
+ "agpl3+"
+ "apsl2"
+ "asl1.1"
+ "asl2.0"
+ "boost1.0"
+ "bsd-0"
+ "bsd-1"
+ "bsd-2"
+ "bsd-3"
+ "bsd-4"
+ "non-copyleft"
+ "cc0"
+ "cc-by-sa4.0"
+ "cc-by-sa3.0"
+ "cc-by-sa2.0"
+ "cc-by4.0"
+ "cc-by3.0"
+ "cc-by2.0"
+ "cddl1.0"
+ "cddl1.1"
+ "cecill"
+ "cecill-b"
+ "cecill-c"
+ "artistic2.0"
+ "clarified-artistic"
+ "copyleft-next"
+ "cpl1.0"
+ "cua-opl1.0"
+ "edl1.0"
+ "epl1.0"
+ "epl2.0"
+ "eupl1.2"
+ "expat"
+ "expat-0"
+ "freetype"
+ "giftware"
+ "gpl1"
+ "gpl1+"
+ "gpl2"
+ "gpl2+"
+ "gpl3"
+ "gpl3+"
+ "gfl1.0"
+ "fdl1.1+"
+ "fdl1.2+"
+ "fdl1.3+"
+ "freebsd-doc"
+ "opl1.0+"
+ "osl2.1"
+ "isc"
+ "ijg"
+ "ibmpl1.0"
+ "imlib2"
+ "ipa"
+ "knuth"
+ "lal1.3"
+ "lgpl2.0"
+ "lgpl2.0+"
+ "lgpl2.1"
+ "lgpl2.1+"
+ "lgpl3"
+ "lgpl3+"
+ "llgpl"
+ "lppl"
+ "lppl1.0+"
+ "lppl1.1+"
+ "lppl1.2"
+ "lppl1.2+"
+ "lppl1.3"
+ "lppl1.3+"
+ "lppl1.3a"
+ "lppl1.3a+"
+ "lppl1.3b"
+ "lppl1.3b+"
+ "lppl1.3c"
+ "lppl1.3c+"
+ "miros"
+ "mpl1.0"
+ "mpl1.1"
+ "mpl2.0"
+ "ms-pl"
+ "ncsa"
+ "nmap"
+ "ogl-psi1.0"
+ "openssl"
+ "openldap2.8"
+ "perl-license"
+ "psfl"
+ "public-domain"
+ "qpl"
+ "qwt1.0"
+ "repoze"
+ "ruby"
+ "sgifreeb2.0"
+ "silofl1.1"
+ "sleepycat"
+ "tcl/tk"
+ "vim"
+ "unicode"
+ "unlicense"
+ "w3c"
+ "wtfpl2"
+ "wxwindows3.1+"
+ "x11"
+ "x11-style"
+ "zpl2.1"
+ "zlib"
+ "hpnd"
+ "fsf-free"
+ "fsdg-compatible")
+ nil t)))
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH v3 4/4] etc: Update guix-package yasnippet build-system list.
2022-08-12 8:58 ` [bug#57069] [PATCH v3 1/4] " Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 2/4] etc: Add tempel snippet for :phases Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 3/4] etc: Add tempel snippet for license: Nicolas Graves via Guix-patches via
@ 2022-08-12 8:58 ` Nicolas Graves via Guix-patches via
2 siblings, 0 replies; 20+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2022-08-12 8:58 UTC (permalink / raw)
To: 57069; +Cc: ngraves
---
etc/snippets/yas/scheme-mode/guix-package | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/etc/snippets/yas/scheme-mode/guix-package b/etc/snippets/yas/scheme-mode/guix-package
index 9ff6f997d1..724a392f81 100644
--- a/etc/snippets/yas/scheme-mode/guix-package
+++ b/etc/snippets/yas/scheme-mode/guix-package
@@ -11,6 +11,7 @@
"ant-build-system"
"asdf-build-system"
"cargo-build-system"
+ "chicken-build-system"
"clojure-build-system"
"cmake-build-system"
"copy-build-system"
@@ -27,6 +28,7 @@
"linux-module-build-system"
"maven-build-system"
"meson-build-system"
+ "minetest-build-system"
"minify-build-system"
"node-build-system"
"ocaml-build-system"
@@ -35,6 +37,8 @@
"qt-build-system"
"r-build-system"
"rakudo-build-system"
+ "rebar-build-system"
+ "renpy-build-system"
"ruby-build-system"
"scons-build-system"
"texlive-build-system"
--
2.37.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#57069] Tempel snippets
2022-08-11 15:53 ` Liliana Marie Prikler
@ 2022-08-16 4:23 ` Andrew Tropin
2022-08-16 16:09 ` Liliana Marie Prikler
0 siblings, 1 reply; 20+ messages in thread
From: Andrew Tropin @ 2022-08-16 4:23 UTC (permalink / raw)
To: Liliana Marie Prikler, Nicolas Graves, 57069
[-- Attachment #1: Type: text/plain, Size: 1245 bytes --]
On 2022-08-11 17:53, Liliana Marie Prikler wrote:
> Am Donnerstag, dem 11.08.2022 um 08:17 +0200 schrieb Nicolas Graves:
>>
>> > - I couldn't match a small part of current yasnippet configuration,
>> > currently only the part in uri when url-fetch is chosen. Sent
>> > a "help/feature report" here
>> > https://github.com/minad/tempel/issues/65.
>> >
>> > If this is possible, we could probably further factorize and
>> > integrate the
>> > snippets logic, maybe to reach something like that for origin
>> > expansion.
>>
>> Daniel Mendler confirmed that recursive templates were not supported,
>> hence I cannot further improve snippets. I've sent an updated patch
>> with "-build-system" added only once at the end.
>>
>> Waiting for them to be adopted ;)
> I'll reply to the actual patches with the review.
>
>> PS : it would be great to add a "snippets" output to the guix
>> package, so that one can use (file-append guix:snippets "/tempel/")
>> to include them in a guix home configuration.
> Note that you can (file-append (package-source guix) "etc/snippets")
Probably not yet, there is no build phase, which copies etc/snippets to
out so far.
>
> Cheers
--
Best regards,
Andrew Tropin
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] Tempel snippets
2022-08-16 4:23 ` Andrew Tropin
@ 2022-08-16 16:09 ` Liliana Marie Prikler
2022-08-17 4:26 ` Andrew Tropin
0 siblings, 1 reply; 20+ messages in thread
From: Liliana Marie Prikler @ 2022-08-16 16:09 UTC (permalink / raw)
To: Andrew Tropin, Nicolas Graves, 57069
Am Dienstag, dem 16.08.2022 um 07:23 +0300 schrieb Andrew Tropin:
> On 2022-08-11 17:53, Liliana Marie Prikler wrote:
>
> > Am Donnerstag, dem 11.08.2022 um 08:17 +0200 schrieb Nicolas
> > Graves:
> > >
> > > > - I couldn't match a small part of current yasnippet
> > > > configuration,
> > > > currently only the part in uri when url-fetch is chosen. Sent
> > > > a "help/feature report" here
> > > > https://github.com/minad/tempel/issues/65.
> > > >
> > > > If this is possible, we could probably further factorize and
> > > > integrate the
> > > > snippets logic, maybe to reach something like that for origin
> > > > expansion.
> > >
> > > Daniel Mendler confirmed that recursive templates were not
> > > supported,
> > > hence I cannot further improve snippets. I've sent an updated
> > > patch
> > > with "-build-system" added only once at the end.
> > >
> > > Waiting for them to be adopted ;)
> > I'll reply to the actual patches with the review.
> >
> > > PS : it would be great to add a "snippets" output to the guix
> > > package, so that one can use (file-append guix:snippets
> > > "/tempel/")
> > > to include them in a guix home configuration.
> > Note that you can (file-append (package-source guix)
> > "etc/snippets")
>
> Probably not yet, there is no build phase, which copies etc/snippets
> to out so far.
You don't need a build phase to copy from an origin, do you?
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] Tempel snippets
2022-08-16 16:09 ` Liliana Marie Prikler
@ 2022-08-17 4:26 ` Andrew Tropin
0 siblings, 0 replies; 20+ messages in thread
From: Andrew Tropin @ 2022-08-17 4:26 UTC (permalink / raw)
To: Liliana Marie Prikler, Nicolas Graves, 57069
[-- Attachment #1: Type: text/plain, Size: 1653 bytes --]
On 2022-08-16 18:09, Liliana Marie Prikler wrote:
> Am Dienstag, dem 16.08.2022 um 07:23 +0300 schrieb Andrew Tropin:
>> On 2022-08-11 17:53, Liliana Marie Prikler wrote:
>>
>> > Am Donnerstag, dem 11.08.2022 um 08:17 +0200 schrieb Nicolas
>> > Graves:
>> > >
>> > > > - I couldn't match a small part of current yasnippet
>> > > > configuration,
>> > > > currently only the part in uri when url-fetch is chosen. Sent
>> > > > a "help/feature report" here
>> > > > https://github.com/minad/tempel/issues/65.
>> > > >
>> > > > If this is possible, we could probably further factorize and
>> > > > integrate the
>> > > > snippets logic, maybe to reach something like that for origin
>> > > > expansion.
>> > >
>> > > Daniel Mendler confirmed that recursive templates were not
>> > > supported,
>> > > hence I cannot further improve snippets. I've sent an updated
>> > > patch
>> > > with "-build-system" added only once at the end.
>> > >
>> > > Waiting for them to be adopted ;)
>> > I'll reply to the actual patches with the review.
>> >
>> > > PS : it would be great to add a "snippets" output to the guix
>> > > package, so that one can use (file-append guix:snippets
>> > > "/tempel/")
>> > > to include them in a guix home configuration.
>> > Note that you can (file-append (package-source guix)
>> > "etc/snippets")
>>
>> Probably not yet, there is no build phase, which copies etc/snippets
>> to out so far.
> You don't need a build phase to copy from an origin, do you?
Oh, I missed (package-source ...) call. You are right, this should do
the trick!
--
Best regards,
Andrew Tropin
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#57069] [PATCH v2] etc: Add tempel snippets.
2022-08-12 6:20 ` Nicolas Graves via Guix-patches via
@ 2022-08-30 9:51 ` Liliana Marie Prikler
2022-08-30 9:53 ` bug#57069: " Liliana Marie Prikler
0 siblings, 1 reply; 20+ messages in thread
From: Liliana Marie Prikler @ 2022-08-30 9:51 UTC (permalink / raw)
To: Nicolas Graves, 57069
Am Freitag, dem 12.08.2022 um 08:20 +0200 schrieb Nicolas Graves:
> > > +text-mode :when (git-commit-mode)
>
> Here I have a bug when magit has never been opened before opening a
> text-mode file, saying that git-commit-mode is not defined. Not sure
> what the best way to resolve this is. Will investigate that.
A strange error indeed. I encounter a similar one if I use emacs as
EDITOR in git.
> > I'd suggest skipping the completing-read and just (p "gnu"). Most
> > build systems should be easy enough to type without autocompletion.
>
> But then you have to know the name and loose the listing if you're a
> beginner and not sure. I'm fine with both options. I will follow your
> suggestion if you confirm that you took this type of user into
> account and still prefer just (p "gnu").
The reason I prefer (p "gnu") is because completing-read completely
breaks tempel. Yes, I'm aware that this won't yield complete feature
parity between tempel and yasnippet, but you have to consider that
these *are* distinct systems after all.
FWIW you could try using NOINSERT t for the p, but I'd hazard a guess
that that still won't give you the prompt at the right time with the
correct safeties.
> > Here, I think (p "url-fetch"), but (s "method") might also work.
>
> I'm not sure I understand what you meant here. Can you write the
> final method you would get this way?
I got (p "url-fetch" method), which uses "url-fetch" as default value
and binds method.
> > Will this cl-case be dynamically recomputed? I wonder if we can
> > get the result of the previous p/s here...
>
> Yes it is recomputed. p/s stores the variable and for evaluations
> "Named fields are lexically bound." It works when tested, we can get
> the result of the previous p. As Daniel Mendler stressed here
> (https://github.com/minad/tempel/issues/65), there is no possibility
> to do a recursive template i.e. with a FORM evaluating to elements of
> a snippet. So the best thing we might do with conditionals is to
> return a string.
Bummer, but I got something working out of it anyway.
> > Rather than that I think adding a template (git-file-name...) which
> > expands to (file-name (git-file-name (p "name") (p "version")) and
> > variants for the others is a better idea.
>
> In most guix packages, it is left as simply name and version strings,
> since they are defined for the package itself. I took the same
> approach as the yasnippet template, since these field are almost
> always left untouched. I don't see the benefit of this other
> approach.
The benefit would have been that auto-completion is relatively cheap,
so folks could just write git, see git-file-name, TAB, M-RET, done.
> Your other comments have been taken into account, I'm sending an
> updated series as soon as I'm done with the git-commit-mode issue.
> Feel free to send an idea for this issue if you have one!
I see you already solved it, so I'm now processing v3. As laid out
above, I replaced all occurrences of completing-read with simple ps, as
those are easier to work with in tempel. I did keep your cl-case to
conditionally insert git-file-name, etc. but I fixed it up a little so
that it's dynamically recomputed. I also fixed up the documentation
and dropped the license: completion as it was a completing-read once
more. You could replace those with a bunch of self-expanding snippets,
but I think geiser and/or dabbrev ought to have us covered here.
Cheers
^ permalink raw reply [flat|nested] 20+ messages in thread
* bug#57069: [PATCH v2] etc: Add tempel snippets.
2022-08-30 9:51 ` Liliana Marie Prikler
@ 2022-08-30 9:53 ` Liliana Marie Prikler
0 siblings, 0 replies; 20+ messages in thread
From: Liliana Marie Prikler @ 2022-08-30 9:53 UTC (permalink / raw)
To: Nicolas Graves, 57069-done
Am Dienstag, dem 30.08.2022 um 11:51 +0200 schrieb Liliana Marie
Prikler:
> I see you already solved it, so I'm now processing v3...
Marking as done, since I did push the modified v3
Cheers
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2022-08-30 9:54 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-09 10:16 [bug#57069] Tempel snippets Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 1/4] etc: Add tempel snippets Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 2/4] etc: Add tempel snippet for :phases Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 3/4] etc: Add tempel snippet for license: Nicolas Graves via Guix-patches via
2022-08-09 10:24 ` [bug#57069] [PATCH 4/4] etc: Update guix-package yasnippet build-system list Nicolas Graves via Guix-patches via
2022-08-09 16:52 ` [bug#57069] Tempel snippets Liliana Marie Prikler
2022-08-11 6:17 ` Nicolas Graves via Guix-patches via
2022-08-11 15:53 ` Liliana Marie Prikler
2022-08-16 4:23 ` Andrew Tropin
2022-08-16 16:09 ` Liliana Marie Prikler
2022-08-17 4:26 ` Andrew Tropin
2022-08-11 6:07 ` [bug#57069] [PATCH v2] etc: Add tempel snippets Nicolas Graves via Guix-patches via
2022-08-11 16:21 ` Liliana Marie Prikler
2022-08-12 6:20 ` Nicolas Graves via Guix-patches via
2022-08-30 9:51 ` Liliana Marie Prikler
2022-08-30 9:53 ` bug#57069: " Liliana Marie Prikler
2022-08-12 8:58 ` [bug#57069] [PATCH v3 1/4] " Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 2/4] etc: Add tempel snippet for :phases Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 3/4] etc: Add tempel snippet for license: Nicolas Graves via Guix-patches via
2022-08-12 8:58 ` [bug#57069] [PATCH v3 4/4] etc: Update guix-package yasnippet build-system list Nicolas Graves via Guix-patches via
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.