@@ -47,7 +47,6 @@ export class DocumentChangeHandler {
47
47
if ( ! activeChange || ( activeChange . text . length > 2 && ! activeChange . text . endsWith ( '::' ) ) ) {
48
48
return ;
49
49
}
50
- let triggerSuggest = false ;
51
50
if ( activeChange . text === '/' && activeChange . rangeLength === 0 ) {
52
51
let nextChar = e . document . getText ( ) . charAt ( activeChange . rangeOffset + 1 ) ;
53
52
if ( nextChar === '>' ) {
@@ -80,28 +79,7 @@ export class DocumentChangeHandler {
80
79
skipTrigger = true ;
81
80
}
82
81
}
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 ) ;
105
83
if ( triggerSuggest || activeChange . text === '(' || ( activeChange . text === '/' ) || activeChange . text === '[' || activeChange . text === '!' || activeChange . text === '$' || activeChange . text === '<' ) {
106
84
let isCloseTagFeature = false ;
107
85
if ( activeChange . text === '/' ) {
@@ -160,6 +138,33 @@ export class DocumentChangeHandler {
160
138
}
161
139
}
162
140
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
+
163
168
private checkEndTag ( endTagData : TagRenamePosition , startTagPos : number , startTagChange : vscode . TextDocumentContentChangeEvent ) : boolean {
164
169
let result = false ;
165
170
let endTagName = endTagData . endTag ;
0 commit comments