aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/ex-mode/spec/spec-helper.coffee
diff options
context:
space:
mode:
authorBen Beltran <ben@nsovocal.com>2015-09-28 12:39:59 -0500
committerBen Beltran <ben@nsovocal.com>2015-09-28 12:39:59 -0500
commit455f099b504ec07dd492ab31987ae05a6f6774c7 (patch)
tree22b0c7fd8e492733b97e661750a2d79c46da451d /atom/packages/ex-mode/spec/spec-helper.coffee
parent24c7594d62d8d7fbbcdb64b11ce4adc5d8e6991a (diff)
Adds atom packages
Diffstat (limited to 'atom/packages/ex-mode/spec/spec-helper.coffee')
-rw-r--r--atom/packages/ex-mode/spec/spec-helper.coffee65
1 files changed, 65 insertions, 0 deletions
diff --git a/atom/packages/ex-mode/spec/spec-helper.coffee b/atom/packages/ex-mode/spec/spec-helper.coffee
new file mode 100644
index 0000000..9ec4d58
--- /dev/null
+++ b/atom/packages/ex-mode/spec/spec-helper.coffee
@@ -0,0 +1,65 @@
+ExState = require '../lib/ex-state'
+GlobalExState = require '../lib/global-ex-state'
+
+beforeEach ->
+ atom.workspace ||= {}
+
+activateExMode = ->
+ atom.workspace.open().then ->
+ atom.commands.dispatch(atom.views.getView(atom.workspace), 'ex-mode:open')
+ keydown('escape')
+ atom.workspace.getActivePane().destroyActiveItem()
+
+
+getEditorElement = (callback) ->
+ textEditor = null
+
+ waitsForPromise ->
+ atom.workspace.open().then (e) ->
+ textEditor = e
+
+ runs ->
+ # element = document.createElement("atom-text-editor")
+ # element.setModel(textEditor)
+ # element.classList.add('vim-mode')
+ # element.exState = new ExState(element, new GlobalExState)
+ #
+ # element.addEventListener "keydown", (e) ->
+ # atom.keymaps.handleKeyboardEvent(e)
+
+ element = atom.views.getView(textEditor)
+
+ callback(element)
+
+dispatchKeyboardEvent = (target, eventArgs...) ->
+ e = document.createEvent('KeyboardEvent')
+ e.initKeyboardEvent(eventArgs...)
+ # 0 is the default, and it's valid ASCII, but it's wrong.
+ Object.defineProperty(e, 'keyCode', get: -> undefined) if e.keyCode is 0
+ target.dispatchEvent e
+
+dispatchTextEvent = (target, eventArgs...) ->
+ e = document.createEvent('TextEvent')
+ e.initTextEvent(eventArgs...)
+ target.dispatchEvent e
+
+keydown = (key, {element, ctrl, shift, alt, meta, raw}={}) ->
+ key = "U+#{key.charCodeAt(0).toString(16)}" unless key is 'escape' or raw?
+ element ||= document.activeElement
+ eventArgs = [
+ true, # bubbles
+ true, # cancelable
+ null, # view
+ key, # key
+ 0, # location
+ ctrl, alt, shift, meta
+ ]
+
+ canceled = not dispatchKeyboardEvent(element, 'keydown', eventArgs...)
+ dispatchKeyboardEvent(element, 'keypress', eventArgs...)
+ if not canceled
+ if dispatchTextEvent(element, 'textInput', eventArgs...)
+ element.value += key
+ dispatchKeyboardEvent(element, 'keyup', eventArgs...)
+
+module.exports = {keydown, getEditorElement, activateExMode}