Commit Graph

181 Commits

Author SHA1 Message Date
Nathan Sobo
486a7937b5 Render • instead of line number for soft-wrapped lines 2014-04-22 17:09:38 -06:00
Nathan Sobo
f5551929d8 Account for half-visible lines in DisplayBuffer::getVisibleRowRange
We need to add 1 to the editor's height in lines, because it's possible
to have *partially visible* lines at the top and the bottom.
2014-04-22 17:09:38 -06:00
Nathan Sobo
c4be3069f7 Select on mouse drag 2014-04-22 17:09:37 -06:00
Nathan Sobo
3a433f734c Move the cursor on single click 2014-04-22 17:09:36 -06:00
Nathan Sobo
3d3b72a954 Render selections 2014-04-22 17:09:04 -06:00
Nathan Sobo
96e6ddac2e Prevent out-of-bounds scrollTop assignment on DisplayBuffer 2014-04-22 17:09:04 -06:00
Nathan Sobo
5a8ca1ae66 Move screen-related properties to DisplayBuffer
Scroll positions, height, width, line height. We force update when one
of these observed properties changes.
2014-04-22 17:09:03 -06:00
Nathan Sobo
53cc5c9856 Base cursor x position on char widths stored in DisplayBuffer
Whenever new lines are added to the screen, we measure and store any
unseen scope/character combinations in the DisplayBuffer.
2014-04-22 17:09:03 -06:00
Nathan Sobo
148a9f0248 Add DisplayBuffer::pixelPositionForScreenPosition
This bakes character width tracking into display buffer directly, which
moves us toward a world where all rendering decisions can be made in the
model to strictly control DOM reads.
2014-04-22 17:09:03 -06:00
Corey Johnson
4a6b70d261 Use Marker::get/setProperties 2014-04-18 15:50:30 -07:00
Nathan Sobo
b9b3d021cc Add private method docs to DisplayBuffer::outermostFoldsInBufferRange 2014-03-06 15:31:14 -07:00
Nathan Sobo
6e202e18d8 💄 more comment formatting 2014-03-06 15:29:25 -07:00
Nathan Sobo
da85a07dae 💄 comment formatting 2014-03-06 15:17:34 -07:00
Nathan Sobo
ce4ce55b29 Make outermostFoldsForBufferRowRange exclusive of end row 2014-03-06 12:52:27 -07:00
Nathan Sobo
d97a0a3324 Add DisplayBuffer::outermostFoldsInBufferRowRange 2014-03-06 12:36:42 -07:00
Nathan Sobo
63f5a0a324 💄 Rename attributes to params to match TextBuffer naming 2014-03-06 12:32:17 -07:00
Nathan Sobo
f0837bb98b 📝 Improve DisplayBuffer::findMarkers docs 2014-03-06 12:31:55 -07:00
Nathan Sobo
40a8522460 Merge pull request #1623 from atom/ns-fix-editor-width-related-freezes
Fix freezes related to the editor's width in characters being assigned to non-positive integers
2014-02-28 20:38:07 +02:00
Nathan Sobo
4681098e8c Only allow positive widths in characters to be assigned
Fixes #1574
2014-02-28 10:31:02 -08:00
Nathan Sobo
dc5dc608ba Avoid row map corruption when replacing a subset of a fold's buffer rows
Fixes #1576

When splicing regions into the row map, we always express the starting
buffer row, then the number of buffer rows covered by the regions we're
inserting. When we're inserting regions representing folds, they always
extend to the end of a fold, so we need to ensure the endBufferRow also
extends to the end of the fold.

For example, say rows [5…10] are folded, and we handle a replacement of
rows [5…8]. We will still insert a region for the fold covering 1 screen
row and 5 buffer rows, so we need to update the endBufferRow to extend
to the end of the fold as well (10).
2014-02-28 10:11:57 -08:00
Nathan Sobo
f17c490768 Make Editor::unfoldBufferRow destroy all folds containing the buffer row
Also, remove ::destroyAllFoldsContainingBufferRow as it is now redundant
2014-02-27 16:16:01 -08:00
Nathan Sobo
761fcde654 💄 2014-02-27 15:34:19 -08:00
Nathan Sobo
f20c55f849 Use error constructor's name explicitly rather than arguments.callee 2014-02-27 15:29:47 -08:00
Nathan Sobo
1f7027d825 Throw a custom BufferToScreenConversion error with metadata 2014-02-27 15:07:08 -08:00
Nathan Sobo
0c8bb089b9 Reduce variation of buffer row to screen row conversion error message 2014-02-27 10:34:57 -08:00
Nathan Sobo
f612a85599 Merge remote-tracking branch 'origin/master' into ns-modernize-doc-links 2014-02-20 16:35:16 -07:00
Corey Johnson & Nathan Sobo
6c5a5c49da Remove unused Point 2014-02-20 11:14:15 -08:00
Nathan Sobo
53fb36d0e2 Switch all documentation links to match CoffeeScript literal notation
Foo::bar for instance methods
Foo.bar for class methods
2014-02-19 17:23:47 -07:00
Nathan Sobo
d64fefd96c Merge branch 'master' into ns-fix-softwrap
Conflicts:
	src/row-map.coffee
