Commit Graph

1556 Commits

Author SHA1 Message Date
Nathan Sobo
96c9f0bc36 Add $.fn.events, which returns a list of all handled events 2012-10-04 10:26:05 -10:00
Kevin Sawicki
23e7139ed1 Auto confirm when only one match exists 2012-10-03 13:55:38 -07:00
Kevin Sawicki
5d86b1e818 💄 2012-10-03 10:03:19 -07:00
Kevin Sawicki
09bf000d8f Select created folder in tree view 2012-10-03 09:49:53 -07:00
Kevin Sawicki
58515b2097 Focus tree view after creating a directory 2012-10-03 08:20:06 -07:00
Kevin Sawicki
189e3be5ae Wrap around fuzzy finder when at top or bottom 2012-10-02 10:39:35 -07:00
Kevin Sawicki
f51c5dffed Include trailing slash when checking for dir segment 2012-10-01 22:50:56 -07:00
Kevin Sawicki
2b3991d74e Use tree-view fixtures dir in tree-view specs 2012-10-01 19:18:13 -07:00
Kevin Sawicki
b7f32036c2 Change editor-selection-change event name to selection-change 2012-10-01 15:44:58 -07:00
Kevin Sawicki
edfd61c702 Remove unneeded class addition 2012-10-01 15:44:58 -07:00
Kevin Sawicki
41cdf130fb Update highlighted line when editor selection changes 2012-10-01 15:44:58 -07:00
Kevin Sawicki
c7361d487f Update cursor line when selection screen range changes 2012-10-01 15:44:58 -07:00
Kevin Sawicki
2bea67057b Add spec for line highlight after backspace 2012-10-01 15:44:58 -07:00
Kevin Sawicki
f2306f444a 💄 2012-10-01 15:44:58 -07:00
Corey Johnson
887720e4de [fail] added failing gutter spec
When you remove a newline with backspace, the background on the gutter line number isn't highlighted. This is to help @kevinsawicki debug the problem.
2012-10-01 15:44:58 -07:00
Corey Johnson
9361b0717c Give gutter line highlighting its own describe 2012-10-01 15:44:58 -07:00
Kevin Sawicki
e039dab0f6 Don't highlight line in mini editor 2012-10-01 15:44:57 -07:00
Kevin Sawicki
a03512fd90 Add line number padding to expected width 2012-10-01 15:44:57 -07:00
Kevin Sawicki
a4ad5829a5 Disable gutter background highlight on multiline selections 2012-10-01 15:44:57 -07:00
Kevin Sawicki
33abaff747 Don't highlight line if selection is multiline 2012-10-01 15:44:57 -07:00
Kevin Sawicki
12a30873cf 💄 2012-10-01 15:44:57 -07:00
Kevin Sawicki
d69e08a858 Use screen rows for line highlight 2012-10-01 15:44:57 -07:00
Corey Johnson & Kevin Sawicki
e15694bb41 No longer cache cursorScreenRow in gutter highlighting 2012-10-01 15:44:57 -07:00
Corey Johnson & Kevin Sawicki
2863d92ce3 Use screen position for gutter highlighting 2012-10-01 15:44:57 -07:00
Kevin Sawicki
7506fe7eae Provide default column to getGuideColumn callback 2012-09-29 11:51:32 -07:00
Kevin Sawicki
6412cde7a8 Support guide column callback function
This allows a config function to be registered
in the atom.coffee file to support different wrap
guide columns depending on the type of file being
viewed.
2012-09-29 11:44:05 -07:00
Nathan Sobo
4e49fbec72 TextMate grammars can include other grammars 2012-09-28 17:28:40 -06:00
Nathan Sobo
3a8fe2b24e Spans have a class for each dot-separated portion of their token's scope
Previously, we were rendering every prefix of the dot-separated scope as its own class. So the scope meta.delimiter.method.period.coffee would make a token w/ classes:

class="meta, meta-delimiter, meta-delimiter-method, meta-delimiter-method-period…"

Now we just give the token each piece of the scope as a class:

class="meta delimiter method period coffee"

We lose a bit of meaning, in that a scope selector method.period.coffee would match this element in CSS even though it *wouldn't* in TextMate. But we also gain the behavior where longer prefixes are more specific by naturally producing more specific css selectors. So '.meta.delimiter.method' is always more specific than '.meta.delimiter', whereas '.meta-delimiter-method' ties with '.meta-delimiter'. 

