aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/ex-mode/lib/ex-mode.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'atom/packages/ex-mode/lib/ex-mode.coffee')
-rw-r--r--atom/packages/ex-mode/lib/ex-mode.coffee36
1 files changed, 36 insertions, 0 deletions
diff --git a/atom/packages/ex-mode/lib/ex-mode.coffee b/atom/packages/ex-mode/lib/ex-mode.coffee
new file mode 100644
index 0000000..1a4979d
--- /dev/null
+++ b/atom/packages/ex-mode/lib/ex-mode.coffee
@@ -0,0 +1,36 @@
+GlobalExState = require './global-ex-state'
+ExState = require './ex-state'
+Ex = require './ex'
+{Disposable, CompositeDisposable} = require 'event-kit'
+
+module.exports = ExMode =
+ activate: (state) ->
+ @globalExState = new GlobalExState
+ @disposables = new CompositeDisposable
+ @exStates = new WeakMap
+
+ @disposables.add atom.workspace.observeTextEditors (editor) =>
+ return if editor.mini
+
+ element = atom.views.getView(editor)
+
+ if not @exStates.get(editor)
+ exState = new ExState(
+ element,
+ @globalExState
+ )
+
+ @exStates.set(editor, exState)
+
+ @disposables.add new Disposable =>
+ exState.destroy()
+
+ deactivate: ->
+ @disposables.dispose()
+
+ provideEx: ->
+ registerCommand: Ex.registerCommand.bind(Ex)
+
+ consumeVim: (vim) ->
+ @vim = vim
+ @globalExState.setVim(vim)