猪哥 的个人资料猪哥的Blog日志列表留言簿 工具 帮助
2008/7/25

自己定制一个SlickEdit的代码导航菜单

在浏览代码的时候,我一般是喜欢只用鼠标不用键盘的。鼠标有个麻烦就是按键太少了,不能bind多少command上去。所以可以考虑做一个很小的菜单bind到鼠标中键上,把代码导航时最常用的几个功能加进去。这样用起来有点像以前多键鼠标流行的那个鼠标中键菜单。比如在我的SE中,浏览代码时只要点一下鼠标中键就能出来这样的菜单:

里面有最常用的代码导航所需要的功能,鼠标不费吹灰之力就能点到。这样仅用鼠标操作时在代码里面跳来跳去就爽多了。具体实现方法如下:

① 用SlickEdit的菜单编辑器编辑一个自己的菜单。我的菜单代码如下:
_menu nav_pop_menu {
   "Go to &Definition","push-tag","","","";
   "Pop Bookmark","pop-bookmark","","","";
   "-","","","","";
   "Back","back","","","";
   "Forward","forward","","","";
   "-","","","","";
   "Go to &Reference","push-ref","","","";
   "-","","","","";
   "Edit This Menu","open-menu nav_pop_menu","","","";
}


② 写一个简单的呼出这个菜单的宏:
_command void
mou_nav_menu() name_info(','VSARG2_REQUIRES_EDITORCTL)
{
    mou_click();
    mou_show_menu('nav_pop_menu', 'R');
}


③ 把这个宏bind到鼠标中键或者其他合适的键上(如果你用罗技G1这种类型的鼠标,上面一般有个小小的Back键,这个键SlickEdit也是可以认得的,你能往上边绑命令~~)
2008/7/24

让SlickEdit的搜索结果列表在完成搜索后自动得到焦点

最近在分析内核代码,发现即使是1400×1050和1680×1050两个显示器左右开弓同时上,还是觉得不够巴不得能再多一些显示代码的空间。所以我就把平时基本上一直Dock的Search Results Window给设置成Auto-Hide了。这回搜索的时候就发现有点不对劲:搜索结束以后这个Results Window一闪而过没法得到焦点停住让你看结果。被搞了几次烦死了以后出手改了它,顺便给SE的家伙提了个BUG。结果SE的开发答复说那个不是BUG,其实是故意的想让人完成搜索后能回到上次编辑的地方去( ̄口 ̄)!!。难道真的有人希望在完成搜索后连结果都不看就当什么事也没发生过嘛?!个人认为这个设计有点脑残,还是按照我的Patch修改比较符合常理~~

这个修订对V12和V13都适用(顺便提一下,SE的家伙说v13.0.1是v13的Final版本了,下个版本是明年春季发布的v14。不过说实话,我觉得v13质量很差,我现在使用的主力编辑器还是v12.0.3)。修改方法如下:

打开tbfind.e(注意如果你打了hotfix,得从你config的hotfix目录找到最新的宏文件才行),找到_show_current_search_window,改成这样:
static void _show_current_search_window(boolean show_res)
{
   if (show_res) {
       activate_search();
   }
}


然后在_tbfind_form.ESC()里面去掉对_show_current_search_window的调用(注释掉那行即可,否则在你取消搜索以后Result还是会弹出来)。

最后找到这个函数的两个调用者_begin_find和_begin_replace,都改成这样:
...
//int current_wid = _get_current_search_wid();
boolean show_res = (_findlist_all.p_value && _findlist_all.p_enabled);
...
_show_current_search_window(show_res);

Load tbfind.e,完事收工。

这样修订完成以后的效果是:如果你平时隐藏了Search Results,在你进行搜索并且搜索的选项设置为“List all occurrences”的时候搜索结果列表会自动显示出来而不会露个脸就跑掉。
2008/7/23

利用SlickEdit的Alias+SlickC功能

SlickEdit的Alias(AKA Snippet)功能本身已经做得不错,能够在Alias模板里面插入当前日期和文件名等,无论你用来自动插入文件头部的Copyright声明、Revision History还是插入一些你自定义的代码片段都还挺得心应手的。不过如果你希望插入一些更高级的东西,那就注意看了:实际上SE的Alias是支持在模板里面调用SE的宏函数的。所以你可以再配合SE强大的SlickC实现非常好用的动态Alias功能。

我这里只举一个非常简单的小例子演示一下如何编写一个调用SlickC函数的Alias。这个Alias的功能就是为头文件自动生成#ifndef...这组防止头文件被重复包含的条件编译宏。

假设有个文件叫做list.h。在这个头文件里面我们肯定都会要加上类似这样的宏:

#ifndef __LIST_H__
#define __LIST_H__
...
#endif /* __LIST_H__ */


这个工作重复的多了,自然就想用Alias实现。但是尽管用了Alias自动插入了固定部分,里面的条件编译开关名字(__LIST_H__之类的)还是要自己根据文件名起不能完全自动化。对于这种会变化的部分可以写个简单的SlickC函数来搞定,这个函数的功能就是以“__FILENAME_EXT__”的规则自动根据当前文件名生成条件编译开关名:

_str _gen_head_def()
{
    _str buffer_name = strip_filename(p_buf_name,'PD');
    return ('__' :+ stranslate(upcase(buffer_name), '_', '.') :+ '__');
}


