Commit Graph

246 Commits

Author SHA1 Message Date
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
Nathan Sobo
06e71bb42f 💄 Clean up LineWrapper spec 2012-02-09 18:30:57 -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
Nathan Sobo
4ea62a83a2 WIP: failing spec for change event causing line to wrap 2012-02-09 13:37:57 -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
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
1f6ab6f2b6 💄 2012-02-08 14:33:23 -07: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
Corey Johnson & Nathan Sobo
0daecb6047 More 💄 2012-02-08 13:21:00 -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
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
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
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
Corey Johnson
b8f6dd1c2a spelling 2012-02-06 15:41:13 -08: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
Nathan Sobo
4a8d03b966 Un-F the specs 2012-02-06 12:38:06 -07:00
Nathan Sobo
6a963e8845 Merge remote-tracking branch 'origin/master'
Conflicts:
	src/atom/cursor.coffee
	src/atom/editor.coffee
	src/atom/selection.coffee
2012-02-06 12:37:26 -07:00
Nathan Sobo
64a97b9427 Use SpacePen for all views
SpacePen is better because its objects inherit directly from the jQuery
prototype, meaning you can create them with `new`.
2012-02-06 12:12:45 -07:00
Corey Johnson
ea48ae626c l can't move the cursor past the last character. 2012-02-06 10:38:56 -08:00
Corey Johnson
425e2b4f59 💄 2012-02-06 10:37:37 -08:00
Corey Johnson
3ef3933d06 💩 2012-02-06 10:20:37 -08:00
Corey Johnson
dd9723e256 x will not allow the newline to be deleted 2012-02-06 10:19:17 -08:00
Corey Johnson
7cdcf2b358 When dd is called on the last line, it removes the \n from the previous line
Treat dd as a special, completing version of d.
2012-02-03 17:31:39 -08:00
Corey Johnson
88cf574bc6 Positioning the cursor beyond the bottom of the buffer will clip it to the last column of the last row 2012-02-03 16:07:54 -08:00
Corey Johnson
53c14722aa Selection.selectLine takes a row as an argument. 2012-02-03 15:03:13 -08:00
Corey Johnson
97aa3b6e82 Triple click works with selections made with moused dragging. 2012-02-03 13:33:22 -08:00