diff --git a/app/schemas/schemas.coffee b/app/schemas/schemas.coffee
index 7d9c315b5..8d8559aeb 100644
--- a/app/schemas/schemas.coffee
+++ b/app/schemas/schemas.coffee
@@ -193,7 +193,7 @@ me.codeSnippet = (mode) ->
   return snippet = 
     code: {type: 'string', title: 'Snippet', default: '', description: 'Code snippet. Use ${1:defaultValue} syntax to add flexible arguments'}
     # code: {type: 'string', format: 'ace', aceMode: 'ace/mode/'+mode, title: 'Snippet', default: '', description: 'Code snippet. Use ${1:defaultValue} syntax to add flexible arguments'}
-    tab: {type: 'string', description: 'Tab completion text. Will be expanded to the snippet if typed and hit tab.'}
+    tab: {type: 'string', title: 'Tab Trigger', description: 'Tab completion text. Will be expanded to the snippet if typed and hit tab.'}
 
 me.activity = me.object {description: "Stats on an activity"},
   first: me.date()
diff --git a/app/views/play/level/tome/spell_palette_view.coffee b/app/views/play/level/tome/spell_palette_view.coffee
index 18771bd03..3057838e3 100644
--- a/app/views/play/level/tome/spell_palette_view.coffee
+++ b/app/views/play/level/tome/spell_palette_view.coffee
@@ -93,7 +93,7 @@ module.exports = class SpellPaletteView extends View
     tabbify = count >= 10
     @entries = []
 
-    Backbone.Mediator.publish 'tome:update-snippets', propGroups: propGroups, allDocs: allDocs
+    Backbone.Mediator.publish 'tome:update-snippets', propGroups: propGroups, allDocs: allDocs, language: @options.language
 
     for owner, props of propGroups
       for prop in props
diff --git a/app/views/play/level/tome/spell_view.coffee b/app/views/play/level/tome/spell_view.coffee
index 161d6768a..adfd5146f 100644
--- a/app/views/play/level/tome/spell_view.coffee
+++ b/app/views/play/level/tome/spell_view.coffee
@@ -96,6 +96,7 @@ module.exports = class SpellView extends View
     @aceSession.selection.on 'changeCursor', @onCursorActivity
     $(@ace.container).find('.ace_gutter').on 'click', '.ace_error, .ace_warning, .ace_info', @onAnnotationClick
     @zatanna = new Zatanna @ace,
+
       liveCompletion: aceConfig.liveCompletion ? true
       completers:
         keywords: false
@@ -180,16 +181,17 @@ module.exports = class SpellView extends View
           return (owner is 'this' or owner is 'more') and (not doc.owner? or doc.owner is 'this')
         console.log 'could not find doc for', prop, 'from', e.allDocs['__' + prop], 'for', owner, 'of', e.propGroups unless doc
         doc ?= prop
-        if doc.snippets?[@spell.language]
+        if doc.snippets?[e.language]
           entry =
-            content: doc.snippets[@spell.language].code
+            content: doc.snippets[e.language].code
             name: doc.name
-            tabTrigger: doc.snippets[@spell.language].tab
+            tabTrigger: doc.snippets[e.language].tab
           snippetEntries.push entry
 
-    window.zatanna = @zatanna
-    window.snippetEntries = snippetEntries
-    @zatanna.addSnippets snippetEntries, @spell.language
+    # window.zatanna = @zatanna
+    # window.snippetEntries = snippetEntries
+    lang = @editModes[e.language].substr 'ace/mode/'.length
+    @zatanna.addSnippets snippetEntries, lang
 
   onMultiplayerChanged: ->
     if @session.get('multiplayer')
@@ -652,7 +654,7 @@ module.exports = class SpellView extends View
   onChangeLanguage: (e) ->
     return unless @spell.canWrite()
     @aceSession.setMode @editModes[e.language]
-    @zatanna.set 'language', @editModes[e.language].substr('ace/mode/')
+    # @zatanna.set 'language', @editModes[e.language].substr('ace/mode/')
     wasDefault = @getSource() is @spell.originalSource
     @spell.setLanguage e.language
     @reloadCode true if wasDefault
diff --git a/bower.json b/bower.json
index 6fee49838..62304bd97 100644
--- a/bower.json
+++ b/bower.json
@@ -44,7 +44,7 @@
     "bootstrap": "~3.1.1",
     "validated-backbone-mediator": "~0.1.3",
     "jquery.browser": "~0.0.6",
-    "zatanna": "~0.0.1"
+    "zatanna": "~0.0.2"
   },
   "overrides": {
     "backbone": {