From 1bec4c8404c13a65d45e7360f890910ebccad687 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 20 Jun 2012 17:56:02 -0600 Subject: [PATCH] Snippets now advise the insertTab method on EditSessions instead of intercepting events on Editor --- spec/extensions/snippets-spec.coffee | 2 +- src/extensions/snippets/snippets.coffee | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/spec/extensions/snippets-spec.coffee b/spec/extensions/snippets-spec.coffee index f9ac9aa7b..1fca1c695 100644 --- a/spec/extensions/snippets-spec.coffee +++ b/spec/extensions/snippets-spec.coffee @@ -9,9 +9,9 @@ describe "Snippets extension", -> [buffer, editor] = [] beforeEach -> rootView = new RootView(require.resolve('fixtures/sample.js')) + rootView.activateExtension(Snippets) editor = rootView.activeEditor() buffer = editor.buffer - rootView.activateExtension(Snippets) rootView.simulateDomAttachment() describe "when 'tab' is triggered on the editor", -> diff --git a/src/extensions/snippets/snippets.coffee b/src/extensions/snippets/snippets.coffee index 9fd363f9d..35b2f7308 100644 --- a/src/extensions/snippets/snippets.coffee +++ b/src/extensions/snippets/snippets.coffee @@ -1,5 +1,6 @@ fs = require 'fs' PEG = require 'pegjs' +_ = require 'underscore' module.exports = class Snippets @@ -8,7 +9,12 @@ module.exports = @activate: (@rootView) -> @loadSnippets() - rootView.on 'editor-open', (e, editor) => new Snippets(editor) + + project = rootView.project + + new Snippets(editSession) for editSession in project.editSessions + project.on 'new-edit-session', (editSession) => new Snippets(editSession) + @loadSnippets: -> snippetsDir = fs.join(atom.configDirPath, 'snippets') @@ -22,14 +28,13 @@ module.exports = @evalSnippets: (extension, text) -> @snippetsByExtension[extension] = @snippetsParser.parse(text) - constructor: (@editor) -> - @editor.preempt 'tab', => return false if @expandSnippet() + constructor: (@editSession) -> + _.adviseBefore @editSession, 'insertTab', => @expandSnippet() expandSnippet: -> - editSession = @editor.activeEditSession - return unless snippets = @constructor.snippetsByExtension[editSession.buffer.getExtension()] - prefix = editSession.getLastCursor().getCurrentWordPrefix() + return unless snippets = @constructor.snippetsByExtension[@editSession.buffer.getExtension()] + prefix = @editSession.getLastCursor().getCurrentWordPrefix() if body = snippets[prefix]?.body - editSession.selectToBeginningOfWord() - editSession.insertText(body) - true + @editSession.selectToBeginningOfWord() + @editSession.insertText(body) + false