使用org-mode折叠/展开.emacs文件的各个部分

ldi*_*cil 8 emacs elisp org-mode

我最近学习了emacs'org模式的基础知识,并且无法想象将崩溃/扩展概念应用于源文件的某些部分.我希望能够在子部分中划分我的.emacs文件,并且只在加载时显示标题,如下所示:

; ERC config...

; DIRED config...

; MISC config...
Run Code Online (Sandbox Code Playgroud)

这些中的每一个当然都是扩展后的多行代码的标题,如下所示:

; ERC config
(defun start-irc ()
  (interactive)
  (erc-tls :server "irc.freenode.net" :port 6697 :nick "foo"))

; DIRED config...

; MISC config...
Run Code Online (Sandbox Code Playgroud)

这可能吗?我怎么能用emacs 24.2完成这样的事情?

谢谢!

Tre*_*son 8

org-mode虽然很好,但它确实需要一些结构,我不相信它可以按照你想要的方式保存在你的.emacs文件中.

什么不正常工作的folding-mode.在维基页面上查看它的相关信息,但基本上你要做的是围绕你要放在折叠中的代码块设置注释,如下所示:

;;{{{ some folder of some kind

(a few lines)
(of lisp)
(this "code" is just filler)

;;}}}


;;{{{ a different folder

(some more elisp code)

;;}}}
Run Code Online (Sandbox Code Playgroud)

当折叠时,它看起来像:

;;{{{ some folder of some kind...

;;{{{ a different folder...
Run Code Online (Sandbox Code Playgroud)


phi*_*ils 7

Babel使您能够实现这一点(即以org-mode管理您的init文件).具体来说,请参阅:http://orgmode.org/worg/org-contrib/babel/intro.html#emacs-initialization

我自己,我outline-minor-mode在我的init文件中使用模糊的目的.各种事物被视为大纲标题,但您可以将其设置outline-regexp为文件局部变量以限制该行为,然后使用outline-toggle-children(将绑定到某个方便键)来切换打开和关闭的内容.toggle命令可以在该部分的任何位置工作,而不仅仅在标题上.

我开始标题我想在默认情况下折叠;;;; *并结束我的init文件:

;;; Local Variables:
;;; outline-regexp: ";;;; "
;;; eval:(progn (outline-minor-mode 1) (while (re-search-forward "^;;;; \\* " nil t) (outline-toggle-children)))
;;; End:
Run Code Online (Sandbox Code Playgroud)

在您的实例中,您可以使用:

;;; Local Variables:
;;; outline-regexp: "; "
;;; eval:(progn (outline-minor-mode 1) (hide-body))
;;; End:
Run Code Online (Sandbox Code Playgroud)

与Trey的建议非常相似,虽然我期望折叠你可以轻松地嵌套我不考虑的部分(没有必要这样做).我觉得大纲方法让文件看起来更清晰,如果这对你很重要.