On Thu, Jan 17, 2013 at 08:26:16AM +0100, Era Scarecrow wrote:
Somehow what seems like would work good is a card-file system.
Assuming the order of functions/declarations don't matter and
you let the editor deal with where it places things (say,
alphabetically or by attributes like private, pure, etc), then
having a partial 3d view where you can flip through various
function definitions & header documentation, then open only
the function(s) of interest in question, hiding anything
unrelated. If there's anything global or variables it accesses
those could be listed too along with their type, and perhaps
where the type's definition comes from for reference; and any
functions it calls along with others with the same overloading
name.
[...]
That sounds like a very good idea. In fact, Vim has a feature
called folding, where parts of the file are folded into a
single line, to be expanded/collapsed at will. Properly
configured, this can be made to auto-collapse all functions,
nested blocks, etc., to be expanded at will. This makes long
source code much more navigable (though it doesn't change
sorting order -- I can see where that may be useful).
NotePad++ does this too. However you are still managing the
order of the functions, obviously in structs the order of
variables matter (but not anywhere else), so if the editor
handled where it was placed you'd always have a consistant
layout. This likely would help quite a bit with managing source
code.
Course alphabetical could be a default after any other
specialized functions are done. Examples are I'd want
front/popFront next to eachother in the list, back/popBack,
length, opIndex, opIndexAssign, all the slices together along
with opDollar. Etc. Probably also have them in in multiple
fold-outs where it's sorted by some criteria (unittests, public
API, templates, pure/@safe).
Could also have different operators and function predefined (but
in grey for example), then enabling it gives you a default basic
skeleton in which to add your operator specific code.
All of this is what you could do without actually needing the
compiler (but probably needs proper syntax checking).