【问题标题】:Outline or fold mode for editing Emacs Lisp code用于编辑 Emacs Lisp 代码的大纲或折叠模式
【发布时间】:2014-02-02 18:22:21
【问题描述】:

是否有一种次要模式可以与 Emacs-Lisp 模式结合使用,这样每个函数定义都可以轻松打开或关闭,而无需在文本文件中插入特殊代码?

例如

(defun test1()
  (message "Hi!"))

(defun test2()
  (message "Bye"))

F1 会将每个函数定义折叠到顶行/标题中

+ (defun test1()
+ (defun test2()

按下前面的+ 符号将展开给定功能并使其可编辑.. 按 F2 将展开所有定义..

【问题讨论】:

    标签: emacs elisp folding


    【解决方案1】:

    outline-minor-mode 这样做。查看它的菜单。 你得到的是典型的省略号...,而不是+-符号。那不应该伤害。你可以自己做键绑定。 (我知道你够聪明!)

    【讨论】:

    • 谢谢!用C-c @ C-t 隐藏所有内容后,如何扩展一个特定的函数def?我试过C-c @ <tab>,但我无法让它工作..
    • Outline-> 显示绑定到C-c @ C-e 的条目。那是一种约束!
    • 您可以使用reveal-mode,以便将光标移动到隐藏文本中会自动取消隐藏(“显示”)它。
    • 除了C-c @ C-e(显示条目)外,还可以使用C-c @ C-s(显示整个子树)。
    【解决方案2】:

    这是我的设置:

    (require 'hideshow)
    (global-set-key (kbd "C-M-h") 'hs-toggle-hiding)
    (global-set-key (kbd "<f2> h h") 'hs-hide-all)
    (global-set-key (kbd "<f2> h j") 'hs-show-all)
    

    【讨论】:

    • 谢谢!似乎也可以正常工作。它看起来类似于outline-minor-modehs-minor-modeoutline-minor-mode 之间究竟有什么区别?
    【解决方案3】:

    outshineoutline-minor-mode 的变体,它允许您使用org-mode 语法,它比普通的outline-mode 更强大。

    【讨论】:

    • 谢谢,这看起来很有趣。我已经下载了。但是我在哪里可以找到有关哪些键绑定可用的信息?
    • 如果您已经在使用该模式,您可以使用 C-m 或 C-b 获取绑定。如果不是,它们位于 outshine.el 的源代码中,大约在 1500 行。
    • 我尝试了C-mC-b,但它们不起作用。 (似乎绑定到newlinebackward-char)。 hs-minor-mode 中是否有与 C-c @ C-M-h 等效的命令?
    • 啊,错字!我的意思是C-h mC-h b,对不起!它们分别是describe-modedescribe-bindings 命令。
    • 好的,谢谢,C-h b 有效。我现在尝试使用以下简单文件t.el(defun test () (message "ok")) 并将光标定位在定义中,然后键入C-c @ C-c 以运行@987654339 @ 但它只在回显区域给出消息before first heading..
    猜你喜欢
    • 2011-10-26
    • 2010-10-27
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多