L'indentation d'Emacs utilisant des tabs

Existe-t-il un moyen de rendre Emacs indent code en utilisant uniquement les tabs globalement et non les espaces. Je connais la command tabify. Je préférerais que l'indentation automatisée utilise des tabs plutôt qu'un mélange d'tabs et d'espaces comme le fait la configuration par défaut.

Bien, pour indenter avec des tabulations, vous voudrez vous assurer que indent-tabs-mode est t (qui est la valeur par défaut). Mais pour get uniquement des tabs, vous devez ajuster le mode qui effectue l'indentation de telle sorte que chaque ligne soit indentée par un multiple de votre tab-width (8 par défaut). Par exemple, en mode C, vous pouvez essayer de régler c-basic-offset sur 8.

Vous pouvez également réduire la tab-width votre tab-width à une valeur inférieure afin qu'Emacs n'ait pas besoin d'utiliser des espaces pour atteindre chaque niveau d'indentation. Mais si vous faites cela, tout le monde qui doit travailler sur votre code (et utilise l'onglet standard de 8 caractères s'arrête) sera ennuyé.

Je vous invite à reconsidérer. Personnellement, je trouve que travailler sur du code indenté avec des tabulations est ennuyeux, surtout s'ils ne semblent pas être des tabs spatiaux. (Le pire est le code où certaines lignes utilisent des espaces, certaines lignes utilisent des tabs, et ce n'est clairement pas 8 tabs d'espace.) Faites-nous tous un service et juste (setq indent-tabs-mode nil) .

Emacs est livré avec plusieurs styles prédéfinis pour l'indentation C, ou vous pouvez écrire votre propre si aucun ne correspond à vos besoins. Parmi les styles standard , il semble que vous recherchiez linux (le style utilisé dans la source du kernel Linux), qui comporte des indentations de 8 colonnes et utilise des caractères tabulaires de largeur 8.

Vous pouvez faire de ces parameters votre style par défaut pour C en le mettant dans votre .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) 

Assurez-vous que vous n'utilisez pas ces parameters lors de la collaboration avec d'autres personnes ayant des preferences différentes. En particulier, l'utilisation d'tabs vous fera énéminer. Si un file particulier doit être conservé dans un style particulier, vous pouvez utiliser des variables de file pour garantir que tous ceux qui éditent le file dans Emacs utilisent les mêmes parameters:

 /* * Local Variables: * c-file-style: "linux" * indent-tabs-mode: t * tab-width: 8 * End: */ 

Si vous avez un projet entier avec des files C avec des indentations similaires, utilisez des variables de directory plutôt que de polluer chaque file. Créez un file appelé .dir-locals.el avec du contenu comme celui-ci:

 ((c-mode . ((c-file-style . "linux") (indent-tabs-mode . t) (tab-width . 8)))) 

Les tabs m'énervent, mais je devais find comment faire qu'emacs n'utilise que des tabs pour mettre en retrait afin que je puisse travailler sur le code de quelqu'un d'autre. Voici ce qui a fonctionné pour moi:

 (defun tmp/change-indent () (interactive) (setq indent-tabs-mode t) (setq tab-width 2)) 

J'ai remarqué que avant de jouer avec quoi que ce soit, lorsque j'ai appuyé sur la touche de tabulation, il est automatiquement indenté par 2 colonnes. La définition de la largeur de tabulation pour correspondre au décalage de 2 colonnes a permis aux emacs d'utiliser des tabs lors du formatting automatique. Je travaillais en mode nxml, mais je pense que cela devrait fonctionner pour n'importe quel mode.