Nathan Sobo
f24a045e11
Cursor can move to last row when lines are wrapped
2012-02-27 13:07:59 -07:00
Nathan Sobo
22305f350f
Skip fold placeholders when moving right
...
This relies on a new `eagerWrap` option to clipScreenPosition which
will wrap positions inside of atomic line fragments (which is what fold
placeholders are) to the end of the fragment rather than the beginning.
It also wraps positions beyond the end of a hard line to the next line,
which means Cursor.moveRight just has to increment the column, then
call clipPosition with eager wrap set to true to get all the correct
behavior.
2012-02-27 12:45:26 -07:00
Corey Johnson
8cbf4331e4
Remove references to OSX from fs.coffee and make fs specs pass.
2012-02-27 11:38:25 -08:00
Nathan Sobo
c2cba8bdcd
Add failing spec for rightward movement over folds.
2012-02-27 11:22:20 -07:00
Nathan Sobo
796e24f278
Add Editor.linesForScreenRows and .getScreenLines
...
These just abstract the line wrapper as the source of the screen lines.
2012-02-27 10:31:37 -07:00
Nathan Sobo
8e107359f3
Changes correctly update cursor position when there are folds
2012-02-24 22:08:34 -07:00
Nathan Sobo
0bc510ab58
Properly translate positions when wrapper and folder are composed
...
The key was in LineMap.linesForScreenRows. For each screen line, it
concatenates all line fragments (if there are indeed more than 1) that
traverse that line to return a single line fragment representing the
line. The key was to update the buffer delta for that fragment to
always be 1,0. Because the wrapper is treating the folder as if it's
the buffer, the lines it stores in its map need to traverse only a
single "buffer" line (that's a single line after folds are taken into
account). We may need better language than "screen" and "buffer"
because the wrapper treats the folder as the "buffer" but that's
confusing because it isn't.
2012-02-24 21:56:18 -07:00
Nathan Sobo
35f1243d32
Restore LineWrapper.clipScreenPosition version that passes existing tests.
...
It's still wrong, but I need a test to demonstrate how.
2012-02-24 21:13:34 -07:00
Nathan Sobo
17205cae3f
WIP: Working on position translation. Pretty broken right now.
...
The layered relationship between the line wrapper and the folder is
still not quite ironed out yet. The editor behaves pretty erratically
when text is folded.
2012-02-24 21:05:49 -07:00
Nathan Sobo
33ff32f9a4
Add clipScreenPosition to LineFolder & LineMap
2012-02-24 15:35:28 -07:00
Nathan Sobo
b8ef7685de
LineWrapper translates positions correctly with respect to folding.
2012-02-24 14:20:06 -07:00
Nathan Sobo
63be776837
LineFolder emits 'fold' and 'unfold' events
2012-02-24 14:18:55 -07:00
Nathan Sobo
c8c7033550
Rename Cursor.set/getPosition to set/getScreenPosition
...
Now that buffer positions don't always line up with screen positions, it's important that it's clear which one we're talking about.
2012-02-24 11:53:18 -07:00
Nathan Sobo
dfcf4a1629
Alt-meta-f folds the current selection
2012-02-24 11:30:32 -07:00
Nathan Sobo
0bdc45037f
Install the LineFolder into the editor
...
LineWrapper now takes a LineFolder instead of a Highlighter. It's a
cascade of processing steps.
2012-02-23 22:19:42 -07:00
Nathan Sobo
8eed1a4c94
💄
2012-02-23 22:18:27 -07:00
Nathan Sobo
c0d0768df8
A change to a range surrounding a fold removes the fold
2012-02-23 22:12:21 -07:00
Nathan Sobo
68bbe2708c
💄
2012-02-23 22:11:22 -07:00
Nathan Sobo
422df7989a
Handle changes inside of folds.
...
Don't emit an event since nothing changes (since it's all folded). But update the position of the fold's end marker so when it's unfolded, things render correctly.
2012-02-23 17:28:55 -07:00
Nathan Sobo
de5eab13d2
Insertions at beginning/end of a fold are considered to be outside it.
...
Also added a spec where text is changed on a line in between two
placeholders and handled correctly.
2012-02-23 17:08:54 -07:00
Nathan Sobo
d229585cd4
Handle changes to unfolded text directly preceding a fold placeholder
2012-02-23 16:32:57 -07:00
Nathan Sobo
16a2fd0bb3
WIP: Start handling buffer updates w/ LineFolder
...
Still a ways to go here, but folds are moved correctly when there are
buffer updates. Many unfinished specs.
2012-02-23 16:12:22 -07:00
Nathan Sobo
43c66a02a4
Merge Delta into Point
...
Point and delta were really pretty much the same thing. Point might need to be renamed… I'm thinking now it should be called offset, and have rows and columns instead of a row and column. Then you could interpret it as an offset from the beginning of the buffer, or an offset from any other location.
2012-02-23 15:38:03 -07:00
Nathan Sobo
e8ba72c3ec
Fixes for screenLineCount rename
2012-02-22 22:42:17 -07:00
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
Corey Johnson
3ea7f4d4d3
Remove all menu item code for now.
2012-02-22 16:08:42 -08:00
Corey Johnson
a540bbc6a9
Make more native methods
2012-02-22 16:08:30 -08:00
Corey Johnson
947b06b063
Stop app specs from running.
...
These will be the last thing to implement.
2012-02-22 16:08:11 -08:00
Nathan Sobo
852d066378
💄
2012-02-22 16:53:08 -07:00
Corey Johnson
b8ca0b07d0
Stub atom.open and atom.quit
2012-02-22 15:52:30 -08: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
Corey Johnson
e0a8bc77a1
cleanup project file
2012-02-22 15:26:54 -08:00
Corey Johnson
b99c4deb49
Fix path to specs. Now spec-suite runs.
2012-02-22 15:08:19 -08:00
Nathan Sobo
cf00753c9c
WIP: can destroy folds. emits change events.
2012-02-22 14:02:51 -07:00
Corey Johnson
0ec5c9a4fa
Add fs.listDirectoryTree
2012-02-22 12:00:41 -08: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
Corey Johnson
d666e73cfa
Add list to $native
2012-02-21 15:39:35 -08:00
Corey Johnson
82dac0e554
Building Atom with Chrome
2012-02-21 14:36:59 -08:00