字下げツール
や
貼付ツール
を作ったときの部品を使っての、テキストを配置するツールです。
この手のCUIなテキスト物のツールは、漢字の扱いの敷居が高かったりします。
4年前に作ってた
CUI14
でも、ASCIIコードの範囲内に留まっていました。
字下げツール
では、nkfコマンドのお力を借りてpythonから実行するなど、
ボチボチと漢字チャレンジの機運が高まってきました。
ここらで、漢字でもOKな「使えるツール」を目標に作ってみました。
端末や保存するテキストファイルの漢字のエンコーディングは、UTF-8 以外でもOK。
当然ながらnkfコマンドが使える環境が前提です。
一応、python2でもpython3でも動くよう気をつけてます。
字下げツールの時の部品は、以前のAPIは残しつつ、ちょこちょこ機能追加してます。
$ tar xzf argmnt_v1.tgz
$ cd argmnt
データファイルは毎度お馴染みのYAML形式。
最初は種になる文字列のリストだけです。
txt.yaml
$ cat txt.yaml | nkf -g
ISO-2022-JP
$ cat txt.yaml | nkf -u
- 資料1
- 連邦
- - ホワイト
- ぺース
- ガンダム
- ガンキャノン
- カンタンク
- アムロ・レイ
- ジオン
- ザク
- グフ
- ドム
- |
シャア・
アズナブル
# EOF
「ホワイトべース」の箇所のように、リストのリストにすると
複数行の「かたまり」になります。
「シャア・アズナブル」の箇所のように、
YAML形式で文字列に「改行」を入れても同様です。
ツール本体は argmnt.py で、このYAMLデータを標準入力で受けとります。
YAMLデータの漢字エンコーディングと、端末の漢字エンコーディングが異なるときは、
貼付ツール
と同様に-oのあとにnkfのオプションに従った1文字で指定します。
- -oj : ISO-2022-JP (JIS)
- -oe : EUC-JP
- -os : Shift_JIS
- -ou : UTF-8
$ cat txt.yaml | ./argmnt.py -ou > save.yaml
argmnt.py を実行すると、文字列が表示されるので、編集します。
操作は基本的に、
矢印キーでカーソル'+'を移動して、
ENTERキーかスペースキーで選択。
終了は'Q'キー。
編集結果のデータは、YAML形式で標準出力に出されるので、
リダイレクトで保存用のファイルに落とします。
貼付ツール
のように、ファイルを指定して上書き保存するようにしたいところですが、
未だ対応できてません。
- 矢印キーでカーソル'+'を移動
- 文字列の上でENTERキーかスペースキーで選択
- 選択すると反転表示
- 矢印キーで移動
- 移動後はENTERキーかスペースキーで選択解除
- Qキーで終了

- 保存したYAMLデータを読み込ませて、続きの編集
- 保存したYAMLデータのトップレベルはリスト
- 保存したYAMLデータに文字列を追加したければ、リストの要素として文字列を追加できる

- argmnt.py を -txt オプションをつけて起動すると、標準出力に配置結果のテキストを出力
- 例によって-oのあとにnkfのオプションに従った1文字で指定で、エンコーディング変更可能

- 選択した直後に矢印キーによる移動をせずに、さらにENTERキーかスペースキーで、「枠」選択モードに
- 「枠」選択モードでは、枠の領域が下線つきで表示される
- 最初は「枠なし」の状態で下線だけの表示
- 矢印キーで「枠」の種類を変更し、ENTERキーかスペースキーで決定
- 枠の種類は今のところ3種類
枠の種類の定義は argmnt.py 冒頭の frm_info の箇所
$ head -20 argmnt.py
#!/usr/bin/env python
import sys
:
import txview
#import dbg
frm_info = {
'': ' ',
'a': '+-|',
'b': ' -|',
'c': '===',
}

- 枠のサイズを変更するには、選択時にカーソルを「枠」の上に置いて選択する
- ENTERキーかスペースキーで、移動モード、「枠」選択モード、と遷移するのはこれまで通り
- そこからさらにENTERキーかスペースキーで、「枠」サイズ変更モードに入る
- 「枠」サイズ変更モードでは、枠だけ反転表示
- 矢印キーでサイズを変更し、ENTERキーかスペースキーで決定

