思源 0 篇文章

工具即工具,不神化也不贬低 —— 一个使用者的理性思考

最近看到一则关于工具体验的讨论,虽然不完全与原帖相关,但我想借这个机会,谈谈我对工具的一些看法和使用哲学。一、工具就是工具,关键在于人我一直认为:工具本身就是中立的,它就在那里,不增不减。你觉得一个工具“顺手”或“难用”,其实更多取决于你自己是否熟悉、是否懂得如何使用它。正如同样是 DeepSeek,有人觉得它惊艳,有人却觉得不过如此。原因不在工具,而在使用者。以 DeepSeek 为例,在它出现之前,我

实时获取光标位置优化思路

真正能在滚动时拿到光标“位置更新”同时又最轻量的做法,其实是不每次都去测 Selection→getClientRects()或插入 marker,而是直接把上一次的坐标做“增量”调整。核心思路:基于滚动偏移的增量更新缓存上一次的绝对坐标 letlastPos={x:/*上次 computedx*/,y:/*上次 computedy*/};letlastScroll=newMap();//key:scroll

实时获取光标位置

//创建全局唯一 markerconstglobalMarker=(()=>{constmarker=document.createElement('span');marker.textContent='\u200b';marker.style.cssText='position:absolute;visibility:hidden;pointer-events:none;';returnmarker

全屏菜单(Esc 退出全屏)

seehttps://ld246.com/article/1746079460404//全屏菜单(Esc 退出全屏)//seehttps://ld246.com/article/1746079460404(()=>{//判断是否全屏状态 if(localStorage.getItem('isFullscreen')==='true'){constcomfirmHtml=`<divdata-key="di

添加文档或块到指定数据库(支持绑定块和不绑定块)

seehttps://ld246.com/article/1746153210116//添加块到指定数据库(支持绑定块和不绑定块,支持文档块和普通块)//seehttps://ld246.com/article/1746153210116//注意:只能在块菜单中操作(你的右键可能不是块菜单)//version0.0.3//0.0.2(已废弃)//0.0.3 修改参数配置方式(()=>{//块菜单配置 c

js 代码片段自动更新协议 1.0

js 代码片段自动更新协议 1.0
鉴于代码片段无法检查更新,写了个自动检查更新的代码片段。只要用户安装了该代码片段,且开发者代码片段中遵循以下协议即可。协议内容要让你的代码片段能自动检查更新,需遵循以下协议:代码片段的注释中必须有 name,version,updateUrl 三个标记比如//name 代码名称//version 版本号//updateUrl 更新地址//updateDesc 更新描述或/***name 代码名称*version 版

不用插件:绑定思源事件总线(eventBus)

简洁版(不推荐,有风险)优点:代码简洁。缺点:要求用户至少安装一个插件。⚠️ 风险警告:当用户关闭第一个插件时,之前的绑定会失效。functioneventBusOn(eventName,callback){constplugin=window.siyuan.ws.app.plugins[0];if(!plugin){console.log('绑定事件'+eventName+'失败,请至少安装一个插件

读取关联数据表的数据并汇总

seehttps://ld246.com/article/1746316072165 需求:有两个数据表,A 为任务表,B 为工时记录表,A 中有一列为任务名称,B 关联 A 的任务名称。一个任务可能需要多次工作完成,每次工作都会在 B 中记录一次使用的工时。A 的任务表中有一列为总共花费的工时,会读取 B 中所有任务名相同的行,并将每行的工时汇总,写到 A 对应的总共花费的工时中。请问这样的模板列该怎么实现呢?我不知道如何从

文档整体往左缩进

/*通过给 ul 背景色添加固定宽度实现*//*背景线适配需配合下面的 js 代码实现*//*https://ld246.com/article/1724305128590#%E5%B7%A6%E4%BE%A7%E6%96%87%E6%A1%A3%E6%A0%91%E6%98%BE%E7%A4%BA%E5%B1%82%E7%BA%A7%E5%85%B3%E7%B3%BB%E8%83%8C%E6%99%AF%

通过数据库块 ID 获取数据库 ID

方法一、通过数据库里的 html 代码获取//通过块 id 获取数据库 idasyncfunctiongetAvIdByAvBlockId(blockId){constav=awaitgetAvBySql(`SELECT*FROMblockswheretype='av'andid='${blockId}'`);if(av.length===0)returnerror("未找到数据库文档块,请检查数据库文档块 i

代码片段自动更新 checkNewVersion

代码片段自动更新 checkNewVersion
鉴于代码片段无法检查更新,写了个自动更新的函数,只要在代码加载时调用 checkNewVersion();​即可。格式内容使用这个函数需遵循以下格式即可。代码片段的注释中必须有 name,version,updateUrl 三个标记比如//name 代码名称//version 版本号//updateUrl 更新地址//updateDesc 更新描述或/***name 代码名称*version 版本号*updateUr

快速打开自定义功能

//name 快速打开自定义功能//seehttps://ld246.com/article/1745488922117//version0.0.3.1//updateDesc0.0.3.1 增加 eruda 调试工具//updateDesc0.0.3 增加刷新页面,全屏,宽屏,断点调试,打开网页版等功能//updateDesc0.0.2 增加快捷键支持,把思源命令面板的命令移植过来//updateUrlhtt

js 检查自身更新

从当前脚本中提取 name​和 version​获取该脚本的远程地址(即 <scriptsrc="remote.js">​的地址)从远程地址获取远程版本号(假设远程 JS 文件开头也有注释定义)比较本地版本和远程版本如果远程版本更新,就提示用户是否需要更新 ✅ 总结:不需要下载新版本,只做提示。当前使用的脚本是本地引入的(例如:<scriptsrc="/local/your-script.js">​),但这个 js

通用监听元素变化 observeElement

//调用示例//observeElement('.tooltip.tooltip--memo:not(.fn__none)',({element,mutationsList,stop})=>{//console.log([element?.outerHTML,mutationsList,stop]);//});asyncfunctionobserveElement(selector,callback

添加文档或块到指定数据库(支持绑定块和不绑定块)

seehttps://ld246.com/article/1746153210116//添加块到指定数据库(支持绑定块和不绑定块,支持文档块和普通块)//seehttps://ld246.com/article/1746153210116//注意:只能在块菜单中操作(你的右键可能不是块菜单)//version0.0.3//0.0.2(已废弃)//0.0.3 修改参数配置方式(()=>{//块菜单配置 c

给页面临时设置宽屏

seehttps://ld246.com/article/1746079460404//给页面临时设置宽屏(暂不支持持久,即文档关闭或页面刷新后复原)//兼容编辑器宽度插件和思源自适应宽度,兼容标题宽度//seehttps://ld246.com/article/1746079460404//修改改自 https://ld246.com/article/1744597829665(()=>{//是否隐