我将 org-mode 与 lisp-mode 结合起来,在 emacs 中为 lisp 代码实现了漂亮的代码折叠: lisp-orgi-mode。
基本上,我使用“;”而不是 '*' 作为标题字符。对于注释,我只是在“;”之前加了一个空格,使其成为“;”所以它不算是标题...
但是,用 python-mode 做同样的事情不起作用...可能是因为 python 注释使用的“#”字符干扰了 org-mode 设置...
任何人能够成功地组合功能吗?
我知道人们将 python 模式与大纲模式结合起来(链接),但 ouline-mode 不如 org-mode...
编辑:让它与 outline-magic: python-magic.el
I combined org-mode with lisp-mode to achieve beautiful code folding in emacs for lisp code: lisp-orgi-mode.
Basically, I use ';' instead of '*' as the heading character. For comments, I just put a space before the ';', making it ' ;' so it doesn't count as a heading...
However, doing the same thing with python-mode doesn't work... Probably because the '#' character used by python comments interferes with org-mode settings...
Anyone been able to combine the functionality successfully ?
I know people have combined python-mode with outline-mode (link), but ouline-mode isn't as good as org-mode...
Edit: Got it working nicely with outline-magic: python-magic.el
发布评论
评论(3)
我使用 hideshow-org (以及这里的一个小介绍)就是为了这个目的,我认为它真的非常非常好。
这些是一些额外但有用的片段:
I use hideshow-org (and a small introduction here) for this purpose, and I think it works really, really good.
These are some additional, but useful snippets:
好吧,我的大纲次要模式与以下大纲正则表达式配合得很好: "[ \t]*# \|[ \t]+\(class\|def\|if\|elif\|else\|while \|对于\|尝试\|除了\|与\) "
现在我使用 python 语法和注释行作为标题进行代码折叠。
是否可以调整您的代码以使用 tab 调用“indent-for-tab-command”,如果没有什么可做的,则调用“outline-cycle”?
python-magic.el:
Ok, I got outline-minor-mode working nicely with the following outline-regexp: "[ \t]*# \|[ \t]+\(class\|def\|if\|elif\|else\|while\|for\|try\|except\|with\) "
Now I get code folding using both python syntax and comment lines as headings.
Would it be possible to adapt your code for using tab to call 'indent-for-tab-command and if there is nothing to do, call 'outline-cycle ?
python-magic.el :
我认为
outline-magic
已被outshine
取代,我不知道上面的代码是否适用于它。但我能够让以下代码正常工作,由 Ryan Davis 的博文:也许有人会发现这很有用。我认为这是一种使代码编辑和导航变得更容易的奇妙方法。
I think
outline-magic
has been superseded byoutshine
, and I don't know if the code above works with it. But I was able to get the following code to work, courtesy of a blog post by Ryan Davis:Maybe someone will find this useful. I think it's an amazing way to make editing and navigating code easier.