(name, value, cm, cfg)
| 472 | } |
| 473 | |
| 474 | function setOption(name, value, cm, cfg) { |
| 475 | var option = options[name]; |
| 476 | cfg = cfg || {}; |
| 477 | var scope = cfg.scope; |
| 478 | if (!option) { |
| 479 | return new Error('Unknown option: ' + name); |
| 480 | } |
| 481 | if (option.type == 'boolean') { |
| 482 | if (value && value !== true) { |
| 483 | return new Error('Invalid argument: ' + name + '=' + value); |
| 484 | } else if (value !== false) { |
| 485 | // Boolean options are set to true if value is not defined. |
| 486 | value = true; |
| 487 | } |
| 488 | } |
| 489 | if (option.callback) { |
| 490 | if (scope !== 'local') { |
| 491 | option.callback(value, undefined); |
| 492 | } |
| 493 | if (scope !== 'global' && cm) { |
| 494 | option.callback(value, cm); |
| 495 | } |
| 496 | } else { |
| 497 | if (scope !== 'local') { |
| 498 | option.value = option.type == 'boolean' ? !!value : value; |
| 499 | } |
| 500 | if (scope !== 'global' && cm) { |
| 501 | cm.state.vim.options[name] = {value: value}; |
| 502 | } |
| 503 | } |
| 504 | } |
| 505 | |
| 506 | function getOption(name, cm, cfg) { |
| 507 | var option = options[name]; |
no outgoing calls
no test coverage detected