emacs hide-region 增强版
发表于 : 2009-08-28 21:12
emacs的折叠功能比较散,通常我折叠括号用hs-minor-mode,折叠c语言的宏用hideif,折叠选中区域用hide-region.el,但这个hide-region.el默认的功能似乎比较弱。用hide-region-hide把选择区域折叠起来,然后记录到一个ring里面,用hide-region-unhide 从 ring 里面取出最新的折叠展开。没有把指定折叠展开的功能。
所以我写了个增强版,首先把记录折叠的 ring 变成 buffer-local 变量,这样再用 hide-region-unhide 时,每个 buffer 都有一个自己的 ring。
然后增加了几个函数:
hide-region-unhide-below,从光标往下找到最近的折叠打开,如果光标往下没有折叠的话就从 ring 里面找出最近(时间上)的折叠打开。
hide-region-toggle, 切换当前buffer中所有折叠的状态,如果是折叠的就全部打开,如果是打开的就全部折叠。
hide-region-unhide-all, 把当前buffer中的所有折叠打开。
所以我写了个增强版,首先把记录折叠的 ring 变成 buffer-local 变量,这样再用 hide-region-unhide 时,每个 buffer 都有一个自己的 ring。
然后增加了几个函数:
hide-region-unhide-below,从光标往下找到最近的折叠打开,如果光标往下没有折叠的话就从 ring 里面找出最近(时间上)的折叠打开。
hide-region-toggle, 切换当前buffer中所有折叠的状态,如果是折叠的就全部打开,如果是打开的就全部折叠。
hide-region-unhide-all, 把当前buffer中的所有折叠打开。