- 枠とその中の文字列の間にスペースがあるときは、デフォルトのセンタリング以外の配置も選択可能
- 例によって「枠」サイズ変更モードで、矢印キーを押さずに、さらにENTERキーかスペースキー
- これで枠内の文字列の配置選択モードに
- このモードでは、文字列だけが反転表示に
- 例によって矢印キーで上下方向、左右方向の配置が選択できる
- ENTERキーかスペースキーで決定

- 複数行の文字列の「かたまり」のときは、文字列に対して「寄せ」の選択可能
- この場合は、選択時にカーソルを「文字列」の上に置いて選択する (枠の上ではダメ)
- 選択後、矢印キーは押さずにENTERキーかスペースキーでモードを変更
- 移動モード、枠選択モードの次に、「寄せ」指定モードに入る
- 「寄せ」指定モードでは、文字列だけが下線つき表示に
- 矢印キーで変更して、ENTERキーかスペースキーで決定

- カーソル移動でpage up/downキー対応
- 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- 重なってるときは見えてる方が選択されるようにする
- データYAMLファイルを上書き更新できるように
- 直線を描けるように
v2.patch
$ cat v2.patch | patch -p1
page up/downキーで、画面ビューの見えてる範囲で上下の端まで移動。
'^'と'$'、C-aとC-eで、同様に左右の端まで移動。
v1で処理は入ってましたが、矢印キーの扱いの都合で封印されていました。
スペースキーは決定の扱いに専念してもらい、page downは'F'キーに変更しました。
key.py でスペースキーの扱いをちょっと変えましたので、ins.py で操作性にちょっとだけ影響が出ます。
対応してみました。
これで下に重なってる部品でも、見えていれば選択できるようになりました。
下に隠れている側が選択されていましたが、
表示順と、選択時のサーチ順が、逆になるようにして対応してみました。
貼付ツール
と同様に、コマンド引数でファイルパスを指定可能にしました。
ファイルパスに'-'を指定したり、指定が無ければこれまで通り、標準入力を使います。
編集後のYAMLデータは基本的に、標準出力に出しますが、
これまた
貼付ツール
同様に -i オプションを付けると、標準出力には出さずに入力ファイルを上書きします。


カーソル移動でpage up/downキー対応
選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
重なってるときは見えてる方が選択されるようにする
データYAMLファイルを上書き更新できるように
- 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- 直線を描けるように
v3.patch
$ cat v3.patch | patch -p1
ちょっとトライしてみたのですが、描画がかえって遅くなってしまいました。
(
v2_5_rects_heavy.tgz
)
画面表示の更新が必要な領域を、重複しない複数の矩形に細かく分割し、
なるべく不要な描画を避けるようにして試してみましたが、明らかに動作が重くなってしまいました。
細かな矩形ごとにtxbufを生成して、全オブジェクトから領域にかかるものを判定して、描画させてたので、さすがに重かったようです。
なので一旦バージョン2の描画処理に戻し、端末に出力するところだけ、まとめて出すようにして、少しだけキビキビ感を出してみました。
対応を少しだけ入れてみました。
- 文字列や枠以外の空白部分にカーソルを移動し、ENTERキーかスペースキーで直線追加モードに
- 直線追加モードに入ると、カーソルは反転表示
- 矢印キーでカーソルを移動すると、直線が描かれ
- 矢印キーで向きを変えてると折線に
- ENTERキーかスペースキーで決定し、直線追加モードから抜ける
- カーソルを直線の上に移動し、ENTERキーかスペースキーで選択
- 従来の文字列と同様に直線が反転表示に
- 矢印キーで平行移動し、ENTERキーかスペースキーで決定

