Skip to content

Commit 27de924

Browse files
vincentwoomarijnh
authored andcommitted
[vim] Don't throw errors to signal missing options
Addresses codemirror#4771
1 parent 9d96a89 commit 27de924

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

keymap/vim.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -411,11 +411,11 @@
411411
cfg = cfg || {};
412412
var scope = cfg.scope;
413413
if (!option) {
414-
throw Error('Unknown option: ' + name);
414+
return new Error('Unknown option: ' + name);
415415
}
416416
if (option.type == 'boolean') {
417417
if (value && value !== true) {
418-
throw Error('Invalid argument: ' + name + '=' + value);
418+
return new Error('Invalid argument: ' + name + '=' + value);
419419
} else if (value !== false) {
420420
// Boolean options are set to true if value is not defined.
421421
value = true;
@@ -443,7 +443,7 @@
443443
cfg = cfg || {};
444444
var scope = cfg.scope;
445445
if (!option) {
446-
throw Error('Unknown option: ' + name);
446+
return new Error('Unknown option: ' + name);
447447
}
448448
if (option.callback) {
449449
var local = cm && option.callback(undefined, cm);
@@ -4300,13 +4300,18 @@
43004300
// If no value is provided, then we assume this is a get.
43014301
if (!optionIsBoolean && value === undefined || forceGet) {
43024302
var oldValue = getOption(optionName, cm, setCfg);
4303-
if (oldValue === true || oldValue === false) {
4303+
if (oldValue instanceof Error) {
4304+
showConfirm(cm, oldValue.message);
4305+
} else if (oldValue === true || oldValue === false) {
43044306
showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName);
43054307
} else {
43064308
showConfirm(cm, ' ' + optionName + '=' + oldValue);
43074309
}
43084310
} else {
4309-
setOption(optionName, value, cm, setCfg);
4311+
var setOptionReturn = setOption(optionName, value, cm, setCfg);
4312+
if (setOptionReturn instanceof Error) {
4313+
showConfirm(cm, setOptionReturn.message);
4314+
}
43104315
}
43114316
},
43124317
setlocal: function (cm, params) {

0 commit comments

Comments
 (0)