s-pad
メモ帳並みの簡素なエディタ。
改行コードがCR+LFのUTF-8のファイルを開いた状態。
目次
ただのUnicode対応エディタです。
編集機能はメモ帳程度です。
メモ帳よりは、
- ツールバー。
- タブ幅の選択。
- 行番号表示。
- ファイル更新の監視。
- カーソル位置の文字のコード番号をShift-JISとUnicode(UTF-16とUTF-8)で表示。
- ファイルを開くダイアログでのファイルのプレビュー。
といったものを実装しているので使い勝手は多少良いと思います。
とはいえ1MB程度より大きいサイズのファイルの読み込みはかなり遅いうえに印刷機能などは実装していません。
読み込みと保存
読み込みと保存は
- Shift-JIS
- UTF-16のリトルエンディアン(BOMあり/なし)
- UTF-16のビッグエンディアン(BOMあり/なし)
- UTF-8(BOMあり/なし)
- UTF-7
- JIS
- EUC
- バイナリダンプ(先頭の64KBまでの読み込みのみ)
に対応しています。
JISはコードページ50220の「日本語 (JIS) iso-2022-jp」で1バイトカタカナ(半角カタカナ)不可のものです。
半角カタカナは全角カタカナに変換されます。
バイナリダンプは処理に時間がかかるので先頭の64KBまでしか読み込みません。
また読み込んだものをバイナリに戻して保存する機能はありません。
上書き保存するとバイナリダンプされたテキストで保存されてしまいます。
ファイルを開くダイアログ。
プレビューが思いのほか便利。
プレビューでバイナリダンプを選択した状態。
ファイルの先頭をちょっとダンプしてみたい時に重宝しています。
名前を付けて保存ダイアログ。
文字コードと改行コードの指定ができます。
- プログラムのソースコードを編集したり大量のテキストを高速に読み書きするような本格的なエディタでは全くありません。
せいぜい100KB程度くらいまでの軽いテキストファイルを読み書きすることを想定した、作るのが簡単なエディタです。
- ファイルのバイナリダンプもできますがバイナリエディタではありません。
ファイルの先頭64KBしか読み込みませんし編集したものをバイナリに書き戻す機能もありません。
- Unicodeの合成文字やサロゲートペアの表示は一応できますが選択状態にしたりカーソルを置いたりすると表示がずれたりすることがあります。
このあたりはWindowsのRichEditコントロールの仕様に依存します。
- ウィンドウのタイトルバーやタスクバーのキャプションはUnicode非対応です。
- ファイルの読み込みはすべてオンメモリで行うのでサイズの大きいファイルはメモリー不足のエラーになることがあります。
メモリーを2GB積んだAtomなネットブックで90MB程度のファイルまでは読み込めましたが動作は緩慢で使い物にはなりませんでした。
せいぜい1MB程度が(カクカクした動きにはなりますが)限度ではないかと思います。
- 行番号の表示はUnicodeな文字がある行でずれてしまうことがあります。
インストールは任意のフォルダにspad.exeをコピーするだけでOKです。
レジストリには何も書き込みませんがプログラムのあるフォルダに設定ファイル(spad.ini)を作ります。
アンインストールはspad.exeとspad.iniを削除します。
s-pad
spad.exe 2013-01-22:Ver 0.1.38.114
ファイルは圧縮していません。
ダウンロードしてそのまま実行できます。
ソースコードは公開しているというよりもバックアップ目的です。
操作説明
基本的にWindowsのRichEditコントロールが持っている編集機能とそのキーアサインそのままです。
ショートカットキー
ファイル |
Alt + F4 |
終了。 |
編集 |
Ctrl + Z |
戻す。 |
Ctrl + Shift + Z |
やり直し。 |
Ctrl + X |
切り取り。 |
Ctrl + C
Ctrl + Insert |
コピー。 |
Ctrl + V
Shift + Insert |
貼り付け。 |
Delete |
1文字削除。
選択範囲があれば選択範囲を削除。 |
Shift + Delete |
選択範囲がある場合のみ選択範囲を削除。
選択範囲がなければなにもしません。 |
Backspace |
カーソルの前の1文字を削除。
選択範囲があれば選択範囲を削除。 |
Ctrl + Y |
1行削除。 |
Ctrl + N |
空白行挿入。 |
Ctrl + A
Ctrl + (テンキーの)5 |
すべて選択。
テンキーのみ有効。
Ctrl+キーボード上部にある数字キーの5は無効。 |
Shift + Ctrl + T
Ctrl + Backspace |
現在のカーソル位置から単語の先頭までを削除。
(行頭へ向かっての単語削除) |
Ctrl + T
Ctrl + Delete |
現在のカーソル位置から単語の末尾までを削除。
(行末へ向かっての単語削除) |
検索 |
Ctrl + F |
検索。 |
F3 |
下方検索。
(文末へ向かっての検索) |
Shift + F3 |
上方検索。
(文頭へ向かっての検索) |
ヘルプ |
F1 |
バージョン情報 |
移動 |
Ctrl + Left |
行頭へ向かっての単語移動。 |
Ctrl + Right |
行末へ向かっての単語移動。 |
Ctrl + Up |
1行上の行頭へ移動。 |
Ctrl + Down |
1行下の行頭へ移動。 |
Home |
行頭へ移動。 |
End |
行末へ移動。 |
Ctrl + Home |
文書の先頭へ移動。 |
Ctrl + End |
文書の末尾へ移動。 |
Ctrl + PageUp |
表示中のページの先頭に移動。 |
Ctrl + PageDown |
表示中のページの末尾に移動。 |
変換 |
Ctrl + Shift + A |
選択範囲を大文字へ変換。
全角文字にも対応。
変換した文字列を再度選択して変換させると元の状態に戻ります。 |
Alt + Shift + X |
カーソル位置の文字を16進のUnicodeのコード番号に変換。 |
Alt + X
Alt + Shift + Ctrl + F12 |
選択した16進の数字をUnicodeのコード番号であるとみなして対応する文字に変換。 |
Alt + (テンキーの)0nnn.. |
Altキー押したままテンキーの0に続いて10進のUnicodeのコード番号をテンキーから入力してAltキーを離すと対応する文字がカーソル位置に挿入されます。
テンキーのみ有効。
キーボード上部にある数字キーは無効。 |
※課題
- ショートカットキーのカスタマイズ。
- ツールバーのカスタマイズ。
2013-01-22:Ver 0.1.38.114
- 下の修正でどういうわけか修正されていなかった不具合を修正。
2012-11-29:Ver 0.1.37.114
- 下の修正で保存時にCRLFがCRLFLFになっていた不具合を修正。
2012-11-21:Ver 0.1.36.112
- 「編集」→「コピー」で改行コードがCRLFに対応していなかった不具合を修正。
2012-06-05:Ver 0.1.35.112
- ファイルを開くダイアログのプレビューでBOMがあるファイルは他の文字コードで表示できない仕様を変更。
- 改行コードの指定でCR+LFにした場合保存にえらい時間がかかってしまう不具合を回避。
2012-05-26:Ver 0.1.34.112
- OnKeyDown, OnKeyUpの引数Shiftの初期化を行っていなかったためCtrlキーを押していない時にもCtrlキーが押されているような挙動になっていた不具合を修正。
- 置換ウィンドウの「キャンセル」ボタンを押しても何も起こらなかった不具合を修正。
- 検索のオプションを有効に戻した。
置換機能の検索オプションは未実装。
2012-03-18:Ver 0.1.33.112
2012-01-15:Ver 0.1.32.110
- 検索の「大文字小文字を区別」が逆になっていた不具合を修正。
2012-01-05:Ver 0.1.31.110
2011-12-31:Ver 0.1.30.110
- ファイルを開くダイアログのファイルの種類を設定ファイルに持つようにした。
2011-12-08:Ver 0.1.29.110
2011-11-23:Ver 0.1.28.102
- EUC、JISの自動判定が正しく行えずにUTF-16BEと判定していた不具合を修正。
- BOMなしのUTF-16の判定の制度を若干あげた。
文字列中のひらがな及びカタカナの比率を求めて1%未満ならエンディアンが違うと判定。
2011-11-22:Ver 0.1.27.102
- ファイルの末尾の改行コードが必ず入る仕様を改善。
- 選択状態でホイール操作を行うとCtrlキーを押していないにも関わらずフォントの大きさが変わってしまうことがあった不具合を修正。
TMyMemoのWMNotifyメッセージでMsg.Resultに0をセットしていたため。
2011-11-19:Ver 0.1.26.91
- オートインデントに対応。
- 変更済みテキストで「ファイルの名前のみ取得」にチェックをつけてファイルを開こうとすると変更されているので保存するかと聞いてくる不具合を修正。
- 「ファイル名の取得」とファイル名のみを取得」で末尾に余計な改行が入る仕様を解消。
- Ctrlキーを押しながらのホイール操作でフォントの大きさを変更するようにした。
2011-11-17:Ver 0.1.25.85
- マウスの左ボタンを押している間はステータスバーの文字コードの表示をスキップするようにした。
スキップしないと文字列をマウスで選択するのに引っかかるような感じがあるので。
- ステータスバーの文字の表示で制御コードの場合背景色を水色にした。
- 半角スペースと全角スペースの時にそれぞれ「半角スペース」「全角スペース」と表示するようにした。
- Shift-JISのコード表示の頭に「0x」を付け足した。
- UTF-8の2進表記に対応。
2011-11-10:Ver 0.1.24.85
- 選択範囲をソートに「大文字小文字を区別してソート」「大文字小文字を区別せずソート」「数値でソート」「反転」を追加。
数値でソートは行頭の数値文字列のみが対象。
対象となる文字は
0123456789
〇一二三四五六七八九
十百千
万億兆
拾陌佰阡仟萬
零壱壹弐貮貳参參肆伍陸柒漆質捌玖
@ABCDEFGHIJKLMNOPQRS
TUVWXYZ[\]
位取りは兆まで。
2011-11-08:Ver 0.1.23.84
- ↓で保存の時に選択した文字コードと実際に保存される文字コードが一つずれてしまっていたアホみたいな不具合を修正したはずが修正できていなかったアホ丸出しの不具合を修正。
- 文字コードの自動判定がうまくいかなくなっていた不具合を修正。
↓で行ったUTF-16の自動判定を少しまともなものにした時に不具合が紛れ込んでしまった。
2011-11-03:Ver 0.1.22.84
- 保存の時に選択した文字コードと実際に保存される文字コードが一つずれてしまっていたアホみたいな不具合を修正。
- 一度読み込んだ後の文字コードの選択アイテムがおかしくなっていた不具合を修正。
- BOMなしのUTF-16のビッグエンディアンが文字コードの自動判定でうまく判定できていなかった不具合を修正。
- UTF-16の自動判定を少しまともなものにした。
とはいえ手抜きなことには変わりなし。
2011-10-17:Ver 0.1.21.83
- ステータスバーの表示・非表示を設定ファイルに保存していなかったミスを修正。
2011-10-16:Ver 0.1.20.83
- ステータスバー表示のオンオフ実装。
- ステータスバー、行番号非表示の時の効率を良くした。
ステータスバーを表示している時にカーソル移動が引っかかる感じがあって気持ち良くなかったのが改善。
2011-10-06:Ver 0.1.19.83
- 選択範囲を置き換えると置き換えられた文字列がクリップボードへコピーされる不具合を修正。
- 選択範囲のソート機能を実装。
2011-09-27:Ver 0.1.18.83
- 大量の文字列の編集作業で文字化けしてしまう不具合を修正。
恐らくRichEditコントロールの改行コードはデフォルトでCRのみであるのをCR+LFに変更していたのが原因。
- コマンドが正しく機能するように調整。
SendOneKeyのKeyUpをSendMessageで送っていた部分をコメントアウト。
- 一部コマンドにショートカットキーを割り当て
Ctrl+Y「一行削除」
Ctrl+N「空行挿入」
Ctrl+T「カーソル位置から単語の終わりまで削除」
Ctrl+Shift+T「カーソル位置から単語の始めまで削除」
2011-07-19:Ver 0.1.17.76
- 検索ボックスで「f」を入力すると本文に移動してしまう不具合を修正。
- 新規作成や開くなどのショートカットを削除。
現状カスタマイズができないので使いづらいため。
2011-06-20:Ver 0.1.16.74
- 末尾が改行コードのファイルを読み込むとエラーになっていた不具合を修正。
2011-05-16:Ver 0.1.14.59のmyWStringsライブラリの文末の処理を変更した際に紛れたバグによる不具合。
2011-05-24:Ver 0.1.15.62
- 本文のポップアップメニューのショートカットをFormCreate時に削除していたためタブの入力ができなくなっていた不具合を修正。
2011-05-16:Ver 0.1.14.59
- 改行コードのないテキストを保存した場合必ず改行コードが付加されていた不具合を修正。
2011-05-10:Ver 0.1.13.59
- TScreenのMonitorプロパティがモニター情報の変更に追随しないことからモニター情報が変わった後にツールバーのドロップダウンメニューを表示させようとするとアクセス違反のエラーが出てしまっていた不具合を修正。
2011-04-01:Ver 0.1.12.58
- エクスプローラからドロップされたファイルの文字コードの判定を直前に選択した文字コードから自動判定に戻した。
結局混乱の元なのでやめた。
- 大きいサイズのファイルを開く時のメッセージボックスにファイルサイズを表示するようにした。
またタイトルバーのキャプションに「お待ちください」を表示するようにした。
2011-02-10:Ver 0.1.11.58
- 起動中にシステムを終了させたりログオフさせたりした場合設定を保存していなかった不具合を修正。
- タスクバーのUnicodeなタイトルの表示をキャンセル。
Unicodeなフォームを作成し親にすることで実現させていたのだけれども上記の修正に伴い不具合が出てしまったのでキャンセル。
2011-01-21:Ver 0.1.10.58
2011-01-12:Ver 0.1.9.58
- マウスジェスチャー実装。
← 編集/元に戻す
→ 編集/やり直し
↓ ファイル/開く
2010-12-08:Ver 0.1.8.58
- バイナリダンプの読み込みを64KBまでに制限。
処理に時間がかかるためとメモリー不足のエラーを回避するため。
- エクスプローラからドロップしたり開くの履歴から選択した場合の文字コード判定を自動判定から直前の設定を引き継ぐようにに変更。
※自動のままの方が良いかも知れないので要検討項目。
- ツールバーに編集メニューのボタンを追加。
いずれカスタマイズ可能なようにツールバー用アイコンを追加。
- 編集メニューの「すべて選択」の選択の可/不可の判定を間違えていた不具合を修正。
- 変換メニューにURLエンコードとURLデコードを追加。
- 「行間をあける」オプションを削除。
行番号表示の調整が面倒なので。
2010-11-20:Ver 0.1.7.57
- バイナリダンプの改行コードを間違えて#$Cにしていた不具合を修正。
- バイナリダンプの場合書込み禁止モードに変えてから読み込むように変更。
書込み禁止にする時に時間がかかるのでその分の時間短縮のため。
- 巨大なファイル(とりあえず5MB以上)を開こうとした場合警告を出すようにした。
- 読み込み処理中の経過表示を行うようにした。
Atomなネットブックで1MB以上くらのサイズのファイルでないと意味は無いような感じも。
2010-11-16:Ver 0.1.6.54
- 他のアプリで開いている文書(恐らくCloseしていないもの)を読み込めなかった不具合を修正。
- 行番号表示の左マージンを狭めて右マージンを1ドット増やして多少見やすくした。
2010-11-09:Ver 0.1.5.53
- ポップアップメニューで貼り付けができなかった不具合を修正。
- 本文のポップアップメニューの「選択範囲をネット検索」と「検索サイトを選択」を非表示に変更。
結構とわずらわしいので。
- 行番号表示機能追加。
2010-11-08:Ver 0.1.4.53
- 開くダイアログを呼び出して閉じた後フォーカスを失っていた不具合を修正。
- ファイルを開いた後カーソルが行頭でないところに行ってしまう不具合を修正。
- プログラムが非アクティブになった後アクティブになってもフォーカスが本文に戻らなかった不具合を修正。
タイトルバーを触ってキーボードからCtrl+Cでコピーを行おうとしてもできなかった不具合が解消。
- ステータスの表示形式を変更。
(あ) SJIS/82A0 UTF-16/U+3042 UTF-8/U+E38182
という形式。
UTF-8のバイナリイメージはとりあえず非表示な方向で。
UTF-16のサロゲートペアはU+5桁の表記と併せて4桁二つの表記も表示。
- 改行コードの指定でCRを選んだ場合「CR」ではなく「FF」が入っていた不具合を修正。
#$Dを間違えて#$Cとしていた単純なミス。
2010-10-06:Ver 0.1.2.43
- 保存の時に改行コードを指定できるようにした。
- 読み込みの時に改行コードを判定して表示するようにした。
2010-10-05:Ver 0.1.1.23
- タイトルバーのUnicode対応を復活。
- タスクバーのタイトルもUnicode対応に。
2010-10-04:Ver 0.1.0.22
- 暫定でフォームのタイトルバーのUnicodeな文字の表示をキャンセル。
Unicodeなファイル名のテキストの場合タスクバー上のタイトルが空文字になってしまうため。
- 文字コードにJISとEUCを追加。
- バイナリダンプして読み込む機能を追加。
バイナリにして書き戻す機能はなし。
- 読み込むファイルの文字コードの自動判定に対応。
文字コードの自動判定が行えるようになったのでマイナーバージョン上げ。
2010-10-01:Ver 0.0.6.12
- 「上書き保存」を行った後ファイル更新チェックに引っかかり"再読み込みするか"と聞かれる不具合を修正。
- フォームのタイトルバーのUnicodeな文字の表示に対応。
2010-09-27:Ver 0.0.5.11
- 複数ファイルを選んで読み込んだ時にファイルを繋げて読み込むのではなく、別プロセスでこのブログラムを起動して1ファイルずつ読み込むように変更。
- 開くの履歴から選択したときにダイアログを開くのではなくいきなり読み込むように変更。
普通のエディタらしく。
2010-09-20:Ver 0.0.4.11
2010-09-16:Ver 0.0.3.11
- ネット検索機能を追加。
- 「ファイル名を挿入」を「ファイル名を取得」と変更し、チェックのオンオフでファイルを読み込むときに動作を切り替える実装に変更。
ドラッグアンドロップのときにもあらかじめチェックしておけばファイル名を取得できるようになった。
- 検索ボックスでエンターキーを押したら下方検索を行うように変更。
- ステータスバーを追加。
- 環境変数%TEMP%のフォルダ中のファイルを履歴から選択した場合に選択できなかった不具合を修正。
他のフォルダなら問題なくできるのものが環境変数の%TEMP%もしくは%TMP%にセットされているC:\TempなどのファイルはNGになってしまうのでInitialDirにフォルダ名をセットすることで回避。
2010-09-11:Ver 0.0.2.8
- ツールボタンのタブの画像が切り替わらなかった不具合を修正。
- ポップアップメニューの「選択範囲を上方検索」が選択不可であるはずの場合も選択できる状態のままであった不具合を修正。
2010-06-03:Ver 0.0.1.8
2009-06-12:
- 「切り取り」が「コピー」と同じ動作になっていた不具合を修正。
- 書込み禁止にした場合にメニューの「元に戻す」「やり直し」「切り取り」をDisableにしていなかった不具合を修正。
- 「新規作成」、「開く」と「終了」で文書が変更されていたら確認ダイアログを出すようにした。
- ポップアップメニューに「選択範囲を下方検索」と「選択範囲を上方検索」を追加。
2009-04-24:
- F_Memoにフォーカスがない場合に検索をしても検索結果の行までスクロールしなかった不具合を修正。
HideSelectionをFalseにするか検索する前にF_Memoにフォーカスを移すかしないといけないようだ。
Unicode対応のEditコントロールとMemoコントロールを作成していて、RichEditコントロールを使えばメモ帳程度のエディターなら作れるんじゃなかろうかと思い至って
実行。
それを発展させて現在に至る、と。
実際のところメモ帳程度の機能で私的には充分なのだけれども、どうせ作るのならば
- ツールバーはあった方がうれしい。
- ツールバーには検索語ボックスがあると便利。
- タブ幅の選択はぜひほしい。
- ファイルの更新監視機能はぜひほしい。
- カーソル位置の文字の文字コードをステータスバーに表示できればちょっと便利。
などの機能を実装してみようと。