Commit Graph

1114 Commits

Author SHA1 Message Date
Nathan Sobo
c4046bbdc5 Place snippet tab relative to snippet start position. Terminate when pressing 'tab' at last tab-stop. 2012-06-22 12:52:40 -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
Nathan Sobo
ae2b686802 Parse tab-stop positions correctly when there are multiple on a line 2012-06-22 11:44:58 -06:00
Nathan Sobo
a936b6b716 Tab advances between snippet tab stops. Still need to account for tab stops moving due to buffer changes. 2012-06-21 16:53:13 -06:00
Nathan Sobo
f9ec6214e6 Snippets parser can parse tab stops in the form of $1, $2, etc.
It associates each tab stop with its position relative to the beginning of the snippet body, and strips the '$number' marker from the inserted snippet body.
2012-06-21 16:33:21 -06:00
Nathan Sobo
f1678fdafe Use an overloaded 'tab' keybinding and the new abortKeyBinding method to implement conditional snippet expansion
If the current word prefix doesn't correspond to a valid snippet, we abort the key binding and try the next one, which ends up being the standard tab binding so a typical tab gets inserted. This is a mechanism that could support overloading of arbitrary keys.
2012-06-20 22:47:05 -06:00
Nathan Sobo
e1309f7c66 Key binding event handlers can call abortKeyBinding on the event object to abort and try the next binding 2012-06-20 22:08:16 -06:00
Nathan Sobo
4590321f0a Apply a hybrid approach to handling events in snippets extension 2012-06-20 21:52:53 -06:00
Nathan Sobo
1bec4c8404 Snippets now advise the insertTab method on EditSessions instead of intercepting events on Editor 2012-06-20 17:56:02 -06:00
Nathan Sobo
9c02e05051 Preserve the value of this when applying before advice 2012-06-20 17:55:29 -06:00
Nathan Sobo
a8a1a74b11 Refactor Snippets to a class that creates an instance for each Editor 2012-06-20 17:46:22 -06:00
Nathan Sobo
d50b7f7a37 Trigger a 'new-edit-session' event when Project.prototype.open creates an EditSession 2012-06-20 17:40:45 -06:00
Nathan Sobo
583af86f68 Add _.adviseBefore for adding before advice to methods 2012-06-20 17:34:21 -06:00
Nathan Sobo
4c8aeb16bb Merge branch 'master' into snippets
Conflicts:
	src/app/window.coffee
