SlickEdit 2010 v15.01发布


折腾死我了,又是一通Merge和配置~~明天再放评价。另外这次Update居然还放出了两个RC版本~~SE这回真是有点那啥。
sshot-1
★2010年8月6日更新:不打算放评价了,基本就是个bug fix版本,或者算是真正具备发行质量的SE2010版本。还未升级到2010的可以动手了。盒子里的宏已经更新。

SlickEdit 2010初步使用体会:基本无惊喜


昨晚升级到SlickEdit 2010,简单用了用。发现:基本无惊喜,基本无重大功能升级。当然,小打小闹的新feature还是有的,不过伴随而来的是十分明显的肉眼可见的bug~~这个版本好歹是beta了又rc的,之前重来没有这样的排场。质量却仍然保持SE的一贯特色如此不堪,也真是没天理了。不过这个版本也并非不值得升级,在没花钱的前提条件下~~起码老功能的bug应该基本被修补了吧,新功能有bug的咱不用就是,没bug的权当赚到(# ̄▽ ̄#)

先从最赞的新功能说起。个人认为这个功能足以让大部分人更新到2010了:这就是File Tabs上面多出的文件列表按钮!
sshot-3
这是SE继当前行高亮后又一个令我感动的功能:这个标签栏终于做得基本完整了,达到了UE早期版本的水平!不容易啊。另外标签也多了按照使用频率和手工拖放排序的功能。初步使用感觉这个文件列表菜单基本无明显bug,至于排序因为还没用我不敢说啥(因为我还是喜欢按照文件名排序)。另外这里要特别强调的一个事情就是:这回切忌别手痒去编辑bufftabs窗体~~不然就杯具了(具体怎么个杯具法自己可以试试,备份了config目录就安全)。

第二个不错的改进是Context Tagging支持多线程了,并且能够在后台运行。这个对绝大部分人来说都是个好消息,应该能解决SE的一些性能问题。不过对我来说就没啥用处了~~因为俺的穷本子还是单核的(╥﹏╥)。

其他的新功能就比较零碎了。比如:2010开始支持和Eclipse一样的自动括号补全了。这个功能我简单试了试,做得还不错吧。主要是不烦人。有些比较脑残的编辑器就是硬生生地在光标后面插个“)”。对于我等之前苦日子过惯的人来说倒是经常不适应,经常顺手就再敲了个“)”以后才发现nnd怎么多了一个,还得按个del手工删之。SE这个做得就比较正常,如果你手工又敲了一个“)”,那就会把它自动给你插的那个给覆盖掉。也就是这个功能不扰民,你要是无视它也不会烦到你。偶尔用上了,那就算你赚到了省了一次组合键大招。另外语言设置中多了个All Languages,可以将共性的东西在这里做统一设置。诸如禁用Comment Wrap或者统一缩进格式之类的东西这回就不用每个都设一把过去给活活累死了。这里可以统一设置一次刷下去。
sshot-4
不过话又说回来,我是经常看到有人哭着喊着要自动括号补全的。但是在平常写代码的时候真的有用么?就算自动在后面给你插了个“)”,到时候自己还是得挪个光标什么的弄到“)”后头接着写啊。好像比起自己敲那个“)”没有啥改进,还影响了输入的流畅性。所以一直不是很能体会这个功能的必要性。我唯一有利用到这个功能的时候就是在修改代码的时候,中间插个表达式啥的,那可以少敲一下键。但是很偶尔很偶尔,几乎就是没用过。