If prefix ambiguities become a problem later we may need to revisit this approach, but I think it's good enough for now.
2012-09-28 17:00:31 -06:00
Nathan Sobo
5ad6c67e07 Round alpha channel in TextMate theme rgba colors to 2-decimal places 2012-09-28 16:43:02 -06:00
Nathan Sobo
4ba5ccb0fa Properly translate hex colors from TextMate themes to rgba (divide alpha by 255) 2012-09-28 14:06:10 -06:00
Nathan Sobo
3ebd7cfef1 Output nested spans so that scope selector specificity translates better to CSS
The tokenizer emits individual tokens with arrays of scopes, rather than a more tree-like structure. It's debatable whether we want to emit scope trees rather than token streams in general, though that might complicate things like line wrapping. For now, we're reconstructing the tree during rendering based on information that's implicit in the tokens.
2012-09-28 13:36:43 -06:00
Corey Johnson & Nathan Sobo
bebfaed69b wip: creating token spans 2012-09-28 13:36:43 -06:00
Kevin Sawicki
02fa815459 Highlight the line number of the current cursor row 2012-09-28 09:52:34 -07:00
Corey Johnson & Nathan Sobo
82cecbf042 Add test for situation where we infinitely looped 2012-09-28 09:05:51 -07:00
Kevin Sawicki
b8926e7e28 Add spec for markdown preview detachment 2012-09-27 13:21:13 -07:00
Kevin Sawicki
d8011fe853 Add initial markdown preview extension
Uses the GitHub Markdown API to render the current
editor contents for .md and .markdown files.
2012-09-27 13:07:22 -07:00
Kevin Sawicki
e5310ae7b5 Revert "Append wrap guide to editor element"
This reverts commit 5301b29649.

This caused the wrap guide not to scroll correctly when lines
scroll.
2012-09-26 17:06:02 -07:00
Kevin Sawicki
5301b29649 Append wrap guide to editor element
This prevents unneeded horizontal scrollbars when
the wrap guide exceeds the buffer size and the
buffer doesn't have any 80 character or greater lines
2012-09-26 16:26:57 -07:00
Corey Johnson
f95e67d8cd Triple click selects entire line (including \n). Fixes #44 2012-09-26 13:53:51 -07:00
Nathan Sobo
2dbba203a0 Allow begin/end rules with back-references to be nested 2012-09-26 12:10:00 -06:00
Nathan Sobo
9c8d897317 Start on a spec for nested begin/end rule w/ back-references in the end rule 2012-09-26 09:59:15 -06:00
Nathan Sobo
2d38650265 Linguistic 💄 2012-09-26 09:57:35 -06:00
Corey Johnson
8328875021 Regex searches are case-sensitive if any letter is capitalized.
Fixes bug introduced in commit aa3f674948
2012-09-25 18:35:44 -07:00
Corey Johnson
dd81e69bfb Merge branch 'master' of https://github.com/github/atom 2012-09-25 17:24:23 -07:00
Corey Johnson
aa3f674948 Regex's in the command panel are treated as case-insensitive if there are no non-escaped letters in the pattern
/hello becomes /hello/i
/he\Slo becomes /he\Slo/i
/Hello/i becomes /Hello/i
/Hello/ becomes /Hello/
2012-09-25 17:21:35 -07:00
Nathan Sobo
1d9cc53e7f RootView focuses the *first* focusable child.
This prevents an issue where the fuzzy finder's mini-editor would get focused again when the fuzzy finder was being hidden.
2012-09-25 17:38:48 -06:00
Corey Johnson
533ad84d03 Buffer.scanInRange can do a case-insensitive search 2012-09-25 16:30:44 -07:00
Nathan Sobo
1383a94d60 Second attempt: don't blow up when commenting in files w/ no language bundle 2012-09-25 17:14:25 -06:00
Corey Johnson & Nathan Sobo
685cbc3575 When focused, RootView retains focus itself if it has no focusable children 2012-09-25 15:11:07 -06:00
Nathan Sobo
5f253d78e9 Optimization: Use absolute positioning instead of flexbox in editor
Flexbox was causing layouts and repaints to cover the entire scroll view instead of just the edited line. This cuts down on DOM manipulation cost significantly.
2012-09-25 14:58:31 -06:00
Corey Johnson
a6352497b9 Merge branch 'master' of https://github.com/github/atom 2012-09-25 13:22:24 -07:00
Corey Johnson
d13796074b RootView passes focus to a child element with a tabindex of -1 (if one exists) 2012-09-25 13:22:06 -07:00
Nathan Sobo
b4b34b0489 Don't explode on meta-/ if there isn't a valid comment regex 2012-09-25 13:27:46 -06:00
Nathan Sobo
b00d0bacd9 When uncommenting multiple lines, don't raise an error if a line isn't commented
Previously, we were assuming that when uncommenting, that every line would match the comment regex. But this might not be the case. If the first line in the selection is commented but some subsequent lines aren't, they won't match the comment regex. So this commit guards for that case.
2012-09-25 13:19:59 -06:00
Corey Johnson
efab25a1d1 Merge remote-tracking branch 'origin/master' into making-things-easy 2012-09-21 16:37:29 -07:00
Kevin Sawicki
ea77b60b15 Serialize command panel history
Retains up to 100 commands between reloads
2012-09-20 14:06:12 -07:00
Kevin Sawicki
8393af2cd6 Serialize root view font size 2012-09-20 09:31:04 -07:00
Kevin Sawicki
7278bc62c6 Ensure start row is always >= 0
Previously if a file was a single line
it couldn't be deleted using the delete
line command because the start row would
index one row back which would be -1 and
therefore not be able to report a length
for use in the delete range.
2012-09-20 09:00:37 -07:00
Kevin Sawicki
f241bc5d2b Delete entire region when deleting a folded line 2012-09-19 18:16:45 -07:00
Kevin Sawicki
54180462f6 Match describe to method name 2012-09-19 17:08:17 -07:00
Kevin Sawicki
f7670dc1a0 Add support for save all via meta-S 2012-09-19 17:03:50 -07:00
Corey Johnson
1168404d6d Merge remote-tracking branch 'origin/master' into making-things-easy 2012-09-19 16:12:46 -07:00
Kevin Sawicki
a269eb39d0 Store column position as field 2012-09-19 15:41:50 -07:00
Kevin Sawicki
b18627ab9b Add delete line support bound to meta-d key 2012-09-19 15:23:10 -07:00
Kevin Sawicki
e9abf1e3b9 Add wrap guide extension
Initially places a vertical line in each editor
at 80 characters.
2012-09-19 11:28:20 -07:00
Kevin Sawicki
47ed19f851 Substract scroll top when paging up 2012-09-19 08:52:05 -07:00
Kevin Sawicki
9ba3b74a9d Add support for Page Up and Page Down keys 2012-09-18 19:53:23 -07:00
Corey Johnson
fab4d4e4e5 Fix TreeView spec that was failing in #MOLO 2012-09-18 17:31:47 -07:00
Corey Johnson
96e2a66065 Merge branch 'master' into making-things-easy
Conflicts:
	.gitignore
	Rakefile
