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);