aboutsummaryrefslogtreecommitdiff
path: root/atom/packages/ex-mode/lib/ex-mode.coffee
blob: 1a4979db27534b221ee8e9ba2549045d3d59e5d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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)