-
[js] 代码片段实现代码块最近使用的语言置顶
2024-08-09 21:15感谢反馈!
已经修复了这个问题,就像你上面说的,有时是
hljs
,所以我加了兼容性代码。刚才下载了最新版,用新空间测试,确实会有这个问题,但老空间却是 code-block,不清楚什么原因。
-
[js] 代码片段实现代码块最近使用的语言置顶
2024-08-09 20:53理论上代码片段的性能应该不如插件(因为插件“编译”过)
你说的很对,确实会好那么一点点,不过这里的编译不是真正意义上的编译成二进制,js 本身是解释性语言,插件无非进行了压缩,可能在加载速度上快了点。另外,代码片段是字符串,先要把字符串解析为 js 代码再执行,而插件不用这一过程。
不过,这些在代码量很小时可以忽略不计,只有在逻辑复杂,代码量大的时候才比较明显。
-
[js] 代码片段实现代码块最近使用的语言置顶
2024-08-09 20:46抱歉,我 Mac 系统,思源 3.1.2, 3.1.3,都尝试了,无法重现你的问题。
具体原因可能需要你自己根据自己的环境进行调试。
defaultCodeLang
是通过window.siyuan.storage["local-codelang"] = defaultCodeLang
实现的,你每次输入代码块前,先检查这个是否设置成功,或者手动设置试试。如果不是这个原因,再检查
mutation
监控中,为什么没检测到code-block
元素的变化?如果能解决这两个问题,这个问题应该就解决了。 -
求个大佬支持个 JS 片段 使得被钉住的文档无法被关闭
2024-08-09 20:07已修复了,用新代码替换原来的代码片段即可。
注意:替换前别忘了备份你之前的样式,然后把样式应用到新的代码片段上即可。
-
[js] 代码片段实现代码块最近使用的语言置顶
2024-08-09 12:16感谢 F 佬的指点!
感谢 @zxkmm 的建议!
也不是非不装 node 环境,大项目或者偶尔还行,有时小插件的话,感觉有点杀鸡用牛刀了。
确实你提供的 API 非常棒,涵盖了思源的 api 还有扩充。
不过非插件自用还好,分享的话,对不了解的人使用费事。
关于热加载根据 F 佬的指导,我有一点思路,也参考 obsidian 的插件。主要原理还是监控文件变化,然后把项目和插件关联起来,如果文件有变动,进入思源时就自动关闭和开启下插件,这样基本能满足绝大多数的热加载需要。
@zxkmm ob 的热加载也是这个原理。
只是限于水平,时间和精力,完善的热加载插件估计还得考虑诸多因素,不过偶尔开发,写段代码模拟下估计还是可以的。😄
-
求个大佬支持个 JS 片段 使得被钉住的文档无法被关闭
2024-08-09 11:51- ctrl + w 一直按可以清空所有文档并保留钉住的文档
我已经实现了这个功能。
原理:
由于思源 ctrl+w 只会关闭激活标签,那么把钉住标签的 item-foucs 改成 item-pin-foucs 就行了。
但由于思源中没有 item-pin-foucs 样式,需要自己根据 item-foucs 的样式添加一个即可。
然后再利用监听实时监控标签切换,动态调整 item-foucs 样式为 item-pin-foucs 就行了。
效果如下:
代码如下(放到 js 代码片段中即可,因链滴字数限制,代码只能放 jsrun 了):
使用说明:
把代码顶部的
注入样式
这里的样式根据自身情况改成自己主题下的样式即可(原因参考上面的原理说明)。怎么改呢?
先打开一个正常的非钉住的标签,然后打开思源开发者工具(思源主菜单,倒数第二个)
然后用开发者工具的定位工具,定位到刚才的标签上
然后把 3 下面那段复制过去,把 item-focus 改为 item--pin--focus 即可,详情可参考源码示例
- 鼠标能快速定位到对应钉住的文档
有两种方式
1 是思源自带的功能,当焦点在其他标签上时,按 ctrl+1 切换到第 1 个钉住标签上,ctrl+2 切换到第 2 个钉住标签上
2 在上面的代码中,把
const isMovePinTabToTopInRecentlyDialog = true;
设为 true,然后 ctrl+e 打开最近的文档,然后钉住的文档会自动置顶,方便快速切换,如图 -
[js] 代码片段实现代码块最近使用的语言置顶
2024-08-08 20:19感谢建议,插件开发我也在学习中,还有实在不想安装动辄几百兆的 node 库,我想找寻一套原生 js 开发插件的方法,这样可以做到轻量级开发,目前,原生情况下,主要热加载较麻烦。
不知社区是否已有原生下的热加载方案?类似 obsidian 的热加载插件。
-
[js] 代码片段实现代码块最近使用的语言置顶
2024-08-08 20:00@EmberSky @JeffreyChen 已经完美修复了。
主要修改了
addLanguage
函数,修改内容如下// 传入的language参数仅供参考,真正获取最后一次使用的语言得从思源存储中或数据库查询中获取, // 这样可以防止块元素被意外触发,添加非最后一次使用的语言,导致混乱 // 这样无论哪个代码块被触发都以getLastLang为准 language = getLastLang();
这里默认并没有采用从数据库读取最后一次使用的数据(代码留在那里仅供备用),我发现这个数据思源已经存储了,干脆用思源存储的。
为了达到一致的体验,第一次运行时,默认会把上次使用的语言置顶。
新增了支持自定义语言,即使列表中不存在的语言也支持。
-
[js] 代码片段实现代码块最近使用的语言置顶
2024-08-08 12:28哈哈哈,怎么说呢,前期也做了一些调研,昨天还研究了一些细节,做一些简单测试。有时候难点在于未知的,比如,为了实现这个默认语言,追着代码跟踪了很久才找到踪迹,不过对于熟悉思源的大佬来说,这些都是小儿科了。
-
代码块功能优化建议
2024-08-08 12:04 -
Marginnote4 和思源能联动吗
2024-08-07 22:12理解了,我一般习惯于以笔记为主,边阅读边记录,点评和记录疑问点到笔记,然后搜集资料,整理总结。
不过,如果你习惯于看时在 mn 整理的话,确实有插件更方便,如果思源不可以,也可以试试 ob 或获取其他软件联动或者用 AppleScript,先自动写入到 Markdown 文件中,然后再导入到思源,虽然麻烦了点,但也是没办法的事。
-
如何修改工作空间存储路径
2024-08-07 21:57你标题和内容说的是两个事情。
修改工作空间路径,是指把空间移动到别的目录,然后重新用思源打开。
新建工作空间,然后把数据(比如 data 文件夹)拷贝过去,这是新建工作空间。
所有的数据都在 data 里,新空间复制这个文件足矣,只是没有历史数据,如果想有历史把 history 目录也拷贝过去。
推荐看看这两篇文章
-
Marginnote4 和思源能联动吗
2024-08-07 21:50不太理解你的痛点。
我的理解,如果复制 URL 用快捷键复制到思源等第三方软件和通过插件复制也差不多吧。如果复制内容道理也是一样。无非插件一步完成,这需要两步。
我习惯用小窗口与其他软件互动,感觉也挺方便的。当然如果有插件或自己开发能做到完美更好,如果不能,退而求其次不也是挺好的嘛。
或许是我对联动的理解有误吧。
-
Marginnote4 和思源能联动吗
2024-08-07 21:12这要看你怎么联动了,如果仅仅简单链接相互跳转还是可以的,参考 https://www.wolai.com/cVX6v1GCUHVW7P4jgWw55A
如果简单的从一个软件复制到另一个软件,思源是支持悬浮窗口置顶的,这要其实有能方便的互相复制,我看某些插件实现点击复制,其实和复制粘贴也差不了多少。
如果其他更复杂的联动,估计要自己开发了,而且得熟悉双方的 api 或者借助某些自动化脚本。
-
代码块功能优化建议
2024-08-07 14:15这不是能识别吗?这个文件是新建的无标题文档,未保存,更没有扩展名,这说明 vscode 不仅仅是通过后缀识别的。
我觉得,vscode 可能是基于规则的识别,当然,后缀识别应该是最优先的。如果没有后缀的情况下,不是定义了每种语言基于什么规则,如何高亮显示吗,它可能会选择一种匹配度最高的匹配。所以没扩展名的情况下,有些相似的语言,它也会识别错误。
那么,Markdown 的规则里肯定没有涉及到具体语言的规则,最多是代码块的规则,所以无法识别具体语言,但如果设置了代码块的语言它就能高亮了。
注意:以上说法只是个人猜测,没有任何依据。
-
代码块功能优化建议
2024-08-07 09:51不不不,和收藏夹不一样,收藏夹至少是你喜欢的,有强烈愿望的。
issue 更像是妈妈的话或朋友的建议,虽然知道都是为你好,但你听过几个?
更像是石沉大海,不知何时能见天日。😄
哈哈哈,所以,求人不如求己,我解决了这个代码选择的 bug
css 片段中,添加以下 css 样式即可
/* 取消行号列占用的空间 */ .code-block .protyle-linenumber__rows { position: absolute; left: 0; } /* 当有行号时,代码块右移,给行号列让空间 */ .code-block .hljs.protyle-linenumber { margin-left: 3.6em; }
效果
-
思源笔记如何调整文字间距?
2024-08-07 08:06.protyle-wysiwyg [data-node-id] [spellcheck] { letter-spacing: 4px; /* 大小根据自己情况调整 */ }
效果
-
代码块功能优化建议
2024-08-06 21:40- 最近语言,可以写个插件或代码片段在每次选择了后存储起来,然后加载时按之前存储的顺序优先排序
- 代码选择,可能是主题或样式问题,我用官方默认主题和 Asri 没这个问题,Odyssey 有类似问题但又不完全一样。
-
通过模板对 block 命名异常
2024-08-06 17:02模板里面的属性最好加双引号。
比如这样就是正确的
{: name=".action{ "2023-04-04" }" }
name 属性两边加双引号。 -
如何用思源做九宫格日记,各位老哥有啥好的方案吗?
2024-08-06 10:59