元のメジャーモードからいくつかの定義を上書きすることで、私が望んでいたことを達成しました。で/lisp/progmodes/octave.el、私は再定義(ファイルはzip形式で圧縮された、私はソースを表示するためにそれを解凍する必要がありました)octave-indent-commentもともとこのように書きました:
(defun octave-indent-comment ()
  "A function for `smie-indent-functions' (which see)."
  (save-excursion
    (back-to-indentation)
    (cond
     ((octave-in-string-or-comment-p) nil)
     ((looking-at-p "\\(\\s<\\)\\1\\{2,\\}")
      0)
     ;; Exclude %{, %} and %!.
     ((and (looking-at-p "\\s<\\(?:[^{}!]\\|$\\)")
           (not (looking-at-p "\\(\\s<\\)\\1")))
      (comment-choose-indent)))))
私は最後のビットを削除しoctave-mode-hook、私の構成に次のように追加しました:
(setq octave-mode-hook
      (lambda () (progn (setq octave-comment-char ?%)
                        (setq comment-start "%")
                        (setq indent-tabs-mode t)
                        (setq comment-add 0)
                        (setq tab-width 2)
                        (setq tab-stop-list (number-sequence 2 200 2))
                        (setq octave-block-offset 2)
                        (defun octave-indent-comment ()
                          "A function for `smie-indent-functions' (which see)."
                          (save-excursion
                            (back-to-indentation)
                            (cond
                             ((octave-in-string-or-comment-p) nil)
                             ((looking-at-p "\\(\\s<\\)\\1\\{2,\\}") 0)))))))
これにより、コメント文字の数が異なることに関連する機能がすべて削除されたと思います。最初からその機能は望ましくなかったので、この結果には満足しています。これで、を使用すると、コメント行は常に前の行に揃えられますcomment-region。
編集:このリンクを構成に追加すると、octave-modeMATLABコードの編集中に快適に動作させるためのオーバーライドが役立つと思います。