Indentation Emacs pour l’imbrication à plusieurs niveaux de code C

Je suis complètement nouveau dans emacs (principalement utilisé avec vim et eclipse / netbeans, etc.). Je jouais avec une imbrication multi-niveaux de code C et ai écrit un exemple de code dans emacs pour code de la vie réelle cependant).

int foo() { if (something) { if (anotherthing) { if (something_else) { if (oh_yes) { if (ah_now_i_got_it) { printf("Yes!!!\n"); } } } } } } 

Cela ressemblait exactement à ceci lorsque je tapais dans emacs et le sauvegardais. Mais en l’ouvrant sur un autre éditeur de texte, le texte actuel sauvegardé est le suivant:

 int foo() { if (something) { if (anotherthing) { if (something_else) { if (oh_yes) { if (ah_now_i_got_it) { printf("Yes!!!\n"); } } } } } } 

Je me demandais donc s’il existe un moyen dans emacs de sauvegarder le texte tel qu’il est affiché.

Mon style actuel de c-default est défini sur “linux”.

MODIFIER:

Ok, j’utilisais Notepad ++ / Vim pour voir le fichier sauvegardé par emacs et cela montrait que la “mauvaise” indentation, mais on dirait que s’ouvrir avec un bon vieux bloc-notes (ou même faire un chat file.c) montre la bonne indentation affichée par Emacs. Je vais essayer les autres approches mentionnées ici. Merci!

Essayez d’utiliser des espaces plutôt que des tabulations pour l’indentation. Ajoutez ce qui suit à votre init.el:

 (setq-default indent-tabs-mode nil) 

Cela obligera tous les tampons à utiliser des espaces par défaut. Vous voudrez append l’exception suivante pour les makefiles:

 (add-hook 'makefile-mode-hook (lambda () (setq indent-tabs-mode t)))