2012年1月31日火曜日

アウトライン解析準備中

LREdit に、アウトライン解析機能を準備中。

ctags を使うと、class や method などを行番号つきでリストアップできるので、それをリスト表示したり、カーソル位置がどのMethod 煮所属しているかを表示したりできるはず。

ctags.exe --sort=no -n "test.py"

数年前、ctags で Pythonの解析をしたとき、Method のなかに、class を定義した場合などの、入れ子構造がちょっとだけ複雑になるだけで、間違った解析結果が出ていたのだが、今最新のctagsで動作をチェックすると、その問題は解決したように見える。
 
class Klass1:

    class Klass2:
        def method2(self):
            pass
   
    def method1(self):
       
        class Klass3:
            def method3(self):
                pass 

は、次のように出力される。

!_TAG_FILE_FORMAT    2    /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED    0    /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert    /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME    Exuberant Ctags    //
!_TAG_PROGRAM_URL    http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION    5.8    //
Klass1    test.py    1;"    c
Klass2    test.py    3;"    c    class:Klass1
method2    test.py    4;"    m    class:Klass1.Klass2
method1    test.py    7;"    m    class:Klass1
Klass3    test.py    9;"    c    function:Klass1.method1
method3    test.py    10;"    m    class:Klass1.method1.Klass3

十分にエディタのアウトライン解析機能のために使えそうな印象だ。

2012年1月29日日曜日

LREdit ver 1.39 公開

LREdit ver 1.39 を公開した。

http://sites.google.com/site/craftware/lredit


1.39
  • キーボードのタイプによって、キーコードが異なる記号系のキーに関しても、 文字列でキー入力条件を指定できるようにした。
  • キーボードの種別を自動的に判別するようにした。
  • 選択範囲を大文字化/小文字化するコマンド、ToUpper ToLower を追加。 メニューバーの [編集] > [文字変換] にも追加。

2012年1月28日土曜日

LREdit ver 1.38 公開

LREdit ver 1.38 を公開した。

http://sites.google.com/site/craftware/lredit



1.38
  • キー入力条件を文字列 ( "C-Return" や "Shift-F10" など ) で指定するようにした。
  • プロジェクトファイルが作業ディレクトリ以外に存在するときに、GenerateTags が失敗していたのを修正。
  • 前を検索、の処理を高速化。
  • Ctrl + Shift + Up/Down で、スクロールしながら選択範囲を変更できるようにした。
  • デフォルト設定ファイルで、*.lre が Xmlモードになってしまっていたのを修正。
  • 古いプロジェクトファイル形式の残骸 project_ignore_pattern を削除。

キー入力条件に、Keyhacと似た記述方法で、文字列を与えるようにした。今後他のソフトウェアもこの方法に移行していく予定。

2012年1月22日日曜日

LREdit ver 1.37 公開


LREdit ver 1.37 を公開した。

1.37
  • ブックマークリストにゴミが残ってしまう問題を修正。
  • コマンドラインに直接 [PythonMode] や [JavaMode] のように入力できるようにした。
  • Mode や MinorMode コマンドのパラメタは、モードの表示用の文字列ではなく、[Mode;PythonMode] のようにクラス名を渡すようにした。
  • マイナーモードをフッタに表示するようにした。
  • モードの切り替え時に、ステータスバーに判りやすいメッセージを表示するようにした。
  • Blackテーマのときのスクロールバーが視認しにくかったので、見た目を調整した。
  • ブックマーク一覧の機能に、ローカルとグローバルの2種類を追加した。 ブックマーク一覧のリストウインドウで左右キーで切り替える。

LREdit ver 1.36 公開

LREdit ver 1.36 を公開しました。


http://sites.google.com/site/craftware/lredit

1.36
  • WordBreak の範囲判定が正しくなかったのを修正。
  • マウスによるキャレットの移動位置、テキスト選択範囲の拡張の動作が、 一般的なテキストエディタの動作と食い違っていたのを修正。
  • マイナーモードの例 TestMode の メニューがエラーになっていたのを修正。
  • xml.etree など、標準ライブラリの一部が含まれてなかったのを修正。
  • SubProcess クラスがプロセスの終了までブロッキングになってしまっていたのを修正。
  • ファイルの末尾付近にブックマークがある状態で、 外部でファイルが変更されてブックマークの行がなくなった場合に、 ファイルオープン時にエラーになってしまっていたのを修正。

2012年1月15日日曜日

内骨格 ver 2.16 公開

内骨格 ver 2.16 を公開した。

http://sites.google.com/site/craftware/cfiler



