orgmode是否可以设置打开文件的时候默认折叠到哪一级标题?

比如只显示一级和二级标题, 其他内容都折叠

1 个赞

试试:

(add-hook (quote org-mode-hook)
          (lambda ()
            (org-shifttab 2)))

这个方法是可以, 不过我是想每个文件单独控制, 因为不同的org文件内容差异很大, 没法统一.

本来用的是这个:

#+startup: content

这个好像没法控制级别.

(org-show-children N) 可以指定展开到第几级。参考 (org-content) 实现一个 #+STARTUP: level-2,然后给 org-mode 提补丁,造福大家。

2 个赞

其实可以用file local variable

是个好主意。如果content换成content:N(N为一个数字), 这样会跟现有的冲突吗?

另外这个一直不知道content有目录的意思。

好主意,欢迎大家提交patch。

再试试:

  1. 全局添加钩子

    (add-hook (quote hack-local-variables-hook)
              (lambda ()
                (let ((symbol (quote goer-org-startup-folded)))
                  (when (and (eq major-mode (quote org-mode))
                             (boundp symbol))
                    (let ((value (symbol-value symbol)))
                      (when (and value (integerp value))
                        (org-shifttab value)))))))
    
  2. 添加特定变量到某个文件的开头(这是"cireu"的想法)

    # -*- goer-org-startup-folded: 2; -*-
    
  3. 再次打开该文件

2 个赞

我的比较简单

在文档末加上

# Local Variables:
# eval: (org-content 4)
# End:

第一次打开的时候Emacs会问你是否执行代码,按!让Emacs默认执行就好了

2 个赞

相当hack, 是个办法

这个感觉有安全风险, 比如打开一个下载的org文件, 里面eval部分是个删除文件的命令…

这倒不会,emacs会精确记录每个变量是否安全,比如我的custom.el里被写入了

'(safe-local-variable-values (quote ((eval org-content 4))))

哪怕我改了数字,Emacs就要重新问我了。

1 个赞

那可以, 补充字数

这些办法只在首次打开org文件时可行,如果org文件是emacs启动时就打开的,内容通过点击链接的形式加载,如 [elisp:(progn (erase-buffer)(url-insert-file-contents "http://[::1]/org.php?from=home")][首 页]],就不会折叠到某一深度,目前我想到的办法是 save-buffer之后在revert-buffer刷新一次页面

这个好像是新版本才支持的, 我用emacs 26自带的试了一下没有效果. 你的orgmode是哪个版本?

我是 9.5,应该是在 9.4.x 加入的