From 971c5f81b4564bbcb1f3d34e23149bd070dff127 Mon Sep 17 00:00:00 2001 From: Qiming Zhao Date: Tue, 18 May 2021 10:12:51 +0800 Subject: [PATCH] feat(list): support change default action by configuration --- doc/coc.txt | 15 ++++++++++++--- src/list/manager.ts | 10 ++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/doc/coc.txt b/doc/coc.txt index 9fcdd6a8b08..d779fa306a7 100644 --- a/doc/coc.txt +++ b/doc/coc.txt @@ -2847,7 +2847,16 @@ list. For configuration of a specified list, use section that starts with: `list.source.{name}`, where `{name}` is the name of list. -Configure default options:~ +Change default action:~ + +If you want to use `tabe` as default action of symbols list, you can use: +> + // change default action of symbols + "list.source.symbols.defaultAction": "tabe" +< +in your coc-settings.json + +Change default options:~ Use `list.source.{name}.defaultOptions` setting like: > @@ -2855,12 +2864,12 @@ Use `list.source.{name}.defaultOptions` setting like: > "list.source.symbols.defaultOptions": ["--interactive", "--number-select"], < Note: some list like symbols only work in interactive mode, you must -include `--interactive` to `defaultOptions`. +include `--interactive` in `defaultOptions`. Note: default options will not be used when there're options passed with |:CocList| command. -Config default arguments:~ +Change default arguments:~ Use `list.source.{name}.defaultArgs` setting like: > diff --git a/src/list/manager.ts b/src/list/manager.ts index 4b05cdb64dd..5f35a65c0ff 100644 --- a/src/list/manager.ts +++ b/src/list/manager.ts @@ -394,6 +394,16 @@ export class ListManager implements Disposable { window.showMessage(`list "${name}" recreated.`) } this.listMap.set(name, list) + let config = workspace.getConfiguration(`list.source.${name}`) + let defaultAction = config.get('defaultAction') + if (defaultAction && list.actions.find(o => o.name == defaultAction)) { + list.defaultAction = defaultAction + } + extensions.addSchemeProperty(`list.source.${name}.defaultAction`, { + type: 'string', + default: null, + description: `Default default action of "${name}" list.` + }) extensions.addSchemeProperty(`list.source.${name}.defaultOptions`, { type: 'array', default: list.interactive ? ['--interactive'] : [],