Commit Graph

946 Commits

Author SHA1 Message Date
Corey Johnson & Nathan Sobo
83a68dbbb0 GlobalKeymap.handleKeyEvent does not stop event propagation if no binding matches. 2012-01-11 13:16:11 -08:00
Corey Johnson & Nathan Sobo
278ac6a9f2 Remove bindKey from views. Make FileFinder use atom.bindKeys 2012-01-11 13:16:11 -08:00
Corey Johnson & Nathan Sobo
1aa99c379f Move GlobalKeymap instance to App. Clear bindings between examples. 2012-01-11 13:16:11 -08:00
Corey Johnson
766f301bc1 atom.bindKey calls RootView.bindKey 2012-01-11 13:16:11 -08:00
Corey Johnson & Nathan Sobo
e58f699681 Remove KeyBinder and CommandMap. 2012-01-11 13:16:11 -08:00
Nathan Sobo
2a80a72d64 Bind keydown on root view to catch events that aren't handled by ace
Also fixed a bug where the GlobalKeymap wasn't returning true when it
matched a binding, which caused key events to be processed twice when
they bubbled out of the editor and hit the root view.
2012-01-11 13:16:11 -08:00
Nathan Sobo
7f4120ce36 Toggle file-finder with a new CSS-style keybinding
Still doesn't hide when the text field is focused because we need to
handle key events that didn't emerge from Ace. That's next.
2012-01-11 13:16:11 -08:00
Nathan Sobo
51736e7695 Call window.close when window receives the 'close' event.
The RootView binds meta-w to the 'close' event.
2012-01-11 13:16:11 -08:00
Nathan Sobo
783e9446e9 Fix bug: Don't call handleKeyEvent with undefined event
Ace triggers key handlers for both keydown (onCommandKey) and input
(onTextInput) events. Input events don't pass the event, which was
blowing up the keymap.
2012-01-11 13:16:11 -08:00
Corey Johnson & Nathan Sobo
66707fc423 Return false if no key binding matches. Don't loop forever. 2012-01-11 13:16:11 -08:00
Corey Johnson & Nathan Sobo
0346671d18 💄 2012-01-11 13:16:11 -08:00
Corey Johnson & Nathan Sobo
4e7b1b8979 Meta-s triggers save event with the new css-based keymap. 2012-01-11 13:16:10 -08:00
Corey Johnson & Nathan Sobo
6a25dc00c5 Add BindingSetSpec and change keybinding pattern separator.
Also, we allow chorded bindings to be surrounded in <…> in preparation of key sequences.
2012-01-11 13:16:10 -08:00
Corey Johnson & Nathan Sobo
11866b90fe Rename KeyEventHandler to GlobalKeymap 2012-01-11 13:16:10 -08:00
Corey Johnson & Nathan Sobo
e9c0b9903d Test that global key bindings defined on root view work in the editor. 2012-01-11 13:16:10 -08:00
Corey Johnson & Nathan Sobo
c3b5cd19ea Editor can have custom key event handler.
editor.keyEventHandler.handleKeyEvent is passed all key events. When it returns true, the event is not handled by Ace.
2012-01-11 13:16:10 -08:00
Corey Johnson & Nathan Sobo
7f3396c125 Rename createKeyEvent to keydownEvent 2012-01-11 13:16:10 -08:00
Corey Johnson & Nathan Sobo
6ed0684eed Fix Project.getFilePaths spec. It returns relative paths. 2012-01-11 13:16:10 -08:00
Nathan Sobo
65605409b0 Favor key bindings with the most specific CSS selectors
Now if a keypress event bubbles to an element with bindings for
multiple matching selectors, the most specific selector is chosen. This
allows us to override a keybinding by using a more specific selector.
For example, say we have an editor instance inside of the file-finder
widget, so that the user can use all their normal bindings when they
type the name of the file. Except when they hit <esc> we want to close
the file finder, not do whatever they normally have it bound to. Now we
can just say:

```
.file-finder .editor {
  <esc>: close-file-finder
}
```

And we're assured that our binding will take precedence.
2012-01-11 13:16:10 -08:00
Nathan Sobo
f5be55e000 Only trigger bindings on the closest ancestor node of an event target.
Say we have a structure like:

div.parent
  div.child
    div.grandchild

And we have two mappings:

.parent { x: foo }
.child { x:bar }

