diff options
| -rw-r--r-- | doc/contributing.texi | 28 | ||||
| -rw-r--r-- | etc/snippets/scheme-mode/guix-cvs-reference | 8 | ||||
| -rw-r--r-- | etc/snippets/scheme-mode/guix-git-reference | 7 | ||||
| -rw-r--r-- | etc/snippets/scheme-mode/guix-hg-reference | 7 | ||||
| -rw-r--r-- | etc/snippets/scheme-mode/guix-origin | 23 | ||||
| -rw-r--r-- | etc/snippets/scheme-mode/guix-package | 34 | ||||
| -rw-r--r-- | etc/snippets/scheme-mode/guix-svn-reference | 7 | ||||
| -rw-r--r-- | etc/snippets/text-mode/guix-commit-message-add-package | 8 | ||||
| -rw-r--r-- | etc/snippets/text-mode/guix-commit-message-update-package | 9 |
9 files changed, 131 insertions, 0 deletions
diff --git a/doc/contributing.texi b/doc/contributing.texi index 1dd3ea8e1d3..01f8aad9fb1 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi | |||
| @@ -193,6 +193,34 @@ facilities to directly operate on the syntax tree, such as raising an | |||
| 193 | s-expression or wrapping it, swallowing or rejecting the following | 193 | s-expression or wrapping it, swallowing or rejecting the following |
| 194 | s-expression, etc. | 194 | s-expression, etc. |
| 195 | 195 | ||
| 196 | @cindex code snippets | ||
| 197 | @cindex templates | ||
| 198 | @cindex reducing boilerplate | ||
| 199 | We also provide templates for common git commit messages and package | ||
| 200 | definitions in the @file{etc/snippets} directory. These templates can | ||
| 201 | be used with @url{http://joaotavora.github.io/yasnippet/, YASnippet} to | ||
| 202 | expand short trigger strings to interactive text snippets. You may want | ||
| 203 | to add the snippets directory to the @var{yas-snippet-dirs} variable in | ||
| 204 | Emacs. | ||
| 205 | |||
| 206 | @lisp | ||
| 207 | ;; @r{Assuming the Guix checkout is in ~/src/guix.} | ||
| 208 | (with-eval-after-load 'yasnippet | ||
| 209 | (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets")) | ||
| 210 | @end lisp | ||
| 211 | |||
| 212 | The commit message snippets depend on @url{https://magit.vc/, Magit} to | ||
| 213 | display staged files. When editing a commit message type @code{add} | ||
| 214 | followed by @kbd{TAB} to insert a commit message template for adding a | ||
| 215 | package; type @code{update} followed by @kbd{TAB} to insert a template | ||
| 216 | for updating a package. | ||
| 217 | |||
| 218 | The main snippet for @code{scheme-mode} is triggered by typing | ||
| 219 | @code{package...} followed by @kbd{TAB}. This snippet also inserts the | ||
| 220 | trigger string @code{origin...}, which can be expanded further. The | ||
| 221 | @code{origin} snippet in turn may insert other trigger strings ending on | ||
| 222 | @code{...}, which also can be expanded further. | ||
| 223 | |||
| 196 | 224 | ||
| 197 | @node Coding Style | 225 | @node Coding Style |
| 198 | @section Coding Style | 226 | @section Coding Style |
diff --git a/etc/snippets/scheme-mode/guix-cvs-reference b/etc/snippets/scheme-mode/guix-cvs-reference new file mode 100644 index 00000000000..fbc5034b663 --- /dev/null +++ b/etc/snippets/scheme-mode/guix-cvs-reference | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | # -*- mode: snippet -*- | ||
| 2 | # name: guix-cvs-reference | ||
| 3 | # key: cvs-reference... | ||
| 4 | # -- | ||
| 5 | (cvs-reference | ||
| 6 | (root-directory "${1:root-directory}") | ||
| 7 | (module "${2:module}") | ||
| 8 | (revision "${3:revision}")) \ No newline at end of file | ||
diff --git a/etc/snippets/scheme-mode/guix-git-reference b/etc/snippets/scheme-mode/guix-git-reference new file mode 100644 index 00000000000..29ca6a9c54b --- /dev/null +++ b/etc/snippets/scheme-mode/guix-git-reference | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # -*- mode: snippet -*- | ||
| 2 | # name: guix-git-reference | ||
| 3 | # key: git-reference... | ||
| 4 | # -- | ||
| 5 | (git-reference | ||
| 6 | (url "$1") | ||
| 7 | (commit ${2:commit})) \ No newline at end of file | ||
diff --git a/etc/snippets/scheme-mode/guix-hg-reference b/etc/snippets/scheme-mode/guix-hg-reference new file mode 100644 index 00000000000..95de16daaea --- /dev/null +++ b/etc/snippets/scheme-mode/guix-hg-reference | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # -*- mode: snippet -*- | ||
| 2 | # name: guix-hg-reference | ||
| 3 | # key: hg-reference... | ||
| 4 | # -- | ||
| 5 | (hg-reference | ||
| 6 | (url "$1") | ||
| 7 | (changeset ${2:changeset})) \ No newline at end of file | ||
diff --git a/etc/snippets/scheme-mode/guix-origin b/etc/snippets/scheme-mode/guix-origin new file mode 100644 index 00000000000..68d47135dbd --- /dev/null +++ b/etc/snippets/scheme-mode/guix-origin | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | # -*- mode: snippet -*- | ||
| 2 | # name: guix-origin | ||
| 3 | # key: origin... | ||
| 4 | # -- | ||
| 5 | (origin | ||
| 6 | (method ${1:$$(yas-choose-value "url-fetch" | ||
| 7 | "url-fetch/tarbomb" | ||
| 8 | "url-fetch/zipbomb" | ||
| 9 | "cvs-fetch" | ||
| 10 | "git-fetch" | ||
| 11 | "hg-fetch" | ||
| 12 | "svn-fetch")}) | ||
| 13 | (uri ${1:$(cond ((equal yas-text "git-fetch") "git-reference...") | ||
| 14 | ((equal yas-text "svn-fetch") "svn-reference...") | ||
| 15 | ((equal yas-text "hg-fetch") "hg-reference...") | ||
| 16 | ((equal yas-text "cvs-fetch") "cvs-reference...") | ||
| 17 | (t "(string-append \\"https://\\" version \\".tar.gz\\")"))}$0) | ||
| 18 | ${1:$(cond ((member yas-text '("git-fetch" "svn-fetch" "hg-fetch" "cvs-fetch")) | ||
| 19 | "(file-name (string-append name \\"-\\" version \\"-checkout\\"))") | ||
| 20 | (t ""))} | ||
| 21 | (sha256 | ||
| 22 | (base32 | ||
| 23 | "$2"))) \ No newline at end of file | ||
diff --git a/etc/snippets/scheme-mode/guix-package b/etc/snippets/scheme-mode/guix-package new file mode 100644 index 00000000000..d392e820934 --- /dev/null +++ b/etc/snippets/scheme-mode/guix-package | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | # -*- mode: snippet -*- | ||
| 2 | # name: guix-package | ||
| 3 | # key: package... | ||
| 4 | # -- | ||
| 5 | (define-public $1 | ||
| 6 | (package | ||
| 7 | (name "$1") | ||
| 8 | (version "$2") | ||
| 9 | (source origin...$0) | ||
| 10 | (build-system ${3:$$(yas-choose-value "ant-build-system" | ||
| 11 | "asdf-build-system" | ||
| 12 | "cargo-build-system" | ||
| 13 | "cmake-build-system" | ||
| 14 | "dub-build-system" | ||
| 15 | "emacs-build-system" | ||
| 16 | "font-build-system" | ||
| 17 | "glib-or-gtk-build-system" | ||
| 18 | "gnu-build-system" | ||
| 19 | "go-build-system" | ||
| 20 | "haskell-build-system" | ||
| 21 | "meson-build-system" | ||
| 22 | "minify-build-system" | ||
| 23 | "ocaml-build-system" | ||
| 24 | "perl-build-system" | ||
| 25 | "python-build-system" | ||
| 26 | "r-build-system" | ||
| 27 | "ruby-build-system" | ||
| 28 | "texlive-build-system" | ||
| 29 | "trivial-build-system" | ||
| 30 | "waf-build-system")}) | ||
| 31 | (home-page "$4") | ||
| 32 | (synopsis "$5") | ||
| 33 | (description "$6") | ||
| 34 | (license $7))) \ No newline at end of file | ||
diff --git a/etc/snippets/scheme-mode/guix-svn-reference b/etc/snippets/scheme-mode/guix-svn-reference new file mode 100644 index 00000000000..7d897dc690d --- /dev/null +++ b/etc/snippets/scheme-mode/guix-svn-reference | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # -*- mode: snippet -*- | ||
| 2 | # name: guix-svn-reference | ||
| 3 | # key: svn-reference... | ||
| 4 | # -- | ||
| 5 | (svn-reference | ||
| 6 | (url "$1") | ||
| 7 | (revision ${2:svn-revision})) \ No newline at end of file | ||
diff --git a/etc/snippets/text-mode/guix-commit-message-add-package b/etc/snippets/text-mode/guix-commit-message-add-package new file mode 100644 index 00000000000..1aebe8a7637 --- /dev/null +++ b/etc/snippets/text-mode/guix-commit-message-add-package | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | # -*- mode: snippet -*- | ||
| 2 | # name: guix-commit-message-add-package | ||
| 3 | # key: add | ||
| 4 | # condition: git-commit-mode | ||
| 5 | # -- | ||
| 6 | gnu: Add $1. | ||
| 7 | |||
| 8 | * `(car (magit-staged-files))` ($1): New variable. \ No newline at end of file | ||
diff --git a/etc/snippets/text-mode/guix-commit-message-update-package b/etc/snippets/text-mode/guix-commit-message-update-package new file mode 100644 index 00000000000..79fcf7c6e39 --- /dev/null +++ b/etc/snippets/text-mode/guix-commit-message-update-package | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | # -*- mode: snippet -*- | ||
| 2 | # name: guix-commit-message-update-package | ||
| 3 | # key: update | ||
| 4 | # condition: git-commit-mode | ||
| 5 | # -- | ||
| 6 | gnu: $1: Update to $2. | ||
| 7 | |||
| 8 | * `(car (magit-staged-files))` ($1): Update to $2.$0 | ||
| 9 | `(mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files)) "\n")` \ No newline at end of file | ||
