一键切换 文件列表 和 quiet大纲的js脚本
module.exports = {
entry: async (params) => {
const { app } = params;
// 这是一个更可靠的函数,用于激活或创建视图
async function revealOrCreateLeaf(viewType, commandId) {
// 1. 先尝试在左侧边栏寻找指定类型的视图
const targetLeaf = app.workspace.getLeavesOfType(viewType)
.find(leaf => leaf.getRoot() === app.workspace.leftSplit);
// 2. 如果找到了,就直接激活它(最可靠)
if (targetLeaf) {
app.workspace.revealLeaf(targetLeaf);
} else {
// 3. 如果没找到,再使用命令来创建它
await app.commands.executeCommandById(commandId);
}
}
// --- 主逻辑 ---
// 使用 data-type="file-explorer" 来判断文件列表 (这个是正确的)
const isFileExplorerActive = !!document.querySelector(
'.mod-left-split .workspace-tab-header.is-active[data-type="file-explorer"]'
);
// 使用从 main.js 确认的正确 ID "quiet-outline" 来判断大纲
const isOutlineActive = !!document.querySelector(
'.mod-left-split .workspace-tab-header.is-active[data-type="quiet-outline"]'
);
// 确保左侧边栏是展开的
app.workspace.leftSplit.expand();
// 根据当前状态,执行切换
if (isFileExplorerActive) {
// 如果当前是文件列表 -> 切换到 Quiet Outline
// 使用正确的 viewType 'quiet-outline'
await revealOrCreateLeaf('quiet-outline', 'quiet-outline:quiet-outline');
} else if (isOutlineActive) {
// 如果当前是 Quiet Outline -> 切换回文件列表
await revealOrCreateLeaf('file-explorer', 'file-explorer:open');
} else {
// 如果两者都不是 (例如当前是“搜索”视图),默认切换到文件列表
new Notice("当前视图非文件列表或大纲,已切换到文件列表。");
await revealOrCreateLeaf('file-explorer', 'file-explorer:open');
}
}
}