in src/language/providers/attributeCompletion.ts [211:515]
function checkNearestOpenItem(
nearestOpenItem: string,
triggerText: string,
nsPrefix: string,
preVal: string,
additionalItems: string,
charBeforeTrigger: string,
charAfterTrigger: string
): vscode.CompletionItem[] | undefined {
const spacingChar: string =
charBeforeTrigger !== ' ' &&
charBeforeTrigger !== '\n' &&
charBeforeTrigger !== '\t'
? ' '
: ''
const afterChar: string =
charAfterTrigger !== ' ' &&
charAfterTrigger !== '\n' &&
charAfterTrigger !== '\t'
? ' '
: ''
let dfdlPrefix = dfdlDefaultPrefix
if (nsPrefix === 'dfdl:') {
dfdlPrefix = ''
}
switch (nearestOpenItem) {
case 'element':
return getCompletionItems(
[
'name',
'ref',
'type',
'minOccurs',
'maxOccurs',
'dfdl:occursCount',
'dfdl:bitOrder',
'dfdl:byteOrder',
'dfdl:occursCountKind',
'dfdl:length',
'dfdl:lengthKind',
'dfdl:encoding',
'dfdl:alignment',
'dfdl:lengthUnits',
'dfdl:lengthPattern',
'dfdl:inputValueCalc',
'dfdl:outputValueCalc',
'dfdl:alignmentUnits',
'dfdl:binaryNumberRep',
'dfdl:terminator',
'dfdl:outputNewLine',
'dfdl:choiceBranchKey',
'dfdl:prefixIncludesPrefixLength',
'dfdl:prefixLengthType',
'dfdl:representation',
'dfdl:binaryBooleanTrueRep',
'dfdl:binaryBooleanFalseRep',
],
preVal,
additionalItems,
nsPrefix,
dfdlPrefix,
spacingChar,
afterChar
)
case 'sequence':
return getCompletionItems(
[
'dfdl:hiddenGroupRef',
'dfdl:sequenceKind',
'dfdl:separator',
'dfdl:separatorPosition',
'dfdl:separatorSuppressionPolicy',
],
preVal,
'',
nsPrefix,
dfdlPrefix,
spacingChar,
afterChar
)
case 'choice':
return getCompletionItems(
[
'dfdl:choiceLengthKind',
'dfdl:choiceLength',
'dfdl:initiatedContent',
'dfdl:choiceDispatchKey',
'dfdl:choiceBranchKey',
],
'',
'',
nsPrefix,
dfdlPrefix,
spacingChar,
afterChar
)
case 'group':
return getCompletionItems(
[
'ref',
'name',
'dfdl:separator',
'dfdl:separatorPosition',
'dfdl:separatorSuppressionPolicy',
],
'',
'',
nsPrefix,
dfdlPrefix,
spacingChar,
afterChar
)
case 'simpleType':
return getCompletionItems(
[
'dfdl:binaryNumberRep',
'dfdl:length',
'dfdl:lengthKind',
'dfdl:representation',
'dfdl:binaryBooleanTrueRep',
'dfdl:binaryBooleanFalseRep',
],
'',
'',
nsPrefix,
dfdlPrefix,
spacingChar,
afterChar
)
case 'include':
return getCompletionItems(
['schemaLocation'],
'',
'',
nsPrefix,
'',
spacingChar,
afterChar
)
case 'import':
return getCompletionItems(
['schemaLocation', 'namespace'],
'',
'',
nsPrefix,
'',
spacingChar,
afterChar
)
case 'assert':
return getCompletionItems(
['testKind', 'test', 'testPattern', 'message', 'failureType'],
'',
'',
nsPrefix,
'',
spacingChar,
afterChar
)
case 'discriminator':
return getCompletionItems(
['test', 'message'],
'',
'',
nsPrefix,
'',
spacingChar,
afterChar
)
case 'format':
return getCompletionItems(
[
'dfdl:byteOrder',
'dfdl:bitOrder',
'dfdl:binaryNumberRep',
'dfdl:binaryFloatRep',
'dfdl:binaryDecimalVirtualPoint',
'dfdl:binaryPackedSignCodes',
'dfdl:binaryNumberCheckPolicy',
'dfdl:encoding',
'dfdl:encodingErrorPolicy',
'dfdl:initiator',
'dfdl:length',
'dfdl:lengthKind',
'dfdl:lengthUnits',
'dfdl:utf16Width',
'dfdl:nilKind',
'dfdl:nilValue',
'dfdl:nilValueDelimiterPolicy',
'dfdl:useNilForDefault',
'dfdl:lengthPattern',
'dfdl:outputNewLine',
'dfdl:separator',
'dfdl:separatorPosition',
'dfdl:separatorSuppressionPolicy',
'dfdl:terminator',
'dfdl:occursCountKind',
'dfdl:decimalSigned',
'dfdl:textStandardZeroRep',
'dfdl:textStandardInfinityRep',
'dfdl:textStandardExponentRep',
'dfdl:textStandardNaNRep',
'dfdl:textNumberPattern',
'dfdl:textNumberRep',
'dfdl:textNumberJustification',
'dfdl:textNumberRoundingIncrement',
'dfdl:textNumberRoundingMode',
'dfdl:textStandardRoundingIncrement',
'dfdl:textNumberRounding',
'dfdl:textNumberCheckPolicy',
'dfdl:textOutputMinLength',
'dfdl:textPolicyOutputMinLength',
'dfdl:textStandardDecimalSeparator',
'dfdl:textStandardGroupingSeparator',
'dfdl:textStringJustification',
'dfdl:textStringPadCharacter',
'dfdl:textPadKind',
'dfdl:textStandardBase',
'dfdl:textZonedSignStyle',
'dfdl:textTrimKind',
'dfdl:leadingSkip',
'dfdl:trailingSkip',
'dfdl:truncateSpecifiedLengthString',
'dfdl:sequenceKind',
'dfdl:textBidi',
'dfdl:choiceLengthKind',
'dfdl:choiceLength',
'dfdl:fillByte',
'dfdl:ignoreCase',
'dfdl:initiatedContent',
'dfdl:initiator',
'dfdl:floating',
'dfdl:inputValueCalc',
'dfdl:outputValueCalc',
'dfdl:alignment',
'dfdl:alignmentUnits',
'dfdl:terminator',
'dfdl:outputNewLine',
'dfdl:representation',
'dfdl:escapeSchemeRef',
'dfdl:calendarPattern',
'dfdl:calendarPatternKind',
'dfdl:calendarCheckPolicy',
'dfdl:calendarTimeZone',
'dfdl:calendarObserveDST',
'dfdl:calendarFirstDayOfWeek',
'dfdl:calendarDaysInFirstWeek',
'dfdl:calendarCenturyStart',
'dfdl:calendarLanguage',
'dfdl:documentFinalTerminatorCanBeMissing',
'dfdl:emptyValueDelimiterPolicy',
'dfdl:emptyElementParsePolicy',
],
'',
'',
nsPrefix,
'',
spacingChar,
afterChar
)
case 'escapeScheme':
return getCompletionItems(
[
'dfdl:escapeKind',
'dfdl:escapeCharacter',
'dfdl:escapeBlockStart',
'dfdl:escapeBlockEnd',
'dfdl:escapeEscapeCharacter',
'dfdl:extraEscapedCharacters',
'dfdl:generateEscapeBlock',
'dfdl:escapeCharacterPolicy',
],
'',
'',
nsPrefix,
'',
spacingChar,
afterChar
)
case 'defineVariable':
return getDefineVariableCompletionItems(
preVal,
additionalItems,
nsPrefix,
spacingChar,
afterChar
)
case 'newVariableInstance':
return getDefineVariableCompletionItems(
preVal,
additionalItems,
nsPrefix,
spacingChar,
afterChar
)
case 'setVariable':
const xmlValue = new vscode.CompletionItem('value')
xmlValue.insertText = new vscode.SnippetString('value="$1"$0')
xmlValue.documentation = new vscode.MarkdownString('')
return undefined
default:
return undefined
}
}