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
b45c00d90e
If an object implements inspect
jasmine will use it in test output
2012-02-03 16:05:57 -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
Corey Johnson
bbf892de96
Triple click selects line under cursor
2012-02-03 13:11:42 -08:00
Nathan Sobo
94f7296999
Highlighter resumes from last unchanged line's state
...
This allows for new a new line inserted inside a comment to be
highlighted correctly, for example.
2012-02-03 11:19:50 -07:00
Corey Johnson
2b6b4b1717
Make sure all specs are run
2012-02-03 10:03:02 -08:00
Corey Johnson
7c778d197e
Text is selected when mouse is moved after double click
2012-02-03 09:55:10 -08:00
Nathan Sobo
37dc813a56
Backfill spec coverage for handling highlighter change events.
2012-02-03 10:39:13 -07:00
Corey Johnson & Nathan Sobo
84c104b0b9
Highlighter emits change events.
...
Changes to the buffer may cause lines beyond the scope of the textual
change to be re-highlighted. If so so, this is reflected in the
pre/post range of Highlighter's change events.
2012-02-02 17:45:57 -08:00
Corey Johnson & Nathan Sobo
82366b1226
Jasmine will call toString() if available to print an object.
2012-02-02 17:00:10 -08:00
Corey Johnson & Nathan Sobo
bb2af7333a
Point -> pixel conversion should be relative to editor.lines
2012-02-02 17:25:23 -07:00
Corey Johnson & Nathan Sobo
ec6ed285b1
Merge branch 'editor'
2012-02-02 17:06:18 -07:00
Corey Johnson & Nathan Sobo
0120df540a
Lines remain syntax-highlighted when they are updated.
2012-02-02 17:04:37 -07:00
Corey Johnson & Nathan Sobo
a62bd4b304
Double clicking selects a word.
2012-02-02 14:57:05 -08:00
Corey Johnson
c6c762ba23
Double mouse click selects word
...
The mousedown event on editor is causing this to fail right now.
2012-02-02 14:13:28 -08:00
Nathan Sobo
2b748dd8a7
Merge branch 'editor' into highlight
...
Conflicts:
src/atom/buffer.coffee
2012-02-02 12:31:35 -07:00
Nathan Sobo
5e95fc482d
Buffer.setText emits the proper change events
2012-02-02 12:30:25 -07:00
Corey Johnson
d8975e7a94
SpecHelper has a method for getting pixel points from a row/column
2012-02-02 11:14:50 -08:00
Corey Johnson
d2a6eca8f3
meta-x removes text from buffer and places it on the clipboard
2012-02-02 09:35:18 -08:00
Nathan Sobo
104e75e0d7
WIP: Handle changes that affect highlighting of subsequent lines.
...
Entering a /* at the top of the document will cause lines below to be
interpreted as comments. Still needs cleanup. There are some unrelated
failures associated with Buffer.setText not firing events correctly,
which is causing the highlighter to get into an invalid state.
2012-02-01 21:52:07 -07:00
Nathan Sobo
2f6c16c941
Merge branch 'editor' into highlight
...
Conflicts:
src/atom/editor.coffee
2012-02-01 20:24:42 -07:00
Corey Johnson
3c37c0ebeb
Test the correct line
2012-02-01 18:13:22 -08:00
Corey Johnson
8882c060f1
e
...
spelling is hard, let's go shopping
2012-02-01 18:02:12 -08:00
Corey Johnson
86d23c775d
meta-v inserts text at cursor position
2012-02-01 18:00:47 -08:00
Corey Johnson
27ee0792a4
💄
2012-02-01 17:59:59 -08:00
Corey Johnson
16cfcd9396
Move the copy event test to editor, make selection test copy implementation
2012-02-01 17:46:22 -08:00
Corey Johnson
53d68d93ca
Rename old methods and make the specs pass!
2012-02-01 16:50:10 -08:00
Nathan Sobo
23bcc68ac5
Highlighter updates when the buffer is changed
2012-02-01 17:38:16 -07:00
Corey Johnson
a3332571a9
Remove backspace and change implementation of delete.
...
A selection will only delete what is selected. Otherwise it will leave
the buffer unmodified.
2012-02-01 15:57:37 -08:00
Corey Johnson
cc3b5732e7
Point.toEqual will return true if it matches an array
...
`new Point(1,2)` is equivalent to `[1,2]`.
2012-02-01 15:54:28 -08:00
Nathan Sobo
77f227c7e9
WIP: Using ace tokenizer to break lines into tokens.
...
Breaks some specs because the highlighter doesn't update when the
buffer changes. Not loading the ace theme CSS yet, so you can't see any
colors yet either.
2012-01-31 21:59:58 -07:00
Nathan Sobo
677df675fb
💄 reorganize editor spec a bit
2012-01-31 20:57:43 -07:00
Nathan Sobo
a72dc17b87
Move hidden input to follow cursor to stop spurious scrolling
...
Commit 8e77c05c
fixed scrolling *up* when clicking the buffer while
scrolled down. But it was still scrolling to the far left when typing /
clicking on a really long line. This commit solves both issues by
always positioning the hidden input to the same location as the cursor,
so it doesn't tell webkit to scroll away from the current focus when it
is focused or the user types.
2012-01-31 11:21:13 -07:00
Corey Johnson
d42cdaf157
Selection spec uses copy
event to test copying.
...
Also added a some multiline tests.
2012-01-31 10:10:18 -08:00
Corey Johnson
84d9824b19
buffer.getTextInRange handles multiple lines.
2012-01-31 09:56:16 -08:00
Nathan Sobo
4575483d80
Selection expands flexibly when window is resized
...
If a region of the selection needs to span the full line, I assign
right: 0 instead of a width so that it always stretches across the
entire editor, even after a resize.
2012-01-31 10:55:17 -07:00
Nathan Sobo
666ef76c83
Never use more than 3 divs to render a selection
...
This should hopefully improve performance for large selections.
2012-01-31 10:44:10 -07:00
Nathan Sobo
21a5f25d93
Merge branch 'master' of github.com:github/atom into editor
...
Conflicts:
src/atom/editor.coffee
2012-01-30 19:47:51 -07:00
Corey Johnson
7dba7dc3de
meta-c copies text in selection
2012-01-30 17:46:03 -08:00
Nathan Sobo
a77dd28e47
Fix bug: can now delete multiple lines
...
Before, we were traversing through lines to remove in ascending order
and then calling remove(n) for each. But when we removed line 10, line
11 became the *new* line 10. So when we removed line 11 we ended up
skipping the old line 11. I solved this by traversing in reverse when
we need to delete lines.
2012-01-28 22:05:35 -07:00
Nathan Sobo
1dd718f896
Can select text with the mouse
2012-01-28 17:00:59 -08:00
Nathan Sobo
6dad8c448a
💄
2012-01-28 15:58:59 -08:00
Nathan Sobo
3e5cef9672
Cursor can be re-positioned with the mouse
2012-01-28 15:54:01 -08:00
Nathan Sobo
cb3d97692e
Auto-scroll horizontally after exceeding editor.hScrollMargin
...
Rename previous editor.scrollMargin to vScrollMargin to indicate it's
for vertical scrolling.
2012-01-27 18:42:20 -08:00
Corey Johnson & Nathan Sobo
dea99216d4
Cursor blinks
2012-01-27 17:33:02 -08:00
Corey Johnson & Nathan Sobo
900f745b65
Delete removes character in front of cursor.
2012-01-27 14:16:17 -08:00
Corey Johnson & Nathan Sobo
3b64b78336
Backspace with a selection only deletes the selected text
2012-01-27 13:48:20 -08:00
Corey Johnson & Nathan Sobo
29e7a6d774
Moving the cursor without holding shift clears selection
2012-01-27 12:42:33 -08:00
Nathan Sobo
6bf82a27c9
Selections render themselves on screen (1 div per line)
...
Still a lot of details to cover, but basic selection creation is
working.
2012-01-26 18:54:18 -08:00
Nathan Sobo
5aeef9e58f
WIP: Starting on creating a selection with shift-arrows
...
Introduce Point and Range objects. Selection.selectRight places an
anchor object before moving right if no anchor yet exists. Still no
visual treatment.
2012-01-26 15:45:49 -08:00
Nathan Sobo
4c7441326c
Move text manipulation methods to selection
...
Ultimately, the current selection will control the location / extent of
any manipulation, so it makes sense to put these methods there.
2012-01-26 14:16:17 -08:00
Nathan Sobo
2825c945e5
💄
2012-01-26 13:46:12 -08:00
Nathan Sobo
c70206fc9c
Introduce Selection object that contains the cursor
...
All cursor operations will be proxied through the selection, so that
the selection can be cleared if necessary.
2012-01-26 13:23:59 -08:00
Corey Johnson
83c8684f80
Uncommented a spec
2012-01-26 10:47:22 -08:00
Corey Johnson
b8776fc010
Uncommented a test
2012-01-26 10:40:04 -08:00
Corey Johnson
902c714f00
Rename col to column
2012-01-26 10:16:43 -08:00
Corey Johnson & Nathan Sobo
90faddf9f1
Refactor all buffer manipulation to use Buffer.change
...
Change takes a range and a string and replaces the range with the
string, then emits a change event with the range of text that was
changed, the range of text occupied by the new string, and the string
itself. This can be used to implement backspace, insert, as well as
various cut and paste manipulations.
2012-01-25 17:59:15 -08:00
Corey Johnson & Nathan Sobo
b5317b83a5
Implement backspace on Editor
2012-01-25 16:07:04 -08:00
Corey Johnson & Nathan Sobo
3a423e2a16
Implement backspace on Buffer
2012-01-25 14:33:47 -08:00
Corey Johnson & Nathan Sobo
045c3c39bf
Render empty lines correctly when inserting newlines
2012-01-25 13:36:32 -08:00
Corey Johnson & Nathan Sobo
c536933c0b
Newline chars can be inserted into the buffer.
2012-01-25 12:58:36 -08:00
Corey Johnson & Nathan Sobo
c11a618a9f
X and Y were inverted
2012-01-25 12:20:58 -08:00
Corey Johnson & Nathan Sobo
f6ec9daf39
Rename col/row to x/y
2012-01-25 09:35:33 -08:00
Corey Johnson & Nathan Sobo
3534f463a6
Unfocus test
2012-01-25 08:39:36 -08:00
Nathan Sobo
92f7b51cd4
💄
2012-01-24 18:14:44 -08:00
Corey Johnson & Nathan Sobo
90656aaffb
💩
2012-01-24 17:30:40 -08:00
Corey Johnson & Nathan Sobo
0fe70f0920
Focus Editor on DOM attachement
2012-01-24 17:26:38 -08:00
Corey Johnson & Nathan Sobo
b4d91f2bc7
Typing inserts a character at the cursor position
2012-01-24 17:19:01 -08:00
Corey Johnson & Nathan Sobo
4ca3bbdbca
Fix fileFinder test
2012-01-24 15:29:33 -08:00
Corey Johnson & Nathan Sobo
6af33c3337
Editor directs focus to a hidden input element.
...
Now we'll be able to listen for textInput events, which give us better
information about what character is being entered in the presence of
multi-keystroke compositions like alt-u,u for ü
2012-01-24 15:27:05 -08:00
Nathan Sobo
18f09aad9e
💄
2012-01-24 14:21:43 -08:00
Corey Johnson & Nathan Sobo
59086a1131
Map h
to MoveRight
2012-01-24 10:06:25 -08:00
Corey Johnson & Nathan Sobo
10bf803fe0
Make tests green
...
Some need to be disabled because they rely on ace. Others fixed. Others
deleted.
2012-01-23 17:28:16 -08:00
Corey Johnson & Nathan Sobo
5ddf4e1a0b
Ensure combined scroll margins are smaller than editor height.
...
This prevents jerky scrolling when the window is very short.
2012-01-23 17:15:11 -08:00
Corey Johnson & Nathan Sobo
1a52890d19
Cursor scrolls editor as it moves
2012-01-23 16:45:00 -08:00
Corey Johnson & Nathan Sobo
81fc69120f
Retain goal column when moving up on first line.
...
Also: Respect a goal column of 0 when moving down on last line and then
back up. (Unlike TextMate)
2012-01-23 14:56:30 -08:00
Corey Johnson & Nathan Sobo
101d20692d
Don't nuke goalColumn when moving down on last line
2012-01-23 14:37:03 -08:00
Corey Johnson & Nathan Sobo
713615d515
Retain goal column when moving cursor up.
2012-01-23 14:18:34 -08:00
Corey Johnson & Nathan Sobo
5f058e690c
Goal column is cleared when not moving vertically
...
This allows left/right movements to choose a new goal.
2012-01-23 13:58:26 -08:00
Corey Johnson & Nathan Sobo
1dcebbae45
WIP: Use a goal column when moving down
...
Still needs to be cleared when moving horizontally.
2012-01-23 13:40:37 -08:00
Corey Johnson & Nathan Sobo
3d45a5201d
Move movement logic to cursor subview.
2012-01-23 12:50:07 -08:00
Corey Johnson & Nathan Sobo
a647fa4220
Implement d3d
...
Delete line can take a count before the second d. When the second d is
typed it pushed a SelectLines operation. When a numeric prefix is
composed with SelectLines, it assigns its count on select lines, which
uses it to determine how many lines to select. This bypasses the normal
"repeat command" semantics of numeric prefix.
2012-01-23 11:37:00 -08:00
Corey Johnson & Nathan Sobo
9b3fc10130
Make dh keybinding work.
2012-01-23 10:06:56 -08:00
Corey Johnson & Nathan Sobo
261db5189c
Add tests
2012-01-23 09:27:18 -08:00
Danny Greg & Nathan Sobo
98947877e5
Properly html escape rendered text in editor and render empty lines.
2012-01-19 19:08:40 -08:00
Danny Greg & Nathan Sobo
62d8aa72e2
Merge branch 'master' into editor
2012-01-19 18:54:34 -08:00
Danny Greg & Nathan Sobo
0e9bfe4d1a
Builder has class methods for every tag
...
Shorthand: If you know the top-level tag you want to render, you can
call `Builder.div class: "foo", -> ...` instead of calling render.
2012-01-19 18:54:09 -08:00
Danny Greg & Nathan Sobo
aec88e3404
Add Builder.render and instance methods for tags
...
Builder.render takes a function that calls tag methods and returns a
view fragment.
2012-01-19 18:30:32 -08:00
Danny Greg & Nathan Sobo
7d0c5ff2f0
Merge branch 'master' into editor
2012-01-19 16:47:12 -08:00
Danny Greg & Nathan Sobo
5e41f82985
Add a raw call to builder.
2012-01-19 16:46:32 -08:00
Danny Greg & Nathan Sobo
597e4c54b2
Merge branch 'master' into editor
2012-01-19 16:37:58 -08:00
Danny Greg & Nathan Sobo
660beb9f65
Text inside of tags is HTML escaped.
2012-01-19 16:36:32 -08:00
Danny Greg & Nathan Sobo
030e241c75
Don't spill out of document when moving right and left
2012-01-19 15:40:26 -08:00
Danny Greg & Nathan Sobo
a606fe55b3
Keep cursor inside the lines when moving.
2012-01-19 14:39:16 -08:00
Danny Greg & Nathan Sobo
cd127c009e
Cursor can move around screen
...
Still not handling corner cases like moving off the edge of screen,
line, etc.
2012-01-17 18:13:50 -08:00
Nathan Sobo
5198a88cce
Half-baked: Have a lines reasonably looking cursor working.
...
A bunch of tests are failing but you can load a buffer and display its
lines.
2012-01-16 22:11:38 -08:00
Nathan Sobo
4274ff4a81
Merge branch 'master' into editor
2012-01-16 21:28:31 -08:00