emacs:添加隐藏显示alist的模式

时间:2009-09-06 05:40:06

标签: emacs elisp

我想知道你是否知道如何使用新模式进行隐藏显示工作。例如,我有一些我想用R隐藏的无关代码。对于折叠模式,它可以只是

(load "folding" 'nomessage 'noerror)
(folding-add-to-marks-list 'ess-mode "# {{{"  "# }}}" nil t)
(add-hook 'ess-mode-hook 'turn-on-folding-mode)

我认为隐藏等效的内容将是

(add-to-list 'hs-special-modes-alist
         '(ess-mode "# {{{" "# }}}" "#[ #]?"
            hs-forward-sexp 
            hs-c-like-adjust-block-beginning
            ))
(add-hook 'ess-mode-hook '(lambda()
                (hs-minor-mode 1)
                (hs-hide-all)
                (custom-set-variables
                 (hs-hide-comments-when-hiding-all 0)
                 )
))

但是我觉得hs-forward-sexp有一些魔力,我不知道怎么弄清楚?

我尝试调整为c-sharp编写的函数(用{{{和}}}替换区域/ endregion上的正则表达式搜索)但没有运气!我想知道解决方案对于那里的老兵是否显而易见......

非常感谢!

1 个答案:

答案 0 :(得分:4)

您没有说明实际出错的地方。当我尝试使用您的配置时,我发现(hs-hide-all)调用失败并且参数数量错误,因为hs-forward-sexp有两个参数,但是被一个参数调用。

长话短说,在修改初始化后,我可以让隐藏工作正常用于文本模式(使用上面的更改):

(add-to-list 'hs-special-modes-alist
             '(ess-mode "# {{{" "# }}}" "#[ #]?"
                         forward-sexp 
                         hs-c-like-adjust-block-beginning))

你在第3行有hs-forward-sexp,但你真正想要的只是常规forward-sexp

注意:我的测试实际上在text-mode,但这不会影响结果。