@@ -81,26 +81,35 @@ export class ObjectScriptCodeLensProvider implements vscode.CodeLensProvider {
81
81
return result ;
82
82
}
83
83
84
- debugThisMethod && result . push ( this . addDebugThisMethod ( 0 , [ `^${ routineName } ` , false ] ) ) ;
85
- copyToClipboard && result . push ( this . addCopyToClipboard ( 0 , [ `^${ routineName } ` ] ) ) ;
86
-
87
84
const symbols : vscode . DocumentSymbol [ ] = await vscode . commands . executeCommand (
88
85
"vscode.executeDocumentSymbolProvider" ,
89
86
document . uri
90
87
) ;
91
- symbols
92
- . filter ( ( symbol ) => symbol . kind === vscode . SymbolKind . Method )
93
- . forEach ( ( symbol ) => {
94
- const line = symbol . selectionRange . start . line ;
95
- const labelMatch = document . lineAt ( line ) . text . match ( / ^ ( \w [ ^ ( \n \s ] + ) (?: \( ( [ ^ ) ] * ) \) ) ? / i) ;
96
- if ( labelMatch ) {
97
- const [ , name , parens ] = labelMatch ;
98
-
99
- debugThisMethod && result . push ( this . addDebugThisMethod ( line , [ `${ name } ^${ routineName } ` , parens !== "()" ] ) ) ;
100
- copyToClipboard && result . push ( this . addCopyToClipboard ( line , [ `${ name } ^${ routineName } ` ] ) ) ;
101
- }
102
- } ) ;
103
88
89
+ let labelledLine1 = false ;
90
+ if ( symbols ) {
91
+ symbols
92
+ . filter ( ( symbol ) => symbol . kind === vscode . SymbolKind . Method )
93
+ . forEach ( ( symbol ) => {
94
+ const line = symbol . selectionRange . start . line ;
95
+ const labelMatch = document . lineAt ( line ) . text . match ( / ^ ( \w [ ^ ( \n \s ] + ) (?: \( ( [ ^ ) ] * ) \) ) ? / i) ;
96
+ if ( labelMatch ) {
97
+ if ( line === 1 ) {
98
+ labelledLine1 = true ;
99
+ }
100
+ const [ , name , parens ] = labelMatch ;
101
+ debugThisMethod &&
102
+ result . push ( this . addDebugThisMethod ( line , [ `${ name } ^${ routineName } ` , parens && parens !== "()" ] ) ) ;
103
+ copyToClipboard && result . push ( this . addCopyToClipboard ( line , [ `${ name } ^${ routineName } ` ] ) ) ;
104
+ }
105
+ } ) ;
106
+ }
107
+
108
+ // Add lenses at the top only if the first code line had no label
109
+ if ( ! labelledLine1 ) {
110
+ debugThisMethod && result . push ( this . addDebugThisMethod ( 0 , [ `^${ routineName } ` , false ] ) ) ;
111
+ copyToClipboard && result . push ( this . addCopyToClipboard ( 0 , [ `^${ routineName } ` ] ) ) ;
112
+ }
104
113
return result ;
105
114
}
106
115
0 commit comments