如何让emacs缩进其他东西,比如缩进定义?

时间:2010-11-16 23:33:33

标签: emacs scheme racket

所以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变量。有谁知道如何做到这一点?

2 个答案:

答案 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计划的日子开始。