18
18
import * as vscode from 'vscode'
19
19
20
20
import {
21
+ XmlItem ,
22
+ getSchemaNsPrefix ,
21
23
nearestOpen ,
22
24
checkBraceOpen ,
23
25
isInXPath ,
24
26
lineCount ,
25
27
createCompletionItem ,
26
28
getCommonItems ,
27
- getXsdNsPrefix ,
28
29
getItemsOnLineCount ,
29
30
cursorWithinQuotes ,
30
31
cursorWithinBraces ,
@@ -79,10 +80,15 @@ export function getAttributeCompletionProvider() {
79
80
. text . substring ( 0 , position . character )
80
81
const charBeforeTrigger = triggerText . charAt ( position . character - 1 )
81
82
const charAfterTrigger = triggerText . charAt ( position . character )
82
- let nearestOpenItem = nearestOpen ( document , position )
83
+ let xmlItem = new XmlItem ( )
84
+ xmlItem = nearestOpen ( document , position )
85
+ let nearestOpenItem = xmlItem . itemName
83
86
let itemsOnLine = getItemsOnLineCount ( triggerText )
84
- const nsPrefix = getXsdNsPrefix ( document , position )
85
- let additionalItems = getDefinedTypes ( document , nsPrefix )
87
+ const nsPrefix = xmlItem . itemNS
88
+ let additionalItems = getDefinedTypes (
89
+ document ,
90
+ getSchemaNsPrefix ( document )
91
+ )
86
92
87
93
if ( isInXPath ( document , position ) ) return undefined
88
94
@@ -131,9 +137,11 @@ export function getTDMLAttributeCompletionProvider() {
131
137
. text . substring ( 0 , position . character )
132
138
const charBeforeTrigger = triggerText . charAt ( position . character - 1 )
133
139
const charAfterTrigger = triggerText . charAt ( position . character )
134
- let nearestOpenItem = nearestOpen ( document , position )
140
+ let xmlItem = new XmlItem ( )
141
+ xmlItem = nearestOpen ( document , position )
142
+ let nearestOpenItem = xmlItem . itemName
135
143
let itemsOnLine = getItemsOnLineCount ( triggerText )
136
- const nsPrefix = getXsdNsPrefix ( document , position )
144
+ const nsPrefix = xmlItem . itemNS
137
145
let additionalItems = getDefinedTypes ( document , nsPrefix )
138
146
139
147
if ( isInXPath ( document , position ) ) return undefined
@@ -221,6 +229,10 @@ function checkNearestOpenItem(
221
229
charAfterTrigger !== '\t'
222
230
? ' '
223
231
: ''
232
+ let dfdlPrefix = dfdlDefaultPrefix
233
+ if ( nsPrefix === 'dfdl:' ) {
234
+ dfdlPrefix = ''
235
+ }
224
236
switch ( nearestOpenItem ) {
225
237
case 'element' :
226
238
return getCompletionItems (
@@ -256,7 +268,7 @@ function checkNearestOpenItem(
256
268
preVal ,
257
269
additionalItems ,
258
270
nsPrefix ,
259
- dfdlDefaultPrefix ,
271
+ dfdlPrefix ,
260
272
spacingChar ,
261
273
afterChar
262
274
)
@@ -272,7 +284,7 @@ function checkNearestOpenItem(
272
284
preVal ,
273
285
'' ,
274
286
nsPrefix ,
275
- dfdlDefaultPrefix ,
287
+ dfdlPrefix ,
276
288
spacingChar ,
277
289
afterChar
278
290
)
@@ -288,7 +300,7 @@ function checkNearestOpenItem(
288
300
'' ,
289
301
'' ,
290
302
nsPrefix ,
291
- dfdlDefaultPrefix ,
303
+ dfdlPrefix ,
292
304
spacingChar ,
293
305
afterChar
294
306
)
@@ -304,7 +316,7 @@ function checkNearestOpenItem(
304
316
'' ,
305
317
'' ,
306
318
nsPrefix ,
307
- dfdlDefaultPrefix ,
319
+ dfdlPrefix ,
308
320
spacingChar ,
309
321
afterChar
310
322
)
@@ -322,7 +334,7 @@ function checkNearestOpenItem(
322
334
'' ,
323
335
'' ,
324
336
nsPrefix ,
325
- dfdlDefaultPrefix ,
337
+ dfdlPrefix ,
326
338
spacingChar ,
327
339
afterChar
328
340
)
0 commit comments