Commit Graph

239 Commits

Author SHA1 Message Date
Kevin Sawicki
1d84274973 Return existing selections from addSelection()
Previously if a selection was added and then merged
away the selection-added event would still fire even
though the selection was already destroyed.

Now the existing selection that intersects with the
range is returned when the merge destroys the new selection.

Closes #374
2013-03-27 17:59:55 -04:00
probablycorey
a1b82e9dad Allow mini-editors to explicitly set their grammars 2013-03-27 11:00:53 -07:00
Kevin Sawicki
e0a93ed1c2 Emit a grammar-changed event from edit session
This event is now listened for from the editor and
re-emitted under the editor namespace.  This removes
the need to monitor the syntax's grammars-loaded event
from both places and also mirrors the behavior of the
path-changed event.
2013-03-23 09:00:44 -07:00
Kevin Sawicki
49d1801742 Remove dead code 2013-03-22 09:33:18 -07:00
Kevin Sawicki & Nathan Sobo
1d1ba5f6d1 Use node's require instead of internal require 2013-03-12 10:38:05 -07:00
Kevin Sawicki
2212222c47 Use underscore node module 2013-03-11 11:22:36 -07:00
Corey Johnson & Nathan Sobo
0375d7f45a 💄 2013-03-07 14:25:34 -08:00
Corey Johnson & Nathan Sobo
17f4d6f064 EditSession reloads its grammar on the 'grammars-loaded' event 2013-03-07 14:25:14 -08:00
Corey Johnson & Nathan Sobo
cac6c854d2 💄 2013-03-07 10:25:51 -08:00
Corey Johnson & Nathan Sobo
5ad53bb32c Add restoreItem to Pane container 2013-03-07 09:30:29 -08:00
Nathan Sobo
24c9f11cc9 Trigger modified-status-changed on buffers/edit sessions 2013-03-07 09:30:27 -08:00
Corey Johnson & Nathan Sobo
5291924bcc Set the project path when its first edit session is saved 2013-03-07 09:30:26 -08:00
Nathan Sobo
21990cf986 Add EditSession.getLongTitle 2013-03-07 09:30:24 -08:00
Nathan Sobo
de8198084c EditSession emits 'title-changed' events when its buffer path changes 2013-03-07 09:30:24 -08:00
Kevin Sawicki & Nathan Sobo
106c6c3958 Return 'untitled' from EditSession.getPath if its path is null 2013-03-07 09:30:22 -08:00
Kevin Sawicki & Nathan Sobo
d6b85cf7e8 Base title updates on pane:active-item-changed events 2013-03-07 09:30:22 -08:00
Nathan Sobo
45eec6a8ff Get more specs passing. Failing specs due to missing features. 2013-03-07 09:28:52 -08:00
Nathan Sobo
c6729e9df1 Ignore redundant destructions of EditSessions 2013-03-07 09:28:51 -08:00
Nathan Sobo
372393d9ca Allow panes to have model objects as items in addition to views
The problem I've been struggling with is that we need to potentially 
assign tabs both to EditSessions and also to other views added by
extensions, like a markdown preview view. EditSessions are however not
actually views… instead they plug into editors. The solution is to
have the pane ask a model object what view should be used to render
it. When asked to show a non-view item, the pane constructs and
appends a view for that item or recycles an appropriate view that it
has already appended.
2013-03-07 09:28:51 -08:00
Nathan Sobo
beaeac4425 Rename buildEditSessionForPath to buildEditSession
Since this is the more external method, having a shorter name
is more convenient. The former `buildEditSession` method took a
Buffer, and is now called `buildEditSessionForBuffer`.
2013-03-07 09:28:51 -08:00
Kevin Sawicki & Nathan Sobo
e858f7eb2a Replace stayValid option w/ validationStrategy when creating markers 2013-02-26 17:03:02 -07:00
Kevin Sawicki & Nathan Sobo
5da5bf94b6 Add 'editor:save-debug-snapshot' command. Closes #191.
This saves the state of the rendered lines, the display buffer, the
tokenized buffer, and the buffer to a file. If a problem arises with
rendering, hopefully we can use it to diagnose in which layer things
went awry.
2013-02-22 14:28:04 -07:00
Kevin Sawicki
881efd9c5d Restore selection when undoing an insert newline below 2013-02-20 14:09:40 -08:00
Kevin Sawicki
af58c1e83f Bind meta-shift-enter to insert newline above current line
Closes #292
2013-02-20 13:44:30 -08:00
Kevin Sawicki
dedde7b222 Only add newline when insert row exceeds last row
Previously if the line before a trailing newline was
duplicated an extra newline would inserted with the
duplicated line.
2013-02-19 21:02:25 -08:00
Nathan Sobo
7bdd51b456 Rename deserializeView to deserialize
In additional, rename `registerViewClass(es)` to `registerDeserializer(s)`.
This moves us to a situation where any kind of object may want to be
deserialized, not just views.
2013-02-19 09:48:40 -07:00
Nathan Sobo
0bd98bf8f8 Do a better job cleaning up after Editors and EditSessions
- EditSessions destroy their Selections when they are destroyed
- Editors destroy their EditSessions when they are destroyed
- Editors unsubscribe from the document and window when they are
  removed from the DOM.
