Commit Graph

1270 Commits

Author SHA1 Message Date
Nathan Sobo
f7bf36eb1b Add LineFolder.lastRow 2012-02-22 22:40:14 -07:00
Nathan Sobo
c658423bea Rename LineMap.lineCount to .screenLineCount 2012-02-22 22:40:03 -07:00
Nathan Sobo
1fc200c018 💄 2012-02-22 22:34:21 -07:00
Nathan Sobo
5bb539df27 💄 2012-02-22 17:36:38 -07:00
Nathan Sobo
237c03be7b 💄
More consistent method names among Highlighter, LineWrapper,
LineFolder, and LineMap
2012-02-22 17:24:27 -07:00
Nathan Sobo
852d066378 💄 2012-02-22 16:53:08 -07:00
Nathan Sobo
7bf12430cd Folds can be created and destroyed; Folder emits change events
Reorganized the line folder spec around creating and destroying folds
2012-02-22 16:52:18 -07:00
Nathan Sobo
cf00753c9c WIP: can destroy folds. emits change events. 2012-02-22 14:02:51 -07:00
Nathan Sobo
3ba17d28e8 Un F 2012-02-22 12:20:50 -07:00
Nathan Sobo
e42a8878e9 Fix position translation 2012-02-22 12:17:08 -07:00
Nathan Sobo
2132b5f8f4 Buffer positions inside folds translate to screen positions preceding fold placeholder 2012-02-22 11:15:15 -07:00
Nathan Sobo
8ef270f797 Add more position translation specs to LineFolder spec 2012-02-22 10:48:35 -07:00
Nathan Sobo
526f15bcd2 Remove SpanIndex. Fully replaced by LineMap 2012-02-22 10:29:07 -07:00
Nathan Sobo
ab9a93b390 Eliminate old ScreenLine 2012-02-22 10:27:49 -07:00
Nathan Sobo
52e1400dc4 💄 for LineWrapper 2012-02-21 23:54:17 -07:00
Nathan Sobo
14fc741b42 Eliminate @index from LineWrapper plus 💄
LineWrapper only uses LineMap now
2012-02-21 23:36:11 -07:00
Nathan Sobo
29543c73b7 Add LineMap.lineForBufferRow to support LineWrapper
LineWrapper uses lineForBufferRow to expand ranges to encompass the
entire span of the lines that contain them when emitting change events.
2012-02-21 23:33:55 -07:00
Nathan Sobo
c13b90b6b6 Back LineWrapper.bufferPositionForScreenPosition with LineMap
Also rename From -> For
2012-02-21 09:46:30 -07:00
Nathan Sobo
ba506fcd45 💄 2012-02-20 22:15:37 -07:00
Nathan Sobo
8c810bbbcf Use LineMap in LineWrapper.screenPositionForBufferPosition
Also rename from screenPositionFrom… to screenPositionFor… and rename allowEOL parameter (which defaults to false) to eagerWrap (which defaults to true).
2012-02-20 22:14:59 -07:00
Nathan Sobo
a05c0e077f Add eagerWrap option to LineMap.screenPositionForBufferPosition
If eagerWrap is true, the default, then a position at the end of a wrapped line will move to the next screen line. If it's false, it will hang on the end of the screen line. This support the line wrapper, which needs to convert ranges to not wrap (so selections can go to the end of wrapped lines) but otherwise needs to wrap the cursor to the beginning of a wrapped line.
2012-02-20 22:11:15 -07:00
Nathan Sobo
6bda6d4de5 Use LineMap for LineWrapper.screenLineCount
Also set screenDelta to [1, 0] for wrapped lines.
2012-02-17 18:27:35 -07:00
Nathan Sobo
7d1b79d1d0 Add LineWrapper.screenLineCount 2012-02-17 18:27:00 -07:00
Nathan Sobo
3df3f47483 WIP: LineWrapper maintains a LineMap in parallel w/ SpanIndex.
Planning to convert method at a time to use the LineMap instead of the SpanIndex.
2012-02-17 18:07:51 -07:00
Nathan Sobo
312bb34c0b Use LineMap in LineFolder. All specs pass. 2012-02-17 16:52:12 -07:00
Nathan Sobo
d1d48f8fca WIP: Starting on LineMap 2012-02-16 20:52:12 -07:00
Nathan Sobo
6cc46d959b Start on rough version of LineFolder.screenPositionForBufferPosition
Still pretty ugly and not working quite right.
2012-02-15 19:06:53 -07:00
Nathan Sobo
cdd2b7faf5 Line folder handles folds starting and ending on same line. 2012-02-15 17:11:28 -07:00
Nathan Sobo
6de6852e92 SpanIndex.spanForIndex returns span of elements up to and *including* index. 2012-02-15 17:11:06 -07:00
Corey Johnson & Nathan Sobo
3782119a0a LineFolder renders a placeholder in place of a folded region. 2012-02-15 15:20:27 -07:00
Corey Johnson & Nathan Sobo
0b5f6c3af0 SpanIndex accepts a single index when inserting multiple values. 2012-02-15 15:19:39 -07:00
Corey Johnson & Nathan Sobo
b5d5b52dc6 💄 2012-02-15 15:19:13 -07:00
Corey Johnson & Nathan Sobo
f30f028868 Add replace and updateSpans to SpanIndex. 2012-02-15 15:18:52 -07:00
Corey Johnson & Nathan Sobo
9324c5a7ee Add ScreenLine.pushToken and .concat
These are used by the LineFolder to splice in a placeholder between folds.
2012-02-15 15:16:50 -07:00
Corey Johnson & Nathan Sobo
8b4e9d6382 Merge branch 'master' of github.com:github/atom 2012-02-15 12:43:09 -07:00
Corey Johnson & Nathan Sobo
e0f55d6afc Remove debugger 2012-02-15 12:42:50 -07:00
Corey Johnson
a41676e84e Use event.originalEvent.keyIdentifier instead of event.which.
Events match patterns if event.keyStroke == key pattern.
2012-02-15 10:04:02 -08:00
Lee Reilly
919cef41eb Fix typo ಠ_ಠ 2012-02-14 23:38:01 -08:00
Corey Johnson & Nathan Sobo
9ada5a7a39 LineWrapper uses SpanIndex to store wrapped lines. 2012-02-14 16:43:02 -07:00
Corey Johnson & Nathan Sobo
f9b7c02b81 Add methods to SpanIndex to support LineWrapper 2012-02-14 16:42:48 -07:00
Corey Johnson & Nathan Sobo
0ee1eeef75 Add SpanIndex, which will support line wrapping and line folding
SpanIndex keeps a sorted list of entries, each associated with a span. It can retrieve elements by aggregated span as well as their position in the list.
2012-02-14 15:49:16 -07:00
Nathan Sobo
db66c1630b Base LineWrapper.screenLineForRow on screenLinesForRows
The editor always performs the more efficient row scan. This single-row-fetching method is actually only used in tests right now, but I see no reason to eliminate it, since it's just a convenience for retrieving a single row from the row scanning method.
2012-02-13 22:25:28 -07:00
Nathan Sobo
cf563f0725 Use LineWrapper.screenLinesForRows from Editor
For now it's not an efficient implementation… just sketching it into place. I want to move to using row ranges instead of individual rows because it will be more efficient than iterating over and over again to each individual row.
2012-02-13 21:59:57 -07:00
Nathan Sobo
b0c67741e0 💄 2012-02-13 15:35:06 -07:00
Nathan Sobo
2d3822dc90 LineWrapper exposes screenLinesForRow instead of tokensForScreenRow
I *think* this is a good idea. It makes us more consistent in always passing around ScreenLine instances. We'll be able to put nice metadata on these objects, like the buffer line they correspond to etc.
2012-02-13 15:29:16 -07:00
Nathan Sobo
a293a41ac7 Highlighter stores ScreenLine objects instead of token arrays. 2012-02-13 15:24:05 -07:00
Nathan Sobo
c89a8fbb37 Add ScreenLine & refactor LineWrapper to use it.
ScreenLine encapsulates the idea of a single line on screen. ScreenLines are first generated by the highlighter. A ScreenLine contains tokens and text, and currently has a method called splitAt which the LineWrapper, and soon the LineFolder, use to fragment the line.
2012-02-13 15:05:33 -07:00
Nathan Sobo
68d08acc1b Soft-wrap can be enabled before editor is attached to DOM. 2012-02-10 15:18:02 -07:00
Nathan Sobo
432f0e11a8 Merge branch 'softwrap' 2012-02-10 14:33:40 -07:00
Nathan Sobo
12a404fe5d Re-wrap lines when window size changes. 2012-02-10 13:14:17 -07:00