summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Kost <alezost@gmail.com>2016-05-26 11:45:16 +0300
committerAlex Kost <alezost@gmail.com>2016-05-30 13:09:43 +0300
commit4509ec72a4f7034e9a7087e802a84bbe04f4c12c (patch)
tree4c0976aa15ec9f05d75e6ffe0968bdf081384ef2
parent5f1ba08953dfa44aee9efe4d38a50ffb3d949dc2 (diff)
gnu: emacs: Fix indentation of scheme keyword lists.
* gnu/packages/patches/emacs-fix-scheme-indent-function.patch: New patch. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/emacs.scm (emacs)[source]: Use it.
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/emacs.scm1
-rw-r--r--gnu/packages/patches/emacs-fix-scheme-indent-function.patch29
3 files changed, 31 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 66538e69cb..6110d2d784 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -472,6 +472,7 @@ dist_patch_DATA = \
%D%/packages/patches/elfutils-tests-ptrace.patch \
%D%/packages/patches/einstein-build.patch \
%D%/packages/patches/emacs-exec-path.patch \
+ %D%/packages/patches/emacs-fix-scheme-indent-function.patch \
%D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \
%D%/packages/patches/emacs-source-date-epoch.patch \
%D%/packages/patches/eudev-rules-directory.patch \
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 5d6db5ae11..7d0427d071 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -80,6 +80,7 @@
(base32
"0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))
(patches (search-patches "emacs-exec-path.patch"
+ "emacs-fix-scheme-indent-function.patch"
"emacs-source-date-epoch.patch"))
(modules '((guix build utils)))
(snippet
diff --git a/gnu/packages/patches/emacs-fix-scheme-indent-function.patch b/gnu/packages/patches/emacs-fix-scheme-indent-function.patch
new file mode 100644
index 0000000000..c5a426802c
--- /dev/null
+++ b/gnu/packages/patches/emacs-fix-scheme-indent-function.patch
@@ -0,0 +1,29 @@
+Fix 'scheme-indent-function' to indent s-expressions starting with a keyword
+properly, like this:
+
+(#:foo 1
+ #:bar 2)
+
+instead of like this:
+
+(#:foo 1
+ #:bar 2)
+
+The fix is made by Mark H Weaver <mhw@netris.org>:
+<http://www.netris.org/~mhw/scheme-indent-function.el>
+
+--- a/lisp/progmodes/scheme.el
++++ b/lisp/progmodes/scheme.el
+@@ -482,6 +482,12 @@
+ (> (length function) 3)
+ (string-match "\\`def" function)))
+ (lisp-indent-defform state indent-point))
++ ((and (null method)
++ (> (length function) 1)
++ ;; The '#' in '#:' seems to get lost, not sure why
++ (string-match "\\`:" function))
++ (let ((lisp-body-indent 1))
++ (lisp-indent-defform state indent-point)))
+ ((integerp method)
+ (lisp-indent-specform method state
+ indent-point normal-indent))