Posts tagged ‘Tcl’

2009/10/04

フォルダ内を再帰的に検索

by ctrans

再帰的にフォルダ内を検索して条件に合うファイルを取得するための関数。
引数のdirには検索対象のフォルダのパス、masksには「*.txt *.exe」のように取得したいファイルの種類をリストで渡します。
返り値はファイル名のリストです。

proc globRecursive {dir masks} {
  set result [list]
  foreach cur [lsort [glob -nocomplain -dir $dir *]] {
    if {[file type $cur] == "directory"} {
      eval lappend result [globRecursive $cur $masks]
    } else {
      foreach mask $masks {
        if {[string match $mask $cur]} {
          lappend result $cur
          break
        }
      }
    }
  }
  return $result
}
2009/09/20

プラグイン

by ctrans

Pinconvにプラグイン(アドオン)のような仕組みを導入しようと思って脳みそを絞る。
プラグインの仕組みが実現できれば、必要な機能だけ利用し、いらない機能はインストールしないで済むのでスッキリする。私はパソコン上で行う作業をすべてPinconvでできるようにしたいけれど、一般的なユーザはもちろんそうではないだろうし、Pinconvがゴチャゴチャ重くなるのを嫌う人もいるだろう。
今のところ、プラグインとして切り離そうと考えているのは以下の機能。

  • Grep
  • 文字カウント
  • 見出し一覧
  • 曖昧検索
  • 校正(Yahoo)

内部的に修正しないといけないところがかなりある。

2009/05/08

Tcl拡張 – edit 1.00

by ctrans
edit
a text widget with highlighting support for Tcl/Tk

NAME

edit (version 1.02 – 2010-01-21)
download: edit.zip
screenshot: demo1, demo2

REQUIREMENT

hashtrie 1.0
unicodeblock 1.1

SYNOPSIS

package require Tk
package require hashtrie 1.0
package require  unicodeblock 1.1
package require edit  ? 1.0 ? 
edit pathName  ? options ? 
edit::addHighlightWord pathName word class
edit::deleteHighlightWord pathName word
edit::generateHighlightRule sourcefile rulefile
edit::addHighlightRgx pathName pattern tagname
edit::deleteHighlightRgx pathName pattern
edit::defineBrackets pathName brackets
edit::defineTextTag filename
edit::applyTextTags pathName tags
edit::linemapPopup X Y menu
edit::getAllMarkedIndex pathName startIndex endIndex
edit::getMarkedLine pathName index direction
pathName highlight startIndex endIndex
pathName copy
pathName cut
pathName paste
pathName append
pathName configure option value  ? ... ?
pathName refresh

read more…

2009/05/07

Tcl拡張 – hashtrie

by ctrans

一括置換やLongest Common Prefix Searchなどを行うためのtrie風データ構造です。
今のところ、渡されるtrieの中身などはチェックしていません。そのうち直します。
拡張名:hashtrie
ダウンロード:hashtrie.zip
使い方は下記参照:

% package require hashtrie
1.0
% set trie [hashtrie::new]
{} {} 0 {}
% set trie [hashtrie::add $trie test テスト]
{t-0 1 e-1 2 s-2 3 t-3 4} {4 テスト} 4 {4 test}
% set trie [hashtrie::add $trie check チェック]
{t-0 1 e-1 2 s-2 3 t-3 4 c-0 5 h-5 6 e-6 7 c-7 8 k-8 9} {4 テスト 9 チェック} 9 {4 test 9 check}
% set d [dict create 今日 きょう 明日 あした 明後日 あさって]
今日 きょう 明日 あした 明後日 あさって
% set trie [hashtrie::import $trie $d]
{t-0 1 e-1 2 s-2 3 t-3 4 c-0 5 h-5 6 e-6 7 c-7 8 k-8 9 今-0 10 日-10 11 明-0 12 日-12 13 後-12 14 日-14 15} {4 テスト 9 チェック 11 きょう 13 あした 15 あさって} 15 {4 test 9 check 11 今日 13 明日 15 明後日}
% hashtrie::exists $trie 今日
1
% hashtrie::replace $trie "今日と明日はtestで忙しい。"
きょうとあしたはテストで忙しい。
% hashtrie::remove trie check
1
% puts $trie
{t-0 1 e-1 2 s-2 3 t-3 4 c-0 5 h-5 6 e-6 7 c-7 8 k-8 9 今-0 10 日-10 11 明-0 12 日-12 13 後-12 14 日-14 15} {4 テスト 11 きょう 13 あした 15 あさって} 15 {4 test 11 今日 13 明日 15 明後日}

read more…

2009/03/11

Tcl拡張 – unicodeblock

by ctrans

与えられた文字のUnicode Block名を返すTcl用の拡張です。

拡張名:unicodeblock
ダウンロード:unicodeblock.zip
使い方:

set blockname [unicodeblock::getblock "字"]
2008/03/24

Full Screen Editor – Wu

by ctrans

wu

Wu はフルスクリーンエディタです。WriteroomDark Roomのように集中して文章を書くための環境を提供します。起動すると黒い画面にカーソルだけが浮かび、文章を書く以外のことができなくなります。
Wu is a full screen editor that offers a distraction-free writing environment such as Writeroom or Dark Room. Only black screen and a cursor are shown when starting Wu. All you can do is to write text.

wuDownLoad: wu.zip (1.59MB)

注意:フルスクリーンエディタですので、「閉じる」ボタンなども表示されません。Wu を終了する際は、Ctrl+Qを押します。フルスクリーン表示をやめる時は「Escape」キーを押して下さい。

read more…