Estou ciente de C-x C-e
qual é eval-last-sexp
e M-x eval-buffer
, mas nem sempre são suficientes para captar todas as alterações. Às vezes, você precisa fechar os buffers que estão nos modos que tiveram suas configurações alteradas e outras vezes, você precisa reiniciar o emacs completamente. Existe uma maneira mais geral de lidar com esse problema? Como alternativa, existe uma maneira de reiniciar o emacs sem perder os buffers abertos existentes e o histórico interativo?
27
Respostas:
Não, não é possível recarregar a configuração modificada e fazer com que o Emacs se comporte como se essas modificações já estivessem em vigor quando o Emacs foi carregado. Em resumo, os pacotes Emacs têm muita liberdade para que isso seja viável.
Você menciona que alguns dos principais modos não captam alterações na configuração. Uma razão provável para isso é que a ativação do modo define algumas variáveis locais do buffer com base nos valores atuais de certas opções. Sem reativar esse modo em cada buffer que o utiliza, nem todas as alterações serão captadas. E mesmo assim é bem possível que algumas coisas permaneçam inalteradas. As chances desse trabalho são maiores quando as opções são personalizadas usando um
custom-set-variables
formulário, mas isso deve ser implementado explicitamente para cada opção. E até agora só falamos sobre os principais modos e suas opções ...Você pode tentar implementar um comando para reativar o modo principal de cada buffer. Mas é improvável que habilite totalmente todas as alterações e, pior ainda, desabilite todos os modos menores que você ativou manualmente e perca todos os tipos de outros estados.
Por esse motivo, eu até recomendaria não
eval-buffer
incluir seu arquivo init para pegar o maior número possível de alterações. Avalie as configurações alteradas individualmente usandoeval-last-sexp
e, se isso não funcionar, bem, você precisará reiniciar o Emacs.Como o estado pode ser preservado quando o Emacs é fechado é uma pergunta diferente que deve ser feita separadamente.
fonte
A chamada
normal-mode
é uma maneira útil de reativar todos os modos de um determinado buffer, se você tiver feito alterações nesses ganchos ou nos ganchos associados.Você também pode usar
revert-buffer
(quais chamadasnormal-mode
), que é como recarregar o arquivo sem descartar o histórico de desfazer.(Você também pode recarregar um arquivo com C-xC-v, mas isso vai descartar o seu histórico de desfazer.)
Ao M-x
ibuffer
digitar em maiúsculas, Vreverte todos os buffers marcados, enquanto em maiúsculas Ee Wpermite avaliar o elisp arbitrário para todos os buffers marcados.fonte