pkn*_*dle 6 emacs scheme racket
所以Emacs非常擅长编辑Scheme/Racket/Lisp代码.它做的一件好事是当你输入如下代码:
(define (make-position-table)
(for/list ([i (in-range 256)])
`()))
Run Code Online (Sandbox Code Playgroud)
它做了一个非常聪明的事情并将第二行缩进到两列.现在第三行它完成了它对所有lisp代码所做的工作以及用于对齐所有参数的缩进.
如何自定义Emacs以使其缩进第三行,就像我引入一个新主体一样.我想要的是:
(define (make-position-table)
(for/list ([i (in-range 256)])
`()))
Run Code Online (Sandbox Code Playgroud)
我猜这是可能的,我只是没有想出要设置的神秘的Emacs变量.有谁知道如何做到这一点?
您可以将其添加到您的.emacs文件中:
(put 'for/list 'scheme-indent-function 1)
Run Code Online (Sandbox Code Playgroud)
另请参阅一个黑客版的方案模式,它可以执行更多的racket-isms.
我相信(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*))
Run Code Online (Sandbox Code Playgroud)
从我参与PLT计划的那些日子开始.