modo de reversão automática global não parece funcionar?

7

Meu arquivo init inclui

(setq global-auto-revert-mode t)

e posso confirmar que isso é verdade com o Ch v. Mas ainda preciso reverter manualmente todos os meus arquivos com buffer de reversão sempre que alterar as ramificações do git. Eu chego a tentar salvar e obter o prompt "arquivo alterado no disco". Alguma sugestão de como depurar isso?

djechlin
fonte
Tente colocar isso no seu init:(global-auto-revert-mode 1)
Kaushal Modi
@kaushalmodi sem sorte (eu teria sido realmente surpreso)
djechlin
Poderia ser um problema auto-revert-interval? Eu o uso e funciona para mim, exceto arquivos sobre tramp.
Swarnendu Biswas
Parece um bug que apareceu nas 24.5 e 25.0. @SwarnenduBiswas você está no emacs 24.4?
Kaushal Modi
@djechlin Eu verifiquei usando as sessões do emacs -Q que o modo de reversão automática não funciona no emacs 24.5 e 25.0, mas funciona bem no 24.4. Em qual versão você está?
Kaushal Modi

Respostas:

15

Um modo secundário não é ativado / desativado ao definir uma variável. A variável de modo secundário deve ser usada para verificar o status "modo ativado", não para definir o estado do modo. Se seu valor for t, o modo secundário está ativado, caso contrário, o modo está desativado.


Veja os trechos abaixo para ver como controlar qualquer modo secundário. Substitua MINOR-MODE-NAMEpelo nome do modo secundário real com o qual você está lidando ( global-auto-revert-namecomo é o caso da pergunta).


Ativando um Modo Menor

Usando elisp

Diretamente

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

Com base em uma ativação de gancho

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

Desativando um Modo Menor

Usando elisp

Diretamente

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

Com base em uma ativação de gancho

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

Alternando um modo menor

Interativamente

M-x MINOR-MODE-NAME

Usando uma ligação de chave

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

Usando elisp (não interativamente)

(MINOR-MODE-NAME 'toggle)

Fontes

Kaushal Modi
fonte
Corri para alguns modos em que você tem que passar t ou nulo em vez de números.
Joseph Garvin
@JosephGarvin Talvez valha a pena descobrir quais são esses modos ... e pode apresentar um relatório de bug para corrigir essa inconsistência, se eles forem definidos como modos menores?
Kaushal Modi
A resposta é muito abstrata. Eu não sei como usá-lo.
Ctrl-alt-delor 3/03/19
@ ctrl-alt-delor Qual é o modo menor que você está tentando controlar que o levou a esta resposta?
precisa
O da pergunta. ( global-auto-revert-mode)
ctrl-alt-delor 06/03/19
3

Você não define a variável usando setq, chama a função:

(global-auto-revert-mode)
djechlin
fonte
Eu estou querendo saber como isso é diferente (global-auto-revert-mode 1). Além disso, se você estiver adicionando isso ao seu init, nem precisará desse argumento. Apenas (global-auto-revert-mode)deve ser suficiente. Confira o post do Xah no blog para mais informações.
Kaushal Modi
Como em qualquer modo definido usando define-global-minor-mode, os únicos valores válidos são números,, nile toggle. O fato de tfuncionar é apenas devido ao fato de prefix-numeric-valuenão engasgar e tratar como ele 1.
Lindydancer
@ Lindydancer Sim, eu gostaria que djechlin esclarecesse por que passar 1como argumento não funcionou .
precisa saber é o seguinte
@kaushalmodi Eu ainda estava configurando - eu pensei que você estava mudando t para 1, eu ignorei a mudança de setq para chamar a função.
djechlin
Obrigado por esclarecer. Mas, para fins de esclarecimento e consistência, é recomendável passar um argumento 1ou nada se você deseja ativar esse modo secundário a partir do elisp em seu init.
precisa saber é o seguinte
1

a reversão automática funciona apenas para buffers que não são modificados. Portanto, pelo menos para o prompt "tentando salvar e fazer com que o arquivo seja alterado no disco", o comportamento que você descreve é ​​normal.

Stefan
fonte
Abri o mesmo arquivo simultaneamente em uma instância do emacs 25.0 e do emacs 24.4 (ambos com -Qopção) e o fiz M-x global-auto-revert-modeem ambos. Do terminal, quando ecoei alguma string ( echo 1234 >> somefile.txt) para esse arquivo, apenas o buffer do emacs 24.4 foi revertido automaticamente.
precisa saber é o seguinte
Então por favor M-x report-emacs-bug.
Stefan
Feito! Erro # 20441
Kaushal Modi
O "bug" foi resolvido por si próprio .. provavelmente era um problema com o glib no meu sistema.
Kaushal Modi