working title

This commit is contained in:
Loic Nageleisen 2015-02-19 18:11:25 +01:00
parent ffbe36efec
commit 1a8657b3d4
13 changed files with 234 additions and 77 deletions

View file

@ -1,33 +1,28 @@
ExModeView = require './ex-mode-view'
{CompositeDisposable} = require 'atom'
GlobalExState = require './global-ex-state'
ExState = require './ex-state'
{Disposable, CompositeDisposable} = require 'event-kit'
module.exports = ExMode =
exModeView: null
modalPanel: null
subscriptions: null
activate: (state) ->
@exModeView = new ExModeView(state.exModeViewState)
@modalPanel = atom.workspace.addModalPanel(item: @exModeView.getElement(), visible: false)
@globalExState = new GlobalExState
@disposables = new CompositeDisposable
@exStates = new WeakMap
# Events subscribed to in atom's system can be easily cleaned up with a CompositeDisposable
@subscriptions = new CompositeDisposable
@disposables.add atom.workspace.observeTextEditors (editor) =>
return if editor.mini
# Register command that toggles this view
@subscriptions.add atom.commands.add 'atom-workspace', 'ex-mode:toggle': => @toggle()
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: ->
@modalPanel.destroy()
@subscriptions.dispose()
@exModeView.destroy()
serialize: ->
exModeViewState: @exModeView.serialize()
toggle: ->
console.log 'ExMode was toggled!'
if @modalPanel.isVisible()
@modalPanel.hide()
else
@modalPanel.show()
@disposables.dispose()