C Code Beautifier in gedit
Wer kennt es nicht, der Quellcode des anderen sieht sch***e aus, aber man muß/will ihn trotzdem lesen. Ich hab für gedit eine einfache Möglichkeit gefunden:
- indent http://www.gnu.org/software/indent/ installieren (sudo aptitude install indent)
- gedit Preferences: External Tools plugin aktivieren
- External Tools plugin konfigurieren
Jetzt im External Tools Manager ein neues “Tool” anlegen:
Name (z.B. “CodeBeautify”)
Description (z.B. “Make a BenchIT compatible code reformatting (K&R style)”)
Shortcut Key (z.B. “<Control>F12″)
Command:
#!/bin/sh indent 'FLAGS'
Input: Current document
Output: Replace current document
Applicability: All Documents
Meine Flags sind (etwas abgewandelter Kernighan & Ritchie Style für C Datein des BenchIT Projekts):
-nbad -bap -nbbb -sob -c40 -cd40 -ncdb -cp40 -d0 -nfc1 -fca -sc -br -ce -cdw -cli3 -cbi3 -nss -npcs -ncs -saf -sai -saw -nprs -di1 -nbc -nbfda -nbfde -npsl -brs -brf -i3 -ci3 -lp -ip3 -l80 -nbbo -nhnl -nut
(Indent bringt einige vordefinierte Styles mit, d.h. man muß nicht gezwungenermaßen eine große Menge an Flags angeben.)
Hat man eine beliebige C Datei geöffnet einfach Control+F12 drücken und schon ist die Datei formatiert.
Bin mit Indent auch recht weit gekommen.
Aber eine mehrzeilige Parameterliste auf die Klammerhöhe einzurücken (wenn ich mich recht erinner) GEHT MAL SOWAS VON GAR NICHT!
brendel@faye:~/misc$ cat indention.nearly.good.but.not.really
indent test.cpp –blank-lines-after-procedures –braces-on-if-line –brace-indent0 –braces-after-struct-decl-line –continuation-indentation8 –case-indentation0 –indent-level4 –case-indentation0 –dont-break-procedure-type –leave-optional-blank-lines –no-tabs –preserve-mtime –space-after-for –space-after-if –space-after-while –tab-size4 –dont-break-function-decl-args –no-parameter-indentation –dont-format-comments -o test.out.cpp
doch sollte gehen mit -lp (bzw ausgeschrieben –continue-at-parentheses) sofern es das ist was du mit “Parameterliste auf die Klammerhöhe einzurücken” meinst, du kannst auch morgen gern mal rum kommen, wenns nicht gehen sollte
das gegenteil. Ich möchte das verhindern.
na dann einfach -nlp
Bin etwas näher an das gekommen was ich wollte. Aber es ist ziemlich ungeeignet für c++.