How My Heart Sings

Tue, 01 Feb 2011

オレオレ版taskpaper.vim

taskpaper.vimは、HogBaySoftwareが提唱しているtodo-listのフォーマットをvimで扱うためのプラグインです。taskpaperのフォーマットを扱うプラグインの類いはBBEdit向けほか、リッチなものから簡素なものまで、有料なものだってあるのです。

元はただの書式付きテキストファイルなんで、有料の専用ソフトを買うのも何だかなーと思って、自分はvimで使っています。いや、有料のソフトのほうがリッチなんですけど。で、このvim用プラグインは簡素なほうなので、拡張してみました。ちょうべんり。

"setlocal iskeyword+=@-@
setlocal iskeyword+=@-@,(

taskpaperはタスクに@due(20110202)みたいに自由にタグを付けて管理できるのですが、元のままだと例のようなタグは括弧の手前までしか認識してくれないので。

function! s:ToggleDoneWithRepeat()

    let line = getline(".")
    if (line =~ '^\s*- ')
        let repl = line
        if (line =~ '@done')
            let repl = substitute(line, "@done\(.*\)", "", "g")
            echo "undone!"
            call setline(".", repl)
        else
            let today = strftime("%Y-%m-%d", localtime())
            let done_str = " @done(" . today . ")"

            let aUserInputDate = input("Input next due date(yyyymmdd): ")
            let next_due_str = " @due(" . aUserInputDate . ")"

            let repl = substitute(line, "@due\(.*\)", "", "g")
            let repl = substitute(repl, "$", next_due_str , "g")
            
            let repl2 = substitute(line, "$", done_str , "g")
            echo "done, archive and repeat!"
            call setline(".", repl)
            call setline("$", repl2)
        endif
    else 
        echo "not a task."
    endif

endfunction

" toggle @done context tag on a task and archive 
function! s:ToggleDoneAndArchive()

    let line = getline(".")
    if (line =~ '^\s*- ')
        let repl = line
        if (line =~ '@done')
            let repl = substitute(line, "@done\(.*\)", "", "g")
            echo "undone!"
            call setline(".", repl)
        else
            let today = strftime("%Y-%m-%d", localtime())
            let done_str = " @done(" . today . ")"

            let repl = substitute(line, "$", done_str , "g")
            echo "done and Archive!"
            call setline(".", "")
            call setline("$", repl)
        endif
    else 
        echo "not a task."
    endif

endfunction

元のプラグインからコピペして、ファンクションを二つ追加しました。最初のはdoneにする際に対話的にdue dateを入力させ次回用のタスクにタグとして付ける・完了したタスクはファイルのお尻に移動するところまで一発で実行するもの。次のは一発でタスクを完了させてファイルのお尻に移動するだけのもの。後追加しなきゃいけないのは呼び出し周辺で、これはプラグインのソースを見ればすぐ分る。キーバインドはお好みで。

"map <buffer> <silent> <LocalLeader>tk mA <Plug>ToggleDone ddGp 'A
"map <buffer> <silent> <LocalLeader>tr mA yy p <Plug>ToggleDone 'A

最初はすぐ上のような感じで簡易に汚ないことをしていて、別に問題無かったのですが、これだとファインクションが出してるメッセージが消えちゃうしということで、ちゃんと作ろうと思ったのです。ちなみに、ウインドウズでしか試していません。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Wed, 10 Nov 2004

おお、iMacのみならずEndeavorまで

死んでしまうとは情け無い。いや、正確にはういんどうずがセーフモードでしか起動出来ない状態になっただけですが。ちょっと分っている人なら簡単に対処出来るんでしょうが、じぶんはちっとも分ってない人ですから…

…これもある意味じぶんのせい。何をしたかは恥ずかしいので書きません。

まあ、bootman(BeOSのブートマネージャー)は無事だし別パーティションに入っているBeOSの方は起動出来るし。

などといいつつ、アップルストアで見積もりとか取ってみたり。最小構成のiMac G5で搭載メモリを増すと、うーん、じゅうはちまんえんくらいかぁ。同様に、eMacだとじゅうにまんえんくらい、iBookだとじゅうごまんえんくらい。素の256メガバイトでは足らないしなぁ。振り返ってみると、今まで一度も最新機種を買ったこと無いんです。せっかくだからこれを機会に…買う気なのか。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Wed, 25 Feb 2004

skkIMEの話し

あ、skkIMEskkWindowsにおける実装です。

最近のスナップショットでは辞書への登録が上手くいかないなあ、もう何ヶ月も経つのに直らないなあ、などと思っていたのですが....たった今、ゲームモードというのがあることを知りまして、これを解除すれば問題無く辞書登録出来ることを知りました。...いや、そんだけ。ちゃんと説明を読めや、半年近くも何をやっているのか、自分。

ああ、最近はバカの記事ばかり...

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Le violon intérieur....
Yasuo Yamashita
vaiorinnhiATTOnaDOTrimDOTorjye-pi-
Y.A.S.U.O Ytterbium Artificial Sabotage and Utility Organism Y.A.S.U.O Yelling Abomination from the Sunless Underground Oasis

Pyblosxom and plugins. For detail, see http://viole.sakura.ne.jp/blosxom/blosxom.cgi/plugin_info