No meu emacs, digamos, eu uso um "elisp"
yasnippet para estender um bloco lisp no modo org. Mas antes que eu a estenda, a empresa é acionada primeiro, o que me dá um menu como "1. elisp1, 2. elisp2"
sem opção "elisp"
. Agora, se eu uso tab
para estender o yasnippet, é sempre irritante que "elisp1"
sempre seja exibido na tela. Portanto, preciso excluir "1"
primeiro e fazer a extensão do snippet yasnippet.
Portanto, como solução, eu sempre uso a tecla de seta para a esquerda para desativar o menu de conclusão da empresa, mas o cursor agora é direcionado para "elis|p"
, então, novamente, uso a tecla de seta para a direita para mover o cursor até o final "elisp|"
e estender o snippet.
Aí vem minha pergunta: como posso ligar a tab
chave primeiro para ativar o yasnippet, mas não a empresa para me salvar a vida?
fonte
tab
paracompany
eC-o
parayasnippet
. Eu posso descrever mais se você estiver interessado.tab
. Então, eu não gostaria de alterar a ligação.C-o
expandir abreviações, trechos e linhas abertas etc., se você não estiver interessado.Respostas:
Foi isso que eu criei para mim mesmo, enfrentando o mesmo problema. É da página do Wiki do Emacs no modo da empresa , mas muito extensa:
Basicamente, isso faz <tab>a coisa certa na maioria das vezes. Pressionando a guia
Observe que, se houver uma oportunidade de preenchimento automático e você estiver editando atualmente em um espaço reservado para trecho, a situação é ambígua. Como compromisso, C-<tab>pulei diretamente para o próximo espaço reservado.
O fato de o nome do snippet não aparecer no menu da empresa e a existência de um snippet modificar silenciosamente o comportamento da tecla tab não é particularmente agradável, infelizmente ... Embora seja possível digitar <return>para obter a conclusão, pelo menos do trecho.
fonte
Buffer is read-only: #<buffer *magit: ~/.emacs.d/*>
. Alguma idéia de como eu posso consertar isso?magit-section-toggle
, está em conflito com a linha(global-set-key [tab] 'tab-indent-or-complete)
acima. Uma solução rápida e suja seria adicionar uma verificação no início da funçãotab-indent-or-complete
acima para ver se estamos no modo magit, por exemplo, para uma variável global que é ativadamagit-mode-hook
.when
é praticamente umif
+progn
tab-indent-or-complete
cond `((modo derivado-p 'magit-mode) (magit-section-toggle (magit-current-section)))`Aqui está o código que estou usando:
aya-open-line
do auto-yasnippet faz mais do que um simplesopen-line
:open-line
se tudo mais falharfonte
C-o
, basta fechar o menu da empresa, por isso preciso pressionar duas vezes para estender o yasnippet.C-o
com o menu da empresa ativo, o menu será fechado e será expandido.