MobileOrg中其实有一个BUG,就是不能在手机端连续修改同一个entry两次,因为MobileOrg手机端会记录下每次修改手机端上的旧内容和新内容,并且在 org-mobile-pull
的时候对比记录的旧内容是否与电脑上当前的内容相同。
然而…MobileOrg手机端在未与电脑端(org-mobile-push后再同步)同步前是不会更改真正的内容的!
也就是说,假设对一个entry的内容更改过程是 A->B->C
,那么本来我们想象应该是记录成这样的:
* entry
** old
A
** new
B
* entry
** old
B
** new
C
但实际上记录的是
* entry
** old
A
** new
B
* entry
** old
A
** new
C
因此只能应用 A->B
的变更,而无法应用 B->C
的变更。
一个解决方案是修改 org-mobile-force-mobile-change
来强制应用新值,这对非 body
类的操作还是比较适合的
(setq org-mobile-force-mobile-change '(todo todostate tags priority heading addheading))
但是对于 body
类的修改来说是不太适合的,因为mobileorg的 clock-in
, clock-out
操作会修改 body
的内容,而这部分内容修改起来很麻烦
一个更完善的解决方案可能是自定义新的 org-mobile-edit
函数,然后设置到 org-mobile-action-alist
变量中. 在这个函数中,对于 body
类修改使用 (patch (diff old new)) 的方法可能更适合。