{
  "keyboard_shortcut": "", 
  "name": "Tab Abbreviations", 
  "language": "JavaScript", 
  "trigger_enabled": 1, 
  "value": [
    "if (typeof(extensions) === 'undefined')", 
    "    extensions = {};", 
    "", 
    "if (extensions.TabAbbrev && extensions.TabAbbrev.onKeyPress) {", 
    "    var editor_pane = ko.views.manager.topView;", 
    "    editor_pane.removeEventListener('keypress', extensions.TabAbbrev.onKeyPress, true);", 
    "}", 
    "extensions.TabAbbrev = {};", 
    "", 
    "(function() {", 
    "", 
    "    this.onKeyPress = function(e) {", 
    "        try {", 
    "            if (e.keyCode != 9 || e.ctrlKey || e.altKey || e.shiftKey) return false", 
    "            ", 
    "            komodo.assertMacroVersion(3);", 
    "\t\t\t", 
    "\t\t\tvar view = ko.views.manager.currentView;", 
    "\t\t\tvar editor = view.scimoz;", 
    "            ", 
    "            _word = ko.interpolate.getWordUnderCursor();", 
    "\t\t\tvar strLeft = editor.getTextRange(editor.currentPos-1, editor.currentPos);", 
    "            if( _word && strLeft != \"\\n\" && strLeft != ' ' && strLeft != '\t') {", 
    "\t\t\t\tvar lang = view.koDoc.language;", 
    "\t\t\t\t_part = ko.abbrev.findAbbrevSnippet(_word,lang);", 
    "                if( _part ) {", 
    "                    ko.commands.doCommand('cmd_deleteWordLeft');", 
    "\t\t\t\t\tview.focus();", 
    "                    ko.abbrev.insertAbbrevSnippet(_part, view)", 
    "                    e.preventDefault();", 
    "                    e.stopPropagation();", 
    "                }", 
    "            }", 
    "                ", 
    "        } catch(ex) {", 
    "            log.exception(ex);", 
    "        }", 
    "    }", 
    "    var editor_pane = ko.views.manager.topView;", 
    "    editor_pane.addEventListener('keypress', this.onKeyPress, true);", 
    "", 
    "}).apply(extensions.TabAbbrev);"
  ], 
  "trigger": "trigger_startup", 
  "rank": 100, 
  "version": "1.0.7", 
  "async": 1, 
  "type": "macro"
}