2014-02-14 08:36:58 -07:00
Kevin Sawicki
ec4cf8b497 Remove ConfigObserver
This class offers little utility now that emissary exists with beefed
up Subscriber and Emitter classes.
2014-02-06 13:07:25 -08:00
Kevin Sawicki
5b453290ad Mark DisplayBuffer methods delegated to as public 2014-02-06 11:17:20 -08:00
Kevin Sawicki
227454e27e Remove ### style visibility comments 2014-02-06 10:40:45 -08:00
Kevin Sawicki
cee0b951fb Remove empty Private: comments 2014-02-06 10:11:32 -08:00
Nathan Sobo
5017f1473c 💄 2014-02-02 19:52:51 +06:00
Nathan Sobo
c3f995b165 Fix lurking soft-wrap bugs
This commit adds two important things:

1. An editor spec that randomly mutates a buffer and toggles soft wrap
on and off, then compares the screen lines to a simple reference
implementation to ensure everything stays in a correct state.

2. A new and radically simpler implementation of RowMap that eliminates
failures in the randomized test.
2014-01-30 00:52:17 -07:00
Nathan Sobo
aec9e75ecb Send more info on errors converting buffer positions to screen positions
We've gotten one rogue error but I have no idea how to reproduce it.
This will tell us if soft wrap is enabled and if any folds are present
so hopefully we can start narrowing these down.
2014-01-26 15:00:58 -07:00
Nathan Sobo
8ca8ac5efc Make ConfigObserver a proper mixin and export it 2014-01-21 20:56:23 -07:00
Nathan Sobo
3ab7836ab2 Upgrade to emissary 0.31.0 for implicit 'value' subscriptions on signals
Previously, when you always had to specify the event name of 'value'
when calling `::subscribe` with a signal. Now, if you don't specify an
event name, 'value' is assumed.
2014-01-11 11:22:31 -07:00
Nathan Sobo
25cc37bc86 Replace {StringMarker} references with {Marker} in API docs 2014-01-06 15:13:12 -07:00
Nathan Sobo
cbec03c158 Rename reactionary to theorist 2014-01-05 10:25:59 -07:00
Nathan Sobo
8da9e8ddc1 Rename nostalgia to serializable
This name was surprisingly available and better matches this module's
utilitarian nature.
2014-01-03 18:32:44 -07:00
Nathan Sobo
c6770aa83e Merge remote-tracking branch 'origin/master' into ns-remove-telepath-from-core
Conflicts:
	package.json
	src/pane.coffee
2014-01-03 17:46:45 -07:00
Nathan Sobo
e26d97d5ac Remove telepath as a core dependency 2014-01-03 17:42:11 -07:00
Nathan Sobo
821debcb85 Make Editor, DisplayBuffer, TokenizedBuffer to not use telepath
This commit introduces dependency on a new npm called
[reactionary](https://github.com/atom/reactionary). It will serve as a
*much* lighter weight model framework to provide the reactive features
of telepath without the replication logic.

Specs are still failing for panes and workspace. I plan to just roll
forward and remove the telepath dependency from them as well.
2013-12-31 18:19:53 -07:00
Kevin Sawicki
6f5d85edb9 Use grammar registry from first-mate 2013-12-31 15:15:39 -08:00
Nathan Sobo
c8253be1ae Use the softWrap property directly 2013-12-07 14:08:00 -08:00
Nathan Sobo
9ede5f85e3 Use the ::editorWidthInChars property directly 2013-12-07 14:07:46 -08:00
Nathan Sobo
1ccc93c50b Make DisplayBuffer a telepath model subclass 2013-12-07 03:07:15 -08:00
Nathan Sobo
a4d2b4d21a Make TokenizedBuffer a telepath.Model subclass
There's a bunch of improvised code to make this work right now because
of the circularity of this refactoring. It will stabilize over time.
2013-12-07 02:25:47 -08:00
probablycorey
a0ceb78627 Move snapshot code to package 2013-11-26 11:15:55 -08:00