The intent was to expose indent settings via the UI which is still a goal, but we’ll do a lot of refactoring first, so removing unused public API to make refactoring simpler.
On recent OS versions the /usr/bin/git executable will prompt the user to install git (if Xcode is not already installed) which can cause some user confusion, so we now avoid using /usr/bin/git unless Xcode is installed.
It is not clear to me whether there was a reason that this code was using the basic_tree_t directly or if it was just written before the indexed_map_t layer was introduced.
We always undo the last edit without any coalescing so the user can be sure that ⌘Z only undos the last thing they did. For redo though this makes less sense, although it does break symmetry, i.e. pressing ⌘Z n times will bring us back again by pressing ⇧⌘Z only n-1 times.
This can be used when the key is name spaced, e.g. `/foo/bar` or `foo.bar`. Here we can erase everything under foo by using `/foo/` or `foo.` respectively.
This introduces new scope setting - excludeFromParagraphSelection, that
prevents extending selection to some scopes, eg. on comment.line.
Previously when reformatting paragraph comment lines were selected as paragraph
lines, this have led to mixing comment content into reformatted paragraph
content breaking the syntax of reformatted code, eg.:
some very long ... line of text
# some comment
some other long ... line of text
As an effect we got:
some very long ...
... text # some comment some other ...
... line of text
The problem described above was especially visible when using ⌃Q to Reformat
block of Git commit message, when below of the typed text there was a Git
default comment. Also this problem could be noticeable by authors using LaTeX.
This change checks whether a candidate line scope for paragraph extension has a
excludeFromParagraphSelection set to true and breaks upon such line, eg.
comment line.
Doing Select Paragraph ⌃⌥P again will select the comment as well.
If we fail to load an image by name then we try again with a “Template” suffix so that commands can still set marks using just `note`, `warning`, and `error`.
When loading by full path and the path (minus extension) has a “Template” suffix then we manually set the image’s template property to YES since the system only seems to do this for images loaded from bundles.
The classes should be given as a comma-separated list and is mainly useful because the semantic class system doubles as a way to indicate that an item should be used as a callback.
The rationale for this is that when empty lines are included it leaves no whitespace between functions.
Example and TextMate 1.x behavior described here: http://pastie.org/private/lgtnlvc8tdvghoppocob5q
Previously when a line was a start or stop marker, and was also matched by `foldingIndentedBlockIgnore` then we would set the line’s indent to INT_MAX to ensure the line would not terminate a foldable indented section, i.e. basically storing the “line should be ignored” in the indent since the line’s type was already set to start or stop marker (rather than “ignored line”).
However, the indent is used to pair start/stop markers, so if only one of a start/stop pair was also matched as an ignored line, they would not be considered a pair because of the different indent levels. The opposite could also be the case, where two lines with different indent were both ignored, and this was seen to share the same indent.
This partially reverts commit 337ac1219d.
Previously the heuristic used (when files mix LF, CR, and CRLF) for searching files on disk (find in folder) was not identical to the heuristic used when opening files.
This meant that in rare situations a match could be found at what the find in folder determined to be the n’th line, but when opening the file, it was the m’th line (where m != n).
Our previous method of converting CR/CRLF files to LF representation was somewhat heuristic in that we would convert all CRs to LF and skip any LF following a CR.
While files should generally not mix and match line endings, it does occasionally happen in practice, and in that case, we do not want to “lose information” by converting too many newline characters to LF.
Previously we expected only LF to mark a newline but in theory we can receive CRLF or CR separated text (from files on disk) which would cause incorrect excerpt for matches crossing line boundaries.
Without full keyboard access enabled (System Preferences → Keyboard) the text view in the Unknown Encoding dialog would be the initial first responder, and while it’s read-only, pressing return would make the text view give up focus, rather than send the key to the window’s default button.
Previously when providing a project UUID while opening a document, and no project used this UUID, TextMate would create a new project (with this UUID).
This was both a way to force a file to open in its own project, and to open multiple files in the same project, even though they did not share project folder.
The problem is that `mate` will read the `TM_PROJECT_UUID` environment variable and use as target project, which is generally desired, but incase we launch a new application from TextMate, and this application later opens a file via `mate`, it will use the old `TM_PROJECT_UUID` value, which might no longer exist.
We still allow forcing files to open in their own project by introducing a special “null UUID”, but with this change, it is no longer possible to use multiple invocations of `mate` to open unrelated files in the same project. Should this be desired, we can re-introduce this feature but require that `mate` is given the UUID via its -p/--project argument.
Fixestextmate/latex.tmbundle#150
When our application is activated and our key window is on a non-active desktop with windows on the active desktop, the system will give focus to one of the windows on the active desktop.
To workaround this we make our window key after our application has become active.
It used to be that if we called unhideWithoutActivation followed by makeKeyAndOrderFont:, and finally activateIgnoringOtherApps: then we would end with only the key window on top of other windows in the desktop space.
E.g. from a terminal (with TextMate hidden) using “mate -w” would cause only a single window to open on top of the terminal window, which seemed like desired behavior.
Unfortunately Apple have changed the behavior so there is no need to explicitly call unhideWithoutActivation as this is implied by activateIgnoringOtherApps:.
Some targets were including headers from frameworks not specified in their link dependencies. For a clean build this could cause an issue because the header was not available at the time of building the target.
The updated link dependencies are also based on what a target’s tests require. Ideally tests would have separate link dependencies, but as we don’t want to maintain this manually, this will have to wait until the build system automatically handles link dependencies.
Currently the commit command uses constants from the CommitWindow framework but should actually not be linked with it. However, the optimizer will strip dead code, so it should not result in much if any difference in the resulting binary and does solve a build dependency issue.