Nathan Sobo
afe0a6570a
Reduce observation to single observeMarker method on display buffer
...
It will call the observer callbacks with the buffer and screen positions
of the head and tell each time any of these values is changed.
2013-02-04 21:24:06 -07:00
Nathan Sobo
ead93d0f39
Rename to DisplayBuffer.observeMarkerHeadPosition
...
When you observe, you get callbacks whenever the screen or buffer
position changes, and you get the new and old position in both
coordinate types.
2013-02-04 11:32:47 -07:00
Nathan Sobo
df4ea9293d
Build DisplayBufferMarker object to help track marker screen positions
...
There are 3 failures, which I think are attributable to the fact that
I'm not emitting events from the when the selection tail changes, and
I'm not emitting redundant events when the head is changed to the
same position it was previously, whereas before I wasn't guarding
against redundant events.
2013-02-02 21:11:42 -07:00
Nathan Sobo
bd96db781e
Pass old/new buffer and screen positions to marker position observers
...
This is needed by the snippets package, which needs to know where the
cursor was previously when it moves to decide whether to cancel the
current snippet.
2013-02-02 18:00:35 -07:00
Nathan Sobo
e53403718a
Tell marker head observers if a move was caused by a buffer change
...
This is used by cursor to only autoscroll when the marker head is
explicitly moved, so that passive movements caused by buffer insertions
don't trigger autoscrolling.
2013-02-02 16:17:14 -07:00
Nathan Sobo
bd1a100d17
Always wrap marker screen positions at soft newlines
2013-02-02 15:59:08 -07:00
Nathan Sobo
752383651d
Don't add bufferChange to DisplayBuffer change events
2013-02-02 15:01:42 -07:00
Nathan Sobo
1bbb954239
EditSession specs passing after converting Selection to use markers
...
Still a bit of a mess though...
2013-01-31 18:26:29 -07:00
Nathan Sobo
628701fd3a
Finish converting cursors to use markers.
...
The model layer works at least… haven't tested the view. Will test out
the view once I get the selection model working.
2013-01-31 15:52:28 -07:00
Nathan Sobo
ec521b3fd3
Add ability to cancel marker head position observations
2013-01-31 14:11:28 -07:00
Nathan Sobo
bc44540b10
Start adding ability to observe marker head positions
2013-01-31 14:00:01 -07:00
Nathan Sobo
074c1815d0
Start adding marker methods to DisplayBuffer
...
Whereas marker methods on buffer take for granted that everything is
in buffer coordinates, methods on the DisplayBuffer offer both
screen and buffer coordinate versions of the marker API.
2013-01-30 22:46:52 -07:00
Nathan Sobo
0e67f35748
Start on marker interface in DisplayBuffer
2013-01-30 21:04:52 -07:00
Nathan Sobo
0ecfba3262
WIP: Start adding new anchorPoint API on edit session
...
These will replace anchors, but they won't be stored on the Buffer
at all. The API user will access them by a returned scalar id rather
than calling methods on the returned anchor object directly.
2013-01-29 18:21:56 -07:00
Nathan Sobo
0a08d03c68
Rename Buffer, TokenizedBuffer, and Selection events
2013-01-04 13:59:11 -07:00
Nathan Sobo
fb6fe04023
Passivize more event names: 'change(d)' & 'screen-lines-change(d)'
2013-01-03 18:16:19 -07:00
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