Как мне заставить emacs сделать отступ для других вещей, как это делают отступы? - PullRequest
6 голосов
/ 17 ноября 2010

Так что 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 ]

7 голосов
/ 17 ноября 2010

Вы можете добавить это к вашему .emacs файлу:

(put 'for/list 'scheme-indent-function 1)

См. Также взломанную версию режима схемы , которая делает еще много ракеток.

5 голосов
/ 17 ноября 2010

Я считаю, (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.

...