[MonoDevelop] New code formatter joins line to aggressively
Mike Krüger
mkrueger at novell.com
Fri Sep 11 16:28:28 EDT 2009
Hi
> * Apart from "Format document", there should also be a "Format
> selection". The latter one would operate on the current line only, if
> there is no selection.
>
Difficult to do, I could do something like format current member/block
or something.
> * It joins lines way to aggressively.
>
> For example, this manually formatted code (best viewed in monospace...):
>
> ICriteria criteria =
> session.CreateCriteria(typeof(RegisterRequest))
> .CreateCriteria("Connection")
> .Add( Restrictions.Eq("Name", connectionName) );
>
> becomes this unreadable thing:
>
> ICriteria criteria = session.CreateCriteria
> (typeof(RegisterRequest)).CreateCriteria ("Connection").Add
> (Restrictions.Eq ("Name", connectionName));
>
I'm currently working on improving the on the fly formatter a bit. It
preserves custom spaces but has problems with some settings. This
algorithm could then be used for format document.
>
> Maybe it shouldn't join lines at all. Rather, if a statement is
> manually divided over several lines, it should probably remain on as
> many lines with all lines except the first indented one more step than
> the first line. Possibly, if it is inside parentheses then perhaps the
> subsequent lines should align with the parentheses, like they did in
> the MD 2.0's indentation mode:
>
> var recent_not_infinite_enddate =
> Restrictions.And(Restrictions.Ge("EndDate", earliestChangeTime),
> Restrictions.Lt("EndDate", DateTime.MaxValue));
>
>
> Now.... another question is: Should it wrap lines that are too long?
>
I can need help/ideas for improving the format algorithm. I've two
options doing the merge of blank lines/comments for example. I'm not
100% sure which is better. The alignment is part of this.
Wrap lines that are too long - artifically ? Could be done, but I think
it's nonsense having something like the '80 chars' limit (did I mention
that I work with a 28" wide screen display ?).
Regards
Mike
More information about the Monodevelop-list
mailing list