Commit Graph

33 Commits

Author SHA1 Message Date
Nathan Sobo
a1ae819908 Only tokenize in background if when a buffer is visible in an editor
This will prevent running a bunch of background tokenization when Atom is reloaded. We only perform tokenization to support content that is actually on screen.
2012-11-23 12:41:08 -07:00
Nathan Sobo
5aba8596a9 Make tokenization synchronous in all specs
Disabled some specs that need to make it asynchronous again… will deal with those soon.
2012-11-21 08:22:13 -07:00
Corey Johnson & Nathan Sobo
e52dbb682e WIP: Perform tokenization in chunks when edit session is shown 2012-11-19 16:50:49 -07:00
Nathan Sobo
a441ddec7c Make TokenizedBuffer emit row-oriented change events 2012-11-16 08:57:59 -07:00
Nathan Sobo
f7b1f0521a Emit row-oriented events from DisplayBuffer 2012-11-16 07:36:36 -07:00
Nathan Sobo
ea2e025400 Simplify DisplayBuffer's change event handling 2012-11-16 07:36:35 -07:00
Nathan Sobo
c68d5fac7d Attach precipitating bufferChange to DisplayBuffer change events
The gutter can use this to determine if the change might have altered line numbers, for example if it's inside a fold.
2012-11-14 13:07:42 -07:00
Corey Johnson & Nathan Sobo
b8beec6f55 Remove foldable from ScreenLine 2012-11-06 11:41:48 -08:00
Corey Johnson & Nathan Sobo
139f5d0b50 EditSession.setTabLength assigns tabLength on the TokenizedBuffer. 2012-11-06 11:35:13 -08:00
Corey Johnson & Nathan Sobo
dacb5f063f Remove unused references to stateForScreenRow 2012-11-06 11:13:42 -08:00
Corey Johnson & Nathan Sobo
874af0f2bc Eliminate reference to TokenizedBuffer on EditSession 2012-11-06 11:09:38 -08:00
Corey Johnson & Nathan Sobo
10090219cb TokenizedBuffer change events reference the precipitating Buffer change event. 2012-11-06 10:56:05 -08:00
Nathan Sobo
1d838e920c Cache the maxScreenLineLength
Computing this requires a full scan of all screen lines. Here I keep it updated as I add / remove lines. If I remove the line with the max length, I am forced to scan all of them again. But this happens relatively rarely. Usually I only need to scan the lines I'm replacing and inserting.
2012-11-01 17:37:50 -06:00
Nathan Sobo
3d12269315 DisplayBuffer specs passing with greatly simplified LineMap 2012-11-01 07:15:51 -06:00
Corey Johnson
e2a917fcf3 Change tabText to tabLength 2012-10-18 11:31:39 -07:00
Nathan Sobo
c3e748a17c WIP: Use rake to start compiling resources (like require.coffee) 2012-08-26 16:29:46 -05:00
Nathan Sobo
c2c8724ad0 Initial commit 2012-08-10 13:32:19 -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
Corey Johnson & Nathan Sobo
0a97cb0590 Tokenized buffer uses TextMate grammar 2012-08-02 10:05:09 -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
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
Nathan Sobo
3516dea210 Introduce LanguageMode wrapper for Ace modes as a foundation of our own modes
LanguageMode is the central point for all language-specific behavior associated with an EditSession. There is one LanguageMode instance per EditSession. LanguageMode has access to the EditSession and its TokenizedBuffer, and in reverse the EditSession, DisplayBuffer, and TokenizedBuffer also make use of LanguageMode. This is a bit incestuous, but I think it's okay because you can think of LanguageMode as a swappable strategy object that governs language-specific aspects of that constellation of objects.
2012-07-27 12:30:06 -06:00
Nathan Sobo
95622dc64e If the cursor is at any buffer position inside a fold, backspace deletes the folded text 2012-06-15 14:41:05 -06:00
Corey Johnson & Nathan Sobo
1dfbaf67d1 Delete at the end of a line above a fold deletes the folded lines (leaving a newline) 2012-06-14 16:58:47 -06:00
Corey Johnson & Nathan Sobo
daa688b1e1 Merge branch 'master' of github.com:github/atom
Conflicts:
	src/app/edit-session.coffee
2012-06-14 16:25:05 -06:00
Corey Johnson & Nathan Sobo
f025bec910 If a selection ends on a fold, backspace/delete delete all lines inside the fold 2012-06-14 15:52:54 -06:00
Corey Johnson & Nathan Sobo
8416dc3598 DisplayBuffer.destroyFoldsContainingBufferRow destroys all folds containing buffer row (instead of just folds starting at buffer row) 2012-06-14 13:56:08 -07:00
Corey Johnson & Nathan Sobo
291886b4b3 Rename LanguageMode to TokenizedBuffer 2012-06-14 11:02:52 -06:00
Nathan Sobo
b59e73edcd Rename Renderer -> DisplayBuffer
The idea is that the DisplayBuffer serves a similar role to the Buffer, except that it's holding content in an arrangement that's optimized for display.
2012-06-13 21:02:30 -06:00