var jsCode = [
	'"use strict";',
	"function Person(age) {",
	"	if (age) {",
	"		this.age = age;",
	"	}",
	"}",
	"Person.prototype.getAge = function () {",
	"	return this.age;",
	"};",
].join("\n");

var editor = monaco.editor.create(document.getElementById("container"), {
	value: jsCode,
	language: "javascript",
});

var myCondition1 = editor.createContextKey(
	/*key name*/ "myCondition1",
	/*default value*/ false
);
var myCondition2 = editor.createContextKey(
	/*key name*/ "myCondition2",
	/*default value*/ false
);

editor.addCommand(
	monaco.KeyCode.Tab,
	function () {
		// services available in `ctx`
		alert("my command is executing!");
	},
	"myCondition1 && myCondition2"
);

myCondition1.set(true);

setTimeout(function () {
	alert("now enabling also myCondition2, try pressing Tab!");
	myCondition2.set(true);
	// you can use myCondition2.reset() to go back to the default
}, 2000);
