diff options
Diffstat (limited to 'atom/packages/ex-mode/lib/ex-view-model.coffee')
| -rw-r--r-- | atom/packages/ex-mode/lib/ex-view-model.coffee | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/atom/packages/ex-mode/lib/ex-view-model.coffee b/atom/packages/ex-mode/lib/ex-view-model.coffee new file mode 100644 index 0000000..0c99be9 --- /dev/null +++ b/atom/packages/ex-mode/lib/ex-view-model.coffee @@ -0,0 +1,35 @@ +{ViewModel, Input} = require './view-model' + +module.exports = +class ExViewModel extends ViewModel + constructor: (@exCommand) -> + super(@exCommand, class: 'command') + @historyIndex = -1 + + atom.commands.add(@view.editorElement, 'core:move-up', @increaseHistoryEx) + atom.commands.add(@view.editorElement, 'core:move-down', @decreaseHistoryEx) + + restoreHistory: (index) -> + @view.editorElement.getModel().setText(@history(index).value) + + history: (index) -> + @exState.getExHistoryItem(index) + + increaseHistoryEx: => + if @history(@historyIndex + 1)? + @historyIndex += 1 + @restoreHistory(@historyIndex) + + decreaseHistoryEx: => + if @historyIndex <= 0 + # get us back to a clean slate + @historyIndex = -1 + @view.editorElement.getModel().setText('') + else + @historyIndex -= 1 + @restoreHistory(@historyIndex) + + confirm: (view) => + @value = @view.value + @exState.pushExHistory(@) + super(view) |