以org-mode为前端的内容管理系统,像使用网页应用一样使用org-mode

和我 另一个贴子 一样,这还是个还不完善的设想,发出来避免闭门造车,也许已经有类似的东西了呢。

像使用网页应用一样使用org-mode,我原来以为是无法做到的,转而开始想在浏览器中使用org-mode,寻找各种在浏览器中与org-mode有一点点关联的东西,但感觉都不好用。emacs里的org-mode仍然是独一无二的,其它地方移过去的都找不到感觉。还是只有在emacs里面org-mode才好用。

随着不断折腾emacs,发现像使用网页应用一样使用org-mode似乎也不是不可能,把我在浏览器里面做的部分事情拿到org-mode里来做,关掉了我常用(随时开着)的几个浏览器窗口,将org-mode当作一个web内容管理系统的前端来用,这样做emacs还头一回让我有了那么一点神之编辑器的感觉(多数时候用emacs感觉都是要抓狂)。

先看效果图吧,首页:

图片

文章列表页:

图片

文章内容页 :

搜索页:

图片

新建文章页:

图片

注:所有的操作都是在一个org文件里面实现的,这个org文件可以放在任何地方。在任意目录下开N个这样的org文件。

是怎么实现的?可以在只对配置文件只做较少改动的情况下实现,主要就是在org文件里面运行这两个elisp函数:(erase-buffer)(url-insert-file-contents "")

具体实现这个等我有更多时间的时候或做得更完善了一些的时候在来写吧,这个贴子还没写完呢!!!

这里感谢 @cireu 在我另一贴子的回复 在org-mode中运行elisp代码如何避免弹出窗口

13 个赞

这是搜索结果页面,搜索结果的最后,用org中插入代码块的方式把后端执行搜索的sql语句列出来,便于调试

1 个赞

把页面头部的几个保留字段除id外都改成了中文的,当然后端还是英文,只是让其看起来更像是个应用

2 个赞

有意思,这种动态改变buffer显示内容的方法,也可以参考 ewoc

其实,eww或w3m 结合 shrface 也可以实现相同的效果。

日本人之前做了个 howm-mode 跟你所做的事情很像,你可以看看。 这个 Mode 没有 Org-mode 那么出名,但也相当的强大了:https://howm.osdn.jp/

2 个赞

eww w3m好像都不能实现文本折叠展开,textarea标签显示也有问题,不能方便的编辑文本内容,如果用eww w3m感觉不如直接用浏览器更方便,org-mode比在浏览器好的就是在内容的编辑上。

我目前的实现方式是不太好(勉强能用):

1,php读取数据库数据,生成org文件;

2,php生成elisp代码,以链接形式嵌入org文件里面;

3,编辑org文件;

4,在org-mode里运行的elisp做的事情是:把org文件的内容发给php,得到php执行结果(org文本的形式),清空当前buffer,插入执行结果(相当于浏览器里渲染dom?);

5,再次编辑org文件,继续第3、4步的操作,一直循环下去;

最新版的shrface也在做这个事情,参考

基本思路是,点击org的url,然后自动抓取html,用shr转成org。

得益于org的强大inline image,现在已经可以完美显示网络图片了,比得上eww了。

但是编辑和提交form是shrface以外的事情了。

把首页做成了用org表格的形式来展现(用org怎么久了,org的表格功能还几乎没用过 :joy:

图片

在点击首页按钮执行的elisp最后加了一个(org-cycle)将内容展现为表格,然后就感到页面加载有明显卡顿(windows),但表格也才30多行,测试去掉 valign(表格中英文对齐)就不卡了,但表格对齐没有也不行

一个诡异的问题,我看org文档和其它人在org中使用表格,分隔表头和表内容中间分隔符显示都是这样的|---+---|,但我这里用就像我上一楼的截图一样,是|——|——|这样分割表头和表内容,我前几天还以为是org-mode更新了但是文档没有更新又或是windows独有的问题,但今天却自动变成了|---+---|,还好上一贴有截图,因为现在我似乎不能复现|——|——|这个情况

有人也遇到过这种情况吗?

1 个赞

这个是valign作用的效果。

原来如此,不过valign在我这有点卡,去掉后表格加载快好多,表格对不齐的问题先忍一忍

不一定非得用表格,能够保证列对齐就行。可以参考一下 gkroam-index 的实现,借用了 valine 实现对齐的核心代码

3 个赞

我研究下,列对齐这个感觉作为文章列表页不错,但首页感觉还是要表格,首页我准备去掉最后更新,排成一行三个类别只显示笔记分类和数量,这样在有一百多个分类情况下,也可以在一屏全部显示完

org文件中的链接设置 (setq org-return-follows-link t)后可以回车直接打开,执行(org-return),不在需要鼠标点击或c-c c-o,光标处于非链接上时则是正常换行。

用回车键来打开链接显然是更好的,html里的链接也通常都可以用回车打开

但这个对于org表格里面的org链接没有效果,在org表格里的链接上按回车,就到表格下一行或新建行了,链接不会在当前org文件打开,请教坛友们,有没有什么办法可以解决?

1

org-return 会根据光标所在位置的内容决定调用什么命令,在表格中则调用了 org-table-next-row(insert "\n") 命令,所以会跳到下一行或新建一行。

最直接的办法是写一个 advice 函数,找到 org-return 有关表格部分的代码,加一个判断:如果当前光标下是合法的链接,则直接调用 org-open-at-point 命令打开链接,否则保持原来的行为。

把这两大段的位置换一下,((and org-return-follows-link 放在 ((or (and (eq 'table (org-element-type context))的前面,可以解决这个问题,但这样直接改了org.el文件。

如果想不改org.el文件,是不是就要写一个 advice 函数,找到 org-return 有关表格部分的代码,加一个判断, 这个advice函数不知道怎么写,这个写起来复杂吗

过了那么久,这个问题终于解决了,办法是用 自定义链接快键键, 如果这个设置 (setq org-return-follows-link t)能生效当然更好,再次感谢 @owensys 的提醒

(org-link-set-parameters
 "elisp"
 :keymap (let ((map (copy-keymap org-mouse-map)))
           (define-key map (kbd "<return>") 'org-open-at-point)
           map))

我是在org-wiki中发现可以自定义org中的link的,可以这个项目好像没有维护更新了。

对sql语句加入了排序方式判断if(isset($_GET["order"])){ },文章列表页默认按时间排序,可以切换成按标题排序

图片

我终于在手机上以web的方式使用org-mode了(android termux),手机端emacs配置文件太难写了,但仅就org-mode的效果而言,体验感觉不错。

从上图可以看到中英文字体等宽对齐,但我手机上的emacs没有装任何插件,也没有做这方面的配置。

1 个赞