VScode 状态条 StatusBar

这篇博客介绍了如何在Visual Studio Code(VSCode)中创建和管理状态栏项。作者展示了如何设置状态栏的位置、优先级、命令、文本和提示,并提供了实时更新状态栏以显示选定行数的函数。当用户选择文本时,状态栏会显示选择的行数,点击则显示信息消息。此外,还详细说明了如何监听编辑器活动和选择变化以保持状态栏的同步更新。
摘要由CSDN通过智能技术生成

创建statusBar

	//	创建状态条,第一个参数为位置,第二个参数为优先级
	myStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
	//	为状态条注册命令
	myStatusBarItem.command = myCommandId;
	//	状态条文本显示
	myStatusBarItem.text="Nothing is selected!";
	//	当鼠标放在上面的时候显示的内容
	myStatusBarItem.tooltip="statusBar test!";
	//	添加进去
	subscriptions.push(myStatusBarItem);

为statusBar创建命令

//	命令名称
	const myCommandId = 'sample.showSelectionCount';
	//	注册命令
	subscriptions.push(vscode.commands.registerCommand(myCommandId, () => {
		//	从编辑器获取他所选择的行数
		const n = getNumberOfSelectedLines(vscode.window.activeTextEditor);
		//	当点击statusBar时执行的反馈操作:返回选择了多少行
		vscode.window.showInformationMessage(`Yeah, ${n} line(s) selected... Keep going!`);
	}));

相关的功能函数

//	实时更新函数
function updateStatusBarItem(): void {
	const n = getNumberOfSelectedLines(vscode.window.activeTextEditor);
	if (n > 0) {
		myStatusBarItem.text = `$(megaphone) ${n} line(s) selected`;
		//	当有所选择时显示状态条
		myStatusBarItem.show();
	} else {
		//	当未选择时隐藏状态条
		myStatusBarItem.hide();
	}
}

//	获取选择条数函数
function getNumberOfSelectedLines(editor: vscode.TextEditor | undefined): number {
	let lines = 0;
	if (editor) {
		lines = editor.selections.reduce((prev: number, curr: { end: { line: number; }; start: { line: number; }; }) => prev + (curr.end.line - curr.start.line), 0);
	}
	return lines;
}

在activate函数里运行实时更新函数

export function activate({ subscriptions }: vscode.ExtensionContext) {

	//	命令名称
	const myCommandId = 'sample.showSelectionCount';
	//	注册命令
	subscriptions.push(vscode.commands.registerCommand(myCommandId, () => {
		//	从编辑器获取他所选择的行数
		const n = getNumberOfSelectedLines(vscode.window.activeTextEditor);
		//	当点击statusBar时执行的反馈操作:返回选择了多少行
		vscode.window.showInformationMessage(`Yeah, ${n} line(s) selected... Keep going!`);
	}));

	//	创建状态条,第一个参数为位置,第二个参数为优先级
	myStatusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
	//	为状态条注册命令
	myStatusBarItem.command = myCommandId;
	//	状态条文本显示
	myStatusBarItem.text="Nothing is selected!";
	//	当鼠标放在上面的时候显示的内容
	myStatusBarItem.tooltip="statusBar test!";
	//	添加进去
	subscriptions.push(myStatusBarItem);

	// register some listener that make sure the status bar 
	// item always up-to-date
	subscriptions.push(vscode.window.onDidChangeActiveTextEditor(updateStatusBarItem));
	subscriptions.push(vscode.window.onDidChangeTextEditorSelection(updateStatusBarItem));

	// update status bar item once at start
	updateStatusBarItem();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值