Kevin Sawicki
b18627ab9b
Add delete line support bound to meta-d key
2012-09-19 15:23:10 -07:00
Kevin Sawicki
9ba3b74a9d
Add support for Page Up and Page Down keys
2012-09-18 19:53:23 -07:00
Nathan Sobo
7937380eed
Projects w/ EditSessions for now-deleted files can now be reloaded w/out error
2012-09-18 13:30:16 -06:00
Nathan Sobo
c3e748a17c
WIP: Use rake to start compiling resources (like require.coffee)
2012-08-26 16:29:46 -05:00
Nathan Sobo
c2c8724ad0
Initial commit
2012-08-10 13:32:19 -06:00
Corey Johnson
65d40557ff
InsertText takes an option to turn autoIndent off
2012-08-09 16:20:45 -07:00
Corey Johnson
9e53751717
Revert "Add setTextInBufferRange to edit session"
...
This reverts commit ea86ec401b .
2012-08-09 13:25:53 -07:00
Corey Johnson & Nathan Sobo
e8aaec43f7
WIP: Reworking auto-indent/outdent logic
2012-08-09 12:57:47 -06:00
Corey Johnson
ea86ec401b
Add setTextInBufferRange to edit session
2012-08-09 10:33:25 -07:00
Corey Johnson & Nathan Sobo
7fe6a05594
Folding no longer relies on Ace.
...
Indentation is used to determine foldable regions, if the last line matches TextMate's foldEndRegex it is included in the foldable region.
2012-08-08 17:42:11 -07:00
Corey Johnson & Nathan Sobo
1a243adfcf
All specs pass w/ TextMateGrammar for tokenization (auto-indent disabled)
2012-08-03 12:00:05 -06:00
Corey Johnson
08a55dfcac
wip: IndentationForRow almost works TextMate preferences
2012-08-02 17:02:17 -07:00
Corey Johnson & Nathan Sobo
a589557aaa
Ignore bracket matching when there are multiple cursors
2012-08-01 09:47:12 -07:00
Corey Johnson & Nathan Sobo
3a5e73aa77
Merge branch 'making-folding-better'
2012-07-30 13:43:47 -07:00
Corey Johnson & Nathan Sobo
f7614c210a
Add unfold-all and bind it to ctrl-}
2012-07-30 12:11:54 -07:00
Corey Johnson & Nathan Sobo
9622d6f9b3
Rename un/foldScopeContainingBufferRow to un/foldBufferRow.
...
Scope containing buffer row was a misnomer. Waiting until I implement the repeat folding feature before considering a better name.
2012-07-30 10:25:53 -07:00
Corey Johnson & Nathan Sobo
75f0438f6a
Rename fold/unfold to foldCurrentRow/unfoldCurrentRow
2012-07-30 09:58:15 -07:00
Corey Johnson
7ff31d1ad7
Remove toggleFold and replace with fold
2012-07-27 13:46:50 -07:00
Corey Johnson
76ffa5a2c5
change toggle-fold to fold
2012-07-27 13:45:13 -07:00
Nathan Sobo
3516dea210
Introduce LanguageMode wrapper for Ace modes as a foundation of our own modes
...
LanguageMode is the central point for all language-specific behavior associated with an EditSession. There is one LanguageMode instance per EditSession. LanguageMode has access to the EditSession and its TokenizedBuffer, and in reverse the EditSession, DisplayBuffer, and TokenizedBuffer also make use of LanguageMode. This is a bit incestuous, but I think it's okay because you can think of LanguageMode as a swappable strategy object that governs language-specific aspects of that constellation of objects.
2012-07-27 12:30:06 -06:00
Corey Johnson
42299c6a71
When the active edit session is modified, and its file is then modified by the file system, it displays an alert.
2012-07-26 10:59:58 -07:00
Nathan Sobo
54616aee78
Bugfix: When the command panel makes a selection, it destroys surrounding folds
2012-07-26 10:09:28 -06:00
Corey Johnson & Nathan Sobo
d36873f702
Rename Project.open to Project.buildEditSessionForPath
2012-07-18 11:20:13 -07:00
Corey Johnson & Nathan Sobo
c3fe9aa0b3
Implement refcounting scheme on Buffer
2012-07-17 14:24:33 -06:00
Nathan Sobo
1d21de1e83
Merge cursors after buffer changes that didn't occur via the EditSession
...
The buffer now emits a new event 'update-anchors-after-change' to signal that all the anchors have been updated, which is an appropriate time to merge cursors.
2012-07-17 10:38:01 -06:00
Nathan Sobo
512c1bfdb9
Merge branch 'master' into global-find
2012-07-16 14:56:24 -06:00
Corey Johnson
ac04a8ed66
Allow additional indentation after line has been auto-indented
2012-07-16 10:55:44 -07:00
Corey Johnson
95c3ea1b74
Rename insert tab event to indent
2012-07-16 10:34:02 -07:00
Corey Johnson
5184b90365
Hitting tab on a line (containing only whitespace) will auto indent the line and set the cursor to the end
2012-07-16 10:25:28 -07:00
Nathan Sobo
1ac6581f33
EditSession.setSelectedBufferRanges recycles selection instances
...
This prevents changing the scroll position when it isn't necessary.
2012-07-15 17:32:30 -06:00
Nathan Sobo
075968e42c
Associate compiled operations with anchor ranges. All tests pass again.
...
This allows them to update their target range in the face of upstream changes.
2012-07-13 19:46:08 -06:00
Corey Johnson & Nathan Sobo
fd24b82d47
WIP: Converting to operations, but substitution operations need anchor ranges
2012-07-13 18:30:10 -06:00
Corey Johnson & Nathan Sobo
926067164d
Buffer updates anchors when it changes instead of EditSession
2012-07-13 17:42:41 -06:00
Corey Johnson & Nathan Sobo
9eae88e97b
Anchors and AnchorRanges are added to the buffer.
...
Also: Destroying an AnchorRange removes it from the EditSession / Buffer.
2012-07-13 17:18:10 -06:00
Corey Johnson
b9d4270693
Merge branch 'master' into global-find
2012-07-13 09:36:21 -07:00
Corey Johnson
23b42faa1d
Added EditSession.copy()
...
Also, EditSession only needs a project to be deserialized
2012-07-13 09:35:19 -07:00
Nathan Sobo
a4db677979
Implement setSelectedBufferRange w/ setSelectedBufferRanges
...
Also add the preserveFolds option, which doesn't destroy folds containing the selected ranges – mainly for specs right now
2012-07-12 18:57:12 -06:00
Nathan Sobo
f99146b42f
EditSession.setSelectedBufferRanges destroys folds
...
It also clears all existing selections and makes new ones.
2012-07-12 18:40:34 -06:00
Nathan Sobo
61cfbe530b
Fix indentation of selected region with tab
2012-07-06 15:18:32 -06:00
Corey Johnson & Nathan Sobo
9f9c636883
When snippet expansion is undone, the snippet is destroyed
...
This is still in progress. You can't *redo* snippet expansion and restore tab stops. Also, this commit performs all changes associated with snippet expansion in a transaction.
2012-07-06 12:10:14 -06:00
Corey Johnson & Nathan Sobo
6177b46cf9
Restore selection on active edit session when undoing/redoing
...
The `do`, `undo`, and `redo` methods on operations take an optional editSession argument, which can be used to determine the context in which they are being run. We restore selections on that edit session instead of the session where the operations originally occurred.
2012-07-06 11:42:07 -06:00
Nathan Sobo
42eefb49a9
Add UndoManager.prototype.transact
...
The `transact` method takes a function and batches all operations within that function as a single transaction to be undone and redone. The edit session now uses generic operations to restore selection state around transactions. The `undo` and `do` methods on operations are now optional. In addition, the undo manager now supports an optional `redo` method on an operation for code that should *only* be run on redo, and not when the operation is initially pushed. This is used by edit session to restore selection state after redo.
2012-07-05 20:04:16 -06:00
Nathan Sobo
0043a5045b
Refactor snippets extension
...
Pull out a SnippetExpansion class that is created when a snippet is successfully expanded. This is the only object that gets associated with the edit session.
2012-07-04 21:59:05 -06:00
Nathan Sobo
fb6aa46531
Editor subscribes to buffer-path-change events on edit sessions, not buffers directly
2012-07-04 12:05:09 -06:00
Nathan Sobo
8fbbd77a23
Commands terminating in a substitution restore their initial selection
2012-07-02 19:35:14 -06:00
Corey Johnson
98393a653e
Destroy editSession by calling a method on the project instead of triggering a destroy event that the project listens to.
2012-06-29 15:09:31 -07:00
Corey Johnson
c3d7d3566f
Buffer listens for changes to file and triggers 'contents-change' event
2012-06-29 15:09:31 -07:00
Nathan Sobo
01993f1be2
Editor selects text that was typed at a tab-stop when shift-tabbing back to it
2012-06-26 17:55:40 -06:00
Nathan Sobo
65991c686a
Snippets can contain placeholder text (but can't nest yet)
...
Snippet placeholders are managed by adding an "anchor range" to the edit session. An anchor range basically tracks two anchors for the start and the end of the range.
2012-06-26 17:29:32 -06:00
Nathan Sobo
5c6e94ec74
Tab stops are associated with anchors so we can jump to them event when the buffer changes
2012-06-22 12:07:20 -06:00