Skip to content
MiTu

MiTu

A Web developer who loves to Reading and photography

状态栏

创建状态栏

使用createStatusBarItem创建一个状态栏. 支持对齐的方式为左对齐,优先级的设置为100。

ts
let myStatusBarItem: vscode.StatusBarItem;
myStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 100);
subscriptions.push(myStatusBarItem);

上面状态栏创建好了,但是状态栏的具体显示信息是什么呢?

如果想点击触发命令 myStatusBarItem.command = myCommandId;

状态栏的内容显示

ts
//增加两个事件处理: 编辑器激活和编辑器文本选中
context.subscriptions.push(vscode.window.onDidChangeActiveTextEditor(updateStatusBarItem));
context.subscriptions.push(vscode.window.onDidChangeTextEditorSelection(updateStatusBarItem));
updateStatusBarItem();

显示的功能

计算选中的总行数,在底部左侧展示,如果没有选中不掩藏状态栏

ts
function updateStatusBarItem(): void {
	const n = getNumberOfSelectedLines(vscode.window.activeTextEditor);
	if (n > 0) {
		myStatusBarItem.text = `yu->$(megaphone) ${n} 行选中`;
		myStatusBarItem.show();
	} else {
		myStatusBarItem.hide();
	}
}
function getNumberOfSelectedLines(editor: vscode.TextEditor | undefined): number {
	let lines = 0;
	if (editor) {
		console.log(editor,'editor');
		console.log(editor.selections,'edieditor.selectionstor');
		lines = editor.selections.reduce((prev, curr) => prev + (curr.end.line - curr.start.line), 0);
	}
	return lines;
}