Commit Graph

36 Commits

Author SHA1 Message Date
Corey Johnson & Nathan Sobo
fa8ca1193f Correctly place tab stop anchor ranges in snippets with blank lines 2013-01-28 16:36:16 -07:00
Corey Johnson & Nathan Sobo
47ca7f81c1 💄 2013-01-28 16:36:16 -07:00
Corey Johnson & Nathan Sobo
c13b45df99 Hard tabs in snippets are translated to soft-tabs if necessary 2013-01-28 16:36:15 -07:00
Kevin Sawicki
75da205b0a Terminate worker when all snippets have been loaded 2013-01-27 22:26:45 -08:00
Nathan Sobo
c27de89327 Eliminate warning messages from snippets-spec
Mock loading of TextMate snippets or Atom snippets and only enable
loading for the type of snippet being currently tested. This limits
logging of warning to the single warning we expect for each type, which
allows us to not call through on the mocking of `console.warn` and
explicitly check for the single expected call.
2013-01-27 13:25:59 -07:00
Nathan Sobo
a83b8583f0 Perform body parsing in the worker thread (without failing specs)
Since `snippets.add` can still be called from the window thread, we need
to retain the ability to parse the body without relying on the loading
task. But this commit only loads the parser in the window if it's actually
needed, instead of always loading it when the snippets extension is
loaded. This avoids the loading performance hit while still allowing
specs to pass and letting us call `snippets.add` manually in the window
if we want to.
2013-01-27 12:07:36 -07:00
Nathan Sobo
5bfb9feeda Revert "Move snippet body parsing to web worker"
This reverts commit 5b541ccc2b.
It caused the snippets spec to break. I'll try to achieve the same
thing without that happening.
2013-01-27 11:40:01 -07:00
Kevin Sawicki
19a7c04b8f Shadow require name in class name 2013-01-24 17:41:06 -08:00
Kevin Sawicki
5b541ccc2b Move snippet body parsing to web worker 2013-01-24 17:22:51 -08:00
Nathan Sobo
0d63d6459d Make TextMate snippets loading immune to hidden files & invalid plist
closes #143
2013-01-24 17:22:51 -08:00
Nathan Sobo
59ac9de8c3 💄 2013-01-24 17:22:50 -08:00
Nathan Sobo
ea65c63862 Translate TextMate snippets in the worker thread
Might as well do as much work there as possible.
2013-01-24 17:22:50 -08:00
Nathan Sobo
0726987896 Give Task an RPC-style interaction with its Worker
This commit makes all interactions between Task and Worker look
like method calls. The worker now has a global `callTaskMethod`
function that it can use to call methods on the Task object. And the
Task can use `callWorkerMethod` to call methods on a global `handler`
object in the worker. The worker's initial `handler` actually contains
the `start` method, which the Task initially calls to kick things off.
Then the global `handler` gets replaced with whatever `handlerPath`
is specified by the Task. The worker then calls `workerStarted` on its
parent Task object.

This commit also gets rid of the `onProgress` method with the reply
semantics, favoring a more explicit interaction. When `snippetsLoaded`
finishes adding the snippet data, we call `loadNextPackageSnippets`
explicitly rather than returning a reply message.
2013-01-24 17:22:50 -08:00
Corey Johnson & Kevin Sawicki
c628a88409 Lower case Task in require 2013-01-24 17:22:50 -08:00
Kevin Sawicki
8c4a21ee5d Remove unused requires 2013-01-24 17:22:50 -08:00
Kevin Sawicki
2393bd0e9e Create task shell that bootstraps worker 2013-01-24 17:22:50 -08:00
Kevin Sawicki
9ab730b3d0 Load snippets in a web worker
A single web worker is now used to load
snippets one bundle at a time.
2013-01-24 17:22:50 -08:00
Kevin Sawicki
ca596db310 Extend AtomPackage directly in packages index.coffee 2013-01-22 18:26:48 -08:00
Kevin Sawicki
9d3751052a Support hitting tab in snippets with no tab stops
Closes #149
2013-01-22 16:44:45 -08:00
Nathan Sobo
2389893799 Absorb parse errors and ignore hidden files when loading atom snippets 2013-01-21 13:49:24 -07:00
Nathan Sobo
2c4da1b8dd Merge branch 'snippets' into dev
Conflicts:
	src/app/package.coffee
	src/packages/snippets/src/snippets.coffee
2013-01-09 13:10:11 -07:00
Nathan Sobo
6c2607a5e0 Sort $0 tab stops last instead of first for TextMate compatibility 2013-01-09 12:32:11 -07:00
Nathan Sobo
e33f93b40c Load snippets from TextMate bundles
There's still a bunch of holes in this. TextMate snippets have features
that we don't support yet. But the basic ones should now work.
2013-01-09 11:43:11 -07:00
Corey Johnson
95dcf275e4 Remove *.getLastCursor() 2013-01-08 18:27:29 -08:00
Nathan Sobo
cab5b25e76 Fix undo/redo of snippet expansions. Tab stops are restored correctly.
We're giving up on correctly restoring snippet expansions that
occurred in a different EditSession.
2013-01-08 12:54:49 -07:00
Nathan Sobo
a03bb7bf2e Un-f 2013-01-08 12:53:43 -07:00
Nathan Sobo
314e3da8bc WIP: Destroy nested tab stops when engulfed by a buffer change
Has 2 failing specs...

There are still some issue with this code's interaction with the undo
system. The tab stops will need to be or destroyed when certain
changes are undone or redone.
2013-01-07 21:53:08 -07:00
Nathan Sobo
62d7273069 Parse nested snippet placeholders 2013-01-07 16:49:48 -07:00
Nathan Sobo
60c89f8b32 Allow snippet tab stop placeholder text to contain newlines 2013-01-07 16:35:11 -07:00
Nathan Sobo
858ad69484 Simplify snippet body parsing
Previously, we parsed snippet bodies line at a time, then determined
tab stops within lines. But this disallows tab stops with placeholder
text that spans multiple lines. Now the parser produces a simpler
structure that breaks the body into an array of strings and tab stops.
Newlines are represented directly as characters within the strings.
2013-01-07 16:09:18 -07:00
Corey Johnson & Nathan Sobo
f008ff52e8 Load snippets from any atom package with a snippets directory 2013-01-07 14:28:47 -07:00
Corey Johnson & Nathan Sobo
361bf83345 Load snippets from CSON/JSON. Use syntax properties for scoping.
This commit eliminates the custom `snippets` format and instead just
uses CSON/JSON.
2013-01-07 14:28:47 -07:00
Kevin Sawicki & Nathan Sobo
8098ee69f3 Rename Editor attach and remove events in accordance w/ new scheme
'editor-open' -> 'editor:attached'
'before-remove' -> 'editor:will-be-removed'
2013-01-04 11:25:45 -07:00
Nathan Sobo
fdc1de6be0 Ensure snippets keymaps cascade correctly by breaking into 2 files 2013-01-03 15:20:24 -07:00
Kevin Sawicki & Nathan Sobo
bcde77dd0e Load keymaps from cson
All existing .coffee keymaps are now .cson and package
keymaps are now located in a keymaps folder at the root of
the package.
2013-01-02 16:10:46 -08:00
Nathan Sobo
4ce8583cb2 Rename extensions to packages
We now look at the `core.disabledPackages` config key. Rename the `src/extensions` directory to `src/packages`. The config object now talks about loading packages instead of extensions.
2012-12-18 20:03:21 -07:00