From bf367863ba98a6ca846e16d18e1d891eebd2aa37 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Wed, 11 Apr 2012 13:41:19 -0700 Subject: [PATCH] meta-} goes to next buffer --- spec/app/editor-spec.coffee | 18 ++++++++++++++++++ src/app/editor.coffee | 19 ++++++++++++++++--- src/app/keymaps/editor.coffee | 3 ++- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index b796898b4..d1b8bfe37 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -2096,3 +2096,21 @@ describe "Editor", -> eventHandler.reset() editor.buffer.setPath("new.txt") expect(eventHandler).toHaveBeenCalled() + + + fdescribe ".loadNextEditorState()", -> + 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.loadNextEditorState() + expect(editor.buffer.path).toBe "0" + editor.loadNextEditorState() + expect(editor.buffer.path).toBe "1" + editor.loadNextEditorState() + expect(editor.buffer.path).toBe "2" diff --git a/src/app/editor.coffee b/src/app/editor.coffee index c1052885d..c7d09ae01 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -84,6 +84,7 @@ class Editor extends View @on 'split-up', => @splitUp() @on 'split-down', => @splitDown() @on 'close', => @remove(); false + @on 'show-next-buffer', => @loadNextEditorState() @on 'move-to-top', => @moveCursorToTop() @on 'move-to-bottom', => @moveCursorToBottom() @@ -223,12 +224,18 @@ class Editor extends View setEditorStateForBuffer: (buffer, editorState) -> editorState.buffer = buffer - existingEditorState = @getEditorStateForBuffer(buffer) - if existingEditorState - _.extend(existingEditorState, editorState) + index = @indexOfEditorState(editorState) + if index? + @editorStates[index] = editorState else @editorStates.push(editorState) + indexOfEditorState: (editorState) -> + for o, i in @editorStates + return i if o.buffer.id == editorState.buffer.id + + return null + loadEditorStateForBuffer: (buffer) -> editorState = @getEditorStateForBuffer(buffer) if not editorState @@ -238,6 +245,12 @@ class Editor extends View @scroller.scrollTop(editorState.scrollTop ? 0) @scroller.scrollLeft(editorState.scrollLeft ? 0) + loadNextEditorState: -> + index = @indexOfEditorState(@getEditorState()) + if index? + nextIndex = (index + 1) % @editorStates.length + @setEditorState(@editorStates[nextIndex]) + 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 91946d070..4c05b7698 100644 --- a/src/app/keymaps/editor.coffee +++ b/src/app/keymaps/editor.coffee @@ -30,4 +30,5 @@ window.keymap.bindKeys '.editor', 'alt-meta-up': 'split-up' 'alt-meta-down': 'split-down' 'meta-[': 'outdent-selected-rows' - 'meta-]': 'indent-selected-rows' \ No newline at end of file + 'meta-]': 'indent-selected-rows' + 'meta-}': 'show-next-buffer' \ No newline at end of file