Risposte:
Bene, per rientrare con le schede, ti consigliamo di assicurarti che indent-tabs-mode
sia t
(che è il valore predefinito). Ma per ottenere solo le schede, dovresti regolare la modalità che sta facendo il rientro in modo tale che ogni riga sia rientrata da un multiplo del tuo tab-width
(valore predefinito 8). Ad esempio, in modalità C, è possibile provare a impostare c-basic-offset
8.
Oppure, potresti ridurre il tab-width
valore a un valore inferiore, in modo che Emacs non debba utilizzare gli spazi per raggiungere ogni livello di rientro. Ma se lo fai, tutti gli altri che devono lavorare sul tuo codice (e usa i punti di tabulazione standard di 8 caratteri) si arrabbieranno.
Ti esorto a riconsiderare. Personalmente, trovo fastidioso lavorare sul codice indentato con le schede, specialmente se non sembrano essere 8 schede spaziali. (Il peggio è il codice in cui alcune linee usano gli spazi, alcune linee usano le schede e chiaramente non sono 8 le schede degli spazi.) Facciamo a tutti un favore e solo (setq indent-tabs-mode nil)
.
Emacs viene fornito con diversi stili predefiniti per il rientro in C, oppure puoi scrivere il tuo se nessuno soddisfa i tuoi bisogni. Tra gli stili standard , sembra che tu stia cercando linux
(lo stile usato nel sorgente del kernel Linux), che ha rientri di 8 colonne e usa caratteri di tabulazione di larghezza 8.
Puoi rendere queste impostazioni il tuo stile predefinito per C inserendolo nel tuo .emacs
:
(setq c-default-style "linux")
(defun my-c-mode-hook ()
(setq indent-tabs-mode t)
(setq tab-width 8))
(add-hook 'c-mode-hook 'my-c-mode-hook)
Assicurati di non usare queste impostazioni quando collabori con altre persone con preferenze diverse. In particolare, l'uso delle schede ti farà clistere. Se un determinato file deve essere mantenuto in uno stile particolare, puoi utilizzare le variabili del file per assicurarti che tutti coloro che modificano il file in Emacs utilizzino le stesse impostazioni:
/*
* Local Variables:
* c-file-style: "linux"
* indent-tabs-mode: t
* tab-width: 8
* End:
*/
Se si dispone di un intero progetto con file C con rientro simile, utilizzare le variabili di directory anziché inquinare tutti i file. Crea un file chiamato .dir-locals.el
con contenuti come il seguente:
((c-mode . ((c-file-style . "linux")
(indent-tabs-mode . t)
(tab-width . 8))))
Le schede mi infastidiscono, ma ho dovuto capire come fare in modo che emacs usasse solo le schede per rientrare in modo da poter lavorare sul codice di qualcun altro. Ecco cosa ha funzionato per me:
(defun tmp/change-indent ()
(interactive)
(setq indent-tabs-mode t)
(setq tab-width 2))
Ho notato che prima di scherzare con qualsiasi cosa, quando ho premuto il tasto Tab, è rientrato automaticamente da 2 colonne. L'impostazione di "larghezza della scheda" in modo che corrisponda all'offset di 2 colonne ha permesso a emacs di utilizzare le schede durante la formattazione automatica. Stavo lavorando in modalità nxml, ma penso che dovrebbe funzionare per qualsiasi modalità.