Skip to content

Commit 5710455

Browse files
committed
fix: fix inactive bugs
1 parent 6594ffb commit 5710455

File tree

4 files changed

+52
-172
lines changed

4 files changed

+52
-172
lines changed

src/decoration-manager.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default class DecorationManager {
3636
*/
3737
if (!isEdit) {
3838
if (this.fileDecorationMap.has(this.fileName)) {
39-
this.clearCurrentFileDecoration();
39+
this.clearFileDecoration(this.fileName);
4040
this.fileDecorationMap.set(this.fileName, new Map());
4141
}
4242
}
@@ -78,12 +78,12 @@ export default class DecorationManager {
7878
const lines = this.getLines(startLine, endLine);
7979

8080
if (diffLine < 0) {
81-
this.clearCurrentFileDecoration(lines);
81+
this.clearFileDecoration(this.fileName, lines);
8282
this.updateFileDecorationMap(diffLine, startLine);
8383
}
8484

8585
if (diffLine === 0) {
86-
this.clearCurrentFileDecoration([startLine]);
86+
this.clearFileDecoration(this.fileName, [startLine]);
8787
this.setDecorations([startLine]);
8888
}
8989

@@ -96,7 +96,7 @@ export default class DecorationManager {
9696
originalStartLine,
9797
originalEndLine
9898
);
99-
this.clearCurrentFileDecoration(originalLines);
99+
this.clearFileDecoration(this.fileName, originalLines);
100100
}
101101

102102
this.updateFileDecorationMap(diffLine, startLine);
@@ -138,8 +138,9 @@ export default class DecorationManager {
138138
this.fileDecorationMap.set(this.fileName, lineDecorationMap);
139139
}
140140

141-
clearCurrentFileDecoration(lines?: number[]) {
142-
const lineDecorationMapItem = this.fileDecorationMap.get(this.fileName);
141+
clearFileDecoration(fileName: string, lines?: number[]) {
142+
const lineDecorationMapItem = this.fileDecorationMap.get(fileName);
143+
143144
if (lineDecorationMapItem?.size) {
144145
if (lines) {
145146
lines.forEach((line) => {
@@ -238,4 +239,16 @@ export default class DecorationManager {
238239

239240
this.fileDecorationMap.set(this.fileName, newMap);
240241
}
242+
243+
clearAllFileDecorations() {
244+
console.log(11111);
245+
console.log(this);
246+
console.log(this.fileDecorationMap);
247+
if (this.fileDecorationMap?.size) {
248+
this.fileDecorationMap.forEach((value, key) => {
249+
console.log("key", key);
250+
this.clearFileDecoration(key);
251+
});
252+
}
253+
}
241254
}

src/decorator.ts

Lines changed: 0 additions & 151 deletions
This file was deleted.

src/extension.ts

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,31 @@
11
import getDesignToken from "antd-token-previewer/es/utils/getDesignToken";
22
import * as vscode from "vscode";
3-
import setupEventListener from "./listener";
3+
import setupEventListener, { DisposableAndClear } from "./listener";
44
import setupAntdTokenCompletion from "./typing";
55

66
export function activate(context: vscode.ExtensionContext) {
77
let isActive = true;
88
let disposeTyping: vscode.Disposable;
9+
let disposableAndClear: DisposableAndClear;
910

10-
const fullToken = getDesignToken();
11-
12-
if (!fullToken) {
13-
vscode.window.showErrorMessage("Failed to get antd fullToken.");
14-
return;
15-
}
16-
17-
disposeTyping = setupAntdTokenCompletion(fullToken);
18-
19-
setupEventListener(context, fullToken);
11+
setup();
2012

2113
const disposable = vscode.commands.registerCommand(
2214
"antd-design-token.toggle",
2315
() => {
2416
isActive = !isActive;
2517

2618
if (isActive) {
27-
disposeTyping = setupAntdTokenCompletion(fullToken);
19+
setup();
2820
vscode.window.showInformationMessage(
2921
"antd design token is active now."
3022
);
3123
} else {
3224
disposeTyping.dispose();
25+
disposableAndClear.disposable.forEach((disposable) =>
26+
disposable.dispose()
27+
);
28+
disposableAndClear.clear();
3329
vscode.window.showInformationMessage(
3430
"antd design token is inactive now."
3531
);
@@ -38,6 +34,18 @@ export function activate(context: vscode.ExtensionContext) {
3834
);
3935

4036
context.subscriptions.push(disposable);
37+
38+
function setup() {
39+
const fullToken = getDesignToken();
40+
41+
if (!fullToken) {
42+
vscode.window.showErrorMessage("Failed to get antd fullToken.");
43+
return;
44+
}
45+
46+
disposeTyping = setupAntdTokenCompletion(fullToken);
47+
disposableAndClear = setupEventListener(context, fullToken);
48+
}
4149
}
4250

4351
// this method is called when your extension is deactivated

src/listener.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import * as vscode from "vscode";
22
import DecorationManager from "./decoration-manager";
33

4+
export interface DisposableAndClear {
5+
disposable: vscode.Disposable[];
6+
clear: () => void;
7+
}
8+
49
export default function setupEventListener(
510
context: vscode.ExtensionContext,
611
fullToken: any
7-
) {
12+
): DisposableAndClear {
813
let diffLine: number = 0;
914
let fileLineCount: number = 0;
1015
let activeEditor = vscode.window.activeTextEditor;
@@ -16,7 +21,7 @@ export default function setupEventListener(
1621
decorationManager.triggerUpdateDecorations();
1722
}
1823

19-
vscode.workspace.onDidChangeTextDocument(
24+
const disposableTextChange = vscode.workspace.onDidChangeTextDocument(
2025
(event) => {
2126
if (event.contentChanges.length === 0) {
2227
return;
@@ -52,7 +57,7 @@ export default function setupEventListener(
5257
context.subscriptions
5358
);
5459

55-
vscode.window.onDidChangeActiveTextEditor(
60+
const disposableActiveChange = vscode.window.onDidChangeActiveTextEditor(
5661
(editor) => {
5762
activeEditor = editor;
5863
if (editor) {
@@ -125,4 +130,9 @@ export default function setupEventListener(
125130

126131
return [startLine, endLine];
127132
}
133+
134+
return {
135+
disposable: [disposableTextChange, disposableActiveChange],
136+
clear: () => decorationManager.clearAllFileDecorations(),
137+
};
128138
}

0 commit comments

Comments
 (0)