https://github.com/nershman/textmate/tree/21344807911579c144bdc7b5004183d0e98363a3 21344807911579c144bdc7b5004183d0e98363a3
Avoid potential crash by not updating window's opaque property: 6ffd0f2e92466355de0e81ed915b8e32daa8a3de 6ffd0f2e92466355de0e81ed915b8e32daa8a3de
This does completely remove support for transparent themes, but any recent version of macOS would not support it anyway due to layer-backed views.
The crash resulting from setting opaque is because of recursion: After session restore, the window will calculate shadow, this triggers a “user defaults did change” notification, which updates theme of text view, which sets opaque, which re-calculates shadow and tries to recursively obtain a non-recursive mutex.
https://github.com/nershman/textmate/commit/6ffd0f2e92466355de0e81ed915b8e32daa8a3de
https://github.com/nershman/textmate/tree/66c1bc7f78c96076d0e8148bd7cc9835cd8207cb 66c1bc7f78c96076d0e8148bd7cc9835cd8207cb Clear background when using a theme with transparent background
This partially reverts 6ffd0f2
While we do not support transparent themes per se, we still use the alpha colors and thus would previously fill the background using alpha, into a layer that we hadn’t previously cleared.
You can download TextMate from here.
You can use the TextMate mailing list or #textmate IRC channel on freenode.net for questions, comments, and bug reports.
You can also contact MacroMates.
Before you submit a bug report please read the writing bug reports instructions.
To build TextMate, you need the following:
- boost — portable C++ source libraries
- Cap’n Proto — serialization library
- multimarkdown — marked-up plain text compiler
- ninja — build system similar to
make - ragel — state machine compiler
- sparsehash — a cache friendly
hash_map
All this can be installed using either Homebrew or MacPorts:
# Homebrew
brew install boost capnp google-sparsehash multimarkdown ninja ragel
# MacPorts
sudo port install boost capnproto multimarkdown ninja ragel sparsehash
After installing dependencies, make sure you have a full checkout (including submodules) and then run ./configure followed by ninja, for example:
git clone --recursive https://github.com/textmate/textmate.git
cd textmate
./configure && ninja TextMate/run
The ./configure script simply checks that all dependencies can be found, and then calls bin/rave to bootstrap a build.ninja file with default config set to release and default target set to TextMate.
You should install the Ninja bundle which can be installed via Preferences → Bundles.
After this you can press ⌘B to build from within TextMate. In case you haven't already you also need to set up the PATH variable either in Preferences → Variables or ~/.tm_properties so it can find ninja and related tools; an example could be $PATH:/usr/local/bin.
The default target (set in .tm_properties) is TextMate/run. This will relaunch TextMate but when called from within TextMate, a dialog will appear before the current instance is killed. As there is full session restore, it is safe to relaunch even with unsaved changes.
If the current file is a test file then the target to build is changed to build the library to which the test belongs (this is done by setting TM_NINJA_TARGET in the .tm_properties file found in the root of the source tree).
Similarly, if the current file belongs to an application target (other than TextMate.app) then TM_NINJA_TARGET is set to build and run this application.
For the TextMate.app application there are two symbolic build targets:
ninja TextMate # Build and sign TextMate
ninja TextMate/run # Build, sign, and (re)launch TextMate
To clean everything run:
ninja -t clean
Or simply delete ~/build/TextMate.
The source for TextMate is released under the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
TextMate is a trademark of Allan Odgaard.
