当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : emacs hide-region 增强版
帖子发表于 : 2009-08-28 21:12 

注册: 2009-02-25 19:44
帖子: 94
送出感谢: 0 次
接收感谢: 0 次
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中的所有折叠打开。


附件:
hide-region.el.gz [2.25 KiB]
被下载 67 次


页首
 用户资料  
 
2 楼 
 文章标题 : Re: emacs hide-region 增强版
帖子发表于 : 2009-08-29 12:35 

注册: 2008-10-15 10:49
帖子: 583
地址: CS
送出感谢: 0 次
接收感谢: 0 次
:em11


_________________
代码:
 _____________
< 呜呜buntu >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||


页首
 用户资料  
 
3 楼 
 文章标题 : Re: emacs hide-region 增强版
帖子发表于 : 2009-08-31 14:26 

注册: 2007-02-06 22:52
帖子: 42
送出感谢: 0 次
接收感谢: 0 次
唉哟,妈啊,这也太强大了吧,哈哈哈哈哈,牛人啊


页首
 用户资料  
 
4 楼 
 文章标题 : Re: emacs hide-region 增强版
帖子发表于 : 2010-05-17 21:53 

注册: 2007-01-02 20:36
帖子: 16
地址: 中山大学
送出感谢: 0 次
接收感谢: 0 次
yupeng820921, yupeng820921,

to yupeng820921:

你的hide-region-toggle蛮实用了, 谢了。

两个小问题找你商量一下:

1)我们有没有联系hide-region这个package的作者(mathias.rem0veth1s.dahl@gmail.com)。
一来,他极有可能实现了加强版的hide-region.el。
二来,如果我们将两者combine之后,贴到http://www.emacswiki.org/emacs/HideRegion中,这样所有人都可以用到你改进后的版本了。

2) hide-region-toggle貌似还可以改进一下。
我先是选中一个区域之后,运行hide-region-hide,然后多次调用hide-region-toggle.
当它展开时,区域前后还是有@[, ]@.
这个效果感觉和正常理解不一样。

由于本人耐性和elisp的水平有限, 似懂非懂地读了一下hide-region-toggle的实现代码。
感觉一个更直观的实现可以先判断字符串:hide-region-before-string(@[)和hide-region-after-string(]@),然后再调用hide-region-hide/hide-region-unhide.

markfilebat@126.com


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译