UNPKG

alm

Version:

The best IDE for TypeScript

94 lines (93 loc) 3.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var utils = require("../../common/utils"); /** Addons. These must be loaded before the function below is ever called so loaded here 🌹 */ var gitStatus = require("../monaco/addons/gitStatus"); var jumpy = require("../monaco/addons/jumpy"); var writeCode = require("../monaco/addons/writeCode"); var gitReset = require("../monaco/addons/gitReset"); var htmlToTsx = require("../monaco/addons/htmlToTsx"); var cssToTs = require("../monaco/addons/cssToTs"); var jsonToDts = require("../monaco/addons/jsonToDts"); var gotoTypeScriptSymbol = require("../monaco/addons/gotoTypeScriptSymbol"); var findReferences = require("../monaco/codeResults/findReferences"); var gotoDefinition = require("../monaco/codeResults/gotoDefinition"); var renameVariable = require("../monaco/codeResults/renameVariable"); var blaster = require("../monaco/addons/blaster"); var quickFix = require("../monaco/addons/quickFix"); var removeUnusedImports = require("../monaco/addons/removeUnusedImports"); var liveDemo = require("../monaco/addons/liveDemo"); var formatBetter = require("../monaco/addons/formatBetter"); var ensureImport = gitStatus || jumpy || writeCode || gitReset || htmlToTsx || cssToTs || jsonToDts || gotoTypeScriptSymbol || findReferences || gotoDefinition || renameVariable || blaster || quickFix || removeUnusedImports || liveDemo || formatBetter; /** * These are actions for which we have our own commands */ var blackListedActions = utils.createMap([ // we have our own find experience 'actions.find', 'editor.action.nextMatchFindAction', 'editor.action.previousMatchFindAction', // we have our own goto definition/references/rename experiences 'editor.action.goToDeclaration', 'editor.action.referenceSearch.trigger', 'editor.action.rename', // we have our own quickfix implementation 'editor.action.quickFix', // we have our own goto symbol for TypeScript // Sadly disabiling this means we lose it for `css` files too. // But its okay as far as I am concerned. 'editor.action.quickOutline' ]); /** * This creates a dummy monaco editor just to get its actions */ function getActions() { var elt = document.createElement('div'); var editor = monaco.editor.create(elt, {}, []); // WARNING: This isn't documented or well exposed // but this is what `quickCommand.ts` (the built in command pallet) uses // It uses its on (injected) version but fortunately its on the editor as well var keybindingService = editor._standaloneKeybindingService; // console.log(editor, keybindingService); // DEBUG var actions = editor.getActions().filter(function (a) { return !blackListedActions[a.id]; }); var result = actions.map(function (a) { // can have multiple (but in my experience they only had singles or 0) var keyboards = keybindingService.lookupKeybindings(a.id).map(function (k) { return keybindingService.getLabelFor(k); }); var keyboard = keyboards[0]; // if there was any keyboard // map to it look nice for us // We don't actually need to use these bindings other than the display it (as trigger is done by `id`). var kbd = null; if (keyboard) { kbd = keyboard .replace('UpArrow', 'Up') .replace('DownArrow', 'Down') .replace('LeftArrow', 'Left') .replace('RightArrow', 'Right'); } return { label: a.label, id: a.id, kbd: kbd }; }); editor.dispose(); elt.remove(); return result; } exports.getActions = getActions;