- When an EditSession is destroyed via any code path, the Editor with
  that EditSession removes it.
- Selections no longer trigger 'destroyed' events if their parent
  EditSession has already been destroyed.

These are all really intertwined, so I'm doing them as one commit
since that was the only way to keep the specs green.
2013-02-06 16:54:19 -07:00
Kevin Sawicki & Nathan Sobo
59d0742c17 Remove Anchor and AnchorRange. They're fully replaced by markers.
We're still leaking markers for selections and cursors. We need to
clean that up before merging.
2013-02-05 18:15:48 -07:00
Kevin Sawicki & Nathan Sobo
75e040b73b Merge remote-tracking branch 'origin/dev' into markers
Conflicts:
	src/app/editor.coffee
2013-02-05 16:07:05 -07:00
Kevin Sawicki & Nathan Sobo
3dab8e92ee Convert snippets to use markers instead of anchor ranges 2013-02-05 15:54:41 -07:00
Kevin Sawicki & Nathan Sobo
94d1edcc06 Add EditSession.selectMarker 2013-02-05 15:54:20 -07:00
Kevin Sawicki
8de45ccc21 Bind meta-D to duplicate line below
Refs #134
2013-02-05 12:16:50 -08:00
Nathan Sobo
afe0a6570a Reduce observation to single observeMarker method on display buffer
It will call the observer callbacks with the buffer and screen positions
of the head and tell each time any of these values is changed.
2013-02-04 21:24:06 -07:00
Kevin Sawicki
0270ba3e1c Add bracket matcher that highlights pair
(), {}, and [] pairs are now highlighted when
after or before the cursor
2013-02-04 18:09:20 -08:00
Nathan Sobo
ead93d0f39 Rename to DisplayBuffer.observeMarkerHeadPosition
When you observe, you get callbacks whenever the screen or buffer
position changes, and you get the new and old position in both 
coordinate types.
2013-02-04 11:32:47 -07:00
Nathan Sobo
abafb541df Merge remote-tracking branch 'origin/dev' into better-anchors 2013-02-02 16:47:09 -07:00
Nathan Sobo
f6ea6a39d9 Remove anchorPoint state from EditSession 2013-02-02 16:46:25 -07:00
Nathan Sobo
1bbb954239 EditSession specs passing after converting Selection to use markers
Still a bit of a mess though...
2013-01-31 18:26:29 -07:00
Corey Johnson
587111074d Don't complain if restoring an unnamed buffer 2013-01-31 15:16:03 -08:00
Nathan Sobo
628701fd3a Finish converting cursors to use markers.
The model layer works at least… haven't tested the view. Will test out
the view once I get the selection model working.
2013-01-31 15:52:28 -07:00
Nathan Sobo
bc44540b10 Start adding ability to observe marker head positions 2013-01-31 14:00:01 -07:00
Nathan Sobo
2df0b9fa19 WIP: Start converting cursor and selection to be based on markers 2013-01-30 22:47:29 -07:00
Nathan Sobo
fd99c795b9 Merge remote-tracking branch 'origin/dev' into better-anchors 2013-01-30 20:45:31 -07:00
Nathan Sobo
dfe0cad217 Replace anchor point/range with a single concept: markers
A "marker" is basically like a persistent selection/cursor composite,
having a head and a tail. The "head" is like the cursor in a selection,
and the "tail" is like the part of the selection that doesn't move. My
goal is for markers to be the only construct used to track regions
in the buffer. I want to replace anchors with them.
2013-01-30 16:52:09 -07:00
Kevin Sawicki
5f343d74b2 Use new EditSession.isFoldedAtBufferRow method when moving lines 2013-01-30 13:54:26 -08:00
Kevin Sawicki
1acf0b870f Support translating points and ranges 2013-01-30 13:49:10 -08:00
Nathan Sobo
6388ec8bd7 Kill call to removed method 2013-01-30 13:24:06 -07:00
Nathan Sobo
113a8fa279 Merge remote-tracking branch 'origin/dev' into better-anchors
Conflicts:
	src/app/cursor.coffee
	src/app/editor.coffee
2013-01-30 12:59:04 -07:00
Kevin Sawicki
8dbcefa932 Style color of folded line numbers 2013-01-30 11:50:23 -08:00
Nathan Sobo
30909a8e8f Move anchor points to buffer; restore invalidated points on undo 2013-01-30 12:23:42 -07:00