Modificando uma defun costume de não conflito com magit
-
05-07-2019 - |
Pergunta
Eu uso o seguinte defun-guia inteligente em meu .emacs para qualquer conclusão em uma palavra ou apenas para fazer uma guia padrão:
(global-set-key [(tab)] 'smart-tab)
(defun smart-tab ()
"This smart tab is minibuffer compliant: it acts as usual in
the minibuffer. Else, if mark is active, indents region. Else if
point is at the end of a symbol, expands it. Else indents the
current line."
(interactive)
(if (minibufferp)
(unless (minibuffer-complete)
(dabbrev-expand nil))
(if mark-active
(indent-region (region-beginning)
(region-end))
(if (looking-at "\\_>")
(dabbrev-expand nil)
(indent-for-tab-command)))))
No entanto, quando estou usando magit-status
para a integração git Git, eu poderia previamente selecionar um arquivo que teve uma modificação, guia hit, e ver instantaneamente um diff nesse arquivo para ver o que está sendo modificado. No entanto, sempre que eu tentar um guia agora, eu recebo o seguinte erro no meu mini-buffer.
indent-relative: Buffer is read-only: #<buffer *magit: my_project*
Quaisquer pensamentos sobre abordar este e talvez aplicar-guia inteligente acima para certos modos única?
Obrigado!
Solução
Eu sou o mantenedor do-guia inteligente, disponível do GitHub . A versão mais recente define um modo menor que se desliga em um read-only tampão ou o minibuffer, permitindo coisas como ido-mode e magit para funcionar corretamente. Também é melhor em lidar com situações onde você quer a chave executar um comando diferente do que indent-for-tab-command
, como org-mode. Eu recomendo que você use a versão GitHub, uma vez que evita um monte de dores de cabeça da versão básica com uma combinação de teclas global.