所以Emacs非常擅长编辑Scheme / Racket / Lisp代码。它做的一件好事是当你键入如下代码时:
(define (make-position-table)
(for/list ([i (in-range 256)])
`()))
它做了一个非常聪明的事情并将第二行缩进到两列。现在第三行它完成了它对所有lisp代码所做的工作以及用于对齐所有参数的缩进。
如何自定义Emacs以使其缩进第三行,就像我引入新主体一样。我想要的是:
(define (make-position-table)
(for/list ([i (in-range 256)])
`()))
我猜这是可能的,我只是没想出要设置的神秘Emacs变量。有谁知道如何做到这一点?
答案 0 :(得分:7)
您可以将其添加到.emacs
文件中:
(put 'for/list 'scheme-indent-function 1)
另请参阅执行更多球拍主义的hacked version of scheme mode。
答案 1 :(得分:5)
我相信(put 'for/list 'scheme-indent-function 'defun)
应该做你想做的事。
重复其他符号。我的.emacs包括
(mapc (lambda (sym) (put sym 'scheme-indent-function 'defun))
(list 'for 'for/list 'for/and 'for/or
'match 'case 'syntax-parse 'test-suite 'test-case
'define-syntax-rule 'match-let 'match-let*))
从我参与PLT计划的日子开始。