コメント付きの行がオクターブモードで32桁目に飛び出します


8

インターネット上のemacsでサポートされていないMATLABパッケージよりも便利なので、MATLABコードの編集にはオクターブメジャーモードを使用しています。

1つの欠点は、コメント行を自動インデントしようとすると、コメント文字が32桁目に持ち越され、コードの大きなブロックのインデントが少し問題になることです。

私がしたことに注意する必要があります

(setq comment-start "%")

パーセント記号をデフォルトのコメント文字として使用するため。それでも、を使用すると同じ問題が発生し#ます。私が使用している場合comment-region、それは実際に挿入##行の先頭に、ととの回線##を持つもののようにオフに撮影しません#

私はGoogleで発見したのと同じ質問は次のように、時代のカップルを頼まれました。この1。しかし、それらのどれも私を助けませんでした。

私は行が始まるように、この問題を解決したいの%か、#正しい方法で自動インデントされ、私はGNU Emacsの24.5.1を使用していますコラム32にオフ撮影なし。

回答:


8

元のメジャーモードからいくつかの定義を上書きすることで、私が望んでいたことを達成しました。で/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コードの編集中に快適に動作させるためのオーバーライドが役立つと思います。


私は自分の質問には答えたくありませんでしたが、運で自分で解決したので、どこか他の場所から答えが出るとは思いませんでした。
osolmaz 2015

1
あなた答えを提供した場合、あなた自身の質問に答えてください。これにより、質問に未回答ではないことがわかります。一方、まだ回答を探している場合は、それを受け入れられないままにすることをお勧めします。
2015

7

複数使用してみてください%または#行のを:%%か、%%%など

デフォルトでは、連続するコメント文字の数によって、コメントの種類とその動作(インデントなど)が決まります。

Elispマニュアルのノードコメントのヒントを参照してください 。


1
実際、それが私が変えたい行動です。MATLAB自身のエディタでは、#および##ドキュメントの面で異なる意味を持っている、と私は使用エディタそのために働いている人なので、私は彼らの基準を遵守しなければなりません。
osolmaz 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.