From 27de924efb5ff94afc926dad13ff5889193be2e0 Mon Sep 17 00:00:00 2001 From: Vincent Woo <me@vincentwoo.com> Date: Wed, 31 May 2017 17:57:58 -0700 Subject: [PATCH] [vim] Don't throw errors to signal missing options Addresses #4771 --- keymap/vim.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/keymap/vim.js b/keymap/vim.js index d4452c697..c3375a743 100644 --- a/keymap/vim.js +++ b/keymap/vim.js @@ -411,11 +411,11 @@ cfg = cfg || {}; var scope = cfg.scope; if (!option) { - throw Error('Unknown option: ' + name); + return new Error('Unknown option: ' + name); } if (option.type == 'boolean') { if (value && value !== true) { - throw Error('Invalid argument: ' + name + '=' + value); + return new Error('Invalid argument: ' + name + '=' + value); } else if (value !== false) { // Boolean options are set to true if value is not defined. value = true; @@ -443,7 +443,7 @@ cfg = cfg || {}; var scope = cfg.scope; if (!option) { - throw Error('Unknown option: ' + name); + return new Error('Unknown option: ' + name); } if (option.callback) { var local = cm && option.callback(undefined, cm); @@ -4300,13 +4300,18 @@ // If no value is provided, then we assume this is a get. if (!optionIsBoolean && value === undefined || forceGet) { var oldValue = getOption(optionName, cm, setCfg); - if (oldValue === true || oldValue === false) { + if (oldValue instanceof Error) { + showConfirm(cm, oldValue.message); + } else if (oldValue === true || oldValue === false) { showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName); } else { showConfirm(cm, ' ' + optionName + '=' + oldValue); } } else { - setOption(optionName, value, cm, setCfg); + var setOptionReturn = setOption(optionName, value, cm, setCfg); + if (setOptionReturn instanceof Error) { + showConfirm(cm, setOptionReturn.message); + } } }, setlocal: function (cm, params) { -- GitLab