3

jtags-modeEmacs 24以降の開発バージョンでELPAを介して(バージョン0.96)を使用すると、プログラムでマイナーモードを有効にできないようです(手動呼び出しは正常に機能します)。私が試したことと期待するセットアップで厄介な詳細を掘り下げる前に、肝心なのはjtags-mode、Javaフック変数に追加した後、最初にJavaソースファイルをビストしたときにEmacsから次の苦情を受けるということです:

Toggling jtags-mode off; better pass an explicit argument. [2 times]

セットアップに関するドキュメントをよく読んだ後jtags-mode、次の内容で十分だと思いました。

;; Support for Java coding. 
(autoload 'jtags-mode "jtags" "Toggle jtags mode." 1)

(defun java-setup ()
  (setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92)
    indent-tabs-mode nil
    tab-width 4
    fill-column 96
    c-comment-start-regexp "\\(@\\|/\\(/\\|[*][*]?\\)\\)"
    jtags-display-menu-flag t
    jtags-mode 1)
  (java-mode-indent-annotations-setup))

(add-hook 'java-mode-hook 'java-setup)
(add-hook 'java-mode-hook 'jtags-mode)
...

しかし、これは上記の苦情につながりました。それ以来、関数でjtags-mode直接呼び出そうとしましたが、役に立ちませんでした。java-setup()

明白で簡単な解決策がない場合は、この問題をデバッグする方法について喜んでアドバイスを差し上げます。

4

2 に答える 2

4

名前の付いた関数は、引数なしで呼び出されたときにトグルxxx-mode関数になることがよくあります。つまり、モードがオフの場合はオンになり、その逆も同様です。この関数をフックに追加したので、これが呼び出される方法です。いくつかのマイナーモードは、直接フックするように追加されるように設計されたような機能を提供します。turn-on-xxx-mode

引数を指定して呼び出されると、通常、1はそれらをアクティブにし、-1は非アクティブにします。jtags-mode関数をフックに追加するのではなく、セットアップ関数から呼び出してみてください

セットアップ機能からマイナーモードを有効にすることをお勧めします。また、セットアップコードでは、jtags-mode 変数を1に設定しますが、これは通常の方法ではありません。例えば:

(defun java-setup ()
  (setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92)
    indent-tabs-mode nil
    tab-width 4
    fill-column 96
    c-comment-start-regexp "\\(@\\|/\\(/\\|[*][*]?\\)\\)"
    jtags-display-menu-flag t)
  (jtags-mode 1)
  (java-mode-indent-annotations-setup))

(add-hook 'java-mode-hook 'java-setup)

最後に、予約。私は使用jtags-modeしていません。この回答は、マイナーモードがどのように機能するかに関する一般的な知識に基づいています。

于 2012-04-22T20:11:18.597 に答える
0

ところで、jtags-modeファイルをEmacs-24で再コンパイルすると、Emacs-24がこの点でマイナーモードの動作方法に変更されたため、問題は解消されるはずです。引数がないからといって、トグルする必要はありません。この変更は、特に発生したような問題のために行われました。

于 2012-04-24T02:13:13.890 に答える