Pregunta

Utilizo la siguiente pestaña inteligente defun en mis .emacs para completar una palabra o simplemente para hacer una pestaña estándar:

(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)))))

Sin embargo, cuando estoy usando magit-status para la integración de git Git, pude seleccionar previamente un archivo que ha tenido una modificación, presionar la pestaña e instantáneamente ver una diferencia en ese archivo para ver qué se ha modificado. Sin embargo, cada vez que intento una pestaña ahora, aparece el siguiente error en mi mini-buffer.

indent-relative: Buffer is read-only: #<buffer *magit: my_project*

¿Alguna idea sobre cómo abordar esto y tal vez aplicar la pestaña inteligente anterior solo a ciertos modos?

¡Gracias!

¿Fue útil?

Solución

Soy el encargado de mantener la pestaña inteligente, disponible de GitHub . La última versión define un modo menor que se apaga en un búfer de solo lectura o en el minibúfer, permitiendo que cosas como el modo id y magit funcionen correctamente. También es mejor para manejar situaciones en las que desea que la tecla ejecute un comando diferente a indent-for-tab-command, como el modo org. Le recomiendo que use la versión de GitHub, ya que evita muchos dolores de cabeza de la versión básica con una combinación de teclas global.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top