0

Muse-mode ファイル (通常は .txt サフィックスで名前が付けられます) が "#title" で始まることにより、muse-mode であることを示します。これを行うために、私は持っています

    

    ;; #title または sect の場合、*.txt ファイルの muse-mode。ヘッダーは上 4 行にあります
    (追加フック 'テキスト モード フック
              (ラムダ ()
                ((または (eq major-mode 'muse-mode) でない限り)
                (not (stringp buffer-file-truename)))
                  (when (equal (ファイル名拡張子バッファファイル名) "txt")
                    (保存エクスカーション
                      (五都線)
                      (if (re-search-backward "\* [AZ][az]+.*\\|#title " 1 t)
                          (ミューズモード)))))))

私も持っている場合

    (add-to-list 'auto-mode-alist'("\\.txt$" . visual-line-mode))

.emacs で (上記のコードに従って)、muse-mode が機能しなくなります。ただし、muse ファイルの emacs 内から Meta-x を使用して visual-line-mode を呼び出しても、問題は発生しません。

理想的には、すべての .txt ファイルで visual-line-mode が動作するようにしたいと考えていますが、muse を台無しにすることはありません。または、muse ファイルの場合を除き、すべての .txt ファイルをビジュアル ライン モードで起動したいと考えています。

4

2 に答える 2

3

変数はメジャーモードを'auto-mode-alist選択します。

visual-line-modeマイナーモードであり、これを に追加することで、開始時の を置き換えるメジャー'auto-mode-alistモードのように機能します。text-mode

代わりに、次のように追加turn-on-visual-line-mode-in-txtします。text-mode-hook

(add-hook `text-mode-hook 'turn-on-visual-line-mode)

(defun turn-on-visual-line-mode-in-txt ()
  (when (and (buffer-file-name)
             (string-match ".txt$" (buffer-file-name)))
    (turn-on-visual-line-mode)))

違いの詳細については、メジャーモードとマイナーモードのマニュアルを参照してください。

于 2013-01-28T15:16:14.357 に答える
2

@treyJacksonが問題を特定したと思いますが、ここにいくつかの追加コメントがあります:

ところで、text-mode-hookに切り替えるために a を使用するとmuse-mode、さまざまな状況で誤動作します (最初にテキストモードに切り替えてから、途中でミューズモードをアクティブにし、その後テキストモードのアクティブ化が終了するためです (通常、ただし、実行する text-mode-hook にはさらに多くの機能がある可能性があります) は引き続き実行されます)。より堅牢なアプローチは、次のようにすることです。

(add-to-list 'auto-mode-alist '("\\.txt\\'" . text-or-muse-mode))

(defun text-or-muse-mode ()
  (if (save-excursion
        (goto-line 5)
        (re-search-backward "\\* [A-Z][a-z]+.*\\|#title " 1 t))
      (muse-mode)
    (text-mode)))

もちろん、最初の行で a を使用することも、代わりに-*- muse -*-on を使用することもできます。magic-mode-alist

于 2013-01-28T15:44:24.567 に答える