diff options
Diffstat (limited to 'editors/code/src/commands')
-rw-r--r-- | editors/code/src/commands/cargo_watch.ts | 66 |
1 files changed, 5 insertions, 61 deletions
diff --git a/editors/code/src/commands/cargo_watch.ts b/editors/code/src/commands/cargo_watch.ts index 126a8b1b3..1ec5f8d5f 100644 --- a/editors/code/src/commands/cargo_watch.ts +++ b/editors/code/src/commands/cargo_watch.ts | |||
@@ -2,12 +2,17 @@ import * as child_process from 'child_process'; | |||
2 | import * as fs from 'fs'; | 2 | import * as fs from 'fs'; |
3 | import * as path from 'path'; | 3 | import * as path from 'path'; |
4 | import * as vscode from 'vscode'; | 4 | import * as vscode from 'vscode'; |
5 | |||
5 | import { Server } from '../server'; | 6 | import { Server } from '../server'; |
6 | import { terminate } from '../utils/processes'; | 7 | import { terminate } from '../utils/processes'; |
7 | import { | 8 | import { |
8 | mapRustDiagnosticToVsCode, | 9 | mapRustDiagnosticToVsCode, |
9 | RustDiagnostic | 10 | RustDiagnostic |
10 | } from '../utils/rust_diagnostics'; | 11 | } from '../utils/rust_diagnostics'; |
12 | import { | ||
13 | areCodeActionsEqual, | ||
14 | areDiagnosticsEqual | ||
15 | } from '../utils/vscode_diagnostics'; | ||
11 | import { LineBuffer } from './line_buffer'; | 16 | import { LineBuffer } from './line_buffer'; |
12 | import { StatusDisplay } from './watch_status'; | 17 | import { StatusDisplay } from './watch_status'; |
13 | 18 | ||
@@ -184,67 +189,6 @@ export class CargoWatchProvider | |||
184 | this.statusDisplay.hide(); | 189 | this.statusDisplay.hide(); |
185 | } | 190 | } |
186 | 191 | ||
187 | function areDiagnosticsEqual( | ||
188 | left: vscode.Diagnostic, | ||
189 | right: vscode.Diagnostic | ||
190 | ): boolean { | ||
191 | return ( | ||
192 | left.source === right.source && | ||
193 | left.severity === right.severity && | ||
194 | left.range.isEqual(right.range) && | ||
195 | left.message === right.message | ||
196 | ); | ||
197 | } | ||
198 | |||
199 | function areCodeActionsEqual( | ||
200 | left: vscode.CodeAction, | ||
201 | right: vscode.CodeAction | ||
202 | ): boolean { | ||
203 | if ( | ||
204 | left.kind !== right.kind || | ||
205 | left.title !== right.title || | ||
206 | !left.edit || | ||
207 | !right.edit | ||
208 | ) { | ||
209 | return false; | ||
210 | } | ||
211 | |||
212 | const leftEditEntries = left.edit.entries(); | ||
213 | const rightEditEntries = right.edit.entries(); | ||
214 | |||
215 | if (leftEditEntries.length !== rightEditEntries.length) { | ||
216 | return false; | ||
217 | } | ||
218 | |||
219 | for (let i = 0; i < leftEditEntries.length; i++) { | ||
220 | const [leftUri, leftEdits] = leftEditEntries[i]; | ||
221 | const [rightUri, rightEdits] = rightEditEntries[i]; | ||
222 | |||
223 | if (leftUri.toString() !== rightUri.toString()) { | ||
224 | return false; | ||
225 | } | ||
226 | |||
227 | if (leftEdits.length !== rightEdits.length) { | ||
228 | return false; | ||
229 | } | ||
230 | |||
231 | for (let j = 0; j < leftEdits.length; j++) { | ||
232 | const leftEdit = leftEdits[j]; | ||
233 | const rightEdit = rightEdits[j]; | ||
234 | |||
235 | if (!leftEdit.range.isEqual(rightEdit.range)) { | ||
236 | return false; | ||
237 | } | ||
238 | |||
239 | if (leftEdit.newText !== rightEdit.newText) { | ||
240 | return false; | ||
241 | } | ||
242 | } | ||
243 | } | ||
244 | |||
245 | return true; | ||
246 | } | ||
247 | |||
248 | interface CargoArtifact { | 192 | interface CargoArtifact { |
249 | reason: string; | 193 | reason: string; |
250 | package_id: string; | 194 | package_id: string; |