diff --git a/src/xterm.js b/src/xterm.js index 08386be3..bc0de043 100644 --- a/src/xterm.js +++ b/src/xterm.js @@ -357,6 +357,22 @@ Terminal.prototype.focus = function() { return this.textarea.focus(); }; +/** + * Retrieves an option's value from the terminal. + * @param {string} key The option key. + */ +Terminal.prototype.getOption = function(key, value) { + if (!(key in Terminal.defaults)) { + throw new Error('No option with key "' + key + '"'); + } + + if (typeof this.options[key] !== 'undefined') { + return this.options[key]; + } + + return this[key]; +}; + /** * Sets an option on the terminal. * @param {string} key The option key. diff --git a/test/test.js b/test/test.js index 2f1c0fef..dac0535b 100644 --- a/test/test.js +++ b/test/test.js @@ -10,6 +10,22 @@ describe('xterm.js', function() { xterm.refresh = function(){}; }); + describe('getOption', function() { + it('should retrieve the option correctly', function() { + // In the `options` namespace. + xterm.options.cursorBlink = true; + assert.equal(xterm.getOption('cursorBlink'), true); + + // On the Terminal instance + delete xterm.options.cursorBlink; + xterm.cursorBlink = false; + assert.equal(xterm.getOption('cursorBlink'), false); + }); + it('should throw when retrieving a non-existant option', function() { + assert.throws(xterm.getOption.bind(xterm, 'fake', true)); + }); + }); + describe('setOption', function() { it('should set the option correctly', function() { xterm.setOption('cursorBlink', true);