gkroam.el v2.0 released, 欢迎试用!

由于2.0的版本与1.0比有较大的改动,之前的示例已经不适用了,所以重开一个帖子完整的介绍新的功能,以及demo展示,欢迎大家试用和反馈~

版本改动

  1. 调整了page文件名的格式。由原来的 <date>-<title>.org 的格式变成了 <date>.org,删掉了文件名中的title,代码的逻辑也不再依赖文件名来查找title。文件名仅仅作为 page 的 id。

  2. 调整了 page link 的格式。由原来的 org link: [[file:<date>.org][<title>]] 改为 brackets: {[<title>]}

所以,如果你使用的是之前版本的gk-roam,需要手动删掉文件名中的 title 以及 page 中原来的 org link,重新插入新格式的link。

新功能

  1. 增加 hashtag。hashtag作为标签的同时也会创建独立的page, 格式为 #{[<tag>]}

  2. 自动显示和隐藏brackets。当光标所在行有 brackets link 或 hashtag 时,显示原始的 link 格式。移出该行则恢复原来的形式。gkroam-toggle-brackets 函数可以开关当前buffer的所有brackets。基本完全按照 Rome Research 的显示逻辑来实现的。

  3. 增加 daily notes。gkroam-daily 函数可以快速切换到今天的 daily noets 页面。

  4. 引用page的几种方式:

    • 按键 {[]} 后在 brackets 里输入会自动补全。同理按键 # 后会自动补全hashtag。
    • gkroam-insert 函数,当前光标下插入一个page link。
    • gkroam-smart-new 函数,根据光标或region下的内容智能创建或引用page。

已知问题(已解决)

  • 由于改变了page link的格式,使用 gkroam-publish 发布为html时链接不能正常导出。

  • 动态显示和隐藏 brackets 使用的是 overlay。方法是给 next-line, previous-line, newline, mouse-drag-region等函数加了 advice, 使得在移动时给之前行加上overlay并删掉当前行的overlay。 这样可以实现动态的效果,但是并不优雅。水平有限,目前我还没有找到比较完美的方案。如果大佬们有更好的 idea,还望指点!

demo演示

brackets

8 个赞

试用了一下最新版,发现了个问题: 打开gk-roam-mode后,所有全部evil的dd按键变成了删除2行。刚刚才发现。

可能是advice-add的问题,刚刚改了一下,pull一下最新的代码试试呢?

更新 v2.0.2:

修复了在导出时 page link, hashtag 和 org link 的转换,现在 gkroam-publish-current-filegkroam-preview-current 可以正常发布和预览当前page了。但发布预览整个site时的链接问题还没解决。

搞定,evil下dd删两行的问题没有了。

运行gk-roam-preview-current出现: setq: Symbol’s value as variable is void: gk-roam-link-num 运行gk-roam-preview出现: Publishing file /home/zj/gk-roam/org/20200913181949.org using ‘org-html-publish-to-html’ 后就没反应了

忘了删掉这个变量了,刚刚改了,更新一下。

user-error: File “~/gk-roam/org/20200911171109.org” is not part of any known project

更新 v2.0.3:

发布整个site现在应该也没有问题了。使用 gkroam-preview 预览 roam site,默认打开index page。Index page 目前只是简单的罗列 page link,后面会完善。

最近的更新试一下。

刚更新的可以了

更新 v2.0.4

修复了若干bug,提高稳定性。发布预览和自动显示隐藏brackets都可以很好的使用。发布预览现在需要依赖 undo-tree.el(用于撤销发布前的修改,恢复bracket links的格式)。

坐等melpa

我之前的package都没有提交过melpa,流程是怎样的呢,有什么要注意的吗?

主要是要编译通过,文档无错,开一个PR,等待review。

1 个赞

更新 v2.1.0 : 更加强大的 linked references

之前的 linked references 只能引用同一行中有 link 或 hashtag 的文本。

  • 现在支持 org 所有的列表结构,当父结点中有链接时,在 reference 中会引用整个列表结构。

  • 当以换行符 \\ 结尾的段落有 link 或 hashtag 时,在 reference 中会引用整个段落。

  • 当 verse block 中有 link 或 hashtag 时,在 reference 中会引用整个 block。

linked-references

由于orgmode的结构非常复杂,不像roam那么单一,所以实现不同结构的链接文本引用也比较麻烦。如果有什么建议,欢迎留言!

1 个赞

gk-roam 这个名字感觉有点随意,gk有什么特殊意思吗?

哈哈,确实随意,gk是我的英文名 geekinney 的缩写。 :sweat_smile:

如果准备好好维护这个包,还是建议改一个名字, 最好是一个单词,而不是两个单词, 我个人感觉 gkroam 都比 gk-roam 强,当然这是个人意见,仅供参考 :slight_smile:

ok, 我会考虑的。