2010-02-24 08:37:05 +0000 / mad / revision 3202
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: If we're run without specifying the path to us, then assume we can run ruby-launcher the same way. I can't see how this could be less useful than throwing an exception and it might let Aaron Oman start Terminator from Perforce.
2010-02-01 17:48:37 +0000 / enp / revision 3201
src/e/util/GuiUtilities.java: Starting with Mac OS 10.6 Menlo is the default monospaced font in Terminal.app and Xcode, so if it is available make it our default font too, overriding the traditional choice of Monaco.
http://groups.google.com/group/terminator-users/browse_thread/thread/2cc6787cb9a9650?hl=en
2010-01-30 19:05:01 +0000 / mad / revision 3200
bin/invoke-java.rb: If we get as far as starting Java, then the contents of the application log (as opposed to the terminal log) are likely to be interesting. Elliott also suggests asking Cheryl Long what she was doing, though I worry that users will spend ages writing up that, when what was actually important was something else entirely. Let's see how we get on with Cygwin paths. I'm mindful of introducing cygpath problems into the exception handling, though I can't really see that happening, once we've got this far. Testing this on Gnome, I see that the monolog box has become far too long for zenity (or whatever it is) to present sanely.
2010-01-24 21:01:59 +0000 / enh / revision 3199
src/e/util/CollectionUtilities.java: since the natural order comparator is thread-safe and immutable, we only need one instance of it.
2010-01-24 20:55:59 +0000 / enh / revision 3198
src/e/ptextarea/PAnchorSet.java:
src/e/util/CollectionUtilities.java: pull out PAnchorSet's inlined "lower_bound" and make it generally available.
2010-01-24 05:07:55 +0000 / enh / revision 3197
src/org/jessies/test/Assert.java: new assertions needed for the tests in the previous revision.
2010-01-24 05:07:20 +0000 / enh / revision 3196
src/e/util/CollectionUtilities.java:
src/e/util/SmartStringComparator.java: two new classes required to fix Evergreen's sorting of tags.
2010-01-20 06:38:46 +0000 / enh / revision 3195
lib/data/spelling-exceptions: a couple more bits of jargon.
2010-01-19 20:22:25 +0000 / enp / revision 3194
lib/build/universal.make: We no longer have a Mac OS X 10.4 machine to build on. OS X 10.6 includes the older developer SDK libraries, but using them gives compile warnings like
Linking java-launcher...
mkdir -p /Users/ed/Projects/WorkingCopies/salma-hayek/.generated/universal_Darwin/bin && \
g++ -V4.0.1 /Users/ed/Projects/WorkingCopies/salma-hayek/.generated/native/all/java-launcher/universal_Darwin/java-launcher.o /Users/ed/Projects/WorkingCopies/salma-hayek/.generated/native/all/java-launcher/universal_Darwin/synchronizeWindowsEnvironment.o /Users/ed/Projects/WorkingCopies/salma-hayek/.generated/native/all/java-launcher/universal_Darwin/WindowsDirectoryChange.o -o /Users/ed/Projects/WorkingCopies/salma-hayek/.generated/universal_Darwin/bin/java-launcher -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -lobjc -lstdc++ -framework Cocoa
ld: warning: object file compiled with -mlong-branch which is no longer needed. To remove this warning, recompile without -mlong-branch: /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o
We continue to specify Mac OS X 10.4 as the minimum supported version, at least until somebody reports that it no longer works. Doing so means we cannot also target -arch x86_64 or the build will fail with an error like:
g++ -V4.0.1 -Wno-long-long -fno-omit-frame-pointer -fno-strict-aliasing -fPIC -g -W -Wall -Wshadow -Werror -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch ppc -arch i386 -arch x86_64 -pedantic -x objective-c++ -I/Users/ed/Projects/WorkingCopies/salma-hayek/native/Headers -I/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home//include -c -o /Users/ed/Projects/WorkingCopies/salma-hayek/.generated/native/all/java-launcher/universal_Darwin/java-launcher.o /Users/ed/Projects/WorkingCopies/salma-hayek/.generated/native/all/java-launcher/universal_Darwin/java-launcher.cpp
cc1objplus: warnings being treated as errors
<built-in>:0: warning: Mac OS X version 10.5 or later is needed for use of the new objc abi
lipo: can't figure out the architecture type of: /var/folders/Gr/Gr0gU-YPErW6u5ZbcDyzZ++++TI/-Tmp-//ccIPLCer.out
2010-01-19 18:39:31 +0000 / mad / revision 3193
lib/data/spelling-exceptions: I'm coming at this, again, from a C++ perspective, but these terms aren't C++ keywords or identifiers and, indeed, aren't really specific to C++. I'm more likely to use them in comments, including check-in comments, than in code.
2010-01-11 01:23:08 +0000 / enh / revision 3192
lib/build/universal.make: add support for building with ecj.
2010-01-11 01:21:38 +0000 / enh / revision 3191
src/e/ptextarea/PTextArea.java: remove an unused constant found by ecj.
2010-01-11 01:14:38 +0000 / enh / revision 3190
src/e/demo/PTextAreaDemo.java:
src/e/gui/CrossIcon.java:
src/e/gui/DocumentAdapter.java:
src/e/gui/EMenuBar.java:
src/e/gui/FilenameChooserField.java:
src/e/ptextarea/PAssemblerTextStyler.java:
src/e/ptextarea/PBashTextStyler.java:
src/e/ptextarea/PCPPTextStyler.java:
src/e/ptextarea/PCSharpTextStyler.java:
src/e/ptextarea/PCTextStyler.java:
src/e/ptextarea/PJavaScriptTextStyler.java:
src/e/ptextarea/PJavaTextStyler.java:
src/e/ptextarea/PLineNumberPanel.java:
src/e/ptextarea/PPBasicTextStyler.java:
src/e/ptextarea/PPerlTextStyler.java:
src/e/ptextarea/PPhpTextStyler.java:
src/e/ptextarea/PProtoTextStyler.java:
src/e/ptextarea/PPythonTextStyler.java:
src/e/ptextarea/PRubyTextStyler.java:
src/e/ptextarea/PTalcTextStyler.java:
src/e/ptextarea/PTextStyler.java:
src/e/ptextarea/PVhdlTextStyler.java:
src/e/ptextarea/PXmlTextStyler.java:
src/e/ptextarea/UnprintableCharacterTextSegment.java:
src/e/tools/BuildUi.java:
src/e/util/Log.java:
src/e/util/PatternUtilities.java: fix unused imports found by ecj.
2010-01-11 01:06:45 +0000 / enh / revision 3189
src/e/util/ProcessUtilities.java: remove unnecessary semicolon, found by ecj.
2010-01-10 23:42:05 +0000 / enh / revision 3188
src/e/util/Preferences.java: support font styles ("plain", "bold", "italic", and "bold italic") in our simple font chooser. Previously, although you could manually configure non-plain fonts, you couldn't choose a non-plain font in the UI (and using the UI would mangle your choice to the plain equivalent). Requested for Terminator by Joseph Prasad (http://groups.google.com/group/terminator-users/t/b71bf5011e197af2).
2010-01-07 23:37:32 +0000 / mad / revision 3187
lib/data/spelling-exceptions: The singular, linefeed, is already in whatever dictionary I'm using but the plural isn't. It seems a reasonable extension.
2010-01-07 23:36:36 +0000 / mad / revision 3186
lib/data/spelling-exceptions: I use "destructor" even when writing check-in comments, which aren't C++.
2010-01-05 23:17:24 +0000 / mad / revision 3185
bin/invoke-java.rb: Be more specific about the arguments to cygpath, in case it fails when stderr is hidden, like it is, initially, during the build. In that case, I don't think we have any useful png icon to give JavaHpp.
2010-01-05 22:48:01 +0000 / mad / revision 3184
bin/invoke-java.rb: I'm getting nowhere fast with this cygpath-producing-empty-output problem. Perhaps it's time to resort to printf debugging. Making this edit on my Linux box but trying to test the Windows-only code path via Samba, I saw one failing invocation of cygpath with an empty path. It turned out to be because my Linux work area has no Windows support binaries. Perhaps we should fail here, where we can inform the user of the path we looked under, rather than blarting out the previous, rather obtuse error in a terminal about out inability to load libpty.so. Or perhaps people were relying on this succeeding in order to be able to use pure Java tools even without support binaries. If the latter, then it would probably be a good idea to have a code-comment explaining why we're returning nil in that case. Perhaps the calling code should then handle nil explicitly.
I doubt anyone will notice the printfs, as I think stderr is discarded when double-clicking on the desktop shortcut. Our guinea pig will thus have to run Terminator from a Cygwin bash prompt.
2009-12-13 22:42:48 +0000 / enh / revision 3183
src/e/util/FileUtilities.java: I'm sure I keep writing code to extract extensions, but I couldn't find an example.
2009-12-13 22:41:30 +0000 / enh / revision 3182
src/e/ptextarea/PHighlightManager.java: we only want to iterate over the map values, so it's a waste to go via the keys.
2009-11-29 22:00:00 +0000 / mad / revision 3181
lib/build/dist.make: The parts of universal.make that know about the directory structure on jessies.org and particularities of the uploaded filenames.
lib/build/universal.make: This is then delegated to via a variable, DIST_MAKEFILE, which can be set by the calling code in order to provide a different implementation of "make native-dist", for uploading elsewhere than jessies.org. While DIST_MAKEFILE is required to be a makefile fragment, its implementation need not be more than a couple of lines, to delegate to a script, passing on the values of any variables that the script might find useful.
2009-11-17 01:37:44 +0000 / mad / revision 3180
lib/build/mdorey.sh: Clarifications and previously forgotten details based on reverting to Cygwin 1.5 on the build machine.
2009-11-16 19:56:23 +0000 / mad / revision 3179
www/cygwin-setup.html: 1.5's setup supports -q for updates but not -P. Now I know this, I can clarify what I'd previously left here. There's a significant economy to traversing 1.5's package browser in alphabetical order, so sort the full list of recommended packages.
2009-11-15 20:25:21 +0000 / mad / revision 3178
www/cygwin-problems.html: I suggested retitling this FAQ entry in response to the reported problem with groovysh and no-one objected but we can't be trying to maintain a list of every console subsystem application.
Really, I'm only doing this now so the nightly build script will update the Terminator installation now I've downgraded to Cygwin 1.7.0-62 using the excellent Cygwin Time Machine with setup.exe's --no-verify switch, to work around the bug reported by Al Hagopian and forwarded by me as http://cygwin.com/ml/cygwin/2009-11/msg00500.html.
2009-11-11 19:14:02 +0000 / mad / revision 3177
bin/invoke-java.rb: The whole rest of the function, which is ~50 lines, was indented, so clearly a candidate for an early return.
2009-11-11 17:36:15 +0000 / mad / revision 3176
www/downloads.html: With the smallest of hints, our new friend was able to diagnose and work-around his Cygwin problem (cygpath requiring the stdc++ DLL, which seemingly isn't installed by default). He does remind me that we do require a 32 bit Java to match the Cygwin Jni, which we should probably say upfront. He also notes that Windows 7 is only supported by Cygwin 1.7, but Cygwin's web page already says that and we already recommend 1.7 elsewhere.
2009-11-11 01:42:29 +0000 / mad / revision 3175
www/downloads.html: "Roberts, Brandon" and "constantine" both seem to be reporting problems on Windows 7 x64 (which I think is Microsoft orthography for what we, elsewhere, call x86_64). We know Amit's using Terminator successfully on Windows 7 x86, so x64 seems to be the active ingredient. This is, for me, the most diagnostic symptom:
-Djava.class.path=;;;;
That means that cygpath has returned an empty result, several times.
2009-10-29 05:33:46 +0000 / mad / revision 3174
www/cygwin-problems.html: A correspondent glorying only in the name "Randy" makes us aware that Microsoft's ftp has a similar disinclination to work within rxvt and Terminator as their telnet effort.
2009-10-25 00:13:22 +0100 / enh / revision 3173
src/org/jessies/test/Assert.java: stack overflow was not the failure I intended here.
2009-10-25 00:06:37 +0100 / enh / revision 3172
src/org/jessies/test/Assert.java: in the absence of a clever way to assert that something throws a particular exception, allow the user to write
try {
whatever
fail("should have thrown WhateverException");
} catch (WhateverException ex) {
// Expected.
}
This also reduces internal duplication slightly.
2009-10-18 08:37:17 +0100 / enp / revision 3171
src/e/gui/AboutBox.java: Remove redundant method, unused since SCM r551.
2009-10-17 01:23:29 +0100 / mad / revision 3170
www/downloads.html: The ever-increasing list of Windows versions has been distressing me for a while. We've tried it on Windows 2000 (though perhaps no-one has for a while) and Windows 7 and we've no reason to believe that it wouldn't work on anything in between. Elliott suggests similar for the Mac OS version. I do think it's worth recording that we expect it to work on 10.6. That will encourage better bug reports - the reporter won't waste their time thinking it's not meant to work there.
2009-10-16 23:42:43 +0100 / mad / revision 3169
www/downloads.html: Courtesy of Amit, we know that at least Terminator worked at least once on at least one Windows 7 installation. I see the value of recording that. But this list of all Microsoft's marketing names for their desktop and server OS releases for the last decade is obscuring the "x86" bit. We have had questions about amd64 on Windows a couple of times. (The show-stopper there is Cygwin. gcc support for amd64 Windows seems to have matured significantly in the last year or so. A production quality gcc would obviously help them.)
2009-10-14 05:15:09 +0100 / enh / revision 3168
lib/build/googlecode_upload.py: apply epg's patch from http://code.google.com/p/support/issues/detail?id=558 to fix this script, since the maintainers don't seem interested.
2009-10-14 04:55:05 +0100 / enh / revision 3167
lib/build/googlecode_upload.py: revision 190 of http://code.google.com/p/support/source/browse/trunk/scripts/googlecode_upload.py .
2009-10-14 00:39:00 +0100 / mad / revision 3166
bin/show-alert.rb: Amit Brahmbhatt demonstrates that Terminator does work fine on Windows 7, with no spurious console windows, once he'd read the section on cygwin.com's front page about Windows 7 only being supported on Cygwin 1.7. The one evident problem so far was that starting Terminator before starting a "Cygwin" window threw this horrible error:
Exception NameError: undefined local variable or method `app_name' for #<ExceptionReporter:0x10423244>
at C:/Program Files/software.jessies.org/terminator/Resources/salma-hayek/bin/show-alert.rb:97:in `run_in_home_directory'
at C:/Program Files/software.jessies.org/terminator/Resources/salma-hayek/bin/show-alert.rb:120:in `initialize'
at C:/Program Files/software.jessies.org/terminator/Resources/salma-hayek/bin/show-alert.rb:134:in `new'
at C:/Program Files/software.jessies.org/terminator/Resources/salma-hayek/bin/show-alert.rb:134:in `report_exceptions'
at C:/Program Files/software.jessies.org/terminator/Resources/terminator/bin/terminator:21:in `launch'
at C:/Program Files/software.jessies.org/terminator/Resources/terminator/bin/terminator:214
When it should have told him exactly what to do.
Only the first change here is functionally necessary. I just don't like the implicit parentheses on the second line I've changed.
2009-10-11 21:10:13 +0100 / pcn / revision 3165
Use our own file (jessies-wide) storing those spellings the user has
explicitly accepted. This fixes the spelling acceptance on MacOS.
2009-10-08 04:27:07 +0100 / enh / revision 3164
src/e/util/SpellingChecker.java: refactor so that the FileType-specific sets of exceptions delegate to a shared set of FileType-independent exceptions. The code supports arbitrary levels of delegation.
2009-10-07 04:25:11 +0100 / enh / revision 3163
src/e/util/SpellingChecker.java: revert r3162.
2009-10-06 22:37:25 +0100 / pcn / revision 3162
Don't rely on ispell to remember our accepted spellings, but
do it ourselves instead. This also cleans up the global spellings
treatment so we don't end up with one copy of them per file type,
which is a bit nice. Note: for this to actually take effect in
Evergreen we need a separate patch to that. Following shortly...
2009-10-06 04:12:43 +0100 / enh / revision 3161
www/downloads.html: looks like the new Mac .zip files built okay, so let's link to them.
2009-10-04 19:43:09 +0100 / enh / revision 3160
native/Darwin/MacSlideshow:
native/Darwin/NSPerformService: remove dead code.
2009-10-04 19:33:10 +0100 / enh / revision 3159
lib/build/universal.make: fix a comment written after testing.
2009-10-04 19:31:07 +0100 / enh / revision 3158
lib/build/universal.make: give up on .dmg as our Mac packaging format and switch to .zip instead. We can't update the HTML until after our first Mac build with these changes (but then we *must* update the HTML to prevent dangling links). Tested by manually uploading to and downloading from www.jessies.org/~enh/, using Mac OS 10.5.
2009-09-30 18:15:25 +0100 / mad / revision 3157
src/e/ptextarea/BugDatabaseHighlighter.java: I was disappointed not to see my echo-local-bug-database-patterns change take effect without a restart. I tried modifying the workspace properties before I looked at the source to see why that didn't help. I've changed that file three times in the three years since its inception, so this is no big deal.
2009-09-24 16:25:37 +0100 / enh / revision 3156
src/e/util/NumberDecoder.java: pad binary and hex numbers out to 32 or 64 bits. This makes it easier to tell the difference between 0x7ffffff and 0x7fffffff (the former being 0x07ffffff). It's less obviously useful for binary; that was just added by analogy. It might be that just rounding up to the next group of four would be better there.
2009-09-08 04:35:17 +0100 / mad / revision 3155
www/downloads.html: My existing Terminator and Evergreen worked fine after upgrading to Mac OS 10.6. A downloaded Terminator also worked, modulo the allegedly damaged image file.
lib/build/universal.make: Building on 10.6 required two changes, one to work around what looks like a minor regression in the PowerPC support and the other to work around the default compiler being changed to a less prehistoric version of gcc. Teh interwebs lead me to think that 4.0.1 was the gcc version on previous Mac OSs, so I don't *think* these changes will break Ed's nightly build on 10.whatever. Unexpectedly, then, it looks like we can, if we choose, support 10.4, 10.5 and 10.6, building on any of them.
2009-09-07 18:31:25 +0100 / enh / revision 3154
src/e/util/FileUtilities.java: introduce a new variant of FileUtilities.createTemporaryFile that offers control over everything. This should replace both of the existing variants. (The motivation for adding control over the extension is writing temporary HTML files; unlike Firefox, Chrome won't sniff the content of a .tmp file and realize it's HTML that should be rendered. I believe content sniffing to be a religious issue in the browser world, so this isn't necessarily a bug or missing feature. And giving temporary files an accurate extension doesn't seem like a bad idea anyway. Callers can always supply ".tmp" if they have nothing more interesting to say.)
src/e/util/StringUtilities.java: switch to the new variant.
2009-08-31 23:51:44 +0100 / mad / revision 3153
lib/data/spelling-exceptions: The only other wildcard-related spelling non-mistake in BlueArc's main code-base is one occurrence of "wildcardedness". With only three google matches, only one of which looks sane, we're probably better off listening to what allah's trying to tell us. (The others all have thousands or millions of matches.)
2009-08-31 05:01:37 +0100 / enh / revision 3152
lib/data/spelling-exceptions: add the other valid forms of "recurse", plus a handful of other words whose absence has been annoying me lately.
2009-08-28 23:03:00 +0100 / mad / revision 3151
lib/data/spelling-exceptions: John Holtom points a false-positive spelling error that's long annoyed me (how does it know "recursive" and not "recurse"?). Now there's a good place to fix it.
2009-08-17 21:09:32 +0100 / mad / revision 3150
lib/build/filter-build-output.rb: Removing a read-only file was iirc the motivating case for this line but $stdin.close() doesn't prevent Gnu rm from asking. Perhaps it opens /dev/console or some such. Worse, having universal.make opened as fd 0 means that make's children inherit the makefile as their input. This causes all manner of weirdness to make if the children do anything to the file, like read from it.
The right way to deny a Unix process any input is to give it /dev/null as fd 0. That stifles Gnu rm and fixes the intermittent apparent makefile truncation that prevented i386 Linux builds for a week or two.
2009-08-17 21:04:51 +0100 / mad / revision 3149
bin/invoke-java.rb: Revert accidentally committed junk from my main work area.
2009-08-17 19:58:46 +0100 / mad / revision 3148
bin/invoke-java.rb:
bin/show-alert.rb: Ruby 1.9 produces an error, when we try to delete from a Hash by assigning nil, telling us to use the delete method instead. OK then. (I searched for ENV.* = nil.)
2009-08-15 00:07:31 +0100 / mad / revision 3147
lib/build/simple.make: If someone's not followed the instructions in two years...
simple.make: ... then they're unlikely to miss the symlink in the legacy location.
2009-08-14 23:59:02 +0100 / mad / revision 3146
lib/build/package-for-distribution.rb: A lot of effort clearly went into the Build-Depends field but I'm not sure if it was ever useful. Commenting it out doesn't feel very constructive, even though it is now causing me a problem. I have tried to investigate how we'd be able to resurrect it and recorded what little progress I made.
2009-08-14 17:38:15 +0100 / mad / revision 3145
lib/build/mdorey.sh: Don't leave the reader with the misleading impression that Cygwin exim doesn't work. It does work. It's just not trivial to configure.
Really, this is just a spurious check-in to increment the version number, so the Cygwin nightly build will upload again, now I'm building with 1.7.0-58, which looks like it fixes the running-on-1.5 crashes.
2009-08-10 00:18:37 +0100 / enh / revision 3144
lib/data/spelling-exceptions: more spelling exceptions.
2009-08-09 23:32:43 +0100 / enh / revision 3143
src/e/ptextarea/PTextAreaSpellingChecker.java: push responsibility for spelling exceptions down into SpellingChecker.
src/e/util/SpellingChecker.java: support spelling exceptions, using a variation on the code that used to be divided between Evergreen and PTextAreaSpellingChecker.
2009-08-09 23:27:57 +0100 / enh / revision 3142
src/e/ptextarea/FileType.java: provide direct access to a file type's keywords without requiring the caller to know about PTextStyler. The notion of FileType seems appropriate leakage (and doesn't require a PTextArea); PTextStyler goes too far.
src/e/ptextarea/PAbstractLanguageStyler.java:
src/e/ptextarea/PAssemblerTextStyler.java:
src/e/ptextarea/PBashTextStyler.java:
src/e/ptextarea/PCPPTextStyler.java:
src/e/ptextarea/PCSharpTextStyler.java:
src/e/ptextarea/PCTextStyler.java:
src/e/ptextarea/PEmailTextStyler.java:
src/e/ptextarea/PJavaScriptTextStyler.java:
src/e/ptextarea/PJavaTextStyler.java:
src/e/ptextarea/PMakefileTextStyler.java:
src/e/ptextarea/PPatchTextStyler.java:
src/e/ptextarea/PPBasicTextStyler.java:
src/e/ptextarea/PPerlTextStyler.java:
src/e/ptextarea/PPhpTextStyler.java:
src/e/ptextarea/PPlainTextStyler.java:
src/e/ptextarea/PProtoTextStyler.java:
src/e/ptextarea/PPythonTextStyler.java:
src/e/ptextarea/PRubyTextStyler.java:
src/e/ptextarea/PTalcTextStyler.java:
src/e/ptextarea/PTextStyler.java:
src/e/ptextarea/PVhdlTextStyler.java:
src/e/ptextarea/PXmlTextStyler.java: track API change.
2009-08-09 21:21:09 +0100 / enh / revision 3141
lib/data/spelling-exceptions:
lib/data/spelling-exceptions-C++:
lib/data/spelling-exceptions-Java:
lib/data/spelling-exceptions-Perl:
lib/data/spelling-exceptions-Python: gain the lists of spelling exceptions that were previously only available to Evergreen.
bin/invoke-java.rb: and make it possible for Java code to find these files.
2009-08-09 21:10:19 +0100 / enh / revision 3140
lib/data: new directory.
2009-08-06 03:21:55 +0100 / mad / revision 3139
lib/build/universal.make: Probably only because of other errors, I'm seeing:
tail: Warning: "+number" syntax is deprecated, please use "-n +number"
Indeed, I see that this invocation of tail has changed behavior, at least on my Debian Lenny box (as opposed to jessies.org, which is where the warning came from):
martind@whitewater:~$ ls | tail +1
tail: cannot open `+1' for reading: No such file or directory
martind@whitewater:~$
2009-08-05 16:33:39 +0100 / mad / revision 3138
lib/build/filter-build-output.rb: Don't wait for the user to confirm that they want to overwrite a read-only file owned by someone else in a writable directory. They can't see the question that's being asked.
lib/build/universal.make: Use uniform code to move $@.tmp onto $@. rm -f $@ first, like some of the previous code was doing, to avoid the question entirely.
This stems from my recent Etch to Lenny upgrade, when I did a "sudo make install" to get an up-to-date Terminator on the machine I was doing the upgrade from. I've been running with the patch for a few days with no problems noticed.
2009-07-29 04:22:33 +0100 / enh / revision 3137
src/e/ptextarea/PTextAreaSpellingChecker.java: skip decimal and (C-style) hexadecimal literals.
2009-07-26 19:39:51 +0100 / enh / revision 3136
src/org/jessies/test/Assert.java: add another useful test assertion.
2009-07-22 16:40:23 +0100 / mad / revision 3135
native/all/setsid/setsid.cpp: I think I looked at the Cygwin source without finding a way but signpost one definitely closed avenue.
2009-07-21 03:15:44 +0100 / enh / revision 3134
src/e/tools/BuildUi.java: I've been seeing old BuildUi processes hanging around long after their window's been closed. Since BuildUi is explicitly intended to be run stand-alone, let's go the easy route and EXIT_ON_CLOSE.
2009-07-21 00:36:04 +0100 / mad / revision 3133
www/downloads.html: Nick Tolomiczenko is only the latest in a line of victims who didn't ignore the warning nor throw away the .dmg as obviously not being built by golfers.
2009-07-20 01:51:33 +0100 / enh / revision 3132
bin/org.jessies.TestRunner:
src/org/jessies/test/TestRunner.java:
src/org/jessies/tools/TestRunner.java: move TestRunner out of the org.jessies.test package so that code that runs both on the JVM and on Android can include tests, even if those tests can only be run on the JVM.
2009-07-20 01:47:46 +0100 / enh / revision 3131
src/org/jessies/tools: new directory.
2009-07-16 19:08:53 +0100 / mad / revision 3130
lib/build/make-version-file.rb: In a directory not under Subversion control, svnversion(1) might well say "exported", but a cursory examination of the calling code reveals that we wouldn't run it there. No-one uses Bazaar and the source tarball doesn't include the .svn directory. Move the only remaining correct line of the comment to the calling code, where it may be pointless (though we do still offer source tarballs) but is at least harmless.
If we do run svnversion, then, insist that it fails, killing the caller with an informative message and a stack trace otherwise. This would have prevented the nightly i386 builds from rusting, as they have for the last two or three weeks, due to building a package whose filename includes the version "0.0.0". After the first day, that filename was always on the server already and hence wasn't overwritten.
2009-07-16 18:54:25 +0100 / mad / revision 3129
lib/build/ithaki.sh: Lose the comment saying where some other script is executed...
lib/build/publish-changelog-and-source-dist.rb: ... to the script in question.
2009-07-16 18:52:32 +0100 / mad / revision 3128
lib/build/ithaki.sh: Andy Royal would have worked out that he needed a fix, for the benefit of "runmercury", that had been committed but not built if we'd have updated the change log between my commit yesterday evening and this morning. I've moved the responsibility for generated the change log from this daily job to an hourly one, on software@jessies.org itself. Now we will run 24 times the previous risk of someone committing, and so changing the checked-out copy of the repositories, while the script is running. If that ever proves to be a problem, we could give the script its own checked-out copy of each repository.
2009-07-16 18:20:51 +0100 / mad / revision 3127
lib/build/make-www-and-source-dist.rb:
lib/build/publish-changelog-and-source-dist.rb: Rename, so the tin matches the contents.
lib/build/ithaki.sh: Change the caller to match.
2009-07-16 17:52:39 +0100 / mad / revision 3126
The i386 Linux nightly builds have been broken since I once used Lenny (on duezer.us.dev.bluear.com) to access ~/software.jessies.org/work/ and was compelled to upgrade svn on whitewater.us.dev.bluearc.com to match. I knew I had trouble but thought I'd fixed it all by not calling svn update on ithaki.us.dev.bluearc.com as of "2009-06-26 09:46:22 -0700 mad (3100)".
Since that date, make-version-file.rb has been generating a version number of 0.0.0. This was mentioned in the cron mails but I hadn't noticed. The script deliberately doesn't fail (which I would have noticed) in this situation, noting:
# In a directory not under Subversion control, svnversion(1) says "exported".
# This happens if you're using Bazaar, say, or nothing, or if you're building from a source tarball.
# Returning 0 as the version number lets us build without warnings.
lib/build/make-version-file.rb: Repurpose some long-obsolete code for parsing "net use" on Cygwin to parse "df" on ithaki and, as in the Cygwin code, run the svnversion command on the file server.
2009-07-15 01:32:55 +0100 / mad / revision 3125
src/e/util/GuiUtilities.java: I can't conscience duplicating this code in Terminator, containing, as it does, a FIXME. The Evergreen version used EWindow. Its replacement here, java.awt.Component, is the greatest common ancestor of that and TerminatorFrame, which is what the equivalent code in Terminator can conveniently provide. Rather than write an InterruptedException down the InAppServer's PrintWriter, I'm making the assumption here that it'll never happen and that the log is therefore good enough. It was that or declare that we throw InterruptedException, which we do nowhere else, or pass in a PrintWriter, which seemed antithetical to the whole idea of exception handling, or turn the InterruptedException into an unchecked exception, which seemed like overkill.
2009-07-08 22:13:46 +0100 / mad / revision 3124
native/Headers/toString.h: This code was being too clever. It's tripped me up before (Terminator r940, where it tripped on "newShell /home/martind") and again today, where it's giving me a bad lexical cast for toString("Cygnus Solutions"). Today, I got to the bottom of it. Note the space in both examples. http://www.boost.org/doc/libs/1_39_0/libs/conversion/lexical_cast.htm defines lexical_cast as:
"Returns the result of streaming arg into a standard library string-based stream and then out as a Target object. Where Target is either std::string or std::wstring, stream extraction takes the whole content of the string, including spaces, rather than relying on the default operator>> behavior."
Here, our target is std::string, so we can take the whole content, obviating the need to check for error.
2009-07-06 07:10:44 +0100 / enh / revision 3123
src/e/tools/BuildUi.java: grab all javac output, not just the lines starting with addresses.
2009-07-05 20:29:18 +0100 / enh / revision 3122
src/e/tools/BuildUi.java: only "exit on success" if the build was actually successful.
2009-07-05 19:59:22 +0100 / enh / revision 3121
src/e/ptextarea/PBracketUtilities.java: add UTF-8 quotes (used by GCC) and make two helper functions private.
2009-07-05 19:42:02 +0100 / enh / revision 3120
src/e/tools/BuildUi.java: tests for the make "entering directory" pattern, and more notes.
2009-07-02 05:42:08 +0100 / enh / revision 3119
src/e/tools/BuildUi.java: more work, mainly support for --source-path.
2009-07-01 18:58:07 +0100 / mad / revision 3118
www/cygwin-setup.html: Suggestions arising out of my recent reinstallation. I may end up removing the suggestion about using "C:\Documents and Settings\martind" as a home directory but it's not too crazy to suggest what I'm using.
2009-06-30 07:41:03 +0100 / enh / revision 3117
src/e/tools/BuildUi.java: add the command-line options I've wanted so far, and make a start on implementing them.
2009-06-30 03:28:41 +0100 / mad / revision 3116
src/e/util/FileUtilities.java: Provide the long-suggested cygpath --unix translation, as it proves beyond me to make eg this command line work as you might hope:
setsid bash -c 'C:\Documents and Settings\martind\software.jessies.org\work\salma-hayek\src\e\util\FileUtiitilies.java':1
I speculate as to why in a code-comment. I'm fairly confident, from a combination of printf debugging and background knowledge about Cygwin, so I worded the speculation as a statement.
A change to call the new method from Evergreen will be arriving shortly. I've long had a change for Unix slash sex in the project whose name we cannot speak which I've now replaced with a call to translateFilenameForShellUse. That wasn't strictly necessary. What was necessary was a couple of applications of the long-ago s/new File/FileUtilities.fileFromString/ translation.
2009-06-30 01:15:46 +0100 / mad / revision 3115
bin/ithaki.sh:
bin/mdorey.sh: Bury these scripts...
lib/build/ithaki.sh:
lib/build/mdorey.sh: ... out of the way. They're not executed via PATH, even if salma-hayek/bin were on my PATH, which it isn't.
2009-06-29 07:10:07 +0100 / enh / revision 3114
src/e/tools/BuildUi.java: get to the point where we're just about usable, though there's still plenty to do.
2009-06-29 05:47:15 +0100 / enh / revision 3113
src/e/gui/GnomeStockIcon.java: add "gtk-stop".
2009-06-29 04:49:51 +0100 / enh / revision 3112
src/e/tools/BuildUi.java: avoid anonymous threads with inherited priorities.
2009-06-29 04:35:47 +0100 / enh / revision 3111
src/e/util/DefaultLogSink.java:
src/e/util/DefaultLogWriter.java:
src/e/util/Log.java:
src/e/util/LogSink.java:
src/e/util/LogWriter.java: rename "sink" to "writer" in the logging implementation; "writer" is standard Java vocabulary, but "sink" isn't. (Though we're not actually a java.io.Writer, but neither are we a PrintWriter – though we're closer to one – and Logger is already taken too.)
2009-06-29 02:36:32 +0100 / enh / revision 3110
src/e/util/DefaultLogSink.java:
src/e/util/Log.java:
src/e/util/LogSink.java: patch from Matt Hillsdon to make it possible to override our default logging implementation (for the benefit of his Eclipse-embedded Terminator).
2009-06-28 19:33:10 +0100 / mad / revision 3109
lib/build/universal.make: Make quoting of the output of convertToNativeFilenames consistent across platforms by moving it, and the loop that adds it, to portable code. This reactivates the addition of the path separators in makeNativePath that was unintentionally disabled for all platforms except Cygwin by the previous revision.
Remove a harmless but spurious looping over the filenames in makeNativePath that was added in the previous revision. I imagine that was a remnant of an earlier attempt to sort out the quoting.
2009-06-28 18:56:28 +0100 / mad / revision 3108
bin/mdorey.sh: Rebuilding the Win32 installation after a disk crash on the nightly build machine, I had to reinvent the exim4 configuration partly from memory (cribbing heavily, as before, from very differently laid-out Debian configurations in the same domain). Record the incantation here for next time.
This time, I'm trying to build under my home directory...
lib/build/universal.make: ... and, rashly, I thought I'd try to mount my Windows home directory on /home/martind, thus, I hoped, getting round the spaces in "C:\Documents and Settings\martind". It's fine within the Cygwin world, but we run a couple of native Windows tools, notably javac, candle, light and msiexec. If this patch is the limit of how much support we'd need for file names containing spaces, then I think we can live with it. It's when make itself needs to deal with such filenames, in prerequisites and the like, that things really get out of control.
2009-06-28 07:03:52 +0100 / enh / revision 3107
src/e/debug/HungAwtExit.java:
src/e/debug/HungAwtExitMBean.java: turn HungAwtExit into an MBean (leaving the old code around for now).
src/e/util/GuiUtilities.java: automatically enable it for all our applications.
2009-06-28 01:39:03 +0100 / enh / revision 3106
src/e/tools/BuildUi.java: fix the address Pattern to allow '/' in paths, and add a test.
2009-06-28 01:38:10 +0100 / enh / revision 3105
src/e/util/PatternUtilities.java:
src/org/jessies/test/Assert.java: move the Pattern-testing code into Assert for reuse. Ditch the single-argument variant because it encourages to not test the case where the pattern doesn't match the entire input, a common mistake.
2009-06-28 00:45:49 +0100 / enh / revision 3104
bin/build-ui:
src/e/tools/BuildUi.java: add a convenient script to start BuildUi until we have a better home and name for it.
2009-06-28 00:43:13 +0100 / enh / revision 3103
src/e/util/ProcessUtilities.java: hand the Process out to any ProcessListener, and support ProcessListeners with backQuote as well as spawn.
src/e/tools/BuildUi.java: add a "Stop" button to interrupt builds.
2009-06-27 06:39:25 +0100 / enh / revision 3102
src/e/tools/BuildUi.java: a simple build UI. Not finished, but enough that you can get the basic idea.
2009-06-27 05:49:09 +0100 / enh / revision 3101
lib/build/per-directory.make:
lib/build/universal.make: be more consistent about using quotes with @echo, and prefix all our progress output with "-- " so it's trivially recognizable by tools. (I chose this particular prefix only because it's what ctags' Makefile uses. If there's any weightier precedent, we should follow that instead.)
lib/build/filter-build-output.rb: use the more general heuristic here.
2009-06-26 17:46:22 +0100 / mad / revision 3100
bin/nightly-build.rb: Support a new switch to prevent updating. Subversion has a not unreasonable, yet unfortunate, habit of stopping older clients from using a work area once it's been used on a newer client. My "work" area is now shared by Etch and Lenny machines, so needs a Lenny-era svn. My "nightlies" area is shared by two Etch machines, one of which I don't want to hack with a Lenny svn and one that shares my "work" area with the Lenny box.
bin/ithaki.sh: I need to avoid running update on the old machine, which hasn't the pleasant side-effect of removing two spurious updates from the nightly builds here. Interestingly, the build still works, even though that looks at the svn version. Perhaps we cache that in .generated and make can tell that it's up-to-date.
2009-06-25 04:34:45 +0100 / enh / revision 3099
src/e/gui/DebugMenu.java: mad points out that we don't have a suitable pid for calling jmap(1) on Windows, so we should disable the heap histogram button there.
2009-06-25 04:22:29 +0100 / enh / revision 3098
www/navigation.html: Keith A. Carangelo pointed out that we were redirecting all projects to a generic bug-report page. Now I've added more specific per-project pages, make sure we use them...
2009-06-25 04:17:44 +0100 / enh / revision 3097
www/bug-report.html:
www/bug-report-template.html: turn the bug report page into a template so we can insert the appropriate address.
2009-06-24 02:58:08 +0100 / enh / revision 3096
src/e/ptextarea/PTextArea.java: the missing part of r3095. Too many unfinished changes in this working copy.
2009-06-24 02:57:39 +0100 / enh / revision 3095
src/e/ptextarea/PMatchingBracketHighlighter.java: "before a close bracket" and "after an open bracket" are not mutually exclusive conditions (consider "()", for example). It's not necessary to avoid finding the matching bracket in such a case – that works just fine – but doing so is pointless when you already have the pair, and it's hard not to look at the code without wondering whether it'll work in that case, so easier to just avoid it.
2009-06-24 02:38:01 +0100 / enh / revision 3094
lib/build/package-for-distribution.rb: this line in dpkg-gencontrol(1) convinces me that debian-policy is misleading, and various programs that report installed size as "kB" are wrong:
exec("du","-k","-s",".") or &syserr(_g("exec du"));
2009-06-23 18:57:32 +0100 / mad / revision 3093
.classpath:
.project: A project description that Matt Hillsdon uses with Eclipse.
2009-06-22 04:59:07 +0100 / enh / revision 3092
src/org/jessies/test/TestRunner.java: run tests in parallel, and make it an error to find no tests (on the assumption that we won't be asked to run tests unless there are some).
2009-06-19 03:33:35 +0100 / enh / revision 3091
src/e/gui/Buttons.java: choose a darker gray to avoid clashing with Windows 2000's default control gray. (We might want to make that a special case, but I don't know what versions of Windows are most popular with our Windows users.)
2009-06-19 03:09:59 +0100 / enh / revision 3090
src/e/gui/Buttons.java: make it easier to guess how buttons will look on the different varieties of Windows.
2009-06-16 08:15:18 +0100 / enh / revision 3089
src/e/gui/CrossIcon.java:
src/e/gui/StopIcon.java: generalize StopIcon so the code can be used both for a stop button and a "close tab" button.
src/e/gui/Buttons.java: a convenience class providing ready-made buttons.
2009-06-15 22:50:13 +0100 / mad / revision 3088
lib/build/universal.make: Don't compile all C++ as Objective C++ on Mac OS...
lib/build/per-directory.make: ... just compile the non-JNI C++ as Objective C++. We don't use Objective C++ in our JNI, so this is no hardship. It's necessary because 10.5 is aware that it can't build x86_64 Objective C++ that's compatible with 10.4. Our JNI has to be 10.4 compatible until Apple release an upgrade to 10.4 that's worth paying for. We'd like it to support x86_64 to work with 10.5's Java 6, which is x86_64 only, so this change also resurrects the part of the support for that from r2617 which was dropped in r2889.
Compiling org_jessies_os_PosixJNI.cpp...
g++ -Wno-long-long -fno-omit-frame-pointer -fno-strict-aliasing -fPIC -g -W -Wall -Wshadow -Werror -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -x objective-c++ -pedantic -arch x86_64 -I/private/tmp/martind/software.jessies.org/salma-hayek/native/Headers -I/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home//include -c -o /private/tmp/martind/software.jessies.org/salma-hayek/.generated/native/all/posix/universal_Darwin/org_jessies_os_PosixJNI.o /private/tmp/martind/software.jessies.org/salma-hayek/.generated/native/all/posix/universal_Darwin/org_jessies_os_PosixJNI.cpp
cc1objplus: warnings being treated as errors
<built-in>:0: warning: Mac OS X version 10.5 or later is needed for use of the new objc abi
lipo: can't figure out the architecture type of: /var/tmp//ccuaBz26.out
make[1]: *** [/private/tmp/martind/software.jessies.org/salma-hayek/.generated/native/all/posix/universal_Darwin/org_jessies_os_PosixJNI.o] Error 1
make: *** [recurse] Error 1
patrick-rowans-mac-pro:salma-hayek patrickrowan$
2009-06-13 06:45:42 +0100 / enh / revision 3087
lib/build/universal.make: fix Mac OS build.
2009-06-12 22:17:14 +0100 / mad / revision 3086
bin/find-jdk-root.rb: We use find-jdk-root.rb in invoke-java.rb, where we append "/lib/tools.jar". That was garnering me the following warning in Cygwin-1.7, on the first run of our applications from the command line per Cygwin "boot". (Cygwin effectively shuts down when the last using application quits.)
cygwin warning:
MS-DOS style path detected: C:\Program Files\Java\jdk1.6.0_13/lib/tools.jar
Preferred POSIX equivalent is: /cygdrive/c/Program Files/Java/jdk1.6.0_13/lib/tools.jar
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
It wasn't ever our intention to rely on Cygwin working with filenames that are half-Windows, half-Posix style. This code is used on all platforms, so it's least likely to break if it returns consistently styled results on all platforms.
universal.make translates the returned path to cope with what we were previously returning. I'd hoped to be able to remove that code in this commit but the space in "Program Files" stymied me. I had a go at making the makefiles support compilation with a JDK include path containing a space but it was just too hard and already looked too fragile, despite not yet working.
bin/invoke-java.rb: If we can use `cygpath` there, and I think we can, then we can abandon our direct calls into cygwin1.dll here. That would be a good idea, as they've been deprecated in 1.7, apparently due to containing buffer overflows when used with large paths. Yes, I know we were being good about asking for the necessary path size but, even so, I think those calls would overflow and they're certainly deprecated and now undocumented.
It seems a shame to see this example code disappear, as it's served us well. There is a new alternative, but that isn't supported on Cygwin 1.5. Backquoting cygpath seems to be performing OK even now Evergreen's doing it automatically.
bin/target-os.rb: A Find in Files happened to turn up a related comment which could was due an update. I could easily be persuaded to always call uname here.
2009-06-12 19:39:59 +0100 / mad / revision 3085
lib/build/filter-build-output.rb: When C++ compilation fails, the intention here was to display the compiler flags. If it had worked, then I might have worked out the cause of Costantino's compilation woes much earlier.
lib/build/universal.make: His symptoms roughly matched what I see when JDK_ROOT ends up pointing at /usr, which could easily happen if /usr/bin/javac were a regular file, rather than the usual symlink. (That wasn't the case for Costantino but perhaps a chain of symlinks led to the same result.) If that happens, then impenetrable compilation errors occur, due to /usr/include/linux being ahead of /usr/include in the search order. I imagine that jni_md.h won't be in the expected location in this case. If so, we can use that to catch the problem earlier and report it more clearly.
2009-06-12 04:32:22 +0100 / mad / revision 3084
lib/build/universal.make: Revert work-around for a bug in Cygwin 1.7.0-46. 1.7.0-49 is the current beta version.
2009-06-12 04:27:30 +0100 / enh / revision 3083
src/e/util/ComponentUtilities.java: remove typo.
2009-06-11 20:27:38 +0100 / mad / revision 3082
www/index.html: Duplicate the checkout instructions from the other projects. That's going to be a maintenance headache but svn's a much better idea than using a source tarball. (I wanted these instructions myself, to try to reproduce Costantino's glibc-2.9 compilation problem.)
2009-06-11 18:01:05 +0100 / mad / revision 3081
lib/build/universal.make: Costantino's having trouble compiling on a Fedora 10 box. Generating the preprocessed file and comparing it with mine (from Debian Lenny) might give me a better search term.
2009-06-11 06:13:12 +0100 / enh / revision 3080
bin/svn-patch: a script to do what "svn diff" ought to do.
2009-06-11 04:32:01 +0100 / enh / revision 3079
src/e/util/GuiUtilities.java: Costantino Cerbo sent us this patch to support the same "swing.defaultlaf" property UIManager understands, so determined users can opt out of our choice of the system LAF.
2009-06-10 07:34:47 +0100 / enh / revision 3078
src/e/ptextarea/PLineNumberPanel.java: explicitly match the PTextArea's font, share the PTextArea's cached FontMetrics, and remove a bogus "- 1" (that isn't in the equivalent code in PTextAreaRenderer).
2009-06-10 06:02:27 +0100 / enh / revision 3077
src/e/ptextarea/PLineNumberPanel.java: Ed points out that if we can't afford to measure the length of one line number, we can't afford to repaint all the visible line numbers. So don't bother trying to be clever.
2009-06-08 04:27:18 +0100 / enh / revision 3076
src/e/util/FileUtilities.java: remove dead code.
2009-06-08 01:04:24 +0100 / enh / revision 3075
src/e/ptextarea/PKeyHandler.java: explain why the mouse cursor doesn't always reflect the current modifier state.
2009-06-08 00:47:59 +0100 / enh / revision 3074
src/e/ptextarea/HyperlinkStyleApplicator.java:
src/e/ptextarea/PMouseHandler.java: decide whether or not the control key needs to be down to follow a link based on whether or not the text area is editable. The immediate need comes from Evergreen's errors window which (though currently editable) needs some way to make link-following the default.
2009-06-07 21:32:37 +0100 / enh / revision 3073
src/e/debug/EventDispatchThreadHangMonitor.java:
src/e/gui/AbstractFindDialog.java:
src/e/gui/DebugMenu.java:
src/e/tools/FatBits.java: use ELabel where it makes sense.
2009-06-07 21:27:15 +0100 / enh / revision 3072
src/e/gui/ELabel.java: be more of a drop-in replacement for JLabel.
2009-06-07 21:13:07 +0100 / enh / revision 3071
src/e/gui/ELabel.java:
src/e/gui/EStatusBar.java: split EStatusBar in two; more places could use "a JLabel that works right" than want a "status bar".
2009-06-07 18:21:55 +0100 / enh / revision 3070
src/e/gui/EStatusBar.java: remove (now-)unused functionality that was hardly ever used and not very valuable. This class' setText does the right thing with the empty string anyway.
2009-06-05 05:26:18 +0100 / mad / revision 3069
src/e/util/ProcessUtilities.java: And to think I fretted about whether it was worth the extra code.
2009-06-04 07:00:35 +0100 / mad / revision 3068
www/cygwin-setup.html: For legacy reasons, Cygwin-1.7 doesn't generate pure UTF-8 by default, but it will, if you ask it in the normal way.
2009-06-04 06:26:22 +0100 / mad / revision 3067
www/cygwin-setup.html: Cygwin does have an "unattended" setup mode after all, at least in 1.7 (and it won't be long before we care about nothing older), though it's not widely known. It has lots of options, but all I'm interested in is the one option to avoid having to interact with the GUI and the option to specify a list of additional packages. I hardly ever used cyg-apt and haven't used it at all for years. The Setup GUI is intimidating at first but, once you cross those hurdles, being able to update everything is a killer benefit. Cygwin-1.7's Setup GUI is significantly improved through one small addition, which I also mention here.
2009-06-04 04:28:42 +0100 / enh / revision 3066
src/e/ptextarea/PLineNumberPanel.java: a JScrollPane row header to show line numbers.
src/e/demo/PTextAreaDemo.java: exercise it.
2009-06-04 04:25:08 +0100 / enh / revision 3065
src/e/ptextarea/SplitLine.java: override toString.
2009-06-04 01:46:08 +0100 / mad / revision 3064
src/e/util/ProcessUtilities.java: If I do sudo vim, then New Shell Tab Here, my new tab ends up empty - no shell and the error is buried in the log. That gives me a handy excuse to canonicalize the candidate directory and check that we can read it. This means that we're more likely to fall through, on Linux, to the Mac OS code path. In that situation, lsof on Linux gives me back /proc/<pid>/cwd, which then needs the same protection. Chris confirms that /proc/<pid>/path/cwd is readable, so try that first, for the benefit of Solaris 10.
Now, when I repeat the same test, I end up in my home directory. An error monologue box would be better. Maybe I can work out how to do that next.
2009-06-03 05:43:16 +0100 / enh / revision 3063
src/e/ptextarea/PMouseHandler.java: avoid embarrassment when given a PTabSegment, which isn't a PTextSegment.
2009-06-03 04:43:16 +0100 / enh / revision 3062
src/e/ptextarea/HyperlinkStyleApplicator.java: mad reports the tool tip used by Outlook on Windows.
src/e/ptextarea/PMouseHandler.java: make sure that we update the tool tip whether or not the control key is down.
2009-06-02 07:50:43 +0100 / enh / revision 3061
src/e/ptextarea/HyperlinkStyleApplicator.java:
src/e/ptextarea/PMouseHandler.java: bring PTextArea in line with Terminator in terms of what clicks and control-clicks on hyperlinks mean.
2009-05-31 21:03:08 +0100 / mad / revision 3060
bin/show-alert.rb: All the email address to be customized. A grep for the callers suggests that most of the call sites don't warrant emails. Unhandled exceptions do, and not all of our callers have specific user groups to mail, so we still need the old default there.
(This patch best reviewed with white space ignored.)
bin/invoke-java.rb: Allow invoke() to be bypassed in favor of launch(). At the present, Terminator and Evergreen are handling exceptions that occur within their launch0() methods but, once they call invoke(), a nested exception handler is installed which then reports errors from that point forwards. That nested handler is an unnecessary complexity which tripped me up and which is about to become unfortunate because invoke() doesn't have the email address.
2009-05-31 20:57:00 +0100 / mad / revision 3059
native/Headers/reportFatalErrorViaGui.h: Allow the mailing list address to be customized but support the old address by default in such a way that...
native/all/java-launcher/java-launcher.cpp: ... if we don't find the requisite property in the command line arguments, we'll take that default value without needing to duplicate it here.
2009-05-31 20:54:14 +0100 / mad / revision 3058
lib/build/universal.make: Cygwin 1.7 introduces a different compromise about inheritable file security. This one's unfortunate effect is on Windows programs which create files in directories that were created by Cygwin. I'm surprised this isn't a bigger problem for me. javac, for example, is creating files under .generated. The .class files seem to have been made explicitly readable, as does the .wixobj file, though the Java package directories, under classes/, have not. My work area was populated by svn under an older Cygwin, so the source tree has inheritable security. Oh well, msiexec is the only "setuid" tool that I can think that we run, so perhaps this will do for the moment.
2009-05-30 12:34:40 +0100 / mad / revision 3057
native/all/java-launcher/java-launcher.cpp: Loading jvm.dll via a path starting with \\?\ leads to it aborting when it can't find rt.jar. Cygwin doesn't need to use \\?\ on what will typically be a short path but I can't bring myself to suggest that they add some hack to make it less likely that people will trip over bugs elsewhere, particularly when "elsewhere" is a non-Cygwin dll that I only sort-of have the source to and can't really build or debug. Why should everyone suffer an extra wcslen for such a minority interest? ("Wot no string class", you say?) I failed to find any problem in the parts of openjdk that I looked at but I didn't attempt to dry run every line between the call to GetModuleFileName (which I found) and wherever it tries to read rt.jar (which I didn't find). There's a basically painless workaround for us...
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: ... which then lets me reinstate 1.7 as our preferred major version of Cygwin.
2009-05-27 04:22:16 +0100 / enh / revision 3056
src/e/util/Preferences.java: use our own better-looking dialog instead of JColorChooser.showDialog, and wire up live preview as the user experiments with different colors. This makes color preferences realistically usable for the first time.
2009-05-27 04:17:36 +0100 / enh / revision 3055
src/e/forms/FormPanel.java: an expedient hack to allow components without labels, so we can effectively reuse FormDialog to provide our own JColorChooser dialog (by embedding a JColorChooser rather than calling JColorChooser.showDialog).
2009-05-26 16:40:14 +0100 / enh / revision 3054
src/e/util/FileUtilities.java: Matt Hillsdon points out I missed out a space in ther UnsatisfiedLinkError message.
2009-05-26 03:24:39 +0100 / mad / revision 3053
lib/build/universal.make: Cygwin 1.7 has a g++-4. We built fine with that but the resulting executables, with the exception of setsid, crashed on startup. A extra linker flag was suggested and fixed it. That g++-4 can't generate mingw executables. I couldn't get a clear reading on the state of things from Google but using the old compiler for mingw seems the only current sane and available choice. These changes seem to be harmless on one particular Cygwin 1.5 installation.
lib/build/filter-build-output.rb: I wouldn't have seen the message that suggested the solution to the crashing on startup problem but for javahpp hitting the JVM abort problem. Unhide such "Info: " messages. Treat "g++-3" like we treat "g++". Treat i686-pc-mingw32-g++ the same in a premature attempt to avoid being back here when that cross-compiler arrives.
2009-05-25 18:51:06 +0100 / mad / revision 3052
bin/invoke-java.rb: Prefer support binaries for the kernel's architecture but, when they're not present, take anything we can get for the right OS. There's a chance that we'll have i386 binaries on an amd64 kernel, which will work fine. Some people are still using 32 bit JVMs on 64 bit kernels on Linux.
2009-05-25 18:38:53 +0100 / mad / revision 3051
bin/invoke-java.rb: Collapse duplicated specifications of the support binary directory, in order, in the next check-in, to change the way it's chosen. The commented-out part of subvertPath wasn't what caused Chris's problem and we seem to have survived without it for more than a week, so out it comes, per the comment. subvertPath still apparently has a purpose, which I can well believe, though it isn't well documented here.
2009-05-24 22:52:05 +0100 / enh / revision 3050
src/e/util/Preferences.java: replace the old heuristics for pulling stuff out onto another preferences tab with an explicit mechanism for applications to ask for multiple tabs and choose what goes where.
2009-05-24 22:51:03 +0100 / enh / revision 3049
src/e/util/ComponentUtilities.java: allow List<JButton> as well as "JButton...".
2009-05-24 22:50:21 +0100 / enh / revision 3048
src/e/forms/FormBuilder.java:
src/e/forms/FormDialog.java: use List<String> instead of String[].
2009-05-24 18:41:37 +0100 / enh / revision 3047
src/e/util/FileUtilities.java: a slight variant of Matt Hillsdon's patch to fall back to System.loadLibrary if the org.jessies.libraryDirectories system property isn't set. Fix a long-standing (but not important, because the information is unlikely to be useful) to-do about including all failure details if we fail to load a library.
2009-05-24 17:14:21 +0100 / enh / revision 3046
src/e/util/StringUtilities.java: switch to Iterable instead of List for writeFile and join, since it's also reasonable to work on ordered collections that aren't lists (but there's no way to say "ordered collection", so we have to accept possibly accidental uses of unordered collections such as HashSet). Also allow writeFile's Iterable to return any object, since all objects have a string representation (join already worked like this).
2009-05-23 21:05:29 +0100 / enh / revision 3045
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os/Posix.java:
src/org/jessies/os/PosixJNI.java: implement POSIX read(2) and pread(2).
2009-05-23 18:57:45 +0100 / mad / revision 3044
native/all/posix/org_jessies_os_PosixJNI.cpp: More hacks to get the Cygwin build building again after last night's changes. Given the lack of support in the imminent 1.7 release, it might be more satisfactory to chuck an exception when these are used, except that WCONTINUED is called from a static initializer. Bah, they never find out.
2009-05-23 06:56:50 +0100 / enh / revision 3043
src/org/jessies/os/Posix.java: check for negative offsets as well as negative byte counts.
2009-05-23 06:53:45 +0100 / enh / revision 3042
src/org/jessies/os/Posix.java: we should throw NullPointerException from write if given a null 'buffer', and pwrite should have all the same argument checking as write, too.
2009-05-23 06:45:35 +0100 / enh / revision 3041
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os/Posix.java:
src/org/jessies/os/PosixJNI.java: implement POSIX pwrite(2) and write(2).
2009-05-23 05:29:51 +0100 / enh / revision 3040
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os/Posix.java:
src/org/jessies/os/PosixJNI.java:
src/org/jessies/os/WaitStatus.java: implement POSIX's waitpid(2).
2009-05-23 05:21:19 +0100 / enh / revision 3039
src/org/jessies/test/TestRunner.java: avoid a name clash after erasure.
2009-05-21 04:37:04 +0100 / enh / revision 3038
bin/show-alert.rb: zenity(1) expects HTML input, but kdialog(1) expects plain text.
2009-05-18 19:53:58 +0100 / mad / revision 3037
bin/invoke-java.rb: Some Cygwin users have been having problems starting Terminator. Without fail, they mention the expected "connection refused" message. It's concerned them and I fear may have wasted time. (Certainly mine, in explaining that it's irrelevant.) I can see a use to this error reporting in the case of an authentication failure or some other weirdness, but it's a pointless distraction when Terminator isn't running. Rather than attempt to detect the weird cases, I'm just going to bury the error in all cases.
For Evergreen, the situation is different. We'll only open files via the InAppServer. There, then, we should report errors. To that end, I've added sendCommand which I will shortly patch Evergreen to use.
2009-05-18 02:12:46 +0100 / mad / revision 3036
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: We can no longer successfully invoke Java on Cygwin 1.7, specifically in versions 1.7.0-47 and 1.7.0-48, whereas we could in 1.7.0-46. As I now have 1.7.0-48 installed and no sensible way to revert to, say, 1.7.0-46, the easiest way to resurrect the nightly builds is to prefer my parallel 1.5 installation. Goodbye, UTF-8 filename support, it was nice knowing you. Hope to see you again sometime soon, although I have no idea how to investigate this further, nor how to report it.
2009-05-18 00:58:32 +0100 / mad / revision 3035
lib/build/universal.make: The bracketed part of a Cygwin version number refers to the versions of the API and the stored information. This is relatively stable. The build date is what determines that this was -46. I didn't record the build date but my check-in comment does suggest that I tried to update on the day of check-in and didn't get the fix. -47 was released two days later.
2009-05-16 05:45:20 +0100 / enh / revision 3034
src/org/jessies/test/TestRunner.java: use EXIT_SUCCESS and EXIT_FAILURE from the Posix class.
2009-05-16 05:43:40 +0100 / enh / revision 3033
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os/Posix.java:
src/org/jessies/os/PosixJNI.java: add EXIT_SUCCESS and EXIT_FAILURE from <stdlib.h>.
2009-05-16 05:39:16 +0100 / enh / revision 3032
src/org/jessies/test/TestRunner.java: turn two hard-coded boolean fields into command-line options. Most of the changes are to cope with the remaining 'args' being a List<String> instead of the traditional String[].
2009-05-16 05:37:27 +0100 / enh / revision 3031
src/org/jessies/cli/Option.java:
src/org/jessies/cli/OptionParser.java: simple and convenient POSIX/GNU option parsing.
2009-05-16 05:36:34 +0100 / enh / revision 3030
src/org/jessies/test/Assert.java: add the ability to compare lists for equality.
2009-05-16 05:36:16 +0100 / enh / revision 3029
src/org/jessies/test/TestHelper.java: allow classes as test helpers.
2009-05-16 05:34:56 +0100 / enh / revision 3028
src/org/jessies/cli: new directory.
2009-05-12 22:27:12 +0100 / mad / revision 3027
native/all/java-launcher/java-launcher.cpp: Eli Hamburger points out a doubled slash. No-one would assume that a directory name includes a trailing slash. And indeed no-one did.
2009-05-12 18:55:53 +0100 / mad / revision 3026
native/all/java-launcher/java-launcher.cpp: My original annoyance with the JVM abort that Eli Hamburger reported was that we didn't have an opportunity to report the JVM we'd selected. Now we have an opportunity, I should take advantage of it. The abort hook isn't passed a context, so we need a global (to hold the shared library filename). We already have one (ARGV0) that's just used for error reporting. We need a third (launcherArguments) if we're to call the same error reporting function as we use for returned errors, which I'd like to do. I collected all this state into one class, so the dirty hacks for setting the global error reporting state are self-documenting.
2009-05-12 02:55:26 +0100 / mad / revision 3025
native/all/java-launcher/java-launcher.cpp: I doubt it matters that we weren't initializing extraInfo for the existing JVM options but it seems like a good idea to null that out. uintptr_t is a more intention-revealing choice than long when casting pointers.
2009-05-12 02:43:20 +0100 / mad / revision 3024
native/all/java-launcher/java-launcher.cpp: Replace the previous comment, which was in the wrong place, with code using the JVM's abort hook to tell Cygwin that we're about to exit with failure. This stops us trying to compile an error message when we can't start JavaHpp and ensures that subsequent builds regenerate the file.
2009-05-12 00:20:26 +0100 / mad / revision 3023
native/all/java-launcher/java-launcher.cpp: Comment an infelicity of JNI_CreateJavaVM, that has an especially nasty aspect when called from Cygwin. How can we output which JVM we're trying to initialize when we don't get control back?
2009-05-11 23:35:09 +0100 / mad / revision 3022
native/all/posix/org_jessies_os_PosixJNI.cpp: Elliott, not unreasonably, would prefer Cygwin hackery to be signposted as such to the compiler as well as the reader.
2009-05-11 03:22:16 +0100 / enh / revision 3021
src/e/ptextarea/HyperlinkStyleApplicator.java:
src/e/util/PatternUtilities.java: move our One True Pattern for hyperlinks into PatternUtilities (for want of a better home).
2009-05-11 02:45:54 +0100 / enh / revision 3020
lib/build/filter-build-output.rb: we want to see if the unit tests ran, not just if they failed. (This is especially true when adding new unit tests.)
2009-05-11 02:19:42 +0100 / enh / revision 3019
src/e/ptextarea/HyperlinkStyleApplicator.java:
src/org/jessies/test/TestHelper.java: add a marker annotation so that methods only intended as helpers for @Test methods can be clearly marked as such.
2009-05-11 02:16:34 +0100 / enh / revision 3018
src/e/ptextarea/HyperlinkStyleApplicator.java: apply a patch from Matt Hillsdon to turn our big comment full of examples into a unit test.
2009-05-11 00:08:04 +0100 / enh / revision 3017
src/e/ptextarea/PFindListener.java:
src/e/ptextarea/PTextArea.java: provide API for the last bit of functionality Evergreen was overriding to get at.
2009-05-10 23:05:38 +0100 / enh / revision 3016
src/e/ptextarea/PTextArea.java:
src/e/ptextarea/UnaryFunctor.java: replace the protected reformatPastedText method with a mechanism that doesn't require overloading.
2009-05-10 17:11:59 +0100 / enh / revision 3015
www/downloads.html: we're no longer building Solaris packages.
2009-05-10 07:46:31 +0100 / enh / revision 3014
src/e/util/ProcessUtilities.java: use the more idiomatic Integer.toString instead of String.valueOf.
2009-05-10 07:44:33 +0100 / enh / revision 3013
src/org/jessies/os/Signal.java: provide a Signal.toString.
2009-05-10 07:40:46 +0100 / mad / revision 3012
native/all/posix/org_jessies_os_PosixJNI.cpp: ECANCELED isn't defined by the production version of Cygwin. It is in the beta version, which has only added to /usr/include/sys/errno.h, rather than renumbering everything.
2009-05-10 07:28:41 +0100 / enh / revision 3011
src/org/jessies/os/Errno.java: comments.
2009-05-10 06:27:12 +0100 / mad / revision 3010
src/e/util/ProcessUtilities.java: Extract the current directory for a process from /proc, using a code path that I haven't yet tested or, if that doesn't work, via Matt Hillsdon's lsof incantation. There are a couple of tentative comments about Solaris that it would be nice to firm up at Chris's leisure.
2009-05-10 03:52:08 +0100 / enh / revision 3009
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os/Passwd.java:
src/org/jessies/os/PosixJNI.java: add a Java API to the POSIX user database.
src/e/util/FileUtilities.java: use it in FileUtilities.parseUserFriendlyName to cope with arbitrary ~user/... paths.
2009-05-10 03:04:23 +0100 / enh / revision 3008
src/e/util/ProcessUtilities.java: use Posix.kill in ProcessUtilities.terminateProcess.
2009-05-10 02:58:46 +0100 / enh / revision 3007
native/Headers/unix_exception.h: expose our safe and portable "strerror" wrapper to implement PosixJNI.strerror (which in turn implements Errno.toString).
src/org/jessies/os/Errno.java: a Java API for strerror(3) and constants for those errno values mandated by POSIX.
src/org/jessies/os/Posix.java: Java API for most of the easy/relevant stuff in <unistd.h>, <fcntl.h>, and <signal.h>.
src/org/jessies/os/PosixJNI.java: more native method declarations (and an explanation of the design, which is perhaps non-obvious).
native/all/posix/org_jessies_os_PosixJNI.cpp: more native method implementations.
2009-05-10 01:08:06 +0100 / enh / revision 3006
src/e/util/GuiUtilities.java: don't spam the log just because the system doesn't support transparency, which even in 2009 is not an unusual situation.
2009-05-09 06:27:51 +0100 / enh / revision 3005
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os/Posix.java:
src/org/jessies/os/PosixJNI.java: add close, dup, and dup2.
2009-05-09 06:17:12 +0100 / enh / revision 3004
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os/PosixJNI.java:
src/org/jessies/os/Signal.java: add POSIX signal numbers.
src/e/util/ProcessUtilities.java: kill dead code and use the new API.
2009-05-08 07:31:44 +0100 / enh / revision 3003
src/org/jessies/os/Posix.java: keep up the good habit of linking to the POSIX specification.
2009-05-08 07:30:05 +0100 / enh / revision 3002
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os/Posix.java:
src/org/jessies/os/PosixJNI.java: add the other common constants from <unistd.h> plus getpid(2) and getppid(2).
src/e/util/ProcessUtilities.java: use getpid(2).
2009-05-08 07:15:47 +0100 / enh / revision 3001
src/e/util/ProcessUtilities.java: remove dead code.
2009-05-05 07:34:07 +0100 / mad / revision 3000
www/cygwin-setup.html: I was having a right time typing regitsry or some such earlier, without a spell checker. While I had some printf debugging enabled, trying to work out why the file finder wasn't working on Cygwin, it became clear that we do quite a lot of path searching for ctags, especially when it isn't installed and your path is gargantuan, as Windows paths often are. Installing it myself is perhaps the selfish solution, but then caching always has its own drawback.
2009-05-05 02:07:45 +0100 / mad / revision 2999
www/cygwin-setup.html: The list of Cygwin 1.7 packages that I had to install to be able to build will probably be useful to me again.
www/cygwin-problems.html: The Cygwin 1.7 beta looks like a promising avenue for Utf-8 support.
2009-05-05 01:59:34 +0100 / mad / revision 2998
lib/build/universal.make: Work-around an already-fixed (but unreleased) Cygwin 1.7 bug that otherwise stops me building on that release.
native/all/java-launcher/synchronizeWindowsEnvironment.cpp: Cygwin 1.5.20 was released nearly three years ago, 2006-07-02. Perhaps we can insist that anyone who hasn't upgraded since before then upgrades. If it turns out that this is too painful, then I'll have to find some other way around these Werrors:
/cygdrive/c/cygwin/software.jessies.org/work/salma-hayek/.generated/native/all/java-launcher/i386_Cygwin/synchronizeWindowsEnvironment.cpp: In function `void setup_win_environ()':
/cygdrive/c/cygwin/software.jessies.org/work/salma-hayek/.generated/native/all/java-launcher/i386_Cygwin/synchronizeWindowsEnvironment.cpp:37: warning: `cygwin_posix_to_win32_path_list_buf_size' is deprecated (declared at /usr/include/sys/cygwin.h:48)
/cygdrive/c/cygwin/software.jessies.org/work/salma-hayek/.generated/native/all/java-launcher/i386_Cygwin/synchronizeWindowsEnvironment.cpp:37: warning: `cygwin_posix_to_win32_path_list_buf_size' is deprecated (declared at /usr/include/sys/cygwin.h:48)
/cygdrive/c/cygwin/software.jessies.org/work/salma-hayek/.generated/native/all/java-launcher/i386_Cygwin/synchronizeWindowsEnvironment.cpp:39: warning: `cygwin_posix_to_win32_path_list' is deprecated (declared at /usr/include/sys/cygwin.h:46)
/cygdrive/c/cygwin/software.jessies.org/work/salma-hayek/.generated/native/all/java-launcher/i386_Cygwin/synchronizeWindowsEnvironment.cpp:39: warning: `cygwin_posix_to_win32_path_list' is deprecated (declared at /usr/include/sys/cygwin.h:46)
/cygdrive/c/cygwin/software.jessies.org/work/salma-hayek/.generated/native/all/java-launcher/i386_Cygwin/synchronizeWindowsEnvironment.cpp:47: warning: `cygwin_conv_to_win32_path' is deprecated (declared at /usr/include/sys/cygwin.h:50)
/cygdrive/c/cygwin/software.jessies.org/work/salma-hayek/.generated/native/all/java-launcher/i386_Cygwin/synchronizeWindowsEnvironment.cpp:47: warning: `cygwin_conv_to_win32_path' is deprecated (declared at /usr/include/sys/cygwin.h:50)
make[1]: *** [/cygdrive/c/cygwin/software.jessies.org/work/salma-hayek/.generated/native/all/java-launcher/i386_Cygwin/synchronizeWindowsEnvironment.o] Error 1
native/all/ruby-launcher/ruby-launcher.cpp:
native/Headers/DirectoryIterator.h:
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Follow the " failed" convention used elsewhere. These discepancies came to light when I was researching whether I could depart from that convention in synchronizeWindowsEnvironment, where I have something else to add.
I haven't tested any of these failure cases.
2009-05-04 21:43:47 +0100 / mad / revision 2997
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Prefer Cygwin 1.7 beta's registry key, if it's there. Both Evergreen and Terminator seem to work OK with that version without any other changes and 1.7's Utf-8 support means that we might want to recommend it soon.
(Hiding white space changes is the better choice for this patch.)
2009-05-04 20:22:32 +0100 / mad / revision 2996
native/all/posix/org_jessies_os_PosixJNI.cpp: CallVoidMethod is an ellipsis/varargs/stdarg method. It has no type checking on its arguments. If they're not of the expected size, then the callee will pull values of the wrong size out of the stack. This will cause the result to be misinterpreted.
Cygwin's stat header file has at least three different definitions of the width of mode_t, choosing one based on various macros. I don't want to go there. Any modern integer is wide enough.
What we really want here is a program that looks at Stat.class and generates us a properly typed C++ shim Stat::set, which does the GetMethodID for us, then we can let the compiler handle the coercion implicitly.
2009-05-02 22:49:59 +0100 / enh / revision 2995
src/e/util/FileUtilities.java:
src/e/util/GuiUtilities.java:
src/e/util/ProcessUtilities.java:
src/org/jessies/os/OS.java: I had a bad feeling about calling GuiUtilities.isWindows from FileUtilities.cygpathIfNecessary, but it was only following my bad example and I couldn't offhand think of a concrete case where it would cause trouble. That case turns out to be trying to run code that uses FileUtilities but needs to run headless. The static initializers for GuiUtilities cause HeadlessException to be thrown when they (not unreasonably) do things that require AWT initialization. So, add a safe alternative to both isWindows (which caused trouble here) and isMacOs. Change non-GUI code to exclusively use OS.isWindows and OS.isMacOs, but leave the old methods in GuiUtilities forwarding to the new ones. We can't sensibly move isGtk out because GTK+ isn't an OS, and there's an argument combining "consistency" and "being intention-revealing" that suggests it makes as much sense for some code to ask "what UI is this?" as "what OS is this?".
2009-04-30 04:53:42 +0100 / enh / revision 2994
src/e/ptextarea/PKeyHandler.java: extend control-backspace to remove whitespace if it starts in whitespace (as before) or non-whitespace if it starts in non-whitespace.
2009-04-29 02:39:19 +0100 / enh / revision 2993
src/e/ptextarea/PTextAreaRenderer.java: if we want to use highlighters to change the background color of lines (without giving the highlighters alpha less than 1) we need to be able to paint some highlights beneath the selection. Before splitting them into two classes, let's try just painting the selection second. It's not obvious why that isn't adequate for all existing uses as well as allowing new uses (like the Trac-style patch rendering I'm working on).
2009-04-28 18:04:26 +0100 / mad / revision 2992
native/all/posix/org_jessies_os_PosixJNI.cpp: Fix conversion from (spit) NULL to int by admitting that copying fields from one structure to another should only fail in exceptional circumstances:
Compiling org_jessies_os_PosixJNI.cpp...
cc1plus: warnings being treated as errors
/home/martind/software.jessies.org/work/salma-hayek/.generated/native/all/posix/amd64_Linux/org_jessies_os_PosixJNI.cpp: In function ‘jint translateStat(JNIEnv*, _jobject*, const stat&)’:
/home/martind/software.jessies.org/work/salma-hayek/.generated/native/all/posix/amd64_Linux/org_jessies_os_PosixJNI.cpp:49: warning: converting to non-pointer type ‘jint’ from NULL
/home/martind/software.jessies.org/work/salma-hayek/.generated/native/all/posix/amd64_Linux/org_jessies_os_PosixJNI.cpp:53: warning: converting to non-pointer type ‘jint’ from NULL
make[2]: *** [/home/martind/software.jessies.org/work/salma-hayek/.generated/native/all/posix/amd64_Linux/org_jessies_os_PosixJNI.o] Error 1
2009-04-28 02:58:48 +0100 / enh / revision 2991
src/e/util/FileFinder.java: use the new API to provide a Stat as well as a filename to the Filter.
2009-04-28 02:57:53 +0100 / enh / revision 2990
native/all/salma-hayek:
native/all/salma-hayek/e_util_FileUtilities.cpp: replace the old JNI providing a wrapper around lstat(2) and S_ISLNK for FileUtilities.isSymbolicLink...
native/all/posix:
native/all/posix/org_jessies_os_PosixJNI.cpp:
src/org/jessies/os:
src/org/jessies/os/Posix.java:
src/org/jessies/os/PosixJNI.java:
src/org/jessies/os/Stat.java: ...with more general JNI supporting (so far) a tiny subset of POSIX.
src/e/util/FileUtilities.java: track API change.
2009-04-26 05:08:10 +0100 / mad / revision 2989
lib/build/universal.make: Always using cp rather than ln -s is needlessly painful for Cygwin development. When you click on a file name in Evergreen's errors window, we've previously taken you to the copy under .generated, rather than the one you want to edit. Fortunately, we made it read-only, to stop accidental edits, but it's still annoying. It's been more than a year since I added the cygpath code originally and that, it seems, is all we needed to follow Cygwin symlinks in Evergreen. Thankfully Elliott made me think about what comment the cygpath translation method deserved.
lib/build/per-directory.make: COPY_RULE had two variants, one for use with Windows compilers. I think this usage is only used with Unix compilers like Cygwin g++. The other usage is for running WiX, which is a Windows compiler and so sadly still needs the cp variant, at least if we keep the same directory structure (and, in particular, .generated), which I like, not least because it avoids faffing with the version control system to tell it to ignore eg the WiX intermediate files.
2009-04-26 04:41:33 +0100 / mad / revision 2988
src/e/util/FileUtilities.java: Empirically document some of the vagaries of cygpath. The behavior with symbolic links will be useful to us. I may be able to use that to simplify the build process, without sacrificing throwback of errors to Evergreen. (Presumably I could have done that when the method was still in Evergreen.)
2009-04-26 04:23:51 +0100 / mad / revision 2987
src/e/util/FileUtilities.java: We open a lot of files when searching. I almost doubt I'd notice on Linux but Cygwin ain't quite in the same league. The times in the code-comment were hot-cache on an idle machine, believe it or not (I couldn't).
2009-04-26 04:16:12 +0100 / mad / revision 2986
src/e/util/FileUtilities.java: Now that Evergreen no longer calls it directly, cygpathIfNecessary can become private. The comment about the required ordering between calls to parseUserFriendlyName and cygpathIfNecessary needs to move. I've moved it so that again it's next to the call from one to the other. I've also edited it and restyled it, making it more clearly one comment, so our eyes don't again read the simple part then skip over the more important prolixity.
Even if you don't like (some of) this, please hold off for a few minutes, as I'll be back here again momentarily, regarding today's horrid performance regression on Windows.
2009-04-26 02:37:09 +0100 / enh / revision 2985
src/e/util/FileUtilities.java: I don't know why I made the library-loading code so complicated, and neither does the history. Simplify it and use the usual JDK idiom (with a slight modification to still allow for fallback to the non-native implementation).
2009-04-26 00:25:56 +0100 / enh / revision 2984
src/e/util/FileUtilities.java: make parseUserFriendlyName a private implementation detail and ensure it always calls cygpath if necessary. Calling code should now only need to deal with FileUtilities.fileFromString (which was already recommended) to work on Cygwin.
src/e/util/ProcessUtilities.java: track API change.
2009-04-25 17:46:10 +0100 / enh / revision 2983
src/e/gui/FilenameChooserField.java: treating one match as a special case only saves us a slight complication in the condition for adding a trailing '/', which isn't worth the duplication.
2009-04-25 17:39:44 +0100 / enh / revision 2982
src/e/gui/FilenameChooserField.java: add the missing return that meant we used to fall through into the multiple-possibilities code, undoing the work we'd done to add the trailing '/' when the only match is a directory.
2009-04-25 17:34:14 +0100 / enh / revision 2981
src/e/gui/FilenameChooserField.java: that the native GTK+ equivalent hijacks the usual GUI behavior of the tab key is precedent enough for us to do the same.
2009-04-22 17:44:42 +0100 / mad / revision 2980
lib/build/make-www-and-source-dist.rb: I have an abiding confusion brought on by the difference between our website's apparent directory structure and the structure under ~software/. We have been generating change logs and source tarballs for projects with no www/ directory, but I don't think those download directories are visible on the website. I *think*, then, that I can restrict the change log and source tarball generation rules to those projects with a www/ directory, so saving myself from the daily spam of:
Failed in /unsafe/software/checked-out/debugger:
At revision 44.
make[1]: Entering directory `/unsafe/software/checked-out/debugger'
make[1]: *** No rule to make target `www', needed by `www-dist'. Stop.
make[1]: Leaving directory `/unsafe/software/checked-out/debugger'
make: *** [recurse] Error 1
Failed in /unsafe/software/checked-out/lwm:
At revision 9.
make: *** No rule to make target `www-dist'. Stop.
Failed in /unsafe/software/checked-out/website:
At revision 32.
make[1]: Entering directory `/unsafe/software/checked-out/website'
make[1]: *** No rule to make target `www', needed by `www-dist'. Stop.
make[1]: Leaving directory `/unsafe/software/checked-out/website'
make: *** [recurse] Error 1
2009-04-22 05:00:48 +0100 / enh / revision 2979
src/e/util/FileFinder.java: some callers might want the directories as well as the files.
2009-04-21 04:39:58 +0100 / enh / revision 2978
www/downloads.html:
www/index.html: make it clearer that you can stay up to date with our Debian repository.
2009-04-20 18:19:10 +0100 / mad / revision 2977
src/e/util/FileAlterationMonitor.java: When dispose()ing, reset the collections to their initial values rather than nulling them out. My hope here is to fix this:
martind@whitewater:~/.e.edit.Edit$ mv tools tools.aside
martind@whitewater:~/.e.edit.Edit$ Exception in thread "FileAlterationMonitor for external tools" java.lang.NullPointerException
at e.util.FileAlterationMonitor.fireFileTouched(FileAlterationMonitor.java:73)
at e.util.FileAlterationMonitor.checkFileTimes(FileAlterationMonitor.java:67)
at e.util.FileAlterationMonitor.access$000(FileAlterationMonitor.java:11)
at e.util.FileAlterationMonitor$1.run(FileAlterationMonitor.java:25)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
martind@whitewater:~/.e.edit.Edit$
The fingered line, 73, is the one on which I've made the cosmetic change away from a lower-case ell.
I'd hoped to use the nicely readable Collections.emptyList() but, as would doubtless be unsurprising to any Java programmer, the abstract list acquired from that doesn't like being add()ed to.
2009-04-16 23:42:16 +0100 / mad / revision 2976
post-commit: Use spaces round assignment in the Ruby, like we do in other scripts. It's a proper language, well, much more so than Bash.
2009-04-16 23:40:19 +0100 / mad / revision 2975
post-commit: When he made the opposite change, it looks to me like Chris was just going around tidying up relics of no longer necessary overrides of Reply-To. This one remains mildly desirable, in that it stops people from replying to just the author by mistake, without incurring the penalty of the Reply-To override that we used to have on the mailing list. That Reply-To override meant that anyone replying to a list posting made by someone who wasn't a subscriber had to remember to manually re-add their name.
2009-04-16 23:36:48 +0100 / mad / revision 2974
src/e/util/NumberDecoder.java: -137 shouldn't be represented with a comma, as "decimal: -,137". Having the sign before the radix prefix makes more sense to me and at least some of teh pooters too:
martind@whitewater:~$ ruby -e 'puts(0x-89)'
-e:1: numeric literal without digits
puts(0x-89)
^
martind@whitewater:~$ ruby -e 'puts(-0x89)'
-137
martind@whitewater:~$
2009-04-16 07:11:45 +0100 / mad / revision 2973
lib/build/simple.make: Publicize the new top-level target, more as a test of commit speed than because anyone will ever read this.
2009-04-16 07:10:56 +0100 / mad / revision 2972
lib/build/universal.make: www-dist's only prerequisite now has no extension. Hopefully fixes the post-commit failure following the previous check-in, which included:
/unsafe/software/checked-out/salma-hayek/lib/build/universal.make:729: *** sub-directory not specified for extension "". Stop.
2009-04-16 07:00:08 +0100 / mad / revision 2971
lib/build/universal.make: Split the www-dist target in two, so the seemingly expensive part can be deferred...
lib/build/make-www-and-source-dist.rb: ... to the once-per-day script (which might suggest a better name, if that's what it's going to be).
2009-04-16 03:33:23 +0100 / mad / revision 2970
post-commit: Even with mv, the ChangeLog needs to be group writable. I thought we were invoked from a context where umask 0002 had been set. (/usr/local/bin/svn suggests so.)
2009-04-16 03:21:24 +0100 / mad / revision 2969
lib/build/universal.make: It is an error to redirect into $@ directly in a makefile. When you run out of disk space or are killed, then such a makefile relies on make(1) deleting $@. If make(1) can't, perhaps because it's been killed, then the next attempt to run make(1) is likely to assume that the target is up-to-date.
2009-04-16 03:06:55 +0100 / mad / revision 2968
lib/build/make-www-and-source-dist.rb: The files we create here need to be group writable if they're ever to be run from post-commit, which runs as the committing user.
2009-04-16 02:53:38 +0100 / mad / revision 2967
bin/ithaki.sh: Making the source dist every day, at the time when we make the binary distributions, sounds eminently sane. I can live with some spam from the failing www-dist rule, indefinitely really, but certainly until we work out what we're going to do to speed up commits.
2009-04-16 02:44:38 +0100 / mad / revision 2966
lib/build/universal.make: If we don't have a www/ directory, then we shouldn't be running the www-dist rule's commands. This turns make-www-and-source-dist.rb's failures for debugger and website projects into the sane "No rule to make target" failures that the script garners for lwm. Without that, we get the monster below. This isn't really a useful change (though it's the right thing to do), as any output will provoke spam from cron, but it'll let me see whether the previous post-commit change had any benefit.
Failed in /unsafe/software/checked-out/debugger:
At revision 44.
make[1]: Entering directory `/unsafe/software/checked-out/debugger'
mkdir -p .generated && \
touch .generated/recompilation-trigger.make
mkdir -p .generated && \
ruby -w -ne '($_.match(/^ *(\S+)\s*[:+]?=/) || $_.match(/^\s*define\s*(\S+)/)) && puts("LOCAL_VARIABLES += #{$1}")' /unsafe/software/checked-out/salma-hayek/lib/build/per-directory.make | sort -u > .generated/local-variables.make
make[1]: Leaving directory `/unsafe/software/checked-out/debugger'
make[1]: Entering directory `/unsafe/software/checked-out/debugger'
rm -f ChangeLog && \
svn log > ChangeLog
rm -f ChangeLog.html && \
ruby /unsafe/software/checked-out/salma-hayek/lib/build/svn-log-to-html.rb < ChangeLog > ChangeLog.html
mkdir -p /home/software/downloads/debugger && \
mv ChangeLog.html /home/software/downloads/debugger/ && \
rsync -v -r www/* /home/software/downloads/debugger/
building file list ... rsync: link_stat "/unsafe/software/checked-out/debugger/www/*" failed: No such file or directory (2)
done
sent 21 bytes received 20 bytes 82.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]
make[1]: *** [www-dist] Error 23
2009-04-16 02:37:21 +0100 / mad / revision 2965
post-commit: Having www-dist run synchronously means that the committer knows when they can see if their changes worked. Perhaps we can afford this. Let's see what it costs.
2009-04-16 02:08:29 +0100 / mad / revision 2964
bin/invoke-java.rb: I haven't noticed any problems in a few days.
2009-04-16 01:52:35 +0100 / mad / revision 2963
lib/build/make-www-and-source-dist.rb: A proposal for replacing the part of the post-commit script that does svn update && make www-dist source-dist, then mails any failure to the list. This process seems likely to be adding a significant overhead to our commit times. It also seems likely that svn is giving us some contention protection. I expect we would get bitten if we were to just run something like this in the background off each commit, so I suggest we run it from cron. Every hour sounds like it won't cause too much spam when it comes off the rails.
2009-04-15 06:31:45 +0100 / enh / revision 2962
src/e/util/ProcessUtilities.java: I've deleted the code since, but I did have occasion to want to waitFor a spawned process recently. Since the changes are smaller than the (out of date) comment suggesting something along these lines, I may as well keep the changes.
2009-04-15 06:24:31 +0100 / enh / revision 2961
src/e/gui/EMenuBar.java: now we're actually thinking about what we're doing rather than just letting code build up over the years, we can implement performActionForKeyStroke much more simply.
2009-04-15 06:07:16 +0100 / enh / revision 2960
src/e/util/FileFinder.java: how many times have I written a simple serial file tree walk with a comment saying "parallelize"? Too many. This one's good enough to replace the ones in Evergreen and mp3 and be used elsewhere.
2009-04-14 03:30:59 +0100 / enh / revision 2959
src/e/util/GuiUtilities.java:
src/e/gui/GnomeStockIcon.java: add the ability to say whether or not you want mnemonics enabled, for the benefit of Terminator (which, by default, does not want mnemonics).
2009-04-14 03:27:40 +0100 / enh / revision 2958
src/e/gui/DebugMenu.java: use actions instead of messing around with button properties.
2009-04-14 03:06:25 +0100 / enh / revision 2957
src/e/gui/EMenuBar.java: rename traverse menu to make the reason for its menu traversal clear, and add a comment.
2009-04-13 08:00:18 +0100 / mad / revision 2956
src/e/gui/EMenuBar.java: Refresh every menu item's enabled state before deferring to JMenuBar's processKeyBinding, which searches the menu hierarchy for the first enabled item whose mnemonic matches the keystroke. This means that Terminator's Find Previous menu item gets enabled without needing the Edit menu to be displayed. This then activates the Alt-D shortcut, which has been inactive for most Linux (and I think Windows) users since Help, Show Debugging Messages gained a D mnemonic, some months ago.
Alt-D only invokes Find Previous because the Edit menu is searched before the Help menu. We could nail that loophole shut in GuiUtilities, by having makeMenu always create a sub-class of JMenu that overrides processKeyBinding to return false. Elliott suggests that, instead, when Terminator is using Alt for shortcuts, we shouldn't apply mnemonics to menus, as this leads to clashes, as with F for File and Find, and bugs, like this. That sounds good to me.
In making this change, I've hoisted traverseMenu out of our MenuListener, generalized it to collapse some duplication (the reason for which I don't understand) and removed an always-true condition. I've thrown away our customized versions of JMenuBar.processKeyBinding's recursion and JComponent.processKeyBinding. The latter had a setEnabled(true) matched by no setEnabled(false), which may warrant revisiting if it turns out to need resurrection.
2009-04-12 18:42:56 +0100 / enh / revision 2955
src/e/gui/EMenu.java: remove an unused class.
2009-04-11 20:26:21 +0100 / mad / revision 2954
src/e/gui/EMenuBar.java: A couple of small clarifications as I try to understand when this class's code is invoked, on the trail of "the Terminator Alt-D bug".
2009-04-10 07:00:13 +0100 / mad / revision 2953
src/e/util/ProcessUtilities.java: Cygwin is the only platform on which we haven't had hash-bang support, until now. This lets us execute scripts without going via bash, which doesn't understand Windows paths. Other alternatives are:
(1) Go via bash everywhere. Then we can return Cygwin paths from eg Evergreen.getScriptFilename. We'd want to institute a new process builder, so that we quote properly, rather than the rather optimistic way we're doing it at the moment.
(2) Use Cygwin rather than Java to exec the child by stealing PtyProcess from Terminator. Then we could use either path form and take advantage of its hash-bang interpreter. That would also let us solve the problem verbosely documented by setsid.exe's own output. It increases our lock-in on Cygwin. I haven't noticed any progress there on the Utf-8 or 64 bit fronts.
Both a new process builder and PtyProcess seem like steps we'd like to take, but both are a fair amount of work, distributed around the source. This is localized and easy and provides a de facto standard facility that's otherwise missing and hurting us on one platform.
2009-04-10 02:43:24 +0100 / mad / revision 2952
bin/invoke-java.rb: I've now searched the source for invocations of support binaries that weren't specifying the path and I don't see any. Time to let everything else find out what I missed. (I've been running like this for a couple of days.)
2009-04-10 02:38:44 +0100 / mad / revision 2951
bin/show-alert.rb: I don't think this really required changing the path. We're probably about to quit anyway, so it's unlikely to matter but it's nice if the code's in the same form as it is elsewhere. Well, that would be nice, but we don't have a findSupportBinary here.
2009-04-08 04:40:36 +0100 / mad / revision 2950
src/e/util/GuiUtilities.java: We were relying on the path before to find gnome-startup.
bin/invoke-java.rb: Here too. I could use some more testing time before I get rid of the line that adds the support binaries to the path.
2009-04-07 23:32:27 +0100 / mad / revision 2949
bin/invoke-java.rb: Tell the Java where to find our support binaries.
src/e/util/FileUtilities.java: Provide a way of using that property rather than a path search to find our own support binaries. Use this for LSFindApplicationForInfo...
src/e/util/ProcessUtilities.java: ... and setsid...
src/e/util/SpellingChecker.java: ... and, more clunkily, for NSSpell.
Aside from the soon-to-be-replaced call of findOnPath in EditServer.java, that renders half of our subvertPath superfluous. I haven't tested on a Mac, though I did do some printf debugging.
2009-04-07 22:46:39 +0100 / mad / revision 2948
src/e/util/GuiUtilities.java: Fixes Terminator's File, Show Info, Show in Explorer on Windows.
2009-04-07 22:03:29 +0100 / mad / revision 2947
src/e/util/FileUtilities.java: Gain processCygwinRewrites, renamed now it's not next to processPathRewrites, from Evergreen, so ProcessUtilities will eventually be able to hide one more of Windows's differences.
2009-04-05 01:28:55 +0100 / enh / revision 2946
src/e/util/FileAlterationMonitor.java: use a thread name more in keeping with our other thread names.
2009-04-05 00:33:09 +0100 / enh / revision 2945
src/e/util/Preferences.java: make it possible to add an extra button to a preferences dialog.
2009-04-04 20:04:41 +0100 / enh / revision 2944
src/e/ptextarea/FileType.java: Evergreen no longer pollutes the system properties, so this needs to move back into Evergreen.
2009-04-04 01:46:36 +0100 / mad / revision 2943
src/e/gui/DebugMenu.java:
src/e/gui/HelpMenu.java:
src/e/tools/FatBits.java: Obey our own injunction to avoid new JMenu\b, except in comments and GuiUtilities.
2009-04-04 01:38:28 +0100 / mad / revision 2942
src/e/util/GuiUtilities.java: A public static copy of the code from EvergreenMenuBar, so we can use it in Terminator too.
2009-04-03 17:43:24 +0100 / enh / revision 2941
lib/build/universal.make: several people (on several occasions going back some time) have complained of an inability to open our .dmg files without being told by Mac OS 10.5 that they're corrupt. I've never been able to reproduce the problem on 10.4 or 10.5, and the reporters report the correct MD5 digest for the file they downloaded. Since we build on 10.4 (while most users are on 10.5), let's experiment with not using the UDBZ .dmg format that was new in 10.4 and go back to the default UDZO.
2009-04-02 02:38:10 +0100 / mad / revision 2940
native/all/setsid/setsid.cpp: This case is very annoying on Windows even when another setsid is first on Evergreen's PATH. In fact, it's more annoying then, because you don't get warned to beware of it.
2009-03-29 06:23:21 +0100 / enh / revision 2939
src/e/gui/BirdView.java: comment an assumption that doesn't match Evergreen's usual assumption.
2009-03-29 06:06:07 +0100 / enh / revision 2938
bin/invoke-java.rb: rewrite some code that was presumably written obtusely for compatibility with old InAppServers that didn't support authentication (which would explain why it would count no mention of authentication in the server's response as success), and ensure that if we detect a failure we report it. (If we succeed in sending the command, that counts as success, and it's the server's responsibility to report any errors that occur as it tries to perform the command.)
2009-03-28 05:25:39 +0000 / enh / revision 2937
src/e/gui/BirdView.java: let clients tell us what range of lines is selected, so we can make that visible. As well as being potentially useful in its own right, this lets us highlight all matches in the selection and move all responsibility for repainting back inside this class (though clients have to call setSelectedLines).
2009-03-28 04:51:01 +0000 / enh / revision 2936
src/e/gui/BirdView.java: add a way to find out if we're showing anything.
2009-03-28 04:40:55 +0000 / enh / revision 2935
src/e/gui/BirdView.java: BitSet.nextSetBit is a more direct way to iterate through the set bits.
2009-03-28 03:15:52 +0000 / enh / revision 2934
src/e/gui/EStatusBar.java: every time I move the cursor left and then right again in Evergreen to get the status bar to redisplay my current location, I think "I should fix that". Some status messages are only worth passing mention, but the main user of this code (Evergreen) would be better served by status messages that remained visible until they were replaced with a more up-to-date message. Removing this behavior also makes EStatusBar more widely applicable.
2009-03-27 22:43:21 +0000 / mad / revision 2933
src/e/gui/AboutBox.java: It's useful to be able to tell from the subject line which subject the email's about. Filling the subject line with text, especially text that looks like it's intended to be machine-readable, discourages anyone from editing it. Suggest that they do edit it. The chevrons are to draw attention. The remainder of the boilerplate is one word, so it can be selected (for replacement) with a double click. Separating the words with hyphens, Elliott's original suggestion, doesn't have that property in Evolution, Outlook or even PTextArea. Ideally, I think we'd move the details about the version they're running to the body of the message but I imagine it's harder to get various platforms' mailers to accept a default body on the command line.
2009-03-22 21:03:58 +0000 / enh / revision 2932
src/e/util/ProcessUtilities.java: make ProcessUtilities.spawn's convenience form slightly more convenient.
src/e/util/GuiUtilities.java: although that change is binary compatible, we may as well take advantage of it.
2009-03-22 21:01:23 +0000 / enh / revision 2931
src/e/util/FileUtilities.java: fix a comment typo.
2009-03-21 23:35:53 +0000 / enh / revision 2930
bin/find-jdk-root.rb:
bin/target-os.rb: add the equivalent of #include guards to these two "libraries" to avoid the equivalent of multiple inclusion. Ruby is stupid enough that Kernel.require uses whatever path you supply in its set of already-loaded files. So require "a.rb" and require "./a.rb" don't count as duplicates.
2009-03-18 23:44:22 +0000 / mad / revision 2929
bin/ithaki.sh: Don't let apt-ftparchive spend all day walking my home directory if the automounter's broken on the build machine.
2009-03-13 06:49:15 +0000 / enh / revision 2928
src/e/util/PatternUtilities.java: this code is made less readable by using fully-qualified names, there's little advantage to pretending that this class doesn't have dependencies on GUI classes, and it's not obvious that there's ever likely to be a better home unless we write a RegularExpressionTextField, which might be useful, but which isn't likely to happen any time soon.
2009-03-13 06:42:28 +0000 / enh / revision 2927
src/e/gui/JHyperlinkButton.java: visually, a hyperlink doesn't look like it should be able to be focused. Nor does its appearance change when it is focused. So let's just make it non-focusable.
2009-03-07 20:34:30 +0000 / enh / revision 2926
src/e/util/GuiUtilities.java: who needs Windows when you can see pictures of it on Wikipedia?
2009-03-07 05:54:17 +0000 / enh / revision 2925
src/e/gui/FilenameChooserField.java: basic auto-completion on control-space.
2009-03-07 04:13:33 +0000 / enh / revision 2924
src/e/util/GuiUtilities.java: add a method to translate a KeyStroke into the string that would be used in the UI to describe the keystroke.
2009-03-07 03:37:16 +0000 / enh / revision 2923
src/e/gui/DialogFocusRedirector.java: comment the only semi-plausible case I can think of where the selectAll heuristic wouldn't be sufficient.
2009-03-06 07:36:41 +0000 / enh / revision 2922
src/e/gui/FilenameChooserField.java: provide access to the JTextField containing the pathname.
src/e/gui/DialogFocusRedirector.java: assume that a non-empty selection means "I am a clever application doing something clever; please stay out of my way".
2009-03-05 05:52:02 +0000 / enh / revision 2921
src/e/gui/SortedComboBoxModel.java: remove another dead class.
2009-03-05 05:49:33 +0000 / enh / revision 2920
src/e/gui/ChronologicalComboBoxModel.java:
src/e/gui/EHistoryComboBoxModel.java: remove two more dead classes.
2009-03-05 05:46:47 +0000 / enh / revision 2919
src/e/gui/DialogFocusRedirector.java:
src/e/gui/FilenameChooserField.java:
src/e/gui/UneditableTextField.java:
src/e/util/Preferences.java: switch to JTextField and DocumentAdapter.
src/e/gui/EHistoryTextField.java:
src/e/gui/EHistoryTextFieldEditor.java:
src/e/gui/ETextField.java: remove these unused classes.
2009-03-05 05:32:16 +0000 / enh / revision 2918
src/e/forms/FormDialog.java: use DocumentAdapter.
2009-03-05 05:32:00 +0000 / enh / revision 2917
src/e/gui/DocumentAdapter.java: a Swing "Adapter" for DocumentListener.
2009-03-05 05:14:12 +0000 / enh / revision 2916
src/e/gui/FilenameChooserField.java: fix '/' on Windows and '\' on Unix as they're typed.
2009-03-04 05:46:00 +0000 / mad / revision 2915
bin/invoke-java.rb: By claiming not to have seen a problem with throwing files to an existing Evergreen for a while, I was asking to see one the very next day. I doubt anyone else's problems are caused by similar VPN woe but who knows.
2009-03-03 06:30:30 +0000 / enh / revision 2914
src/e/gui/ETextField.java: this is also the wrong place to be closing text fields from the keyboard. I think this is only causing harm these days (if one dialog opens another, hitting escape to close the inner dialog would also close the outer dialog if the latter contains an ETextField). Any innocent code broken by this change should be fixed to call JFrameUtilities.closeOnEsc (which is overloaded for JDialog as well as JFrame), or migrated to using FormBuilder (which takes care of such things automatically).
2009-03-03 06:23:54 +0000 / enh / revision 2913
src/e/gui/ETextField.java: trying to make ETextField's caret color match PTextArea's (and my own personal caret color preference) is a mistake as long as we can't guarantee that there are no plain old JTextFields in use. Likewise the blink rate.
2009-03-03 06:13:36 +0000 / enh / revision 2912
src/e/gui/FilenameChooserField.java: record some other possible improvements.
2009-03-03 05:48:06 +0000 / enh / revision 2911
src/e/gui/FilenameChooserField.java: move the Windows-user-protection out of one of the callers so both callers can benefit.
2009-03-03 04:56:11 +0000 / enh / revision 2910
src/e/gui/FilenameChooserField.java: remove a FIXME that I can only assume I meant the other way round, and which was done in r2905.
2009-03-03 04:51:55 +0000 / enh / revision 2909
src/e/util/GuiUtilities.java: move the notion of appropriate component spacing here from FormDialog, and add a convenience method like BorderFactory.createEmptyBorder, but which only takes a single width (since it's very common that you want the same width all round).
src/e/demo/PTextAreaDemo.java:
src/e/forms/FormDialog.java:
src/e/forms/FormPanel.java:
src/e/tools/DualTimeClock.java:
src/e/tools/FatBits.java:
src/e/tools/JavaWidgetFactory.java: use the new utilities.
src/e/gui/FilenameChooserField.java: use them here too, and stop using the unusual BoxLayout in favor of the usual BorderLayout. Use an Action to implement the "Browse..." button, and have that action offer a mnemonic on the button.
2009-03-02 04:27:18 +0000 / enh / revision 2908
src/e/util/FileAlterationMonitor.java: File.lastModified returns 0 if the file doesn't exist, so this code didn't used to notice if the file disappeared (or indeed if its modified time genuinely went backwards).
2009-03-02 00:57:09 +0000 / enh / revision 2907
bin/invoke-java.rb: minor simplification.
2009-03-02 00:14:07 +0000 / enh / revision 2906
src/e/gui/FilenameChooserField.java: it's always annoyed me that hitting tab in Evergreen's "Add Workspace" dialog took me to the "Browse..." button rather than the next field. I know that's how things are supposed to behave, but it's always struck me as illogical; surely that button's for mouse users who'll click on it anyway, while keyboard users will type a path and tab into the next field they want to type into? (Most useful would be an auto-completing text field.)
2009-03-01 23:58:31 +0000 / enh / revision 2905
src/e/gui/FilenameChooserField.java: Evergreen r1480 has been annoying me because it's optimizing for a case I never use. In theory, it's not a problem because you can simply start typing to overwrite the always-wrong guess, but in practice, that breaks down at the second field in the "Add Workspace" dialog, the companion field of a FilenameChooserField. Change FilenameChooserField to automatically update the companion field as you edit the filename field; apart from the initial pause while I look at the default values only to find they're no use, this seems to make things no worse than they used to be.
2009-02-26 06:56:05 +0000 / enh / revision 2904
src/e/ptextarea/PStyle.java: give each style font flags, so it can be plain, bold, or italic. Add two new styles, NORMAL_BOLD and NORMAL_ITALIC that are like NORMAL except they're bold or italic rather than plain.
src/e/ptextarea/PTextSegment.java: use the font flags when rendering text.
src/e/ptextarea/PAbstractSegment.java:
src/e/ptextarea/PColoredHighlight.java:
src/e/ptextarea/PLineSegment.java:
src/e/ptextarea/PNewlineSegment.java:
src/e/ptextarea/PTabSegment.java:
src/e/ptextarea/PTextAreaRenderer.java:
src/e/ptextarea/UnprintableCharacterTextSegment.java: stop passing a single FontMetrics around, and ask PTextArea for the appropriate one for the font flags of the PStyle in question.
src/e/ptextarea/PTextArea.java: stop caching character widths for a single font, but cache the FontMetrics for the plain, bold, and italic variants of the current font.
2009-02-23 04:41:45 +0000 / enh / revision 2903
www/footer.html: the evergreen-users and terminator-users lists are working out fine, and are the preferred points of contact for users.
2009-02-23 04:33:02 +0000 / enh / revision 2902
src/e/gui/HelpMenu.java: if we weren't explicitly given a support email address, don't assume that we know what it is.
2009-02-22 18:50:02 +0000 / enh / revision 2901
lib/build/package-for-distribution.rb: make sure we don't package stuff up so that it isn't accessible to the users who'll be trying to access it. (The motivating example was third-party JAR files that are rw------- in the repository.) I'm also trying to say "go" rather than "og" when talking to chmod, because "ugo" is the traditional order.
2009-02-22 18:28:32 +0000 / enh / revision 2900
src/org/jessies/test/Assert.java: add a new kind of assertion.
2009-02-22 17:06:00 +0000 / enh / revision 2899
bin/invoke-java.rb:
lib/build/universal.make: make it possible to run unit tests in projects that have supporting JAR files in their lib/jars/ directory (such as http://code.google.com/p/blog-baboon/).
2009-02-21 23:28:16 +0000 / enh / revision 2898
src/e/util/StringUtilities.java: add HTML escaping and unescaping.
2009-02-21 20:32:27 +0000 / enh / revision 2897
src/e/gui/AboutBox.java: add support for the Apache Public License 2.0, though no way of saying "this application's source is APL2, but the library it's built on is LGPL", which is going to be true of all callers. I don't believe that's important, though.
2009-02-21 20:14:19 +0000 / enh / revision 2896
src/e/gui/AboutBox.java: make it easy to add support for other licenses.
2009-02-21 19:49:37 +0000 / enh / revision 2895
src/e/tools/FatBits.java: declare FatBits as GPL 2 or later.
2009-02-21 19:47:28 +0000 / enh / revision 2894
src/e/gui/AboutBox.java: don't assume we know what license something has unless it's explicitly told us.
2009-02-21 19:28:20 +0000 / enh / revision 2893
src/e/ptextarea/PTextAction.java: fix a typo in a comment.
2009-02-21 19:27:29 +0000 / enh / revision 2892
lib/build/package-for-distribution.rb: be lenient about ".txt" for files that Unix has traditionally spelled without the extension but which are often more convenient when they do have the extension. It's not worth taking sides when we can easily make things "just work".
2009-02-21 02:50:55 +0000 / enh / revision 2891
bin/invoke-java.rb:
bin/show-alert.rb:
post-commit: "rescue" doesn't catch all Exception subclasses unless you tell it to. To hammer home the One True Style, include the "=> ex" even where we don't need it. 'lonetwin' reported a problem starting Terminator on Windows caused by the incorrect "rescue" in InAppClient::trySendCommand in "invoke-java.rb":
Exception Timeout::Error: timed out while opening a connection to the host
at /usr/lib/ruby/1.8/net/telnet.rb:356:in `initialize'
at C:/Program Files/software.jessies.org/terminator/Resources/salma-hayek/bin/invoke-java.rb:68:in `new'
at C:/Program Files/software.jessies.org/terminator/Resources/salma-hayek/bin/invoke-java.rb:68:in `trySendCommand'
2009-02-21 02:39:03 +0000 / enh / revision 2890
incoming: we're not going to be using hg anytime soon, and can always pull this back out of cold storage if anything changes.
2009-01-31 02:11:07 +0000 / enh / revision 2889
lib/build/per-directory.make: there's no point breaking the build on Mac OS 10.5 for something that no-one can use anyway. I don't think we need to worry about x86_64 until 10.6, and at that time we'll have to decide between adding support for that or retaining support for 10.4 (since Apple doesn't offer compatibility across more than one release).
2009-01-29 05:11:06 +0000 / enh / revision 2888
src/e/gui/UneditableTextField.java: add a convenience constructor, and keep the border's size by making an EmptyBorder with the same insets as the LAF's border, which looks slightly less awful on Linux (I've not tried Mac OS and Windows). I'd forgotten how bad this looks with the GTK+ LAF. Bloody Sun, wasting engineering effort on their stupid Nimbus theme that no-one will ever deliberately use anyway.
2009-01-29 04:24:49 +0000 / enh / revision 2887
src/e/ptextarea/PTextAction.java: it's not obvious why a PTextAction shouldn't require a PTextArea to work on (and those subclasses that weren't overriding isEnabled were incorrectly enabled in that case).
src/e/ptextarea/PActionFactory.java: manually go through the actions checking everything's now as it should be (no deliberate functional changes).
2009-01-29 03:51:41 +0000 / enh / revision 2886
src/e/gui/UneditableTextField.java: gain this class (a motley collection of workarounds) from Terminator, now we want it in Evergreen too.
2009-01-28 21:50:18 +0000 / mad / revision 2885
src/e/util/StringUtilities.java: We have three calls to Pattern.quote and rather more to regularExpressionFromLiteral, whose difference from Pattern.quote is oddly not documented. We don't seem to have any code to quote replacement strings, yet, as the JavaDoc for Matcher says [
Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string. Dollar signs may be treated as references to captured subsequences as described above, and backslashes are used to escape literal characters in the replacement string.
]. Perhaps this new replacementStringFromLiteral, and regularExpressionFromLiteral, should move to PatternUtilities. That was the first place I looked, though there was no way I was giving up until I'd looked here too.
The motivating call-site for replacementStringFromLiteral is in Evergreen and so in a different check-in.
2009-01-26 02:24:34 +0000 / enh / revision 2884
src/e/util/StringUtilities.java: support URL decoding as well as encoding, and add trivial tests for both. (java.net.URI contains its own URL-decoding code, and it doesn't turn '+' back into ' '.)
2009-01-24 21:08:49 +0000 / mad / revision 2883
native/all/java-launcher/java-launcher.cpp: Elliott suggests specifying the bit width of the DLL we've failed to load, so it's clear to anyone who knows that they have 64 bit Java installed that we require 32 bit Java (less obviously because of Cygwin).
2009-01-24 20:21:27 +0000 / mad / revision 2882
www/cygwin-problems.html: We've had at least two 64 bit Windows inquiries recently. It's only going to get more frequent.
2009-01-24 19:08:18 +0000 / enh / revision 2881
src/e/ptextarea/PCFamilyIndenter.java: try harder to cope with line-wrapped code. This isn't perfect, but it's noticeably better, and it's no worse for non-wrapped code.
2009-01-24 06:04:40 +0000 / mad / revision 2880
native/all/java-launcher/java-launcher.cpp: A 32 bit Cygwin launcher executable isn't going to be able to load a 64 bit JVM.DLL but provide an environment variable so Simon Sadedin and Ken Harris could try, in case it turns out that they do have a 32 bit JVM installed that we just can't find via the registry. This might help to prototype future changes too and there's at least one FIXME that suggests that we might sometimes want a different JVM than the default on other platforms too.
2009-01-22 05:54:09 +0000 / enh / revision 2879
src/e/tools/JarExplorer.java: track API change.
2009-01-22 05:53:23 +0000 / enh / revision 2878
src/e/util/ComponentUtilities.java: generalize setJListAction (which can apply to any component, even if it's most useful for JList) and improve its name.
2009-01-22 04:25:54 +0000 / enh / revision 2877
src/e/util/ComponentUtilities.java: a new convenience method to call a given ActionListener when the user either double-clicks or hits enter in the given JList.
src/e/tools/JarExplorer.java: here's an example caller that previously only handled double-click.
2009-01-17 23:04:16 +0000 / mad / revision 2876
lib/build/universal.make: Given what it turns out to do, it seemed only debatable whether it's worth the extra code to use --keep-version, so I settled for recording why it wouldn't let us remove the code for dealing with "-2".
2009-01-17 02:44:46 +0000 / enh / revision 2875
src/e/util/FileUtilities.java: Thomas Richards worked out that he had the wrong .rpm himself, but being more explicit in the error message might be helpful. (Better still would be to fix our .rpms so that you can't install the wrong one, assuming rpm(1) understands such things!)
2009-01-17 02:34:09 +0000 / enh / revision 2874
src/e/util/GuiUtilities.java: fix an incorrect assumption.
2009-01-17 02:33:30 +0000 / enh / revision 2873
src/e/gui/ETable.java: sometimes you want to provide a model right away.
2009-01-17 01:47:01 +0000 / enh / revision 2872
src/e/gui/WindowMenu.java:
src/e/tools/FatBits.java:
src/e/util/Preferences.java: use JMenu.addSeparator more consistently.
2009-01-16 06:16:35 +0000 / enh / revision 2871
src/e/util/ComponentUtilities.java: factor out a bit of duplication.
2009-01-14 22:41:21 +0000 / mad / revision 2870
lib/build/universal.make: Speculative fix for "make install" being broken on Windows since the advent of the .tgz "installer".
2009-01-14 22:30:13 +0000 / mad / revision 2869
native/Headers/HKEY.h: I thought we had to include windows.h before any other header but seemingly not in cygwin-launcher.cpp. The missing "inline", though, was an accidental omission.
2009-01-14 22:25:00 +0000 / mad / revision 2868
native/Headers/HKEY.h: Ah yes, sometimes we compile for mingw32. And it looks like we haven't found a better way of detecting Windows than this.
2009-01-14 22:14:37 +0000 / mad / revision 2867
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: An HKEY_CURRENT_USER installation is more specific than an HKEY_LOCAL_MACHINE one so, thinking about this for what the history suggests is the first time, I think we should prefer per-user installations. Our error message here would be improved by saying "HKEY_LOCAL_MACHINE" instead of its pointer value...
native/Headers/HKEY.h: ... which wasn't previously sufficient reason for me to both with this but...
native/all/java-launcher/java-launcher.cpp: ... now I want to convert the value to a Cygwin /proc/registry path. I supposed I could have used strings but I wanted to copy the hive iteration from cygwin-launcher.cpp verbatim. I became a little fed up of the duplication of the exception handling, so I collapsed one copy at the same time as adding another. (It was that or nest loops.) The "Jesse Kriss" comment seemed to have drifted away from the code it referred to, so I fixed that too.
This may fix Ken Harris's problem, as he seems to have a per-user installation of Java. I wonder why we haven't seen that before.
I haven't even compiled this on Windows yet.
2009-01-12 04:27:01 +0000 / enh / revision 2866
src/e/ptextarea/PActionFactory.java: implement isEnabled for PTextArea's copy, cut, and paste actions.
2009-01-04 20:22:57 +0000 / mad / revision 2865
src/e/ptextarea/PBracketUtilities.java: Revert my change of yesterday. If the offset given is more than one past the last element in the sequence, then a good case could be made that we're not (immediately) after an open bracket. But I have a suspicion that we're trying to keep the offset within bounds, rather than trying to cope when it's out of bounds. In the particular case that I'm interested in, uncheckedRevertToSaved is setting the caret position beyond the end of the buffer. That's the cause of the exceptions here and preventing it prevents the exceptions here.
2009-01-04 02:01:17 +0000 / mad / revision 2864
src/e/ptextarea/PBracketUtilities.java: Fix out-of-bounds exception when reverting to saved where the on-disk version of the file is smaller:
2009-01-03T17:30:45.909-0800 Evergreen: Exception occurred during event dispatching.
Associated exception:
java.lang.IndexOutOfBoundsException: index 513 not in half-open range [0..0)
at e.ptextarea.PTextBuffer.throwIOOBE(PTextBuffer.java:408)
at e.ptextarea.PTextBuffer.charAt(PTextBuffer.java:402)
at e.ptextarea.PBracketUtilities.afterOpenBracket(PBracketUtilities.java:137)
at e.ptextarea.PMatchingBracketHighlighter.caretMoved(PMatchingBracketHighlighter.java:32)
at e.ptextarea.PTextArea.fireCaretChangedEvent(PTextArea.java:153)
at e.ptextarea.PTextArea.setSelectionWithoutScrolling(PTextArea.java:266)
at e.ptextarea.PTextArea.setSelection(PTextArea.java:233)
at e.ptextarea.PTextArea.select(PTextArea.java:227)
at e.ptextarea.PTextArea.setCaretPosition(PTextArea.java:211)
at e.edit.ETextWindow.uncheckedRevertToSaved(ETextWindow.java:369)
at e.edit.ETextWindow.revertToSaved(ETextWindow.java:421)
at e.edit.RevertToSavedAction.actionPerformed(RevertToSavedAction.java:25)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2440)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at e.debug.EventDispatchThreadHangMonitor.dispatchEvent(EventDispatchThreadHangMonitor.java:191)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
2009-01-02 22:59:07 +0000 / enh / revision 2863
src/e/gui/DebugMenu.java: make the window titles, where available, more prominent. Ugly, but you can't put a price on decent debugging output.
2009-01-02 22:47:01 +0000 / enh / revision 2862
src/e/gui/DebugMenu.java: make this output slightly easier to read by giving each Window a number. (I'd pull the titles out to make them more prominent too, but Window doesn't have a title.)
2009-01-02 20:17:50 +0000 / enh / revision 2861
src/e/util/StringUtilities.java: remove useless boilerplate.
2008-12-31 23:38:00 +0000 / enh / revision 2860
src/e/gui/TabbedPane.java: most of the pop-up menu code is also trivial to share between Evergreen and Terminator.
2008-12-31 23:15:25 +0000 / enh / revision 2859
src/e/gui/TabbedPane.java: the code in Evergreen to only select the new tab location if the old tab location was selected seems like the right idea, though I'm not sure you'd be able to tell the difference (because all our tab operations in all our applications, reasonably enough, operate on the selected tab).
2008-12-31 23:01:44 +0000 / enh / revision 2858
src/e/gui/TabbedPane.java: try harder to paper over JTabbedPane tool tip text confusion.
2008-12-31 22:17:01 +0000 / enh / revision 2857
src/e/gui/TabbedPane.java: Evergreen on Mac OS uses a tabbed pane whose tabs are on the left.
2008-12-31 22:07:29 +0000 / enh / revision 2856
src/e/gui/TabbedPane.java: the line of code may have been the same in Evergreen and Terminator, but Evergreen's comment was better.
2008-12-31 22:04:09 +0000 / enh / revision 2855
src/e/gui/TabbedPane.java: both Evergreen and Terminator have code to improve JTabbedPane, with Terminator's being more sophisticated than Evergreen's. Let's pull out the most easily-shared stuff so Evergreen can take advantage and we can stop repeating ourselves.
2008-12-31 21:28:03 +0000 / enh / revision 2854
src/e/util/StringUtilities.java: write tests that would have caught the bug I introduced in revision 2852 and mad fixed in revision 2853.
src/e/util/FileUtilities.java: despite my assumption that writing tests that touch the file system would be painful, it only took a small refactoring here to do a minimal but sufficient job.
2008-12-29 23:19:55 +0000 / mad / revision 2853
src/e/util/StringUtilities.java: Perhaps an "anonymous inner class" (if that's the right term for Java's current implementation of closures), implementing a method that takes "out", would have been a better choice.
2008-12-28 04:43:25 +0000 / enh / revision 2852
src/e/util/StringHistory.java: fix a bug equivalent to that fixed by mad in Evergreen revision 1461...
src/e/util/StringUtilities.java: ...by moving the responsibility here. It's only incidental that we no longer need to create the big intermediate String (though that may be handy someday), but it is deliberate that we still hard-code the use of "\n" rather than switching to the more obvious PrintWriter.println; we could switch, but I'm not sure we want to, and even if we do, we should make sure that readFile copes with non-Unix line endings first.
2008-12-28 04:34:11 +0000 / enh / revision 2851
src/e/util/StringUtilities.java: the only user of the "append" functionality of writeFile was removed as a mistake. Really needing to append is rare enough I'm willing to bet we won't deliberately re-introduce it.
2008-12-22 02:08:29 +0000 / mad / revision 2850
lib/build/package-for-distribution.rb: Ilkka Laukkanen asks for a Conflicts between org.jessies.terminator and terminator. Elliott suggests Replaces instead but I don't like abusing the Debian guidelines unless someone's definitely going to benefit and I'm not convinced that it would be a net benefit. Maybe but I'm not convinced.
I imagine that any package called evergreen would cause us a conflict too, which gives me an excuse not to add any per-project complexity.
2008-12-22 01:52:20 +0000 / mad / revision 2849
lib/jars/AppleJavaExtensions-LICENSE.txt: lintian rightly complains that this file is, probably accidentally, executable.
2008-12-21 18:03:00 +0000 / enh / revision 2848
native/Headers/JniField.h:
src/e/tools/JavaHpp.java: cope with "static native" methods.
2008-11-08 18:24:56 +0000 / enh / revision 2847
src/e/gui/BirdView.java:
src/e/gui/DebugMenu.java:
src/e/gui/ETable.java:
src/e/gui/HorizontalScrollWheelListener.java:
src/e/util/GuiUtilities.java:
src/org/jessies/test/TestRunner.java: silence Java 7's raw-type warnings.
src/e/util/BrowserLauncher.java: we can probably jettison a large amount of this code (support for Mac OS 9 and Windows 98?), but it just doesn't seem worth the effort.
src/e/util/InstanceTracker.java: this code is dynamic enough that it never really benefits from generics; I don't think Java's type system can express the map's actual type.
src/e/util/SpellingChecker.java: this is the only bit of code I've come across that this new warning convincingly improves (and even here, since we don't actually *use* 'eldest', it's a small win).
src/e/util/TimerUtilities.java: we could theoretically be more specific than DelayQueue<?> here, but we don't have access to the element type's name.
2008-10-18 07:27:54 +0100 / enh / revision 2846
src/e/demo/PTextAreaDemo.java: the chosen FileType is the other thing I always want to know.
2008-10-18 06:51:40 +0100 / enh / revision 2845
src/e/demo/PTextAreaDemo.java: make it (relatively) easy to choose between fixed/proportional fonts, ensure the window is centered on the display (because GNOME's default positioning heuristic is a pathetic joke), and include the indentation string in the debugging output.
2008-10-18 05:44:09 +0100 / enh / revision 2844
src/e/ptextarea/PKeyHandler.java: comment an apparent bug.
2008-10-18 05:39:56 +0100 / enh / revision 2843
src/e/ptextarea/PKeyHandler.java: add a comment explaining something I have to work out every time I look at this code.
2008-10-18 05:38:11 +0100 / enh / revision 2842
src/e/ptextarea/PKeyHandler.java: while I'm here, add support for Emacs' control-d and control-h (delete and backspace), since they're trivial. Mac OS also supports control-l (center selection in visible area), control-o (insert newline without moving caret), control-t (transpose letters), and control-v (page down).
2008-10-18 05:19:17 +0100 / enh / revision 2841
src/e/ptextarea/PKeyHandler.java: remove code that's never worked, and is never likely to work.
2008-10-18 05:16:21 +0100 / enh / revision 2840
src/e/ptextarea/PKeyHandler.java: apply Stephen Parker's patch supporting some Emacs keys on Mac OS. I've used the usual constant orthography, factored out the isMacOs tests, moved the translation from Emacs keystrokes to standard ones into its own method, added a few comments (in particular noting that control-k and control-y don't have quite the right behavior), removed superfluous parentheses, and added missing braces. (It's closer to the original patch than that list makes it sound!)
2008-10-18 04:42:51 +0100 / enh / revision 2839
src/e/ptextarea/PLineList.java: clarify a comment.
2008-10-16 02:37:59 +0100 / mad / revision 2838
native/all/setsid/setsid.cpp: I don't think there is a portable way out of this dilemma. Fortunate, then, that it only afflicts us on Windows. I still don't know how to fix it, but not continuing on regardless is helping me to use Evergreen, to investigate a different issue.
2008-10-15 05:21:34 +0100 / enh / revision 2837
www/index.html:
www/navigation.html: move the start and end of the navigation bar out, so we can add a link to Evergreen's "Manual" without forcing broken links on the other projects, at the cost of some duplication.
2008-10-15 03:48:30 +0100 / enh / revision 2836
lib/build/package-for-distribution.rb: Jacobo GarcÃa had MacPorts' Ruby and the RUBYOPT=rubygems abomination (why don't the people who recommend this make it clear that it's a mistake unless you know theirs is the *only* Ruby on the system?), so to get Terminator to work on his Mac, we need to unset RUBYOPT. Interestingly, it was our *second* call to ruby that failed:
/Applications/Terminator.app/Contents/MacOS/Terminator: line 11: /salma-hayek/bin/ensure-suitable-mac-os-version.rb: No such file or directory
The first call was taking the first "ruby" on the PATH, which understood RUBYOPT. It's not obvious that it matters, but it doesn't seem right to be running multiple *different* versions of Ruby during start-up, so let's avoid that by giving the explicit path which is already hard-coded into the #! lines of our Ruby scripts.
2008-10-04 19:19:20 +0100 / mad / revision 2835
lib/build/universal.make: No-one seems to care about my suggestion of calling the source distribution terminator-source.tar.gz, to disambiguate it from the currently Windows-only .tar.gz OS-specific distribution. So I'll just do it...
www/index.html: ... changing the documentation links to match...
www/downloads.html: ... and fixing a space that I left out yesterday. If there is a good way of previewing these changes, I'm too lazy to dig it out of my email archive.
2008-10-03 23:16:24 +0100 / mad / revision 2834
www/downloads.html: Now I'm uploading an OS-specific terminator-<version>.tar.gz, we'd better be a bit more explicit where were referring to "the .tar.gz".
2008-10-03 23:08:09 +0100 / mad / revision 2833
lib/build/universal.make: Switch from .tgz to .tar.gz in anticipation of the problems we had previously with Apache and web browsers. Now we have two "dists" with an extension of .gz, which belong in different directories on the server, so we need cleverer logic to distinguish them.
Remove a comment about the SOURCE_DIST containing binary files (what, .png?). I guess it's long passed its sell-by date.
2008-10-03 22:56:21 +0100 / mad / revision 2832
lib/build/universal.make: Move the DIST-related variables to an arguably more logical location and one from where, in the next revision, I'll be able to evaluate $(INSTALLER.gz). There should be no changes other than moving lines around in this revision, in order that the changes I make in the next revision don't get drowned out in the noise of moving stuff around.
2008-10-03 20:07:25 +0100 / mad / revision 2831
lib/build/universal.make: Fix the .tgz Windows dist upload, in the simplest way possible, leaving comments as to why this needs more work.
2008-10-03 18:52:08 +0100 / mad / revision 2830
lib/build/universal.make: I wonder if a .tgz distribution for Windows might be useful to those few users who can't install in the normal location. It would deny them Open Terminator Here and the automated PATH update and the Desktop shortcut but none of those are huge losses. It looks like it isn't much code, at all, to implement this. I've only tested this on Linux so far.
2008-10-03 18:00:19 +0100 / mad / revision 2829
lib/build/parent.make: Add "native" to the list of targets we do simple recursion for and make it simpler and more idiomatic to add such targets in future. (This is to help me build on duezer out of my usual work area on whitewater to try out openjdk-6.)
2008-09-28 00:42:38 +0100 / mad / revision 2828
lib/build/per-directory.make: If we were to have more than one piece of JNI in a project, which would work with no formality here, our progress reporting would be poorer than it is for Java and C++. That's easily fixed.
2008-09-28 00:25:05 +0100 / mad / revision 2827
lib/build/universal.make: Always use absolute filenames with the build-finished target...
lib/build/per-directory.make: ... so we have a rule for building $(SALMA_HAYEK)/.generated/java.build-finished when building salma-hayek from clean, so that make -j builds from clean.
This was what the change backed out in my previous check-in was intended to fix, not plain old building from clean, as I tested and claimed in my check-in comment, but parallel building from clean.
2008-09-28 00:10:58 +0100 / mad / revision 2826
lib/build/filter-build-output.rb: I correctly matched the circular dependency warnings that had been lurking but mistakenly also matched the recursive make progress indications. That become obvious...
lib/build/universal.make: ... when I threw away the "clever" rule for lying to make about how to build .class files from the build-finished sentinel, which introduced the circular dependency...
lib/build/per-directory.make: ... and abandoned the use of JavaHpp.class's name here, in favor of the salma-hayek build-finished sentinel. That's arguably more correct anyhow, as JavaHpp.class might depend on other .class files, but my motivation was that I've given myself several days and failed to come up with any other solution that fixes the circular dependency and still builds from clean and doesn't have missing dependencies.
2008-09-27 23:24:52 +0100 / enh / revision 2825
src/e/util/ByteBufferDecoder.java: I created a constants class years ago to avoid exactly this kind of confusing code, and Java guarantees that using such a constant costs no more than using a literal, so let's use the constants.
2008-09-27 23:21:20 +0100 / enh / revision 2824
src/e/util/TimingLogger.java: I wanted to check that ByteBuffer.wrap is essentially free (it is) and found our "human-readable" output confusing. For this application, it's clearer if everything's measured in fractional seconds.
2008-09-27 23:03:20 +0100 / enh / revision 2823
src/e/util/ByteBufferDecoder.java: we're comparing char rather than byte now, so it's incorrect to talk about "the" top bit. And >= 0x7f seems more intention-revealing than > 126.
2008-09-27 23:00:56 +0100 / enh / revision 2822
src/e/util/ByteBufferDecoder.java:
src/e/util/ByteBufferUtilities.java: the two-pass check for ASCII doesn't really cost anything, but it looks odd, and it leaves a method (ByteBufferUtilities.isAsciiByteBuffer) lying around that people really shouldn't be using.
2008-09-27 22:35:07 +0100 / enh / revision 2821
src/e/ptextarea/PTextBuffer.java:
src/e/util/ByteBufferDecoder.java: this patch was originally intended to fix a FIXME that claimed that there might be a performance advantage to checking for '\r' as we decode the bytes to characters. This turns out to make no measurable difference, but the associated rewrite did make the code simpler and clearer (mainly by removing non-useful laziness from the API). So let's keep the change because it improves the code rather than because it improves performance (which it doesn't).
2008-09-24 18:10:57 +0100 / mad / revision 2820
src/org/jessies/test/TestRunner.java: We could just ignore unexpected files, but crashing seems a bit poor:
martind@whitewater:~/software.jessies.org/work/salma-hayek$ ./bin/org.jessies.TestRunner .generated/native/
Exception in thread "main" java.lang.NullPointerException
at org.jessies.test.TestRunner.findClassNames(TestRunner.java:96)
at org.jessies.test.TestRunner.findClassNames(TestRunner.java:103)
at org.jessies.test.TestRunner.findClassNames(TestRunner.java:103)
at org.jessies.test.TestRunner.findClassNames(TestRunner.java:103)
at org.jessies.test.TestRunner.findClassNames(TestRunner.java:103)
at org.jessies.test.TestRunner.findClassNames(TestRunner.java:85)
at org.jessies.test.TestRunner.findTests(TestRunner.java:65)
at org.jessies.test.TestRunner.runTests(TestRunner.java:60)
at org.jessies.test.TestRunner.main(TestRunner.java:55)
martind@whitewater:~/software.jessies.org/work/salma-hayek$
Failing gracefully, indicating the reason, seems a better choice:
martind@whitewater:~/software.jessies.org/work/salma-hayek$ ./bin/org.jessies.TestRunner .generated/native/
ERROR: '.generated/native/all/setsid/amd64_Linux/setsid.cpp' is not a directory or a .class file
martind@whitewater:~/software.jessies.org/work/salma-hayek$
2008-09-24 15:58:37 +0100 / enh / revision 2819
www/cygwin-problems.html:
www/cygwin-setup.html:
www/cygwin-subfaq.html: make it easier to find both the Cygwin pages.
2008-09-24 05:23:43 +0100 / mad / revision 2818
lib/build/universal.make: Windows Update seems determined to be the one thing running on this laptop, making it take minutes just to start CheckInTool, so I can't fix the circular dependency problem tonight.
2008-09-24 04:26:48 +0100 / enh / revision 2817
src/org/jessies/test/TestRunner.java: complain if we're given a non-directory argument.
2008-09-24 04:20:04 +0100 / mad / revision 2816
lib/build/universal.make: The alternative is to call convertToNativeFilenames but why add cruft when you can remove it? Avoids TestRunner's exquisitely informative NPE when running make test on Cygwin:
$ ./bin/org.jessies.TestRunner badger
java.lang.NullPointerException
at org.jessies.test.TestRunner.findClassNames(TestRunner.java:91)
at org.jessies.test.TestRunner.findClassNames(TestRunner.java:83)
at org.jessies.test.TestRunner.findTests(TestRunner.java:65)
at org.jessies.test.TestRunner.runTests(TestRunner.java:60)
at org.jessies.test.TestRunner.main(TestRunner.java:55)
$
2008-09-24 02:53:06 +0100 / mad / revision 2815
lib/build/filter-build-output.rb: Unhide a makefile bug.
2008-09-24 01:25:13 +0100 / mad / revision 2814
lib/build/filter-build-output.rb: Use a more maintainable style. There should be no functional change in this check-in. The functional change follows...
2008-09-24 00:41:16 +0100 / mad / revision 2813
lib/build/parent.make: Support recursing for the "test" target, to see how much it adds to "build" - about 10% on Cygwin.
2008-09-23 06:40:08 +0100 / enh / revision 2812
src/e/tools/WeatherWindow.java: fix a regular expression to cope with place names containing spaces, such as "San Jose", and make esc exit.
2008-09-23 04:19:40 +0100 / enh / revision 2811
bin/invoke-java.rb: don't bring up a dialog box if a command-line program exits with a non-zero exit status.
2008-09-23 04:00:50 +0100 / enh / revision 2810
bin/invoke-java.rb: improve a name by inlining the one-line function that had stolen the better name.
2008-09-23 03:56:54 +0100 / enh / revision 2809
lib/build/universal.make: fix "make test" to run our unit tests, and make sure that "make test" (and "make findbugs") both build the code before poking about at it.
2008-09-23 03:40:23 +0100 / enh / revision 2808
www/bug-report.html: mention, albeit obliquely and on a page no-one reads, the discussion groups.
2008-09-23 03:37:19 +0100 / enh / revision 2807
src/e/gui/WindowMenu.java: why weren't we removing these listeners?
2008-09-23 03:34:07 +0100 / enh / revision 2806
src/e/gui/WindowMenu.java: expand a comment, fix a weird anti-idiom, and rewrite a comment that made no sense whatsoever.
2008-09-23 03:01:26 +0100 / enh / revision 2805
src/e/util/GuiUtilities.java: remove cruft from Terminator that should never have been here.
2008-09-21 05:59:34 +0100 / enh / revision 2804
src/e/ptextarea/PAssemblerTextStyler.java: improve the comment-detection heuristic.
2008-09-21 04:25:12 +0100 / enh / revision 2803
src/org/jessies/test/TestRunner.java: I don't intend doing any real work on performance until we've got enough tests that it seems like it would make sense; this change was intended to remove the ugly "pass around the prefix length" code, and just happens to be faster.
2008-09-21 03:10:14 +0100 / enh / revision 2802
src/org/jessies/test/TestRunner.java: record some of the reasoning behind writing org.jessies.test before it's forgotten.
2008-09-20 03:39:39 +0100 / enh / revision 2801
src/e/gui/HelpMenu.java: support for overriding software@jessies.org for "Report a Problem", and a new "Get Help Online..." feature.
2008-09-20 03:13:54 +0100 / enh / revision 2800
src/e/util/GuiUtilities.java: default to trying com.sun.awt.AWTUtilities.setWindowOpacity first, and offer a fake "feature test" that at least lets you know when you've no hope of setFrameAlpha working.
2008-09-19 07:17:31 +0100 / enh / revision 2799
src/e/util/GuiUtilities.java: make it clearer that com.sun.awt.AWTUtilities, if available, should be our preference on any platform.
2008-09-19 07:14:17 +0100 / enh / revision 2798
src/e/util/GuiUtilities.java: try to implement setFrameAlpha on MS Windows too.
2008-09-19 03:45:06 +0100 / enh / revision 2797
src/org/jessies/test/Assert.java: allow reasonable comparison of real numbers.
src/e/util/TimeUtilities.java:
test/e/util/TimeUtilitiesTest.java: move a test to where it's actually built and run.
2008-09-18 06:08:34 +0100 / enh / revision 2796
src/e/util/Rewriter.java:
test/e/util/RewriterTest.java: convert the Rewriter tests.
2008-09-18 05:55:45 +0100 / enh / revision 2795
src/org/jessies/test/Assert.java:
src/org/jessies/test/Test.java:
src/org/jessies/test/TestRunner.java: the simplest Java unit test framework that could possibly work.
bin/org.jessies.TestRunner: a deliberately awkwardly-named (since our packaging will make this excessively widely available) script to run the tests. When "make test" becomes the One True Way to run this, I guess we could move this in with the other scripts meant to be run by make rules.
src/e/util/StringUtilities.java: a few example tests.
2008-09-18 05:32:12 +0100 / enh / revision 2794
src/org/jessies/test: new directory.
2008-09-18 05:31:00 +0100 / enh / revision 2793
src/org/jessies: new directory.
2008-09-18 05:29:06 +0100 / enh / revision 2792
src/org: new directory.
2008-09-15 23:57:35 +0100 / mad / revision 2791
lib/build/universal.make: Out with unnecessary complexity. Who would run a www-dist rule with no www/ directory? All of the projects I have checked-out have such a directory. The conditional can move to the post-commit script, which is written in a closer approximation to a proper language, if and when it's of any use.
2008-09-15 23:40:56 +0100 / mad / revision 2790
lib/build/universal.make: /usr/man/cat1/test.1 on the only Solaris box available to me (a Solaris 8 box, polluted with all sorts of GNU tools, including test(1)) suggests that Chris might have better luck with test -r than test -e.
Should fix:
test -e /export/home/reecec/NightlyBuilds/salma-hayek/.generated/classes/e/tools/JavaHpp.class || { echo Failed to build /export/home/reecec/NightlyBuilds/salma-hayek/.generated/classes/e/tools/JavaHpp.class; exit 1; }
/bin/sh: test: argument expected
make[1]: *** [/export/home/reecec/NightlyBuilds/salma-hayek/.generated/classes/e/tools/JavaHpp.class] Error 1
make[1]: Leaving directory `/export/home/reecec/NightlyBuilds/salma-hayek'
make: *** [recurse] Error 1
2008-09-15 19:43:35 +0100 / enp / revision 2789
src/e/util/Preferences.java: Calling Component.getLocationOnScreen fails if the component is offscreen (!), so check it's showing before finding out where it is, avoiding throwing an exception and allowing the Preferences dialog to be shown while the About box is on screen. The About box is a JDialog so there's no visible Frame focus owner, and eventually we find the hacky hidden Frame.
2008-09-15T20:08:44.980+0200 Terminator: Exception occurred during event dispatching.
Associated exception:
java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1680)
at java.awt.Component.getLocationOnScreen(Component.java:1654)
at e.util.Preferences.showPreferencesDialog(Preferences.java:175)
at e.util.Preferences.access$000(Preferences.java:28)
at e.util.Preferences$1.handlePreferences(Preferences.java:140)
at com.apple.eawt.Application$5.run(Application.java:374)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at e.debug.EventDispatchThreadHangMonitor.dispatchEvent(EventDispatchThreadHangMonitor.java:191)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
2008-09-14 03:32:02 +0100 / enh / revision 2788
src/e/util/StringUtilities.java: I keep reinventing StringUtilities.urlEncode as StringUtilities.escapeForUrl or StringUtilities.encodeUrl, so at least mention those names in the comment to increase my chances of finding the copy that's already there.
2008-09-14 02:57:16 +0100 / mad / revision 2787
lib/build/universal.make: Fix parallel build from clean by telling make that it can build any class file by waiting until the Java compile is finished, then checking whether the requested class file exists and barfing if it isn't. If we do nothing in the rule body then make just assumes the file is there, which would probably lead to a more confusing error later, especially in the case where the class name has been misspelled in the makefiles.
rat2:~/software.jessies.org/work/salma-hayek mad$ make clean
rat2:~/software.jessies.org/work/salma-hayek mad$ make -j
make[1]: Entering directory `/Users/mad/software.jessies.org/work/salma-hayek'
mkdir -p .generated && \
touch .generated/recompilation-trigger.make
mkdir -p .generated && \
ruby -w -ne '($_.match(/^ *(\S+)\s*[:+]?=/) || $_.match(/^\s*define\s*(\S+)/)) && puts("LOCAL_VARIABLES += #{$1}")' /Users/mad/software.jessies.org/work/salma-hayek/lib/build/per-directory.make | sort -u > .generated/local-variables.make
make[1]: Leaving directory `/Users/mad/software.jessies.org/work/salma-hayek'
make[1]: Entering directory `/Users/mad/software.jessies.org/work/salma-hayek'
mkdir -p .generated && \
touch .generated/java.build-started
make[1]: *** No rule to make target `/Users/mad/software.jessies.org/work/salma-hayek/.generated/classes/e/tools/JavaHpp.class', needed by `/Users/mad/software.jessies.org/work/salma-hayek/.generated/native/all/salma-hayek/universal_Darwin/new/e_util_FileUtilities.h'. Stop.
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/Users/mad/software.jessies.org/work/salma-hayek'
make: *** [recurse] Error 1
rat2:~/software.jessies.org/work/salma-hayek mad$
2008-09-14 02:14:13 +0100 / enh / revision 2786
src/e/util/NumberDecoder.java: support the modern "0b" and "0o" prefixes, even though they're not very widely used yet. This patch doesn't remove support for "0" implying octal, but it does at least stop us outputting octal numbers in that style.
2008-09-14 00:18:40 +0100 / enh / revision 2785
src/e/util/Preferences.java: remove dead locals, add missing finals.
2008-09-14 00:15:13 +0100 / enh / revision 2784
src/e/ptextarea/PEmailTextStyler.java: remove dead code.
2008-09-14 00:14:24 +0100 / enh / revision 2783
src/e/ptextarea/PAbstractLanguageStyler.java: remove unread variable.
2008-09-14 00:12:28 +0100 / enh / revision 2782
src/e/tools/FatBits.java: remove unused import, sort remaining imports.
2008-09-14 00:11:41 +0100 / enh / revision 2781
src/e/ptextarea/FileType.java: remove unused import.
2008-09-14 00:10:34 +0100 / enh / revision 2780
src/e/ptextarea/PPythonIndenter.java: remove unused import.
2008-09-14 00:08:02 +0100 / enh / revision 2779
src/e/ptextarea/PFind.java: remove unused import.
2008-09-14 00:07:46 +0100 / enh / revision 2778
src/e/ptextarea/PCFamilyIndenter.java: remove unused import.
2008-09-14 00:06:35 +0100 / enh / revision 2777
src/e/ptextarea/PNewCppIndenter.java: remove unused import.
2008-09-14 00:05:19 +0100 / enh / revision 2776
src/e/util/TimingLogger.java: remove unused import.
2008-09-14 00:04:27 +0100 / enh / revision 2775
src/e/util/ByteBufferUtilities.java: remove unused import.
2008-09-14 00:02:57 +0100 / enh / revision 2774
src/e/util/Log.java: remove unused import.
2008-09-12 23:45:11 +0100 / mad / revision 2773
bin/invoke-java.rb: Although I couldn't get Ruby to die with SIGTERM, I can easily get Java to die with it. Indeed, that's what happened to a RevisionTool that I'd forgotten I was running from within the same Errors window as the build I actually wanted to kill.
So +1, again, to Elliott's suggestion of an Errors window per tool invocation, and -1 to my unchecked-in patch for at least not hiding the existing Errors window prematurely.
2008-09-10 06:17:54 +0100 / enh / revision 2772
src/e/util/TimingLogger.java: treat an explicit single split specially, to get more reasonable output in that case (one line instead of three, two of which add no information).
2008-09-10 06:02:02 +0100 / enh / revision 2771
src/e/util/TimingLogger.java: comment a few of the more obvious possible improvements.
2008-09-10 05:52:47 +0100 / enh / revision 2770
src/e/util/TimingLogger.java: a plug-in replacement for the handy android.util.TimingLogger class (http://code.google.com/android/reference/android/util/TimingLogger.html).
2008-09-10 05:51:36 +0100 / enh / revision 2769
src/e/gui/HeapView.java: remove unused import.
2008-09-10 03:18:00 +0100 / enh / revision 2768
src/e/gui/DebugMenu.java:
src/e/gui/HorizontalScrollWheelListener.java:
src/e/util/GuiUtilities.java: recently, Sun has started using "java.vm.version" to really mean what it says on the tin. One usage (in Log) remains correct, but these others should have been using "java.specification.version" all along (as evidenced by the fact that they were using startsWith rather than equals).
src/e/util/Log.java: in addition to the correct usage of "java.vm.version" in Log, there's an incorrect one, where we really wanted "java.runtime.version". This is what drew attention to this minor problem: mail from users running new enough Java releases had weird Java version information in the subject lines.
2008-09-09 17:36:17 +0100 / mad / revision 2767
bin/show-alert.rb: Don't open another terminal in the wrong directory after quitting the one opened in the right directory. This was caused by my changing my mind, and the code, several times while writing the check-in comment and clearly not testing the changed version properly.
2008-09-09 17:28:18 +0100 / mad / revision 2766
post-commit: Subversion's empty environment behavior might be odd but Elliott demonstrates that it is at least documented. Leave ourselves a more detailed code-comment, so we don't have to partially rediscover this the hard way every time we migrate to a new server.
2008-09-09 02:02:48 +0100 / mad / revision 2765
lib/build/patch-to-html-email.rb: The final pair of missing parentheses, just to be sure.
2008-09-09 02:00:47 +0100 / mad / revision 2764
post-commit: printf debugging:
fd.puts("ENV[\"PATH\"] == \"#{ENV["PATH"]}\"")
fd.puts(ENV.to_a())
said:
ENV["PATH"] == ""
LC_CTYPE
en_US.UTF-8
2008-09-09 01:53:04 +0100 / mad / revision 2763
bin/scm-diff.rb: Another pair of missing parentheses.
2008-09-09 01:45:11 +0100 / mad / revision 2762
bin/find-jdk-root.rb: Some missing parentheses, which aren't the problem du jour but are fodder for spurious check-ins.
2008-09-09 01:23:22 +0100 / mad / revision 2761
post-commit: A spurious check-in to test whether the previous one worked. I bet Elliott hasn't used this test code for years. I know I haven't.
2008-09-09 01:20:52 +0100 / mad / revision 2760
post-commit: Well that PATH certainly doesn't work on northern.jessies.org, failing to find uname and rm from /bin. Hopefully we won't need any such hackery, now that Ruby etc will be installed somewhere on the default PATH.
2008-09-09 01:15:41 +0100 / mad / revision 2759
bin/show-alert.rb: Amritha Shetty is in good company, being confused by an ENOENT for $HOME on startup. The last person I remember being confused by that was me. Fortunately, I did have a vague recollection of our words on the subject and it didn't take me *too* long to find where we'd hidden them. I don't know what Cygwin does to create the home directory and I'd rather not make assumptions that it'll stay the same.
2008-09-05 01:30:10 +0100 / mad / revision 2758
bin/show-alert.rb: Remove the "while starting" lie and, hopefully, prevent the GUI alert box that confused Ron Pagani. I can't get Ruby to die on Linux when I send it SIGTERM and various other signals I tried (like ILL, ABRT, FPE) kill it immediately without invoking Ruby exception handlers. I can see SIGINT but that needs special handling.
bin/invoke-java.rb: While repeatedly starting fatbits and killing it almost immediately, I found that it's quite easy, even with a manual keypress, to kill Java before it's installed its SIGINT handler. Handle that the same way that I recently added handling for the exit status produced by said SIGINT handler.
2008-09-03 05:54:03 +0100 / enh / revision 2757
lib/build/package-for-distribution.rb: report Installed-Size in the expected (crazy) units.
2008-09-03 05:05:24 +0100 / enh / revision 2756
src/e/ptextarea/BugDatabaseHighlighter.java: I was going to look at getting this off Evergreen's EDT critical path during start-up, but nothing tasteful springs to mind right now, so I'll make do with a bit of spring cleaning.
2008-09-02 23:13:06 +0100 / mad / revision 2755
native/all/java-launcher/java-launcher.cpp: http://java.sun.com/javase/downloads/ has become even less intelligible over time and now it's reached the point where the first link apparently links to some pre-release code that doesn't work well on Windows with Intel integrated graphics. I've always cringed at the size of the JDK download. Given that the user will probably have to manually retype the URL here, choosing something short and simple would be a good idea.
2008-09-02 23:06:49 +0100 / mad / revision 2754
native/all/java-launcher/java-launcher.cpp: Elliott's still keen on hiding the usage unless we've got a UsageError. I'm agnostic but it doesn't cost much to try it.
2008-09-02 22:41:03 +0100 / mad / revision 2753
native/all/java-launcher/java-launcher.cpp: I'd happily drop the usage except in case of UsageError but every problem reported by this code has required seeing the command line so we can't do without that, no matter how bloated and unreadable it is.
2008-09-02 18:36:06 +0100 / mad / revision 2752
bin/invoke-java.rb: Java alleges to mimic "Unix shells" but I've only tested bash. Killing Java with other signals tends to cause it to die with SIGABRT. (Well, I say that, though Ruby reports the killing signal as SIGIOT. Both signals have the same number, which perhaps is part of the reason that Ruby's Signal.list() hash is name-to-number rather than the reverse.)
2008-09-02 18:22:39 +0100 / mad / revision 2751
bin/invoke-java.rb: Explain why what you'd first try wouldn't work here. Think of the Google results you know you'd get for "exited 139" to remember when we were last here. Some more supporting evidence:
martind@whitewater:~$ bash -c 'kill -SEGV $$' || echo $?
Segmentation fault
139
martind@whitewater:~$
The value returned from waitpid here in the SIGINT case is 0x8200. Perhaps we could construct a Process::Status with the exitstatus() and then call termsig() on that but Process::Status has no documented constructor and my first two guesses as to how to call any undocumented constructor fell on stony ground.
2008-09-02 17:50:51 +0100 / mad / revision 2750
bin/invoke-java.rb: Elliott points out that the log filename, when present, is passed to Java via a property on the command line. It's even on-screen with zenity, for me, on the very last line of the screen.
2008-09-02 17:48:18 +0100 / mad / revision 2749
bin/invoke-java.rb: Avoid spamming the user who's hit Ctrl-C to kill us.
2008-09-02 16:51:37 +0100 / mad / revision 2748
bin/invoke-java.rb: An archaeological expedition reveals that the catting of the log file here had its genesis in the very first revision of Terminator which had an application log file (as distinct from a terminal log file), back in the day when java's stdout and stderr were simply pointed at the log file using bash redirection. The one line check-in comment suggests that we hadn't given a great deal of thought as to why we'd want to see the log in this situation. A number of the later check-in comments opine, in the light of experience that was only then available, that catting the log is pointless because we never see, for example, Java quitting with an unhandled exception. Perhaps that happens in toy applications. Since a recent change to make sure that Java crashes are reported with an alert box, the log file contents is ending up in the alert box too and zenity, our alert box provider on Linux, isn't very graceful with such large messages. Elliott reports that he's seen it crash. I haven't seen that but it certainly puts the OK button off-screen. Windows' MessageBox, despite its plain appearance, again shows more maturity here. Displaying the log's filename seems a reasonable precaution, in case the log's contents do ever turn out to be useful in a startup problem. I'll display that filename before the bloated Java command line, otherwise zenity again hides it off-screen.
2008-09-02 06:30:21 +0100 / enh / revision 2747
src/e/ptextarea/PTextAreaBirdsEye.java: add missing "final".
2008-09-02 06:20:49 +0100 / enh / revision 2746
src/e/ptextarea/PTextAreaSpellingChecker.java: if we remove a large amount of text, we only need to check a word that was formed from the old prefix and suffix, and shouldn't pay attention to the number of characters removed.
2008-09-02 06:09:14 +0100 / enh / revision 2745
bin/invoke-java.rb: don't double all the newlines in the log. Comment on the likely counter-productiveness of trying to show the entire log in a dialog box.
2008-09-02 06:01:00 +0100 / enh / revision 2744
bin/show-alert.rb: we don't want to output HTML to the console.
2008-09-02 04:45:04 +0100 / enh / revision 2743
src/e/ptextarea/RegularExpressionStyleApplicator.java: keep the original constructor for convenience, but let frequent callers pass in a pre-compiled Pattern (since they're immutable and reusable).
src/e/ptextarea/HyperlinkStyleApplicator.java:
src/e/ptextarea/PreprocessorStyleApplicator.java:
src/e/ptextarea/TabStyleApplicator.java:
src/e/ptextarea/UnprintableCharacterStyleApplicator.java: make use of the new constructor for some of the more common/complicated regular expressions.
2008-09-02 04:04:46 +0100 / enh / revision 2742
src/e/util/GraphicsUtilities.java: remove dead class.
2008-09-02 01:47:36 +0100 / enh / revision 2741
src/e/util/Preferences.java: document possible improvements to our simple "font chooser" preference.
2008-09-02 01:43:29 +0100 / enh / revision 2740
src/e/util/GuiUtilities.java: document known problems with GuiUtilities.findMonospacedFontName.
2008-09-01 23:54:50 +0100 / enh / revision 2739
src/e/ptextarea/SplitLine.java: document an interesting observation.
2008-09-01 23:53:46 +0100 / enh / revision 2738
native/all/java-launcher/java-launcher.cpp: mention a possible improvement. There seems to be a hard trade-off in this code between "getting all the information we need" and "overwhelming users so they skip to the bottom and just mail us". Maybe we could improve things by making an effort to distinguish different kinds of failure?
2008-09-01 22:33:38 +0100 / enh / revision 2737
native/all/java-launcher/java-launcher.cpp: "Mary" sent us an error message that made it clear we no longer make much sense since the recent re-ordering of information.
2008-09-01 06:25:25 +0100 / enh / revision 2736
src/e/util/CharArrayCharSequence.java: add missing "final"s.
2008-09-01 05:34:45 +0100 / enh / revision 2735
src/e/util/StringUtilities.java: make the usual String/File overloads available for readLinesFromFile.
src/e/gui/AboutBox.java:
src/e/gui/JFrameUtilities.java: use the File overload.
2008-09-01 03:08:37 +0100 / enh / revision 2734
src/e/ptextarea/PTextBuffer.java:
src/e/util/ByteBufferDecoder.java:
src/e/util/ByteBufferUtilities.java:
src/e/util/FileSearcher.java:
src/e/util/StringUtilities.java: push the optimization for ASCII files down into the most widely-shared code, and update callers.
2008-09-01 02:58:36 +0100 / mad / revision 2733
native/all/ruby-launcher/ruby-launcher.cpp: Raymond Martin points out that setenv and unsetenv are declared in stdlib.h, which we were only including by luck, not judgment.
2008-09-01 02:51:37 +0100 / enh / revision 2732
src/e/util/CharArrayCharSequence.java: fix the implementation of subSequence.
2008-09-01 01:36:13 +0100 / enh / revision 2731
src/e/ptextarea/PLineList.java:
src/e/ptextarea/PTextArea.java: move a little more code out of PLineList.Line and into PLineList.
2008-09-01 01:34:49 +0100 / enh / revision 2730
src/e/ptextarea/PTextBuffer.java:
src/e/util/ByteBufferUtilities.java: we don't need two copies of the "read a whole file into a byte[]-backed ByteBuffer" code.
2008-08-31 23:36:08 +0100 / enh / revision 2729
src/e/ptextarea/PLineList.java:
src/e/ptextarea/SplitLine.java: slight comment clarifications, plus two extra "final"s.
2008-08-31 22:53:42 +0100 / enh / revision 2728
src/e/ptextarea/SplitLine.java: remove unused mutability. (setLineIndex is used, though, so this change doesn't buy us much yet.)
2008-08-31 22:38:08 +0100 / enh / revision 2727
src/e/ptextarea/PAbstractLanguageStyler.java:
src/e/ptextarea/PColoredHighlight.java:
src/e/ptextarea/PLineList.java:
src/e/ptextarea/PTextArea.java:
src/e/ptextarea/PTextAreaRenderer.java:
src/e/ptextarea/PWrappedSegmentIterator.java:
src/e/ptextarea/SplitLine.java: remove the references to the corresponding PLineList/PTextArea from the PLineList.Line and SplitLine classes respectively. This reduces the per-instance size of each. For my 100,000 line 40MiB test file, this reduces the memory usage of each from 38MiB to 29MiB (each; i.e. we're using twice the size of the file just to store line offset information, plus we're storing each original ASCII byte as a 16-byte char, for a 160MiB total before we start counting the other stuff, but char[], SplitLine, and PLineList.Line are the top three). More importantly, this change puts us in a good position to consider alternative representations, where we don't necessarily keep all these objects around.
2008-08-31 22:05:27 +0100 / enh / revision 2726
src/e/ptextarea/PTextBuffer.java: most files we read are going to be ASCII. So add a special case. This only saves 400ms on my 40MiB test (ASCII) file, but that's time we can happily waste elsewhere while opening a large file. If we knew in *advance* that a file was ASCII-only, we could avoid allocating the byte[] and char[] concurrently (and just work on, say, 8KiB at a time), reducing temporary memory demands. We could just assume, and fall back to the more general code if/when we hit the first non-ASCII character. But there are only 90ms left to shave off this code, out of 1.7s, so this isn't worth worrying about until the day we're dealing with significantly larger files than "just" 40MiB.
2008-08-25 05:39:24 +0100 / enh / revision 2725
src/e/gui/HeapView.java: always scale to the maximum heap size and remove the animation.
2008-08-25 04:17:00 +0100 / enh / revision 2724
src/e/gui/DebugMenu.java: add mnemonics to the "Debugging Tools" submenu.
2008-08-25 03:58:53 +0100 / enh / revision 2723
src/e/tools/FatBits.java: add mnemonics to FatBits' actions.
2008-08-25 03:56:16 +0100 / enh / revision 2722
src/e/gui/HelpMenu.java: automatically give the "Help" menu a mnemonic.
2008-08-25 03:52:42 +0100 / enh / revision 2721
src/e/gui/GnomeStockIcon.java: having a mnemonic is orthogonal to having a stock icon.
2008-08-25 03:39:33 +0100 / enh / revision 2720
src/e/gui/HeapView.java: fix the DOS line endings that date from when this file was first committed.
2008-08-25 03:35:05 +0100 / enh / revision 2719
src/e/util/IndentationGuesser.java: fix off-by-one errors. This time I've tested the change *before* committing it.
2008-08-25 03:24:11 +0100 / enh / revision 2718
src/e/gui/HeapView.java: show the "max" heap size.
2008-08-25 03:17:55 +0100 / enh / revision 2717
src/e/util/Bag.java:
src/e/util/IndentationGuesser.java: CharSequence isn't necessarily Comparable, so we should make sure we use a custom comparator. More importantly, the difference in indentation is the *last* few characters, not the first few.
2008-08-25 01:07:30 +0100 / enh / revision 2716
src/e/ptextarea/PHighlight.java: make PHighlight comparable and trivially instantiable so we can...
src/e/ptextarea/PHighlightManager.java: ...remove Wrapper and reimplement ProbeWrapper as a subclass of PHighlight. This saves us a 24-byte object per spelling mistake, which saves about 10MiB in my test case. I've also switched to using bulk insert in getHighlightsOverlapping, though the existing code was probably no less efficient.
2008-08-25 00:37:28 +0100 / enh / revision 2715
src/e/ptextarea/PTextArea.java: comment some bogus-looking code.
2008-08-25 00:37:05 +0100 / enh / revision 2714
src/e/ptextarea/PHighlight.java: make private what can be private, and add a missing @Override.
2008-08-25 00:25:02 +0100 / enh / revision 2713
src/e/ptextarea/PTextArea.java: there's no reason I can fathom for repeating the first few lines of addSplitLines before one of its call sites (and this is called heavily enough to add up on a large file).
2008-08-25 00:20:50 +0100 / enh / revision 2712
src/e/ptextarea/PTextArea.java: actually, we already had another implementation of "insert", with a perfectly good name.
2008-08-25 00:14:31 +0100 / enh / revision 2711
src/e/ptextarea/PTextArea.java: deprecate "insert", offering it with the better name "insertOrReplaceSelection", and add "insertPreservingSelection" (needed by my experimental p9term).
2008-08-25 00:08:07 +0100 / enh / revision 2710
src/e/util/IndentationGuesser.java: bound the cost of IndentationGuesser on large files.
2008-08-25 00:07:09 +0100 / enh / revision 2709
src/e/util/SpellingChecker.java: if we want to cope with large files, we need to bound the size of the spelling checker's cache. There's no science behind my choice of cache size (or choice of a unified cache to replace the two separate caches we used to have).
2008-08-24 23:57:46 +0100 / enh / revision 2708
src/e/ptextarea/PLineList.java: mark API that's only used internally "private", so it's clearer what we need to provide to the outside world.
2008-08-24 23:26:39 +0100 / enh / revision 2707
src/e/ptextarea/PTextBuffer.java: add PTextBuffer.indexOf(char, int).
src/e/ptextarea/PLineList.java: push the char[]-scanning down into PTextBuffer for a slight saving, at which point it becomes obvious that the real problem here is that we're creating a huge number of long-lived small objects. Maybe three int[]s per PLineList would be a good step forward.
2008-08-24 22:20:12 +0100 / enh / revision 2706
src/e/ptextarea/FileType.java: this isn't an important optimization, but it's easy, and I'm sick of seeing the stack trace.
2008-08-24 21:41:48 +0100 / enh / revision 2705
src/e/util/IndentationGuesser.java: switching from String to CharSequence saves 0.5s when processing a 40MiB on my fastest machine. Also log if we spend more than half a second guessing indentation (we still do, on my test file, which isn't even source).
src/e/util/Stopwatch.java: make it easy to get at the time taken.
2008-08-24 21:02:33 +0100 / enh / revision 2704
src/e/ptextarea/FileType.java: remove accidentally-committed debugging output, and add a FIXME comment rather than worry about the last 100ms. The normal case (for the whole of guessFileType) is less than 200us.
2008-08-24 20:56:53 +0100 / enh / revision 2703
src/e/ptextarea/FileType.java: on my system, guessFileType on the Project Gutenberg dictionary was taking 1.6 s before this patch; with this patch, it takes 106 ms.
2008-08-19 06:22:25 +0100 / enh / revision 2702
src/e/util/FileUtilities.java: don't allocate a byte array the size of the file we want to digest, but do make sure we actually read the whole file, and make more of an effort to close the FileInputStream on failure. Factor out the conversion of the resulting byte[] digest into an ASCII hex string, even though it probably belongs in a different class.
2008-08-18 18:36:19 +0100 / mad / revision 2701
src/e/util/FileUtilities.java: /home/martindo startsWith /home/martind but isn't under my home directory. Fixes:
2008-08-18T10:31:57.498-0700 Evergreen: in ContentLoader exception handler
Associated exception:
java.lang.RuntimeException: java.io.FileNotFoundException: ~o/badger (No such file or directory)
at e.ptextarea.PTextBuffer.readFromFile(PTextBuffer.java:165)
at e.edit.ETextWindow.fillWithContent(ETextWindow.java:325)
at e.edit.ETextWindow.<init>(ETextWindow.java:95)
at e.edit.Workspace.addViewerForFile(Workspace.java:181)
at e.edit.Evergreen.openFileNonInteractively(Evergreen.java:340)
at e.edit.Evergreen.openFileNonInteractively(Evergreen.java:236)
at e.edit.EditServer$Opener.run(EditServer.java:55)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at e.debug.EventDispatchThreadHangMonitor.dispatchEvent(EventDispatchThreadHangMonitor.java:191)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.io.FileNotFoundException: ~o/badger (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at e.ptextarea.PTextBuffer.readFromFile(PTextBuffer.java:152)
... 15 more
2008-08-17 22:06:38 +0100 / enh / revision 2700
lib/jars/AppleJavaExtensions-LICENSE.txt: add the license covering Apple's AppleJavaExtensions.jar.
lib/jars/swing-worker-1.2.jar:
lib/jars/swing-worker.jar: replace the old (1.0?) swing-worker.jar with the latest, Java 6-compatible, swing-worker-1.2.jar, to make life easier for us when we eventually switch to using Java 6's version.
lib/jars/swing-worker-1.2-LICENSE.txt: add the license details for swing-worker-1.2.jar.
2008-08-17 21:45:35 +0100 / mad / revision 2699
native/all/setsid/setsid.cpp: Out of time now but I'll be back.
2008-08-17 21:27:22 +0100 / enh / revision 2698
test/e/util/RewriterTest.java:
test/e/util/TimeUtilitiesTest.java: these aren't great tests, but they're something to get started with.
src/e/util/Rewriter.java: lose the ad hoc tests.
2008-08-17 21:19:25 +0100 / enh / revision 2697
src/e/util/NumberAwareComparator.java: remove dead code.
2008-08-17 21:17:47 +0100 / enh / revision 2696
src/e/util/StringSplitter.java: remove dead code.
2008-08-17 21:15:31 +0100 / enh / revision 2695
src/e/util/Log.java: remove dead code.
2008-08-17 21:14:03 +0100 / enh / revision 2694
test/e/util: new directory.
2008-08-17 21:12:50 +0100 / enh / revision 2693
test/e: new directory.
2008-08-17 21:12:12 +0100 / enh / revision 2692
test: new directory for JUnit tests.
2008-08-17 19:04:47 +0100 / mad / revision 2691
src/e/util/FileUtilities.java: This code isn't quite dead, though I'm not convinced that it's much use. Indeed, I suspect it's mildly dangerous in the light of what I wrote in my code-comment in processCygwinRewrites, given that getUserFriendlyFilename shows no signs of doing the opposite transformation. The comment on getUserFriendlyFilename says that there's no pure Java way of implementing that opposite transformation, although there clearly is if we're prepared to settle for the bogus assumption that all home directories are mounted under a common prefix, like /home/, as we settle for here. If we're going to keep it, then we should use File.separator instead of hard-coding /, so that's what I've done, or at least intended to do, here. The ~\dir\file thing is esoteric, as mentioned in processCygwinRewrites, but switching to ~/dir/file would probably introduce more bugs than it fixes, and make them harder to find by removing the possibility of simply searching the source for places where we use / instead of File.separator to find code sites that are likely to be broken on Windows.
2008-08-16 08:19:46 +0100 / mad / revision 2690
src/e/util/FileUtilities.java: Fix getUserFriendlyName in the face of whatever set my workspace drive letter's to c: when HOME starts with C:. I don't think I had a hand in either of those settings. This then lets me reproduce Al Hagopian's problem with Open Quickly, where clicking on the matches produces a file does not exist error message containing a path where all the separators have been lost.
2008-08-16 05:42:06 +0100 / enh / revision 2689
www/generated_toc.js: explain why the existing FIXME is more of a problem than I realized.
2008-08-16 03:36:56 +0100 / enh / revision 2688
src/e/toys:
src/e/toys/world:
src/e/toys/world/Gazetteer.java:
src/e/toys/world/GreenwichMapView.java:
src/e/toys/world/LocationListener.java:
src/e/toys/world/Place.java:
src/e/toys/world/SolarProjector.java:
src/e/toys/world/WorldClock.java: remove code it's no longer worth maintaining. (GNOME's panel clock is good enough now.)
2008-08-16 03:29:44 +0100 / enh / revision 2687
src/e/debug/EventDispatchThreadHangMonitor.java: switch to System.nanoTime, and be more consistent reporting times via TimeUtilities.nsToString.
2008-08-16 03:24:26 +0100 / enh / revision 2686
src/e/ptextarea/PLock.java: switch to System.nanoTime.
2008-08-16 03:16:47 +0100 / enh / revision 2685
src/e/gui/HeapView.java: move to System.nanoTime.
2008-08-16 03:06:14 +0100 / enh / revision 2684
src/e/util/TimeUtilities.java: make the conversion from nanoseconds to seconds publicly available.
2008-08-10 04:20:32 +0100 / enh / revision 2683
bin/find-jdk-root.rb: mad implies he may have used the non-block overload of File.open where he wanted IO.read; a quick search turns up just this.
2008-08-07 05:09:15 +0100 / enh / revision 2682
www/index.html: being a member of the supporting cast, this repository needs its own near-duplicate. Improve the nearness of duplication while I'm here by canonicalizing the capitalization.
2008-08-07 05:03:48 +0100 / enh / revision 2681
www/downloads.html: I think everyone else thought we should have added these links long ago, but didn't because I was against the idea. It's been long enough now for me to slowly come to the conclusion that there's no good reason not to have these links.
2008-08-07 04:55:02 +0100 / enh / revision 2680
src/e/gui/ETable.java: Rob Ross explains how to remove the unwanted focus ring border on Mac OS. The original post was http://elliotth.blogspot.com/2006/05/making-jtable-look-more-at-home-on-mac.html and the new one is http://elliotth.blogspot.com/2008/08/making-jtable-look-more-at-home-on-mac.html.
2008-08-06 06:37:06 +0100 / enh / revision 2679
src/e/gui/HelpMenu.java: who are we helping by repeating the application name in every item in the "Help" menu? Anyone who doesn't know what application they're perusing the menu of needs more help than we can ever give them.
2008-08-06 06:23:29 +0100 / enh / revision 2678
src/e/gui/HelpMenu.java: add support for a "Help" menu link to the manual.
2008-08-06 05:59:39 +0100 / enh / revision 2677
src/e/gui/HelpMenu.java: add mnemonics to the WebLinkActions in the standard "Help" menu.
2008-08-06 05:54:18 +0100 / enh / revision 2676
src/e/gui/HelpMenu.java: actually, GNOME applications just say "Help" > "About"; only Windows applications (plus Firefox, which misled me) append the application name.
2008-08-06 05:47:50 +0100 / enh / revision 2675
src/e/gui/WebLinkAction.java: add mnemonic support.
2008-08-05 19:58:09 +0100 / mad / revision 2674
src/e/util/Log.java: I wasn't happy with the Pattern being so far away from the code that uses it and nor was Elliott, who also suggests Matcher.find as being what I thought I was calling. I also remembered that I'd forgotten to include the test case, which I can conveniently write in a form that lets me test this on Linux.
2008-08-05 07:00:39 +0100 / enh / revision 2673
src/e/util/Preferences.java: add a mnemonic for the "Preferences..." menu item.
2008-08-05 06:12:50 +0100 / mad / revision 2672
src/e/util/Log.java: The old missing .*?
2008-08-05 06:06:49 +0100 / mad / revision 2671
Today it would have been useful had we had the Cygwin version in an old problem report. It's not the first time, indeed I've been meaning to do something about that for years. The Java doesn't realize it's running on Cygwin, never mind which version. Although we use Cygwin Ruby at the moment, we don't believe that we have much of a dependency on it, versus native Windows Ruby.
native/all/java-launcher/java-launcher.cpp: So this is the only part of the code that will always be Cygwin. How does one get the version on Cygwin? Well, /proc would be convenient... and indeed /proc/version contains what we want, add some more, including a trailing newline...
native/Headers/chomp.h: ... which perhaps it's worth getting rid of here, more in order to provide chomp() for the next potential caller than because C++ is uniquely good at, er, chomping.
src/e/util/Log.java: Dump any launcherOsVersion verbatim into the log and parse out the Cygwin version number for inclusion wherever we use the OS version.
bin/invoke-java.rb: I've been meaning to check-in a way of using the java-launcher on other platforms for ages. Testing on this Shuttle toaster is a dream, a dream I tell you, compared to using Windows. I suppose I can no longer postpone checking that Cygwin version parser on Windows.
2008-08-04 23:45:34 +0100 / mad / revision 2670
lib/build/universal.make: Hoist the definition of SPACE up where it would be more useful in checking whether we're being run under a directory with a space in the name... if we could get this far when being run under a directory with a space in the name. If we take a couple of other one liners with it, then the remaining code in that section is clearly to do with Windows peculiarities.
lib/build/simple.make: Copy the SPACE definition to somewhere early enough and add a check that would have saved Ed from needing to ask to confirm his suspicion.
2008-08-04 23:04:09 +0100 / mad / revision 2669
lib/build/simple.make: Export the two variables used by, but not defined in, universal.make and use a manually inlined version of $(lastword) here...
lib/build/universal.make: ... and here too, so we can get far enough with Mac OS 10.4's stock make to tell the user where to download a new enough version.
2008-08-04 18:54:49 +0100 / enp / revision 2668
src/e/util/GuiUtilities.java: Even after all this time, Apple haven't released a version of Java 6 for PPC, or for OS X < 10.5. Work around an API change introduced in Java 6, while we still wish to support Java 5.
http://weblogs.java.net/blog/zixle/archive/2005/11/changes_to_acti.html
2008-08-04 07:08:39 +0100 / enh / revision 2667
src/e/util/GuiUtilities.java: Swing's support for mnemonics is typically retarded, so let's hide it away in GuiUtilities so calling code can use a more reasonable interface. (This also helps with some of our existing boilerplate.)
src/e/gui/HelpMenu.java: use the new method.
src/e/ptextarea/PTextAction.java: use the new method in the superclass of all our PTextArea actions.
src/e/ptextarea/PActionFactory.java:
src/e/ptextarea/PFind.java: track the API change in all the subclasses, adding mnemonics as we go.
2008-08-04 03:49:31 +0100 / enh / revision 2666
src/e/gui/SimpleDialog.java: when the first message you see from our software reads "Welcome to Evergreen!." it makes us look stupid.
2008-08-04 02:36:14 +0100 / enh / revision 2665
src/e/gui/GnomeStockIcon.java: use a better link and better terminology.
2008-08-04 00:52:43 +0100 / enh / revision 2664
www/downloads.html: be explicit about our support for Mac OS 10.5, though it's probably obvious that "10.4" meant "10.4 or later".
2008-08-03 00:53:08 +0100 / mad / revision 2663
bin/invoke-java.rb: Elliott probably correctly guessed my reason for reversing the sense of this comment and keeping it but, as he says, there's no sense in being overly concise in a comment that I hope to be deleting in a week or two.
2008-08-03 00:45:32 +0100 / mad / revision 2662
lib/build/per-directory.make: Fix the atomicity of the cp of NEW_JNI_HEADER to JNI_HEADER. It seems possible to write this javahpp rule in a much more conventional way, as two rules, with liberal (but atomic!) use of $@. The reason it was written in such an unusual way was that the value of JNI_CLASS_NAME won't be the same by the time the rule is run. It seems that we can cache that in a target-specific variable in an intention-revealing way.
I've done a few test builds from clean and from already compiled, in both Salma Hayek and Terminator, paying particular attention to the case where I've touched the Java. There, I checked that we're still regenerating the JNI header when the Java changes but that we're not recompiling the corresponding C++ unless there's been any content change in the JNI header. It all seems to work. Bon, it certainly looks easier to maintain.
2008-08-03 00:26:58 +0100 / mad / revision 2661
bin/show-alert.rb: When Ruby throws a Windows MessageBox, the same hint about Ctrl-C applies as when the C++ throws one. Let's display the same message. When we report an unhandled exception, all of our callers seem to assume that we'll exit with failure, so let's do that. It's important in, for example, the case that Java crashed under javahpp, so make knows to stop...
lib/build/per-directory.make: ... although make not knowing the right place to start again pointed out a bug here. Never write "> $@" in a rule, even when you have to write it in a strange way to accommodate the local JNI_CLASS_NAME variable. Hmm... and that cp's not atomic either. Tsk tsk. I'll be back here.
bin/invoke-java.rb: Throw an exception, and hence a MessageBox (on similar) if the Java program we run fails, for example because Java or the JNI crashes. I've seen two crashes in as many weeks. Ron Pagani's was particularly nasty in that it looked like a Terminator installation problem. He double-clicked the desktop shortcut and "nothing happened".
2008-08-02 21:25:53 +0100 / enh / revision 2660
bin/blogger-backup.rb: this is also now one of the Talc demos, and serves no particular purpose here.
2008-08-02 21:10:55 +0100 / enh / revision 2659
bin/apt-suggest: I thought I removed this when it became one of the demo scripts for http://code.google.com/p/talc/ but it would appear not.
2008-08-02 18:57:29 +0100 / mad / revision 2658
native/Headers/reportArgValuesViaGui.h: That experiment successfully told us more about what's happened to Ken Wolcott's installation so let's make it permanent, renaming this file appropriately, ...
native/Headers/reportArgValues.h: ... removing the GUI reporting code that's already used by our caller...
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: ... and our new caller, which I see will display argv[0], so, for consistency, ...
native/all/ruby-launcher/ruby-launcher.cpp: ... we should do that here too.
2008-08-02 08:07:03 +0100 / mad / revision 2657
native/Headers/reportArgValuesViaGui.h: Split this in two, so we aren't constrained to report as a fatal error, but don't split the file in two as it's too painful to fight Subversion for an experiment...
native/all/ruby-launcher/ruby-launcher.cpp: ... in which I'd like to include the program's arguments in the error message, to try to diagnose what looks like a quoting problem that Ken Wolcott is reporting.
2008-07-31 05:43:50 +0100 / enh / revision 2656
src/e/util/StringHistory.java: thanks to NFS and this code, it can be quite painful to control-f search in Evergreen; every time the find field is dismissed, the editor locks up as the history is written to disk on the EDT:
2008-07-30T16:55:50.852-0700 Evergreen: (hang #81) event dispatch thread
stuck processing event for 1100 ms so far:
java.io.FileOutputStream.open(Native Method)
java.io.FileOutputStream.<init>(FileOutputStream.java:179)
e.util.StringUtilities.writeFile(StringUtilities.java:52)
e.util.StringUtilities.writeFile(StringUtilities.java:41)
e.util.StringHistory.writeHistoryFile(StringHistory.java:100)
e.util.StringHistory.add(StringHistory.java:51)
e.edit.Minibuffer.addToHistory(Minibuffer.java:155)
e.edit.Minibuffer.access$400(Minibuffer.java:9)
e.edit.Minibuffer$3.keyPressed(Minibuffer.java:114)
java.awt.Component.processKeyEvent(Component.java:5996)
javax.swing.JComponent.processKeyEvent(JComponent.java:2794)
java.awt.Component.processEvent(Component.java:5815)
java.awt.Container.processEvent(Container.java:2058)
java.awt.Component.dispatchEventImpl(Component.java:4410)
java.awt.Container.dispatchEventImpl(Container.java:2116)
java.awt.Component.dispatchEvent(Component.java:4240)
java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:693)
java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:958)
java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:830)
java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:657)
java.awt.Component.dispatchEventImpl(Component.java:4282)
java.awt.Container.dispatchEventImpl(Container.java:2116)
java.awt.Window.dispatchEventImpl(Window.java:2429)
java.awt.Component.dispatchEvent(Component.java:4240)
java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
e.debug.EventDispatchThreadHangMonitor.dispatchEvent(EventDispatchThreadHangMonitor.java:191)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
2008-07-30 22:41:44 +0100 / mad / revision 2655
Ramesh Tellamsetty's ssh keys got messed up and eventually his source code control license expired. The source code control program tried to revalidate his license by ssh()ing to the license server. ssh tried to ask for a password and caused the whole CheckInTool process group to be suspended. ssh tried to ask for the password by opening /dev/tty. We'd rather such attempts failed with:
martind@whitewater:~$ setsid cat /dev/tty
cat: /dev/tty: No such device or address
martind@whitewater:~$
bin/invoke-java.rb: Our setsid will be ahead of Linux's on the PATH within Terminator and Evergreen but it shouldn't matter to us if it isn't. Hmm... so, in Terminator windows, Linux's setsid will be hidden by ours, which doesn't behave the same way when run from eg the bash prompt (where the setsid program will be the process group leader)...
native/all/setsid/setsid.cpp: ... let's tell the baffled user where to come if that happens. Perhaps I should have used a different name. Argh!
This program used to be called setsid, though it has never previously called setsid. In the original discussions about this feature, we jibbed at the fork() in Rick Sladkey's setsid.c, and I wrote:
setsid creates a new "session" (whatever that is), a new process group (of
> which the calling process is the leader) and removes any controlling tty.
> All we know we want is a new process group. So I suggest this would better
> reveal our intention:
...
> setpgid...
Now we know we'd like to remove the controlling tty too.
src/e/util/ProcessUtilities.java: Adapt to the renaming of setpgid and half-heartedly clarify a comment that baffled me.
2008-07-30 22:13:54 +0100 / mad / revision 2654
native/all/setsid/setpgid.cpp:
native/all/setsid/setsid.cpp: The third, non-atomic stage of a simple rename operation.
2008-07-30 22:09:27 +0100 / mad / revision 2653
And now remove the directory, non-recursively, so I'm having to do this via the command line.
2008-07-30 22:06:47 +0100 / mad / revision 2652
native/all/setpgid/setpgid.cpp:
native/all/setsid: Subversion won't let me make this change atomically, so you'll have to make do with a broken repository and no decent check-in comment for a few minutes. I hate you, Subversion.
2008-07-30 05:33:59 +0100 / enh / revision 2651
src/e/ptextarea/ExternalSearchItemProvider.java: no-one spoke up in favor of this functionality when it was disabled, versus two [including me] who were glad to see it go, so out it goes.
2008-07-30 02:07:17 +0100 / mad / revision 2650
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Simplify the error message. We didn't used to get so many reports when we use to have the the Windows installer simply say "this program needs Cygwin and Cygwin Ruby".
native/Headers/reportFatalErrorViaGui.h: Move the instructions on how to report the error to the end, on the assumption that people were just reading the first line and obeying it without reading even to the third line.
2008-07-30 01:06:21 +0100 / mad / revision 2649
bin/ithaki.sh: Pay for the download only when we're making the Packages file that cares about the md5sums. It took some fighting with various rsync syntaxes but it turns out not to take much code, or time, or bandwidth.
lib/build/universal.make: That should be enough as long as we don't overwrite the build on the server when the version number hasn't changed. I've perhaps shortened the message too much. I hope that won't lead to anyone contriving to upload a .deb with the same version number as one that's already in a Packages file.
If you want to change the message, note that filter-build-output.rb requires these progress messages to be of the form "Verbing blah...", so you can't just stick in a "Not ", at least not without complicating that script too.
As ever, with nightly build changes, this is only partly tested.
2008-07-29 22:14:58 +0100 / mad / revision 2648
lib/build/universal.make: Anyone who tries to use any of the rules related to installers on a RedHat box is quickly going to realize that they don't have the Debian packaging tools that we depend on. You can't even use "make install" to install a .rpm file that you made on Debian because of the bogus .app target. Perhaps a code-comment is a more appropriate place to record the difficulties that anyone wanting to do that would have to surmount, rather than expecting anyone to read beyond the third word of the previous output.
Be more consistent about "Running" messages.
2008-07-29 21:52:40 +0100 / mad / revision 2647
lib/build/universal.make: In rules where we cd, we sometimes have to make absolute paths from $< and $@. Cope with the situation we're they're already absolute. Fixes the failure below and another probable instance for Windows:
martind@whitewater:~/software.jessies.org/work/terminator$ make installer
Building Debian file system tree for Terminator...
Creating GNU/Linux .deb package...
Creating GNU/Linux .rpm package...
mkdir -p /home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/bin && \
rm -f /home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/bin/org.jessies.terminator-5.158.2645-2.x86_64.rpm && \
cd /home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/bin && \
fakeroot alien --to-rpm /home/martind/software.jessies.org/work/terminator//home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/bin/org.jessies.terminator_5.158.2645_amd64.deb
File "/home/martind/software.jessies.org/work/terminator//home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/bin/org.jessies.terminator_5.158.2645_amd64.deb" not found.
make[1]: *** [/home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/bin/org.jessies.terminator-5.158.2645-2.x86_64.rpm] Error 2
make[1]: Leaving directory `/home/martind/software.jessies.org/work/terminator'
make: *** [recurse] Error 1
martind@whitewater:~/software.jessies.org/work/terminator$
2008-07-29 21:43:34 +0100 / mad / revision 2646
lib/build/universal.make: package-for-distribution.rb expects relative filenames in the installer-file-list. The makefile knows the prefix it used to make them absolute, so the makefiles is perhaps the right place to remove said prefix. Fixes just the first problem with making the installer - another change to follow:
martind@whitewater:~/software.jessies.org/work/terminator$ make installer
Building Debian file system tree for Terminator...
about to copy /home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/lib/libpty.so to /home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/lib/libpty.so
/usr/lib/ruby/1.8/fileutils.rb:1378:in `fu_each_src_dest': same file: /home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/lib/libpty.so and /home/martind/software.jessies.org/work/terminator/.generated/amd64_Linux/lib/libpty.so (ArgumentError)
from /usr/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest0'
from /usr/lib/ruby/1.8/fileutils.rb:1377:in `fu_each_src_dest'
from /usr/lib/ruby/1.8/fileutils.rb:382:in `cp'
from /home/martind/software.jessies.org/work/salma-hayek/lib/build/package-for-distribution.rb:192:in `copy_files_for_installation'
from /home/martind/software.jessies.org/work/salma-hayek/lib/build/package-for-distribution.rb:177:in `each_line'
from /home/martind/software.jessies.org/work/salma-hayek/lib/build/package-for-distribution.rb:177:in `copy_files_for_installation'
from /home/martind/software.jessies.org/work/salma-hayek/lib/build/package-for-distribution.rb:221
make[1]: *** [terminator.app] Error 1
make[1]: Leaving directory `/home/martind/software.jessies.org/work/terminator'
make: *** [recurse] Error 1
martind@whitewater:~/software.jessies.org/work/terminator$
2008-07-29 19:46:57 +0100 / mad / revision 2645
lib/build/universal.make: The absolute-to-relative cleverness isn't working for me today on Windows. I change cygwin-launcher.cpp, to try to improve the failure message, and nothing recompiles. I don't know why not and the grindingly slow fork performance on my Windows box today makes me think that perhaps it's just due for a reboot. But changing BIN_DIRECTORY and LIB_DIRECTORY to be absolute paths is perhaps a cheaper solution to the same problem and that does work, today, for me, on Windows.
2008-07-28 18:52:58 +0100 / mad / revision 2644
lib/build/per-directory.make: Reapply r2637, minus the FIXME...
lib/build/universal.make: ... for which a simple solution occurs today. This should also let Elliott build salma-hayek from clean. I can see how that might have been broken previously, though it was working for me by (bad) luck.
My goal with the per-directory.make change was to tell make to compile java-launcher.cpp, if it's been changed, before using it via javahpp. That missing dependency became apparent with the addition of JNI to salma-hayek, when I was investigating our behavior on Windows when Java crashes, as it was doing repeatedly for Ron Pagani the other day.
2008-07-28 07:07:14 +0100 / enh / revision 2643
lib/build/per-directory.make: reverting r2637; I think mad underestimated the extent to which the missing dependency "doesn't work" — it doesn't just fail to do anything useful, it actually breaks the build for any project that uses JNI:
make[1]: *** No rule to make target `/home/elliotth/Projects/salma-hayek/.generated/amd64_Linux/bin/java-launcher', needed by `/home/elliotth/Projects/salma-hayek/.generated/native/all/salma-hayek/amd64_Linux/new/e_util_FileUtilities.h'. Stop.
2008-07-28 06:46:42 +0100 / enh / revision 2642
src/e/util/NumberDecoder.java: while I'm still thinking about this code, fix things so I hopefully waste less time manually counting out digits, and note some other improvements that might be nice.
2008-07-28 00:36:49 +0100 / enh / revision 2641
www/footer.html:
www/styles.css: remove the least useful part of the footer, and move stuff about to make better use of the newly-freed space.
2008-07-28 00:20:26 +0100 / enh / revision 2640
www/footer.html: car suggests removing the mention of SparseZone in the footer.
2008-07-27 01:01:24 +0100 / enh / revision 2639
src/e/ptextarea/PTextArea.java: although base conversion on the pop-up menu has been a reasonably successful experiment, I think the "search items" have been a failure. Let's remove them from the UI, and if there's no backlash, we can remove the implementation shortly.
2008-07-27 00:47:01 +0100 / enh / revision 2638
src/e/gui/EPopupMenu.java: move the code implementing Terminator's decoding of numeric selections into EPopupMenu, so it can be used elsewhere.
2008-07-25 22:29:22 +0100 / mad / revision 2637
lib/build/per-directory.make: Add a missing dependency... which doesn't work. I don't have time today to fix the reason, so leave myself a comment.
2008-07-25 21:27:09 +0100 / enh / revision 2636
src/e/forms/FormDialog.java: it may look like it, but this isn't a reversion of the last change to this code. The last change was correct and in the style of the rest of the code, but it missed another (less important) instance of the same mistake, and I think the existing style is a historical mistake. Once upon a time, we'd create a new JDialog each time we needed to show the form. Now we re-use one for performance, but the lack of a proper split between one-off dialog configuration and every-time configuration has led to these kind of too-many-listener mistakes. This patch introduces the split, and changes some names to make the split more visible: "init" methods are now just for one-off configuration.
2008-07-25 04:52:07 +0100 / mad / revision 2635
src/e/forms/FormDialog.java: Remove the ComponentListener that we added before re-adding what's probably the same listener. Every time Gaurav brought up the Open Quickly box, a couple of screenfuls of log messages went passed, telling us that it taken a few seconds to search the filenames. Each time he did it, one more would appear than on the previous occasion. His Evergreen had been started a couple of weeks ago. He'd been happy enough assuming that he was just running low on memory (he wasn't) but the performance was bad enough to send the Holtocoaster into a paroxysm of swearing when he went over to review a patch.
Even with this fix, I think there's still something wrong with Open Quickly. I think I had Open Quickly refuse to show me any matches once this afternoon but I got distracted before I could investigate.
2008-07-25 00:55:04 +0100 / mad / revision 2634
www/cygwin-setup.html: Try to draw the eye to the resolution for the problem that Ron and I were getting. We thought we knew better than to re-read the instructions carefully.
2008-07-25 00:46:23 +0100 / mad / revision 2633
www/cygwin-setup.html: The list you have to navigate down to install these packages is, if you follow our instructions in the paragraph above, in alphabetical order. It would help if our list were similarly ordered.
2008-07-24 05:09:20 +0100 / enh / revision 2632
src/e/ptextarea/PTextArea.java: stop trying to store two things (whether we're using a fixed font, and what column position the margin should be at) in one field...
src/e/ptextarea/FileType.java: ...so we can give users full control over what margins, if any, they see in different kinds of file.
2008-07-24 04:19:01 +0100 / enh / revision 2631
src/e/ptextarea/FileType.java:
src/e/ptextarea/PProtoTextStyler.java: now Google's protocol buffers are open-source (http://code.google.com/p/protobuf), we don't need to keep holding our breath for support for user-defined file types, and can just add a code-based version of the only I'd personally have a use for.
2008-07-24 03:55:32 +0100 / enh / revision 2630
src/e/ptextarea/FileType.java: alphabetical order, practiced since cuneiform, still causes difficulties.
2008-07-22 16:33:28 +0100 / mad / revision 2629
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Having seen how the error message looks, this would be an improvement. Perhaps I took the wrong choice with the previous check-in, using the same message for not being able to find Cygwin Ruby as for Cygwin - it's long and partly irrelevant if we found Cygwin. But then the link to the setup hints could be useful and it was less code than the alternative. Let's see how it goes.
2008-07-22 16:24:15 +0100 / mad / revision 2628
LC Spencer demonstrates that the error we throw when Ruby isn't found needs to be as easily understood as it once was and as our error when we can't find Cygwin again seems to be.
native/all/ruby-launcher/ruby-launcher.cpp: We only invoke this program in one place, where we give it the full path to rubyw, so there's no point in causing the C runtime the overhead of execvp over execv, and no point in muddying the waters of the error message with the suggestion that we might need to do a path search.
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Add a couple of .exe extensions, just in case execv without the p doesn't and so that we can use checkReadableFile to throw an error if Cygwin Ruby is missing. Move the verbiage that details our Cygwin and Cygwin Ruby requirements higher up, so that it will be output for any exception, not just ones encountered trying to find Cygwin's bin directory.
I haven't tried to compile this, let alone run it or test it in any way.
2008-07-17 20:21:16 +0100 / mad / revision 2627
bin/invoke-java.rb: The BlueArc QA users have quite often bitched about running out of memory on their Linux boxes and how performance is horrible when they have many Terminator windows with lots of scrollback. I experimentally set @heap_size to 100m on one of them. Results from this unscientific experiment aren't yet in but I'm wondering how we can do anything with them when they do come in.
2008-07-17 17:31:36 +0100 / mad / revision 2626
lib/build/per-directory.make: The appending of the --subsystem windows flag broke with my change the other day to LOCAL_LDFLAGS. I haven't rigorously understood why but it will be related to the target-specificity of this variable. We don't actually need that. It's been a long time since we built any Windows executable files that were for the console (default) subsystem.
lib/build/universal.make: So we can just specify the flag for all Cygwin executable files. Hmm, I imagine this will now apply to pty.dll too, but it seems to have no bad effect (and perhaps no effect at all).
This removes the two spurious console windows that Theo Hopman reported spewing forth when he double clicked on a newly installed Terminator desktop shortcut.
2008-07-16 05:51:28 +0100 / enh / revision 2625
src/e/util/FileUtilities.java: make fileFromParentAndString behave more like fileFromString, as intended. Duplicate the comment (rather than just omitting the usual blank line between methods) to make the intention clearer.
2008-07-14 05:13:43 +0100 / enh / revision 2624
bin/ssi.rb: a quick hack to fix local previews now I've removed the hack from "header.html", where it was causing incorrectness on the live site.
2008-07-14 04:28:45 +0100 / enh / revision 2623
www/generated_toc.js: add a to-do. I've been back and forth several times about whether or not to go with this script, especially given this limitation, but it still seems like the way forward, even if we're not there yet. The table of contents it adds to the Terminator FAQ is fairly convincing, and none of us wants to maintain such a thing by hand.
2008-07-14 04:20:06 +0100 / enh / revision 2622
www/header.html: remove the hack added for the benefit of local testing that's actually been breaking the on-the-web content. The hack will probably have to go in ssi.rb (since living without the ability to preview changes, even if it's a somewhat flawed preview, would be too harsh).
2008-07-14 04:15:00 +0100 / enh / revision 2621
www/header.html: make the new script available on all pages.
www/cygwin-problems.html:
www/cygwin-setup.html:
www/ubuntu-setup.html: and use it on those pages that would benefit.
2008-07-14 04:09:23 +0100 / enh / revision 2620
www/generated_toc.js: remove the bits we don't want.
2008-07-14 04:02:12 +0100 / enh / revision 2619
www/generated_toc.js: add details of this file's license and where to get the original.
2008-07-14 04:00:03 +0100 / enh / revision 2618
www/generated_toc.js: import Stuart Langridges's JavaScript table-of-contents generator, available under an X11 license from http://www.kryogenix.org/code/browser/generated-toc/. (I'll add that to this file in the next revision, but wanted an unadulterated copy first.)
2008-07-13 23:49:05 +0100 / mad / revision 2617
lib/build/universal.make: Reorder the shared library flag section a little, losing the JNI_LIBRARY_LDFLAGS assignments to more general purpose variables...
lib/build/per-directory.make: ... where we know what sort of target we're building. Add -arch x86_64 when linking JNI. Do the same when compiling JNI, adding the necessary infrastructure by analogy with the just-revamped LOCAL_LDFLAGS infrastructure.
This might let Terminator load its JNI library when running under Mac OS X 10.5 with the Java 6 option enabled. It didn't before, John Russell reports, and teh intarnets lead me to think that 10.5's Java 6 option might involve a 64 bit JVM.
2008-07-13 22:44:49 +0100 / mad / revision 2616
lib/build/per-directory.make: Avoid evaluating LDFLAGS before running the linker rule. It's always been distressing that we previously couldn't use automatic variables (like $@) in LDFLAGS because we make use of that capability in a couple of places for C_AND_CXX_FLAGS. One of those places (relating to PURE (ie non-Objective) C and C++ flags) has passed the test of time.
2008-07-13 21:59:02 +0100 / mad / revision 2615
lib/build/per-directory.make: We're using Cocoa from C++ as well as Objective-C++ source, so we're already linking with the Cocoa framework even when not BUILDING_COCOA (which perhaps should be renamed... but, looking at the rules, perhaps not).
Move the clearing of the BUILDING_SHARED_LIBRARY variable up to where the comment says it belongs. I'm still not sure these local variables are working out... but that's not stopping me from considering adding to them.
2008-07-13 21:28:50 +0100 / mad / revision 2614
lib/build/universal.make: Move the definition of PREVIOUS_BASE_NAME closer to its usage. It's mind-bending enough even when it's on one screen.
lib/build/per-directory.make: Define BASE_NAME before using LDFLAGS, so we can report a reasonable error message in case that anyone is rash enough to try, for example, to reference $(SOURCES) from $(universal_binary_flags).
2008-07-12 04:25:31 +0100 / enh / revision 2613
src/e/ptextarea/PMouseHandler.java: mention the possibility of inverting the default behavior with embedded links, and some of the issues, even if it's too much work for too little benefit to get done in the near future.
2008-07-09 18:50:01 +0100 / mad / revision 2612
src/e/ptextarea/PLineList.java: Deleting the first half, which amounted to 16 MB and half a million lines, of a large log file took 20 minutes and, during that time, locked up so thoroughly (with 100% CPU utilization) that jstack and jstack -F wouldn't work. Performing the same edit on the same file with this change completed in no more than a handful or seconds.
2008-07-09 05:27:32 +0100 / enh / revision 2611
src/e/ptextarea/PActionFactory.java: the plumbing for a "Find Matching Bracket" menu item.
2008-07-08 07:14:06 +0100 / enh / revision 2610
src/e/ptextarea/PMouseHandler.java: the recent changes were broken in that we could end up calling updateCursorAndToolTip before the mouse had ever entered the text area, causing a NullPointerException...
src/e/ptextarea/PKeyHandler.java: ...and we were calling updateCursorAndToolTip in far too many cases, causing the mouse cursor to flash on and off as the user types. We're only interested in notification when the control key is pressed or released.
2008-07-07 01:09:51 +0100 / enh / revision 2609
src/e/ptextarea/PKeyHandler.java:
src/e/ptextarea/PMouseHandler.java:
src/e/ptextarea/PTextArea.java: make it possible to position the caret in a hyperlink without following the link by holding down the control key. I was sure I'd done this long ago, and was surprised to find it didn't work during the week. There's no sign of any attempt to solve the problem in the code, so presumably it was Terminator, when that had links? Anyway, this implementation even ensures that the mouse cursor isn't the "hyperlink hand" when control's down, to give added reassurance that the right thing is about to happen.
2008-07-06 20:35:13 +0100 / enh / revision 2608
src/e/ptextarea/PKeyHandler.java: I'm not sure only counting keystrokes that insert characters for pointer-hiding is the right thing to do, but it's what, say, gedit(1) does, and it does fix the unintentional behavior where just pressing a modifier key (which may have been intended to modify a mouse event rather than a key event) hides the pointer. I could trivially be persuaded that removing characters should also count, though. (But what about C-X? Or C-Z?) I'm less sure about moving the caret/changing the selection.
2008-07-05 22:40:49 +0100 / enh / revision 2607
src/e/ptextarea/PKeyHandler.java: as a recovering vi(1) user, I still sometimes find myself annoyed that while Evergreen will show me a matching bracket, it won't let me jump to or select to that matching bracket without switching to the mouse. Add a vi(1)-inspired control-(shift-)5 function.
2008-07-03 22:21:34 +0100 / mad / revision 2606
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Lee Hope Mcc confirms my previous suspicion that we need this error message to more constructively cover the case where Cygwin isn't installed.
2008-06-25 17:24:08 +0100 / mad / revision 2605
lib/build/package-for-distribution.rb: In what way did I think I'd fixed the bug introduced by my replacing of a (non-atomic) cp with mv in the terminfo generation rule? Before the change here, we installed /usr/share/terminfo/terminator - with no /t/. My prior comment about "not running into the 74 issue" was wrong too - "?/*" wouldn't ever match "74/terminator" - although I was (probably) right that this isn't run on Mac OS anyway.
Don Satow ran into this.
2008-06-24 00:40:04 +0100 / mad / revision 2604
bin/invoke-java.rb: The code to act on RUBY_LAUNCHER_INVOKING can never have worked. The only reason it can have given the impression of working is that in the in-app client hasn't been working for Windows for ages.
bin/show-alert.rb: If I put it here, then it does work, although this code isn't anything to do with reporting exceptions. "launch" was a better name for its home. "launch" and "launch0" give the impression that the intention was for eg Terminator to sub-class invoke-java.rb's Java class. Perhaps that would be the cleaner solution, though I'm not a fan of derivation except for interface implementation.
2008-06-23 22:05:53 +0100 / mad / revision 2603
src/e/util/InAppServer.java: On Linux, Ruby seems able to connect(2) to 0.0.0.0, which was what we were writing into edit-server-port. On Windows, it throws EADDRNOTAVAIL, perhaps not unreasonably. The intention of this code, in the case where we're binding to INADDR_ANY, was to write the host name into the file, so you could run bin/evergreen from another machine and have it throw the file into the Evergreen running on your primary desktop. That obviously hasn't been working on any platform for quite some time.
This code has two callers and only one passes in null. We could move this code into that caller. I don't want to do that because INADDR_ANY would be a better address to listen on for a multi-homed host, even if we don't choose to write all of its addresses into the server-port file.
2008-06-23 20:15:22 +0100 / mad / revision 2602
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Expand a comment that caused some discussion.
2008-06-23 20:13:09 +0100 / mad / revision 2601
lib/build/file-list-to-wxi.rb: Here's the working code to create an advertised shortcut... but effectively commented-out because...
lib/build/installer.wxs: ... the thread at the URL here suggests that an advertised shortcut can't be made optional. That plus the desire to let end users tinker with the shortcuts is sufficient to make me lean towards keeping the gruesome HKCU hack which, as well as being the code we've used for a long time, is also the suggestion at the end of that thread.
2008-06-23 20:08:29 +0100 / mad / revision 2600
TODO: Elliott made me think about "Edit with Evergreen" and realize that perhaps there is a practical way. I'm sure, though, that it won't be a straightforward extension of what's there for "Open Terminator Here".
2008-06-23 20:03:06 +0100 / mad / revision 2599
lib/build/universal.make: It's mildly irksome to claim to still be "Creating Windows installer" when we're actually running it.
2008-06-23 19:10:22 +0100 / mad / revision 2598
lib/build/installer.wxs: Don't install any "Open Evergreen Here" context menu hooks.
2008-06-23 18:38:28 +0100 / mad / revision 2597
lib/build/installer.wxs: Removing the conditions requires removing one of the copies of the shortcut code, so I may as well go the whole hog in this check-in and remove all that hard-won, duplicated, registry and directory searching code. Finally, paydirt - the code for doing this, which has caused so many problems, is now under our control, not to mention comprehension. It's more complicated now, but I'm not actually sure it's any longer and it sure as hell was easier to write and debug.
lib/build/universal.make: Now we only need to take one GUID into the shower for the shortcut.
2008-06-23 18:23:13 +0100 / mad / revision 2596
lib/build/installer.wxs: We haven't needed the desktop shortcuts to start in the Cygwin bin directory since we started using a Mingw launcher. It looks like Orca is happy without any value in the registry entries that we have to create to stop it from whining about non-advertised shortcuts.
This change removes the last users of these properties apart from the installation conditions.
2008-06-23 18:11:34 +0100 / mad / revision 2595
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Teach this program to find Cygwin by itself. I output a much more detailed error message than the installer used to. I'm not sure whether that's a feature but it certainly seems a good idea until this beds in.
native/Headers/WindowsError.h: The registry functions are unusual in that they return an error code rather than using the GetLastError idiom.
native/all/java-launcher/java-launcher.cpp: Fix a comment that pointed a misleading finger at Cygwin. I suspected it was Windows all along.
lib/build/installer.wxs: cygwin-launcher no longer takes the Cygwin bin as its first argument, fixing open-here for per-user installations and removing some comment-worthy confusion that tripped me up twice.
2008-06-23 17:50:15 +0100 / mad / revision 2594
lib/build/universal.make: Actually, while I'm there, cp isn't atomic and is therefore not ever fit for use in writing to $@. Rename-over-existing isn't atomic on Windows but the only possible non-atomic failure mode leaves the target file missing, which make will cope with just fine. This also removes a window of opportunity where we could be killed while the target file was writeable.
2008-06-23 17:45:27 +0100 / mad / revision 2593
lib/build/universal.make: I can't think of a sane way of getting throwback to work on Windows but I can at least make it much harder for me to edit the generated copy of the file, thus inevitably losing my changes.
2008-06-23 07:13:04 +0100 / enh / revision 2592
lib/build/patch-to-html-email.rb: set executable bit in Subversion, which is too "clever" to pay attention to chmod(1).
2008-06-23 07:02:02 +0100 / enh / revision 2591
lib/build/escaping.rb: this script isn't executable, so shouldn't start with a #! line.
2008-06-23 06:54:14 +0100 / enh / revision 2590
lib/build/package-for-distribution.rb: add the new "Homepage" field.
2008-06-23 06:52:28 +0100 / enh / revision 2589
lib/build/package-for-distribution.rb: change the "Maintainer" field slightly to keep lintian(1) happy.
2008-06-22 22:54:09 +0100 / mad / revision 2588
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: This function's getting too large and extra white space isn't a good solution.
2008-06-22 22:42:38 +0100 / mad / revision 2587
lib/build/installer.wxs: There's more detail on this in the Terminator TODO file but this will definitely seem like a bug to my future self, so it definitely deserves a code comment.
2008-06-22 22:02:02 +0100 / mad / revision 2586
lib/build/installer.wxs: I have to switch to another computer in a minute, so in this goes, only half-baked. There are three things wrong with this - the HKLM-specificity noted in the code comment, that we don't want this for Evergreen, and that it generates Orca warnings as noted in the TODO file. The HKLM issue could be worked around with duplication, as everywhere else in installer.wxs, but I'm hoping this will be the final straw in pushing me to write the registry searching code to find cygwin1.dll from cygwin-launcher. The Evergreen thing will want some more code, which should probably take into account that we might like to use something similar for CheckInTool but not for RevisionTool, which could conceivably make use of something not entirely unrelated but significantly different. The Orca warnings I think I will "address" by moving that part of the TODO note into a code comment here.
2008-06-19 09:32:13 +0100 / mad / revision 2585
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: No, it *does* include a trailing backslash...
lib/build/installer.wxs: ... and because this is all just macro substitution, the backslash gets to escape the quote after it. What a nightmare. At least I know how to write XML comments now.
2008-06-19 09:23:58 +0100 / mad / revision 2584
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Ah, that wasn't an incorrectly escaped quote, it was a backslash. Still, it did look like a mistake and the code here that it was pandering to could easily play safer.
2008-06-19 09:01:56 +0100 / mad / revision 2583
lib/build/file-list-to-wxi.rb: Shortcuts and shell extensions are seemingly typically created immediately after the File to which they refer and must, in some cases, be inside the same Component. I used this hook several times this evening in various experiments and I expect I'll use it again.
lib/build/installer.wxs: Skeletal support for an open-here feature. I tried a couple of ways of filling in this Component this evening. I suspect I'll be back.
lib/build/universal.make: Open-here requires another random number.
You know, all this, and the non-maintainability of the HKLM and HKCU variants of the code in that .wxs file make me think that I should have one Ruby script that generates the whole thing. I suspect it'd be more readable and it'd certainly be better commented.
I'm also about to check-in the Terminator TODO file with some related .wxs snippets for revisiting on another evening...
2008-06-18 04:20:40 +0100 / mad / revision 2582
www/cygwin-problems.html: While looking at my previous changes, I see we were claiming that NT 3.5x and NT 4 used UTF-16, when they actually used UCS-2. UTF-16 came in with Windows 2000. Yes, UTF-16 and UCS-2 are closely related but we shouldn't give out misinformation.
2008-06-18 04:15:48 +0100 / mad / revision 2581
www/cygwin-problems.html: Adam Jones and Ron Pagani recently reminded us of the reason we note in our Cygwin Setup page that inetutils is the package containing telnet. I don't know why Microsoft telnet doesn't like being started from a Cygwin terminal, but it's not a Terminator-specific issue. It can be started (in a new window) via at least one Cygwin program - cygstart - but that looks to have special support in the Cygwin DLL for starting children in some kind of detached mode.
2008-06-18 00:59:12 +0100 / mad / revision 2580
native/all/salma-hayek/e_util_FileUtilities.cpp: The usual stanza, this time with a code-comment, so I don't have to trawl the glacially slow svn history to find out, and this time for sure, that the only reason for it is (at least arguably) a bug in one of Sun's JNI headers.
2008-06-17 16:46:14 +0100 / mad / revision 2579
native/all/salma-hayek/e_util_FileUtilities.cpp: The intention was clearly to stat the link itself, not the target. As well as actually working now(!), this is faster and doesn't produce a torrent of spurious errors when it sees dangling links (which was what first alerted me to the bug).
2008-06-17 05:15:46 +0100 / enh / revision 2578
bin/invoke-java.rb: add any salma-hayek native library directories to the library search path.
native/all/salma-hayek/e_util_FileUtilities.cpp: a new library implementing FileUtilities.nativeIsSymbolicLink until Java 7 gives us something with equivalent performance (as part of JSR-203).
src/e/util/FileUtilities.java: keep the slow heuristic code in case we can't load the JNI library, but prefer the JNI library.
2008-06-17 04:23:56 +0100 / enh / revision 2577
native/all/salma-hayek: add a directory.
2008-06-15 06:26:45 +0100 / enh / revision 2576
bin/download-latest-jdk.rb: this script no longer works; I'm still maintaining the Talc version, a fix for which I've just committed to the Talc repository, but hereby give up on the Ruby version.
2008-06-15 02:38:28 +0100 / enh / revision 2575
src/e/util/FileSearcher.java: add an intention-revealing "final" (unrelated to performance).
2008-06-15 02:31:49 +0100 / enh / revision 2574
src/e/util/FileSearcher.java: document a failed attempt at optimization.
2008-06-09 08:35:30 +0100 / mad / revision 2573
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: SetDllDirectory was a nice idea but it only exists on recent versions of Windows. Then I ran into a piffling limit on the size of a shortcut target, the most expedient solution for which, distressingly, means that cygwin-launcher has to gain some knowledge about what it's launching. Given it needs to know something about ruby-launcher, I think it may as well know about rubyw too. As if that weren't enough, I then (re)discovered that the arguments containing spaces in the argument vector passed to execv and friends must, on Windows, be quoted by the application passing them.
native/all/ruby-launcher/ruby-launcher.cpp: Tracking that down required ruby-launcher to report which arguments it had been passed, which of course it can't do except via the GUI.
native/Headers/reportArgValuesViaGui.h: I used the same code in cygwin-launcher while debugging it, so a header file seems the right place.
native/Headers/checkReadableFile.h: Commented-out debugging code that we might need again is dubious at best, so let's try checking that ruby-launcher been passed a readable file as its argument. One day, perhaps we'll want more flexibility but we seem to see more problems where the Windows shortcut "doesn't do anything" than almost any other sort of problem, so perhaps some extra effort is due.
lib/build/installer.wxs: Tidy up some superfluous backslashes, some forward slashes that should (for consistency at least) be backslashes and an oddly indented XML tag that's irked me before. Quote the first argument we pass to the shortcut target as well as the second, as quoting seems to be our responsibility and there's no reason I know of why you couldn't install Cygwin under, say, "Program Files" - a directory whose name contains a space. Confusingly, this requires we add an extra backslash to avoid the quoting the closing quote.
2008-06-09 05:32:57 +0100 / enh / revision 2572
src/e/forms/FormDialog.java: move a possible FIXME here from Evergreen's to-do list.
2008-06-08 05:34:38 +0100 / enh / revision 2571
src/e/util/TimeUtilities.java: FindBugs complains of potential concurrent calls to a non-thread safe DateFormat. Add synchronization.
2008-06-08 02:34:04 +0100 / mad / revision 2570
lib/build/universal.make: Write quite a bit of extra code so we can do without the comment about the harmlessness of the duplication when we run findbugs in salma-hayek. Remove the $(addprefix) complexity in the findbugs rule, and where it was copied from. I presume the original reason was that the argument might be empty. It's not now and doesn't seem likely to be again.
The extra colon on the end of auxclasspath happens when EXTRA_JARS ends in a space, because the last wildcard to be appended evaluates empty. makeNativePath can strip trailing spaces and solve that more widely. Evaluate the wildcard immediately, as usual, so we minimize the file system chatter.
lib/build/filter-build-output.rb: I was going to ask what findbugs's output looks like, thinking that if it doesn't generate any warnings, we wouldn't want to see it. Well, there doesn't seem much danger of it not generating any warnings. They look easy enough to spot, especially the warning counter at the end. There are several other approaches we could use to solve this sort of problem but, while we're just generating things that really do look like compiler warnings, I think I'll stick to the existing mechanism. exit 1 was, though, a good (clean, simple) hack. I'm tempted to change the echo.% rule to work that way too.
2008-06-08 00:27:35 +0100 / enh / revision 2569
lib/build/universal.make: add FindBugs' -auxclasspath switch.
2008-06-07 07:13:14 +0100 / enh / revision 2568
lib/build/universal.make: add a half-baked rule for running findbugs, in the hope that the Make pixies will bake the more complicated half.
2008-06-07 06:53:00 +0100 / enh / revision 2567
lib/build/universal.make: minor changes to the GCJ hack I use for building a stand-alone Talc binary.
2008-06-07 05:19:15 +0100 / enh / revision 2566
src/e/util/SpellingChecker.java: FindBugs points out we're not checking readLine doesn't return null.
2008-06-07 04:58:34 +0100 / enh / revision 2565
src/e/gui/HelpMenu.java:
src/e/ptextarea/PTextAreaSpellingChecker.java:
src/e/ptextarea/PWrappedSegmentIterator.java:
src/e/toys/world/SolarProjector.java: FindBugs complains about inner classes that could be static but aren't.
2008-06-07 04:51:33 +0100 / enh / revision 2564
src/e/util/InAppServer.java: FindBugs complains about use of "new Long", suggesting Long.valueOf instead, but since we're actually just trying to convert a long into a String, it's really Long.toString we want.
2008-06-07 04:46:31 +0100 / enh / revision 2563
src/e/util/LazyStringSelection.java: FindBugs spots incorrect synchronization.
2008-06-07 04:44:37 +0100 / enh / revision 2562
src/e/forms/FormDialog.java: FindBugs dislikes the comparison with Boolean.TRUE (because Boolean, stupidly, has a public constructor). Our code is correct, but relying on auto-unboxing instead is correct in the presence of code using the Boolean constructor, and shorter.
2008-06-06 06:29:43 +0100 / enh / revision 2561
src/e/ptextarea/FileType.java: improve a method name and some documentation.
2008-06-06 06:23:03 +0100 / enh / revision 2560
src/e/ptextarea/FileType.java: another bit of tuning to the file-type heuristics so that (amongst other things) a Ruby script containing "#ifdef" won't be assumed to be C++.
2008-06-02 03:08:30 +0100 / mad / revision 2559
lib/build/package-for-distribution.rb: Fix the build breakage I introduced yesterday, which only affected builds of the Terminator installer from clean. I suppose looking for files to include in the installer can use a glob without picking up obsolete files, as the installer should be built from clean, although I didn't make clean before checking that make install still worked yesterday. But I think I only tried that on Cygwin anyway, where this code isn't run. We were installing the copy of terminator's terminfo from the "t" subdirectory. Everywhere else, we use the copy we make of it in the parent directory, to avoid having to know whether we should use "t" or, on Mac OS, "74". The code here only gets executed on Linux and Solaris, which is why we haven't run into the "74" issue. Let's use the copy from the parent directory here too. If we do the same as everyone else, then we won't be the only victim when someone changes what he thinks are just internal implementation details of that make rule. I can't be making this change twice (and then perhaps fixing it twice), so I'll have to collapse that part of the Solaris-induced duplication.
Fixes:
/usr/lib/ruby/1.8/fileutils.rb:1039:in `read': Is a directory - .generated/terminfo/t (Errno::EISDIR)
from /usr/lib/ruby/1.8/fileutils.rb:1039:in `fu_copy_stream0'
from /usr/lib/ruby/1.8/fileutils.rb:1247:in `copy_file'
from /usr/lib/ruby/1.8/fileutils.rb:1246:in `open'
from /usr/lib/ruby/1.8/fileutils.rb:1246:in `copy_file'
from /usr/lib/ruby/1.8/fileutils.rb:1245:in `open'
from /usr/lib/ruby/1.8/fileutils.rb:1245:in `copy_file'
from /usr/lib/ruby/1.8/fileutils.rb:459:in `copy_file'
from /usr/lib/ruby/1.8/fileutils.rb:383:in `cp'
from /usr/lib/ruby/1.8/fileutils.rb:1379:in `fu_each_src_dest'
from /usr/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest0'
from /usr/lib/ruby/1.8/fileutils.rb:1377:in `fu_each_src_dest'
from /usr/lib/ruby/1.8/fileutils.rb:382:in `cp'
from /u1/home/mad/software.jessies.org/work/salma-hayek/lib/build/package-for-distribution.rb:215:in `copyTerminfoTo'
from /u1/home/mad/software.jessies.org/work/salma-hayek/lib/build/package-for-distribution.rb:208:in `each'
from /u1/home/mad/software.jessies.org/work/salma-hayek/lib/build/package-for-distribution.rb:208:in `copyTerminfoTo'
from /u1/home/mad/software.jessies.org/work/salma-hayek/lib/build/package-for-distribution.rb:306
make[1]: *** [terminator.app] Error 1
2008-06-01 22:27:44 +0100 / mad / revision 2558
native/Headers/WindowsError.h: Make the, as yet not fully implemented, Windows equivalent of unix_exception available to other programs, specifically cygwin-launcher with an eye to its need for calling SetDllDirectory. Providing a class with the same name in the case that we're not on Windows keeps the using code simpler and keeps the included headers as similar as possibly across platforms.
native/all/java-launcher/WindowsDirectoryChange.cpp: I've changed the macro guards in WindowsError's original location to refer to __MINGW32__ too, because I don't see any reason why it wouldn't compile for that target.
2008-06-01 22:02:17 +0100 / mad / revision 2557
native/Headers/reportFatalErrorViaGui.h: cygwin-launcher wasn't going down the MessageBox route because __CYGWIN__ isn't defined for Mingw builds.
native/Headers/WindowsDllErrorModeChange.h: This will also affecting cygwin-launcher (though I haven't tested it).
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: A lengthy investigation of the history of this now obviously incomplete stanza for including windows.h leads me to conclude that if and when we really do need to include it first, we'll see a compilation error. I'll treat it as a normal #include here. I need no OS guard because this directory is for Windows-specific source. I will eventually need windows.h for the SetDllDirectory call.
2008-06-01 21:23:43 +0100 / mad / revision 2556
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: A (blech) copy-and-paste of the parts of ruby-launcher.cpp that we want here, namely the WindowsDllErrorModeChange and the message box error handling for the case where we can't start the Cygwin program. The only changes are in boilerplate text, a removal of #include directives that we don't need here and the addition of a TODO for the one extra, motivating, thing that we want to do here.
When the previous check-in's change started running the compiler with the right flag, it became clear that the Microsoft runtime doesn't provide strerror_r. For the purposes of cygwin-launcher...
native/Headers/strerror_r.h: ... we can provide a trivial implementation in terms of strerror...
native/Headers/unix_exception.h: ... that does enough to satisfy the caller here.
2008-06-01 20:59:40 +0100 / mad / revision 2555
lib/build/universal.make: C_AND_CXX_FLAGS is only evaluated during the execution of the compilation rule. At that point, it's an error to refer to $(SOURCE_DIRECTORY). SOURCE_DIRECTORY should be treated just like a per-directory local variable. Think of it as the parameter to that scope - parameters are clearly local. Add SOURCE_DIRECTORY to the list of LOCAL_VARIABLES, so we get the benefit of a early failure with a half-decent error message.
That simple change caused a knock-on problem with BASE_NAME. We had a special hack allowing that local variable to be used outside the local scope for the benefit of the scoping violation error message. But BASE_NAME is, it seems, defined in terms of SOURCE_DIRECTORY, which is now a local variable. For those error messages, I think we only need to know the name of the immediately preceding scope. We know where we want the name of the immediately preceding scope and so there we can ask for it with a special name. That removes the possibility that someone will use BASE_NAME somewhere else and get misleading results with no protection. I clarified the error message while I was there, using more consistent quoting.
Now, elsewhere, we add components to C_AND_CXX_FLAGS which depend on $<. So I can follow that pattern and make the -mno-cygwin compilation flag dependent on that instead of SOURCE_DIRECTORY. That's fine, as far as it goes, but I can't use that for LDFLAGS because per-directory.make treats that variable quite differently. It's evaluated at the start of per-directory.make and then added to according to whether we find Cocoa source and so on. That seems to have lasted OK under maintenance too but, to fit in with it for Mingw, I'm going to have to move the LDFLAGS setting...
lib/build/per-directory.make: ... here. This smacks of distributed duplication and I'm not very happy about it but I don't want to bite off some large-scale reorganization while I'm in the middle of the cygwin-launcher feature.
Before this change, cygwin-launcher was linked with -mno-cygwin but compiled without that flag, despite there being (non-functioning) code to enable that flag for the compilation.
2008-05-31 17:24:10 +0100 / mad / revision 2554
lib/build/universal.make: Teach make to copy mingwm10.dll to the same directory it puts cygwin-launcher.exe in. Only do that when building for Cygwin and in a project with Mingw source. Do the copy atomically (with copy-then-rename), in case someone hits Ctrl-C while it's being copied. Make another copy similarly atomic. While in paranoid mode, more robustly test for when we need -mno-cygwin, in case someone were to try to build under a directory called "Mingw" on some other platform, presumably just to poke fun at the build system.
2008-05-28 00:15:27 +0100 / mad / revision 2553
native/Mingw/cygwin-launcher/cygwin-launcher.cpp: Yes, yes it is. This is (clearly) just a stub, but it's enough for me to objdump -p and show that my -mno-cygwin infrastructure is working.
2008-05-28 00:14:31 +0100 / mad / revision 2552
native/Mingw/cygwin-launcher: Tedious Subversion is going to make me add this tree one level at a time, isn't it?
2008-05-28 00:13:23 +0100 / mad / revision 2551
It's looking like Jim Lowe might be about to supply us with a second reason for wanting cygwin-launcher - in case ruby-launcher's dependencies on cygwin1.dll aren't satisfied.
lib/build/universal.make: So I've finally got round to the infrastructure for building with -mno-cygwin...
native/Mingw: ... when the source is in this directory and (at least currently) when the TARGET_OS is Cygwin.
2008-05-27 22:14:44 +0100 / mad / revision 2550
native/all/java-launcher/java-launcher.cpp: Pasting the comment into an email, I see a squiggly green underline.
2008-05-27 18:19:27 +0100 / mad / revision 2549
lib/build/universal.make: scp appears to copy directly to the target filename it's given, so that a network outage will leave you with a truncated file. That build will fail, noisily, but perhaps our Mac builder isn't checking his build mails religiously or perhaps he was (reasonably) hoping for the next day's build to put it right. I'm sure he doesn't use Outlook / Exchange which, despite its many faults, makes it trivial (if not indeed the default) to keep a couple of weeks' worth of deleted mails, so I doubt we can find out for sure what happened to cause the Mac build of terminator-5.147.2545.dmg to be zero-sized, as reported by Stefan Janecek. Oh well, let's see if we can stop it from recurring.
2008-05-27 04:54:41 +0100 / mad / revision 2548
native/Headers/reportFatalErrorViaGui.h: Well, that wasn't the platform I expected to have a problem on, but I suppose that's meta-expected. Interestingly, Linux did report the ex.what() before terminate()ing. (Which baffled me because I hadn't spotted that the old version hadn't been overwritten.)
2008-05-27 04:25:04 +0100 / mad / revision 2547
native/all/ruby-launcher/ruby-launcher.cpp: James Lowe reports that his desktop shortcut doesn't work and was kind enough to prove that it was ruby-launcher that was silently failing. We can't tell why, but at least we might be able to after this change. Clearly, I've been spoiled by Ruby, as even linking the previous code with the console subsystem produces nothing more informative than a coredump. We need to handle the exception and, more particularly, we need to inform the user of its message via a MessageBox. Hmm... don't we have code for that somewhere?
native/all/java-launcher/java-launcher.cpp: Yes we do, including an Apple variant, whose output I haven't ever had the misfortune to see. I'll have to provoke that shortly, as ...
native/Headers/reportFatalErrorViaGui.h: ... even three lines of Objective-C++ is enough to baffle me. The message we report on Windows for Terminator failures takes a turn for what will presumably be regarded as "the worse" under this change (the part about installing a decent Java now comes after the Ctrl-C hint). No biggie, methinks.
Outputting to std::cerr doesn't seem to cause us problems when started from a Windows shortcut, even when reporting a failure before ensuring that file descriptor 2 is open but, still, I'll do that after the MessageBox, just in case.
I don't exit(1) here, though I was tempted, because the java-launcher code didn't.
2008-05-27 01:20:07 +0100 / enh / revision 2546
src/e/ptextarea/PTalcTextStyler.java: catch up with recent language developments.
2008-05-20 06:42:31 +0100 / enh / revision 2545
src/e/ptextarea/PCppIndenter.java:
src/e/ptextarea/PJavaIndenter.java:
src/e/ptextarea/PPerlIndenter.java: no (deliberate) functional change here, just moving configuration from the subclasses...
src/e/ptextarea/PCFamilyIndenter.java: ...to the parent. My real interest is in moving the other stuff up (especially the misleadingly-named and vaguely-intentioned isLabel), but this is the easy bit, and all I have time for right now.
2008-05-19 06:00:30 +0100 / enh / revision 2544
src/e/ptextarea/PNewCppIndenter.java: I already fixed the "case" bug in PCppIndenter.
2008-05-19 04:35:55 +0100 / enh / revision 2543
src/e/ptextarea/PTalcTextStyler.java: add the "assert" keyword and, since we currently treat the other built-in types as keywords, "list" and "map" too.
2008-05-19 02:59:50 +0100 / enh / revision 2542
src/e/ptextarea/PCFamilyIndenter.java:
src/e/ptextarea/PCppIndenter.java:
src/e/ptextarea/PJavaIndenter.java:
src/e/ptextarea/PPerlIndenter.java: support more intelligent indenting of wrapped sequences of operator<<.
2008-05-18 20:54:23 +0100 / mad / revision 2541
bin/ithaki.sh: Some comments, which would help anyone trying to set up their own local jessies Debian repository, or us, if we had a disaster to recover from.
2008-05-05 00:10:59 +0100 / mad / revision 2540
lib/build/universal.make: Sounds like Ubuntu's gcc 4.3 configuration tells it to link stdc++ by default but Debian's prerelease version wasn't the first gcc platform for which I've had to do this manually (though it might be for the software.jessies.org stuff). In particular, I've seen it configured to not link stdc++ when invoked via gcc but to link it when invoked via g++. This seems unlikely to hurt, at least on Linux and possibly everywhere.
2008-05-04 19:43:41 +0100 / enh / revision 2539
src/e/gui/DebugMenu.java: add a "Mouse Event Tester" alongside the "Key Event Tester", sharing much of the code (and adding some improvements).
2008-05-02 07:16:55 +0100 / enh / revision 2538
native/Linux/gnome-startup/gnome-startup.cpp: a patch from Colin Walters, fixing GCC 4.3 builds by adding missing #includes.
2008-04-18 04:04:34 +0100 / enh / revision 2537
src/e/util/HtmlToPlainTextConverter.java: add a new class I've been using for some time elsewhere.
src/e/gui/HtmlPane.java: ...and a related DTD fix I've also been using for a while.
2008-04-15 05:24:25 +0100 / enh / revision 2536
src/e/ptextarea/PCFamilyIndenter.java: differentiating "case A: return foo;" from "case A:" followed by "return foo;" on the next line was definitely my intentional, and seems to have been caused by my usual confusion of "matches" and "find".
2008-04-14 03:17:03 +0100 / enh / revision 2535
bin/annotate-patch.rb: another day, another diff format.
2008-04-14 01:04:41 +0100 / enh / revision 2534
src/e/ptextarea/FileType.java: make it easy and non-invasive to use an arbitrary indenter or styler for a given FileType.
2008-04-08 16:38:01 +0100 / pcn / revision 2533
src/e/ptextarea/PCFamilyIndenter.java: Detect left- and right-shifts in the c-family indentation code. These are usually shifts and not brackets, and so we shouldn't treat them as indenting entities. One small step on the road to nice indentation.
2008-04-02 07:27:30 +0100 / enh / revision 2532
src/e/ptextarea/PNewCppIndenter.java: a first rough draft of a new C++ indenter. Not ready for general use, but everyone's welcome to try it out.
2008-04-02 06:28:18 +0100 / enh / revision 2531
src/e/ptextarea/PTalcTextStyler.java: track not-very-recent Talc language changes. I've had these changes for ages, but want to commit them now before I accidentally mix them up with other PTextArea changes.
2008-04-02 06:25:27 +0100 / enh / revision 2530
src/e/ptextarea/PCFamilyIndenter.java:
src/e/ptextarea/PSimpleIndenter.java: move the block comment/ASCII art handling up into the superclass because it's the best bit of code in PCFamilyIndenter, and useful in indenters that don't subclass PCFamilyIndenter.
2008-03-11 06:12:25 +0000 / mad / revision 2529
bin/invoke-java.rb: Chris correctly diagnoses that my leaving of this pollution in the environment means that checkintool doesn't work from Terminator or Evergreen on Windows. Oops.
2008-02-28 04:16:47 +0000 / mad / revision 2528
lib/build/universal.make: Chris's Sparc Solaris scp produces this output when we should upload a new pkg file:
scp: warning: stat: SJOevergreen_5.1.2527_sun4u.pkg (src): no such file (server msg: 'No such file')
The unfortunate use of "warning: " in that *error* message matches a regular expression in filter-build-output.rb, causing it to reason "looks like a Java warning - better output that and the preceding commands". We're already paying for an ssh connection to do a mkdir -p, so it's not much hassle to avoid the error. Or warning.
2008-02-27 04:45:50 +0000 / enh / revision 2527
src/e/gui/AboutBox.java:
src/e/gui/JFrameUtilities.java:
src/e/gui/MainFrame.java: mad points out that an old change of mine re-introduced a "VM doesn't exit" bug. Fix JFrameUtilities.makeSimpleWindow to use our major idiom for windows where we don't want to do anything clever (we just want them to go away when closed, however they're closed) and don't want to make assumptions about how they'll be used (which you're doing when you use DISPOSE_ON_CLOSE or EXIT_ON_CLOSE) because we hand the resulting JFrame out to arbitrary application code to do with as it sees fit. Also document in MainFrame why this is the best idiom for making windows dispose themselves (assuming you don't have anything more complicated to do).
2008-02-27 04:40:43 +0000 / enh / revision 2526
src/e/gui/AboutBox.java: some old changes I had lying around; defer to Log's idea of the application name rather than keeping a separate copy.
2008-02-26 00:25:12 +0000 / car / revision 2525
www/downloads.html: Make available Solaris sun4u packages rolled on Solaris 10.
2008-02-25 10:20:45 +0000 / mad / revision 2524
lib/build/installer.wxs: Braden Anderson has a repeatable problem with Terminator trying to install itself into C:\CFusionMX7\bin. A dump of his registry revealed that he had stub entries for the Cygwin registry keys under HKCU. A look in my registry revealed that so did I - a vestige of a per-user installation. A look at msiexec /l* install.log /i terminator.msi showed that the CYGWIN_HKCU_BIN property was being set even though CYGWIN_HKCU wasn't. It seems like it was just searching for the first "bin" directory that came to hand. Looking at the same log generated on my system showed that mine was setting CYGWIN_HKCU_BIN too, fortunately (or otherwise) to C:\cygwin\bin.
Fix that by not using "[property]" in Path attributes. Instead we'll have to duplicate the parent searches. I tried again to use DirectorySearchRef but you know you're on a hiding to nothing when the most useful of the top ten Google results you turn up is one of your own check-in comments berating the lack of examples and impenetrability of this feature.
We're now using the CYGWIN_HKLM_BIN property in only two places. One is in a Condition element, where it was added under r1705 with this check-in comment [
The difficult part was finding that this perturbed evaluation order of the CYGWIN and RUBYW properties such that, even though the RUBYW property uses the CYGWIN property, it was now evaluated first - and thus didn't work. What a half-baked little language.
]. As well as exhibiting even less understanding of the Windows installer structure than I now have, I can't see how that can still be true after the change I'm making here.
The other usage is in setting the working directory for the shortcut. That's something we could avoid the need for if I write the cygwin-launcher.exe I was mulling the other day (under the auspices of the "Terminator Here" RFE). Ah, but then I'd want to pass the Cygwin bin directory to the cygwin-launcher, so I won't be able to get rid of this duplication even then. Oh well.
This installs OK and passes Orca validation - and doesn't assign properties that it shouldn't. Whether it will work for Braden is another matter. I'm not sure it will because his installer log says it bound C:\CFusionMX7\bin to both CYGWIN_HKCU_BIN *and* CYGWIN_HKLM_BIN, though it bound CYGWIN_HKLM and RUBYW_HKLM correctly. Previously it was alleging a successful installation but starting the shortcut in the wrong directory.
2008-02-24 00:07:45 +0000 / enh / revision 2523
src/e/util/IndentationGuesser.java: comment a deficiency of the current implementation.
2008-02-23 23:53:42 +0000 / enh / revision 2522
src/e/ptextarea/PTextAreaSpellingChecker.java: convert this function to the usual early-return style to avoid an extra level of indentation for the majority of the method. Stop assuming that code-specific fixes (such as camelCase or underscored_identifiers) make sense in plain text. Work around a bug whereby we sometimes accidentally suggest "correcting" a word via the identity transformation, which doesn't get us anywhere. Add an upper bound of five items to the number of suggestions we'll show, because aspell(1) will happily provide 20-odd really unlikely suggestions in many cases. (We didn't have as much trouble with ispell(1), and this is one thing that's made this code significantly less useful since we switched.) Additionally, if we've offered camelCase and underscored_identifier corrections, give up. They're almost certainly what the user wants, and if they're not, the chances of any of our later guesses being right are pretty slim. Finally, move the "Accept" action back to the bottom where it belongs (on the assumption that you typically accept a bunch of new vocabulary at the beginning of a project but will be conservative thereafter).
2008-02-23 16:41:13 +0000 / mad / revision 2521
native/all/ruby-launcher/ruby-launcher.cpp: Leave an analog of CHERE_INVOKING in the environment when the user double clicks on one of our Windows shortcuts...
bin/invoke-java.rb: ... so we can reinstate the desired working directory - the user's home directory, like it would be on any other platform - before running any application-specific code, like Terminator's code for deciding which working directory to open a shell in.
ruby-launcher was motivated by our problems with Windows desktop shortcuts and only seems to be used there currently.
Other parts of bin/evergreen and bin/terminator depend on ENV["HOME"]. I'm not sure where Ruby's getting that variable from. Cygwin's /etc/profile has some complicated code for setting it but that won't have been invoked by the time we're implicitly sampling it here (by passing no argument to chdir).
2008-02-23 01:00:17 +0000 / mad / revision 2520
bin/invoke-java.rb: Gain the code from Evergreen to stop Cygwin's /etc/profile from scuppering the effect of Terminator's --working-directory parameter. We should set this variable here so that it takes effect when the user starts Terminator from the command line as well as when it's started from the desktop shortcut.
There's another piece to this puzzle - changing to the user's home directory when starting applications from the desktop shortcut. I'm not sure what's the best way to do that. While I prevaricate, double-clicking on Terminator in Windows will leave you in /usr/bin. At least that's obvious from the prompt. I've gotta dash, but checking in is a convenient way of getting the code from my MacBook to my Windows box - and will force me to finish this off rather than letting it slide.
2008-02-23 00:42:44 +0000 / mad / revision 2519
bin/invoke-java.rb: Avoid using single quotes when there's no reason to, to avoid the appearance that there might be something magic going on, particularly when using features as obscure as an argument hash (to Net::Telnet.new) and the Win32API interface. I've recently seen someone's first Ruby script and they're falling into all the bad old Perl practices that make the code write-only.
2008-02-22 07:11:27 +0000 / mad / revision 2518
www/cygwin-setup.html: This looks like quite a selective list, so perhaps I shouldn't be adding something of such minority interest to it, but it might make our Terminator support job easier if everyone who's religiously followed our suggestions has already installed infocmp.
2008-02-22 05:57:02 +0000 / enh / revision 2517
native/Headers/JniString.h: the fact that this was a class has never been useful, and it's made calling code unnecessarily verbose. Life is easier if it's just a function. (I also wonder whether segfaulting is the most useful behavior we can manage for a null Java string, but I'll leave that as it is for now.)
2008-02-19 17:45:09 +0000 / mad / revision 2516
src/e/ptextarea/PTextAreaSpellingChecker.java: Stephen Parker suggests a coping strategy for the spelling checker returning too many suggestions to fit on the screen. Elliott blessed the idea and having the pre-determined items at the top sounds like a good UI decision to me.
2008-02-17 04:46:25 +0000 / enh / revision 2515
src/e/ptextarea/PKeyHandler.java:
src/e/ptextarea/PTextArea.java: add support for Terminator-like hiding of the mouse when the user is typing.
2008-02-17 02:21:19 +0000 / enh / revision 2514
src/e/ptextarea/PTextArea.java: every time I see "getCoordinates", I'm sure it's the source of a bug or two, and disappointed that it doesn't appear to be what it sounds like, or what I'm looking for. Add a warning, if nothing else, and add getLogicalCoordinates, which is the method I'm usually looking for.
2008-02-16 20:56:08 +0000 / enh / revision 2513
src/e/gui/GnomeStockIcon.java: fix a broken link in the documentation.
2008-02-16 20:44:35 +0000 / enh / revision 2512
src/e/ptextarea/FileType.java: if we're to support user-defined FileTypes without requiring that users edit and rebuild this class, FileType can't be an enum. Rewrite it as an enum-like class.
2008-02-13 04:42:49 +0000 / enh / revision 2511
src/e/ptextarea/PPythonTextStyler.java: Python 2.5 adds the keywords "as" and "with".
2008-02-12 04:23:59 +0000 / enh / revision 2510
src/e/ptextarea/FileType.java: the new Python indenter has been working well for me so far, so let's make it the default.
2008-02-12 00:39:17 +0000 / mad / revision 2509
src/e/gui/AboutBox.java: It was probably the subject line than stuck in Stephen's eye but I've advocated "problem report" so I may as well use it in the source too.
src/e/gui/HelpMenu.java:
src/e/util/Log.java: And in the caller and callee.
2008-02-12 00:31:35 +0000 / mad / revision 2508
lib/DEBIAN-control-Build-Depends.txt:
lib/build/DEBIAN-control-Build-Depends.txt: Tidy away the other file that lives in salma-hayek/lib/.
lib/build/package-for-distribution.rb: And the one reference to it.
Mainly, though, I just want the change log regenerated after I added an executable copy of the pre-revprop-change.tmpl hook as pre-revprop-change and editing an earlier comment to remove email addresses.
2008-02-12 00:17:48 +0000 / mad / revision 2507
src/e/gui/HelpMenu.java:
www/bug-report.html:
www/navigation.html: That's twice in one day that I've heard mild-mannered criticism of pejorative terms for what gcc calls "problem reports" or PRs. "Bug" still seems like the right term to use in "Bug database", as it does in the advice on writing a good bug report. Many of the mails we get wouldn't end up in our hypothetical bug database, yet it would be incorrect to say that the reporting user doesn't have a problem, even if a substantial part of the problem is, as it often is, that they haven't thought to look at the FAQ.
2008-02-12 00:07:41 +0000 / mad / revision 2506
src/e/ptextarea/PCFamilyIndenter.java: I was mildly surprised that this commenting style didn't also trip up the newline inserter, but it doesn't seem to. Looks harmless and is clearly useful to some.
-----Original Message-----
From: Stephen Parker
Sent: Monday, February 11, 2008 15:56
Subject: Evergreen bug (1265/2505/1.6.0_03-b05/Windows Vista 6.0/x86 x2)
Not really a bug, but our coding standard requires boxed comments, like this:
/*
*****************************************************************************
* Function:
* Purpose:
* Returns: Nothing.
* Pre-condition: None.
* Post-condition: None.
* Notes:
*****************************************************************************
*/
which the current indentation rules make a nightmare to work with
(spaces get added after "/^ *" to give "^ * ***"etc. when cutting and
pasting).
This seems to fix it.
stephen parker (at home).
2008-02-11 19:56:58 +0000 / mad / revision 2505
lib/build/installer.wxs: When we move away from Subversion, I expect I'll find some nice things to say about it. I suppose that it did, at least, leave me with a file that shouldn't have been there, warning me that it hadn't bothered to merge yesterday's change with today's rename.
2008-02-11 19:46:14 +0000 / mad / revision 2504
lib/installer.wxs:
lib/build/installer.wxs: This clearly belongs in the build/ sub-directory.
lib/build/universal.make: From where we'll copy it under .generated/.
2008-02-11 06:31:22 +0000 / enh / revision 2503
src/e/ptextarea/PIndenter.java: extract another sliver of functionality so subclasses can get the indentation part of an arbitrary string.
src/e/ptextarea/PNewlineInserter.java: Vim's indentation code is written as if Vim itself has already copied the previous line's indentation. This does seem to make for a fairly comfortable style, shouldn't affect our existing PIndenter subclasses, and makes it easier to translate a Vim "indent file".
src/e/ptextarea/PPythonIndenter.java: rewrite the Python indenter in the style of Vim's Python indenter. There's some ugly duplication here, but that gives strong clues as to the kind of facilities we might want to provide. The main functionality not mentioned here would be the searchpair function.
2008-02-11 05:05:48 +0000 / mad / revision 2502
www/index.html: We don't compile with WiX v3. It's hard to know whether it would be a moving target while it's still in beta. The documentation doesn't seem to be there.
One problem that I encountered while trying WiX 3 was that my .NET framework wasn't up-to-date enough. That would have been no biggie except for the way Cygwin causes exec(2) to fail with silent "success" when an executable which requires an absent DLL is run. Perhaps we should run candle.exe via ruby-launcher, which already makes the necessary SetErrorMode invocation. It would be a perversion of the name but it might just do the trick. Sadly, of course, I can no longer easily test this. Perhaps I should try installing WiX 3 at work (but not over my WiX 2 installation) and see if it fails the same way there.
I would guess that we don't need MergeMod.dll since we stopped building salma-hayek as a WiX module. Maybe I should find out for sure but this machine is slow and Windows remains distressingly opaque, so it's probably easier to wait until someone needs to install WiX on a Windows box where it isn't already installed.
2008-02-11 04:50:47 +0000 / mad / revision 2501
lib/installer.wxs: WiX v3 won't even sniff at this file without a schema change. It doesn't compile it even then but WiX v2 doesn't seem to mind the changed schema, so this looks like a safe step in the right direction.
2008-02-10 22:08:02 +0000 / enh / revision 2500
src/e/ptextarea/PNewlineInserter.java: we need to test canOnlyAutoIndent before looking at fixIndentation if it's to have any effect.
2008-02-10 21:59:49 +0000 / enh / revision 2499
src/e/ptextarea/PNewlineInserter.java: note a deficiency.
2008-02-10 21:57:26 +0000 / enh / revision 2498
src/e/ptextarea/PNewlineInserter.java: further promotion of the hack; the previous revision implicitly assumed that PCopyingIndenter is the only indenter whose canOnlyAutoIndent returns true.
2008-02-10 21:42:52 +0000 / enh / revision 2497
src/e/ptextarea/PCopyingIndenter.java:
src/e/ptextarea/PIndenter.java:
src/e/ptextarea/PNewlineInserter.java: promote the midweek emergency hack to more permanent status, even though I'm not really sure where we ought to be going with all this. I don't know whether the fundamental design is broken, or the individual indenters are just too stupid.
2008-02-10 21:21:47 +0000 / enh / revision 2496
src/e/ptextarea/PIndenter.java: clarify a comment that still misses out the interesting part (which I don't know the answer to, and the lack of unit tests for the indentation code makes it hard to determine experimentally).
2008-02-10 20:44:27 +0000 / enh / revision 2495
lib/build/package-for-distribution.rb: avoid a likely dpkg-deb(1) failure when run with a umask different to the usual 0022, and attempt to protect the other platforms too.
2008-02-10 20:20:13 +0000 / mad / revision 2494
lib/build/parent.make: May as well support the "install" target here as it was useful to me just now.
2008-02-10 20:09:31 +0000 / mad / revision 2493
lib/build/universal.make: Now I've articulated my bad feeling about having one .PHONY target depend on another, in the email thread about my previous check-in, the principle is clearer in my mind. In particular, it's clear that the very line I checked-in contains another instance of the mistake that I avoided by not making "install" depend on "installer".
Replace "build" on the right-hand side of rule colons with $(BUILD_TARGETS). Instead of having "build" depend on "native", have it depend on the same targets which, perhaps disingenuously, aren't called $(NATIVE_TARGETS) but $(ALL_PER_DIRECTORY_TARGETS).
Move the variable assignments that depend on ALL_PER_DIRECTORY_TARGETS before the variables/rules separator. We can't correctly evaluate ALL_PER_DIRECTORY_TARGETS until we've included per-directory.make (multiple times), so add a protection mechanism to fail if we try (rather than taking make's default of incorrectly evaluating it).
Move the per-directory code up almost to the start of the rules section. We weren't obeying the comment where I said "let's keep this last". I think I either meant or should have meant that we should just keep it after the variables section. Indeed, it makes most sense to keep it at the variables/rules boundary. That minimizes the amount of code which needs to cope with variables defined after rules.
component-definitions.wxi depended on $(ALL_PER_DIRECTORY_TARGETS). At some point, it also came to depend on $(MACHINE_PROJECT_NAME).app, which had also come to depend on $(ALL_PER_DIRECTORY_TARGETS). So the first dependency was superfluous. Moreover, $(MACHINE_PROJECT_NAME).app had come to depend on "build" and "build" depended on "native" which depended on $(ALL_PER_DIRECTORY_TARGETS). So the second dependency had become obsolete too. Well, that's my belief, though I haven't even given this a once-over on Windows yet.
2008-02-10 19:08:46 +0000 / mad / revision 2492
lib/build/universal.make: One might reasonably use the nightly-build.rb script with the "install" or "installer" targets instead of native-dist. Extend the convenience hack that says "yeah, we know you can't upload a binary distribution for salma-hayek but, if you're asking for that, you'd probably like it built". On the one hand, this would be better in the nightly-build.rb script but, on the other, it is convenient to be able to build without remembering a special case for salma-hayek.
Given that, these days, we know when the Java definitely doesn't need building (and we've always known when the C++ doesn't need building), we could have the other projects build salma-hayek. We've got code for building multiple, independent C++ projects from one invocation of make, so how hard could extending that to Java be? It looks significantly simpler, mind, to get simple.make to recurse into salma-hayek first. But then we'd still want this hack, or something functionally equivalent.
2008-02-09 05:22:27 +0000 / enh / revision 2491
src/e/ptextarea/PKeyHandler.java: disable some old debugging code (but keep it compiling, to avoid bit-rot).
2008-02-09 04:42:49 +0000 / enh / revision 2490
src/e/ptextarea/PAbstractLanguageStyler.java: don't assume that multi-line comments are terminated with two-character sequence.
2008-02-08 07:04:09 +0000 / enh / revision 2489
src/e/ptextarea/PNewlineInserter.java: this hack makes PCopyingIndenter work as intended...
src/e/ptextarea/FileType.java: ...so Python can at least have some minimal auto-indentation. This is no longer unusable, but it's still pretty weak.
2008-02-08 06:52:12 +0000 / enh / revision 2488
src/e/ptextarea/FileType.java: PPythonIndenter is bad enough that no auto-indent is possibly less annoying for now. (PCopyingIndenter doesn't work, either, because it messes up the indentation of the line you're leaving when you hit return, rather than only affecting the indentation of the new line. Which given the simplicity of PCopyingIndenter suggests that the brokenness is quite fundamental.)
2008-02-07 23:05:53 +0000 / mad / revision 2487
src/e/ptextarea/PCFamilyIndenter.java: Stephen Parker supplies a patch to remedy an inconsistency between the treatment of /* and /** block comments. He'd like them to behave the same way but what really motivates me to fix it (aside from getting a patch - a rare treat!) is the inconsistency between this code and that in PNewlineInserter. Type /* and hit Enter - you'd get a " * " indent on the next line. Type colon or paste or Ctrl-I or hit Enter again and the asterisk would be whipped away. Inconsistency isn't sensible, even though either approach would be.
2008-02-06 18:50:30 +0000 / mad / revision 2486
src/e/util/GuiUtilities.java: Reverse the accidental reversal made yesterday evening, so that unshifted Alt-N gets you a new window in Terminator and unshifted Ctrl-S saves in Evergreen. Done on one line, against my leaning, to indicate that the method's just a convenience and not very interesting. I'll do new nightlies presently...
2008-02-06 05:57:23 +0000 / enh / revision 2485
src/e/util/GuiUtilities.java: expose the underlying implementation of makeKeyStroke for callers that actually need the more general form. Note especially that the hack to or-in InputEvent.SHIFT_MASK has moved up into the convenience method, so the underlying method lets its callers do anything they please.
2008-01-25 16:27:55 +0000 / mad / revision 2484
www/cygwin-problems.html: "But Ruby 1.9 was released at Christmas"... not for Windows, not in its "recommended" one-click-installer form. Write up my reasons for not doing anything (apart from helping via email) with Nikos Tzanos's troubles caused by multiple cygwin1.dll copies installed by other applications.
2008-01-18 18:10:36 +0000 / enh / revision 2483
src/e/tools/FatBits.java: FatBits has changed in 2008, so update the copyright date. Also give ourselves some minimal credit.
2008-01-18 00:54:01 +0000 / enh / revision 2482
src/e/util/Preferences.java: bring the code for "Preferences..." menu items into this class. It's slightly more complicated, as usual for library code, but it lets us remove near duplicates from the applications.
src/e/tools/FatBits.java: convert FatBits to use the new code.
2008-01-17 22:11:00 +0000 / enh / revision 2481
src/e/gui/EStatusBar.java: make our Mac OS status bars look more like native Mac OS status bars by using the right font.
2007-12-22 22:30:54 +0000 / enh / revision 2480
src/e/gui/DebugMenu.java:
src/e/gui/JFrameUtilities.java: MainFrame, as its name partially implies, is only really suitable for uses where it's the application's main frame, and its lifetime is tied to the application's lifetime. These two callers don't want MainFrame's dirty tricks.
2007-12-22 18:22:23 +0000 / enh / revision 2479
src/e/ptextarea/PTextAreaRenderer.java: I introduced a mistake a long time ago (the original, correct, code was from Ed) that I didn't notice until after Phil's watermark changes and seeing Martin with a workspace full of read-only files. This change just moves the "if opaque" down so that instead of guarding all the background-painting code (gray bits and white bits) it just guards the white bits. This looks less like a bug, in that having a watermark doesn't cause other decoration to disappear, but the effect still isn't particularly pleasing. My temptation is to pull the watermark code out of Evergreen, change it to use an ARGB image, and have PTextArea render it on top of everything else, rather than beneath everything else. My concerns are: (a) Phil's whole reason for his recent changes was performance with a particular back-end, and I don't know how it performs rendering ARGB images, and (b) PTextArea's API would get even bigger (though only by a method or two; the implementation could still live elsewhere, and be called from PTextAreaRenderer, whose size and complexity matters less).
2007-12-19 05:18:01 +0000 / enh / revision 2478
src/e/util/Preferences.java: it would be more convenient for all three current users of this class (and in keeping with the intended usage) if the subclass were responsible for knowing where its on-disk representation lives.
src/e/tools/FatBits.java: track API change.
2007-12-19 05:03:34 +0000 / enh / revision 2477
src/e/util/Preferences.java: testing with a LAF that actually draws combo boxes correctly (unlike the GTK+ LAF), it's obvious that I need to manually separate the two combo boxes.
2007-12-19 04:56:17 +0000 / enh / revision 2476
src/e/util/Preferences.java: fix FontHelper to provide a UI that lets you choose a font's size as well as its family.
2007-12-17 03:18:51 +0000 / enh / revision 2475
src/e/util/Preferences.java: for now, let's not worry about fully built-in support for color schemes; a couple of hooks so Terminator can continue to do what it currently does will suffice.
2007-12-17 02:35:58 +0000 / enh / revision 2474
src/e/util/Preferences.java: support for arbitrary preference types. Use "get" to get the value, and "setHelperForClass" to supply your own PreferencesHelper subclass for the given type. "PreferencesHelper.addRow" gains a parameter so that no external access to our descriptions is needed (and some duplication can be removed from the standard implementations too). Unrelatedly (other than that these changes are also necessary to switch Terminator over to using this class) "showPreferencesDialog" now takes a Frame rather than unnecessarily insisting on a JFrame, and we're now more robust in face of unexpected keys when reading preferences.
2007-12-03 06:35:37 +0000 / enh / revision 2473
src/e/util/Preferences.java: we're stuck with Terminator's existing preferences being saved as X11-like resources, but want to move to XML. So let's ensure that the new code can read X11 resources or XML, but only ever writes XML. (This isn't just the old XML code put back; this is brand new code that uses a much more sensible structure.)
src/e/util/XmlUtilities.java: make it possible to read XML from a String, so we don't have to read the file in twice (once to check whether it's XML or not, and again to parse the XML).
2007-12-03 00:30:55 +0000 / enh / revision 2472
src/e/ptextarea/FileType.java: better support for Emacs-like modelines. This still only looks for a clue as to the major mode (as is right and proper for the FileType class; fuller parsing of modelines would belong elsewhere).
2007-11-27 21:23:27 +0000 / mad / revision 2471
src/e/ptextarea/FileType.java: Clarify the situation regarding emacs mode strings by removing a reference to a no-longer extant set of methods and other cosmetic improvements. Really, though, I'm just doing this to point Chris in the right direction, should he want to generalize this to cover the case he's currently interested in.
2007-11-27 05:10:33 +0000 / enh / revision 2470
src/e/gui/HelpMenu.java: talking to simonj made me realize it's rather mad that the link to the main page is buried away and not right next to the change log and FAQ links.
2007-11-26 06:38:47 +0000 / enh / revision 2469
src/e/util/Preferences.java: switch to using X11-style "resources" files instead of XML for persistent storage.
src/e/tools/FatBits.java: fix the filename accordingly.
2007-11-26 05:07:36 +0000 / enh / revision 2468
src/e/util/Preferences.java: a general-purpose extended subset of Terminator's preferences mechanism, intended for use in all projects (including replacing the current implementation in Terminator). Note that this code uses a trivial XML format where Terminator currently uses something more like X11 resources. I think X11 resources are better. They're more easily read and edited by humans, and they're what we're already using in one of our applications. I can't really see anything we gain by using XML here, even if we used a fancier schema, such as something more like Mac OS' plists. The only obvious advantage of XML is that it's better for supporting sequences and maps, but I don't think this is the preferences mechanism for either of those things anyway. Something like the Mailer "accounts manager" can and should (and does) use XML, but the general preferences? Probably not.
src/e/tools/FatBits.java: as a demonstration, here's FatBits modified to have persistent preferences.
2007-11-24 20:51:24 +0000 / enh / revision 2467
src/e/gui/GnomeStockIcon.java: support a wider range of GTK+ mnemonics for buttons.
src/e/gui/AboutBox.java: remove a couple of special cases now handled more generally.
2007-11-24 00:15:20 +0000 / enh / revision 2466
src/e/ptextarea/PStyle.java:
src/e/ptextarea/PTextArea.java: use UIManager properties more widely (specifically, for the background color), and consistently use the EditorPane defaults rather than the TextArea ones. There doesn't appear to be anything to choose between EditorPane and TextPane, but TextArea – judging by the default gray background on Linux – may be intended as something else (or that may just be another Sun LAF bug).
2007-11-23 05:19:35 +0000 / enh / revision 2465
src/e/ptextarea/PKeyHandler.java: move "hungry delete" (delete back to first non-whitespace) onto control-backspace, and add delete back to beginning of line on alt-backspace. This makes all the functionality available in all PTextAreas and improves the out-of-box experience for Python programmers especially, at the cost of "hungry delete" no longer being the default, which has made editing seem slow and cumbersome in the time I've been building up to this. Hopefully when all my PTextAreas offer it, I'll be able to get used to using control-backspace.
src/e/util/Parameters.java: this class is no longer needed outside Evergreen.
2007-11-23 05:07:27 +0000 / enh / revision 2464
bin/nightly-build.rb: improve support for building Mercurial projects, and add support for Bazaar projects (rare though they may be).
2007-11-23 04:59:59 +0000 / enh / revision 2463
src/e/demo/PTextAreaDemo.java: my previous change to this code broke it (by commenting out the loop's variant); it had been done in the name of appeasing GCJ rather than utility, and I hadn't tested that the result worked, just that it compiled. So fix it by removing all the cruft.
2007-11-23 02:44:44 +0000 / enh / revision 2462
src/e/util/IndentationGuesser.java: we shouldn't be retrieving the fallback indentation from a deprecated source. Pass it in explicitly instead.
src/e/demo/PTextAreaDemo.java:
src/e/testing/PIndenterTester.java: fix callers, one of which also has unrelated tidying.
2007-11-23 01:16:17 +0000 / enh / revision 2461
src/e/gui/GnomeStockIcon.java: add a couple more stock icons.
2007-11-21 23:47:26 +0000 / enh / revision 2460
src/e/util/XmlUtilities.java: collect some of the magic required for almost-convenient XML handling in Java.
2007-11-21 22:51:56 +0000 / enh / revision 2459
src/e/util/StringUtilities.java: gain a handy utility from Evergreen.
2007-11-21 22:36:33 +0000 / enh / revision 2458
src/e/ptextarea/PKeyHandler.java: I'm not sure I've ever used this functionality, and it stands in the way of letting shift-tab in Mailer move focus back to the subject line, which I do find myself trying to use on a regular basis.
2007-11-19 05:54:36 +0000 / enh / revision 2457
src/e/ptextarea/PPythonIndenter.java:
src/e/ptextarea/FileType.java: a new Python auto-indenter.
2007-11-19 05:46:14 +0000 / enh / revision 2456
src/e/ptextarea/PGenericIndenter.java: if the indent pattern can be missing, there's no reason why the unindent pattern can't be missing too. I have no present use for this, but thought I might.
2007-11-18 20:33:16 +0000 / mad / revision 2455
bin/ithaki.sh: Actually, that whole comment section was overtaken by Debian shipping etch a long time ago. It's a long time since we upgraded ithaki.
2007-11-18 20:31:10 +0000 / mad / revision 2454
bin/ithaki.sh: wide's unreachable today, reminding me that, now I have a 64 bit build server at work, there's no reason to continue inflicting this build on Eric, although I don't remember him ever noticing.
2007-11-16 06:50:12 +0000 / enh / revision 2453
src/e/gui/HtmlPane.java: JTextPane doesn't store the actual HTML it was given, and attempts to reconstruct the HTML from its internal model. Given that my most likely use of this is to investigate Swing HTML parsing bugs, I'd much rather see the actual HTML that's upset it. (It's possible I might want to see both, but experience so far suggests that the problem's usually pretty obvious and the original HTML is more useful.)
2007-11-16 05:17:39 +0000 / enh / revision 2452
src/e/gui/HtmlPane.java: any HTML view should have a "View Source" pop-up menu item.
2007-11-14 04:12:32 +0000 / enh / revision 2451
src/e/gui/DialogFocusRedirector.java:
src/e/gui/EMenuBar.java:
src/e/gui/ETable.java:
src/e/ptextarea/PMouseHandler.java: don't use Class.cast unless it's actually necessary.
2007-11-14 03:21:10 +0000 / enh / revision 2450
src/e/gui/ETable.java:
src/e/gui/JHyperlinkButton.java:
src/e/gui/SearchField.java:
src/e/util/GuiUtilities.java: Ed points out that the current Mac OS 10.4 "os.version" is "10.4.10".
2007-11-13 18:44:43 +0000 / enh / revision 2449
src/e/gui/ETable.java: don't bother with a work-around on Mac OS 10.5, where the bug is fixed; prepare editors as we prepare renderers, for more consistent appearance; make use of Mac OS 10.5's ability to render smaller checkboxes.
2007-11-13 17:58:57 +0000 / enh / revision 2448
src/e/gui/SearchField.java: on Mac OS 10.5, Apple does all the work of making a convincingly native search field for us, so defer to them for a better experience.
2007-11-13 17:55:22 +0000 / enh / revision 2447
src/e/gui/JHyperlinkButton.java: on Mac OS 10.5, we need to setBorderPainted(false) to turn off the default button border; just setting the border to null is insufficient. Also add a special case for Mac OS' standard "help" buttons, which are now available in Java.
2007-11-13 17:50:15 +0000 / enh / revision 2446
src/e/util/GuiUtilities.java: on Mac OS 10.5, there's a new simpler way to set a window's alpha, and the old hack no longer works.
2007-11-13 05:33:47 +0000 / enh / revision 2445
lib/build/universal.make: to build on Mac OS 10.5 with the 10.4 SDK, we need an extra switch. When we drop support for 10.4, we can either remove this or update it to 10.5; the latter might save similar head-scratching come 10.6.
2007-11-12 19:02:54 +0000 / mad / revision 2444
lib/build/simple.make:
lib/build/universal.make: The clarity's worth more than compatible with make versions that don't support $(lastword). I see we depend on $(firstword) in the version checking code, which is more dubious.
2007-11-12 06:23:23 +0000 / mad / revision 2443
simple.make: The more I use it, the more I agree with Linus about Subversion.
2007-11-12 06:21:26 +0000 / mad / revision 2442
simple.make: Nope, it's going to make me do it in three stages.
2007-11-12 06:20:12 +0000 / mad / revision 2441
simple.make: Move simple.make to lib/build/ too and replace it with a symlink to the new location. I could replace it with a regular make file but then that would have to temporarily gain the make version check and a third copy of the salma-hayek locator code. That's too much pain for a temporary crutch.
lib/build/simple.make: The disadvantage of a symlink is that we need a temporary hack in the salma-hayek locator to cope with being included through a different path. Update the instructions too.
www/index.html: And the example error messages.
lib/build/make-new-project.sh: New projects should use the new location.
Makefile: Set a good example by using the new location ourselves.
Subversion appears unwilling to let me replace a regular file with a symlink in one check-in. Let's see if it will let me do it in two.
2007-11-12 05:44:35 +0000 / mad / revision 2440
simple.make: Refresh this slightly different copy of the salma-hayek locator code from universal.make.
2007-11-12 05:41:09 +0000 / mad / revision 2439
lib/build/universal.make: Lose the make version check to where it stands a chance of being executed by older makes. Lose a small piece of the make manual - I don't know why that particular wrinkle got a mention.
simple.make: Gain the make version check. Modernize the adjacent comments (whose rust I noticed while deciding where to paste).
2007-11-12 05:20:43 +0000 / mad / revision 2438
lib/build/universal.make: I was half-expecting to break Mercurial-based builds or Mac builds or builds of a project that I don't have checked-out but there was no excuse for checking in before testing that salma-hayek still built.
Try to say fewer things per line. We do need one := - put it in the right place and give it a comment.
2007-11-12 04:48:43 +0000 / mad / revision 2437
More root directory clean-ups.
java.make: This looks like a remnant from before the days when universal.make did a good job with Java.
parent.make:
lib/build/parent.make: I don't think anyone but me uses this makefile, so no-one will mind it moving.
per-directory.make:
lib/build/per-directory.make: This makefile has always been internal-use-only.
universal.make:
lib/build/universal.make: This makefile used to be used externally. I don't think it is any longer though it does still work when used like that. It's very verbose about what it's doing, so any users who haven't switched to simple.make probably want to.
lib/build/make-new-project.sh: Hmm, follow that advice here, rather than tracking universal.make's move.
lib/build/package-for-distribution.rb: But this invocation is used internally for the build and wants the verbosity.
simple.make: Leave this makefile where it is for the moment, for the sake of all the other projects that are using it.
2007-11-12 04:31:03 +0000 / mad / revision 2436
escaping.rb:
patch-to-html-email.rb: Move two scripts that aren't really intended for stand-alone use to...
lib/build/escaping.rb:
lib/build/patch-to-html-email.rb: ... somewhere hidden away. They aren't used in building but in post-commit and other patch mailing but at least lib/build/ isn't as in your face.
bin/mailpatch.rb: Adapt and modernize the one user-facing script that uses these directly, although I've nothing against putting lib/build/ on the path for the "require". (Shame that it's called something as obtuse as $:.)
incoming:
post-commit: Do a similar job on both versions of the post-commit script. This removes the subtle repetition of the assumption that the hook script is in the root directory of salma-hayek.
lib/build/svn-log-to-html.rb: This post-build script was already more modern.
2007-11-10 19:05:02 +0000 / enh / revision 2435
src/e/ptextarea/PEmailTextStyler.java: document one other problem I found mentioned in my mails on the subject.
2007-11-10 18:56:32 +0000 / enh / revision 2434
src/e/ptextarea/PEmailTextStyler.java: fix parochialisms (and then find that almost none of the comment was true any longer), remove a dead field, order fields into the traditional order, stop considering ":" and "|" to be quoting characters because I haven't seen anyone use those since 1997 and they do cause quoted Ruby source to be rather too colorful, remove STRING and KEYWORD as suitable quoting styles (COMMENT is okay for now), disable the signature detection until it's improved, and comment various other problems.
2007-11-07 17:05:56 +0000 / mad / revision 2433
bin/invoke-java.rb: Missed one, due to having other, long-standing but dubious unchecked-in changes.
2007-11-07 17:05:17 +0000 / mad / revision 2432
native/all/setpgid/setpgid.cpp:
native/all/setpgid/setsid.cpp: Fix my renaming omission. It's probably better to do this in a separate check-in because this one has no changes, despite looking like it's changing the whole file. And Subversion, of course, doesn't let me do this whole process atomically anyway.
2007-11-07 17:03:33 +0000 / mad / revision 2431
native/all/setpgid/setsid.cpp: Adapt the hard-coded argv[0] in the usage. I've forgotten to rename the source file, haven't I?
src/e/util/ProcessUtilities.java: Adapt to the new name for "setsid". Spelling "mistakes" are probably preferable to hiding grep matches with dubious use of CamelCase like "setSid".
universal.make: Fix an obsolete example. I wonder what version of make is shipped with Mac OS 10.5.
2007-11-07 16:54:07 +0000 / mad / revision 2430
native/all/setsid: Subversion won't let scm non-recursively commit a directory deletion.
This check-in brought to you by EDITOR=vim svn commit native/all/setsid.
2007-11-07 16:47:57 +0000 / mad / revision 2429
native/all/setsid: Not for the first time, this program confuses me. It doesn't call setsid and, according to the history, it never has.
native/all/setpgid: It calls setpgid instead. setsid is not a useless function - we use it in Terminator. The util-linux setsid that we're hiding actually does call setsid. We shouldn't pretend to be what we're not.
native/all/setsid/setsid.cpp: This needs replacing too, but Subversion won't let me do that until I've committed this. Sorry.
2007-11-04 21:32:21 +0000 / mad / revision 2428
bin/find-jdk-root.rb: Fix my previous change to package-for-distribution.rb to work for Linux. I like the idea of having a Pathname class that has a convenient way of constructing directory components without bothering about File.SEPARATOR but using operator+ for it was a crippling mistake that's led to Elliott removing calls to it elsewhere. The use of operator<< with arrays was grim but still a better choice.
2007-11-04 21:15:44 +0000 / mad / revision 2427
lib/build/package-for-distribution.rb: I can build happily on this Windows laptop but trying to make an installer failed with a rather cryptic error (generated by us) because Kernel.system failed to find jar. We use a script to select the JDK elsewhere during the build process, so it makes sense to use the consistent version of jar here too.
2007-11-04 16:54:27 +0000 / enh / revision 2426
TODO: notes from Apple's java-dev mailing list on something to try when one of us has 10.5 to test on.
2007-11-01 02:43:14 +0000 / enh / revision 2425
src/e/gui/GnomeStockIcon.java: the absence of the "OK" mnemonic is quite glaring whenever it appears next to "Cancel".
2007-11-01 02:05:50 +0000 / enh / revision 2424
src/e/gui/HtmlPane.java: delegate addKeyListener and removeKeyListener to the underlying JTextPane.
2007-11-01 01:04:00 +0000 / mad / revision 2423
universal.make: GuiUtilities changed in a way that was source-compatible with Terminator's usage but not runtime compatible. We must recompile our Java if salma-hayek's been recompiled. Darn, I thought we had those Java dependencies nailed, but it was clear what the problem was and it was easy to fix.
2007-10-31 21:47:43 +0000 / enh / revision 2422
src/e/util/GuiUtilities.java: make it possible to cancel keepMaximumShowing's auto-scrolling.
2007-10-31 20:15:51 +0000 / pcn / revision 2421
src/e/ptextarea/PEmailTextStyler.java: A new text styler for dealing with emails. This recognises various levels of commenting, and also (correctly-separated) signatures.
src/e/ptextarea/FileType.java: Include the new text styler in our styler enumeration.
2007-10-29 05:31:07 +0000 / enh / revision 2420
src/e/gui/JFrameUtilities.java: fix this test now the filename is likely to be null, but should never be non-null but empty.
2007-10-29 05:29:12 +0000 / enh / revision 2419
bin/invoke-java.rb: don't set the org.jessies.frameIcon property to a useless value.
2007-10-27 21:16:46 +0100 / enh / revision 2418
src/e/gui/GnomeStockIcon.java: add another useful GNOME stock icon.
2007-10-26 19:51:34 +0100 / mad / revision 2417
post-commit: Modernize style - we use double quotes unless we're deliberately preventing interpolation and we always use parentheses on method invocations (except for the like of "raise" which is a keyword in other languages)...
incoming: ... before the superstitions spread any further. Superstitions, like inconsistencies, make it harder to learn a language. "Oh, shift is special".
2007-10-26 19:18:53 +0100 / enh / revision 2416
src/e/gui/HtmlPane.java: work around Sun bug 4233012, and hack the style sheet to make HTML text look more like normal TextArea text.
2007-10-26 10:40:40 +0100 / car / revision 2415
src/e/ptextarea/PTextAreaSpellingChecker.java: Undo accidental commit of local optimisation.
2007-10-26 10:33:03 +0100 / car / revision 2414
incoming: Added. A rough and ready first attempt at a post-commit-like script for Mercurial, initially to be executed by Mercurial's incoming hook.
2007-10-26 05:02:12 +0100 / enh / revision 2413
src/e/gui/AboutBox.java: make the full identification details available to the program itself, not just as a subject line for bug reports.
2007-10-25 22:26:58 +0100 / enh / revision 2412
src/e/forms/FormPanel.java: there's no reason why outsiders shouldn't be able to use FormPanel directly; it's perfectly usable and useful on its own.
2007-10-25 22:16:48 +0100 / enh / revision 2411
www/downloads.html: show in the copy & paste instructions how to actually build the source when you've checked it out. If you don't know what's in salma-hayek, as Colin Walters didn't, it's not necessarily obvious what the errors from GNU Make are telling you if you try building a project without having built salma-hayek first.
2007-10-24 04:23:02 +0100 / enh / revision 2410
src/e/util/ComponentUtilities.java: as I redirected home/end last night, I wondered why I hadn't done so earlier. mad pointed out today that these keys are generally cursor movement keys, and useful in text fields. So only redirect them if the component we're redirecting key strokes from isn't a text field. (I'm ignoring more general text components because they're unlikely to have this method invoked on them, because they're unlikely to have any other component associated with them.)
2007-10-23 07:10:32 +0100 / enh / revision 2409
src/e/util/ComponentUtilities.java: viewing patches, I haven't found much use for being able to jump to the top or bottom with the keyboard. Viewing mail, I find this keyboard functionality invaluable. (I've never understood why Outlook, though one of Windows' would-be redeeming features is its tendency to have good support for keyboard-only use, misses this where Apple, who wouldn't know a keyboard if it acted as a crutch for their one-button mouse, get it right. We have NeXT to thank, probably.)
2007-10-23 06:55:41 +0100 / enh / revision 2408
src/e/gui/HtmlPane.java: hiding the complicated JTextPane API by presenting ourselves as a JPanel is all well and good, but we need to implement Scrollable if we're to behave sensibly in a JScrollPane. So mainly pass through to the JTextPane, but avoid asking for a horizontal scroll bar. Also pull out some of the most deeply-indented code into its own method; it was offending me every time I saw it.
2007-10-23 06:17:15 +0100 / enh / revision 2407
src/e/util/GuiUtilities.java: Chris Reece reports a problem on the two-hit JDK5/Solaris retro combo. It looks like Sun ships the X11 classes but not the JNI library, or maybe that they've already loaded the Motif JNI library by this point, and the two would conflict:
java.lang.UnsatisfiedLinkError: initIDs
at sun.awt.X11.XWindow.initIDs(Native Method)
at sun.awt.X11.XWindow.<clinit>(XWindow.java:82)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at e.util.GuiUtilities.setFrameAlpha(GuiUtilities.java:313)
Anyway, to cope with breakage like this, catch Throwable and use Log.warn, as the WM_CLASS code already correctly did.
2007-10-22 06:56:33 +0100 / enh / revision 2406
src/e/gui/HtmlPane.java:
src/e/tools/HtmlViewer.java: pull the HTML stuff out into its own class, for easier embedding.
2007-10-22 03:29:53 +0100 / enh / revision 2405
src/e/tools/HtmlViewer.java: as long as HtmlViewer serves as the copy-and-paste source for using Swing's HTML functionality, it should aim to be as useful as possible.
2007-10-22 02:50:33 +0100 / enh / revision 2404
src/e/gui/GnomeStockIcon.java: I'm not sure how I missed "OK"; perhaps I've been too successful at finding a more specific label for my buttons. Anyway, sometimes "OK" is as good as it gets, so let's have the appropriate appearance for that button too.
2007-10-17 06:36:42 +0100 / enh / revision 2403
src/e/ptextarea/FileType.java: I only meant to claim ".talc" as an extension. As mad says, FAT16 users can have the other three.
2007-10-17 06:07:21 +0100 / enh / revision 2402
src/e/ptextarea/PTextAreaSpellingChecker.java: fix another two raw type warnings and an unused local variable warning.
2007-10-17 06:06:45 +0100 / enh / revision 2401
src/e/gui/ChronologicalComboBoxModel.java:
src/e/gui/ETree.java:
src/e/util/StringUtilities.java: fix a few more raw type warnings.
2007-10-17 06:05:27 +0100 / enh / revision 2400
src/e/ptextarea/FileType.java:
src/e/ptextarea/PTalcTextStyler.java: add support for editing Talc scripts.
2007-10-17 05:52:16 +0100 / enh / revision 2399
www/cygwin-subfaq.html:
www/faq.html: factor out the "I'm having problems with Cygwin!" entry, so we can easily include it in other projects' FAQs.
2007-10-14 01:46:48 +0100 / mad / revision 2398
lib/build/filter-build-output.rb: Forwarding the zero-ness of the exit status turns out to be easier than I expected. I think the child will always have exited by this point, so I presume its exit status will be collected no later than when I ask for it.
2007-10-14 01:24:44 +0100 / mad / revision 2397
lib/build/filter-build-output.rb: You might think the IO.popen() documentation would tell you the incantation for piping stderr as well as stdout, or that reopen's documentation would mention dup or dup2. I've used it once before but I'd not have found that instance without already having the answer. Google thankfully remains excellent.
2007-10-14 01:10:30 +0100 / mad / revision 2396
lib/build/filter-build-output.rb: I don't understand when Ruby choose default objects on which to invoke eg gets(). Still, I'm glad it (eventually) told me that I'd messed up in my parameterization check-in earlier.
/Users/mad/software.jessies.org/work/salma-hayek/lib/build/filter-build-output.rb:19:in `gets': No such file or directory - make (Errno::ENOENT)
from /Users/mad/software.jessies.org/work/salma-hayek/lib/build/filter-build-output.rb:19:in `filterBuildOutput'
from /Users/mad/software.jessies.org/work/salma-hayek/lib/build/filter-build-output.rb:48
from /Users/mad/software.jessies.org/work/salma-hayek/lib/build/filter-build-output.rb:43:in `popen'
from /Users/mad/software.jessies.org/work/salma-hayek/lib/build/filter-build-output.rb:43
2007-10-14 01:02:07 +0100 / mad / revision 2395
simple.make: Move the "filter" invocation onto the front of the command line, passing the universal.make command line as arguments.
lib/build/filter-build-output.rb: Run ARGV down a pipe and filter its output.
This was my first thought. It doesn't solve the original problem - the exit status of the child command is still ignored. I'm not sure we're filtering the command's stderr. I think this is the right direction, so I'll check-in (as it's still basically functional) and then work on fixing those.
2007-10-14 00:42:10 +0100 / mad / revision 2394
lib/build/filter-build-output.rb: A large cosmetic-only change to parameterize the input stream for filtering, so I can change it to be a pipe in the next check-in without appearing to have changed the whole file.
2007-10-14 00:33:29 +0100 / mad / revision 2393
simple.make: The make convention, as decreed by $(if), is that an empty string means false whereas a non-empty one means true. Really, I want to be attacking the pipefail problem with the "recurse" rule but, before I rewrite it, I need to understand it. Having the "then" and "else" clauses contradict the condition variable's name wasn't helping. All I've done here is rename the variable to match its contents.
2007-10-14 00:30:00 +0100 / mad / revision 2392
simple.make: $(filter) wasn't what I wanted here. MAKEFLAGS = pn is what you get when you pass -n -p.
2007-10-13 22:53:32 +0100 / enh / revision 2391
src/e/gui/StopIcon.java: improve the appearance of the stop icon, and keep it from disappearing when disabled.
2007-10-12 18:48:13 +0100 / enh / revision 2390
src/e/util/Parameters.java: actually, for now, dump this functionality in (the deprecated class) Parameters, where it best belongs.
2007-10-12 18:40:33 +0100 / enh / revision 2389
src/e/util/FileUtilities.java: remove a few error- and inefficiency-prone methods that are only used in Evergreen (where I'm about to reimplement them).
2007-10-05 07:11:38 +0100 / enh / revision 2388
src/e/gui/ArrayListTableModel.java: remove unused (and not particularly useful) class.
src/e/gui/DebugMenu.java:
src/e/gui/HeapView.java:
src/e/gui/HorizontalScrollWheelListener.java:
src/e/ptextarea/PTextAreaRenderer.java:
src/e/tools/JarExplorer.java:
src/e/tools/JavaHpp.java:
src/e/tools/ShowUiDefaults.java:
src/e/util/InAppServer.java:
src/e/util/Launcher.java:
src/e/util/Log.java:
src/e/util/Stopwatch.java: fix raw type, unused local/field/method, and unnecessary cast warnings.
2007-10-04 06:59:31 +0100 / enh / revision 2387
src/e/gui/EMenuBar.java:
src/e/util/ProcessUtilities.java: remove unused locals.
src/e/gui/HelpMenu.java: remove unused field.
2007-10-04 06:54:25 +0100 / enh / revision 2386
universal.make: disable a silly warning that makes bad suggestions.
2007-10-04 06:17:43 +0100 / enh / revision 2385
src/e/debug/EventDispatchThreadHangMonitor.java:
src/e/debug/HungAwtExit.java:
src/e/forms/FormPanel.java:
src/e/gui/DialogFocusRedirector.java:
src/e/gui/HeapView.java:
src/e/gui/HelpMenu.java:
src/e/gui/JAsynchronousProgressIndicator.java:
src/e/gui/SimpleDialog.java:
src/e/ptextarea/BugDatabaseHighlighter.java:
src/e/ptextarea/HyperlinkStyleApplicator.java:
src/e/ptextarea/PAbstractLanguageStyler.java:
src/e/ptextarea/PAbstractTextStyler.java:
src/e/ptextarea/PActionFactory.java:
src/e/ptextarea/PAnchorSet.java:
src/e/ptextarea/PBashIndenter.java:
src/e/ptextarea/PFind.java:
src/e/ptextarea/PIndenter.java:
src/e/ptextarea/PPlainTextStyler.java:
src/e/ptextarea/PRubyIndenter.java:
src/e/ptextarea/PTextStyler.java:
src/e/ptextarea/RegularExpressionStyleApplicator.java:
src/e/ptextarea/TabStyleApplicator.java:
src/e/ptextarea/UnprintableCharacterStyleApplicator.java:
src/e/ptextarea/UnprintableCharacterTextSegment.java:
src/e/tools/FatBits.java:
src/e/toys/world/WorldClock.java:
src/e/util/BrowserLauncher.java:
src/e/util/GuiUtilities.java:
src/e/util/StringHistory.java: remove unused imports.
src/e/ptextarea/PNewlineInserter.java: remove an unused import and an unused local.
src/e/util/NumberDecoder.java: remove an unused field.
2007-10-03 21:42:35 +0100 / mad / revision 2384
lib/build/file-list-to-wxi.rb: Fix Cygwin installer build, which was failing with:
/software.jessies.org/work/salma-hayek/lib/build/file-list-to-wxi.rb:7:in `require': no such file to load – /software.jessies.org/work/salma-hayek/lib/lib/build/uuid.rb (LoadError)
from /software.jessies.org/work/salma-hayek/lib/build/file-list-to-wxi.rb:7
lib/build/ensure-repository-orthography.rb:
lib/build/svn-log-to-html.rb: Adapt other scripts that were recently moved to this directory in a similar way, so they still find salma-hayek's root correctly. I haven't tested either of them - just fixing it while I think of it.
2007-10-03 20:53:36 +0100 / mad / revision 2383
HACKING: The history doesn't say where this superstition came from. I've failed to find anything in my saved email (which isn't surprising given how little there is to search on). I say "superstition" because it's not really ringing any bells in my mind. All the problems I remember were with Ruby, though I might have assumed it was a Windows thing. I do have a vague feeling that we got a Ruby exception when writing to (unopened) $stderr and then tried to dump a stack trace... to $stderr. Perhaps the exception handler reentered itself (though that sounds like it would be a Ruby bug). Perhaps it was Ruby's default exception handler. Even if it had applied to Java as well as Ruby, ruby-launcher fixed this issue, by opening "/dev/null" as file descriptors 1 and 2 if they're not already open. If it happens again, I'm sure we'll record it more convincingly.
2007-10-03 06:22:07 +0100 / enh / revision 2382
bin/ensure-repository-orthography.rb:
bin/make-new-project:
lib/build/ensure-repository-orthography.rb:
lib/build/make-new-project.sh: move a couple of scripts that are only ever run by hand (if that; especially since future repositories are likely to be Mercurial rather than Subversion).
2007-10-03 06:17:30 +0100 / enh / revision 2381
bin/find-jdk-root.rb:
bin/which.rb: inline "which.rb" into its only caller. There's also a Talc replacement for this.
2007-10-03 06:14:54 +0100 / enh / revision 2380
bin/filter-build-output.rb:
lib/build/filter-build-output.rb:
simple.make: move another bit of the build system.
2007-10-03 06:13:29 +0100 / enh / revision 2379
bin/escape-for-html.rb:
bin/make-img-tag.rb: I'm already using the Talc replacements for these scripts.
2007-10-03 06:10:13 +0100 / enh / revision 2378
bin/javahpp:
bin/javahpp.rb:
universal.make: "javahpp" is (potentially) an end-user tool, so it shouldn't have a script extension.
2007-10-03 06:08:11 +0100 / enh / revision 2377
dist-exclude:
lib/build/dist-exclude:
universal.make: move another part of the build system out of the way.
2007-10-03 06:05:27 +0100 / enh / revision 2376
bin/file-list-to-wxi.rb:
bin/make-version-file.rb:
bin/package-for-distribution.rb:
bin/svn-log-to-html.rb:
bin/uuid.rb: move these files...
lib/build/file-list-to-wxi.rb:
lib/build/make-version-file.rb:
lib/build/package-for-distribution.rb:
lib/build/svn-log-to-html.rb:
lib/build/uuid.rb: ...into the new directory for build scripts.
universal.make: update the makefile.
2007-10-03 05:57:31 +0100 / enh / revision 2375
universal.make: make it possible to set JAVA_COMPILER from the environment, and make it possible to choose GCJ as your Java compiler. Also an independent but related hack to add a "make gcj" target to install a GCJ-compiled native binary in /usr/bin/. (Note that GCJ use requires GCJ_MAIN_CLASS to be set to the class whose main method you want the generated binary to run.)
2007-10-03 05:48:14 +0100 / enh / revision 2374
lib/build: new directory for build scripts and the like.
2007-10-03 05:37:41 +0100 / enh / revision 2373
bin/send-meeting-requests-to-ical.rb: I haven't used this in forever, and this repository isn't the right place for it anyway. It's on my blog if I need it again, which I won't.
2007-10-03 05:33:41 +0100 / enh / revision 2372
bin/xv:
src/e/tools/Xv.java: I now have a machine so fast even GIMP loads in an acceptable time, and my only real complaint with "Eye of GNOME" is its ridiculous name. I've been threatening to get rid of Xv for ages, and no-one's spoken up in its defense, so out it goes...
2007-10-02 18:32:21 +0100 / mad / revision 2371
bin/install-everything.sh: A copy of this was added to BlueArc's misc repository on 2006-06-09, where it's been improved. I've copied the FIXME to Terminator's TODO although, on reflection, I should have copied the code too.
2007-10-02 16:07:36 +0100 / enh / revision 2370
src/e/util/FileUtilities.java: Chris Reece had trouble with us translating /home/car/Projects/terminator to ~Projects/terminator instead of ~/Projects/terminator, because his HOME was /home/car/ instead of /home/car. Make life simpler for callers (and fix his problem) by guaranteeing that getUserHomeDirectory returns a string with no trailing File.separators.
2007-09-27 21:12:46 +0100 / enh / revision 2369
universal.make: make it possible to build source .tar.gz files for Mercurial-based projects.
2007-09-25 22:20:33 +0100 / mad / revision 2368
TODO: WiX makes everything difficult but I haven't even looked into how to implement these RFEs, so remove the misleading impression that I have. My "objection" to opening a monolog box to say "Hey dude! Success!!1 We've done the right thing!" isn't that it's difficult - it's just depressing. The most compelling argument for having such a box is to say "look on the desktop - we haven't sprayed shortcuts into some random sub-directory of your start menu that you'll never find".
2007-09-22 01:10:42 +0100 / enh / revision 2367
TODO: move the (Windows) installer-related to-do items that were hiding in Terminator's to-do list here.
2007-09-22 01:06:09 +0100 / enh / revision 2366
src/e/debug/EventDispatchThreadHangMonitor.java:
src/e/gui/JFrameUtilities.java:
src/e/ptextarea/PTextAreaSpellingChecker.java:
src/e/tools/JavaHpp.java:
src/e/tools/Xv.java:
src/e/util/FileUtilities.java:
src/e/util/GuiUtilities.java:
src/e/util/InAppServer.java:
src/e/util/Parameters.java:
src/e/util/SpellingChecker.java: it might be easier to quote like 'this' than like "this" in source, but the former looks weird.
2007-09-21 23:46:28 +0100 / enh / revision 2365
bin/package-for-distribution.rb: support installation of section 1 manual pages.
2007-09-21 21:02:06 +0100 / enh / revision 2364
src/e/forms/FormDialog.java:
src/e/gui/JFrameUtilities.java: move the Window-geometry preservation code to JFrameUtilities (which should probably be called WindowUtilities).
2007-09-21 18:05:15 +0100 / enh / revision 2363
bin/install-build-prerequisites.sh: replace our build-dependencies shell script...
bin/package-for-distribution.rb:
lib/DEBIAN-control-Build-Depends.txt: with proper Debian build dependencies. Use "sudo apt-get build-dep org.jessies.terminator" (or whatever) to get those packages you don't already have.
2007-09-21 18:02:04 +0100 / enh / revision 2362
bin/install-build-prerequisites.sh: our non-build dependencies are now expressed elsewhere.
2007-09-20 02:25:49 +0100 / mad / revision 2361
www/cygwin-setup.html: Now the message no longer says "you can safely ignore this", we'd better stop advising the reader to ignore it. I wonder how I installed. I've overwritten my /etc/passwd and /etc/group by following the suggestions, with the -d options. That stopped Terminator from running until I jumped through another hoop. I wonder if my nightly build will break.
2007-09-20 02:13:35 +0100 / mad / revision 2360
www/cygwin-setup.html: Mark Connell points out that our quote of the Cygwin "mkgroup" message is out-of-date. In particular, the "message is only displayed once" part has gone... and the message is displayed in every new terminal, as Mark says.
2007-09-19 01:04:54 +0100 / enh / revision 2359
src/e/ptextarea/FileType.java:
src/e/ptextarea/PCSharpTextStyler.java: basic coloring for C#. As far as I know, we can share the Java indenter.
2007-09-08 05:42:00 +0100 / enh / revision 2358
bin/package-for-distribution.rb: remove some duplication and use relative symbolic links to make it possible for users to install our packages somewhere other than /.
2007-09-08 05:25:59 +0100 / enh / revision 2357
bin/show-alert.rb: fix this lintian(1) complaint:
W: org.jessies.evergreen: script-not-executable ./usr/share/software.jessies.org/evergreen/Resources/salma-hayek/bin/show-alert.rb
2007-09-06 16:23:01 +0100 / enh / revision 2356
src/e/util/GuiUtilities.java: don't try to run the X11 code on Windows. That's silly.
2007-09-06 16:19:01 +0100 / enh / revision 2355
www/index.html: work around the same problem in the other file I touched. If anyone knows how to fix the CSS, I'm happy enough with our appearance, but I'd rather not have all the minor irritations!
2007-09-06 16:16:03 +0100 / enh / revision 2354
www/downloads.html: work around what's probably a problem with my CSS.
2007-09-06 16:14:32 +0100 / enh / revision 2353
www/downloads.html:
www/index.html: make the instructions clearer for anyone who ignores our advice to use Subversion and tries to use a .tar.gz instead. Include the specific error message they're likely to see.
2007-09-05 21:39:30 +0100 / mad / revision 2352
bin/find-jdk-root.rb:
universal.make: Adapt to the new java-launcher name in comments...
bin/invoke-java.rb: ... and in the code that specifies the executable's path. I considered changing @launcher and friends to @java_launcher. That might still be a good idea but it obscured the necessary change so it would be better in a separate, cosmetic-only check-in. Plain "@launcher" is probably fine in a local variable anyway - which launcher we mean is clear from context unless you're grepping and even then it's clear if you know the code.
2007-09-05 21:30:32 +0100 / mad / revision 2351
native/all/launcher:
native/all/java-launcher: Rename the directory.
native/all/java-launcher/launcher.cpp:
native/all/launcher/java-launcher.cpp:
native/all/launcher/synchronizeWindowsEnvironment.cpp:
native/all/launcher/synchronizeWindowsEnvironment.h:
native/all/launcher/WindowsDirectoryChange.cpp:
native/all/launcher/WindowsDirectoryChange.h: Disturbingly, Subversion is telling me that all of the directory's contents, current and historical, are deleted. Yet they're still in my work area.
Now trying to commit with svn commit. checkintool failed with "cannot commit a directory deletion non-recursively" or words to that effect.
Now trying a second time with svn commit. The first attempt failed with:
svn: Commit failed (details follow):
svn: Out of date: '/trunk/native/all/launcher' in transaction '2350-1'
2007-09-05 20:18:59 +0100 / mad / revision 2350
native/all/launcher/java-launcher.cpp:
native/all/launcher/launcher.cpp: Sigh. Subversion wants me to check-in the renamed source file before it lets me rename the directory.
martind@duezer:~/software.jessies.org/work/salma-hayek/native/all$ svn mv launcher java-launcher
svn: Use --force to override this restriction
svn: Move will not be attempted unless forced
svn: 'launcher/java-launcher.cpp' has local modifications
martind@duezer:~/software.jessies.org/work/salma-hayek/native/all$
2007-09-05 20:00:03 +0100 / mad / revision 2349
native/all/launcher/launcher.cpp: Clean-up two other " str"-related C-isms.
2007-09-05 19:45:11 +0100 / enh / revision 2348
native/all/launcher/launcher.cpp: mad groans at strdup(3), and I can't find any excuse for it (I thought the users needed a char*, but they don't).
2007-09-05 05:36:22 +0100 / enh / revision 2347
bin/invoke-java.rb: actually, let's commit a disabled version of the changes necessary to use our own launcher on Mac OS.
2007-09-05 05:33:29 +0100 / enh / revision 2346
universal.make: on Mac OS, build all C++ as Objective-C++ and make the Cocoa framework available, so we can easily do Mac-specific stuff.
native/Headers/ScopedAutoReleasePool.h: make it possible to use this header file from C++.
native/all/launcher/launcher.cpp: add Mac OS support. Starting a JVM on Mac OS is quite different from other OSes, plus there are a couple of new options we need to support. If you actually want to use this, you'll need something like the following patch in addition:
--- bin/invoke-java.rb (revision 2344)
+++ bin/invoke-java.rb (working copy)
@@ -133,8 +133,20 @@ Java::initialize
# This launcher doesn't use the same algorithm as Sun's for picking a jvm.dll.
@launcher = "#{@salma_hayek}/.generated/#{target_directory()}/bin/launcher"
end
+ if target_os() == "Darwin"
+ # For Sparkle to work, we need our [NSBundle mainBundle] to point to our .app bundle.
+ # For that to work, the executable that starts the JVM must be in the Contents/MacOS/ directory.
+ mac_os_launcher = "#{@project_root}/../../MacOS/launcher"
+ if File.exist?(mac_os_launcher)
+ @launcher = mac_os_launcher
+ else
+ # We're probably running from a developer's working copy.
+ # Better to run without Sparkle than not run at all.
+ @launcher = "#{@salma_hayek}/.generated/#{target_directory()}/bin/launcher"
+ end
+ end
end
-
+
def get_java_version(java_executable)
# We might like to use -fullversion, but Debian's gij-wrapper Perl script only understands -version. I think for our purposes here, "-version" is accurate enough.
java_version = `#{java_executable} -version 2>&1`.chomp()
2007-09-04 18:46:24 +0100 / enh / revision 2345
src/e/util/GuiUtilities.java: avoid NullPointerExceptions when the peer is null. (The JDK always seems to check peer before using it.)
2007-09-03 22:42:26 +0100 / enh / revision 2344
src/e/ptextarea/ExternalSearchItemProvider.java: fix "Look Up in Wikipedia" on Mac OS, and make it clear – now I've tried it – that enhancing the Mac-specific dictionary lookup in a way I'd considered turns out to be pointless.
2007-09-03 22:30:10 +0100 / enh / revision 2343
src/e/ptextarea/ExternalSearchItemProvider.java: pull the Mac-specific Dictionary.app code aside and make the normal web-based searching more uniform. Add a "Look Up in Wikipedia" option, but remove the (Mac-only) "Search in Spotlight" because Spotlight's a big fat waste of space.
2007-09-03 22:26:53 +0100 / enh / revision 2342
bin/invoke-java.rb: minor tidying of comments.
2007-09-03 20:32:14 +0100 / enh / revision 2341
src/e/ptextarea/HyperlinkStyleApplicator.java:
www/index.html: use our own website in example URLs.
2007-09-03 01:01:16 +0100 / enh / revision 2340
bin/package-for-distribution.rb: only work out the compressed version number once, add it to the Mac OS "Info.plist", and use Ruby to find the Content/Resources/ directory at run-time, so we can do the equivalent of realpath(1) on Mac OS even though it doesn't have a realpath(1) binary.
2007-08-30 06:35:03 +0100 / enh / revision 2339
src/e/util/GuiUtilities.java: fix an IllegalArgumentException; there are no implicit conversions here.
2007-08-30 06:31:10 +0100 / enh / revision 2338
src/e/util/GuiUtilities.java: commit a library-strength version of the code I just posted on my blog.
2007-08-26 23:52:33 +0100 / enh / revision 2337
src/e/gui/EMenuBar.java: I still can't work out how to forward key events, so add code to search the menu bar for a menu item whose accelerator property is the given KeyStroke.
2007-08-26 21:34:20 +0100 / enh / revision 2336
src/e/ptextarea/PRubyTextStyler.java: treat RubyDoc as a multi-line comment. This may lead to false matches, but it's a step forward without either switching to regular-expression coloring or putting much effort into the existing scheme. The obvious change of switching to something like isStartOfCommentToEndOfLine doesn't work because we also need to know how many characters to skip (which we can simply infer from the definition of the existing case).
src/e/ptextarea/PAbstractLanguageStyler.java:
src/e/ptextarea/PJavaScriptTextStyler.java:
src/e/ptextarea/PPhpTextStyler.java: make a default explicit and remove duplication.
2007-08-22 04:59:59 +0100 / enh / revision 2335
src/e/ptextarea/PRubyIndenter.java: we should indent after "x.each() do" the same as "x.each() {", as Marsell P-K ("Tom") points out.
2007-08-15 06:07:09 +0100 / enh / revision 2334
bin/invoke-java.rb: it can be useful for an application to know where the project root is on the file system, so pass it through as a system property. (An example use is reading a default configuration from the project's lib/ directory.)
2007-08-12 07:43:03 +0100 / enh / revision 2333
www/ubuntu-setup.html: bring this up to date for Ubuntu 7.04 (the current stable release), and correct an error in the Wireshark installation.
2007-08-10 19:38:37 +0100 / enh / revision 2332
bin/invoke-java.rb: Kevin Lidh didn't get back to us on whether this fixed his "gij" problem (he'd already switched to Sun's JVM), but it seems likely to, and should protect us against accidentally running "gij" as java(1).
2007-08-09 22:26:45 +0100 / enh / revision 2331
src/e/gui/PatchListCellRenderer.java: ensure that the selection is always visible in patches presented as lists, as it is in patches presented as text.
2007-08-09 17:29:09 +0100 / enh / revision 2330
bin/download-latest-jdk.rb:
bin/target-os.rb: neilb points out that util-linux's arch(1) is deprecated as of version 2.13, which entered Debian unstable as of 2007-07-10. Make it clearer that we only call it on Linux, and switch over. (I didn't find a rationale, but it turns out arch(1) isn't specified by POSIX, so that might be the reason. "uname -m" is POSIX.)
2007-07-30 03:38:15 +0100 / enh / revision 2329
bin/nightly-build.rb: add support for nightly builds of projects in Mercurial repositories.
2007-07-29 17:10:13 +0100 / pcn / revision 2328
tests/run_tests: Fixed the test runner for MacOS/BSD, on which the 'mktemp' program requires a template argument.
2007-07-27 07:07:07 +0100 / enh / revision 2327
src/e/util/TimerUtilities.java: fix getQueuedSwingTimers for Java 7.
2007-07-27 06:34:30 +0100 / enh / revision 2326
src/e/gui/JFrameUtilities.java: FatBits doesn't have an icon, but it now shares the code that tries to set the window manager icon, so make that code silent in the case where there's no icon to load.
2007-07-27 06:29:31 +0100 / enh / revision 2325
src/e/gui/AboutBox.java: ensure we dispose the JDialog used to implement about boxes.
src/e/gui/SimpleDialog.java: ensure we dispose the JDialog used to ask modal questions.
2007-07-27 05:25:27 +0100 / enh / revision 2324
bin/make-version-file.rb: add support for getting version numbers from Mercurial repositories too.
2007-07-27 00:48:17 +0100 / mad / revision 2323
universal.make: Get rid of all but two mentions of the .svn directory, and keep those in one place. That looks to be the minimum we can easily get away with. As the first line suggests, this is a small step in the direction of supporting Mercurial.
2007-07-26 07:02:45 +0100 / enh / revision 2322
src/e/gui/MainFrame.java: mad pointed out that it was clear from our built-in debugging output that we weren't disposing most of our dialogs and frames. This class, though its name is ugly, factors out what I currently believe to be the best way of coping with the problem.
src/e/debug/EventDispatchThreadHangMonitor.java:
src/e/gui/DebugMenu.java:
src/e/gui/JAsynchronousProgressIndicator.java:
src/e/gui/JFrameUtilities.java:
src/e/gui/StopIcon.java:
src/e/tools/FatBits.java:
src/e/tools/HtmlViewer.java:
src/e/tools/JarExplorer.java:
src/e/tools/JavaWidgetFactory.java:
src/e/tools/TableViewer.java:
src/e/tools/WeatherWindow.java:
src/e/tools/Xv.java:
src/e/toys/world/WorldClock.java: switch our JFrame users over.
bin/notepad:
src/e/tools/notepad:
src/e/tools/notepad/Notepad.java:
src/e/tools/notepad/NotepadWindow.java: remove this, because it looks unlikely to be picked up again. (If I had the time, my current thoughts in that space are quite different anyway.)
2007-07-24 05:32:01 +0100 / enh / revision 2321
src/e/util/PatternUtilities.java: susiw suggests that we should default to "(?m)" because it's more useful if ^ and $ match the start and end of each line rather than just the start and end of input. \A and \Z are still available for the rare cases where you actually want the latter, or there's (?-m). I've also updated the documentation link to point to the Java 6 Pattern documentation.
2007-07-23 17:29:49 +0100 / mad / revision 2320
bin/target-os.rb: Elliott points out that this should have been @os_name, not os_name. I thought it was scary that it was still working, but it will just have been calling os_name() with implicit parentheses. This does fortuitously give me the opportunity to correct my statement that NSRunAlertPanel still doesn't work for me. It does when run by double-clicking SCM.app, which is what Grant Morgan was trying to do. It doesn't when run from the command line but maybe it never did.
2007-07-23 16:54:18 +0100 / mad / revision 2319
bin/target-os.rb: Fix the recent regression here whereby we were reported the target architecture on Mac OS as i386 (on my Intel MacBook). Remove the cause of the confusion that led to a correct-looking patch causing this regression (we shouldn't have had an accessor called "target_os" and a local variable called "target_os" when the accessor wasn't returning the value of that local variable).
This doesn't fix the problem where NSRunAlertPanel doesn't display anything (for me and Grant Morgan) but it does mean that at least I'm running the same code that I'm building.
2007-07-23 07:46:45 +0100 / enh / revision 2318
src/e/gui/AboutBox.java: connect the "License" button up so it does something. We could do with a simple ButtonPanel rather than keep reinventing it over and over. I've also made Esc close the about box (on all platforms). Note that this code will need updating when we switch to GPLv3, and we should either pull FatBits out into its own repository and switch it over to the GPL or improve this code to recognize what license it's shipped with (though that would require us to copy the license somewhere convenient in the distributions for the code to find, and seems like making work so we can make things more complicated, which doesn't seem like a positive direction).
2007-07-23 07:21:39 +0100 / enh / revision 2317
src/e/gui/JFrameUtilities.java: make it easier to close a window when the user hits Esc, even though Java's ridiculous class hierarchy for heavyweight components does its best to get in the way. Also change makeSimpleWindow so we automatically add close-on-Esc behavior to those windows (we were already adding close-on-C-W behavior on Mac OS).
2007-07-23 06:44:26 +0100 / enh / revision 2316
src/e/util/ComponentUtilities.java: remove accidentally-committed debugging output.
2007-07-23 03:20:03 +0100 / enh / revision 2315
bin/invoke-java.rb: make it possible to change one's mind about the class name after construction.
2007-07-23 03:11:37 +0100 / enh / revision 2314
src/e/gui/AboutBox.java: add the "License" button to the GTK+ about box. Leave it disabled for now.
2007-07-23 03:01:46 +0100 / enh / revision 2313
src/e/forms/FormDialog.java:
src/e/util/ComponentUtilities.java: move tieButtonSizes into ComponentUtilities and make it more general (there's no reason to limit it to two buttons) and make it work better (with the GTK+ LAF, at least, it seems to help to set all the sizes if you have buttons with icons and buttons without).
2007-07-21 21:02:08 +0100 / enh / revision 2312
bin/invoke-java.rb: File.exist? is slightly cheaper, slightly shorter, avoids the missing-parentheses ambiguity, and is the usual idiom unless you already have a Pathname.
2007-07-21 06:32:24 +0100 / enh / revision 2311
bin/target-os.rb: cache all the exported functions' values. This doesn't knock much off the time taken by "invoke-java.rb", but it's easy and makes the code more regular anyway.
2007-07-21 06:08:23 +0100 / enh / revision 2310
bin/show-alert.rb: make our alert-showing more robust. The symptom of this, thanks to zenity(1)'s crazy defaults, is a dialog box with the title "Information" and the message "All updates are complete.".
2007-07-20 07:02:55 +0100 / enh / revision 2309
bin/invoke-java.rb:
src/e/gui/AboutBox.java: support Sébastien Pierre's hand-crafted 32x32 icons in preference to scaling down 128x128 icons for title bars. We'll want to make use of his 512x512 icons at some point, but we can worry about that later. (Personally, I'm sorely tempted to use the really big icons on the web pages.)
2007-07-14 06:47:20 +0100 / enh / revision 2308
src/e/tools/JavaHpp.java: follow the "throw by value, catch by const reference" rule.
2007-07-09 01:29:42 +0100 / enh / revision 2307
src/e/util/ByteBufferUtilities.java: never use FileChannel.map, because without a corresponding unmap, it's too broken to be useful.
2007-06-29 00:05:16 +0100 / enh / revision 2306
src/e/util/StringUtilities.java: in Terminator at least, asking nCopies for one copy is not unusual. The JDK's Collections.nCopies for Object doesn't have special cases for 0 and 1, though it is much faster than us when it comes to large values. At the moment, though, I think for StringUtilities.nCopies, large values are more likely to be errors. I've included the microbenchmark I used. On my machine, I went from about 860ns down to about 600ns/610ns depending on whether I pass a String or a char.
2007-06-26 08:13:29 +0100 / enh / revision 2305
src/e/gui/HeapView.java: help consign MessageFormat to the dustbin of history, by switching to String.format.
src/e/forms/FormDialog.java: this can't really be fixed.
2007-06-23 05:58:31 +0100 / enh / revision 2304
www/bug-report.html: cover all four possible bug-reporting/FAQ-reading situations.
2007-06-23 05:33:39 +0100 / enh / revision 2303
www/header.html: hard-code a BASE HREF for the benefit of...
bin/ssi.rb: a new script that's an off-line SSI pre-processor. Useful for testing changes to SSI-based websites before they go live. In addition to producing a pre-processed HTML file, we run tidy(1) to give things a once-over.
2007-06-21 17:44:31 +0100 / mad / revision 2302
universal.make: If the last command in a pipeline succeeds, the pipeline as a whole succeeds (by default), even if an earlier command fails. That's why I didn't get to see this quoting mistake until the occasional "clock skew" message I see from the Windows build provoked filter-build-output.rb into showing all the output from that rule.
Symlinking the latest terminator.msi...
ssh software@jessies.org rm -f /home/software/downloads/windows/terminator.msi '&&' \
ln -s terminator-5.52.2301.msi /home/software/downloads/windows/terminator.msi '&&' \
ls -t '"/home/software/downloads/windows/terminator-*.msi"' '|' tail +8 '|' xargs rm -f
/home/software/downloads/windows/terminator-*.msi: No such file or directory
make[1]: warning: Clock skew detected. Your build may be incomplete.
When passing the -name argument to find, we wanted find to see the *. Now we're calling ls, we want its parent shell (on jessies.org) to expand the *. So remove one layer of quoting and, while I'm there, make it clearer what exactly what we know we should quote.
There will have been no functional problem because of this bug because we didn't have any binary builds ready for removal.
2007-06-20 21:24:36 +0100 / mad / revision 2301
universal.make: We haven't changed anything except scm for the last week. All of our binary downloads have been wiped by the -mtime +7 condition. I can imagine what we were thinking - what if we upload lots of builds during a week? I'm not sure what we really want, to be honest, but removing all the builds isn't a nice failure mode. We'd rather have seven builds all from today and nothing any older.
I haven't really tested this yet.
2007-06-08 06:40:25 +0100 / enh / revision 2300
src/e/util/TimeUtilities.java: show fractional seconds to an arbitrary (but consistent) number of decimal places.
2007-06-08 06:28:10 +0100 / enh / revision 2299
native/Headers/WindowsDllErrorModeChange.h: fix indentation.
2007-06-07 23:50:19 +0100 / mad / revision 2298
native/all/launcher/launcher.cpp: Telling Cygwin to reinstall Ruby fixed my ruby_init_stack problem. I guess I was running Terminator or (perhaps more likely) there were zombie Ruby processes lying around last time I did a Cygwin update.
Now ruby-launcher does complain with a monolog box if you ask it to start an executable whose DLLs can't be loaded. Sadly, it complains four times with an identical monolog. I guess Cygwin's doing some path searching or trying the filename with and without .exe, .com etc. Still, better four half-decent error messages than silent failure.
Let's use it in (java-)launcher too, until we come up with a reason not to.
2007-06-07 22:51:44 +0100 / mad / revision 2297
native/Headers/WindowsDllErrorModeChange.h: Ah, GetErrorMode requires Vista.
2007-06-07 22:49:22 +0100 / mad / revision 2296
native/Headers/WindowsDllErrorModeChange.h: Gonna need to spell Cygwin correctly...
native/all/ruby-launcher/ruby-launcher.cpp: ... and to include <windows.h> (currently the same way (java-)launcher.cpp does).
2007-06-07 22:27:55 +0100 / mad / revision 2295
I've got another silent problem starting my shortcuts today. If I hack the shortcuts to say ruby.exe instead of ruby-launcher rubyw, then I see a monolog box saying:
ruby.exe - Entry Point Not Found
The procedure entry point ruby_init_stack could not be located in the dynamic link library cygruby18.dll.
This is even after a reboot but, at the moment, I'm less concerned about my broken shortcuts and more concerned about the fact that the failure is silent.
native/all/ruby-launcher/ruby-launcher.cpp: Before the exec, call the suggestion from...
native/all/launcher/launcher.cpp: ... the string literal here, which can now become...
native/Headers/WindowsDllErrorModeChange.h: ... code.
I'm wary of turning it on by default in java-launcher because the posix behavior may be what saves us if and when we install both i386 and amd64 versions. I'm checking this in to record it in the history but also to help me get the code from the editor on Linux to my Windows machine for compilation. If it successfully reveals my ruby-launcher error and doesn't get in the way normally, then perhaps I should make the java-launcher change too.
2007-06-04 16:09:03 +0100 / mad / revision 2294
src/e/ptextarea/PAnchorSet.java: Another small simplification with no (intentional) functional change.
The use of "index" to mean offset into the text is confusing me a little too. I think I'm used to it being called "offset" elsewhere in the code. Searching for getIndex, I only find PAnchor's closest relatives and some dead code in PLineList.
2007-06-03 22:34:14 +0100 / mad / revision 2293
src/e/ptextarea/PAnchorSet.java: We binary search the anchors for a text offset, then linearly search backwards stopping before we'd return an anchor with a lower offset. Let's always do the linear search, so we have less conditional code. This shouldn't be a functional change, just a small simplification and perhaps a hardening against future changes. If, for example, we started to discriminate between anchors with the same offset but still sorted primarily by offset, then we'd need to do the linear search even if the binary search found no exact match.
2007-06-03 07:20:14 +0100 / enh / revision 2292
src/e/ptextarea/PAnchor.java: tidy up PAnchor.equals slightly, and fix hashCode so that equal PAnchor instances have equal hash codes.
2007-06-03 02:23:05 +0100 / enh / revision 2291
www/cygwin-problems.html: I misunderstood a few things here at first. Since it's aimed at an international audience, I've tried to make things a bit more explicit, and I've added a link to the cygwin-patches thread.
2007-06-02 22:53:41 +0100 / mad / revision 2290
www/cygwin-problems.html: It's been asked twice, but perhaps cygwin-problems is a better place than the FAQ.
2007-06-02 22:19:55 +0100 / enh / revision 2289
src/e/ptextarea/PHighlight.java: IdentityHashMap allows null values, so there's no need to invent a fake non-null value to make it clear we're only using it as an identity-based key set.
2007-06-02 20:14:45 +0100 / enh / revision 2288
src/e/ptextarea/PAnchorSet.java: Phil seems to be threatening to over-complicate this code too, having written a comment longer than the code to switch to a bulk copy and a bulk remove, so head him off at the pass, at the risk of introducing yet another bug into the overly-subtle anchor code.
2007-06-02 19:51:50 +0100 / enh / revision 2287
src/e/ptextarea/PAnchorSet.java:
src/e/ptextarea/PHighlight.java:
src/e/ptextarea/PTextArea.java: Phil was right about the cause of the recent wandering highlights problem, but none of us liked his fix. Since identity's important, and the only O(1)-lookup identity-based collection is IdentityHashMap, let's use that (with bogus values) and just switch from Collection.contains to Map.containsKey. I've also made PAnchorSet and its methods as hidden as possible, to make it clear that this class really isn't for public consumption. (I still think we could make the whole anchor thing a lot simpler.)
2007-06-01 22:47:50 +0100 / pcn / revision 2286
src/e/ptextarea/PAnchorSet.java: Fixed 'removeAll' so it doesn't delete PAnchors we didn't mean to delete. Because the set's '.contains' method was used to determine whether each anchor was a deletion candidate, which is based in turn on the .equals() method of the PAnchor, which is implemented purely in terms of the anchor's index in the text buffer, the attempted deletion of any PAnchor with a text buffer index of <n> was deleting *all* PAnchors with the same text buffer index. This was causing the weird wandering spelling mistakes bugs we were seeing when a find was cancelled.
I've implemented it using the 1.5 JDK methods; when we move to 1.6, we should use a 'NavigableSet' and use the reverse iterator available from that interface, rather than this rather ugly implementation which requires us to take a copy of the anchors to delete, and then reverse the list.
I've also added a little comment pointing out an inefficiency. Probably not such a dangerous one, mind.
2007-05-31 15:03:12 +0100 / mad / revision 2285
native/all/launcher/launcher.cpp: Next time we run into a DLL we can't load, let's at least remind ourselves in the error message of the previous reason, and of the suggestion that I never got around to implementing, which was to temporarily re-enable the modal dialog that Windows uses for reporting such errors (which Cygwin has to disable for a more Unix-like experience).
2007-05-31 14:48:15 +0100 / mad / revision 2284
native/all/launcher/launcher.cpp: Now that WindowsDirectoryChange.cpp is throwing std::runtime_error, we'd better catch that at the top level. What was I doing with the UsageError everywhere? Clearly many of these errors could never result from an error on the command line. Switch away from UsageError in those cases, rendering UsageError currently useless because I'm (now!) displaying the usage whatever the uncaught exception.
Really, I just came in here to improve an error message, but that can wait for the next check-in...
2007-05-25 17:01:11 +0100 / enh / revision 2283
src/e/gui/DebugMenu.java: I also needed to factor out the creation of windows with a button panel above a (possibly) scrollable area, so I could avoid having the "Refresh" button in the "Show Debugging Messages" window scroll with the text.
2007-05-25 07:11:27 +0100 / enh / revision 2282
src/e/gui/DebugMenu.java: make the "Show Debugging Messages" Action's name match its title. Use PTextBuffer.readFromFile to read the log to avoid showing "\r" at the end of each line on Windows. Add a "Refresh" button. Factor out the repeated idiom for making a button panel.
2007-05-25 06:20:36 +0100 / mad / revision 2281
native/all/launcher/launcher.cpp: I meant to mention this in the check-in comment but it's perhaps better as a code comment even if I hadn't forgotten.
2007-05-25 05:39:54 +0100 / mad / revision 2280
www/cygwin-problems.html: Just as I alleged to have fixed the Ruby "ubygems" and other startup problems, Chris found a problem we'd never seen before that also prevented startup, albeit at the (java-)launcher stage. Let's be very clear that we'd like the user to tell us what happens when they try starting it from bash.
2007-05-25 05:35:25 +0100 / mad / revision 2279
native/all/launcher/launcher.cpp: Rework to make it possible to change to the JRE bin directory (where java.exe) lives while trying to load the jvm.dll. Use Windows-style slash sex for the path components that we append to the JavaHome we read from the registry, so that we aren't submitting API calls with paths that are neither Windows-style nor Cygwin-style. If nothing else, that was making our error messages look like they're pointing at the problem even when they're not.
native/all/launcher/WindowsDirectoryChange.cpp:
native/all/launcher/WindowsDirectoryChange.h: A class for changing the Windows current directory using the native calls to bypass Cygwin. Modern Cygwin doesn't change the underlying Windows directory when the Cygwin current directory changes (to avoid sharing violations and similar non-POSIX behavior).
http://forums.java.net/jive/thread.jspa?messageID=209306 explains the issue. Java 6's JVM depends on msvcr71.dll, which Sun distribute in the same directory as java.exe, but not the same directory as our launcher. We don't want to be in the business of redistributing Microsoft DLLs, nor of keeping track of which DLLs (eg) IBM's JVM is using today. *Hopefully* we can change the current directory before trying to load the DLL and solve the problem. I haven't worked out a way of reproducing the problem, as my explorer.exe is locking the copy of the DLL that, on my machine, is in %SystemDir%.
2007-05-25 02:33:12 +0100 / enh / revision 2278
native/all/launcher/launcher.cpp: mirror Sun's java(1) launcher's behavior when terminating because an exception was thrown from main. This should prevent our make rules not realizing that "javahpp" failed.
2007-05-24 17:55:29 +0100 / mad / revision 2277
www/downloads.html: We can make the instructions a little shorter now, at the expense of not being quite so clear that we'll be sticking our fingers in any sub-directories of what we've called ~/jessies/. That won't be a problem unless the user checks-out into an existing directory with other sub-directories.
2007-05-24 17:52:35 +0100 / mad / revision 2276
bin/nightly-build.rb: Give a sensible default for the projects_root argument again in the name of shortening the web page instructions.
2007-05-24 17:46:59 +0100 / mad / revision 2275
bin/nightly-build.rb: Elliott suggests changing the default targets from nothing to those targets a normal user might want in their nightly build, in order that we could shorten the web page's instructions on how to set up a nightly build. Looking at Elliott's alleged crontab, I can't but think that only one of his nightly builds - the one with explicit targets - has been working since my change to build the targets one at a time.
simple.make: We should probably support explicit specification of the default target, even though I couldn't use it in nightly-build because of lwm.
2007-05-24 06:51:58 +0100 / enh / revision 2274
www/index.html: set this project's SHORT_DIST_NAME.
2007-05-24 06:37:22 +0100 / enh / revision 2273
www/downloads.html: give each table a summary (mainly to keep tidy(1) quiet, in case we end up running it as part of the post-commit process), and give the spacing cells an explicit width (so they line up across tables as well as within tables).
2007-05-23 04:23:34 +0100 / enh / revision 2272
www/index.html: explicitly state that we recommend Java 6, and replace "Cygwin/Ruby" with "Cygwin" here too, now we believe that Ruby-specific Cygwin problems are a thing of the past.
2007-05-23 04:16:50 +0100 / enh / revision 2271
www/downloads.html: compress the Subversion instructions both vertically and – more importantly – horizontally, to avoid a scroll bar without needing to split the crontab entry across lines (at the cost of a worse suggested directory name).
2007-05-23 04:09:04 +0100 / enh / revision 2270
www/downloads.html: now it's no longer part of a list of architectures, "Building from Source" can go back to being called just that.
2007-05-23 04:05:35 +0100 / enh / revision 2269
www/downloads.html: I included one file size to see if it was possible to nest SSI directives, which we'd need to do to automatically list file sizes. It doesn't work, so out it comes.
2007-05-23 04:04:13 +0100 / enh / revision 2268
www/downloads.html: switch to a less verbose, more graphical format for the downloads, in the hope that it will seem less intimidating.
2007-05-22 06:51:33 +0100 / enh / revision 2267
www/downloads.html: mad reports:
"Windows x86" site:microsoft.com gets a lot of hits, including in the
context of being "the opposite of" x64.
so let's try to subtly hint that our .msi is 32-bit without being too verbose about it (and especially not getting in to the whole "everything but Terminator will be fine on x86 or x64, and even Terminator will work if you're using an x86 JVM on your x64 OS"). I still want to make this section less daunting, since we've done so much work to make installation "just work".
2007-05-21 20:06:07 +0100 / mad / revision 2266
bin/show-alert.rb: If we ever support "Windows Ruby", then the user might expect to stick one of our ".rbw" files on the desktop (and utilize the association between ".rbw" and the "Windows Ruby" rubyw.exe). This problem, that ruby-launcher is now taking care of for us, could then recur. That tempted me not to remove this code but, on looking more closely, it uses /proc, which ain't going to work with "Windows Ruby". At least Windows Ruby is unlikely to shoot itself in the foot with its setting of RUBYOPT.
2007-05-21 19:37:21 +0100 / mad / revision 2265
lib/installer.wxs: Run Ruby using ruby-launcher, in order to unset RUBYOPT and to give Ruby valid stderr (and stdout) file descriptors. We need to start in the Cygwin bin directory in order that ruby-launcher.exe can find cygwin1.dll. That means we need to give a full path to the (eg) bin/terminator script, which means the path will be in the Windows style - with spaces in the path and drive letters and backslashes. The shortcut executor seems to do the right thing with argv (coping with the spaces and quotes) and Cygwin Ruby (or cygwin1.dll) fortunately copes with the drive letters and backslashes.
I failed to find a way of reusing the existing DirectorySearch object (the help for DirectorySearchRef is impenetrable and there are no examples in the tutorial). Note the change in the Depth attribute. We need a depth of one here or the shortcut's working directory silently becomes empty (while still passing Orca validation).
2007-05-21 19:23:16 +0100 / mad / revision 2264
per-directory.make: Clearly I tested that change well. The effect was to link everything to the console subsystem. Well, that made a change from the previous, opposite error.
2007-05-21 06:33:42 +0100 / enh / revision 2263
src/e/ptextarea/BugDatabaseHighlighter.java: make a note of an alternative implementation.
2007-05-21 06:29:25 +0100 / enh / revision 2262
src/e/ptextarea/FileType.java:
src/e/ptextarea/PTextArea.java: if each PTextArea knows its own FileType...
src/e/ptextarea/RegularExpressionStyleApplicator.java: ..and all regular expression style applicators have the PTextArea available...
src/e/ptextarea/BugDatabaseHighlighter.java: ...the bug database highlighter can restrict itself to only linking comments in source code without losing the ability to link to bug databases in check-in comments and README files and the like.
2007-05-21 06:05:03 +0100 / mad / revision 2261
native/all/ruby-launcher/ruby-launcher.cpp: The promised code for ensuring that stderr (which is the motivating case, and stdout, for completeness) are opened before invoking Ruby, so that any warnings generated by Ruby libraries don't kill us by with EBADF.
2007-05-21 05:53:57 +0100 / enh / revision 2260
src/e/ptextarea/PAnchorSet.java: don't make a "clear" method publicly available when there's no need.
2007-05-20 23:58:14 +0100 / mad / revision 2259
native/all/ruby-launcher/ruby-launcher.cpp: Do the basic job. TODO: ensure stderr is open, try compiling on something (well, everything) other than Mac OS, hook in to Cygwin shortcut.
2007-05-20 23:56:58 +0100 / mad / revision 2258
native/all/ruby-launcher: New directory for a launcher for Ruby to shoot RUBYOPT in the head.
2007-05-20 23:03:51 +0100 / mad / revision 2257
www/cygwin-problems.html: I thought that correcting this section would make it shorter. If we did have a little C++ launcher, it could take responsibility for opening /dev/null as stderr (as well as unsetting RUBYOPTS). Then we could ditch fully half this page.
2007-05-20 22:38:08 +0100 / mad / revision 2256
www/cygwin-problems.html: I do think that what this sentence was trying to say was worthwhile, but it was a bit much for one sentence, which is perhaps what led to part of it being missed off. Perhaps the "you'll not be wanting to write your English homework in Evergreen" sentiment would be better elsewhere.
2007-05-20 17:50:39 +0100 / enh / revision 2255
src/e/gui/AboutBox.java:
src/e/gui/HelpMenu.java: I would have preferred not to have the ordering dependency, but the about box and help menu are naturally quite intimately related, and specifying the application's URL twice is a greater evil.
2007-05-20 07:46:39 +0100 / enh / revision 2254
www/navigation.html: I think the link to the "Features" section – which is the very next thing after the navigation bar – is a useless distraction and an actual impediment to grokking what's available.
2007-05-20 07:26:56 +0100 / enh / revision 2253
src/e/gui/HelpMenu.java: make a cleaner and more explicit assumption about the application's website layout.
2007-05-20 06:59:33 +0100 / enh / revision 2252
www/cygwin-problems.html: enumerate the other Cygwin Ruby startup problems we're aware of.
2007-05-20 06:53:40 +0100 / enh / revision 2251
www/cygwin-problems.html: correct the path to Terminator's log files, which moved a long time ago.
2007-05-20 06:51:44 +0100 / enh / revision 2250
www/downloads.html: make it a little clearer that it's Cygwin's Ruby we need, and condense the blurb.
2007-05-20 06:37:33 +0100 / enh / revision 2249
www/index.html: "cross-platform" is fundamental to jessies.org.
2007-05-20 06:31:11 +0100 / enh / revision 2248
www/downloads.html: add missing P tag.
2007-05-20 06:30:07 +0100 / enh / revision 2247
www/downloads.html: make it clear that Subversion is the recommended way to build from source, and explain why it's better than tarballs. Make it more likely that pasting the commands will work, and space out the sections with HTML commands for easier editing.
2007-05-20 06:22:47 +0100 / enh / revision 2246
www/downloads.html:
www/navigation.html: move the ChangeLog link to the navigation bar.
2007-05-20 06:09:16 +0100 / enh / revision 2245
www/downloads.html: pull the "Reporting a Bug" text...
www/bug-report.html: ...out into its own page...
www/navigation.html: ...and point the navigation bars there.
2007-05-20 06:03:56 +0100 / enh / revision 2244
www/downloads.html: don't imply the absence of 64-bit Linux packages.
2007-05-20 05:49:00 +0100 / enh / revision 2243
www/downloads.html: condense the download information a little.
2007-05-20 01:29:18 +0100 / enh / revision 2242
www/index.html: add a navigation bar.
2007-05-20 01:28:57 +0100 / enh / revision 2241
www/navigation.html: fix a broken link; the section is "Downloads", but the link's "verb" is "Download".
2007-05-20 01:24:12 +0100 / enh / revision 2240
www/navigation.html: an in-project navigation "bar".
2007-05-20 01:17:11 +0100 / enh / revision 2239
www/downloads.html: give all pages a link to the project's FAQ.
2007-05-20 01:14:57 +0100 / enh / revision 2238
www/downloads.html: add an anchor for the "Reporting Bugs" section.
2007-05-20 00:26:15 +0100 / enh / revision 2237
www/downloads.html: add an anchor so we can link to the auto-generated "Downloads" sections.
www/index.html: bring salma-hayek's own web page more into line with the new standard, and add a note about reducing the frequency at which Ubuntu nags you to upgrade.
2007-05-20 00:16:58 +0100 / enh / revision 2236
www/index.html: use a Terminator-style "Features" list.
2007-05-19 23:36:46 +0100 / enh / revision 2235
www/downloads.html: don't use breakable spaces in links that aren't sentences, because you can't tell how many links you're really looking at.
2007-05-19 23:33:52 +0100 / enh / revision 2234
src/e/gui/HelpMenu.java: provide a menu item to show the application's FAQ.
2007-05-19 23:29:38 +0100 / enh / revision 2233
www/downloads.html: remove an unmatched parenthesis.
2007-05-19 23:15:28 +0100 / enh / revision 2232
www/downloads.html: merge "Building from Source" into "Downloads". (The other "Building from Source" in salma-hayek's "index.html" is the one we link to, not this one, so I've removed the confusing anchor.)
2007-05-19 22:55:20 +0100 / enh / revision 2231
www/faq.html: add a FAQ, for consistency.
www/index.html: add a tag line, for consistency.
www/cygwin-problems.html: try to improve some upsetting grammar (which wasn't wrong, but was questionable and inconsistent). Add a note to the existing "why Cygwin?" section that was the main difference between this and the new "why Cygwin?" section I wrote in the FAQ, before remembering that we'd been here before.
2007-05-13 01:38:30 +0100 / enh / revision 2230
universal.make: stick to a case-sensitive file system for our Mac OS disk images, for the ease with which it lets us test running our applications from a case-sensitive file system (which has been broken before), but switch to an HFS variant, because it takes less space than UFS. See http://elliotth.blogspot.com/2007/05/choosing-best-disk-image-format-on-mac.html for a comparison.
2007-05-11 07:23:21 +0100 / enh / revision 2229
universal.make: create bzip2-compressed .dmg files. I include the raw data behind this choice:
Here are the results of making the current .dmg files with the few sensible options amongst the many choices hdiutil(1) provides:
default
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:50 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:50 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:51 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDCO
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:53 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:54 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:54 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDZO zlib-level=1
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:55 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:55 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:55 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDZO zlib-level=9
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:59 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 1M May 10 22:59 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:58 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDBZ
-rw-r--r-- 1 elliotth elliotth 1M May 10 22:56 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 1M May 10 22:56 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2M May 10 22:57 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDBZ (bzip2) has the disadvantage of only being available in Mac OS 10.4 and later, but we already require Java 5, which limits us to 10.4 or later anyway. This change will make life worse for 10.3 users, though: they won't even be able to get as far as double-clicking and getting our little error message about needing to upgrade. I don't know what 10.3 does when given a .dmg it doesn't understand, but I imagine it's not pretty.
Still, Mac users tend to upgrade swiftly, so I don't think this is a problem in practice. I'd have gone for UDZO with zlib-level=9 if it had performed as well, because that would have been compatible with older releases, but it's not as good.
Ah... hang on... these results are misleading. Mac OS' "ls -h" only shows integers, and uses round-to-zero! Let's start again from scratch with uglier but more accurate data...
default
-rw-r--r-- 1 elliotth elliotth 2433733 May 10 23:09 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2112598 May 10 23:08 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2651413 May 10 23:08 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDCO
-rw-r--r-- 1 elliotth elliotth 2409338 May 10 23:07 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2174589 May 10 23:07 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2836274 May 10 23:07 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDZO
-rw-r--r-- 1 elliotth elliotth 2324225 May 10 23:06 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2112597 May 10 23:06 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2786125 May 10 23:05 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDZO zlib-level=9
-rw-r--r-- 1 elliotth elliotth 2202219 May 10 22:59 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2066401 May 10 22:59 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2671822 May 10 22:58 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
UDBZ
-rw-r--r-- 1 elliotth elliotth 1958677 May 10 23:04 evergreen/.generated/universal_Darwin/bin/evergreen-4.104.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2019296 May 10 23:04 scm/.generated/universal_Darwin/bin/scm-2.8.2228.dmg
-rw-r--r-- 1 elliotth elliotth 2522046 May 10 23:05 terminator/.generated/universal_Darwin/bin/terminator-5.32.2228.dmg
So there's not all that much in it. We save between 100KiB and 500KiB. That's better than nothing, but not nearly as good as I'd hoped for. Still, bzip2 is the clear winner in size terms, and I don't think we lose much by further excluding 10.3 users. The download link already says "For Mac OS 10.4".
The two highest compression choices (UDBZ and UDZO zlib-level=9) felt noticeably slower than the others, but I've ignored time in all this, because we don't build the .dmg often enough (or interactively enough) for that to be a consideration.
BTW, I'd been using du(1) this morning, and "du -h" does provide more useful (non-integer) results.
2007-05-11 01:55:13 +0100 / mad / revision 2228
per-directory.make: I made the other change but forgot to check it in. Too many other changes lying around.
2007-05-11 01:26:30 +0100 / mad / revision 2227
universal.make: Prevent spurious rebuilds. Touching the sentinel before the build starts was all very well for indicating when the source has changed during compilation, but the classes directories were getting touched by the compiler afterwards. That meant that it appeared that someone had (potentially) deleted some class files, so it looked like we should rebuild. Actually, we should rebuild if someone truncates or otherwise tampers with the class files too.
2007-05-10 22:56:06 +0100 / mad / revision 2226
per-directory.make: Fix non-Cygwin builds. Sigh, that non-idiomatic code lasted a long time.
2007-05-10 22:42:52 +0100 / enh / revision 2225
bin/package-for-distribution.rb: when we know we're talking to Bash, we may as well use the more descriptive "--login".
2007-05-10 21:52:52 +0100 / mad / revision 2224
per-directory.make: Given that no-one's noticed that we've been only distributing Windows subsystem binaries, let's abandon the *w.exe variant and just link everything with the Windows subsystem.
bin/invoke-java.rb: That requires a change here. This brings the installer size down from ~1.8MiB to ~1.6MiB.
2007-05-10 21:35:20 +0100 / mad / revision 2223
per-directory.make: When I "discovered" that EXECUTABLES.Cygwin didn't contain all of the Cygwin executables, I thought that was a mistake. Why I didn't stop to think that maybe I'd deliberately separated off the ones that needed linking with the Windows subsystem, I don't know. I know what I was thinking - that it was a deviation from the idiom. So let's try a different deviation from the (declarative) idiom to see if that's more robust under maintenance.
bin/invoke-java.rb: That mistake misled me grievously here and in the check-in comment for the previous change to these lines. The check-in comment does effectively record what should be the difference between Windows and Console subsystem applications:
The disadvantage of Windows subsystem applications is that they can't do stdio unless they're started from Cygwin applications.
The disadvantage of Console subsystem applications is that they pop up "a DOS box" when you run them from a Windows application (like a desktop shortcut).
This output from objdump misled me horribly today:
$ g++ ./hello.cpp
$ objdump -p a.exe | grep -i subsys
MajorSubsystemVersion 4
MinorSubsystemVersion 0
Subsystem 00000003 (Windows CUI)
$ g++ ./hello.cpp -Wl,--subsystem,windows
$ objdump -p a.exe | grep -i subsys
MajorSubsystemVersion 4
MinorSubsystemVersion 0
Subsystem 00000002 (Windows GUI)
$
So "3 (Windows GUI)" actually means "Console" and "2 (Windows GUI)" actually means "Windows".
2007-05-10 20:09:06 +0100 / mad / revision 2222
universal.make: http://cygwin.com/ml/cygwin/2006-06/msg00865.html suggests that Cygwin's been ready for DWARF-2 as the default debugging format since the middle of last year. The compiler hasn't switched over yet but it seems to work. pty.dll's size comes down from ~1.5MiB to ~0.5MiB with that change. Sadly, the installer's size only comes down from ~2.5MiB to ~1.8MiB. (And, yes, I did remember to rebuild salma-hayek (and check that it worked).)
2007-05-10 19:10:39 +0100 / mad / revision 2221
lib/installer.wxs: Fix Orca failures:
ICE57 ERROR Component 'RubyShortcut_HKCU' has both per-user data and a keypath that can be either per-user or per-machine.
ICE57 ERROR Component 'RubyShortcut_HKLM' has both per-user data and a keypath that can be either per-user or per-machine.
I haven't run Orca for a while.
A long time ago, I knew I had to install the shortcut under HKCU, even if I'm installing everything else in HKLM. The check-in comment there said [
Distressingly, because we install a shortcut to a file we didn't install, we seem to have to install a registry key under HKCU. This isn't just me trying random things - they made me do it:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/ice43.asp
].
2007-05-10 06:57:30 +0100 / enh / revision 2220
src/e/ptextarea/PRubyTextStyler.java: despite the fact that there are more provisos than code here, I've been using this for five months now, and I wouldn't want to be without it when working on Ruby scripts that are dense in regular expressions.
2007-05-10 06:33:41 +0100 / enh / revision 2219
bin/package-for-distribution.rb: compression reduces Terminator's JAR file by 300KiB, and with Java 6 on Linux and Mac OS I'm not able to reproduce the slow-down I once claimed.
2007-05-09 05:07:55 +0100 / enh / revision 2218
src/e/util/FileUtilities.java: I didn't implement my intention here, which was that the user's path should take precedence; only if we can't find our script on the path should we start trying to be clever. That way neither developers nor end-users lose out.
2007-05-07 23:09:17 +0100 / car / revision 2217
www/footer.html: Chris tires of waiting. And waiting.
2007-05-06 22:41:17 +0100 / mad / revision 2216
universal.make: While accepting that it's quite usual for make-based systems to have race conditions if you change a source file during compilation, Elliott notes that we have an unusually long window during Java compilation, which bit him. He suggested touching the sentinel file back to the date of the start of compilation, but I'd rather not get involved with timestamp granularity and, particularly, bash variables.
Add that to list of things I'd expect to be catered for by a replacement for make. It should also know when a compilation hasn't completely succeeded, even if the make tool is killed without being able to clean up the targets (disk-full is more common reason that kill -9). This sentinel file nonsense wants to be handled by the tool, so it's worth spending the effort to do it right, because the benefit will be shared by all targets.
2007-05-06 20:03:45 +0100 / enh / revision 2215
src/e/util/Rewriter.java: Roger Millington provides another useful enhancement to this class, allowing callers to supply their own StringBuffer and have the replacement appended to it. (We're forced to use StringBuffer rather than Appendable because of java.util.regex.Matcher. See Sun bug 5066679.)
2007-05-06 18:31:54 +0100 / enh / revision 2214
native/Darwin/LSFindApplicationForInfo/LSFindApplicationForInfo.mm: a Mac OS utility to return a path to an application specified by bundle id. A variant of this would let us compile small binaries with hard-coded script and bundle id that would forward to the relevant script. This would let us provide relocatable (in the file system) binaries that could be installed in /usr/bin/ and which would find the corresponding application regardless of where it had been installed.
src/e/util/FileUtilities.java: a new method, FileUtilities.findScriptFromBundle that (at the cost of forcing callers to specify a bundle id) frees callers from worrying about whether one of our scripts is actually on the user's path.
2007-05-06 18:26:24 +0100 / enh / revision 2213
native/Darwin/LSFindApplicationForInfo: new directory.
2007-05-06 03:27:32 +0100 / enh / revision 2212
src/e/tools/FatBits.java: make the window a bit wider too, to better accommodate our newly-widened content.
2007-05-06 03:18:16 +0100 / enh / revision 2211
src/e/tools/FatBits.java: display color values in both hex and decimal. Rearrange the UI to make room, and lose the circular preferences button on Mac OS, which was ugly and less convenient than command-, anyway.
src/e/gui/CircularButton.java: we don't need this any more.
2007-05-05 21:25:23 +0100 / mad / revision 2210
bin/ensure-repository-orthography.rb: The svn switch command is as obtuse, in a different way, as bk parent. I could mail round a copy-and-paste command but it would be quite long, because the URL includes the user name and we wouldn't want to mess up anyone who's using anonymous svn access. It would be nice to run this automatically after everyone updates but I haven't thought of a robust way to do that. So we'll have to rely on people running it manually. Hopefully everyone updates often enough to get this script before we turn off svn access to Evergreen-with-a-capital-E.
bin/make-new-project: We've already started suggesting that people check-out using "evergreen" rather than "Evergreen" as the directory name.
parent.make: Unlike nightly-build.rb, which goes looking for files in the child directories, this script relies on a list of known projects.
www/header.html: The URL orthography is now all lower-case.
2007-05-04 02:36:23 +0100 / mad / revision 2209
bin/show-alert.rb: If something in the invoker scripts were to write the stdout, then we'd die on Cygwin, hopefully with an alert. Which is worse, hiding the output or failing to run? On other platforms, we'd hide the output. Let's do that on Cygwin too, even though the output's quite possibly platform-specific, so we may never find out about it.
2007-05-01 21:59:04 +0100 / mad / revision 2208
www/downloads.html: Chris gives the OK for publishing our anonymous, read-only Subversion URLs. I'm sure there will be more changes - we'd rather people sent svn diff patches than using the tarballs - but this is a start.
2007-04-30 19:25:01 +0100 / mad / revision 2207
bin/show-alert.rb: The work-around for "Insecure world writable dir" warnings killing our desktop shortcuts on Windows isn't Terminator-specific. When it was written, there probably wasn't a single place where we could put a fix. Now there is. Adding this means that its name isn't right but that's a much nicer problem to have than either having three bugs or having four copies of the fix!
2007-04-30 19:09:59 +0100 / mad / revision 2206
bin/invoke-java.rb: Gain the custom Cygwin launcher support from Terminator and lose the support for letting the application decide on the launcher. Lose the support for changing the dock name after we've been constructed. That's just asking for us to do something dependent on the DEBUGGING_TERMINATOR name, only to have the variable's name changed under our feet. A read-only accessor would be fine but we don't currently need it.
By using the same launcher for all Windows applications, we'll always use the same jvm.dll. Previously, we might have been in a situation where Terminator worked and Evergreen didn't. We were previously not checking the Java version on Cygwin when running anything but Terminator. The comment explaining why wasn't quite right.
When it was originally checked-in, the Terminator version of this code used "launcher" rather than "launcherw" when DEBUGGING_TERMINATOR was set. The check-in comment says that this allowed to us to see the Log.java output in the console subsystem window which would pop-up if run from a shortcut to ruby.exe (instead of our normal rubyw.exe). This no longer works on my Cygwin installation, which is now running 1.5.21. Now, regardless of the subsystem of the launcher, I see Java stdio output in my rxvt or Terminator or Evergreen errors window. Now, regardless of the subsystem of the launcher, I don't see Java stdio output in cmd.exe or the Cygwin shortcut window or the window popped up by a shortcut to ruby.exe.
I used this as my test code:
/software.jessies.org/work/salma-hayek/.generated/i386_Cygwin/bin/launcherw -classpath c:/cygwin/software.jessies.org/work/salma-hayek/.generated/classes e/tools/JavaHpp badger
2007-04-30 17:29:31 +0100 / mad / revision 2205
www/index.html: Even if you were already using Ubuntu for development, you likely won't have all the packages you need. Especially given that we already list some of the more well-known programs that you need, any user wanting to build will likely think they already have everything, then be annoyed to find they need fakeroot, then be annoyed to find they need alien.
2007-04-30 16:17:25 +0100 / enh / revision 2204
src/e/gui/DebugMenu.java: add a new "Key Event Tester", similar to Sun's Java Tutorial's KeyEvent demo, so we don't have to send people there next time we have international keyboard trouble. (Another advantage of this code is that it will definitely be running in the same JVM, and it prints the KeyEvent directly, rather than mangling it for "readability".)
2007-04-30 06:39:25 +0100 / enh / revision 2203
src/e/gui/DebugMenu.java: the distinction between "list" and "show" was a mistake, and "Timers" and "Stopwatches" were indistinct enough that I was having to stop and think. Hopefully saying "Swing Timers" will make things more obvious.
2007-04-30 01:25:22 +0100 / enh / revision 2202
src/e/util/GuiUtilities.java: choose our default monospaced font more carefully, so we can take advantage of the fallbacks provided by the "Monospaced" logical font where possible. This won't affect Mac users (who remain well off) or Windows users (who remain screwed), but will improve things for Linux and Solaris users.
2007-04-29 00:28:02 +0100 / enh / revision 2201
src/e/gui/AboutBox.java: the .class files have moved down a level in the directory hierarchy, so we need to look further up for "build-revision.txt".
2007-04-28 06:33:24 +0100 / enh / revision 2200
bin/show-alert.rb: add a new method that reports any exceptions thrown by the given block.
bin/invoke-java.rb: use it to simplify our uncaught exception handling.
2007-04-28 05:26:07 +0100 / enh / revision 2199
bin/invoke-java.rb: there's still enough variation in our GUI start-up scripts to suggest that we're not ready to factor them out yet, but our command-line tool scripts (both of them) are identical, and – other than JNI – it's hard to imagine any need for them to be any different.
bin/javahpp.rb:
tests/indenter: use the new API.
2007-04-27 18:33:55 +0100 / mad / revision 2198
bin/invoke-java.rb: Write the exception handler in closer to the same form as used by bin/terminator and bin/evergreen. I could move launch() to show-alert.rb but I'm more tempted to add an UncaughtExceptionHandler.rb class/file and to "derive" Terminator, Evergreen and Java from it. What does the panel think?
2007-04-27 17:59:18 +0100 / mad / revision 2197
bin/show-alert.rb: It turns out that we can ignore the SystemExit exceptions here without an unwarranted amount of code. I have some sympathy with Elliott's argument that we could use exit!() everywhere but I have a bad feeling about that. The only compelling substantiation I can provide for that bad feeling is that we aren't doing it as an idiom:
martind@duezer:~/software.jessies.org/work$ sgrep '\bexit[^!]' | grep '\.rb:' | wc -l
23
martind@duezer:~/software.jessies.org/work$
We ought to be able to pay once for this wrinkle and not have to think about it elsewhere. A better way to do that, than I've done here, would be to abstract-out the three copies of this exception handler and "rescue SystemExit" separately. I don't think that's too hard either, but this is a step towards collapsing the duplicates.
If I'm going to abbreviate standard class names in identifiers, then, these days, I like to use the first two letters rather than just the first letter. In particular, there's a lot of precedent for "Exception ex".
bin/invoke-java.rb: We can go back to plain exit() now, following the other idiom we have that "! methods are a bad idea". I forget the motivating example for that, but then that's the idea - to be able to program effectively, without having to remember all the gotchas, by following a few pidgin rules.
2007-04-27 17:19:53 +0100 / mad / revision 2196
bin/show-alert.rb: Canonicalize the indentation. The indentation guesser still doesn't do the job, but then it's not aware of the file type and it's brace-structured language assumption doesn't hold well for Ruby.
2007-04-27 07:18:37 +0100 / enh / revision 2195
src/e/util/SpellingChecker.java: time our back-end, and include its greeting in the log, so we know what version we've been talking to.
2007-04-27 00:36:48 +0100 / mad / revision 2194
universal.make: Support a new "test" target, in almost exactly the same form as I suggested to Phil, off the cuff.
bin/filter-build-output.rb: Relax the regular expression so that my "Testing..." message comes out. That's all that comes out unless run_tests returns a failure, in which case we'll see all the output...
tests/run_tests: ... so we should return failure if we see anything unexpected. At the moment, I only do this if we see an unexpected failure on any test. We should consider returning failure for an unexpected success, which would indicate that the test needs changing.
simple.make: "Publish" the new target to any human reader.
2007-04-27 00:22:52 +0100 / mad / revision 2193
src/e/testing/PIndenterTester.java: Yesterday, by replacing the bash invoker script with our standard Ruby script, I lost the usage test. Put it back, in a proper language. The message is slightly different because our Ruby script knows how to pass all of the arguments, rather than just the first one.
2007-04-26 17:23:42 +0100 / mad / revision 2192
bin/nightly-build.rb: Don't tell make to clean and native-dist at the same time - there's no dependency between them to tell make to do the clean first. This bug's been there forever. I did wonder about it when shaking my head over this script's previous insistence on my having a ~/Projects but it's never caused a problem before. Today it does:
martind@wide:~/software.jessies.org/nightlies/terminator$ ../salma-hayek/bin/nightly-build.rb ~martind/software.jessies.org/nightlies/ clean native-dist
-- Updating "salma-hayek"
At revision 2191.
-- Building "salma-hayek"
make[1]: Entering directory `/home/martind/software.jessies.org/nightlies/salma-hayek'
mkdir -p .generated && \
ruby -w -ne '($_.match(/^ *(\S+)\s*[:+]?=/) || $_.match(/^\s*define\s*(\S+)/)) && puts("LOCAL_VARIABLES += #{$1}")' /home/martind/software.jessies.org/nightlies/salma-hayek/per-directory.make | sort -u > .generated/local-variables.make
make[1]: Leaving directory `/home/martind/software.jessies.org/nightlies/salma-hayek'
make[1]: Entering directory `/home/martind/software.jessies.org/nightlies/salma-hayek'
rm -f -r ChangeLog ChangeLog.html .generated && \
find . -name "*.bak" | xargs rm -f
make[1]: *** No rule to make target `.generated/classes', needed by `.generated/java.sentinel'. Stop.
make[1]: Leaving directory `/home/martind/software.jessies.org/nightlies/salma-hayek'
This affects the Mac OS build on hydrogen, where Elliott uses the same invocation of nightly-build.rb to clean and native-dist. ithaki.sh only does the clean once, then builds once on wide and once on ithaki.
bin/mdorey.sh: If Elliott uses that form on Mac OS, I should use it on Windows too, so there's more chance I'd have tested it.
2007-04-26 17:03:06 +0100 / mad / revision 2191
universal.make: The exit 1 here was having two effects - stopping us from overwriting the latest symlink with an identical symlink and dumping all the output from this rule onto stderr. If we remove the exit 1, then, the symlink won't be a problem but we need to write the error message that we still want to see in a form which will get through filter-build-output.rb.
This reduces the verbosity of the nightly build "failures" when nothing's changed, while still letting us know that nothing's changed.
2007-04-26 03:16:10 +0100 / mad / revision 2190
universal.make: Per my code-comment of the other day about the difference between INSTALLERS and PUBLISHABLE_INSTALLERS, installer should only depend on the latter.
2007-04-26 03:12:45 +0100 / mad / revision 2189
parent.make: Now that the phony rebuilds of Java are out of the way, the next one is the phony rebuilds of the installers. I remember sighing when the PHONY .app target went in, knowing we'd be here one day, trying to get rid of it. Make it easier to test, though make installer in salma-hayek fails horribly. (native-dist has a special case.)
2007-04-26 03:05:48 +0100 / mad / revision 2188
universal.make: Let's clean up the old classes/ directories we've been leaving lying around as a side-effect of compilation for a day or two, to make sure we get the bugs ironed out.
2007-04-26 02:00:39 +0100 / mad / revision 2187
universal.make: We don't want to always make the Java compilation dependent on the .generated directory, or it'll recompile spuriously. Fixing that makes the code more intention-revealing, if longer. Write the wildcards in a more idiomatic form.
2007-04-26 01:48:32 +0100 / mad / revision 2186
bin/make-new-project: The .jar file isn't in the project root directory any more.
tests/indenter: Lose the usage checking, which is unfortunate, but gain invoke-java.rb's knowledge of the classes/ directory's location (and correct handling of symlinks to this script).
2007-04-26 01:41:51 +0100 / mad / revision 2185
universal.make: Change all the references to classes/ to read .generated/classes/ , including the subtle, effective "classes/../" that I just added in the previous check-in. Abandon the tricksy .jar rule that we haven't used for ages - the one we are using is in...
bin/package-for-distribution.rb: ... which wants to put its classes.jar in the .generated directory too...
bin/invoke-java.rb: ... where we need to look for it when invoking. Just above this line is the comment that explains why the developers no longer use classes.jar.
per-directory.make: Fish the classes out of their new location when calling javahpp.
bin/make-new-project:
dist-exclude: I'm not sure how these two lists are related. They look like they might want collapsing. Neither of them need the classes/ directory anymore.
This is all a bit rushed - I've likely broken something.
2007-04-26 01:10:20 +0100 / mad / revision 2184
universal.make: Fix the problem signposted in my previous check-in. Elliott suggests moving classes/ into .generated/, which I've long wanted to do, but I'd still have to cope with it being deleted. I can do that in the same way as I cope with individual .class files being deleted - by depending on its parent directory. So let's fix the immediate problem first and worry about tidying up classes/ later.
2007-04-26 00:57:13 +0100 / mad / revision 2183
universal.make: We've never been able to work out when we don't need to recompile the Java. The problem comes about because we don't know which .class files are generated. One .java file can generate several .class files. If one of the inner classes' .class files disappears, how will we know to rebuild? This could plausibly happen if someone hits Ctrl-C during the compilation (or we run out of disk space or...).
We can guard against incomplete compilations by using a sentinel file - one that's touched after a successful compilation. If some mechanism then causes an inner class's .class file to be deleted, that will touch its directory timestamp. If one of the subdirectories of classes/ is removed wholesale, that will touch its parent directory's timestamp.
The Java also needs recompiling if any source files have been added or deleted. Added source files are easy and deleted ones we can handle with directory dependencies, as proposed above for .class files. We need to jump through one hoop to stop rebuilds on every svn update. svn update touches its .svn directories and I don't think we care about those.
This all smacks of thinking I'm smarter today than I was before. I've (only) found one problem so far - if I remove classes/ (but not .generated/), then classes/ doesn't get regenerated. That can wait for the next check-in.
per-directory.make: The rule for generating the JNI .class file on a dependency of all the Java source was a pretty safe way of speeding up "make native" for Terminator, by removing the need for it to recompile the Java every time. It wasn't quite safe, in that removing a .java file or a .class file wouldn't cause a recompilation, but that never caused a problem in practice. If the sentinel works, though, we can have complete safety and still not pay for recompilation every time, as we would have, were we to have depended on the old build.java.
Note that this doesn't cause the JNI C++ to recompile every time the Java is recompiled. We generate a new JNI header every time the Java is recompiled, as we should, but we only overwrite the copy we compile if it's changed.
2007-04-25 23:51:16 +0100 / mad / revision 2182
per-directory.make: When I renamed universal.make's SOURCE_FILES macro to JAVA_SOURCE_FILES, I missed this usage.
2007-04-24 06:11:04 +0100 / enh / revision 2181
bin/find-jdk-root.rb: Kees Jongenburger explains how to find the user's chosen JDK on Gentoo.
2007-04-23 21:01:29 +0100 / pcn / revision 2180
src/e/testing/PIndenterTester.java: Remove some unnecessary debugging info, and add a global error counter. Also the ability to exit with a non-zero error code when we fail one or more tests.
tests: The main directory for all tests.
tests/run_tests: The script which searches for tests (files in *_files/*) and runs their test script, and then presents the results.
tests/indenter: A tester script for the PIndenterTester.
tests/indenter_files:
tests/indenter_files/BrokenLines.java:
tests/indenter_files/SimpleStructureTest.java: Some initial simple Java indentation test files. The BrokenLines one will fail. Note the cunning comment: as long as the string '***EXPECTED TO FAIL***' appears somewhere in the file, the test will be expected to fail, and won't spam you with failure details.
2007-04-23 18:34:05 +0100 / mad / revision 2179
universal.make: The distinction between INSTALLERS and STANDALONE_INSTALLERS wasn't just useful for the defunct salma-hayek.msm. But, now that installer is defunct, the "standalone" part of the name could use improvement (even more than previously).
2007-04-23 18:20:29 +0100 / mad / revision 2178
universal.make: Chris had a problem connecting with ssh to software@jessies.org in these rules. He noted that we were trying to symlink to a package that didn't exist. Looking at the rules, that wasn't part of his problem - we always do that - but it's confusing and opens a window in which a failure will leave us with a dangling symlink for the latest version of a package. So I've reversed the dependency between the upload and symlink-latest rules.
I've looked at the history and this dates from when only the Linux packages' names contained the version numbers. I hook the symlink-latest rule into the dependency chain with a little hack, to keep the code small and isolated. I forgot to signpost it and so forgot to revisit that when I decided that the version numbers would be useful on the other platforms too (in order to make it easier to keep the last few versions around).
I'm not sure why I implemented the dependency for INSTALLERS rather than STANDALONE_INSTALLERS. Now there's no longer a WiX "installer" for salma-hayek, I'm not sure there's any value in the distinction but, if I'm keeping it, I should use it consistently. And if I'm getting rid of it, that should be a separate check-in.
2007-04-23 05:22:24 +0100 / mad / revision 2177
bin/invoke-java.rb: Oops, I intended to move (rather than copy) this comment to the check-in comment.
2007-04-23 05:21:06 +0100 / mad / revision 2176
bin/invoke-java.rb: Support i386 Terminator packages running on machines with amd64 kernels. If we add the wrong architecture's library directory to java.library.path, System.loadLibrary can fail with an exception like "Can't load AMD 64-bit .so on a IA 32-bit platform", without ever trying to load the compatible library that's later in the path. We could try to work out the JVM's architecture from the Ruby script or try to work out where the Ruby script put the compatible library from the Java but both approaches sound likely to introduce extra problems when porting to a different platform or a different vendor's JRE. (Although the latter seems an unlikely thing for us to care too much about, we've heard of users apparently successfully running Terminator using non-Sun JREs.)
src/e/util/FileUtilities.java: So let's try iterating over all the extant library directories, trying to load the library from each in turn, in no particular order. I presume that only one will succeed and that there'll be no significant penalty for failure.
Is FileUtilities the right home? I looked at a few other files and debated adding a new one (with myself).
This change will require a Terminator check-in to load "pty" using this new method. Phil might have a JNI debugger project that will also need changing, now I've removed the setting of java.library.path.
2007-04-22 23:23:02 +0100 / enh / revision 2175
src/e/util/SpellingChecker.java: Kees Jongenburger points out that ispell(1) is falling out of favor; we used to support aspell(1) as a back-up, but removed it in 2004 when the only person known to be using it complained it was slow. Let's make it the default so we can properly investigate any slowness (assuming computers and aspell(1) itself haven't closed the gap with ispell(1) in the intervening years). I've also merged the Mac OS case with the others, and tidied up all the log messages. We now work out of the box on Mac OS and Ubuntu (previously we only worked out of the box on Mac OS).
2007-04-22 21:42:40 +0100 / mad / revision 2174
bin/invoke-java.rb: I was conscious that the URL I gave before wasn't necessarily the best, and I just stumbled across what might be a better choice. The message is also a bit long, although that's perhaps not a problem unless you're already a Terminator user.
2007-04-22 08:03:56 +0100 / enh / revision 2173
src/e/debug/EventDispatchThreadHangMonitor.java: although the time we should notice a hang after is small and fixed, and the extra milliseconds might even be interesting, the "unstuck" time can be arbitrarily long, so rather than say "211885 ms", let's say "3m31s" instead.
src/e/util/TimeUtilities.java: add a convenience function for the other popular Java unit of time, the millisecond.
2007-04-22 07:53:35 +0100 / enh / revision 2172
src/e/debug/EventDispatchThreadHangMonitor.java: it seems that we don't always get a COMPONENT_SHOWN ComponentEvent; in particular, the built-in tests running on Java 7-b11 don't. So accept a WINDOW_OPENED WindowEvent too. Also do the whole GuiUtilities.initLookAndFeel thing when testing, for added realism, and use Log more consistently.
2007-04-22 02:21:09 +0100 / enh / revision 2171
src