发新话题
打印

D语言Scite自动完成设置

本主题由 yidabu 于 2008-3-16 09:27 解除精华

D语言Scite自动完成设置

知识若不分享 实在没有意义 http://www.d-programming-language-china.org 20070508

点击下面网址查看原文:
http://www.d-programming-language-china.org

tag:scite api,scite配置,d语言编辑器

D语言是门新兴语言,相关配套的D语言库很缺乏,很多时候我们要调用操作系统api来完成一些工作。
在写代码时,手工重复地输入一些类似代码会让人烦。比如Windows gui编程通常有个WinMain函数,虽然我们可以从已有代码中copy,paste,但有没有更方便的办法呢
办法是有的,就是文本编辑器的自动完成功能。

文本编辑器中,基本上SciTe算得上是最强的了。关于SciTe的配置,见D语言论坛 http://www.d-programming-language-china.org 相关文章,这里yidabu不再重复。

d-programming-language-china.org写了一个函数,自动把D语言函数替换成scite自动完成文件格式。使用方法:

1 把相关D语言函数保存到单独文件中

比如D:\scite\abbrev.properties

2 函数格式

每个函数前面加上//函数名=
每个函数后面加上//=函数名
例如:( 本文出处: http://www.d-programming-language-china.org )

//WinMain=
extern (C) void gc_init();
extern (C) void gc_term();
extern (C) void _minit();
extern (C) void _moduleCtor();
extern (C) void _moduleUnitTests();

extern (Windows)
int WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
{
}//=WinMain

3 执行下面函数

把D:\scite\abbrev.properties作为参数传给函数:

//自动替换函数成scite缩写形式
// p=文件路径
char[] abbrevd(char[] p)
{
    //~ char[] p = r"D:\AutoIt\config\abbrev.properties";
    assert(exists(p));
    char[] s = cast(char[]) read( p );
    //~ s = std.regexp.sub(s,r"\s*//[^\r\n]+","","g");        //delete comment
    //bbs.d-programming-language-china.org注 D语言的正则表达式不支持反向引用//$1//,也不支持.跨行,所以用[\s\S]来代替.
    s = std.regexp.sub(s, r"//((\w+)=[\s\S]+?//=\w+)",
        delegate char[] (RegExp m)
        {
            char[] ss = m.match(1);
            //tab
            ss = std.regexp.sub(ss,r"\r\n\t",r"\n\t","g");
            ss = std.regexp.sub(ss,r"\r\n\t{2}",r"\n\t\t","g");
            ss = std.regexp.sub(ss,r"\r\n\t{3}",r"\n\t\t\t","g");
            ss = std.regexp.sub(ss,r"\r\n\t{4,}",r"\n\t\t\t\t","g");

            //替换4个space成tab
            ss = std.regexp.sub(ss,r"\r\n\x20{4}",r"\n\t","g");
            ss = std.regexp.sub(ss,r"\r\n\x20{8}",r"\n\t\t","g");
            ss = std.regexp.sub(ss,r"\r\n\x20{12}",r"\n\t\t\t","g");
            ss = std.regexp.sub(ss,r"\r\n\x20{16,}",r"\n\t\t\t\t","g");

            //newline
            ss = std.regexp.sub(ss,r"\r\n",r"\n","g");
            //bbs.d-programming-language-china.org注,在SciTe缩写文件中,|表示光标位置,所以用||来表示|
            ss = std.string.replace(ss,r"|",r"||");
            return ss;
        },
        "img");

    return s;
}

返回值就是SciTe缩写形式。
在SciTe里点击菜单Options,Open Abbreviations File,会打开abbrev.properties文件,把D语言缩写内容加到后面去就行了。 http://bbs.d-programming-language-china.org是用写了代码自动添加的。

然后在写D语言代码时输入WinMain,再按Ctrl+b就自动完成输入了整个WinMain函数。

( lastupdate:20070508 最新文章请访问http://www.d-programming-language-china.org )

关于一大步成功社区:
yidabu提倡在交流中学习,在分享中提高
收集感兴趣的知识,写下心得,通过网络与别人一起分享
理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的
网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台

TOP

发新话题