Há certas coisas como a exibição de espaços em branco à direita, a exibição de limites de buffer, delimitadores em cores do arco-íris e muito mais que eu gostaria de ativar na maioria dos modos, ou melhor, todos os relacionados a programação e texto (porque exibindo espaços à direita em, digamos ediff-mode
, entrariam em conflito com o modo principal) em vez de usar um modo secundário globalizado com regras de exceção. Como a maioria dos modos é derivada de um prog-mode
ou de text-mode
, adicionando a função em questão a ambos prog-mode-hook
e text-mode-hook
funciona, no entanto, existem modos suficientes que não seguem esta especificação, como css-mode
ou LaTeX-mode
.
Gostaria de definir um gancho que englobe todos esses modos por enquanto para adicionar apenas funções a um gancho. Vamos chamá-lo non-special-mode-hook
(para diferenciá-lo special-mode-hook
). Como eu seria capaz de criar um gancho que é executado para todos os principais modos para os quais é criado?
Respostas:
Apenas agrupe essas configurações em uma função e adicione essa função a todas as funções relevantes do gancho:
Nenhuma outra maneira de fazer isso seria mais concisa: aconteça o que acontecer, em algum lugar você terá uma lista de permissões ou uma lista negra de modos. Na prática, você encontrará apenas alguns modos que precisam ser adicionados à lista, então sugiro apenas manter as coisas simples.
Na minha própria configuração, eu uso exatamente esse truque para unificar a configuração de vários modos orientados a lisp.
fonte
derived-mode-hook-name
.(dolist ...)
vs(add-hook ...)
<repeat>. Eu só ia ficar com a minha quando mantendo específicos de modo altera separado (arquivo-per-mode,use-package
,el-get
). Ambas são soluções all-in-one-place, mas sob diferentes pontos de vista.APPEND
argumento não nuloadd-hook
aqui, os ganchos serão chamados na ordem inversa da ordem de lista que você fornecer. Nada de errado com isso; apenas esteja ciente disso, caso a ordem seja importante.Você pode adicionar uma função para
after-change-major-mode-hook
, que verifica se o novo modo é interessante (possivelmente até(not (derived-mode-p 'special-mode))
) e, se for, é executadonon-special-mode-hook
.fonte
fundamental-mode
, mas fazem mais do que apenas exibir texto), mas um pouco demais para o meu gosto. Daí o voto positivo.Eu me encontrei frequentemente fazendo o padrão do @ sanityinc de agrupar minhas configurações e ativações de modo menor em um estado de desintegração e percorrer ganchos para chamá-lo, mas eu queria uma abordagem mais limpa, então escrevi esta macro:
Nota: Sou a
dash.el
favor da limpeza, mas ela pode ser facilmente adaptada para uso(dolist)
.Em seguida, você pode definir modos agrupados como variáveis de lista e usá-lo da seguinte maneira:
fonte
derived-mode-hook-name
para obter o nome da variável de gancho de um modo, evitando assim ointern
truque.derived-mode-hook-name
. boa dica!Em vez de definir um novo gancho que funcione para todos esses modos não derivados , você pode fazer o seguinte.
Você ainda precisará adicioná-lo a todos os modos, mas definindo sua função para incluir todos os modos, você precisará alterar apenas uma definição ao adicionar / remover recursos adicionais.
fonte
Talvez você possa tentar o seguinte:
fonte