2012-09-18 15:43:17 -07:00
Kevin Sawicki
8c1125457b Persist scrollTop value of tree view
This will be set whenever attached
2012-09-18 15:15:06 -07:00
Nathan Sobo
7937380eed Projects w/ EditSessions for now-deleted files can now be reloaded w/out error 2012-09-18 13:30:16 -06:00
Nathan Sobo
68effe3303 Make TreeView focus the active editor when a file is selected w/ the keyboard 2012-09-18 13:00:16 -06:00
Corey Johnson & Nathan Sobo
85c37fd652 Move atom.resourcePath to window.resourcePath
The resourcePath is now set using a url param. Because resourcePath is needed by require.js, it needs to be on `window` rather than `atom`.
2012-09-10 17:22:21 -07:00
Corey Johnson & Nathan Sobo
12e2fbdb14 Add support for back-references in TextMate grammars 2012-09-07 15:27:13 -07:00
Corey Johnson & Nathan Sobo
b00830cbc8 A pattern with no name or contentName does not insert undefined into scope array 2012-09-07 11:20:56 -07:00
Corey Johnson
7f8531d10f Show dev tools when specs are run 2012-09-06 15:36:28 -07:00
Corey Johnson
4f2cc1f856 Add OnigRegExp.captureIndices(string, index, regexes)
Allows us to know if a zero-length regex matched.
2012-09-06 15:26:42 -07:00
Corey Johnson
48fdf8a708 Added OnigRegExp.catpureIndices 2012-09-06 10:22:13 -07:00
Corey Johnson
4734c8cdc4 If the file name has no '.' use the file name as the extension. 2012-09-04 10:53:28 -07:00
Corey Johnson
fb039276de un-f 2012-09-04 10:52:34 -07:00
Corey Johnson
3b9310ebe4 Gutter width is sized to fit the width of the largest line number 2012-08-31 13:33:59 -07:00
Corey Johnson & Nathan Sobo
44db540528 All specs pass 2012-08-30 17:12:52 -06:00
Nathan Sobo
461ec70e7b Fix window spec 2012-08-30 16:19:38 -06:00
Corey Johnson & Nathan Sobo
b073f3e2b1 Make some assertions fuzzy to deal with sub-pixel issues. Not totally there yet 2012-08-30 16:13:13 -06:00
Corey Johnson & Nathan Sobo
bd1982ede1 Nix fs.async.* methods. They aren't needed now. 2012-08-30 16:12:15 -06:00
Corey Johnson & Nathan Sobo
08b9d69f59 Focus specs window before each test to ensure focus assertions pass 2012-08-30 16:11:42 -06:00
Corey Johnson & Nathan Sobo
bc9d9842a7 Kill atom spec. It's not worth testing this stuff right now 2012-08-30 16:10:24 -06:00
Nathan Sobo
714a260f32 Require atom.coffee in spec-bootstrap and benchmark-bootstrap 2012-08-30 11:26:31 -06:00
Nathan Sobo
3cc2faf7c2 Add atom.showDevTools and replace calls to $native.showDevTools 2012-08-30 11:24:01 -06:00
Nathan Sobo
d5ffdb153a Remove $native.saveDialog. It's replaced with atom.showSaveDialog 2012-08-30 11:08:55 -06:00
Nathan Sobo
d0c767ac15 Fix spy 2012-08-29 20:54:39 -05:00
Nathan Sobo
558ffd9cbe Spy on atom.confirm instead of $native.alert in specs 2012-08-29 20:50:47 -05:00
Corey Johnson
6f99b61dd3 Now storing a window's state based on its rootDirectory (instead of on windowNumber) 2012-08-29 10:59:45 -07:00
Corey Johnson & Nathan Sobo
12b06ddf0c Get spec suite running (lots of failures) 2012-08-27 17:36:36 -05:00
Nathan Sobo
c2c8724ad0 Initial commit 2012-08-10 13:32:19 -06:00
Corey Johnson & Nathan Sobo
26d17f7525 Fix failing spec 2012-08-23 10:45:44 -07:00
Kevin Sawicki & Nathan Sobo
1a8e36d6b7 💄 2012-08-22 13:43:46 -07:00
Kevin Sawicki
f778345b3a Add support for requiring a platform-specific stylesheet
Add a getPlatform method to the native object that
is used for requiring the platform stylesheet from
within window.coffee after the atom.css is required.

