Fixing scheme-indent-function.
Commit Message
Ludovic Courtès (2016-05-26 00:49 +0300) wrote:
> Alex Kost <alezost@gmail.com> skribis:
>
>> Ludovic Courtès (2016-05-22 00:03 +0300) wrote:
>>
>>> Alex Kost <alezost@gmail.com> skribis:
>
> [...]
>
>>>> The source is here:
>>>> <http://www.netris.org/~mhw/scheme-indent-function.el>.
>>>>
>>>> This is a usual problem (I would say an Emacs bug) that people face
>>>> with, and those who know about it, use the mentioned modified version
>>>> 'scheme-indent-function'.
>>>>
>>>> So what about patching our emacs package to fix scheme-indent-function?
>>>> I can make a patch if it's reasonable.
>>>
>>> I think we should submit it to bug-emacs@gnu.org first. Thoughts?
>>
>> I also think so. IIUC it's Mark and you who found this bug and came up
>> with this fix, so I hope one of you will submit it :-)
>
> Aha, well done! Mark? :-)
>
>> But as it may take a long time until this fix will go to emacs, I think
>> it would be good to patch our emacs package now.
>
> Okay, let’s make an exception for this one. Would you like to take care
> of it?
Yes, the patch is attached.
Comments
Alex Kost <alezost@gmail.com> skribis:
> From 1044ea4ba6e1549dbdaeaca58d321c02ca70d1e6 Mon Sep 17 00:00:00 2001
> From: Alex Kost <alezost@gmail.com>
> Date: Thu, 26 May 2016 11:45:16 +0300
> Subject: [PATCH] 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.
OK, thank you!
Ludo’.
From 1044ea4ba6e1549dbdaeaca58d321c02ca70d1e6 Mon Sep 17 00:00:00 2001
From: Alex Kost <alezost@gmail.com>
Date: Thu, 26 May 2016 11:45:16 +0300
Subject: [PATCH] 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.
---
gnu/local.mk | 1 +
gnu/packages/emacs.scm | 1 +
.../patches/emacs-fix-scheme-indent-function.patch | 29 ++++++++++++++++++++++
3 files changed, 31 insertions(+)
create mode 100644 gnu/packages/patches/emacs-fix-scheme-indent-function.patch
@@ -468,6 +468,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 \
@@ -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
new file mode 100644
@@ -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))
--
2.7.3