global-auto-revert-modeが機能していないようです?


7

私の初期化ファイルには

(setq global-auto-revert-mode t)

Ch vでそれが正しいことを確認できます。しかし、gitブランチを変更するたびに、revert-bufferを使用してすべてのファイルを手動で元に戻す必要があります。保存しようとして「ディスク上のファイルが変更されました」というプロンプトが表示されることもあります。これをデバッグする方法について何か提案はありますか?


代わりにあなたのinitでこれを入れてみてください:(global-auto-revert-mode 1)
Kaushalモディ

@kaushalmodi運がない(私は本当に驚いたでしょう)
djechlin

それは問題auto-revert-intervalでしょうか?私はそれを使用し、トランプ上のファイルを除いて、それは私のために機能します。
Swarnendu Biswas 2015

24.5と25.0に侵入したバグのようです。@SwarnenduBiswasあなたはemacs 24.4にいますか?
Kaushal Modi

@djechlin emacs -Qセッションを使用して確認したところ、自動復帰モードはemacs 24.5および25.0では機能しませんが、24.4では正常に機能します。お使いのバージョンは何ですか?
Kaushal Modi

回答:


15

変数を設定しても、マイナーモードは有効/無効になりません。マイナーモード変数は、モード状態を設定するのではなく、「モード有効」ステータスをチェックするために使用する必要があります。値がのt場合、マイナーモードがオンになり、それ以外の場合、モードはオフになります。


マイナーモードを制御する方法については、以下のスニペットを参照してください。あなたが扱っている実際のマイナーモード名で置き換えMINOR-MODE-NAMEてください(global-auto-revert-name質問の場合のように)。


マイナーモードを有効にする

elispの使用

直接

(MINOR-MODE-NAME)
;; or
(MINOR-MODE-NAME 1)

フックのアクティブ化に基づく

(add-hook 'SOME-HOOK #'MINOR-MODE-NAME)

マイナーモードを無効にする

elispの使用

直接

(MINOR-MODE-NAME 0)
;; or
(MINOR-MODE-NAME -1)

フックのアクティブ化に基づく

(add-hook 'SOME-HOOK (lambda () (MINOR-MODE-NAME -1)))

マイナーモードの切り替え

インタラクティブに

M-x MINOR-MODE-NAME

キーバインドを使う

(global-set-key (kbd "<KEY>") #'MINOR-MODE-NAME)

elispの使用(非対話式)

(MINOR-MODE-NAME 'toggle)

出典


数値の代わりにtまたはnilを渡す必要があるいくつかのモードに遭遇しました。
ジョセフガービン

@JosephGarvinそれらがどのモードであるかを見つけることは価値があるかもしれません。実際、それらがマイナーモードとして定義されている場合、その不整合を修正するためにバグレポートを提出するかもしれませんか?
Kaushal Modi 2016

答えは非常に抽象的です。使い方がわかりません。
ctrl-alt-delor

@ ctrl-alt-delorこの答えにつながった、制御しようとしているマイナーモードは何ですか?
Kaushal Modi

問題の1つ。(global-auto-revert-mode
ctrl-alt-delor

3

を使用して変数を設定するのではなくsetq、関数を呼び出します。

(global-auto-revert-mode)

それがとどう違うのかしら(global-auto-revert-mode 1)。また、これをinitに追加する場合、その引数は必要ありません。ちょうど(global-auto-revert-mode)十分なはずです。詳細については、Xahのブログ投稿をご覧ください。
Kaushal Modi 2015

を使用して定義された他のモードと同様に、define-global-minor-mode有効な値は数値、、nilおよびのみですtoggle。機能するという事実tprefix-numeric-value、それを窒息させず、それをのように扱うという事実によるもの1です。
Lindydancer 2015

@Lindydancerええ、私はdjechlinに1、引数として渡すことが機能しない理由を明確にしてほしいと思います。
Kaushal Modi

@kaushalmodiまだsetq-ingでした-tを1に変更しているだけだと思いましたが、setqから関数の呼び出しへの変更を見落としました。
djechlin

@djechlin明確にしていただきありがとうございます。ただし、明確化と一貫性1を保つために、initでelispからマイナーモードを有効にする場合は、引数を渡すか何も渡さないことをお勧めします。
Kaushal Modi

1

自動復帰は、変更されていないバッファに対してのみ機能します。したがって、少なくとも「ディスクプロンプトでファイルを保存して変更しようとする」場合、記述した動作は正常です。


同じファイルをemacs 25.0インスタンスとemacs 24.4インスタンス(両方とも-Qオプション付き)で同時に開き、両方で開きましたM-x global-auto-revert-mode。端末から文字列(echo 1234 >> somefile.txt)をそのファイルにエコーすると、emacs 24.4バッファーのみが自動で元に戻りました。
Kaushal Modi 2015

それではどうぞM-x report-emacs-bug
ステファン


「バグ」は自動的に解決されました。おそらく私のシステムのglibの問題でした。
Kaushal Modi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.