la modalità di ripristino automatico globale non sembra funzionare?


7

Il mio file init include

(setq global-auto-revert-mode t)

e posso confermare che è vero con Ch v. Ma devo ancora ripristinare manualmente tutti i miei file con il buffer di ripristino ogni volta che cambio i rami git. Mi arriva persino al tentativo di salvare e ottenere il prompt "file modificato su disco". Qualche suggerimento su come eseguire il debug di questo?


Prova invece a inserire questo nel tuo init:(global-auto-revert-mode 1)
Kaushal Modi,

@kaushalmodi senza fortuna (sarei stato davvero sorpreso)
djechlin

Potrebbe essere una questione con auto-revert-interval? Lo uso e funziona per me, tranne i file sul vagabondo.
Swarnendu Biswas,

Sembra un bug che si è insinuato in 24.5 e 25.0. @SwarnenduBiswas sei su emacs 24.4?
Kaushal Modi,

@djechlin Ho verificato usando le sessioni emacs -Q che la modalità di ripristino automatico non funziona su emacs 24.5 e 25.0 ma funziona bene su 24.4. Su che versione sei?
Kaushal Modi,

Risposte:


15

Una modalità minore non è abilitata / disabilitata impostando una variabile. La variabile di modalità minore deve essere utilizzata per controllare lo stato "modalità abilitata", non per impostare lo stato della modalità. Se il suo valore è t, la modalità secondaria è attiva, altrimenti la modalità è disattivata.


Vedi i frammenti di seguito per vedere come controllare qualsiasi modalità minore. Sostituisci MINOR-MODE-NAMEcon il nome della modalità secondaria attuale con cui hai a che fare ( global-auto-revert-namecome nel caso della domanda).


Abilitazione di una modalità secondaria

Usando elisp

Direttamente

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

Basato su un'attivazione hook

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

Disabilitazione di una modalità secondaria

Usando elisp

Direttamente

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

Basato su un'attivazione hook

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

Attivazione / disattivazione di una modalità secondaria

interattivo

M-x MINOR-MODE-NAME

Utilizzando un'associazione chiave

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

Utilizzo di elisp (non interattivo)

(MINOR-MODE-NAME 'toggle)

fonti


Ho incontrato alcune modalità in cui devi passare t o zero invece di numeri.
Joseph Garvin,

@JosephGarvin Potrebbe essere utile scoprire quali sono quelle modalità .. e potrebbe essere presentato un bug report per correggere tale incoerenza se in realtà sono definite come modalità secondarie?
Kaushal Modi,

La risposta è molto astratta. Non so come usarlo.
ctrl-alt-delor

@ ctrl-alt-delor Qual è la modalità minore che stai cercando di controllare che ti ha portato a questa risposta?
Kaushal Modi,

Quello nella domanda. ( global-auto-revert-mode)
ctrl-alt-delor

3

Non si imposta la variabile utilizzando setq, si chiama la funzione:

(global-auto-revert-mode)

Mi chiedo come sia diverso (global-auto-revert-mode 1). Inoltre, se lo stai aggiungendo al tuo init, non dovresti nemmeno aver bisogno di quell'argomento. Basta (global-auto-revert-mode)dovrebbe essere sufficiente. Controlla il post sul blog di Xah per maggiori informazioni.
Kaushal Modi,

Come per qualsiasi modalità definita utilizzando define-global-minor-mode, gli unici valori validi sono i numeri nil, e toggle. Il fatto che funzioni tè dovuto solo al fatto che prefix-numeric-valuenon lo soffoca e lo tratta come 1.
Lindydancer,

@Lindydancer Sì, vorrei djechlin per chiarire perché passare 1come argomento non ha funzionato .
Kaushal Modi,

@kaushalmodi Stavo ancora impostando - pensavo che stessi cambiando t in un 1, ho trascurato il passaggio da setq a chiamare la funzione.
Djechlin,

@djechlin Grazie per il chiarimento. Ma per motivi di chiarezza e coerenza, si consiglia di passare un argomento 1o niente se si desidera abilitare quella modalità minore da elisp nel proprio init.
Kaushal Modi,

1

il ripristino automatico funziona solo per i buffer che non sono stati modificati. Quindi, almeno per il "tentativo di salvare e ottenere il file modificato sul prompt del disco", il comportamento descritto è normale.


Ho aperto lo stesso file contemporaneamente in un'istanza di emacs 25.0 e in emacs 24.4 (entrambe con -Qopzione) e l'ho fatto M-x global-auto-revert-modein entrambi. Dal terminale quando ho fatto eco a una stringa ( echo 1234 >> somefile.txt) a quel file, solo il buffer emacs 24.4 è tornato automaticamente.
Kaushal Modi,

Allora per favore M-x report-emacs-bug.
Stefan,


Il "bug" è stato risolto da solo .. probabilmente era un problema con glib sul mio sistema.
Kaushal Modi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.