summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-01-20 14:43:43 +0100
committerLudovic Courtès <ludo@gnu.org>2017-01-20 21:39:17 +0100
commit830d4c1fcdff7be199e66cd70a5048264b54a151 (patch)
tree1429c26aef5a6b3ae8b5d7b2e26fecc32cf57205
parent7386a0481c26d694110deb3c0822b6317c4c4abc (diff)
downloadguix-830d4c1fcdff7be199e66cd70a5048264b54a151.tar.gz
etc: indent-code.el: Add indentation info for non-Guix Scheme constructs.
* etc/indent-code.el.in (guix-syntax--scheme-indent): New macro.
Use it.
-rwxr-xr-xetc/indent-code.el.in52
1 files changed, 52 insertions, 0 deletions
diff --git a/etc/indent-code.el.in b/etc/indent-code.el.in
index 7556b30cc8..68ad72c562 100755
--- a/etc/indent-code.el.in
+++ b/etc/indent-code.el.in
@@ -34,6 +34,58 @@
     (hack-dir-local-variables)
     (hack-local-variables-apply)))
 
+;; Add indentation info for Scheme constructs that are not Guix-specific.
+;; This is normally provided by Geiser but this file is for people who may not
+;; be running Geiser, so we just copy it here (from 'geiser-syntax.el').
+(defmacro guix-syntax--scheme-indent (&rest pairs)
+  `(progn ,@(mapcar (lambda (p)
+                      `(put ',(car p) 'scheme-indent-function ',(cadr p)))
+                    pairs)))
+
+(guix-syntax--scheme-indent
+ (and-let* 1)
+ (case-lambda 0)
+ (catch defun)
+ (class defun)
+ (dynamic-wind 0)
+ (guard 1)
+ (let*-values 1)
+ (let-values 1)
+ (let/ec 1)
+ (letrec* 1)
+ (match 1)
+ (match-lambda 0)
+ (match-lambda* 0)
+ (match-let scheme-let-indent)
+ (match-let* 1)
+ (match-letrec 1)
+ (opt-lambda 1)
+ (parameterize 1)
+ (parameterize* 1)
+ (receive 2)
+ (require-extension 0)
+ (syntax-case 2)
+ (test-approximate 1)
+ (test-assert 1)
+ (test-eq 1)
+ (test-equal 1)
+ (test-eqv 1)
+ (test-group-with-cleanup 1)
+ (test-runner-on-bad-count! 1)
+ (test-runner-on-bad-end-name! 1)
+ (test-runner-on-final! 1)
+ (test-runner-on-group-begin! 1)
+ (test-runner-on-group-end! 1)
+ (test-runner-on-test-begin! 1)
+ (test-runner-on-test-end! 1)
+ (test-with-runner 1)
+ (unless 1)
+ (when 1)
+ (while 1)
+ (with-exception-handler 1)
+ (with-syntax 1))
+
+
 (pcase command-line-args-left
   (`(,file-name ,package-name)
    ;; Indent the definition of PACKAGE-NAME in FILE-NAME.