Commit Graph

396 Commits

Author SHA1 Message Date
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