2.16
  • Ctrl + J の 検索結果ジャンプで、Shift を押しながら決定した場合は、検索結果リストをファイルリストに復帰させるようにした。
  • Ctrl + J の 検索結果ジャンプで、リスト空のときにエラーになってしまっていたのを修正。
  • デフォルト設定ファイルの filter_Subversion で、svn.exe を使って動作するようにした。svn 1.7 以降のフォーマットに対応するため。
  • xml.etree など、標準ライブラリの一部が含まれてなかったのを修正。
  • WindowsXP の 描画問題 (http://support.microsoft.com/kb/436093/ja) の回避が不要になったので廃止。

Subversionフィルタは、svn.exe を使うようになったので、速度的に改善の余地があるかも。

2012年1月9日月曜日

LREdit ver 1.35 公開

LREdit ver 1.35 を公開した。

http://sites.google.com/site/craftware/lredit


1.35
  • プロジェクトファイルの形式をテキストファイル形式に変更。テキストエディタで編集するものとした。
  • 左右のツリーペインを廃止。
  • ファイル一覧の機能を追加。
  • ブックマーク一覧の機能を追加。
  • ver 1.33で、描画がおかしくなってしまっていたのを修正。
  • クリップボードから空文字列を Paste したときに、文書が変更済みになってしまうのを修正。
  • テンポラリディレクトリのファイルを履歴に残さないようにした。
  • LoadTags コマンドに引数を渡すことができるようにした。
  • LREditの終了時、サブスレッド処理が完了してから、ウインドウを破棄するようにした。

ツリーペインを廃止。変わりにポップアップリストを使うようにした。
プロジェクトファイルは、GUIで管理するのをあきらめて、テキスト形式にした。

テキストエディタなのだから、プロジェクトファイルも、テキストエディタで編集できるべきだ、という割り切りだ。ただのファイルリストなので、これをプロジェクトファイルと名乗ってよいか迷ったけど。


内骨格 ver 2.15


2.15
  • ver 2.12で、テキストビューアが、ほかのウインドウの奥から出てきたときに、再描画されなくなってしまっていたのを修正。

ついでに、ちょっと描画が速くなっているはず。

2012年1月7日土曜日

内骨格 ver 2.14 公開

内骨格 ver 2.14 を公開した。

http://sites.google.com/site/craftware/cfiler


2.14
  • ver 2.12で、白テーマのときの背景が一部おかしくなってしまっていたのを修正。
  • ver 2.11で、ソート時に、直前のカーソル位置が保存されなくなっていたのを修正。
年末年始の更新分で混入したバグ修正ばっかり。

2012年1月4日水曜日

内骨格 ver 2.13 公開

内骨格 ver 2.13 を公開した。

https://sites.google.com/site/craftware/cfiler


2.13
  • フォント設定が即座に反映されない問題を修正。
  • ver 2.12で、ウインドウのクライアント領域周辺部分の再描画がされなくなっていた問題を修正。
  • アップデータを起動したとき、内骨格のプロセスが残存したままになってしまうのを修正。

2012年1月3日火曜日

Python で日本語テキストの単語区切り処理

LREdit の ver 1.34 で、日本語に配慮したWordBreak処理を実装した。


    wordbreak = ckit.WordBreak(
        ( 
            "\"!@#$%^&*()+|~-=\`[]{};:',./<>?", # 0
            ckit.UnicodeRange(u'0',u'z'),       # 1
            ckit.UnicodeRange(u'、',u'〟'),     # 2
            ckit.UnicodeRange(u'ぁ',u'ゖ'),     # 3
            " \t",                              # 4
        ),
        {
            -1 : [ 0, 1, 2 ],
             0 : [ -1, 1, 2, 3 ],
             1 : [ -1, 0, 2, 3 ],
             2 : [ -1, 0, 1, 3 ],
             3 : [ -1, 0, 1, 2 ],
             4 : [ -1, 0, 1, 2, 3 ],
        }
    )


この自作のWordBreakクラスには、どの文字種とどの文字種の間が単語区切りであるかを表すテーブルを渡す。

LREditでは、


    例) このソフトウェアは、柔軟なカスタマイズが可能なテキストエディタです。

は、以下のように分割される。


    この
    ソフトウェアは
    、
    柔軟な
    カスタマイズが
    可能な
    テキストエディタです
    。

平仮名は、送り仮名として使用するケースも多いので、漢字やカタカナの後ろに平仮名があっても、そこを単語区切りとは判別していない。

また、スクリプト言語、や、アドホック通信、のように、カタカナと漢字を組み合わせて単語として扱うケースも多いことから、漢字とカタカナの間も単語区切りとは判別していない。


日本語以外の文字種については、まったく考慮できていないので、もしこのテーブルを改善できる方がいたら大歓迎だ。

LREdit ver 1.34 公開

LREdit ver 1.34 を公開した。

http://sites.google.com/site/craftware/lredit


1.34
  • 日本語の文字についての単語区切りを実装。
  • 対応括弧へジャンプ ( Ctrl + B )、対応括弧まで範囲選択 ( Ctrl + Shift + B ) を追加。
  • フォント設定が表示に即座に反映されない問題を修正。
  • フォント設定がIMEのフォントサイズに即座に反映されない問題を修正。
  • Grep中にメモリ不足エラーが発生したときに、Grepが中断されてしまう問題を修正。


2012年1月2日月曜日

内骨格 ver 2.12 を公開した。

https://sites.google.com/site/craftware/cfiler


2.12
  • 描画速度を改善
  • Windows のフォント描画の設定で ClearType が有効になっている場合は、ClearType の品質でフォントを描画するようにした。
  • ファイルリストのグラデーションの表示が壊れてしまうことがあったのを修正。

LREdit ver 1.33 公開

LREdit ver 1.33 を公開した。

https://sites.google.com/site/craftware/lredit

1.33
  • 描画速度を改善
  • Windows のフォント描画の設定で ClearType が有効になっている場合は、ClearType の品質でフォントを描画するようにした。
  • Ctrl + ↑/↓ のスクロールを3行ずつにした。

手元の Windows 7 64bit では、ANTIALIASED_QUALITY は、CLEARTYPE_QUALITY よりもずいぶんと遅いようだ。
しかも、ANTIALIASED_QUALITY を使ったときのフォントの品質が悪い。
ANTIALIASED_QUALITYではなく、DEFAULT_QUALITYを使うようにしたら、 OSのフォント品質の設定に従うようになるうえに、速度も向上した。

あと、テキスト描画を最小限にすることで、速度の改善を行った。