Use VS Code mode
This commit is contained in:
@@ -16,10 +16,10 @@
|
|||||||
{ "command": "modelsim.toggleWaveMode", "title": "Toggle Wave Debug Mode" }
|
{ "command": "modelsim.toggleWaveMode", "title": "Toggle Wave Debug Mode" }
|
||||||
],
|
],
|
||||||
"keybindings": [
|
"keybindings": [
|
||||||
{ "command": "modelsim.addWaveUnderCursor", "key": "ctrl+w", "args": { "mode": "auto" } },
|
{ "command": "modelsim.addWaveUnderCursor", "key": "ctrl+w", "when": "modelsim.mode", "args": { "mode": "auto" } },
|
||||||
{ "command": "modelsim.addWaveUnderCursor", "key": "ctrl+e", "args": { "mode": "set" } },
|
{ "command": "modelsim.addWaveUnderCursor", "key": "ctrl+e", "when": "modelsim.mode", "args": { "mode": "set" } },
|
||||||
{ "command": "modelsim.toggleWaveMode", "key": "ctrl+alt+m" },
|
{ "command": "modelsim.toggleWaveMode", "key": "ctrl+alt+m" },
|
||||||
{ "command": "modelsim.zoomInWave", "key": "ctrl+alt+u" }
|
{ "command": "modelsim.zoomInWave", "key": "ctrl+alt+u", "when": "modelsim.mode" }
|
||||||
],
|
],
|
||||||
"viewsContainers": {
|
"viewsContainers": {
|
||||||
"panel": [
|
"panel": [
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ import { requestModuleTree, addWave } from './wave_editor';
|
|||||||
export const lastHoverByDoc = new Map<string, { pos: vscode.Position; at: number }>();
|
export const lastHoverByDoc = new Map<string, { pos: vscode.Position; at: number }>();
|
||||||
export const HOVER_FRESH_MS = 2000;
|
export const HOVER_FRESH_MS = 2000;
|
||||||
|
|
||||||
|
let statusItem: vscode.StatusBarItem;
|
||||||
|
const CTX = 'modelsim.mode';
|
||||||
|
export let waveMode = false;
|
||||||
|
|
||||||
// Hold MANY instance paths per module name, e.g. queue_slot -> ["/test/...[0]", "/test/...[1]", ...]
|
// Hold MANY instance paths per module name, e.g. queue_slot -> ["/test/...[0]", "/test/...[1]", ...]
|
||||||
|
|
||||||
const svSelectors: vscode.DocumentSelector = [
|
const svSelectors: vscode.DocumentSelector = [
|
||||||
@@ -17,20 +21,22 @@ const svSelectors: vscode.DocumentSelector = [
|
|||||||
{ language: 'verilog', scheme: 'file' }
|
{ language: 'verilog', scheme: 'file' }
|
||||||
];
|
];
|
||||||
|
|
||||||
export let waveMode = false;
|
|
||||||
let statusItem: vscode.StatusBarItem;
|
|
||||||
|
|
||||||
function toggleWaveMode() {
|
|
||||||
|
async function toggleWaveMode() {
|
||||||
waveMode = !waveMode;
|
waveMode = !waveMode;
|
||||||
statusItem.text = waveMode ? '🌊 Wave Debug Mode' : '✏️ Edit Mode';
|
statusItem.text = waveMode ? '🌊 Wave Debug Mode' : '✏️ Edit Mode';
|
||||||
|
await vscode.commands.executeCommand('setContext', CTX, waveMode);
|
||||||
statusItem.tooltip = waveMode
|
statusItem.tooltip = waveMode
|
||||||
? 'Wave Debug Mode — click to switch to Edit Mode'
|
? 'Wave Debug Mode — click to switch to Edit Mode'
|
||||||
: 'Edit Mode — click to switch to Wave Debug Mode';
|
: 'Edit Mode — click to switch to Wave Debug Mode';
|
||||||
}
|
}
|
||||||
|
|
||||||
export function activate(context: vscode.ExtensionContext) {
|
export async function activate(context: vscode.ExtensionContext) {
|
||||||
statusItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 1000);
|
statusItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 1000);
|
||||||
statusItem.command = 'modelsim.toggleWaveMode'; // click to toggle
|
// statusItem.command = 'modelsim.toggleWaveMode'; // click to toggle
|
||||||
|
|
||||||
|
await vscode.commands.executeCommand('setContext', CTX, false);
|
||||||
|
|
||||||
const cmd_2 = vscode.commands.registerCommand('modelsim.toggleWaveMode', async () => {
|
const cmd_2 = vscode.commands.registerCommand('modelsim.toggleWaveMode', async () => {
|
||||||
toggleWaveMode();
|
toggleWaveMode();
|
||||||
|
|||||||
@@ -43,7 +43,10 @@ export async function requestModuleTree(
|
|||||||
export async function addWave(
|
export async function addWave(
|
||||||
mode: String
|
mode: String
|
||||||
) {
|
) {
|
||||||
if (waveMode) {
|
if (!waveMode) {
|
||||||
|
await vscode.commands.executeCommand("workbench.action.closeActiveEditor");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const editor = vscode.window.activeTextEditor;
|
const editor = vscode.window.activeTextEditor;
|
||||||
if (!editor) return;
|
if (!editor) return;
|
||||||
@@ -150,10 +153,6 @@ export async function addWave(
|
|||||||
} else {
|
} else {
|
||||||
vscode.window.showWarningMessage('No response from ModelSim (timeout or error).');
|
vscode.window.showWarningMessage('No response from ModelSim (timeout or error).');
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
|
||||||
await vscode.commands.executeCommand("workbench.action.closeActiveEditor");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function looksLikeVariable(
|
async function looksLikeVariable(
|
||||||
|
|||||||
Reference in New Issue
Block a user