为[サクラエディタ]编写TODO帳的标记时间功能

为[サクラエディタ]编写TODO帳的标记时间功能

TODO帳可以记录进度,为了把握历史进度,往往会记录状态和状态变化的时间,比如开始时间、更新时间、完成时间等。而サクラエディタ可以编写JavaScript的宏,利用本文设计的宏可以快速记入状态和时间而省去了手动输入状态和时间的麻烦。

利用SakuraEditor自带的宏命令,实现任务的开始,暂停,中止和完成状态,以及标记时间。

编写一个如下js文件

<?xml version="1.0"?>
<component>
<public>
        <method name="setAction">
                <PARAMETER name="Editor"/>
                <PARAMETER name="act"/>
        </method>
</public>

<script language="JScript">
<![CDATA[
function setAction(Editor,act)
{
    km = {"s":{"sign":"[>] ","word":"Start "},
          "f":{"sign":"[O] ","word":"Finish"},
          "c":{"sign":"[X] ","word":"Cancel"},
          "p":{"sign":"[=] ","word":"Pause "} 
         }
    Editor.MoveHistSet();
    Editor.GoLineEnd();
    Editor.SearchPrev("\\[.\\] ",4);
    Editor.Replace("\\[.\\] ",km[act]["sign"],0x084);
    Editor.MoveHistPrev();
    Editor.SearchClearMark();
    Editor.GoLineEnd();
    Editor.Char(13);

    d = new Date();
    dateString =  "" + (d.getYear()) 
        + "/" + ( '00' + (1 + d.getMonth()) ).slice( -2 )
        + "/" + ( '00' + d.getDate() ).slice( -2 )
        + " " + ( '00' + d.getHours() ).slice( -2 )
        + ":" + ( '00' + d.getMinutes() ).slice( -2 )

    Editor.InsText("\t(" + km[act]["word"] +"@" + dateString + ")");
    Editor.SearchClearMark();
    Editor.MoveHistPrev();
    Editor.MoveHistPrev();
    Editor.MoveHistPrev();
}
]]>
</script>
</component>

var oFunc = GetObject("Script:"+PATH+"setActionCore.wsc");
oFunc.setAction(Editor, "s");

将它登录到外部宏,构造如此四个外部宏,并给这四个宏指定四个快捷键(比如我指定的是Alt+S,Alt+C,Alt+F,Alt+P),即可实现。


以下为一种早期的实现方案,我觉得不够好用,已重新设计交互方式。



发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注