From 5097218aa204a8448e4b80b647802f191b0d4454 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Wed, 11 Apr 2012 13:41:54 -0700 Subject: [PATCH] meta-{ goes to previous buffer --- spec/app/editor-spec.coffee | 20 ++++++++++++++++++-- src/app/editor.coffee | 7 +++++++ src/app/keymaps/editor.coffee | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index d1b8bfe37..61a5cb93c 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -2097,8 +2097,7 @@ describe "Editor", -> editor.buffer.setPath("new.txt") expect(eventHandler).toHaveBeenCalled() - - fdescribe ".loadNextEditorState()", -> + describe ".loadNextEditorState()", -> it "loads the next editor state and wraps to beginning when end is reached", -> buffer0 = new Buffer("0") buffer1 = new Buffer("1") @@ -2114,3 +2113,20 @@ describe "Editor", -> expect(editor.buffer.path).toBe "1" editor.loadNextEditorState() expect(editor.buffer.path).toBe "2" + + describe ".loadPreviousEditorState()", -> + it "loads the next editor state and wraps to beginning when end is reached", -> + buffer0 = new Buffer("0") + buffer1 = new Buffer("1") + buffer2 = new Buffer("2") + editor = new Editor {buffer: buffer0} + editor.setBuffer(buffer1) + editor.setBuffer(buffer2) + + expect(editor.buffer.path).toBe "2" + editor.loadPreviousEditorState() + expect(editor.buffer.path).toBe "1" + editor.loadPreviousEditorState() + expect(editor.buffer.path).toBe "0" + editor.loadPreviousEditorState() + expect(editor.buffer.path).toBe "2" diff --git a/src/app/editor.coffee b/src/app/editor.coffee index c7d09ae01..8c51d02af 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -85,6 +85,7 @@ class Editor extends View @on 'split-down', => @splitDown() @on 'close', => @remove(); false @on 'show-next-buffer', => @loadNextEditorState() + @on 'show-previous-buffer', => @loadPreviousEditorState() @on 'move-to-top', => @moveCursorToTop() @on 'move-to-bottom', => @moveCursorToBottom() @@ -251,6 +252,12 @@ class Editor extends View nextIndex = (index + 1) % @editorStates.length @setEditorState(@editorStates[nextIndex]) + loadPreviousEditorState: -> + index = @indexOfEditorState(@getEditorState()) + if index? + previousIndex = if --index >= 0 then index else @editorStates.length - 1 + @setEditorState(@editorStates[previousIndex]) + setEditorState: (editorState={}) -> buffer = editorState.buffer ?= new Buffer @setEditorStateForBuffer(buffer, editorState) diff --git a/src/app/keymaps/editor.coffee b/src/app/keymaps/editor.coffee index 4c05b7698..883c2e6e6 100644 --- a/src/app/keymaps/editor.coffee +++ b/src/app/keymaps/editor.coffee @@ -31,4 +31,5 @@ window.keymap.bindKeys '.editor', 'alt-meta-down': 'split-down' 'meta-[': 'outdent-selected-rows' 'meta-]': 'indent-selected-rows' + 'meta-{': 'show-previous-buffer' 'meta-}': 'show-next-buffer' \ No newline at end of file