Nathan Sobo
479b64b654
LineWrapper.setMaxLength emits a change event for all screen lines.
2012-02-10 12:21:42 -07:00
Corey Johnson & Nathan Sobo
9a922b1c2d
Implemented MoveToNextParagraph motion
2012-02-10 10:41:02 -08:00
Nathan Sobo
80d42ddb46
Selections render correctly with wrapped lines.
2012-02-10 11:32:46 -07:00
Nathan Sobo
ea4f122e19
Editor handles changes to wrapped lines.
2012-02-10 11:15:57 -07:00
Nathan Sobo
9fef75cb5f
All tests passing. Editor gets lines from LineWrapper.
...
Line wrapping still not fully functional. Need to fix many aspects of the LineWrapper integration.
2012-02-10 10:50:01 -07:00
Nathan Sobo
5809a59e7a
Add LineWrapper.screenLineCount and fix .splitTokens
...
splitTokens now returns a single empty screenLine when called with an empty buffer line, instead of no screen lines at all.
2012-02-10 10:38:35 -07:00
Nathan Sobo
672dc5a3c0
LineWrapper handles changes that remove lines.
2012-02-09 22:27:14 -07:00
Corey Johnson & Nathan Sobo
0ec6b452ad
LineWrapper handles changes that insert lines
2012-02-09 18:21:17 -07:00
Nathan Sobo
8338d37dde
WIP: LineWrapper change events cover all screen lines.
...
Because the editor only repaints entire lines at a time, the loss of
precision shouldn't matter.
2012-02-09 17:45:18 -07:00
Corey Johnson & Nathan Sobo
8ce3c6ca9d
Emit correct change events when replaced spans multiple screen lines
2012-02-09 15:17:59 -08:00
Corey Johnson & Nathan Sobo
785b800d5b
Add allowEOL param to screenPositionFromBufferPosition
2012-02-09 14:19:54 -08:00
Corey Johnson & Nathan Sobo
07d0bc400f
Add Range.isEqual
2012-02-09 14:17:11 -08:00
Nathan Sobo
1c49c51baa
Fix Range.inspect
2012-02-09 13:36:30 -07:00
Nathan Sobo
6c0a0e4bd2
Simplify splitTokens and make it work better too
...
We consider the line as a whole string and decide where we want to
split it before working with tokens. findSplitColumn just looks at the
character at the boundary... if it's a whitespace it looks forward for
a word. If it's not whitespace it looks backward for whitespace. This
ensures we always break on whitespace boundaries if possible.
2012-02-09 12:26:06 -07:00
Nathan Sobo
8232c7b153
Use splitTokens to build screen lines in LineWrapper.
2012-02-09 10:57:25 -07:00
Nathan Sobo
93bce8ccdf
Add metadata to screenLines returned by splitTokens
2012-02-09 10:18:37 -07:00
Nathan Sobo
bbedfeadc8
💄
2012-02-08 21:41:05 -07:00
Nathan Sobo
2dcdf82fc9
LineWrapper.splitTokens handles the cases I can think of
...
Basically... splitTokens will never put whitespace at the beginning of
wrapped display line. It also splits tokens without regard for
whitespace if the token has no whitespace but is too wide to display on
a single line.
2012-02-08 21:37:35 -07:00
Nathan Sobo
34922a18fe
When splitting lines, keep leading whitespace on current line.
...
If we detect leading whitespace, we replace the next token with the
result of splitting the next token into two tokens, one containing any
leading whitespace and one with the rest. Then the leading whitespace
is added to the current line. When the second half of the split is
processed, it no longer has leading whitespace and is split to the next
line.
2012-02-08 19:15:00 -07:00
Corey Johnson
21e05f7218
LineWrapper.splitTokens splits line when tokens exceed LineWrapper.maxLength
2012-02-08 15:42:16 -08:00
Corey Johnson
3742700810
handle changes that cause line to wrap once
2012-02-08 14:05:52 -08:00
Nathan Sobo
4b350598a5
WIP: Testing changes that cause lines to wrap
2012-02-08 14:25:47 -07:00
Nathan Sobo
5ab91c3f47
WIP: Handle changes that aren't affected by wrapping
2012-02-08 14:04:55 -07:00
Nathan Sobo
ce90cbc0ce
Extract EventEmitter mixin
2012-02-08 13:50:35 -07:00
Corey Johnson & Nathan Sobo
82fb49fd1e
💄 Internal LineWrapper makeover
...
Feeling good on the inside.
2012-02-08 13:15:27 -07:00
Corey Johnson & Nathan Sobo
1566b12ecc
Add LineWrapper.tokensForScreenRow
2012-02-08 12:55:51 -07:00
Corey Johnson & Nathan Sobo
1ec29e29d7
super 💄
2012-02-08 12:45:02 -07:00
Nathan Sobo
e24b5fbc24
Add LineWrapper.displayPositionFromBufferPosition
2012-02-08 12:30:46 -07:00
Nathan Sobo
bb72c839da
Use LineWrapper to calculate pixelPositionFromPoint
2012-02-08 09:49:51 -07:00
Corey Johnson
6d39306fb2
When trying to compose operators that don't compose, the op stack is cleared
2012-02-07 18:01:35 -08:00
Nathan Sobo
a16bc99249
WIP: Start on LineWrapper.displayPositionFromBufferPosition
...
It takes a row, column from the buffer and converts it to coordinates
that account for line wrapping.
2012-02-07 18:40:59 -07:00
Nathan Sobo
b21595f037
WIP: Add a LineWrapper object
...
Only passing specs are focused. Everything is still broken. Editor uses
the line wrapper to render lines, but the line wrapper isn't updating
on buffer change events yet. Still moving vertically and clipping
positions based on unwrapped lines as well.
2012-02-07 18:07:12 -07:00
Corey Johnson
ddc126734a
💩
2012-02-07 15:49:49 -08:00
Corey Johnson
d40585a129
Implement left/right arrow buttons in vim mode
2012-02-07 15:41:05 -08:00
Corey Johnson
4935ec9e39
No let editor bindings match hidden textarea
2012-02-07 15:41:05 -08:00
Nathan Sobo
62470f61ab
WIP: Wrap lines at token boundaries when soft wrap is on
...
This is still really rough... cursor positioning isn't working properly
yet. Nor does anything adjust when the window is resized.
2012-02-07 14:43:33 -07:00
Nathan Sobo
525116a80b
Merge branch 'master' of github.com:github/atom
2012-02-07 12:10:34 -07:00
Nathan Sobo
dd04475756
Shift-meta-z to redo.
2012-02-07 12:10:14 -07:00
Corey Johnson
6835659916
Implement db
2012-02-07 10:52:09 -08:00
Corey Johnson
0f20b0da86
💄
2012-02-07 10:52:09 -08:00
Nathan Sobo
b3d1291643
Add UndoManager. Pressing meta-z undoes last change.
2012-02-07 11:22:19 -07:00
Nathan Sobo
cdd296bb40
Add 'oldText' to buffer change events.
...
Also make assertions about events for different cases of Buffer.change,
and add a spec for calling Buffer.change with a non-empty range and
non-empty string.
2012-02-07 10:52:41 -07:00
Nathan Sobo
fc84075d13
In buffer change event objects, rename 'string' to 'newText'
...
In preparation for adding an 'oldText' value.
2012-02-07 10:33:36 -07:00
Nathan Sobo
022bdfaeb0
Rename pre/postRange to old/newRange
2012-02-07 10:31:06 -07:00
Corey Johnson
945ba38cca
Implement b
2012-02-06 17:55:15 -08:00
Corey Johnson
b7dfb93540
Turn off moveCursorBeforeNewline event when entering insert mode.
2012-02-06 15:41:13 -08:00
Nathan Sobo
ec195f1b08
Delete dead code
2012-02-06 16:24:22 -07:00
Nathan Sobo
bb640dd342
Use $$ -> to render ad-hoc document fragments
...
Also eliminate stdlib/template directory which held code related to
SpacePen's precursor framework.
2012-02-06 16:19:43 -07:00
Corey Johnson
bac59b7abf
Use cursor:position-changed to make sure cursor never gets to end of line in command mode.
...
The exception being an empty line.
2012-02-06 14:56:05 -08:00
Corey Johnson
f3eb6fc66c
Add isOnEOL method to cursor
2012-02-06 12:01:52 -08:00