Emacs C++en mode incorrect de l'indentation?
Je suis à court d'emacs 23 avec c++-mode et ayant quelques problèmes d'indentation.
Supposons que j'ai ce code:
void foo()
{
if (cond)
{ <---
int i;
...
} <---
}
Cela semble être le comportement par défaut de l'indentation automatique.
Cependant, je tiens à le modifier de sorte qu'il sera comme ceci:
void foo()
{
if (cond)
{
int i;
...
}
}
Est-il un moyen de le faire facilement par la configuration de c++ ou en mode mon .emacs fichier?
- Découvrez le <a href="emacswiki.org/emacs/IndentingC#toc2">Emacs wiki sur l'Indentation du C</a>
- Pour mémoire, cette mise en retrait de mode est la GNU style. Tous les programmes GNU sont nécessaires pour suivre ce style d'indentation.
- ouais j'ai lu ça quelque part, mais je ne peux pas le supporter
- Il est généralement une bonne pratique de code pour vos utilisateurs, ce n'est pas vous. La plupart des gens ne pas écrire GNU code utiliser d'autres styles.
Vous devez vous connecter pour publier un commentaire.
J'ai la suite dans ma .emacs fichier:
Vous pouvez déterminer le décalage de modifier en appuyant sur [ctrl-c ctrl-s] sur toute la ligne. Sur la première ligne avec une accolade après le
if
il va diresubstatement-open
.C'est la mienne... cela correspond à la configuration par défaut de visual studio.
c-mode-common-hook
remplacé?Réponse courte: Mettre cette ligne dans votre .emacs fichier:
Réponse longue: ...
Pour ceux d'entre nous qui sont nouveaux à emacs-lisp, il est assez simple méthode à http://www.cs.cmu.edu/:
Aller à la ligne que vous souhaitez mettre en retrait
De Type C-C C-O (la lettre "O", pas zéro)
Appuyez sur Entrer pour accepter la valeur par défaut suggestion
Type "0" (c'est un zéro) sans indentation supplémentaire, appuyez sur Entrer
Type Onglet à reindent la ligne.
Avenir "{" dans cette situation le bon paramètre de l'onglet, jusqu'à ce que vous redémarrez emacs.
La bonne chose à propos de cette méthode, est que vous pouvez réellement voir le code lisp que vous souhaitez modifier. Vous pouvez mettre dans votre .emacs fichier:
En outre, vous voudrez peut-être consulter le programme AStyle automatiquement le format de source C++ à l'extérieur de emacs.
Accepté la réponse est en fait mal. Emacswiki ne va pas aider.
Insérer le code suivant dans ~/.emacs:
Voir http://blog.binchen.org/posts/ccjava-code-indentation-in-emacs.html pour les détails techniques.
La question clé est c-set offset est pas fiable pour détecter la syntaxe contexte plus (Emacs24.3.1). Donc, le seul moyen fiable est d'analyser l'emacs original code. Les étapes détaillées de pirater le code est répertorié dans mon article, fondamentalement, vous avez besoin de lire la fonction c-tiret-ligne qui est définie dans /usr/share/emacs/24.3/lisp/progmodes/cc-cmd.el
Certaines personnes se plaignent que ma configuration ne fonctionne pas. Effectivement, il fonctionne dans tous les stable versions d'Emacs (23.4, 24.3, 24.4) si vous ne modifiez pas la configuration par défaut (L'indentation a des profils différents, mon installation est basée sur le profil par défaut).
Mon point clé est, sur cette question spécifique, vous avez besoin de lire le code.
Avant de procéder au réglage individuel de décalages, de configurer préférable de style. J'utilise stroustrup, vous mon essayez-en d'autres, voir http://www.emacswiki.org/emacs/IndentingC#toc1 pour les noms et http://en.wikipedia.org/wiki/Indent_style#Variant:_Stroustrup pour des exemples
M-x customize-la variable c-défaut-style
(et le jeu de votre choix pour C++_