Skip to content

Commit 6e2e874

Browse files
committed
refactor docChangeHandler extract setTriggerSuggest
1 parent 865b306 commit 6e2e874

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

src/documentChangeHandler.ts

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ export class DocumentChangeHandler {
4747
if (!activeChange || (activeChange.text.length > 2 && !activeChange.text.endsWith('::'))) {
4848
return;
4949
}
50-
let triggerSuggest = false;
5150
if (activeChange.text === '/' && activeChange.rangeLength === 0) {
5251
let nextChar = e.document.getText().charAt(activeChange.rangeOffset + 1);
5352
if (nextChar === '>') {
@@ -80,28 +79,7 @@ export class DocumentChangeHandler {
8079
skipTrigger = true;
8180
}
8281
}
83-
if (!skipTrigger && activeChange.rangeOffset > 10) {
84-
let prevChar = e.document.getText().charAt(activeChange.rangeOffset - 1);
85-
if (prevChar === ' ') {
86-
prevChar = e.document.getText().charAt(activeChange.rangeOffset - 2);
87-
}
88-
89-
if ((Data.completionTriggers.indexOf(prevChar)) > -1 && activeChange.text.length === 1 && (activeChange.text === ' ' || XsltTokenDiagnostics.nameStartCharRgx.test(activeChange.text))) {
90-
triggerSuggest = true;
91-
} else if (prevChar === '<' && activeChange.text === '?') {
92-
triggerSuggest = true;
93-
} else if (XsltTokenDiagnostics.nameCharRgx.test(activeChange.text) && XsltTokenDiagnostics.nameCharRgx.test(prevChar)) {
94-
triggerSuggest = false;
95-
} else {
96-
const prevWordRange = activeChange.range.start.character > 1 ? e.document.getWordRangeAtPosition(activeChange.range.start.translate(0, -2)) : undefined;
97-
if (prevWordRange) {
98-
const prevWord = e.document.getText(prevWordRange);
99-
if (Data.triggerWords.indexOf(prevWord) !== -1) {
100-
triggerSuggest = true;
101-
}
102-
}
103-
}
104-
}
82+
const triggerSuggest = DocumentChangeHandler.setTriggerSuggestP1(skipTrigger, activeChange, e);
10583
if (triggerSuggest || activeChange.text === '(' || (activeChange.text === '/') || activeChange.text === '[' || activeChange.text === '!' || activeChange.text === '$' || activeChange.text === '<') {
10684
let isCloseTagFeature = false;
10785
if (activeChange.text === '/') {
@@ -160,6 +138,33 @@ export class DocumentChangeHandler {
160138
}
161139
}
162140

141+
public static setTriggerSuggestP1(skipTrigger: boolean, activeChange: vscode.TextDocumentContentChangeEvent, e: vscode.TextDocumentChangeEvent) {
142+
let triggerSuggest = false;
143+
if (!skipTrigger && activeChange.rangeOffset > 10) {
144+
let prevChar = e.document.getText().charAt(activeChange.rangeOffset - 1);
145+
if (prevChar === ' ') {
146+
prevChar = e.document.getText().charAt(activeChange.rangeOffset - 2);
147+
}
148+
149+
if ((Data.completionTriggers.indexOf(prevChar)) > -1 && activeChange.text.length === 1 && (activeChange.text === ' ' || XsltTokenDiagnostics.nameStartCharRgx.test(activeChange.text))) {
150+
triggerSuggest = true;
151+
} else if (prevChar === '<' && activeChange.text === '?') {
152+
triggerSuggest = true;
153+
} else if (XsltTokenDiagnostics.nameCharRgx.test(activeChange.text) && XsltTokenDiagnostics.nameCharRgx.test(prevChar)) {
154+
triggerSuggest = false;
155+
} else {
156+
const prevWordRange = activeChange.range.start.character > 1 ? e.document.getWordRangeAtPosition(activeChange.range.start.translate(0, -2)) : undefined;
157+
if (prevWordRange) {
158+
const prevWord = e.document.getText(prevWordRange);
159+
if (Data.triggerWords.indexOf(prevWord) !== -1) {
160+
triggerSuggest = true;
161+
}
162+
}
163+
}
164+
}
165+
return triggerSuggest;
166+
}
167+
163168
private checkEndTag(endTagData: TagRenamePosition, startTagPos: number, startTagChange: vscode.TextDocumentContentChangeEvent): boolean {
164169
let result = false;
165170
let endTagName = endTagData.endTag;

0 commit comments

Comments
 (0)