Alex Kost <alez...@gmail.com> skribis: >> ;; For Guix g-expressions. >> (font-lock-add-keywords 'scheme-mode >> '(("#~" . font-lock-keyword-face) >> ("#\\$" . font-lock-keyword-face) >> ("#\\+" . font-lock-keyword-face))) > > Great, what about the attached patch for adding these ones?
Looks good. >> Similarly .dir-locals.el has ‘modify-syntax-entry’ stuff for gexps that >> could maybe go to guix-devel.el? > > Yes, they could. So as you mention it, there is another thing I would > like to add — complex indentation rules. Specifically, inherited > packages are automatically indented like this: > > (package (inherit foo) > (name "foo") > ...) > > or this: > > (package > (inherit foo) > (name "foo") > ...) > > while we want it to be: > > (package (inherit foo) > (name "foo") > ...) > > The following code may be used to handle this indentation: > > (defun guix-devel-package-indent (state indent-point normal-indent) > (let ((count (if (and (ignore-errors (down-list) t) > (looking-at "inherit\\>")) > 1 > 0))) > (lisp-indent-specform count state indent-point normal-indent))) > > (put 'package 'scheme-indent-function 'guix-devel-package-indent) Nice! I like it, I think it would be a nice addition. At the same time I wonder if defining sophisticated indentation rules is a good idea in general. (Though this one was already defined anyway.) > But it wouldn't work reliably because of ".dir-locals.el", as > 'scheme-indent-function' property will be overridden every time a scheme > file from git repo is visited. So my proposition is: what about moving > all indentation rules from ".dir-locals.el" to "emacs/guix-devel.el"? > So 'guix-devel-mode' will be responsible for all indenting, highlighting > and other guix-specific things. WDYT? Good question. .dir-locals.el includes a bunch of internal rules that do not make sense outside. For those who do make sense outside, such as rules for ‘package’, I think having them in .dir-locals.el has the advantage that Emacs users cannot escape them inadvertently. With guix-devel.el, there’s a greater chance of people not loading it. Unless .dir-locals.el has something like: (eval . (load "emacs/guix-devel.el")) ;… ? Thoughts? > From 13ebd00178d1f6139da4c1f76a2e358935ce16f0 Mon Sep 17 00:00:00 2001 > From: Alex Kost <alez...@gmail.com> > Date: Sat, 26 Sep 2015 22:42:07 +0300 > Subject: [PATCH] emacs: devel: Highlight gexp symbols. > MIME-Version: 1.0 > Content-Type: text/plain; charset=UTF-8 > Content-Transfer-Encoding: 8bit > > Suggested by Ludovic Courtès <l...@gnu.org>. > > * emacs/guix-devel.el (guix-devel-gexp-symbol): New face. > (guix-devel-font-lock-keywords): Adjust to handle gexp symbols. OK. Thanks, Ludo’.