From: Alex Kost <alezost@gmail.com>
To: guix-devel@gnu.org
Subject: [PATCH] emacs: devel: Add indentation rules for 'modify-phases' keywords.
Date: Sat, 17 Oct 2015 19:39:45 +0300 [thread overview]
Message-ID: <87d1wdsb3i.fsf@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 69 bytes --]
Hello, currently Emacs indents our 'modify-phases' macro like this:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-scheme, Size: 96 bytes --]
(modify-phases %standard-phases
(add-before 'build 'foo-phase
(lambda _ 'foo)))
[-- Attachment #3: Type: text/plain, Size: 11 bytes --]
or this:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: Type: text/x-scheme, Size: 88 bytes --]
(modify-phases %standard-phases
(add-before
'build 'foo-phase
(lambda _ 'foo)))
[-- Attachment #5: Type: text/plain, Size: 57 bytes --]
While IMHO it is better to have it indented like this:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: Type: text/x-scheme, Size: 86 bytes --]
(modify-phases %standard-phases
(add-before 'build 'foo-phase
(lambda _ 'foo)))
[-- Attachment #7: Type: text/plain, Size: 459 bytes --]
This patch will do it. Of course we can just use:
(put 'replace 'scheme-indent-function 1)
(put 'add-after 'scheme-indent-function 2)
(put 'add-before 'scheme-indent-function 2)
But potentially these keywords may also be used outside 'modify-phases'.
So with the attached more complex rules, 'replace', 'add-before' and
'add-after' keywords will be indented specially only when they are
inside 'modify-phases', otherwise they will be indented as usual:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: Type: text/x-scheme, Size: 146 bytes --]
(modify-phases %standard-phases
(replace 'build
(lambda _ (zero? 0))))
(do-something
(replace 'this
'that
'and-that))
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0001-emacs-devel-Add-indentation-rules-for-modify-phases-.patch --]
[-- Type: text/x-patch, Size: 1996 bytes --]
From 092dbb4460cf140c628eb4aeb4c5fff8f0083b3c Mon Sep 17 00:00:00 2001
From: Alex Kost <alezost@gmail.com>
Date: Sat, 17 Oct 2015 19:02:39 +0300
Subject: [PATCH] emacs: devel: Add indentation rules for 'modify-phases'
keywords.
* emacs/guix-devel.el: Add indentation rules for 'modify-phases' keywords.
(guix-devel-indent-modify-phases-keyword,
guix-devel-indent-modify-phases-keyword-1,
guix-devel-indent-modify-phases-keyword-2): New functions.
---
emacs/guix-devel.el | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/emacs/guix-devel.el b/emacs/guix-devel.el
index f3ad4b9..170ce1a 100644
--- a/emacs/guix-devel.el
+++ b/emacs/guix-devel.el
@@ -254,6 +254,20 @@ Each rule should have a form (SYMBOL VALUE). See `put' for details."
0)))
(lisp-indent-specform count state indent-point normal-indent)))
+(defun guix-devel-indent-modify-phases-keyword (count)
+ "Return indentation function for 'modify-phases' keywords."
+ (lambda (state indent-point normal-indent)
+ (when (ignore-errors
+ (goto-char (nth 1 state)) ; start of keyword sexp
+ (backward-up-list)
+ (looking-at "(modify-phases\\>"))
+ (lisp-indent-specform count state indent-point normal-indent))))
+
+(defalias 'guix-devel-indent-modify-phases-keyword-1
+ (guix-devel-indent-modify-phases-keyword 1))
+(defalias 'guix-devel-indent-modify-phases-keyword-2
+ (guix-devel-indent-modify-phases-keyword 2))
+
(guix-devel-scheme-indent
(bag 0)
(build-system 0)
@@ -293,7 +307,12 @@ Each rule should have a form (SYMBOL VALUE). See `put' for details."
(with-monad 1)
(with-mutex 1)
(with-store 1)
- (wrap-program 1))
+ (wrap-program 1)
+
+ ;; 'modify-phases' keywords:
+ (replace 'guix-devel-indent-modify-phases-keyword-1)
+ (add-after 'guix-devel-indent-modify-phases-keyword-2)
+ (add-before 'guix-devel-indent-modify-phases-keyword-2))
\f
(defvar guix-devel-keys-map
--
2.5.0
next reply other threads:[~2015-10-17 16:39 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-17 16:39 Alex Kost [this message]
2015-10-19 15:44 ` [PATCH] emacs: devel: Add indentation rules for 'modify-phases' keywords Ludovic Courtès
2015-10-20 14:07 ` Alex Kost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d1wdsb3i.fsf@gmail.com \
--to=alezost@gmail.com \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.