接下来一个觉得还不错的改进就是可以给任意语言设置是否使用Javadoc/Doxygen/XML Doc。其实我觉得Doxygen确实是一个非常好用的文档工具。即使是在写汇编的时候,我也习惯用Doxygen的格式来写注释。原本要在汇编里面用Doxygen得改改SE的宏代码才行。这回直接可以设置了,很好!如果你使用的语言本身不具备文档化注释功能,Doxygen就是最赞的选择。
sshot-1
这个版本关于Doxygen的另一个更新是支持更新函数的文档化注释。也就是说如果你的函数定义多了或者少了一个参数什么的,理论上你可以让SE帮你自动在函数注释里面同步(比如增删@param的信息之类)。当然,只是理论上。我只一试,就把我函数文档里面所有的@param的参数名全给更新成struct,struct了……吓得我没敢再玩,还是自己手工更新吧。
★ 2010年5月6日:已提BUG,会有hotfix

另外一个改进可能对VC党有点小帮助,就是Debug GUI前端支持WinDbg了:
sshot-2
所以直接在SE里面调试VC编译的程序就有可能了。不过我觉得可能还是不太有意义吧,毕竟MS的IDE还是做得挺好的不像用gdb那么悲惨。应该用着VS的人还不至于无聊到跑到SE里头来调试的地步。不过这年头连UE这种记事本级别的编辑器都支持WinDbg了,可能SE也觉得比较没面子,也得支持一下!这个功能我是没试过,有无bug尚不清楚。不过作为一个第一次推出的大功能来说,没有bug通常是不正常的。

最后值得一提的大项是对DocBook的支持。但是因为实现得实在是不成熟的缘故,基本上还没法用起来。权当对未来的展望吧。不过能看到SE在往改善文档编辑体验的方向努力还是不错的。毕竟对于一个合格的程序员来说,起码写文档的时间不应该比写代码少。而DocBook+Doxygen堪称无敌组合,API注释和Manual类文档通吃。

本次对DocBook的改进之一是支持tagging DocBook的id:
sshot-6
在DocBook中定义的具名Section什么的,都能在Find Symbol里面看到。也能在Find Symbol里面Preview什么的。注意:我只说能在Find Symbol里面这么干~~这玩意最诡异的地方就在于,如果你是在编辑区里头操作(比如把光标停在编辑器里面的section id定义处),Preview窗口那是啥也别想有的,所以实用性就大打折扣,毕竟没人老喜欢跳来跳去。

雪上加霜的是,除了在编辑器里面不好操作id以外,还有个更诡异的现象是xml这个后缀名死活关联不到DocBook去。即使你在File Extension Manager里面都配好了,但是新开一个xml文件,还是华丽地无视设定,依然默认地用XML Mode渲染和Tagging。非得手工去把Mode改改:
sshot-5
有可能SlickEdit是认为你写DocBook应该都用.docbook作为后缀的,因为它的DocBook默认关联的后缀名是.docbook。但是我还真没见人这么用过~~看来以后新写DocBook的,得考虑一下是否改改后缀来适应SE的怪脾气。
★ 2010年5月6日:已提BUG,会有hotfix