If there's an event originating on grandchild, it will *only* trigger
bar, because that selector selects a closer ancestor.
2012-01-11 13:16:10 -08:00
Nathan Sobo
9c98e971fc Key binding selectors match events on descendants 2012-01-11 13:16:10 -08:00
Nathan Sobo
18e614e88d Start experiment: associate key bindings with CSS selectors
KeyEventHandler holds references to BindingSets. The name "binding set"
is based on the concept of a CSS ruleset. The idea is to choose a key
binding for an event based on what selectors (match / most closely
contain) the event's target DOM node.
2012-01-11 13:16:10 -08:00
Nathan Sobo
3a1d167a0f Command map allows for ambiguous key pattern prefix matches.
If we have pattern 'da' and 'dad' both mapped, when 'da' is typed, the KeyMap waits for a given timeout for another character to be entered. If the time elapses, it goes ahead and executes the action for 'da'. But if a 'd' is subsequently entered, it executes 'dad'.
2012-01-11 13:16:10 -08:00
Nathan Sobo
d0ff3c7d4a Start on CommandMap for Vim-style command mode. Matches patterns involving multiple key events. 2012-01-11 13:16:10 -08:00
Nathan Sobo
b0dc93d8cc Fix breakage 2012-01-07 02:07:55 -08:00
Nathan Sobo
36e9269e85 Merge branch 'master' of github.com:probablycorey/Atomicity 2012-01-06 19:57:35 -08:00
Nathan Sobo
df7ad14e2c 💄 2012-01-06 15:18:10 -08:00
Corey Johnson & Nathan Sobo
18b9782b16 Opening a previously opened url restores the same buffer and session. 2012-01-05 16:33:53 -08:00
Corey Johnson & Nathan Sobo
12cf511a40 💄 2012-01-05 13:10:00 -08:00
Corey Johnson & Nathan Sobo
8446b6c751 Open buffers with Project.open 2012-01-05 13:08:55 -08:00
Corey Johnson & Nathan Sobo
23c3cbf85f Add Project.open, which returns a buffer for an absolute/relative path. 2012-01-05 12:02:25 -08:00
Corey Johnson & Nathan Sobo
5293ba7469 Add fs.join 2012-01-05 12:01:55 -08:00
Corey Johnson & Nathan Sobo
1c24ad0fdd Eliminate Editor.open 2012-01-05 11:26:14 -08:00
Corey Johnson & Nathan Sobo
b5b1ac67fa Remove slow specs 2012-01-05 11:20:18 -08:00
Corey Johnson & Nathan Sobo
aee7df0b9f Add Editor.setBuffer 2012-01-05 11:13:55 -08:00
Corey Johnson
4121b2076e Display relative paths in the file finder 2012-01-05 11:01:17 -08:00
Nathan Sobo
192166d61a Merge branch 'master' of github.com:probablycorey/Atomicity
Conflicts:
	src/atom/project.coffee
2012-01-04 19:05:01 -08:00
Nathan Sobo
1689824ad7 💄 2012-01-04 19:08:23 -07:00
Nathan Sobo
629c1ef239 If passed a directory path, fs.directory returns the path it is given (not the parent dir) 2012-01-04 19:07:55 -07:00
Nathan Sobo
80e4fda2f9 Filter out directory paths for FileFinder in Objective-C instead of JS.
Rename FileSystemHelper-contentsOfDirectoryAtPath… to -listFilesAtPath to make it clear that we're only listing files, not subdirectories. This is a fairly special purpose method but it saves us from calling back into objective-c a ton of times to filter them in JS, and makes bringing up the file finder ~2x as fast.
2012-01-04 18:22:22 -07:00
Nathan Sobo
be0fa84f1f Move fs support methods out of AtomController into FileSystemHelper 2012-01-04 18:01:31 -07:00
Nathan Sobo
ee53616d82 Ensure that all windows are closed before proceeding to next spec. 2012-01-04 17:33:06 -07:00
Corey Johnson
7e270d641d FileFinder removes itself when item is selected. 2012-01-04 15:47:41 -08:00
Corey Johnson
3ffe57f228 Project.getFilePaths returns full urls.
FileFinder.initialize takes a 'selected' callback.
2012-01-04 15:30:41 -08:00
Corey Johnson
9419a9ec86 Spread the app specs out. 2012-01-04 15:25:57 -08:00
Nathan Sobo
816f3774e1 Merge branch 'master' into asyncfs 2012-01-04 13:58:10 -07:00
Nathan Sobo
c21083ae24 Merge branch 'asyncfs' of github.com:probablycorey/Atomicity into asyncfs 2012-01-04 13:30:56 -07:00
Nathan Sobo
40e629b0ff Remove benchmarking calls. 2012-01-04 13:30:26 -07:00
Nathan Sobo
a16e596fdf Refactor objective-c side of fs.async.list and cleanup memory leaks. 2012-01-04 13:21:26 -07:00
Corey Johnson & Nathan Sobo
236ea5e906 RootView handles opening directories 2012-01-04 10:51:41 -08:00