Domanda

Uso il seguente defun smart-tab nel mio .emacs per il completamento di una parola o semplicemente per fare una scheda standard:

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

Tuttavia, quando sto usando magit-status per l'integrazione con git Git, in precedenza potevo selezionare un file che ha subito una modifica, premere la scheda e vedere immediatamente un diff su quel file per vedere cosa è stato modificato. Tuttavia, ogni volta che provo una scheda ora, ottengo il seguente errore nel mio mini-buffer.

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

Qualche idea su come affrontare questo e forse applicare la smart-tab sopra solo a determinate modalità?

Grazie!

È stato utile?

Soluzione

Sono il manutentore di smart-tab, disponibile da GitHub . L'ultima versione definisce una modalità minore che si spegne in un buffer di sola lettura o nel minibuffer, permettendo a cose come la modalità ido e magit di funzionare correttamente. È anche migliore nella gestione di situazioni in cui si desidera che la chiave esegua un comando diverso rispetto a indent-for-tab-command, come la modalità organizzazione. Consiglio vivamente di utilizzare la versione di GitHub, in quanto evita molti mal di testa della versione di base con un keybinding globale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top