This is used to provide non-native scrollbars on Linux
for an improved look and feel.
2012-08-22 13:43:46 -07:00
Nathan Sobo
847b514164 Merge branch 'textmate'
Conflicts:
	benchmark/benchmark-helper.coffee
	benchmark/benchmark-suite.coffee
	src/app/language-mode.coffee
2012-08-09 18:57:59 -06:00
Corey Johnson
c1bd922d89 💄 2012-08-09 15:17:01 -07:00
Corey Johnson
634bebd207 Toggling comments adjusts selection's start and end columns 2012-08-09 14:38:16 -07:00
Corey Johnson
cc5ee48470 Auto-outdent lines correctly 2012-08-09 13:10:37 -07:00
Corey Johnson & Nathan Sobo
e8aaec43f7 WIP: Reworking auto-indent/outdent logic 2012-08-09 12:57:47 -06:00
Corey Johnson
19511fe8b8 Selections are restored to their original ranges after toggling comments. 2012-08-09 10:46:54 -07:00
Corey Johnson
c95ca04340 Use TextMate to toggle comments 2012-08-09 10:33:46 -07:00
Nathan Sobo
4109669284 Bold and italic fonts hose our width calculations 2012-08-08 22:31:33 -06:00
Corey Johnson & Nathan Sobo
7fe6a05594 Folding no longer relies on Ace.
Indentation is used to determine foldable regions, if the last line matches TextMate's foldEndRegex it is included in the foldable region.
2012-08-08 17:42:11 -07:00
Nathan Sobo
c8154e4e8c Use Twilight theme stylesheet based on TextMateTheme 2012-08-08 16:55:34 -06:00
Nathan Sobo
2df05e235a Break out window.applyStylesheet from window.requireStylesheet
This will be useful in applying generated stylesheets associated with themes.
2012-08-08 16:09:23 -06:00
Corey Johnson & Nathan Sobo
3376dead06 fix broken spec 2012-08-08 14:54:11 -07:00
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
Corey Johnson & Nathan Sobo
ed12f66b13 Do not insert matching bracket unless the following character is whitespace 2012-08-01 13:20:34 -07: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