PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : indent: Funktions-Typ u. Funktions-Name in einer Zeile behalten?



nobody0
06-08-2003, 15:56
Mit dem indent muss ich Code formatieren, damit der auf dem CVS-Server fast immer im selben Format ist und Änderungen übersichtlich bleiben. Damit die Kollegen, deren Editor dummerweise die Fundsteleln in der ersten Zeile plaziert (CodeWright), auch den Rückgabewert sehen, muss der Funktionstyp (in einer *.c) in derselben Zeile stehen, also z. B. so:

void foo (int bar)
{
...

statt

void
foo (int bar)
{
...

Mit dem K&R-Style bekomme ich das zwar mit der Zeile hin, aber damit werden leider die anderen Optionen ignoriert, also beispielsweise das Einrücken um 2 Schritte nach einer öffnenden Klammer.

Gibt´s für das Problem eine einfache Lösung, oder muss man einen anderen Prettyprinter/Beatyfier als indent nehmen? :confused:

anda_skoa
06-08-2003, 16:29
Eventuell kann man auch was mit CVS Optionen machen.

So wie man bei diff mit -b und -B Whitespace Änderungen ignorieren kann.

Abgesehen davon, habt ihr keinen Codingstyle an den sich alle zu halten haben?

Ciao,
_

nobody0
06-08-2003, 18:06
Ja, einen Codestyle haben wir und damit der eingehalten wird nehme ich indent mit einigen Optionen. Der Style muss aber etwas geändert werden, weil manche Viewer von den Kollegen nicht ausreichend konfiguriert werden können und die schwerlich von anderen wie Emacs zu überzeugen sind.
Das letzte, was noch fehlt, ist halt Typ u. Funktionsname in eine Zeile zu bekommen (u. a. mit den Optionen -blank-lines-after-procedures --brace-indent0 --space-after-cast --blank-before-sizeof --dont-format-comments --space-after-procedure-calls --tab-size8 --no-tabs).

Das Diff ohne Whitespaces wäre als default ideal, aber wie kann man das angeben bei CVSWin, und Cervisia; kann das mal jemand kurz angeben ? :rolleyes:

anda_skoa
06-08-2003, 22:29
hmm, ich glaube das geht über die optionen in .cvsrc
WinCVS wird ja auch eine Config haben.

Ich versteh aber nicht ganz, was jemanden davon abhalten sollte, Rückgabewert und Name in einer Zeile zu schreiben.

Ich meine, das geht sogar mit Notepad!

Der Editor wird ja nicht nach dem Typ automatisch ein Newline einfügen während man tippt, oder?

Ciao,
_

nobody0
07-08-2003, 08:26
Original geschrieben von anda_skoa
hmm, ich glaube das geht über die optionen in .cvsrc
WinCVS wird ja auch eine Config haben.

Ich versteh aber nicht ganz, was jemanden davon abhalten sollte, Rückgabewert und Name in einer Zeile zu schreiben.

Ich meine, das geht sogar mit Notepad!

Der Editor wird ja nicht nach dem Typ automatisch ein Newline einfügen während man tippt, oder?

Ciao,
_

Aha, welche Option muss denn in .cvsrc rein? :confused:

Das Problem ist nicht der Editor sondern der Prettyprinter, denn ich benutze CVS nur unter Linux (weil sonst doppelter Aufwand wenn zus. unter Win) und in die Skripte zum Hin- u. Herkonvertieren habe ich den indent eingetragen, damit der Stil derselbe ist u. die Syntax wirklich der Semantik entspricht (bei Sprachen wie Ruby ist es ja umgekehrt, so dass dort die Syntax die Semantik bestimmt).

anda_skoa
07-08-2003, 11:09
Original geschrieben von nobody0
Aha, welche Option muss denn in .cvsrc rein? :confused:


Ich kann das CVS Manual nicht auswendig :rolleyes:



Das Problem ist nicht der Editor sondern der Prettyprinter, denn ich benutze CVS nur unter Linux (weil sonst doppelter Aufwand wenn zus. unter Win) und in die Skripte zum Hin- u. Herkonvertieren habe ich den indent eingetragen, damit der Stil derselbe ist u. die Syntax wirklich der Semantik entspricht (bei Sprachen wie Ruby ist es ja umgekehrt, so dass dort die Syntax die Semantik bestimmt).

Bitte langsam.
Die Entwickler schreiben es richtig in ihren Editoren.
Dann kommt es richtig ins CVS.
Unter Linux druckst du das dann und dafür formatierst du es um, damit es falsch aussieht?

Ciao,
_

nobody0
07-08-2003, 17:17
Nein; ich habe in den Skripten mit unix2dos und dos2unix den indent, damit ich den Code nicht formatieren muss.

anda_skoa
07-08-2003, 18:26
Original geschrieben von nobody0
Nein; ich habe in den Skripten mit unix2dos und dos2unix den indent, damit ich den Code nicht formatieren muss.

Ich checks nicht, tut mir leid.
Wo entsteht die falche Formatierung?
Die Editoren der Entwickler haben wir ja schon ausgeschlossen, dann kommt doch nur mehr CVS einschecken und auschecken, das sicher nichts ändert.

Also:
Developer gibt ein
void foo()
{
}

dos2unix ändert die Linefeeds

cvs ci checkt es ein
cvs up oder cvs co checkt es aus

unix2dos ändert Linefeeds

Developer zeigt es an und es ist nun
void
foo()
{
}

Ab wo ist es falsch?

Ciao,
_

nobody0
07-08-2003, 22:12
Also der indent macht das. weil der im Skript steht, dass auch dos2unix bzw. unix2dos enthält. Und die Skripte brauche ich, weil ich meist unter Linux arbeite, aber der Compiler nur für MS-win ist.