3.9 KiB
3.9 KiB
闪念
<%*
// 查找当前日期对应的文件
const file = tp.file.find_tfile(tp.date.now("YYYY-MM-DD"));
if (!file) {
// 如果没有找到对应的文件,弹出通知
new Notice("No Daily Note Found!");
return; // 早期返回,避免更深的嵌套
}
// 弹出提示框,获取用户输入的日记内容
const loggedItem = await tp.system.prompt("What's Up?");
if (loggedItem === undefined || loggedItem === null || loggedItem.trim().length === 0) {
// 如果输入为undefined、null、空串或仅包含空格,不执行任何操作,弹出通知
new Notice("Input is empty or invalid!");
return; // 早期返回,避免更深的嵌套
}
// 获取当前时间
const time = tp.date.now("HH:mm");
// 读取文件内容,并按行分割成数组
const content = (await app.vault.read(file)).split("\n");
// 找到“# 杂记”标题的位置
const index = content.indexOf("# 杂记");
// 检查“# 杂记”标题下一行是否为空行
if (content[index + 1].trim() === "") {
// 如果下一行是空行,就在空行下添加新内容
content.splice(index + 2, 0, `- ${time} - ${loggedItem}`);
} else {
// 如果下一行不是空行,就先添加一个空行,然后添加新内容
content.splice(index + 1, 0, "", `- ${time} - ${loggedItem}`);
}
// 将修改后的内容写回文件
await app.vault.modify(file, content.join("\n"));
-%>
问题记录模板
<%*
// 弹出提示框获取文件标题
const title = await tp.system.prompt("Enter file title");
// !!!!!!!!!!!!!!!!每个人自定义区域!!!!!!!!!!!!!!!!
// 定义待创建文件的目录
const inboxDirectory = "000-Inbox";
// 定义文档中会用到的特定标题,方便将来修改
const detailHeader = "# 问题详情";
// !!!!!!!!!!!!!!!!每个人自定义区域!!!!!!!!!!!!!!!!
// 检查用户输入的标题是否有效(非空且非纯空格)
if (!title || title.trim().length === 0) {
new Notice("Title is empty or invalid!");
return; // 如果标题为空或无效,则显示通知并停止执行
}
// 获取当前日期并格式化为 YYYY-MM-DD 用于文件属性
const currentDate = tp.date.now("YYYY-MM-DD");
// 获取当前时间并格式化为 HH:mm 用于文件属性
const currentTime = tp.date.now("HH:mm");
// 获取当前日期并格式化为 MMDD 用于文件名前缀
const datePrefix = tp.date.now("MMDD");
// 构造待写入新文件中的内容,使用 YAML front matter 和 Markdown 格式
const content = `---
日期: ${currentDate} ${currentTime}
来源:
---
# 问题详情
# 处理过程
# 总结
`;
// 根据日期前缀和用户输入的标题构造文件名
const myFilename = `${datePrefix}-${title}`;
// 尝试创建新文件并写入构造好的内容
try {
await tp.file.create_new(content, myFilename, false, app.vault.getAbstractFileByPath(inboxDirectory));
new Notice("File created successfully!"); // 如果成功,弹出通知
// 根据文件名和目录获取新创建的文件
const createdFile = app.vault.getAbstractFileByPath(`${inboxDirectory}/${myFilename}.md`);
// 获取新窗口叶节点
const leaf = app.workspace.getLeaf(true);
// 在新叶节点中打开新创建的文件
await leaf.openFile(createdFile);
// 等待新视图加载完成
await leaf.view.awaitingView;
// 获取编辑器实例
const editor = leaf.view.sourceMode.cmEditor;
// 寻找文件中的特定标题行
const line_number = editor.lastLine();
for(let i = 0; i <= line_number; i++) {
const line = editor.getLine(i);
if(line.includes(detailHeader)) { // 如果找到指定的标题行
// 将光标移动到该标题下一行的开始位置
editor.setCursor({line: i+2, ch: 0});
break;
}
}
} catch (e) { // 如果尝试创建或打开文件出现错误
new Notice("Failed to create or open file: " + e.message); // 弹出错误通知
}
-%>