On Feb 22, 2012, at 12:27 AM, Allan Odgaard wrote:
On 22/02/2012, at 14.17, Jerry wrote:
work on a book with chapters it is not unusual to prefix your file names with a sorting
key, e.g. as in: http://svn.textmate.org/trunk/Manual/pages/en/
I'm not writing
a book with chapters. Putting prefixes on source file names seems like a bad programming
I was responding to the example given for where manual sorting was preferred, for that
example, I think my response of prefixing the file names still make sense as it then also
show up correctly e.g. on the link I posted to an example where this was carried out.
Your “rebuttal” failed to make me understand what your needs are. It sounds like for your
case automated sorting would still be a possibility, you just don’t want the sorting to be
based on file names. Similar to how ideally I want an implementation file like “foo.m” to
appear before its header “foo.h” — I don’t think manual sorting is the way to solve that
problem though (but I do deem it worthy of solving).
First of all I apologize for being a little tardy with my answer. I appreciate
your patience generally with this subject. And I don't intend my language to be flamey
so with that understanding maybe I can just write without trying to finesse every
I'm not using TM2 in my work yet so my comments might be a little undereducated from
low usage of TM2. Part of the reason is that the Ada bundle is broken in TM2 and I
didn't write it and so that's a TBD at this point.
And some ad hoc notation: Let "Project" mean a "TM project" which
includes a way to organize files. Let "project" mean some piece of work that I
am doing e.g. designing an autonomous moon cheese extractor.
I guess I'm having a little trouble telling you what my needs are because it seems so
obvious to me that TM 1 is awesome in part because of its project feature--and now I'm
explaining it to the guy who made it awesome. Xcode does an awful lot right in this regard
(the last time I checked).
Most of my programming is doing numerical calculations and signal processing algorithms
and simulations. My main language is Ada but I also use Octave, Pascal, C, and Mathematica
and whatever else seems appropriate that I know about. I have written Ada bindings to the
PLplot plotter. So I typically link to C plotter libraries, need access to the Ada plotter
bindings (which are maintained in a local copy of an SVN repository), I might call an
Octave command or two, and I might link to some old Pascal code. It is convenient to have
some combination of these and other resources in a Project drawer, and to be able to
organize them manually (visually) in any way that makes logical sense for a particular
project. This can vary from project to project and Project to Project. Groups (what I
previously called pseudo-folders) are wonderful for this kind of project organization. I
think in another post I called this process of collecting resources and organizing in
whatever way makes sense for a particular project (and Project) "orthogonal" to
the OS's file system.
On disk, my code is organized by language, whether I wrote it or someone else wrote it,
whether it is code that I use once or whether it is code that I reuse over and over, and
whether it is a long-term project or just a one-off quickie which might or might not be
related to my current project. I have made a kind of template which includes various build
folders (normal, debug) and also product folders, as well as Project file, .tmprog, which
is pre-built to reference some of my commonly-used stuff. So when I start a new project I
just copy that folder and off I go, dragging into the Project drawer whatever other
additional resources that I need.
On my current project, each time I do a run, I can optionally read run parameters from a
text file or from keyboard. Each run generates a folder of results and documentation,
including a very detailed text file of run parameters and numerical results. The
run-results folder also usually contains a PDF of plots and some binary files that can be
opened by other applications. After one or several runs that, say, are related to varying
a parameter foo, I might organize these run-results folders with the Finder into something
sensible, i.e. another folder that might be called "Varying foo". This can be
anywhere on disk, but at some point I might want to access at least the text results file
from within TM, often running a diff on them to easily see differences rather than trying
to spot them by eye.
I sometimes also like to include in a project folders that don't necessarily contain
source code but are associated e.g. with third party libraries that I link to, so that I
can have quick access to documentation (including source code but not code that is
compiled by my project) for those libraries. Groups are handy in this context also because
I can drag only readable files from a Finder folder and not be bothered with the
non-readable ones inside TextMate.
projects can span years and can take on a rather detailed structure, but with much
unneeded structure easily hidden with the disclosure triangles in the Project drawer.
It has been discussed before using aliases to simulate the contents of a Project drawer
but (1) I don't relish having to do all this by hand for Projects that I already have
set up to (my definition of) perfection, and (2) it just makes much more sense to do much
of this organization within TM since one's work at that point is TM-directed, not
As to the arranging question, the feature of Projects that I love is the ability to
arrange things manually so that things that make logical sense together can be put
together, whether they be files, Finder folders, or TM groups, or any combination of all
of the above. Maybe in a Project where I am updating PLplot bindings, I want the Ada
source to be prominent and equally prominent with the C source, but in my cheese extractor
work I want the PLplot sources put away since I don't often need to access it.
Yes, sorting would be really nice, too--by alphabetical by name and extension, creation or
modification date (especially modification date). So maybe a neat way to combine all of
these viewing modes is with a menu that has View by... and then Creation Date,
Modification Date, Name, Extension, or Visual Layout, the latter being the way the user
last had things arranged--kind of a list-based corollary of the Finder's visual layout
mode. I love the Finder's visual layout mode (By Icons) and being able to quickly
switch between views with a keystroke. Maybe there could be a user-defined (and/or
TM-assisted) sort order so that foo.m does appear before foo.h. If it is extensions that
are the problem, just have a draggable list of extensions and make that a secondary sort
criterion after filename, creation, etc.
It would be cool to have TM's Project display have a mode like that, where (at each
hierarchy level) all the folders and groups can be arranged spatially in two
dimensions--that would make it super easy to find stuff without trying to parse a list
every time. Maybe it could be in a kind of heads-up display temporarily overlying