然后编写一个这样的Alias模板(被我裁过了,实际上我里面还有版权声明什么N多东西),其中用%\m funtion_name%的形式调用这个函数:

#ifndef %\m _gen_head_def% 
#define %\m _gen_head_def%

%\c

#endif /* %\m _gen_head_def% */


这样就OK喽。上面这个Alias我起名为“h”,展开Alias的热键我是绑定到Ctrl+Tab上。这样假设你要给processor.h文件添加防止重复包含的条件编译宏,只要敲一个‘h’,然后按Ctrl+Tab展开,就会展开成如下的东西:

#ifndef __PROCESSOR_H__ 
#define __PROCESSOR_H__

[光标位置]

#endif /* __PROCESSOR_H__ */

这样用起来就很安逸了。不过用Alias+SlickC做这么简单的事情真是杀鸡用牛刀,还有更多的用处可以自己发掘。
2008/7/17

俺们有的,不只是山寨机

天朝的汽车工业在自主创新程度上绝对不亚于国粹山寨机……

雪弗兰Spark:


来个三脚版(# ̄▽ ̄#)




屁股也不含糊,后面看不仔细还真看不出来~~


方向盘的喔~~

奇瑞QQ



QQ和Spark就是哥俩好啊~~





现代伊兰特



当QQ被伊兰特XX了以后……



本田飞度



我少个轮子也能跑……



铃木雨燕



没准Q版雨燕也不过画成这样……



长安奥拓



其实加上备胎,我也是小四轮啊~~



丰田普锐斯



混合动力咋的了?俺们少个轮子才真的省油!



标致206



精仿天窗版豪华三轮车(简称“华三”)



就是货比货俺也没啥好怕的( ̄^ ̄)




2008/7/14

优化Acrobat的启动速度

这里讲的是Acrobat Pro 8,因为我的本子还没升级到Acrobat 9。因为在台机上装了9以后发现比起8还没有什么让我感觉想升级的地方,远不如当年8对7的改进那么大。

首先是关于启动速度,传说9的启动时间是8的50%,但是我压根没有感觉出来。8的速度比起之前的版本也并不慢,但是实际上还能加快不少。最简单的加速启动的方法就是把不必要的插件挪掉。

Acrobat的插件在\Adobe\Acrobat 8.0\Acrobat\plug_ins下面,3D的在\Adobe\Acrobat 8.0\Acrobat\plug_ins3d下面。其中3D的插件是全部可以拿掉的(除非你正是需要3D的那类人~~),而普通插件按照我的个人习惯,只要保留注释和reflow,其他我也拿掉了。

具体我保留的插件如下。注意下面的插件基本是最小集了,随便拿掉reflow以外的任何一个插件,注释笔记功能就无法工作了。

拿掉插件的具体方法很多,但是只要注意不要把它仍然保留在插件文件夹之内即可。因为Acrobat是递归子目录搜索插件的。你可以挪出来,也可以改扩展名,也可以把不用的打包以后删掉,随便折腾。删掉不用的插件以后,明显感觉Acrobat的启动速度加快了。

另外一个是关于AcrobatInfo.exe的优化。在资源管理器里面鼠标要是停留在PDF文件上,明显感觉硬盘咔嗒咔嗒一会儿才显示PDF文件的信息,然后后台多了个AcrobatInfo的进程。这个进程的功能很无聊,一个是显示PDF的缩略图,另一个是在文件信息里面显示一些PDF信息(如作者什么的)。如果你确信你压根都不想用它,可以把它拿掉。

拿掉这个东西的方法有很多种,一种是改注册表彻底干掉,但是风险大,而且以后哪天又想要回来就比较麻烦。另一个就是把AcrobatInfo.exe删掉,这个办法不好。因为会弄得Acrobat无法启动,除非你答应让它进行修复把AcrobatInfo给弄回来。最简单又彻底的办法,还是利用XP Pro/2003 Server的组策略:

在Software Restriction Policy这么加一条,这个世界就清净了。
2008/7/12

卡西欧G-Shock的夜光和背光

贴两张我手表的夜光和背光效果图。用耐克牌傻瓜机拍的,无三脚架的情况下曝光2秒,痛苦死我了。

指针夜光效果:



指针LED背光效果。我喜欢金黄色的背光!



来个会动的:

2008/7/11

在俺的Blog讨论的时候用词请注意和谐

俗话说树大招风~~没想到俺的blog这株小野草也招风。各位在我这讨论某软件的某种修订版的时候请勿直接使用直白的英文单词描述,也别用直白的中文描述(不然Google网页翻译还是能凑合让鬼佬看出来)。建议用一些只有真正的天朝子民才能明白的名词(如称为“和谐版”、“共同富裕版”、“中国特色版”等等),让我也避避风头(╥﹏╥)。
2008/7/10

Acrobat 9.0 Pro Extended瞬间减肥

Acrobat 9.0 Pro Extended最小安装也有1.03GB,翻了翻安装目录,晕死:

在Adobe\Acrobat 9.0\Setup Files\{AC76BA86-1033-F400-7761-000000000004}

缓存了724MB的Acrobat 9.0 3D的安装文件!!删掉了,安装文件夹就剩下339MB了,和8.1差不多。

这个体积已经可以接受了,嫌它大的朋友,酌情升级吧。
2008/7/6

长得很Win的gVIM

今晚配置了一把Windows版的gVIM,现在长得很Modern了~~



看起来已经彻底像是个Windows下的编辑器了吧(# ̄▽ ̄#)