Führen Sie C-h f d-mode
, und es sollte sagen: d-mode is an interactive autoloaded compiled Lisp function in 'd-mode.el'.
Folgen Sie der d-mode.el
Verbindung.
Von der Suche nach "Einzug" in dieser Datei, es sieht aus wie sie nur verwenden, was in cc-mode
definiert ist. Sie können herausfinden, welche Funktion sie, indem Sie diese in einem d-Modus Puffer verwenden:
C-h v indent-line-function
Dies zeigt, dass sie nur c-indent-line
genutzt haben. Vielleicht ist es eine Möglichkeit, dies zu beheben, indem Sie versuchen, diesen einen Fall zu erkennen und andernfalls auf c-indent-line
zurückzugreifen. So etwas (ungetesteter Code, nur zu Illustrationszwecken):
(defun d-indent-line()
(let* ((auto-if-curly
(save-excursion
(back-to-indentation
(when (looking-at "{")
(forward-line -1)
(back-to-indentation
(when (looking-at "if")
(forward-line -1)
(back-to-indentation
(looking-at "auto")))))))))
(if auto-if-curly
(ident-line-to 0)
(c-ident-line))))
(add-hook d-mode-hook (lambda() (setq-local indent-line-function 'd-indent-line)))