Nathan Sobo
5b143d4b93
Add 'autosave' option, which saves when unfocusing or switching tabs
2012-11-30 14:11:27 -07:00
Corey Johnson & Nathan Sobo
be2b9ee100
Store autoscroll state on Selection and Cursor models
2012-11-30 12:08:41 -07:00
Corey Johnson & Nathan Sobo
b9e847d290
Remove logging
2012-11-30 11:47:36 -07:00
Corey Johnson & Nathan Sobo
ac0e3095ec
Only autoscroll selections to center if they are offscreen
2012-11-30 11:40:27 -07:00
Corey Johnson & Nathan Sobo
f9c7c08641
Selected results of a find operation are centered in the viewport
2012-11-29 18:52:34 -07:00
Nathan Sobo
00832b08bb
Allow editor to be focused when it is clicked
2012-11-29 13:57:29 -07:00
Corey Johnson & Nathan Sobo
eb0414f4e7
Emit a contents-conflicted` event instead of contents-change-on-disk
2012-11-28 15:21:12 -07:00
Corey Johnson & Nathan Sobo
1aa8f26e94
Scrolling does not jerk to a stop when scrolling w/ a trackpad
...
When scrolling with a trackpad, webkit repeatedly triggers multiple mousewheel events on the original event's target element to simulate the velocity effect we're accustomed to with touchscreen UIs. When scrolling quickly, this clashed with our strategy of removing off-screen lines, because the element was removed before the velocity were done firing.
The solution is to make the overlayer accept mouse events. It lays on top of all the lines, so it is never removed and therefore allows the mousewheel events to run to completion. But, this means we need to transfer mousedown events from the overlayer to the underlying lines.
2012-11-28 12:25:14 -07:00
Nathan Sobo
94220d95a7
When updating lines, build contiguous lines from a single html string
...
This cuts down on parse time and improves the frame rate when scrolling.
2012-11-27 18:54:26 -07:00
Nathan Sobo
c5a3e81dab
Reduce line overdraw to improve scroll performance
2012-11-27 18:19:33 -07:00
Nathan Sobo
d22a199dc6
Simplify handling of 'mousewheel' event
2012-11-27 18:19:17 -07:00
Nathan Sobo
d47a82f585
Handle selection dragging when cursor goes off-screen
2012-11-26 17:21:50 -07:00
Nathan Sobo
cc2e1c1381
Merge pull request #99 from github/async-tokenization
...
Tokenize asynchronously
2012-11-23 12:05:20 -08:00
Nathan Sobo
a1ae819908
Only tokenize in background if when a buffer is visible in an editor
...
This will prevent running a bunch of background tokenization when Atom is reloaded. We only perform tokenization to support content that is actually on screen.
2012-11-23 12:41:08 -07:00
Nathan Sobo
5aba8596a9
Make tokenization synchronous in all specs
...
Disabled some specs that need to make it asynchronous again… will deal with those soon.
2012-11-21 08:22:13 -07:00
Nathan Sobo
69ec6b5441
Add the 'editor:edit-session-removed' event to Editor
2012-11-20 16:03:11 -07:00
Nathan Sobo
e508d73dd4
Always provide the EditSession and its index on EditSession events
2012-11-20 15:49:52 -07:00
Nathan Sobo
4a373a9173
Add 'editor:edit-session-added' event to Editor
2012-11-20 15:43:57 -07:00
Nathan Sobo
056c6c5af2
Add 'editor:active-edit-session-changed' events to Editor
2012-11-20 15:23:30 -07:00
Corey Johnson & Nathan Sobo
e52dbb682e
WIP: Perform tokenization in chunks when edit session is shown
2012-11-19 16:50:49 -07:00
Kevin Sawicki
55f88d2d76
Make toggle-ignored-files a window event
2012-11-19 09:30:21 -08:00
Kevin Sawicki
34e5e4a65b
Merge branch 'master' into ignore_git_ignored_paths_in_file_finder
2012-11-19 09:17:09 -08:00
Nathan Sobo
cf4e87103e
Emit row-oriented screen lien change events from EditSession
2012-11-16 07:36:35 -07:00
Nathan Sobo
841e34090b
Rename from/to to start/end in Editor's queued change events
2012-11-16 07:36:35 -07:00
Nathan Sobo
8ef8924871
💄
2012-11-16 07:36:35 -07:00
Nathan Sobo
185ca22488
Make cursor blink by changing CSS visibility with setInterval
...
This is actually more efficient than the CSS animation we were doing previously, because it doesn't force the cursor to be sampled at 60 FPS for something that changes around twice a second.
2012-11-14 20:43:34 -07:00
Nathan Sobo
00a6472a2c
Update display synchronously when scrolling to prevent flicker
2012-11-14 15:10:05 -07:00
Nathan Sobo
7f8e2643f5
Auto-scroll last to avoid forcing a reflow before we're done modifying
2012-11-14 15:04:13 -07:00
Nathan Sobo
9424674b37
Trigger 'selection-change' events when selection view changes
2012-11-14 14:34:52 -07:00
Nathan Sobo
a6e928d85a
Use MessageChannel-based nextTick to schedule Editor display update
...
This is the fastest way I've found to get the nextTick behavior, which allows us to aggregate multiple requests for display update (from selection changes, cursor movement, line changes) etc into a single call at the end of processing an event.
2012-11-14 13:57:27 -07:00
Nathan Sobo
3eeb4435a5
Re-render the gutter on changes if the screen or buffer delta are != 0
...
Basically, we don't re-render the gutter for single-line edits. Every other kind of change does re-render it however.
2012-11-14 13:13:23 -07:00
Corey Johnson & Nathan Sobo
9fa577f8c4
Using requestAnimationFrame with some disabled features
...
Not sure if it feels faster, but the code is a bit more organized at least.
2012-11-13 18:25:29 -07:00
Corey Johnson & Nathan Sobo
97e3a8f248
Lipstick
2012-11-13 17:23:19 -07:00
Corey Johnson & Nathan Sobo
2aed267752
Don't call updateDisplay re-entrantly from scrollTop
2012-11-13 17:23:09 -07:00
Corey Johnson & Nathan Sobo
041dc2b6b0
Replace calls to renderLines w/ resetDisplay in Editor
2012-11-13 17:21:27 -07:00
Corey Johnson & Nathan Sobo
cef9ce6ca7
Add needsUpdate and needsAutoscroll properties to cursor views
...
Then in the editor, we update and autoscroll only the views that need it. Autoscrolling is suppressed when resetting the display so that we honor the scroll positions of the active EditSession.
2012-11-13 17:20:48 -07:00
Nathan Sobo
f96cf439c0
Adding/removing SelectionViews through Editor#updateDisplay
2012-11-13 15:06:32 -07:00
Nathan Sobo
c09249313b
Only add CursorViews during Editor#updateDisplay
...
The goal is that no model operation will ever modify the DOM directly. We will always request a display update, which will happen on the next animation frame.
2012-11-13 14:54:59 -07:00
Nathan Sobo
8aad2480b6
Only autoscroll to cursor when it is attached *after* reset
2012-11-13 14:30:24 -07:00
Nathan Sobo
bfef9077f3
Don't autoscroll when updating the display after adjusting scrollTop
2012-11-13 14:18:51 -07:00
Corey Johnson & Nathan Sobo
b5efec308a
wip: updateDisplay
2012-11-13 12:08:41 -08:00
Corey Johnson & Nathan Sobo
9c0f1d428f
Rename updateAppearance to updateDisplay
2012-11-13 11:21:46 -08:00
Nathan Sobo
3bc11ede77
Set the lines div height explicitly so it can be > 100% of parent
...
All editor specs pass
2012-11-09 14:25:59 -07:00
Nathan Sobo
538c44f82b
Fix bug caused by the fact that 0 <= null ===> true. God. damn. it.
2012-11-09 14:02:13 -07:00
Nathan Sobo
ee9ae449f3
💄
2012-11-09 13:43:28 -07:00
Nathan Sobo
5519929d8e
Kill console.log
2012-11-09 13:38:27 -07:00
Corey Johnson & Nathan Sobo
e014f60f39
Update overdraw if scrolling beyond rendered lines in either direction
...
Also a few refactorings, and handle scroll height change in update lines
2012-11-09 13:27:05 -07:00
Will Farrington
ee51e2ea0c
Add toggle ignored files command
2012-11-09 12:05:14 -08:00
Corey Johnson & Nathan Sobo
507c12a0fa
Highlight cursor line after updating rendered lines
2012-11-09 11:24:47 -07:00
Corey Johnson & Nathan Sobo
1996eaeb54
Preliminary approach to updating the gutter
...
This is just to get specs passing. We want to use the intact ranges to only render the exact lines that changed.
2012-11-09 11:17:42 -07:00