Commit Graph

12724 Commits

Author SHA1 Message Date
Corey Johnson & Nathan Sobo
2c763a4d48 💄 2012-10-01 15:44:56 -07:00
Kevin Sawicki
be8120e8c6 Add initial support for line highlighting 2012-10-01 15:44:56 -07:00
Will Farrington
12f145f959 Make Buffer#saveAs trigger the buffer-change instead 2012-09-29 23:21:45 -07:00
Will Farrington
fb7f5deb94 first spike of buffer modified indicator 2012-09-29 19:18:42 -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
7c9f50209f HTML escape line text 2012-09-28 13:46:15 -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
Corey Johnson & Nathan Sobo
875852d1de logCursorScope works properly 2012-09-28 13:36:43 -06:00
Kevin Sawicki
f2cc859a4c Always store cursor row as a buffer row
Previously the buffer vs. screen row difference
was causing the highlight to not always be present
2012-09-28 11:52:40 -07:00
Kevin Sawicki
6b8963781b Add cursor class if row is already selected 2012-09-28 11:30:56 -07:00
Kevin Sawicki
02768fa68d Refer to instance cursorRow variable 2012-09-28 10:30:13 -07:00
Kevin Sawicki
c2417bfc46 Initialize firstScreenRow to -1 2012-09-28 09:54:30 -07: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
2722fe7d72 Rename stack to ruleStack 2012-09-28 09:41:04 -07:00
Corey Johnson & Nathan Sobo
3a66aab59d getLineTokens must clone the ruleStack 2012-09-28 09:40:06 -07:00
Corey Johnson & Nathan Sobo
ae4db9d238 💄 2012-09-28 09:36:37 -07:00
Corey Johnson & Nathan Sobo
66ac4503a7 Return empty token array for zero-length matches 2012-09-28 09:31:15 -07:00
Corey Johnson & Nathan Sobo
255e58b4f8 Remove unnecessary Array coercion 2012-09-28 09:06:41 -07:00
Kevin Sawicki
4ccaa6f714 Terminate when tokens end position is undefined
This ensures the position is advanced for zero-length
matches and only terminates when the end position for
the tokens is no longer valid.
2012-09-27 19:07:08 -07:00
Kevin Sawicki
e202904b78 Don't update HTML if view has no parent 2012-09-27 13:21:02 -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
Nathan Sobo
32e36700ae Add native OnigScanner, which handles matching multiple regexes on a line
This cuts the tokenization time from 250ms to 70ms by avoiding js <-> native overhead
2012-09-27 13:04:14 -06:00
Kevin Sawicki
d8de5c5524 💄 2012-09-27 08:35:29 -07:00
Kevin Sawicki
709f3f8351 Use interpolated string for setting left offset 2012-09-26 17:06:02 -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
Corey Johnson
5d70f416fc Remove unused regex test from require.js 2012-09-26 16:30:22 -07:00
Corey Johnson
2095955e79 No longer needed 2012-09-26 16:30:21 -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
Corey Johnson
282da8b975 Output the syntax scope of the cursor by pressing cmd-alt-p 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
1f8ce50261 Memoize Rule.prototype.getIncludedPatterns to shave a cheap 2% off profile 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
00f7796e93 Load local bundles from ~/.atom/bundles 2012-09-25 15:40:12 -07: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
Corey Johnson
aa7325b355 RootView (instead of Window) handles opening an empty buffer if no path is given. 2012-09-25 12:40:19 -07:00