]> arthur.barton.de Git - atom-ax-pipe.git/blobdiff - lib/command-view.coffee
Command history
[atom-ax-pipe.git] / lib / command-view.coffee
index dd2eebb6a6fef824445ddf62851fd029ecaaa91e..8ac7c49e34a59c90696baab07540892494e05ced 100644 (file)
@@ -20,13 +20,36 @@ class CommandView extends View
   @samplePlaceholder: ->
     @placeholders[Math.floor(Math.random()*@placeholders.length)]
 
-  initialize: (callback) ->
+  initialize: (history, callback) ->
+    historyPos = history.length
+    cur = ''
+
     @on 'core:cancel core:close', =>
       callback(null)
       @detach()
     @on 'core:confirm', =>
       callback(@commandLine.getText())
       @detach()
+    @commandLine.on 'keydown', (e) =>
+      if history.length is 0 then return
+
+      switch e.keyCode
+        when 38 # up
+          unless historyPos <= 0
+            historyPos--
+            @commandLine.setText history[historyPos]
+
+        when 40 # down
+          if historyPos >= history.length-1
+            historyPos = history.length
+            @commandLine.setText cur
+          else
+            historyPos++
+            @commandLine.setText history[historyPos]
+
+        else
+          if historyPos >= history.length
+            cur = @commandLine.getText()
 
     atom.workspaceView.append(this)
     @commandLine.focus()