# TextMate **Repository Path**: mirrors/TextMate ## Basic Information - **Project Name**: TextMate - **Description**: TextMate是Mac下的著名的文本编辑器软件,与BBEdit一起并称苹果机上的Emacs和Vim - **Primary Language**: C/C++ - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: https://www.oschina.net/p/textmate - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2020-06-10 - **Last Updated**: 2026-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TextMate ## Download You can [download TextMate from here](https://macromates.com/download). ## Feedback You can use [the TextMate mailing list](https://lists.macromates.com/listinfo/textmate) or [#textmate][] IRC channel on [freenode.net][] for questions, comments, and bug reports. You can also [contact MacroMates](https://macromates.com/support). Before you submit a bug report please read the [writing bug reports](https://github.com/textmate/textmate/wiki/writing-bug-reports) instructions. ## Screenshot ![textmate](https://raw.github.com/textmate/textmate/gh-pages/images/screenshot.png) # Building ## Setup To build TextMate, you need the following: * [boost][] — portable C++ source libraries * [Cap’n Proto][capnp] — 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][]: ```sh # 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: ```sh 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`. ## Building from within TextMate You should install the [Ninja][NinjaBundle] 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. ## Build Targets For the `TextMate.app` application there are two symbolic build targets: ```sh ninja TextMate # Build and sign TextMate ninja TextMate/run # Build, sign, and (re)launch TextMate ``` To clean everything run: ```sh ninja -t clean ``` Or simply delete `~/build/TextMate`. # Legal 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. [boost]: http://www.boost.org/ [ninja]: https://ninja-build.org/ [multimarkdown]: http://fletcherpenney.net/multimarkdown/ [ragel]: http://www.complang.org/ragel/ [capnp]: https://github.com/capnproto/capnproto.git [MacPorts]: http://www.macports.org/ [Homebrew]: http://brew.sh/ [NinjaBundle]: https://github.com/textmate/ninja.tmbundle [sparsehash]: https://code.google.com/p/sparsehash/ [#textmate]: irc://irc.freenode.net/#textmate [freenode.net]: http://freenode.net/