下载地址:https://api.textmate.org/downloads/release
from https://macromates.com/download
-----------------------------------
Building
Bootstrap
To bootstrap the build you need to run
./configure
(in the root of the source tree). You can set a few (environment) variables read by this script that change the generated build file:builddir
— location of built files. Defaults to~/build/TextMate
.identity
— for Apple’scodesign
. Defaults to ad-hoc signing, which does not use an identity at all.boostdir
— location of boost includes. By default it will search various locations including MacPorts and Homebrew.sparsedir
— location of sparsehash includes. By default it will search various locations including MacPorts and Homebrew.CC
andCXX
— C and C++ compiler.
In the simplest case you would run:
git clone https://github.com/textmate/textmate.git
cd textmate
git submodule update --init
./configure && ninja
Please note that if you downloaded the source code (rather than cloned via git) you likely miss the submodules and the build will therefore fail.
Prerequisites
To build the source the following must first be installed on your system:
- ninja — build system similar to
make
- ragel — state machine compiler
- boost — portable C++ source libraries
- sparsehash — A cache friendly hash_map
- multimarkdown — marked-up plain text compiler
- mercurial — distributed SCM system
- Cap’n Proto — serialization library
You need to manually install Cap’n Proto if you're not using homebrew. To install the other dependencies via MacPorts run:
sudo port install ninja ragel boost multimarkdown mercurial sparsehash
If
port
fails with a build error then likely you need to agree (system-wide) to Apple’s Xcode license:sudo xcodebuild -license
To install using homebrew run:
brew install ragel boost multimarkdown hg ninja capnp google-sparsehash
In practice
hg
(mercurial) is only required for the SCM library’s tests so you can skip this dependency if you don’t mind a failing test.OS X 10.7 (Lion)
If you are on OS X 10.7 you need
pgrep
and pkill
(used by the “relaunch” build targets). To install using MacPorts:sudo port install proctools
Or using homebrew:
brew install proctools
Building from within TextMate
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:/opt/local/bin
.
The default target 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.Build Targets
The build system classifies a target either as a library or an application. The latter can either be a bundled or non-bundled application. E.g.
mate
is non-bundled (just a mate
executable) where TextMate.app
is a bundled application.
For each output there are a few symbolic targets you can build. While the examples below refer to a specific library or application, they exist for all targets of same type.
For the
io
library:ninja io # Build the io library and run tests.
ninja io/coerce # Build the io library and skip tests.
ninja io/clean # Remove the build folder for the io library.
ninja io/headers # Copy exported headers to $builddir/include.
For the
mate
(non-bundled) application:ninja mate # Build the mate executable.
ninja mate/run # Build and run the mate executable.
ninja mate/clean # Remove the build folder for the mate executable.
For the
TextMate.app
application:ninja TextMate # Build and sign TextMate.app.
ninja TextMate/run # Build, sign, and run TextMate.app.
ninja TextMate/clean # Remove the build folder for TextMate.app.
ninja TextMate/dsym # Create a tarball with extracted dSYM files.
ninja TextMate/tbz # Create a tarball of TextMate.app. Also produce the dsym tarball.
ninja TextMate/deploy # Push a nightly build. Fails without proper credentials :)
Note that
ninja TextMate/clean
only cleans the TextMate build folder ($builddir/Applications/TextMate
), but all libraries and applications it depends on are not cleaned.
To clean everything run:
ninja -t clean
from https://github.com/textmate/textmate
---------------------------------------------
Mac平台的开源文本编辑器TextMate
TextMate是Mac下适合程序员使用的开源文本编辑器软件,基于GPL开源。出色的界面、强大的宏定义、可下载和编辑的宏定义包(bundles)等功能帮助开发者提高效率。
下载:https://github.com/textmate/textmate