Я написал очень простой режим Emacs для Standard ML:Emacs добавить последовательное правило отступа в режиме родовых-х
;; sml syntax
(require 'generic-x)
(define-generic-mode
'sml-mode ;; name of the mode
'(("(*" . "*)")) ;; comments delimiter
'("fun" "fn" "let" "val" "datatype" "type" "case" "of" "end" "structure" "struct" "signature" "sig")
'(("=" . 'font-lock-builtin-face)
("|" . 'font-lock-builtin-face)
(">" . 'font-lock-builtin-face)
("<" . 'font-lock-builtin-face)
("-" . 'font-lock-builtin-face)
("+" . 'font-lock-builtin-face)
(";" . 'font-lock-builtin-face)
("," . 'font-lock-builtin-face)
("{" . 'font-lock-builtin-face)
("}" . 'font-lock-builtin-face)
("(" . 'font-lock-builtin-face)
(")" . 'font-lock-builtin-face)
(":" . 'font-lock-builtin-face)
("[" . 'font-lock-builtin-face)
("]" . 'font-lock-builtin-face)) ;; a built-in
'("\\.sml$") ;; files that trigger this mode
nil ;; any other functions to call
"SML highlighting mode" ;; doc string
)
Однако, это не будет отступ последовательно. Я не могу точно описать, как он отступает, но он несовместим между вкладками и пробелами и длиной пробелов. Самое простое правило, о котором я могу думать, - всегда начинать новую строку в одном столбце, и табуляция всегда приводит вас к следующему столбцу, который кратен 4. Вкладки должны быть пробелами. Как это сделать, используя общий режим?
Как отметить определение режима, я неправильно использую встроенное лицо, потому что оператор-лицо не имеет цвета. Однако он выглядит уродливым.
Что вы пробовали до сих пор, чтобы получить желаемое поведение отступа? – Thomas