カーソル移動でpage up/downキー対応
選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
重なってるときは見えてる方が選択されるようにする
データYAMLファイルを上書き更新できるように
- 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- -iでファイルを上書きするときにバックアップファイルを作るように
直線を描けるように
- -txtでも直線を出力できるように
- 直線を削除できるように
- 直線の始点、終点で、矢印表示を選べるように
v4.patch
$ cat v4.patch | patch -p1
貼付ツール
の "-i" と同様にバックアップファイルを残すようにしてみました。
上書きするときは、オリジナルのファイルを
xxx.0 のファイル名で残します。
もし xxx.0 があれば xxx.1, 2, 3... と増えます。
対応しました。
まとめて対応してみました。
- カーソルを直線の上に移動し、ENTERキーかスペースキーで選択
- 従来の文字列と同様に直線が反転表示に
- 矢印キーで平行移動せずに、さらにENTERキーかスペースキーで直線の種類選択モードに
- 直線の種類選択モードでは、枠選択のときと同様に下線つきの表示
- 矢印キーで種類を変更し、ENTERキーかスペースキーで決定
- 矢印キーで種類を変更していくと、何も表示されない状態がある
- 何も表示されない状態で、ENTERキーかスペースキーで決定すると直線が削除される

カーソル移動でpage up/downキー対応
- [[ - | 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- [[ - | 重なってるときは見えてる方が選択されるようにする
- [[ - | データYAMLファイルを上書き更新できるように
- 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- [[ - | "-iでファイルを上書きするときにバックアップファイルを作るように"
- [[ - | 直線を描けるように
- [[ - | "-txtでも直線を出力できるように"
- [[ - | 直線を削除できるように
- [[ - | 直線の始点、終点で、矢印表示を選べるように
- 直線を変形できるように
- 単独の「枠」だけを追加できるように
v5.patch
$ cat v5.patch | patch -p1
- 文字列や枠以外の空白部分にカーソルを移動し、ENTERキーかスペースキーで直線追加モードに
- 直線追加モードに入ると、カーソルは反転表示
- 矢印キーでカーソルを移動せずに、ENTERキーかスペースキーで、単独の「枠」だけ追加モードに
- 矢印キーでカーソルを移動せずに、ENTERキーかスペースキーで、
- 単独の「枠」だけ追加モードに入ると、カーソルは'#'に
- 矢印キーでカーソルを移動すると、矩形が描かれ
- ENTERキーかスペースキーで決定し、単独の「枠」だけ追加モードから抜ける
- カーソルを単独の「枠」の上に移動し、ENTERキーかスペースキーで選択
- 例によって、反転表示に
- 矢印キーで平行移動し、ENTERキーかスペースキーで決定
- カーソルを単独の「枠」の上に移動し、ENTERキーかスペースキーで選択
- 例によって、反転表示に
- 矢印キーで平行移動せずに、さらにENTERキーかスペースキーで単独の「枠」の種類選択モードに
- 種類選択モードでは、例によって、下線つきの表示
- 矢印キーで種類を変更し、ENTERキーかスペースキーで決定
- 矢印キーで種類を変更していくと、何も表示されない状態がある
- 何も表示されない状態で、ENTERキーかスペースキーで決定すると単独の「枠」が削除される
- カーソルを単独の「枠」の上に移動し、ENTERキーかスペースキーで選択
- 例によって、反転表示に
- 矢印キーで平行移動せずに、さらにENTERキーかスペースキーで単独の「枠」の種類選択モードに
- 例によって、下線つきの表示
- 矢印キーで種類を変更せずに、さらにENTERキーかスペースキーで単独の「枠」のリサイズモードに
- 単独の「枠」のリサイズモードでは、枠は反転表示で、カーソルが表示される
- 矢印キーでサイズを変更し、ENTERキーかスペースキーで決定
単独の「枠」のリサイズで、カーソルの最初の位置が頂点じゃなときは、
ちょっと独特な動作になってしまいました。
頂点まで移動してしまうと、「頂点以外な状態」に戻れません...
が、さほど害は無さそうなのでOK
- p:

- [[ - | カーソル移動でpage up/downキー対応
- [[ - | 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- [[ - | 重なってるときは見えてる方が選択されるようにする
- [[ - | データYAMLファイルを上書き更新できるように
- 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- [[ - | "-iでファイルを上書きするときにバックアップファイルを作るように"
- [[ - | 直線を描けるように
- [[ - | "-txtでも直線を出力できるように"
- [[ - | 直線を削除できるように
- [[ - | 直線の始点、終点で、矢印表示を選べるように
- 直線を上か左向きに描き始めると、始点がズレるバグの対策
- 直線を変形できるように
- [[ - | 単独の「枠」だけを追加できるように
- オブジェクトがコピぺできるように
v6.patch
$ cat v6.patch | patch -p1
対策しました。
その他コードを整理して rect.py txbuf.py へのれん分け。
- カーソルを直線の上に移動し、ENTERキーかスペースキーで選択
- 例によって、反転表示に
- 矢印キーで平行移動せずに、さらにENTERキーかスペースキーで種類選択モードに
- 例によって、下線つきの表示
- 矢印キーで種類を変更せずに、さらにENTERキーかスペースキーで直線の変形モードに
- 直線の変形モードでは、直線は反転表示で、カーソルが表示される
- 矢印キーで直線を変形し、ENTERキーかスペースキーで決定
単独の「枠」のリサイズの時と同様に、
カーソルの最初の位置が頂点じゃなときは、
ちょっと独特な動作になってしまいました。

作った本人ですら、どう変形するのかピンときてません。
変形させるより、削除して作りなおした方が簡単かも...
- [[ - | カーソル移動でpage up/downキー対応
- [[ - | 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- [[ - | 重なってるときは見えてる方が選択されるようにする
- [[ - | データYAMLファイルを上書き更新できるように
- 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- [[ - | "-iでファイルを上書きするときにバックアップファイルを作るように"
- [[ - | 直線を描けるように
- [[ - | "-txtでも直線を出力できるように"
- [[ - | 直線を削除できるように
- [[ - | 直線の始点、終点で、矢印表示を選べるように
- [[ - | 直線を上か左向きに描き始めると、始点がズレるバグの対策
- [[ - | 直線を変形できるように
- [[ - | 単独の「枠」だけを追加できるように
- オブジェクトがコピぺできるように
v7.patch
$ cat v7.patch | patch -p1
対応してみました。
対応してみました。
- オブジェクトの上にカーソルを移動し、ENTERキーかスペースキーで選択
- 例によって、反転表示に
- 矢印キーで移動せずに、'c'キーでクリップボードにコピー
- 矢印キーで移動せずに、'x'キーならばカットしてクリップボードに
- 選択は解除され、カーソル移動可能な状態に戻る
- クリップボードにオブジェクトがある状態で、'v'キーでペースト
- ペーストされたオブジェクトは選択された状態になる
- 矢印キーで移動のモードに
- 矢印キーで移動せず、ENTERキーかスペースキーで種類選択モードなどに...
ペースト直後は、移動不要の場合でも、
矢印キーで多少移動して位置を決めた方が、モード遷移が少なく楽です ;-p)

- [[ - | カーソル移動でpage up/downキー対応
- [[ - | 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- [[ - | 重なってるときは見えてる方が選択されるようにする
- [[ - | データYAMLファイルを上書き更新できるように
- [[ - | 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- [[ - | "-iでファイルを上書きするときにバックアップファイルを作るように"
- [[ - | 直線を描けるように
- [[ - | "-txtでも直線を出力できるように"
- [[ - | 直線を削除できるように
- [[ - | 直線の始点、終点で、矢印表示を選べるように
- [[ - | 直線を上か左向きに描き始めると、始点がズレるバグの対策
- [[ - | 直線を変形できるように
- [[ - | 単独の「枠」だけを追加できるように
- [[ - | オブジェクトがコピぺできるように
- 直線の変形で始点、終点の移動で頂点を通り過ぎると表示が乱れるバグの対策
- 重なったときの前後関係を調整できるように
- ESCキーでいろいろキャンセルできるように
v8.patch
$ cat v8.patch | patch -p1
対応しました。
ちょっと怪しいので、まだ他にも何か出るかも...
対応してみました。
- オブジェクトの上にカーソルを移動し、ENTERキーかスペースキーで選択
- 例によって、反転表示に
- 矢印キーで平行移動せずに、'd'キーで「重なりの前後関係調整モード」に
- 「重なりの前後関係調整モード」では、反転表示かつカーソルは'd'になる
- 矢印キーを押していくと、選択してるオブジェクトの深さの位置を変更
- 反対方向の矢印キーで、逆方向に深さを変更
- ENTERキーかスペースキーで決定
対応してみました。
- 各種の選択状態: 選択を解除
- 移動: 移動前の位置に戻して選択を解除
- リサイズ、変形: 元のサイズ、形に戻して選択を解除
- 種類の選択: 元の種類に戻して選択を解除
- 直線、矩形の追加: 追加を取り消し
- 重複時の前後関係の変更: 元の前後関係に戻して選択を解除
これで選択解除状態にするのに、ENTERキーかスペースキーを連打して、モード遷移しまくっていたのが、
ESCキー一発で済むようになりました。
直線や単独の矩形の削除についても
バージョン7
で「カット」に対応しているので、
種別を「なし」の状態に設定しなくても選択して'x'キー一発でOKです。

- [[ - | カーソル移動でpage up/downキー対応
- [[ - | 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- [[ - | 重なってるときは見えてる方が選択されるようにする
- [[ - | データYAMLファイルを上書き更新できるように
- [[ - | 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- [[ - | "-iでファイルを上書きするときにバックアップファイルを作るように"
- [[ - | 直線を描けるように
- [[ - | "-txtでも直線を出力できるように"
- [[ - | 直線を削除できるように
- [[ - | 直線の始点、終点で、矢印表示を選べるように
- [[ - | 直線を上か左向きに描き始めると、始点がズレるバグの対策
- [[ - | 直線を変形できるように
- [[ - | 単独の「枠」だけを追加できるように
- [[ - | オブジェクトがコピぺできるように
- [[ - | 直線の変形で始点、終点の移動で頂点を通り過ぎると表示が乱れるバグの対策
- [[ - | 重なったときの前後関係を調整できるように
- [[ - | ESCキーでいろいろキャンセルできるように
- -oのあとにnkfのオプションに従った1文字指定で'-'追加もれがある
- 直線の種類選択で最初の1つ矢印は終点側の方に
- カーソルやオブジェクの移動やリサイズの刻み幅を可変に
- オブジェクトをグループ化してまとめて移動できるように
せっかくなので、本ツールで本ツールの状態遷移図を描いてみました。
このサイズ感だと作成はかなり困難で、くたびれました。
カーソル移動の範囲が広いと、なかなか辛いものがありますね。
テキストの追加が「その場」で出来ないので、
いちいち「終了」「YAMLの編集」「起動しなおし」しなければならず。
改善の余地ありですね。
preタグでテキストを貼り付けて試してみたのですが、
手持ちの環境のブラウザで見ると、
フォントのスペースの幅が等幅になっておらず、
表示が揃いませんでした。orz
端末の画面の動画でお茶を濁しておきます。;-p)

v9.patch
$ cat v9.patch | patch -p1
対策しました。
対応しました。
- タブキーで刻み幅変更モードに
- 刻み幅変更モードでは、カーソルが1,2,4,8の刻み幅を示すいづれかの数字で下線つきの表示に
- 矢印キーで刻み幅を変更
- ENTERキーかスペースキーで決定すると元のモードに
- エスケープキーではキャンセルし、変更前の刻み幅に戻して元のモードに
ただし、タブキーで刻み幅変更モードに移れるのは、次のモードからだけにしました。
- カーソル移動
- オブジェクトの移動
- オブジェクトのリサイズ
- 直線追加
- 矩形追加
また、これらのモード以外では、矢印キーによる動作は従来通りです。
なので例えば、刻み幅を2に変更してる状態でも、
種類の変更で矢印キーで、2ついっぺんに種類の候補が進められる事はありません。

- [[ - | カーソル移動でpage up/downキー対応
- [[ - | 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- [[ - | 重なってるときは見えてる方が選択されるようにする
- [[ - | データYAMLファイルを上書き更新できるように
- [[ - | 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- [[ - | "-iでファイルを上書きするときにバックアップファイルを作るように"
- [[ - | 直線を描けるように
- [[ - | "-txtでも直線を出力できるように"
- [[ - | 直線を削除できるように
- [[ - | 直線の始点、終点で、矢印表示を選べるように
- [[ - | 直線を上か左向きに描き始めると、始点がズレるバグの対策
- [[ - | 直線を変形できるように
- [[ - | 単独の「枠」だけを追加できるように
- [[ - | オブジェクトがコピぺできるように
- [[ - | 直線の変形で始点、終点の移動で頂点を通り過ぎると表示が乱れるバグの対策
- [[ - | 重なったときの前後関係を調整できるように
- [[ - | ESCキーでいろいろキャンセルできるように
- [[ - | "-oのあとにnkfのオプションに従った1文字指定で'-'追加もれがある"
- [[ - | 直線の種類選択で最初の1つ矢印は終点側の方に
- [[ - | カーソルやオブジェクの移動やリサイズの刻み幅を可変に
- オブジェクトをグループ化してまとめて移動できるように
v10.patch
$ cat v10.patch | patch -p1
- カーソルをオブジェクトの上に移動し、ENTERキーかスペースキーで選択
- 例によって、反転表示に
- 'm'キーで複数選択モードに
- 複数選択モードでは、反転表示かつカーソルは'm'に
- カーソルをオブジェクトの上に移動し、ENTERキーかスペースキーで選択オブジェクトを追加
- 既に選択済みのオブジェクトならば、逆に選択は解除される
- 'm'キーで複数選択モードを終了し、通常の選択モードに戻る
- 複数選択モード中にエスケープキーを押すと、複数選択をキャンセルして、通常の選択モードに戻る
- オブジェクトが複数選択された状態からは、矢印キーでまとめて移動可能
- オブジェクトが複数選択された状態からは、ENTERキーかスペースキーで種類選択のモードに...
- 移動以外のモードでは、最初に選択したオブジェクトだけに処理を適用
かなり盛大に変更してしまいました。
エスケープキーによるキャンセルの動作が、
従来のものから多少変わってしまってます。
エスケープキー1回ではカーソル移動モードまで戻らず、
各種の選択モードまで戻って、やり直せます。
逆に、操作がややこしくなってしまいましたが、
エスケープキー連打でキャンセルすると、カーソル移動モードに戻れるはずです。

- [[ - | カーソル移動でpage up/downキー対応
- [[ - | 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- [[ - | 重なってるときは見えてる方が選択されるようにする
- [[ - | データYAMLファイルを上書き更新できるように
- [[ - | 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- [[ - | "-iでファイルを上書きするときにバックアップファイルを作るように"
- [[ - | 直線を描けるように
- [[ - | "-txtでも直線を出力できるように"
- [[ - | 直線を削除できるように
- [[ - | 直線の始点、終点で、矢印表示を選べるように
- [[ - | 直線を上か左向きに描き始めると、始点がズレるバグの対策
- [[ - | 直線を変形できるように
- [[ - | 単独の「枠」だけを追加できるように
- [[ - | オブジェクトがコピぺできるように
- [[ - | 直線の変形で始点、終点の移動で頂点を通り過ぎると表示が乱れるバグの対策
- [[ - | 重なったときの前後関係を調整できるように
- [[ - | ESCキーでいろいろキャンセルできるように
- [[ - | "-oのあとにnkfのオプションに従った1文字指定で'-'追加もれがある"
- [[ - | 直線の種類選択で最初の1つ矢印は終点側の方に
- [[ - | カーソルやオブジェクの移動やリサイズの刻み幅を可変に
- [[ - | オブジェクトをグループ化してまとめて移動できるように
- 複数選択関連のデバッグ(きっとあるはず)
- 複数選択後にグループ化したり、解除したりできるように
- 動的に(漢字の)文字列の追加が出来るように
v11.patch
$ cat v11.patch | patch -p1
- カーソルをオブジェクトの上に移動し、ENTERキーかスペースキーで選択
- 例によって、反転表示に
- 'm'キーで複数選択モードに
- 複数選択モードでは、反転表示かつカーソルは'm'に
- カーソルをオブジェクトの上に移動し、ENTERキーかスペースキーで選択オブジェクトを追加
- オブジェクトを複数選択した状態で'g'キーでグループ化され、カーソル移動モードに戻る
- 以降、グループ化されたオブジェクトを選択すると、まとめて選択される
- グループ化されオブジェクトを選択し'u'キーを押すと、グループ化は解除されカーソル移動モードに戻る
'g'キーによるグループ化や、'u'キーによる解除は、次の状態のとき有効になります。
- 複数のオブジェクトを選択中で、カーソルが'm'のとき
- 複数のオブジェクトを選択し終えてた直後で、カーソルが表示されていないとき
- 複数のオブジェクトを選択し、矢印キーで移動モードに入っているとき
既にグループ化されたものと、グループ化されていないものを複数選択して'g'キーを押すと、
入れ子の状態にグループ化されます。
解除のときは、複数選択しなくても、単にグループ化されたオブジェクトを1つ選択して'u'キーでOK。
グループ化されたいくつかのオブジェクトを複数選択して'u'キーを押すと、それぞれのグループが解除されます。
グループ化されたもの、されてないものをおりまぜんて複数選択して'u'キーを押すと、
グループ化されているものだけ解除されます。
入れ子でグループ化されているものは、一度では解除できません。
上のレベルから順に解除の操作を繰り返します。
起動するとncコマンドでポート番号44317で待つようにしてみました。
別の端末から、ncコマンドでこのポートにつないで文字列を書き込み、接続を切ると文字列が追加されます。
改行が含まれていると反映されます。
ncコマンドなのでネットワーク上の別のマシンからでもOK
ポート番号はコマンド引数の -p xxxx で指定すれば変更できます。
デフォルトのポート番号は「適当」です。(バース、掛布、真弓)

- [[ - | カーソル移動でpage up/downキー対応
- [[ - | 選択動作時、カーソルが枠と文字列の間のスペースにあるときは、反応しないようにする
- [[ - | 重なってるときは見えてる方が選択されるようにする
- [[ - | データYAMLファイルを上書き更新できるように
- [[ - | 枠サイズ変更のとき裏でカーソルも移動させておく
- 移動やリサイズで不要な描画を省く
- [[ - | "-iでファイルを上書きするときにバックアップファイルを作るように"
- [[ - | 直線を描けるように
- [[ - | "-txtでも直線を出力できるように"
- [[ - | 直線を削除できるように
- [[ - | 直線の始点、終点で、矢印表示を選べるように
- [[ - | 直線を上か左向きに描き始めると、始点がズレるバグの対策
- [[ - | 直線を変形できるように
- [[ - | 単独の「枠」だけを追加できるように
- [[ - | オブジェクトがコピぺできるように
- [[ - | 直線の変形で始点、終点の移動で頂点を通り過ぎると表示が乱れるバグの対策
- [[ - | 重なったときの前後関係を調整できるように
- [[ - | ESCキーでいろいろキャンセルできるように
- [[ - | "-oのあとにnkfのオプションに従った1文字指定で'-'追加もれがある"
- [[ - | 直線の種類選択で最初の1つ矢印は終点側の方に
- [[ - | カーソルやオブジェクの移動やリサイズの刻み幅を可変に
- [[ - | オブジェクトをグループ化してまとめて移動できるように
- 複数選択関連のデバッグ(きっとあるはず)
- [[ - | 複数選択後にグループ化したり、解除したりできるように
- [[ - | 動的に(漢字の)文字列の追加が出来るように
pythonのユーティリティ・プログラム 2020冬
にterm.pyを追加してみました。
kon_utのソースを使うようにバージョン12として少し書き換えてみました。
v12.patch
$ cat v12.patch | patch -p1 ]]
などのkon_utに既に吸収されているファイルは、
kon_ut側を使うので廃止です。
ここまでの最新版をダウンロードしてして生成するスクリプトを用意しました。
dl.sh
実行するとカレントディレクトリに、argmnt/ ができます。
$ cd $SOME_WHERE
$ wget http://kondoh.html.xdomain.jp/argmnt/dl.sh
$ chmod +x dl.sh
$ ./dl.sh
$ cd argmnt
: