请问如何快速切换Checkbox的状态?

image

目前假设存在这三种checkbox,其中第三种应该不是原生的。我现在希望达到这样的效果,就是原始的空白checkbox,按一次会变成第3种的时钟样式,再按一次会变成原来的完成样式

时钟样式内部的符号是’/’

  • [/]

可以考虑直接用 Tasks 插件 obsidian-tasks-group/obsidian-tasks: Task management for the Obsidian knowledge base.

除增加一系列新的任务状态, 甚至还能给生成个状态转换图表, 让用户检查自己设的对不对


如果是要求 Ob 原生解决, 似乎有点复杂,
我想到的大致是找到当前行, 判断是否为任务行, 自己写逻辑把状态给切过去

let sourceFile = app.workspace.getActiveFile();
let editor = app.workspace.getActiveFileView().editor;

let cursor = editor.getCursor();
console.log("Current cursor: ", cursor);
// debugger;
let taskLine = editor.getLine(cursor.line);
console.log("Current line: ", taskLine);

if (taskLine.trim().startsWith("- [ ]") || 
    taskLine.trim().startsWith("- [x]") || 
    taskLine.trim().startsWith("- [/]") ) {
    fix_task_line(taskLine, sourceFile);  // 实现状态切换 editor.setLine(cursor.line, taskLineFixed);
} else {
    new Notice('当前行不是任务行, 请检查');
}

但是目前我还不会怎么 “把这处理函数绑定到鼠标单击 task item 勾选框事件” 上

1 个赞

好的,我试试Tasks,谢谢