wsug
1
如题,我现在是把org-mode当成一个浏览器页面来用了。
在所有浏览器的左上角都会有前进后退按钮,类似文本编辑器里面的undo,只不过撤销的是整个页面,而不是几个字符,但如果org文件的内容每次都是完全改变而不是只改变几个字符,这时的undo就不是几个字符了,是撤销整个buffer的内容,这时的undo和浏览器的后退按钮也就比较接近了
这时问题来了,org文件的内容是始终展开的,阅读过程中做了折叠,当undo后退回上一页面时内容再次全部展开,刚做的折叠的顺序状态没有了。
org-mode文件包含大量内容时内容被完全改变(或清空)这时按撤销回到上一页面,可不可以保持上一页面内容的展开和折叠顺序状态?
不知道org-mode能不能做到这点,如果不能的话我就改为不在频繁的改变org文件的内容
举例说明问题:把下面的文本复制到一个org文件中,将其折叠后在点击标题栏上的按钮,在undo回来,这时折叠的状态没有了
#+STARTUP:folded
* [[elisp:(erase-buffer)][点击清空当前org文件内容]]
先把这里内容折叠,在点击上面按钮,然后在undo撤销回到这里,能否保持折叠的状态?
wsug
3
搞定了,如图,现在把web后端返回的内容输出到了minibuffer,而不改变当前buffer
ipv6也用上了,现在的不足之处是web后端返回的中文内容输出在minibuffer都是乱码,只好先用英文
2 个赞
wsug
4
这个问题应该是有办法解决的
今天惊喜的发现用(hs-minor-mode)
来展开折叠代码时清空页面内容,在撤销回到上一页时。代码的展开折叠状态是保持的。
发现这个情况后我就在org-mode里启用了hs-minor-mode
,又以文学编程形式写了一段代码块测试,用hs-minor-mode折叠里面的代码,发现没有问题。不管我怎么(erase-buffer)
改变内容后undo,代码展开折叠状态是保持的,就是org-mode本身的展开折叠不行。
另外我看了vsc等编辑器,代码展开折叠的状态并不能在页面内容被清空的情况下保持,但是emacs
可以。
建议你重新组织一下你的提问。我感觉 2、3 楼可删掉。
去掉不必要的文字描述,不要把你当前做的、还没发布的东西卷进来,因为别人读了更混乱。
最好把问题放到阳春的环境下,这样每个人即容易看懂,又容易复现:
⋊> emacs -Q --eval "\
(progn
(switch-to-buffer \"*.org\")
(setq org-hide-emphasis-markers t)
(org-mode)
(insert \"Reproduce steps:
1. 折叠以下代码:
#+BEGIN_SRC c
int main(int argc, char *argv[])
{
return 0;
}
#+END_SRC
2. [[elisp:(erase-buffer)][点击清空当前 buffer 内容]]
3. Undo 回复删除内容\"))"
wsug
6
感谢提供问题复现代码,原先的2楼确实多余,删除,原3楼也属于这个问题的实际应用场景,先留着