Commit Graph

1345 Commits

Author SHA1 Message Date
Corey Johnson & Nathan Sobo
a8c19b1692 Fix OnigRegExp spec 2012-08-08 14:52:14 -07:00
Corey Johnson & Nathan Sobo
fd295faa44 OnigRegExp.getCaptureTree only returns capture tree (no capture text) 2012-08-08 11:04:13 -06:00
Nathan Sobo
f1438f2806 Optimization: Return only arrays from getCaptureTree
Creating objects and setting key-value pairs is more expensive than creating arrays with numeric indices. So this squeezes a bit more performance.
2012-08-08 09:57:42 -06:00
Nathan Sobo
c6c4d6413e Optimization attempt: Captures contain start/end position instead of text 2012-08-08 09:11:32 -06:00
Nathan Sobo
f559ad73a7 Make grammar handle lines that don't match *any* of the current rule's patterns
It's possible to get a match based on a lookahead, but not actually have any non-empty capture groups. This should be considered a failed match.
2012-08-08 08:59:13 -06:00
Corey Johnson & Nathan Sobo
827b3e29d3 Implement OnigRegExp.getCaptureTree natively 2012-08-07 16:20:02 -07:00
Nathan Sobo
d520d6c859 WIP: Optimization: compile a single regex for each grammar rule
We compile a giant regex out of all the individual regexes for each pattern by or'ing together a capture group for each one. Then we use the index of the matched capture group to determine which pattern actually matched, and adjust the capture indexes of the subtree to make it appear to start from index 0, so the capture indices on the pattern align properly. There is still broken-ness on more complex patterns, but basic patterns and patterns w/ captures work.
2012-08-06 18:32:55 -06:00
Nathan Sobo
7bc6a5f24b TextMateGrammar handles nested capture groups and trailing lookahead captures
Our previous implementation only allowed for a single layer of capture groups. Now we can have captures within captures. I achieved this by converting the match into a tree before generating tokens. If there are any capture scopes specified, then we will always emit a token for every capture group in the match. This may create some redundant tokens (a serious of 2 or more tokens with the same scopes), but it will at least be technically correct. I think the overhead of removing these redundancies exceeds the cost of maintaining them for now.
2012-08-06 16:35:33 -06:00
Nathan Sobo
0d6d16a438 Move TextMateGrammar.buildCaptureTree to .getCaptureTree method on OnigRegExp 2012-08-06 11:43:44 -06:00
Nathan Sobo
32fc042929 Add TextMateGrammar.buildCaptureTree, which organizes nested captures in a tree
This will be a weapon in dealing with capture groups that nest within other capture groups, and also helps deal with trailing lookahead groups that don't belong in the main match. I made it a class method because it's stateless and that made it easier to test.
2012-08-03 23:52:58 -06:00
Nathan Sobo
fd28a3577a Improve spec description 2012-08-03 23:51:14 -06:00
Corey Johnson & Nathan Sobo
0e1d3fe3a9 wip: fixing capture group problems 2012-08-03 11:38:45 -07:00
Corey Johnson & Nathan Sobo
1a243adfcf All specs pass w/ TextMateGrammar for tokenization (auto-indent disabled) 2012-08-03 12:00:05 -06:00
Corey Johnson
08a55dfcac wip: IndentationForRow almost works TextMate preferences 2012-08-02 17:02:17 -07:00
Corey Johnson
82562c89dd Name onig-reg-exp-spec correctly 2012-08-02 16:25:34 -07:00
Corey Johnson & Nathan Sobo
9ca4c2c347 WIP: Loading TextMate Bundle preferences globally 2012-08-02 13:04:43 -06:00
Corey Johnson
b378620c54 Add TextMateBundle which handles all bundle loading 2012-08-02 11:38:14 -07:00
Corey Johnson
114847fb0f Update display buffer spec 2012-08-02 10:25:55 -07:00
Corey Johnson & Nathan Sobo
0a97cb0590 Tokenized buffer uses TextMate grammar 2012-08-02 10:05:09 -07:00
Corey Johnson & Nathan Sobo
b50b8eacca wip: hooking up tokenized buffer to textmate grammars 2012-08-01 17:54:08 -07:00
Corey Johnson & Nathan Sobo
058f63c01f load all bundle grammars in window.startup 2012-08-01 17:09:29 -07:00
Corey Johnson & Nathan Sobo
370e0b896e Add TextMateGrammar.loadFromBundles() 2012-08-01 16:58:31 -07:00
Nathan Sobo
6de055aa1c Lines aren't taller when they contain an Inconsolata em dash (–) character 2012-08-01 17:04:33 -06:00
Corey Johnson & Nathan Sobo
98ef3e4243 Start on TextMateTheme object 2012-08-01 16:27:32 -06:00
Nathan Sobo
238fecb766 💄 2012-08-01 14:11:39 -06:00
Nathan Sobo
cdf20c7a15 Rename Parser to TextMateTokenizer 2012-08-01 13:58:38 -06:00
Corey Johnson & Nathan Sobo
fc1228619e Add spec for interpolated strings inside of interpolated strings 2012-08-01 11:49:45 -07:00
Corey Johnson & Nathan Sobo
487c4ed439 $self includes work 2012-08-01 11:45:30 -07:00
Corey Johnson & Nathan Sobo
bccd525084 Handle includes 2012-08-01 11:05:37 -07:00
Corey Johnson & Nathan Sobo
594e27b057 Parser maintains a stack of rules, which begin/end patterns mutate 2012-08-01 10:47:40 -07:00
Corey Johnson & Nathan Sobo
fbdebd644d Revert "Handle patterns that include other patterns from the grammar repository"
This reverts commit 64795c032306200f05ce3b262fe58adc86e06b34.
2012-08-01 09:48:40 -07:00
Corey Johnson & Nathan Sobo
62c5da760c Handle patterns that include other patterns from the grammar repository 2012-08-01 09:48:40 -07:00
Corey Johnson & Nathan Sobo
6af22fce67 Add specs for begin/end patterns with nested patterns. 2012-08-01 09:48:39 -07:00
Corey Johnson & Nathan Sobo
aa02785d67 Parser handles patterns w/ begin/end regexes (if begin/end are on the same line) 2012-08-01 09:48:38 -07:00
Nathan Sobo
7682f586be Parser can tokenize lines containing simple tokens (no nested scopes yet) 2012-08-01 09:48:37 -07:00
Corey Johnson & Nathan Sobo
a2a58a3506 TextMate parser can parse single plain tokens / tokens with captures 2012-08-01 09:48:37 -07:00
Corey Johnson & Nathan Sobo
757258dd98 Include 'indices' property on OnigRegExp result with capture group indices 2012-08-01 09:48:37 -07:00
Corey Johnson & Nathan Sobo
7067c35dc0 Add CocoaOniguruma 2012-08-01 09:48:36 -07:00
Corey Johnson & Nathan Sobo
c6bae093c1 Starting on TextMate bundle support 2012-08-01 09:48:35 -07:00
Corey Johnson & Nathan Sobo
a589557aaa Ignore bracket matching when there are multiple cursors 2012-08-01 09:47:12 -07:00
Corey Johnson & Nathan Sobo
97b492edfc When an identical closing bracket is inserted, don't insert a new character and move cursor to the right. 2012-08-01 09:33:42 -07:00
Corey Johnson & Nathan Sobo
3a5e73aa77 Merge branch 'making-folding-better' 2012-07-30 13:43:47 -07:00
Corey Johnson & Nathan Sobo
f7614c210a Add unfold-all and bind it to ctrl-} 2012-07-30 12:11:54 -07:00
Corey Johnson & Nathan Sobo
a7db67e68d When DisplayBuffer.foldBufferRow is called with a buffer row that is within a fold, it folds the scope that incloses the buffer row's fold 2012-07-30 11:46:43 -07:00
Corey Johnson & Nathan Sobo
9622d6f9b3 Rename un/foldScopeContainingBufferRow to un/foldBufferRow.
Scope containing buffer row was a misnomer. Waiting until I implement the repeat folding feature before considering a better name.
2012-07-30 10:25:53 -07:00
Corey Johnson & Nathan Sobo
75f0438f6a Rename fold/unfold to foldCurrentRow/unfoldCurrentRow 2012-07-30 09:58:15 -07:00
Corey Johnson & Nathan Sobo
69d059d24c Make TreeView.moveDown work for nested/empty directories
If the selected entry is the last entry in a directory that *itself* is the last entry of its parent, we need to search upward through our ancestors for the first directory that has a following sibling entry. Also, if the directory is empty, the attempt to select its first element will fail, so we need to search for a next sibling as well.
2012-07-27 21:27:55 -06:00
Corey Johnson
69d7ff0a55 add unfold to display buffer 2012-07-27 16:05:56 -07:00
Corey Johnson
7ff31d1ad7 Remove toggleFold and replace with fold 2012-07-27 13:46:50 -07:00
Corey Johnson
76ffa5a2c5 change toggle-fold to fold 2012-07-27 13:45:13 -07:00