2012-06-20 17:11:25 -06:00
Nathan Sobo
e3d7ab31b5 Merge branch 'project-refactor' 2012-06-20 16:41:54 -06:00
Nathan Sobo
b4d77fd107 Load user configuration as part of RootView initialization, before any editors are created 2012-06-20 16:06:45 -06:00
Nathan Sobo
dd69abbdfe Add test case for non-matching prefix causing a regular tab to be inserted 2012-06-20 12:20:37 -06:00
David Graham & Nathan Sobo
d992458c8c Load snippets from .atom/snippets when snippets extension is activated 2012-06-20 11:49:29 -06:00
Corey Johnson & Nathan Sobo
af9aec7cbc SoftWrap state is stored in EditSessions, but it is set and toggled via Editor. 2012-06-20 09:28:23 -07:00
Corey Johnson & Nathan Sobo
d1c1f3cfce Move autoIndent, tabText, softTabs and softWrap to project 2012-06-20 09:28:23 -07:00
Corey Johnson & Nathan Sobo
4e78b29e81 Replace Editor.setBuffer with Editor.edit 2012-06-20 09:28:23 -07:00
Corey Johnson & Nathan Sobo
1280370fd1 Editor constructor requires an editSession (unless it is a mini buffer) 2012-06-20 09:28:23 -07:00
Corey Johnson & Nathan Sobo
4659fd7dc3 Project.open returns an editSession instead of a buffer.
First step in removing the coupling of Editor and Buffer. Editor should get all information about the active buffer from the activeEditSession.
2012-06-20 09:28:22 -07:00
David Graham & Nathan Sobo
e4409be95a Parse multiple snippets and allow any characters in snippet body 2012-06-19 17:56:03 -06:00
David Graham & Nathan Sobo
5b8cc8a6b6 Snippets matching the cursor's word prefix are inserted on 'tab' events 2012-06-19 17:47:09 -06:00
David Graham & Nathan Sobo
4204b27751 Start on Snippets extension
Can parse a basic snippets file
2012-06-19 17:19:47 -06:00
Nathan Sobo
c21766c328 Add RootView.proto.focusNextPane 2012-06-18 20:27:39 -06:00
Nathan Sobo
171a19369a Fix remaining multi-keystroke specs 2012-06-18 17:31:26 -06:00
Nathan Sobo
85f695e4f1 Ensure that only whole keystrokes are matched in binding prefix matches 2012-06-18 17:31:11 -06:00
Nathan Sobo
5ef5c4565a Merge branch 'master' of github.com:github/atom into multi-keystroke-bindings 2012-06-18 17:06:17 -06:00
Nathan Sobo
d9dec3d974 Add spec confirming that multi-keystroke bindings can match against bindings in multiple binding sets
For example, if you have a very unspecific binding "ctrl-x ctrl-c", you can also have very specific "ctrl-x …" bindings, and bindings from both sets can be matched. A partial match in a more specific does not rule out later matches in a less specific set.
2012-06-18 17:05:52 -06:00
Nathan Sobo
9e5b4beeaa Add spec to confirm that an entering an unmatched keystroke sequence clears the queued keystrokes 2012-06-18 16:53:58 -06:00
Nathan Sobo
ac4aae2cec WIP: Begin introducing multi-keystroke bindings to Keymap 2012-06-18 16:46:39 -06:00
Corey Johnson & Nathan Sobo
c02e5bbdbf Do not allow root view to set a font-size less than 1 2012-06-15 17:30:10 -07:00
Corey Johnson & Nathan Sobo
db69ee5627 Calculate gutter dimensions when editor's dimensions are calculated 2012-06-15 17:30:10 -07:00
Nathan Sobo
d9500e6bcd Atom spec no longer closes all open windows
This makes life easier when you're running the spec suite while actually using atom to edit itself.
2012-06-15 16:24:49 -06:00
Corey Johnson & Nathan Sobo
951f76f2bf Serialize root view state to a string of JSON when storing it on the window upon refresh
This avoid situations where arrays in the window state pointed to a different constructor than the current context's Array constructor.
2012-06-15 15:34:07 -06:00
Nathan Sobo
95622dc64e If the cursor is at any buffer position inside a fold, backspace deletes the folded text 2012-06-15 14:41:05 -06:00
Corey Johnson & Nathan Sobo
8d516fe4fe Use a legitimate replace method in AceAdaptor.
Fixes comment toggling in coffeescript, and requires a better implementation of findMatchingBracket in AceAdaptor for outdent to work.
2012-06-15 11:56:09 -07:00
Corey Johnson & Nathan Sobo
e38ade2730 Bugfix: Backspace in middle of line below a fold no longer deletes the newline preceding the cursor 2012-06-14 17:08:14 -06:00
Corey Johnson & Nathan Sobo
1dfbaf67d1 Delete at the end of a line above a fold deletes the folded lines (leaving a newline) 2012-06-14 16:58:47 -06:00
Corey Johnson & Nathan Sobo
daa688b1e1 Merge branch 'master' of github.com:github/atom
Conflicts:
	src/app/edit-session.coffee
2012-06-14 16:25:05 -06:00
Corey Johnson & Nathan Sobo
f025bec910 If a selection ends on a fold, backspace/delete delete all lines inside the fold 2012-06-14 15:52:54 -06:00
Corey Johnson & Nathan Sobo
c73eb97d72 💄 2012-06-14 15:41:02 -06:00
Corey Johnson & Nathan Sobo
9ada2daebd If command panel selects text within a fold, the fold is destroyed 2012-06-14 14:00:35 -07:00
Corey Johnson & Nathan Sobo
8416dc3598 DisplayBuffer.destroyFoldsContainingBufferRow destroys all folds containing buffer row (instead of just folds starting at buffer row) 2012-06-14 13:56:08 -07:00
Corey Johnson & Nathan Sobo
6b5a52ae5c Add repeat-relative-address-in-reverse event to command panel 2012-06-14 11:01:28 -07:00
Corey Johnson & Nathan Sobo
bc3f9543be Update search in reverse test on command interpreter spec 2012-06-14 11:00:14 -07:00
Corey Johnson & Nathan Sobo
b6f9801a19 Move repeat-relative-address test from command inter peter spec to command panel spec 2012-06-14 10:35:30 -07:00
Corey Johnson
c98ad2973d Adding '-' in front of a RegexAddress causes it to search in reverse 2012-06-14 10:35:29 -07:00