alm
Version:
The best IDE for TypeScript
94 lines (93 loc) • 3.76 kB
JavaScript
;
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;