mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-20 15:37:46 +03:00
Add App.bindKey
This commit is contained in:
parent
9ea7663256
commit
fd48c67bfa
@ -119,53 +119,66 @@ describe "GlobalKeymap", ->
|
||||
keymap.handleKeyEvent(keypressEvent('y', target: target))
|
||||
expect(bazHandler).toHaveBeenCalled()
|
||||
|
||||
describe ".bindAllKeys(fn)", ->
|
||||
it "calls given fn when selector matches", ->
|
||||
handler = jasmine.createSpy 'handler'
|
||||
keymap.bindKeys '.child-node', handler
|
||||
describe ".bindKeys(selector, fnOrMap)", ->
|
||||
describe "when called with a function", ->
|
||||
it "calls the given function when selector matches", ->
|
||||
handler = jasmine.createSpy 'handler'
|
||||
keymap.bindKeys '.child-node', handler
|
||||
|
||||
target = fragment.find('.grandchild-node')[0]
|
||||
event = keypressEvent('y', target: target)
|
||||
keymap.handleKeyEvent event
|
||||
target = fragment.find('.grandchild-node')[0]
|
||||
event = keypressEvent('y', target: target)
|
||||
keymap.handleKeyEvent event
|
||||
|
||||
expect(handler).toHaveBeenCalledWith(event)
|
||||
expect(handler).toHaveBeenCalledWith(event)
|
||||
|
||||
describe "when the handler function returns a command string", ->
|
||||
it "triggers the command event on the target and stops propagating the event", ->
|
||||
keymap.bindKeys '*', 'x': 'foo'
|
||||
keymap.bindKeys '*', -> 'bar'
|
||||
fooHandler = jasmine.createSpy('fooHandler')
|
||||
barHandler = jasmine.createSpy('barHandler')
|
||||
fragment.on 'foo', fooHandler
|
||||
fragment.on 'bar', barHandler
|
||||
describe "when the function returns a command string", ->
|
||||
it "triggers the command event on the target and stops propagating the event", ->
|
||||
keymap.bindKeys '*', 'x': 'foo'
|
||||
keymap.bindKeys '*', -> 'bar'
|
||||
fooHandler = jasmine.createSpy('fooHandler')
|
||||
barHandler = jasmine.createSpy('barHandler')
|
||||
fragment.on 'foo', fooHandler
|
||||
fragment.on 'bar', barHandler
|
||||
|
||||
target = fragment.find('.child-node')[0]
|
||||
keymap.handleKeyEvent(keydownEvent('x', target: target))
|
||||
target = fragment.find('.child-node')[0]
|
||||
keymap.handleKeyEvent(keydownEvent('x', target: target))
|
||||
|
||||
expect(fooHandler).not.toHaveBeenCalled()
|
||||
expect(barHandler).toHaveBeenCalled()
|
||||
expect(fooHandler).not.toHaveBeenCalled()
|
||||
expect(barHandler).toHaveBeenCalled()
|
||||
|
||||
describe "when the handler function returns false", ->
|
||||
it "stops propagating the event", ->
|
||||
keymap.bindKeys '*', 'x': 'foo'
|
||||
keymap.bindKeys '*', -> false
|
||||
fooHandler = jasmine.createSpy('fooHandler')
|
||||
fragment.on 'foo', fooHandler
|
||||
describe "when the function returns false", ->
|
||||
it "stops propagating the event", ->
|
||||
keymap.bindKeys '*', 'x': 'foo'
|
||||
keymap.bindKeys '*', -> false
|
||||
fooHandler = jasmine.createSpy('fooHandler')
|
||||
fragment.on 'foo', fooHandler
|
||||
|
||||
target = fragment.find('.child-node')[0]
|
||||
keymap.handleKeyEvent(keydownEvent('x', target: target))
|
||||
target = fragment.find('.child-node')[0]
|
||||
keymap.handleKeyEvent(keydownEvent('x', target: target))
|
||||
|
||||
expect(fooHandler).not.toHaveBeenCalled()
|
||||
expect(fooHandler).not.toHaveBeenCalled()
|
||||
|
||||
describe "when the handler function returns anything other than a string or false", ->
|
||||
it "continues to propagate the event", ->
|
||||
keymap.bindKeys '*', 'x': 'foo'
|
||||
keymap.bindKeys '*', -> undefined
|
||||
fooHandler = jasmine.createSpy('fooHandler')
|
||||
fragment.on 'foo', fooHandler
|
||||
describe "when the function returns anything other than a string or false", ->
|
||||
it "continues to propagate the event", ->
|
||||
keymap.bindKeys '*', 'x': 'foo'
|
||||
keymap.bindKeys '*', -> undefined
|
||||
fooHandler = jasmine.createSpy('fooHandler')
|
||||
fragment.on 'foo', fooHandler
|
||||
|
||||
target = fragment.find('.child-node')[0]
|
||||
keymap.handleKeyEvent(keydownEvent('x', target: target))
|
||||
target = fragment.find('.child-node')[0]
|
||||
keymap.handleKeyEvent(keydownEvent('x', target: target))
|
||||
|
||||
expect(fooHandler).toHaveBeenCalled()
|
||||
expect(fooHandler).toHaveBeenCalled()
|
||||
|
||||
describe ".bindKey(selector, pattern, eventName)", ->
|
||||
it "binds a single key", ->
|
||||
keymap.bindKey '.child-node', 'z', 'foo'
|
||||
|
||||
fooHandler = jasmine.createSpy('fooHandler')
|
||||
fragment.on 'foo', fooHandler
|
||||
|
||||
target = fragment.find('.child-node')[0]
|
||||
keymap.handleKeyEvent(keydownEvent('z', target: target))
|
||||
|
||||
expect(fooHandler).toHaveBeenCalled()
|
||||
|
||||
|
@ -15,6 +15,9 @@ class App
|
||||
bindKeys: (selector, bindings) ->
|
||||
@globalKeymap.bindKeys(selector, bindings)
|
||||
|
||||
bindKey: (selector, pattern, eventName) ->
|
||||
@globalKeymap.bindKey(selector, pattern, eventName)
|
||||
|
||||
open: (url) ->
|
||||
OSX.NSApp.open url
|
||||
|
||||
|
@ -12,6 +12,11 @@ class GlobalKeymap
|
||||
bindKeys: (selector, bindings) ->
|
||||
@bindingSets.unshift(new BindingSet(selector, bindings))
|
||||
|
||||
bindKey: (selector, pattern, eventName) ->
|
||||
bindings = {}
|
||||
bindings[pattern] = eventName
|
||||
@bindKeys(selector, bindings)
|
||||
|
||||
handleKeyEvent: (event) ->
|
||||
currentNode = $(event.target)
|
||||
while currentNode.length
|
||||
|
@ -29,10 +29,8 @@ class VimMode
|
||||
@registerCommand i, "numeric-prefix-#{i}", => new op.NumericPrefix(i)
|
||||
|
||||
registerCommand: (binding, commandName, fn)->
|
||||
bindings = {}
|
||||
eventName = "command-mode:#{commandName}"
|
||||
bindings[binding] = eventName
|
||||
atom.bindKeys '.command-mode', bindings
|
||||
atom.bindKey '.command-mode', binding, eventName
|
||||
@editor.on eventName, =>
|
||||
possibleOperator = fn()
|
||||
@pushOperator(possibleOperator) if possibleOperator.execute?
|
||||
|
Loading…
Reference in New Issue
Block a user