@@ -154,13 +154,13 @@ export class ProblemsDiagnosticCollection implements vscode.Disposable {
154154
155155 private updateDiagnostics ( ) {
156156 this . _collection . clear ( )
157- const filesWithApiIssues = Object . keys ( this . _currentApiIssues )
158- const filesWithCliIssues = Object . keys ( this . _currentCliIssues )
157+ const filesWithApiIssues = Object . keys ( this . _currentApiIssues ) . map ( ( key ) => ( { file : key , isCliIssue : false } ) )
158+ const filesWithCliIssues = Object . keys ( this . _currentCliIssues ) . map ( ( key ) => ( { file : key , isCliIssue : true } ) )
159159 const allFiles = [ ...new Set ( [ ...filesWithApiIssues , ...filesWithCliIssues ] ) ]
160- allFiles . forEach ( ( file ) => {
160+ allFiles . forEach ( ( { file, isCliIssue } ) => {
161161 const document = vscode . workspace . textDocuments . find ( ( doc ) => doc . uri . fsPath === file )
162162 if ( document ) {
163- this . updateDocumentDiagnostics ( document )
163+ isCliIssue ? this . updateDocumentDiagnostics ( document ) : this . updateApiIssuesPositions ( document )
164164 }
165165 } )
166166 }
@@ -322,17 +322,30 @@ export class ProblemsDiagnosticCollection implements vscode.Disposable {
322322 const documentIssues = this . _currentApiIssues [ document . uri . fsPath ] || [ ]
323323
324324 const documentLines = document . getText ( ) . split ( '\n' )
325+ const validIssues : ( PullRequestIssue | BranchIssue ) [ ] = [ ]
325326
326- documentIssues . forEach ( ( { commitIssue } ) => {
327- if ( documentLines [ commitIssue . lineNumber - 1 ] . trim ( ) !== commitIssue . lineText . trim ( ) ) {
328- const foundInLine = documentLines . findIndex ( ( line ) => line . trim ( ) === commitIssue . lineText . trim ( ) )
327+ documentIssues . forEach ( ( issue ) => {
328+ const { commitIssue } = issue
329329
330+ if ( documentLines [ commitIssue . lineNumber - 1 ] ?. trim ( ) !== commitIssue . lineText . trim ( ) ) {
331+ const foundInLine = documentLines . findIndex ( ( line ) => line . trim ( ) === commitIssue . lineText . trim ( ) )
330332 if ( foundInLine >= 0 ) {
331333 commitIssue . lineNumber = foundInLine + 1
334+ validIssues . push ( issue )
335+ } else {
336+ Logger . appendLine (
337+ `Removing diagnostic for issue no longer found in document: "${ commitIssue . lineText . trim ( ) } " in ${ document . uri . fsPath } `
338+ )
339+ // Issue is no longer found in the document, so we don't add it to validIssues
332340 }
341+ } else {
342+ validIssues . push ( issue )
333343 }
334344 } )
335345
346+ // Update the current API issues to only include valid issues
347+ this . _currentApiIssues [ document . uri . fsPath ] = validIssues
348+
336349 this . updateDocumentDiagnostics ( document )
337350 }
338351
0 commit comments