From d6912c5913e1f91f5c0a8b4ca5d75b294caa260d Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Fri, 6 Jul 2012 11:50:42 -0700 Subject: [PATCH] When a snippet expansion is redone, tab stops are restored --- spec/extensions/snippets-spec.coffee | 13 +++++++++++++ src/extensions/snippets/snippet-expansion.coffee | 4 ++++ src/extensions/snippets/snippets.coffee | 6 +++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/spec/extensions/snippets-spec.coffee b/spec/extensions/snippets-spec.coffee index f10f1d785..7b8c3bfcc 100644 --- a/spec/extensions/snippets-spec.coffee +++ b/spec/extensions/snippets-spec.coffee @@ -160,6 +160,19 @@ describe "Snippets extension", -> editor.trigger keydownEvent('tab', target: editor[0]) expect(buffer.lineForRow(0)).toBe "first line" + describe "when a snippet expansion is undone and redone", -> + it "recreates the snippet's tab stops", -> + editor.insertText ' t5\n' + editor.setCursorBufferPosition [0, 6] + editor.trigger keydownEvent('tab', target: editor[0]) + expect(buffer.lineForRow(0)).toBe " first line" + editor.undo() + editor.redo() + + expect(editor.getCursorBufferPosition()).toEqual [0, 14] + editor.trigger keydownEvent('tab', target: editor[0]) + expect(editor.getSelectedBufferRange()).toEqual [[1, 6], [1, 36]] + describe ".loadSnippetsFile(path)", -> it "loads the snippets in the given file", -> spyOn(fs, 'read').andReturn """ diff --git a/src/extensions/snippets/snippet-expansion.coffee b/src/extensions/snippets/snippet-expansion.coffee index 963bfd95f..66800e1da 100644 --- a/src/extensions/snippets/snippet-expansion.coffee +++ b/src/extensions/snippets/snippet-expansion.coffee @@ -54,3 +54,7 @@ class SnippetExpansion destroy: -> anchorRange.destroy() for anchorRange in @tabStopAnchorRanges @editSession.snippetExpansion = null + + restoreTabStops: -> + @tabStopAnchorRanges = @tabStopAnchorRanges.map (anchorRange) => + @editSession.addAnchorRange(anchorRange.getBufferRange()) diff --git a/src/extensions/snippets/snippets.coffee b/src/extensions/snippets/snippets.coffee index dbc0bff43..d283157da 100644 --- a/src/extensions/snippets/snippets.coffee +++ b/src/extensions/snippets/snippets.coffee @@ -29,9 +29,13 @@ module.exports = prefix = editSession.getLastCursor().getCurrentWordPrefix() if snippet = @snippetsByExtension[editSession.getFileExtension()][prefix] editSession.transact -> - editSession.snippetExpansion = new SnippetExpansion(snippet, editSession) + snippetExpansion = new SnippetExpansion(snippet, editSession) + editSession.snippetExpansion = snippetExpansion editSession.pushOperation undo: -> editSession.snippetExpansion.destroy() + redo: -> + editSession.snippetExpansion = snippetExpansion + snippetExpansion.restoreTabStops() else e.abortKeyBinding()