之前我们搞了一下能够快速输入文字片段和快速设置样式的小玩意
现在给它弄点别的小功能,先从设置文档属性开始吧嘿嘿嘿
下面是菜单的主体部分, 可以看到基本上跟之前弄设置样式属性的没什么两样(有些人可能已经想到这个能够再抽象一层,然后再有多的一起框框 A 了,但是先不说这个)
import { 注册表 } from "siyuan-noob/commonStruct"; import 核心api from "siyuan-noob/utilKernel/kernelApi"; let 关键词注册表 = new 注册表("自定义关键词菜单"); let 当前菜单状态; let 当前属性对象; 关键词注册表.注册({ id: "快捷块属性", 行内关键词判断函数: (菜单状态) => { 当前菜单状态 = 菜单状态; if ( 菜单状态.当前节点 && (菜单状态.当前节点.wholeText || 菜单状态.当前节点.textContent).indexOf( "@doc" ) > -1 ) { let wholeText = 菜单状态.当前节点.wholeText; try { 当前属性对象 = new Function( `"use strict";return (${wholeText.split("@doc").pop()})` )(); return true; } catch (e) { return false; } } }, 文字: "设置文档属性", 图标: "#iconFile", 点击回调函数: () => { let element = 当前菜单状态.当前节点.parentElement; 设置文档属性(当前菜单状态); 当前菜单状态.当前节点.parentElement.innerText=当前菜单状态.当前节点.wholeText.slice( 0, 当前菜单状态.当前节点.wholeText.lastIndexOf("@doc") ); element.insertAdjacentHTML("beforeend", "<wbr>"); element.innerHTML=element.innerHTML var range = document.createRange(); let wbr = element.querySelector("wbr"); range.selectNodeContents(wbr); range.collapse(false); const selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); wbr.remove(); window.siyuan.menus.menu.remove(); }, });
然后我们来弄一下那个设置文档属性
function 设置文档属性(菜单状态) { let 当前块id = 菜单状态.当前块id; 核心api.sql( { stmt: `select * from blocks where id='${当前块id}'`, }, "", (data) => { 核心api.setBlockAttrs({ id: data[0].root_id, attrs: 当前属性对象, }); } ); }
这样之后就可以用 @doc{name:'想要设置的文档名称'}
的形式来设置文档的属性了.
安装方式
这还是一个可运行代码片段,可以使用这个代码片段来进行安装
思源笔记折腾记录 - 运行你的笔记 - 链滴 (ld246.com)
但是这个东西还要依赖另一个笔记,所以这个也要安装(啊,说安装笔记总感觉怪怪的)
思源笔记折腾记录 - 快速输入 - 链滴 (ld246.com)
直接剪藏这篇笔记之后,用运行到代码片段功能安装到代码片段就可以了。
如果这玩意对你有用可以去爱发电给我买杯咖啡
leolee9086 正在创作一些简单的技术教程和小工具,以及设计方面内容 | 爱发电 (afdian.net)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于