1

過去 3 年間、私の仕事では、構成ファイルを xml 形式で作成および編集する必要がありました。xml タグのコンテンツは非常に進化しており、今ではプログラミング言語のようなものになっています。残念ながら、emacs はタグ内のすべてを同じレベルでインデントします。このようなもの:

nxml モードでの現在の emacs インデント

しかし、次のようにコンテンツをインデントできたら最悪です。

emacsがそれを識別してくれたらいいのに

カスタム インデントに関連するスレッドをいくつか読みましたが、その方法についてはまだわかりません。

カスタムメジャーモードを作成しようとしましたが、それを行うと、すべての構文の色とインデント規則が無効になりました。理想的には、nxml 市長モードのインデント ルールを変更するだけですか? それでも、このルールがどこにあるのかわかりません。

また、「if」や「set」などのキーワードに色を付けることができれば、おまけになります。

私が求めているのは大きな仕事であることはわかっているので、ここで決定的な答えを求めているわけではありません。私はちょうど私を正しい方向に向けるための助けを探しています。

4

2 に答える 2

2

おそらくそれを行う最善の方法は、タグ内の言語の新しいメジャー モードを記述し、複数のメジャー モード パッケージを使用して、同じファイルで複数のメジャー モードをアクティブにできるようにすることです。メジャーモード。

于 2012-06-21T15:37:20.710 に答える
1

この例をご覧になることをお勧めします。

(defun nxml-extra-space-indent ()
  (nxml-indent-line)
  (when (zerop (current-indentation))
    (indent-line-to 4)))
(setq indent-line-function 'nxml-extra-space-indent)

既存のメジャーモードに従ってインデントし、行が特定の基準に一致する場合はインデントをカスタマイズします。
これは、既存のものから始めて、特定のモードのインデントロジックがどのように実装されているかを知る必要がないため、インデントをカスタマイズする最も簡単な方法だと思います。

于 2012-06-23T19:34:31.857 に答える