Skip to content

Commit 1722770

Browse files
author
Petr Spacek
committed
refactor: parentSkeletonSelectedFirst into suggest config node
1 parent 5ec254c commit 1722770

File tree

6 files changed

+20
-12
lines changed

6 files changed

+20
-12
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ The following settings are supported:
4949
- `http.proxyStrictSSL`: If true the proxy server certificate should be verified against the list of supplied CAs. Default is false.
5050
- `[yaml].editor.formatOnType`: Enable/disable on type indent and auto formatting array
5151
- `yaml.disableDefaultProperties`: Disable adding not required properties with default values into completion text
52-
- `yaml.selectParentSkeletonFirst`: If true, the user must select some parent skeleton first before autocompletion starts to suggest the rest of the properties.\nWhen yaml object is not empty, autocompletion ignores this setting and returns all properties and skeletons.
52+
- `yaml.suggest.parentSkeletonSelectedFirst`: If true, the user must select some parent skeleton first before autocompletion starts to suggest the rest of the properties.\nWhen yaml object is not empty, autocompletion ignores this setting and returns all properties and skeletons.
5353

5454
##### Adding custom tags
5555

src/languageserver/handlers/settingsHandlers.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ export class SettingsHandler {
105105
}
106106
this.yamlSettings.disableAdditionalProperties = settings.yaml.disableAdditionalProperties;
107107
this.yamlSettings.disableDefaultProperties = settings.yaml.disableDefaultProperties;
108-
this.yamlSettings.selectParentSkeletonFirst = settings.yaml.selectParentSkeletonFirst;
108+
109+
if (settings.yaml.suggest) {
110+
this.yamlSettings.suggest.parentSkeletonSelectedFirst = settings.yaml.suggest.parentSkeletonSelectedFirst;
111+
}
109112
}
110113

111114
this.yamlSettings.schemaConfigurationSettings = [];
@@ -233,7 +236,7 @@ export class SettingsHandler {
233236
indentation: this.yamlSettings.indentation,
234237
disableAdditionalProperties: this.yamlSettings.disableAdditionalProperties,
235238
disableDefaultProperties: this.yamlSettings.disableDefaultProperties,
236-
selectParentSkeletonFirst: this.yamlSettings.selectParentSkeletonFirst,
239+
parentSkeletonSelectedFirst: this.yamlSettings.suggest.parentSkeletonSelectedFirst,
237240
yamlVersion: this.yamlSettings.yamlVersion,
238241
};
239242

src/languageservice/services/yamlCompletion.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ export class YamlCompletion {
7373
private indentation: string;
7474
private supportsMarkdown: boolean | undefined;
7575
private disableDefaultProperties: boolean;
76-
private selectParentSkeletonFirst: boolean;
76+
private parentSkeletonSelectedFirst: boolean;
7777

7878
constructor(
7979
private schemaService: YAMLSchemaService,
@@ -90,7 +90,7 @@ export class YamlCompletion {
9090
this.yamlVersion = languageSettings.yamlVersion;
9191
this.configuredIndentation = languageSettings.indentation;
9292
this.disableDefaultProperties = languageSettings.disableDefaultProperties;
93-
this.selectParentSkeletonFirst = languageSettings.selectParentSkeletonFirst;
93+
this.parentSkeletonSelectedFirst = languageSettings.parentSkeletonSelectedFirst;
9494
}
9595

9696
async doComplete(document: TextDocument, position: Position, isKubernetes = false): Promise<CompletionList> {
@@ -591,8 +591,6 @@ export class YamlCompletion {
591591
const lineContent = textBuffer.getLineContent(overwriteRange.start.line);
592592
const hasOnlyWhitespace = lineContent.trim().length === 0;
593593
const hasColon = lineContent.indexOf(':') !== -1;
594-
const isNodeNull =
595-
(isScalar(originalNode) && originalNode.value === null) || (isMap(originalNode) && originalNode.items.length === 0);
596594
const nodeParent = doc.getParent(node);
597595
const matchOriginal = matchingSchemas.find((it) => it.node.internalNode === originalNode && it.schema.properties);
598596
for (const schema of matchingSchemas) {
@@ -679,8 +677,11 @@ export class YamlCompletion {
679677
identCompensation + this.indentation
680678
);
681679
}
680+
const isNodeNull =
681+
(isScalar(originalNode) && originalNode.value === null) ||
682+
(isMap(originalNode) && originalNode.items.length === 0);
682683
const existsParentCompletion = schema.schema.required?.length > 0;
683-
if (!this.selectParentSkeletonFirst || !isNodeNull || !existsParentCompletion) {
684+
if (!this.parentSkeletonSelectedFirst || !isNodeNull || !existsParentCompletion) {
684685
collector.add({
685686
kind: CompletionItemKind.Property,
686687
label: key,

src/languageservice/yamlLanguageService.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export interface LanguageSettings {
102102
* If true, the user must select some parent skeleton first before autocompletion starts to suggest the rest of the properties.
103103
* When yaml object is not empty, autocompletion ignores this setting and returns all properties and skeletons.
104104
*/
105-
selectParentSkeletonFirst?: boolean;
105+
parentSkeletonSelectedFirst?: boolean;
106106

107107
/**
108108
* Default yaml lang version

src/yamlSettings.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ export interface Settings {
2222
};
2323
disableDefaultProperties: boolean;
2424
disableAdditionalProperties: boolean;
25-
selectParentSkeletonFirst: boolean;
25+
suggest: {
26+
parentSkeletonSelectedFirst: boolean;
27+
};
2628
maxItemsComputed: number;
2729
yamlVersion: YamlVersion;
2830
};
@@ -70,7 +72,9 @@ export class SettingsState {
7072
indentation: string | undefined = undefined;
7173
disableAdditionalProperties = false;
7274
disableDefaultProperties = false;
73-
selectParentSkeletonFirst = false;
75+
suggest = {
76+
parentSkeletonSelectedFirst: false,
77+
};
7478
maxItemsComputed = 5000;
7579

7680
// File validation helpers

test/autoCompletion.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2798,7 +2798,7 @@ describe('Auto Completion Tests', () => {
27982798
describe('Select parent skeleton first', () => {
27992799
beforeEach(() => {
28002800
const languageSettingsSetup = new ServiceSetup().withCompletion();
2801-
languageSettingsSetup.languageSettings.selectParentSkeletonFirst = true;
2801+
languageSettingsSetup.languageSettings.parentSkeletonSelectedFirst = true;
28022802
languageService.configure(languageSettingsSetup.languageSettings);
28032803
});
28042804
it('Should suggest complete object skeleton', async () => {

0 commit comments

Comments
 (0)