2009-10-22 7 views
1

Je suis un utilisateur de Linux à la recherche d'un embellisseur de code qui prendra des fichiers contenant du code C et les formatera selon les spécifications. Plus précisément, je suis à la recherche de:Code formateur/embellisseur pour C sous Linux pour utilisateur Emacs

  • Modifier les indentations être 8 places
  • blocs de format de code toujours
  • Ajouter une ligne se casse toujours

Ce serait bien si elle avait à la fois par défaut et la possibilité de personnaliser. Je préfère les solutions libres/open source lorsqu'elles sont disponibles. Aucune suggestion? MISE À JOUR: Je devrais également noter que je suis un utilisateur d'emacs, et ceci peut être une question spécifique d'emacs. J'ai mis à jour les tags pour refléter cela.

Répondre

10

"tiret" et "cb" avec la plupart des distros que j'ai eu ...

3

emacs? C'est probablement plus que ce que vous cherchez, mais il le fera ...

+2

et Vim, bien sûr. – Cascabel

+0

Comment on ferait ça? J'ai utilisé GNU Indent comme @Dirk Eddelbuettel et d'autres suggérés, mais maintenant quand j'édite en utilisant Emacs, je continue à vouloir restaurer l'indentation par défaut, au lieu des 8 que j'ai fait quand j'ai utilisé Indent, et ça devient un peu ennuyeux . Il semble que pour un utilisateur emacs, cela n'a pas vraiment de sens d'utiliser autre chose qu'emacs pour le formatage. – Ralph

+0

vous voulez définir votre style c finalement, dans vos .emacs vous voulez la ligne (c-set -style "______") dans votre crochet c-mode. Pour choisir le style, je voudrais jouer avec eux en appelant simplement c-set-style manuellement (M-x ....) l'onglet qui donne la liste complète. mais si vous voulez 8 onglets char, vos options sont bsd, linux et python. Les noms n'ont rien à voir avec ce pour quoi vous les utilisez, juste d'où vient le style.Après avoir défini le style, je sélectionne le document, puis effectue la mise à l'essai de la région de retrait M-x. –

2

Si vous voulez que le moteur d'indentation (externe) joue bien avec Emacs, vous devez être sûr de configurer votre cc- Indentation de mode pour correspondre. Il y a beaucoup de styles que vous pouvez utiliser. Et si aucun d'entre eux répondent à vos besoins, vous pouvez customize les paramètres (d'utilisation particulière est le interactive customization).

Une autre solution, inférieure, consisterait à configurer votre before-save-hook pour appeler le schéma d'indentation. Quelque chose comme ce qui suit:

(add-hook 'c-mode-common-hook 
    (lambda()) (add-hook (make-local-variable 'before-save-hook) 
          'indent-it-all)) 
(defun indent-it-all() 
    "indent the buffer using indent" 
    (shell-command-on-region (point-min) (point-max) "indent" t t)) 
0

C'est ce que j'utilise, et je pense qu'il répond à tous vos besoins d'indentation, vous pouvez l'essayer en ajoutant le code à votre fichier .emacs. Cette fonction prend en charge une indentation correcte quand je suis à écrire du code:

(defun linux-c-indent() 
    "adjusted defaults for C/C++ mode use" 
    (interactive) 
    (setq tab-width 8) 
    (setq indent-tabs-mode nil) ;;force spaces, to work with dumber editors 
    (setq c-basic-offset 8) 
    (setq c-set-style "K&R")) 

(add-hook 'c-mode-common-hook 'linux-c-indent) 

Et si je veux réindenter les fichiers écrits par d'autres personnes, j'utiliser les éléments suivants:

(defun iwb() 
    "indent whole buffer" 
    (interactive) 
    (delete-trailing-whitespace) 
    (indent-region (point-min) (point-max) nil) 
    (untabify (point-min) (point-max))) 

La fonction iwb s'exécute chaque fois que j'ouvre un fichier "programming" dans emacs. De cette façon, je vois toujours le code bien indenté. Je peux mettre ce peu de code aussi je le veux.