É possível definir ligações de teclas específicas para o buffer?
Eu tenho o seguinte em um dos meus arquivos organizacionais:
# Local Variables:
# eval: (local-set-key (kbd "<f10>") 'some-custom-defun-specific-to-this-buffer)
# End:
Mas essa ligação persiste também para outros arquivos de modo organizacional. Se eu abrir um arquivo com um modo principal diferente, a ligação de teclas padrão será ativada.
Parece que local-set-key
está definindo ligações específicas para o modo principal e não específicas para o buffer.
Como posso ter ligações que são ativadas apenas em um buffer específico?
key-bindings
keymap
file-local-variables
Kaushal Modi
fonte
fonte
local-unset-key
viciado emorg-mode-hook
pode funcionar se for executado antes daLocal Variables:
seção.Local Variables:
Respostas:
Para finalizar, aqui está uma resposta que se expande em meu comentário. Defino um modo secundário com a combinação de teclas necessária e alterno-o no buffer necessário usando variáveis locais do arquivo.
Você pode alterná-lo nos arquivos necessários, definindo a seção de variáveis locais no final do arquivo da seguinte maneira. Você também pode alterar ou adicionar a combinação de teclas aqui. Você ainda precisará definir diferentes modos secundários para cada buffer que mapeia a mesma sequência de teclas para diferentes comandos.
fonte
eval-buffer: Symbol's value as variable is void: my-org-buffer-local-mode-map
quando tento executar isso(define-minor-mode my-org-buffer-local-mode "Minor mode to simulate buffer local keybindings." :init-value nil) (define-key my-org-buffer-local-mode-map (kbd "<f10>") 'some-custom-defun-specific-to-this-buffer)
:keymap
palavra - chave, verifique nullprogram.com/blog/2013/02/06Aqui está uma maneira genérica de definir ligações de teclas específicas do buffer.
temp-mode.el
erequire
no seuinit.el
.temp-mode
modo secundário e defina o mapa de teclas desse modo secundário apenas no (s) buffer (es) necessário (s).Coloque o
Local Variables
trecho abaixo no buffer onde deseja a ligação de chave personalizada. Abaixo estão exemplos deorg-mode
arquivos.No buffer ONE
Se algum outro buffer redefinir a mesma combinação de teclas usando,
No buffer DOIS
então a nova ligação se tornará eficaz em fazer
M-x revert-buffer
.Isto é o que eu faria se precisas alternar entre esses dois buffers com muita frequência e se precisar usar a F10ligação em ambos:
C-x C-s
(salvar) e mude para o buffer DOISrevert-buffer
(atualizar ligações), trabalhe no buffer DOISC-x C-s
e alterne para o buffer UMrevert-buffer
(atualizar ligações), trabalhe no buffer UMC-x C-s
e mude para o buffer DOISMas prefiro vincular os diferentes comandos específicos do buffer a diferentes chaves.
Modo secundário temporário
fonte