不过即使2010对DocBook的支持如此不堪,但也起码比之前版本和一般的文本编辑器来得好。因为有个新增的XML Outline View这个功能还是好使的(# ̄▽ ̄#)
sshot-7
所以,即使存在诸多Bug,但终归还是有些能超越过去的。写起DocBook来是稍微有舒服了一点。SE对Doxygen/DocBook的支持好像一直有点做得漫不经心的。Doxygen的显示渲染问题在我提交Patch之前一直被无视,直到我写了现成的代码以后才被抓过去用(btw,上回我贴的那个双击{}选中Block功能这个版本也已经Merge进去了)。这回这个DocBook支持又做得这样半拉子,想等到它完善(如果没人推的话)估计等到2012地球毁灭可能也还等不到。也许主要原因还是因为这年头还能认真写文档的程序员实在是不多了(就连我也好久不写DocBook了),实在是没啥需求和改进的动力吧。

完毕。

SlickEdit 2010 Beta结束


From support:
The SlickEdit Beta program has closed.  Thank you for your support!

准备迎接正式发布吧!!

★ 2010年4月22日更新:不好意思,NND原来这回Beta3过了以后是RC1,继续等( ̄﹏ ̄)

在SlickEdit中添加和VisualStudio一样的Copy Full Path功能


题外话:结束了一件事情,重新回到原来的生活轨道。为人民服务,继续写博。

一两下在SlickEdit里面想Copy一个当前编辑的文件名出来感觉十分不方便。虽然用alias可以展开一个,但是只能展在SlickEdit自己里头。因此决定实现一个和VisualStudio一样的Copy Full Path功能(至于VS的Open Containing Folder,直接用自带的explorer命令就能实现)。使用时效果如下:
sshot-1
可以直接把Tab对应的文件路径给Copy出来。

鉴于经常有人乱加载我在盒子里面patch过的宏而出各种问题赖到我头上来,所以决定从今天开始,只给出修改方法。具体实施请各位自己搞定。

打开bufftabs.e。。。

步骤1:实现一个将字符串发送到系统剪贴板的函数:

static void

send_to_clipboard(_str text)


{


    // 创建一个临时选区,这样可以避免这个剪贴板操作把你当前编辑区中正选中的东西冲掉


    _str orig_markid = _duplicate_selection(”);


    _str temp_markid = _alloc_selection();


    if (temp_markid < 0) {


        return;


    }


    _show_selection(temp_markid);




    // 创建一个隐藏buffer,在里头贴上要丢到剪贴板去的字符串


    int temp_view_id;


    int orig_view_id = _create_temp_view(temp_view_id);


    _insert_text(text);




    // 选中这个隐藏buffer里面的所有内容,做个copy,就到剪贴板去了


    _deselect();


    top(); _select_char();


    bottom(); _select_char();


    copy_to_clipboard();




    // 擦屁股:还原原来的选区,释放隐藏buffer,还原焦点


    if (orig_markid >= 0) {


        _show_selection(orig_markid);


    }


    _free_selection(temp_markid);


    _delete_temp_view(temp_view_id);


    activate_window(orig_view_id);


}

步骤2:新加一个菜单处理函数:

_command

buff_menu_copypath() name_info(‘,’VSARG2_EXECUTE_FROM_MENU_ONLY)


{


    // 前面这些是从buff_menu_save抄的,大意是抓到弹出菜单这个tab的文件名


    int sstabwid = get_tab_control();


    if (!sstabwid) return (0);




    // make sure the file tabs are up-to-date


    tabs_data *ptabsdata = sstabwid.getFileTabsData();


    if (ptabsdata==null) return (0);


    if (ptabsdata->pending_refresh) {


        refresh_file_tabs();


    }




    if (ptabsdata->clicked_tabid >= 0) {


        tabs_t *ptab = &ptabsdata->buffid_order[ptabsdata->tab_order[ptabsdata->clicked_tabid]];


        _str buf_name = ptab->buffname;


        if (buf_name == ”) {


            buf_name = ptab->caption;


        }


        // 就在这里,把抓到的文件名丢到剪贴板去,over


        send_to_clipboard(buf_name);


    }


}

步骤3:在右键菜单中插入新的菜单项:

找到ctlsstab1.rbutton_up()函数,里面会看到一对插入菜单项的代码。把新菜单项塞到你要的位置即可:

   // build the menu

   itemPos := 0;


   _menu_insert(menu_handle,itemPos++,MF_ENABLED,


                "&Save "strip_filename(buf_name,’P’),"buff-menu-save","","",’Save ‘buf_name);


   _menu_insert(menu_handle,itemPos++,MF_ENABLED,


                "&Close "strip_filename(buf_name,’P’),"buff-menu-close","","",’Close ‘buf_name);


   // 我插到这里


   _menu_insert(menu_handle,itemPos++,MF_ENABLED,


                "Copy Full Path","buff-menu-copypath","","","Copy Full Path to Clipboard");

步骤4:load bufftabs.e

解决SlickEdit中版本控制工具的中文问题


Windows下的SlickEdit中,如果用SE内置的Subversion/CVS前端来操作代码库的话会发现所有的中文都被显示为乱码,而英文都正常。造成这个问题的主要原因就是SE在内部处理字符串用的是UTF8编码,而控制台端的svn/cvs工具在通过Shell与SE交互时用的实际上都是多字节码。这样就造成了乱码问题。

解决的方法很简单,只要在调用命令的前后各做一次编码转换即可。找到SE的底层CVS/SVN命令操作函数:cvsutil.e::_CVSPipeProcess()

在入口处把SE准备传递给Shell的命令由UTF8转换为多字节编码,代码页使用系统默认(也可以自己指定一个代码页,在第二个参数指定即可。如强制转换为简体中文:_UTF8ToMultiByte(command, 936)):
command = _UTF8ToMultiByte(command);

这样就可以让SE正确地把包含中文的文件名等参数传递给CVS/SVN,解决不能checkout中文名文件的问题(表现为操作时返回svn缺少参数之类的错误)。

在这个函数末尾return之前,再做一次逆向转换:
StdOutData = _MultiByteToUTF8(StdOutData);
StdErrData = _MultiByteToUTF8(StdErrData);

这里把完成命令调用后的stdout和stderr由多字节编码转换为UTF8,供SE继续处理。解决SE的VCS图形界面显示中文乱码的问题。

经过上述改进以后,SE内置的Subversion Browser已经可以正常浏览中文目录:
sshot-2
在版本控制的History里也能看到文件的中文注释:
sshot-4
修改好的cvsutil.e已经传到盒子里了。

SlickEdit华丽修改:双击括号自动选中匹配括号


SourceInsight有个功能,就是在双击一个括号的时候能选中匹配的括号。N年前用SourceInsight的时候这个功能用得很High——因为SI竟然无法高亮显示匹配括号( ̄口 ̄)!!,所以非靠这个功能识别嵌套括号不可。

用了SlickEdit以后,心想这玩意好歹支持括号高亮,双击选中这种功能应该不需要了吧。结果最近在看一个包含了横跨N屏的括号套括号的代码时还是被囧到了:得跨越万水千山才能找到另一个被高亮的括号,经常看走眼看错嵌套层次。而那个select-paren-block命令又没法同时整合到双击选中word中奇不好用,所以又想念起SI的这个功能来了。于是操刀对SE做了个华丽的修改,硬是把这个功能加上了。
sshot-2
加上后,发现效果居然非常好,比SI还要好。因为SE在选中的情况下彩色高亮还能保持,所以选区仍然有很好的可读性,可以把选区当作是个block高亮功能来用,完美防止看走眼。

Patch过的宏在盒子里,mouse.e。

SlickEdit的Defs函数列表之华丽修改


用SlickEdit看了N年代码以后,对那个函数列表有点忍无可忍,终于爆发。SE总是在列表里面显示整个函数的声明包括参数列表,所以无论何时看这个列表总是黑压压的一片看了头疼,基本没希望一眼定位到某个函数:

sshot-3

之前想改这个列表很久,但是由于这个列表实际上是由DLL生成的并非通过宏,所以没有办法直接修改。被逼得没办法,只好用猥琐办法强制滤掉了所有括号里面的东西:

sshot-4

这样世界一下子清净了(# ̄▽ ̄#)。当然,副作用还是有的,比如Show Statements时if和for啥的里面的表达式会没掉。不过个人感觉会嫌原装列表太花的人没有道理会开Show Statements,因此这个缺陷可以忽略不计。另外可能的问题是不清楚把函数参数滤掉SE会不会傻掉,难保这家伙会不会用这些函数名做一些显示以外的其他用途。不过就我自己用的几周来看,貌似没啥问题。

东西在盒子里,proctree.e。

★ 2009年8月5日:安装后要用toggle-hide-defs-param命令切换是否显示参数。

升级到SlickEdit 2009 v14.0.2.2


SlickEdit v14.0.2.2经过极其短暂的RC以后就发布了。早上Down下来,利用中午的时间装上。升级非常平滑,只花了10分钟就merge完我所有的Mod和配置了。想起之前用v9的时候每次升级都要大动干戈地搞上1~2小时的,真是激动得眼泪哗哗的。
sshot-1
看了半天更新列表,几乎没啥可见更新主要都是各类BUG修订。值得一提的更新如下:

  • Fixed problem with std:: namespaces and completions. 
    这个我没有试过,不过看样子是解决了之前string类自动完成的问题了吧。
  • Made the color for modified items in the debugger configurable. Previous it reused a color assigned to something else. 
    这个解决了SE自带的GDB前端一个很恶心的问题,就是单步时修改了的变量居然用的是Modified Line颜色来显示。恼了大伙很久以后,这回终于决定改了~~在Color中出现了专门的牌位:
    sshot-2

For v14.0.2.2的宏已经上传到我的盒子里,请各位用代码比较工具merge自己所需的修订。盒子已被坝但我实在是懒得再挪窝了,请想下载的各显神通自己翻墙吧~~

SlickEdit 2009 v14.0.1更新


昨天SE网站放出了正式发布的v14.0.1修订版。Down下来安装后看了看Release Note,发现基本上全是BUG修订,有改进也是鸡毛蒜皮的所以就懒得在这里列了。不过鉴于SE一贯的风格,往往在正式版以后的第一个修订版质量才能达到一般意义上“正式版”的水平,所以还是建议更新到这个版本:

sshot-1

升级过程非常容易,从14.0.0到14.0.1是完全平滑的,除了自己对某些窗体和宏的修订需要手工merge以外,其余所有的配置包括热键和自定义菜单都能顺利继承下来。

我对SE宏的修订(包括一些修正中文问题和添加一些小功能)for 14.0.0.1的全集可以在我的盒子里面打包下载。再三强调:下载到的宏请各位一定自己手工用代码比较工具撷取其中需要的修订合并到SE的宏里面,不要一股脑儿全覆盖过去。要不然跑不起来或者和你原来的修订冲突了我可不管~~

Slickedit 2009 Linux版在ubuntu 8.04上的安装


题外话:为了不让某猥琐男的预言得逞,俺决定再插队增加一篇Blog~~

Linux版的安装界面是命令行的,依稀记得v11还是v12的时候还是和Windows版一样的图形化安装界面。可能SE那帮人自己也觉得无聊Linux下面搞什么GUI安装的,就从2008以后都随大流用命令行安装了。安装的时候要用sudo,Yes一下License,改改安装目录不要覆盖原来的老版本即可。

完成后就会提示导入License。注意最好也是在root权限下面搞,不然会要求你sudo cp一把手工把License File拷贝到安装目录下:

导入了License以后就可用了,发现Build日期和Win版相同:

Linux版依然是基于X Window的,非常非常丑陋的Motif风格实在是恶心得不行了。不过在Linux上面看Motif感觉勉强了,想想那些用Mac OSX的人吧~~在美丽的Aqua界面上露出一个可怕的Motif风格窗体……真是一坨牛粪插在了鲜花上啊~~我以前一直认为最老的那种JRE 1.4之前的Metal风格是世界上最难看的GUI外观,后来看了Motif才知道之前我真是孤陋寡闻了(﹀_﹀")。

要想输入中文,先要在这里设置一下:

选中该选项后下面的提示框还会告诉你要配置另外两个环境变量~~照做即可。搞定后SCIM可输入中文。不过不得不再说一下,即使是这样设置了以后SlickEdit在Linux下面用中文感觉依然是非常不好,还是尽量用Win版吧~~

注意:2009以后SlickEdit增加了配置Import/Export功能,可以利用这个功能把配置页面中所有的配置从Windows版迁移到Linux版去(2009之前的版本是没法这么搞的)。不过只能迁移可以在配置对话框中设置的那些内容,对宏和窗体什么的修改还是要自己手工搞定。