52 lines
1.2 KiB
CoffeeScript
52 lines
1.2 KiB
CoffeeScript
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)
|
|
registerAlias: Ex.registerAlias.bind(Ex)
|
|
|
|
consumeVim: (vim) ->
|
|
@vim = vim
|
|
@globalExState.setVim(vim)
|
|
|
|
consumeVimModePlus: (vim) ->
|
|
this.consumeVim(vim)
|
|
|
|
config:
|
|
splitbelow:
|
|
title: 'Split below'
|
|
description: 'when splitting, split from below'
|
|
type: 'boolean'
|
|
default: 'false'
|
|
splitright:
|
|
title: 'Split right'
|
|
description: 'when splitting, split from right'
|
|
type: 'boolean'
|
|
default: 'false'
|