@@ -376,13 +376,13 @@ export function activate(context: vscode.ExtensionContext) {
376376 }
377377 }
378378 } else {
379- const attribute = xmlTracker . attributeWithPosInName ( document , position , element ) ;
380- if ( attribute ) {
379+ const attributeWithPosInName = xmlTracker . attributeWithPosInName ( document , position , element ) ;
380+ if ( attributeWithPosInName ) {
381381 const elementAttributes : EnhancedAttributeInfo [ ] = xsdReference . getElementAttributesWithTypes ( schema , element . name , element . hierarchy ) ;
382- const attributeDefinition = elementAttributes . find ( ( attr ) => attr . name === attribute . name ) ;
382+ const attributeDefinition = elementAttributes . find ( ( attr ) => attr . name === attributeWithPosInName . name ) ;
383383 if ( attributeDefinition && attributeDefinition . location ) {
384384 logger . debug (
385- `Definition found for attribute: ${ attribute . name } at ${ attributeDefinition . location . uri . toString ( ) } :${ attributeDefinition . location . line } :${ attributeDefinition . location . column } }`
385+ `Definition found for attribute: ${ attributeWithPosInName . name } at ${ attributeDefinition . location . uri . toString ( ) } :${ attributeDefinition . location . line } :${ attributeDefinition . location . column } }`
386386 ) ;
387387 return new vscode . Location (
388388 vscode . Uri . parse ( attributeDefinition . location . uri ) ,
@@ -396,29 +396,34 @@ export function activate(context: vscode.ExtensionContext) {
396396 ) ;
397397 }
398398 }
399- }
400- }
401-
402- // Check if cursor is on a variable
403- const variableDefinition = variableTracker . getVariableDefinition ( document , position ) ;
404- if ( variableDefinition ) {
405- logger . debug ( `Variable definition found at position: ${ position . line + 1 } :${ position . character } for variable: ${ variableDefinition . name } ` ) ;
406- return variableDefinition . definition ;
407- }
399+ const attributeWithPosInValue = xmlTracker . attributeWithPosInValue ( document , position , element ) ;
400+ if ( attributeWithPosInValue ) {
401+ // Check if cursor is on a variable
402+ const variableDefinition = variableTracker . getVariableDefinition ( document , position ) ;
403+ if ( variableDefinition ) {
404+ logger . debug ( `Variable definition found at position: ${ position . line + 1 } :${ position . character } for variable: ${ variableDefinition . name } ` ) ;
405+ return variableDefinition . definition ;
406+ }
408407
409- // Process trackers
410- for ( const [ itemType , trackerInfo ] of scriptReferencedItemsRegistry ) {
411- if ( token . isCancellationRequested ) return undefined ;
412- if ( trackerInfo . tracker . schema === schema ) {
413- const itemDefinition = trackerInfo . tracker . getItemDefinition ( document , position ) ;
414- if ( itemDefinition ) {
415- logger . debug ( `Definition found for ${ itemType } : ${ itemDefinition . name } ` ) ;
416- return itemDefinition . definition ;
408+ const attrValue = attributeWithPosInValue . value ;
409+ if ( ! attrValue . includes ( '$' ) && ! attrValue . startsWith ( 'event.' ) && ! attrValue . startsWith ( '@event.' ) ) {
410+ // Process trackers
411+ for ( const [ itemType , trackerInfo ] of scriptReferencedItemsRegistry ) {
412+ if ( token . isCancellationRequested ) return undefined ;
413+ if ( trackerInfo . tracker . schema === schema ) {
414+ const itemDefinition = trackerInfo . tracker . getItemDefinition ( document , position ) ;
415+ if ( itemDefinition ) {
416+ logger . debug ( `Definition found for ${ itemType } : ${ itemDefinition . name } ` ) ;
417+ return itemDefinition . definition ;
418+ }
419+ }
420+ }
421+ }
422+ // Fallback to script properties
423+ return scriptProperties . provideDefinition ( document , position , token ) ;
417424 }
418425 }
419426 }
420- // Fallback to script properties
421- return scriptProperties . provideDefinition ( document , position , token ) ;
422427 } ,
423428 } )
424429 ) ;
@@ -504,19 +509,20 @@ export function activate(context: vscode.ExtensionContext) {
504509 logger . debug ( `Hover will not be generated in comment or single-quoted attribute value: ${ attribute . element . name } .${ attribute . name } ` ) ;
505510 return undefined ;
506511 }
507-
508- // Trackers specific hover information
509- for ( const [ itemType , trackerInfo ] of scriptReferencedItemsRegistry ) {
510- if ( token . isCancellationRequested ) return undefined ;
511- if ( trackerInfo . tracker . schema === schema ) {
512- // Check for action definitions
513- const itemHover = trackerInfo . tracker . getItemHover ( document , position ) ;
514- if ( itemHover ) {
515- return itemHover ;
512+ const attrValue = attribute . value ;
513+ if ( ! attrValue . includes ( '$' ) && ! attrValue . startsWith ( 'event.' ) && ! attrValue . startsWith ( '@event.' ) ) {
514+ // Trackers specific hover information
515+ for ( const [ itemType , trackerInfo ] of scriptReferencedItemsRegistry ) {
516+ if ( token . isCancellationRequested ) return undefined ;
517+ if ( trackerInfo . tracker . schema === schema ) {
518+ // Check for action definitions
519+ const itemHover = trackerInfo . tracker . getItemHover ( document , position ) ;
520+ if ( itemHover ) {
521+ return itemHover ;
522+ }
516523 }
517524 }
518525 }
519-
520526 // Check for variable hover
521527 const variableAtPosition = variableTracker . getVariableAtPosition ( document , position ) ;
522528 if ( token . isCancellationRequested ) return undefined ;
0 commit comments