Commit Graph

37 Commits

Author SHA1 Message Date
Kevin Sawicki
3773061cb5 Remove unneeded empty array fallback 2013-03-29 14:15:20 -04:00
Nathan Sobo
d8b4beb8bd Now that we remove binding sets, track binding set indices explicitly
Previously we relied on the length of the binding sets, but now that
we remove them the length is not a strictly increasing number. This
could cause problem when using the index to break specificity ties.
2013-03-26 17:35:44 -06:00
Corey Johnson & Nathan Sobo
5410e9368f Add ability to add/remove keymaps by name 2013-03-26 17:35:43 -06:00
Nathan Sobo
d3ead2a0d1 Update fs.list to use readdirSync and filterExtensions helper 2013-03-22 15:29:07 -06:00
Kevin Sawicki & Nathan Sobo
1d1ba5f6d1 Use node's require instead of internal require 2013-03-12 10:38:05 -07:00
Kevin Sawicki
115b960ce7 Handle reading and writing in cson.coffee
Moves helpers from fs.coffee to cson.coffee
2013-03-11 22:40:00 -07:00
Kevin Sawicki
2212222c47 Use underscore node module 2013-03-11 11:22:36 -07:00
Kevin Sawicki
9ca7214d39 Add --dev flag and remove --stable flag
Atom now runs in stable mode by default and only
runs in dev mode when the --dev flag is specified.

Closes #198
2013-02-22 11:54:54 -08:00
Corey Johnson & Nathan Sobo
cb1e48bfef Make toggle-dev-tools command work in spec window 2013-02-20 09:58:00 -08:00
Nathan Sobo
7f2747ead0 Make project a global and refactor startup process 2013-02-19 18:26:50 -07:00
Kevin Sawicki & Nathan Sobo
b2a9208acf Tab no longer transfers focus
The tab keystroke is now suppressed in keymap
if no bindings are triggered.

Closes #258
2013-02-12 17:29:14 -08:00
Nathan Sobo
d8111797ba RootView can no longer be focused.
Allowing root view to be focused was stealing focus away from the
editor whenever a click event made it to the root view. This unnecessary
switching of focus was interfering with the ability to drag tabs.

But if RootView can't be focused, focus ends up being returned to the
document body when there are no focusable elements. This would be fine,
except for the fact that we frequently bind global events on root view,
and so they aren't triggered when events are triggered on the body. We
could just bind all global events on the body, but this would require
us to always attach elements to the DOM during specs, which is a serious
performance killer in specs.

The workaround is in the keymap. When the keymap handles a key event
that was triggered on the body, it triggers the corresponding semantic
event on the root view anyway, so from the event perspective, it's as
if the root view actually had focus. The only place this might fall
down is if someone wants to capture raw key events. But that's the
keymap's job anyway, and we maybe add a hook on the keymap if such a
need ever arises.
2013-02-09 19:38:54 -08:00
Nathan Sobo
1cab51cefa RootView can no longer be focused.
Allowing root view to be focused was stealing focus away from the
editor whenever a click event made it to the root view. This unnecessary
switching of focus was interfering with the ability to drag tabs.

But if RootView can't be focused, focus ends up being returned to the
document body when there are no focusable elements. This would be fine,
except for the fact that we frequently bind global events on root view,
and so they aren't triggered when events are triggered on the body. We
could just bind all global events on the body, but this would require
us to always attach elements to the DOM during specs, which is a serious
performance killer in specs.

The workaround is in the keymap. When the keymap handles a key event
that was triggered on the body, it triggers the corresponding semantic
event on the root view anyway, so from the event perspective, it's as
if the root view actually had focus. The only place this might fall
down is if someone wants to capture raw key events. But that's the
keymap's job anyway, and we maybe add a hook on the keymap if such a
need ever arises.
2013-02-08 17:33:37 -07:00
Kevin Sawicki
379a4a4d8d Only auto-load .cson and .json keymap files
This now prevents files such as .DS_Store from being loaded as a
keymap where previously all paths were loaded regardless of extension.

Closes #205
2013-01-31 12:03:21 -08:00
Kevin Sawicki
0c42ab71d7 Load all keymaps found in ~/.atom/keymaps 2013-01-13 14:56:25 -08:00
Kevin Sawicki & Nathan Sobo
bcde77dd0e Load keymaps from cson
All existing .coffee keymaps are now .cson and package
keymaps are now located in a keymaps folder at the root of
the package.
2013-01-02 16:10:46 -08:00
Nathan Sobo
6e5f9b9a27 Kill unused require 2012-12-21 18:20:28 -07:00
Kevin Sawicki
1e5515555e Use command() instead of on() for document events
Allows commands such as 'open-user-configuration' to
appear and be invoked from the event palette

This was previously committed as 07a5672 but was merged
over when the config branch was merged into master.
2012-12-18 21:47:40 -08:00
Nathan Sobo
d89549c58a Load config from config.json. Set theme with config.core.theme. 2012-12-12 12:15:08 -08:00
Corey Johnson & Nathan Sobo
fa5acd600a Hack to open unstable windows from atom-stable 2012-11-09 10:25:42 -07:00
Nathan Sobo
adbcb9f49e Only consider BindingSets with a binding for first keystroke of event
The keymap was slow because it would find the binding sets with matching selectors for every ancestor of every keydown event. The problem was, it was considering a lot of binding sets that didn't even have a binding for the event in question. Now we index all binding sets on what bindings they contain, and filter them by that first. Rejecting an event that has no bindings is almost instantaneous now.
2012-11-02 14:13:03 -06:00
Nathan Sobo
0c3498d29f Cleanup/optimize Keymap#keystrokeStringForEvent 2012-11-02 13:25:33 -06:00
Nathan Sobo
ca2527f4b8 Meta-w closes spec windows again.
This adds a 'core:close' event to meta-w in the default bindings, and modifies window to listen for it.
2012-10-24 12:35:31 -06:00
Corey Johnson
fa4650343b Make meta-n (new window) work 2012-08-28 17:04:56 -07:00
Nathan Sobo
16c7c523cf Native open code now presents the open panel from the browser process
This avoids retina resolution issues and ink framework errors that occur when opening dialogs from the chromium renderer process.
2012-08-28 13:54:44 -05: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
Nathan Sobo
68cb9992fc Sort candidate binding sets in a stable way in Keymap to preserve load order for a valid cascade 2012-06-20 22:45:14 -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
David Graham & Nathan Sobo
dc6c0a3e35 Rename userConfigurationPath to configFilePath so I can add configDirPath as well 2012-06-20 11:19:40 -06:00
Nathan Sobo
171a19369a Fix remaining multi-keystroke specs 2012-06-18 17:31:26 -06:00
Nathan Sobo
ac4aae2cec WIP: Begin introducing multi-keystroke bindings to Keymap 2012-06-18 16:46:39 -06:00
Corey Johnson
46e94b33d4 💄 2012-05-30 10:20:39 -07:00
Corey Johnson
893564945e Add rootView.activeKeybindings().
This will return all active keybindings available for the focused element.
2012-05-29 15:46:38 -07:00
Corey Johnson
64bd26a392 Add Keymap.bindingsForElement method 2012-05-29 14:15:54 -07:00
Corey Johnson
6dc4d9bb05 Don't let atom spec bind default keys again 2012-04-03 17:21:13 -07:00
Corey Johnson
1efb712fd3 Rename App.coffee to Atom.coffee. This also required moving src/atom,spec/atom to src/app,spec/app 2012-04-03 10:33:24 -07:00