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?


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


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)

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.


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


O "bug" foi resolvido por si próprio .. provavelmente era um problema com o glib no meu sistema.
Kaushal Modi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.