@@ -95,49 +95,42 @@ export function activate(context: vscode.ExtensionContext): void {
9595 const needsSort = getConfig ( 'sortOnSave' ) ;
9696 if ( ! needsRemove && ! needsSort ) { return ; }
9797
98- diagnosticManager . suppressUpdates = true ;
99-
10098 event . waitUntil ( ( ( ) : Promise < vscode . TextEdit [ ] > => {
101- try {
102- const document = event . document ;
103- const { useStatements } = parser . parse ( document ) ;
104- if ( useStatements . length === 0 ) { return Promise . resolve ( [ ] ) ; }
105-
106- let stmtsToKeep = useStatements ;
107-
108- // Filter out unused class imports
109- if ( needsRemove ) {
110- const text = document . getText ( ) ;
111- const detectedClasses = detector . detectAll ( text ) ;
112- const ignoreList = getConfig ( 'ignoreList' ) ;
113- stmtsToKeep = useStatements . filter ( stmt => {
114- if ( stmt . kind !== 'class' ) { return true ; }
115- if ( ignoreList . includes ( stmt . className ) ) { return true ; }
116- if ( detectedClasses . includes ( stmt . className ) ) { return true ; }
117- if ( text . includes ( `${ stmt . className } \\` ) ) { return true ; }
118- return false ;
119- } ) ;
120- }
121-
122- // Sort remaining imports (or just sort without remove)
123- if ( needsSort && stmtsToKeep . length > 1 ) {
124- return Promise . resolve ( sortManager . computeSortEdits ( document , stmtsToKeep ) ) ;
125- }
126-
127- // Remove-only: delete unused lines (reverse order for stable line numbers)
128- if ( needsRemove && stmtsToKeep . length < useStatements . length ) {
129- const removed = useStatements . filter ( s => ! stmtsToKeep . includes ( s ) ) ;
130- const edits = removed
131- . sort ( ( a , b ) => b . line - a . line )
132- . map ( stmt => vscode . TextEdit . delete ( document . lineAt ( stmt . line ) . rangeIncludingLineBreak ) ) ;
133- return Promise . resolve ( edits ) ;
134- }
135-
136- return Promise . resolve ( [ ] ) ;
137- } finally {
138- // Defer re-enabling so diagnostics don't fire during the save edit application
139- setTimeout ( ( ) => { diagnosticManager . suppressUpdates = false ; } , 100 ) ;
99+ const document = event . document ;
100+ const { useStatements } = parser . parse ( document ) ;
101+ if ( useStatements . length === 0 ) { return Promise . resolve ( [ ] ) ; }
102+
103+ let stmtsToKeep = useStatements ;
104+
105+ // Filter out unused class imports
106+ if ( needsRemove ) {
107+ const text = document . getText ( ) ;
108+ const detectedClasses = detector . detectAll ( text ) ;
109+ const ignoreList = getConfig ( 'ignoreList' ) ;
110+ stmtsToKeep = useStatements . filter ( stmt => {
111+ if ( stmt . kind !== 'class' ) { return true ; }
112+ if ( ignoreList . includes ( stmt . className ) ) { return true ; }
113+ if ( detectedClasses . includes ( stmt . className ) ) { return true ; }
114+ if ( text . includes ( `${ stmt . className } \\` ) ) { return true ; }
115+ return false ;
116+ } ) ;
117+ }
118+
119+ // Sort remaining imports (or just sort without remove)
120+ if ( needsSort && stmtsToKeep . length > 1 ) {
121+ return Promise . resolve ( sortManager . computeSortEdits ( document , stmtsToKeep ) ) ;
140122 }
123+
124+ // Remove-only: delete unused lines (reverse order for stable line numbers)
125+ if ( needsRemove && stmtsToKeep . length < useStatements . length ) {
126+ const removed = useStatements . filter ( s => ! stmtsToKeep . includes ( s ) ) ;
127+ const edits = removed
128+ . sort ( ( a , b ) => b . line - a . line )
129+ . map ( stmt => vscode . TextEdit . delete ( document . lineAt ( stmt . line ) . rangeIncludingLineBreak ) ) ;
130+ return Promise . resolve ( edits ) ;
131+ }
132+
133+ return Promise . resolve ( [ ] ) ;
141134 } ) ( ) ) ;
142135 } )
143136 ) ;
0 commit comments