| 615 | 615 | return settings; |
| 616 | 616 | } |
| 617 | 617 | |
| 618 | + getCompletionPresetByName(name) { |
| 619 | + // Retrieve a completion preset by name |
| 620 | + let { presets, preset_names } = this.getPresetList(); |
| 621 | + let preset; |
| 622 | + |
| 623 | + // Some APIs use an array of names, others use an object of {name: index} |
| 624 | + if (Array.isArray(preset_names)) { // array of names |
| 625 | + if (!preset_names.includes(name)) { |
| 626 | + preset = undefined; |
| 627 | + } else { |
| 628 | + preset = presets[preset_names.indexOf(name)]; |
| 629 | + } |
| 630 | + } else { // object of {names: index} |
| 631 | + if (preset_names[name] === undefined) { |
| 632 | + preset = undefined; |
| 633 | + } else { |
| 634 | + preset = presets[preset_names[name]]; |
| 635 | + } |
| 636 | + } |
| 637 | + |
| 638 | + // if the preset isn't found, return null |
| 639 | + if (preset === undefined) { |
| 640 | + console.error(`Preset ${name} not found`); |
| 641 | + return; |
| 642 | + } |
| 643 | + return preset; |
| 644 | + } |
| 645 | + |
| 618 | 646 | // pass no arguments to delete current preset |
| 619 | 647 | async deletePreset(name) { |
| 620 | 648 | const { preset_names, presets } = this.getPresetList(); |