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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top