Yujiro's JunkToys for TX-C4.0

2000/11/09版
© Yujiro Nakamura 1998-2000

僕が自分専用に作っているちょっとしたマクロから、0.00000001%でも他の人に役立つ可能性のあるものを掲載します。コンセプトは「なくてもあんまり困らない」「汎用性が極めて低い」ってところです(をい)。
そこそこ数が増えてきたり、ちょこちょこ修正したりしてるので、ソース貼り付けはやめました。いかにもジャンク、て感じで好きだったんだけど、使う人の手間と管理の手間を考えると、普通にダウンロードするほうが便利かな、ということで。

なお、2000/10/25版より、管理の手間を省き、ひいては頻繁な更新を促進するため(嘘っぽい〜(笑))、ソースのみでの配布となっています。説明はこのページをダウンロードするなり、テキストとして保存するなり、憶えるなり(ってオイ)してください。うん、これでまたジャンクっぽさがUp(笑)。

ちなみに、MSのPower Toys以降、小物ツールの名前に結構使われる"Toys"ですが、toyには「実用にならないもの/くだらないもの」って意味もあるんですねぇ、これが(笑)。

ダウンロード

jt20001109.lzh(12.4KB)

おまけ

天仙娘々さんが、「WZ3風見出しメニュー(HeadingMenu) 」用の「題」アイコンを作ってくれました! HeadingMenuをツールバーに割り当てている方は、ぜひぜひお使いください。(99/12/19追加)
daicon.lzh(11.0KB)

インストール

適当にコンパイルしてください。HTML系のマクロをメニューに登録したり、フック系のマクロを使う場合は、TX-Cの設定で、プラグインにこのマクロを追加してください。

フック系、HTML系以外の各コマンドのキーやメニューへの割り当ては、自動では行なわれません。お使いになりたいコマンドを選んで、ご自分で登録してください(コマンド名はタイトルのあとの括弧内に書かれています)。

なお、HTML系の機能の中には、y.mikomeさん作の「HTML機能拡張(htmlcmd)」がインストールされていることが前提となっているものがありますので、HTML系の機能を使う場合はこちらも合わせてインストールしておいてください。

設定

フック系など、一部のマクロを使用するためには、プラグイン管理ダイアログか、JunkToys.mainで設定を行なう必要があります。

JunkToysコマンドの動作設定

一部のマクロの動作設定を行ないます。

イベント&WZ標準コマンドのフック

イベントマクロとして使う場合、どのコマンドを使うかを設定します。

WZ HTML EDITORメニュー改造

基本的に、JunkToysの各コマンドは、こちらでキーやメニューに割り当てなどは行なわず、ユーザーが好きなのを選んで適当に割り当ててちょ、というスタンスなのですが、HTML専用の機能に関しては、「HTML編集の時だけメニューを変える」というのはユーザーサイドではできないので、フックを使ってこちらで登録することができるようになっています。このオプションをONにすると、HTML編集時、[挿入]メニューに「ダウンロードリンク」が追加され、また「更新マーク」はHTML機能拡張(htmlcmd)のものからJunkToysのものに置き換わります。さらに、普通は選択できなくなっている[書式]-[ルビ]が選択可能になり、「ルビ要素挿入」が使えるようになります。

これらのメニューの追加、置き換えを一つ一つ制御したい場合は……ソースいじってください。だってジャンクだもん〜(おい)。

これをONにする場合は、TX-Cの設定の「イベントマクロ」で、「JunkToys」をhtmlcmdより前に置いてください。これは、JunkToysが、htmlcmdが書き換えたメニューをさらに書き換える、というアブナイことをしているからです(イベントのフックは、後ろに登録されたものから順に処理されます)。

おしながき

入力

日付挿入(InsertDate)

オリジナルでもなんでもなく、y.mikome氏のTXC-Kidsにあった日付挿入マクロの「99/01/23(Sat)17:58」形式版です。この形式を広めるため(笑)、敢えてここに載っけちゃいます。

【99/04/14(Wed)】 ちょいと改良して、一度めの実行で日付まで(99/04/12(Mon))、そのままもう一度実行すると時刻が入る(99/04/12(Mon)00:03)ようになりました。

【99/06/16(Wed)】木曜日がTueになってました(うひゃー)

推奨割り当て:とくになし(僕はCtrl+T)

編集

アウトラインジャンプ(OutlineJump)

実行するとアウトラインを表示し、選択した位置にジャンプします。基本的にはWZのアウトラインはよくできているので不満は無いのですが、ノートで使う場合は常時表示すると狭くなってしまうので、そういったときにジャンプだけでもできるように作ってみました。

Ctrlキーを押しながら[OK]すると多重化し、多重化先でジャンプします(もとのテキストのカーソル位置は変わらず)。マクロや文章を書いてて「あ、同じテキストの上のほう参照したいんだけど……」って時に結構便利です。

ちなみに、この手のマクロはマウスのダブルクリックでもジャンプできるのが正しい姿ですが、めんどくさいんでやってません。要望があればやるかも(なくても暇つぶしにやるかも(笑))

推奨割り当て:とくになし(僕はCtrl+U)

【99/10/21(Thu)】WZ EDITOR 4.00Bでアウトライン関係のAPIの仕様が変わったので、対応しました。その代わり4.00A以前では動きません(バージョンによるコンパイルの分岐はめんどくさいのでしない:だってジャンクだもん〜(笑)。)

WZ3風見出しメニュー(HeadingMenu)

WZ3での見出し設定は、ツールバーの「題」という男気あふれる漢字のボタンを押し、にゅっと現われるメニューから見出しを指定する、という非常にカッコイイものでした。(にゅっと現われるのはWindows 98の機能だけど)
対して、WZ4ではダイアログが表示され、ラジオボタンで見出しを選び、[OK]ボタンを押す……という風になりました。ダサいですね(をいをい)

ちゅうわけで、WZ3風の見出しメニューを表示するマクロをつくっちゃいました。完全互換じゃないですが(範囲選択時の動作など……要改良だな)。

推奨割り当て:ツールバー(WZ4には「題」アイコンないんだよなあ。 今はWZ MAILの「スレッド表示」アイコンでごまかしてます。)
(99/12/19追記)……と書いていたら、天仙娘々さんがアイコンを作ってくれました。詳しくは上の方の「おまけ」をご覧ください。

【2000/10/12(Thu)】このマクロをキーで呼び出した場合はキャレット位置に、ツールバー、メニューに割り当ててマウスで呼び出した場合はマウスカーソル位置に見出しメニューを表示するようにしました。

選択範囲を自動整形(FormText)

選択時は選択範囲、非選択時はテキスト全体に対して、自動整形を行ないます。WZの自動整形はよくできていて、普通にメールを書いているぶんには「自動整形モード」で十分ですが、他のテキストから整形されていない文書を貼り付けたときや、[WZ MAILの本文として送る]を使ったときなどに、そこだけ明示的に整形を行ないたい場合があります。そんな時に使うために作りました。

【99/06/06(Sun)】EOF=行頭でない場合にフリーズしていたのを修正しました。また、実行時に問い合わせをするようにしました(したくない場合は適当にソースをいじってください)。

推奨割り当て:とくになし

ダイアモンドカーソル派向けCtrl+X(ExtCtrlX)

Ctrl+[ESDX]キーによるカーソル移動(いわゆるダイアモンドカーソル)は大変便利ですが、Windowsの標準動作であるCtrl+[XCV]によるコピー(カット)&ペーストも、とくにマウスを併用しているときは便利です。しかしこれではXキーが競合してしまう! そんな悩みもコレで一気に解決……か?(笑) これをCtrl+Xに割り当てれば、普段はダイアモンドカーソル、範囲選択中はクリップボードへのカットとして働きます。
最初はとまどうかもしれませんが、慣れると快適です。僕の場合、モノを書いているときは手はホームポジション上から離れませんが、行をまたがるような長い範囲選択はたいていマウスでやりますので。まあ騙されたと思っていっぺんやってみてくださいな。
ちなみにAT互換機でこのマクロを使う人は、CtrlキーとCapsキーを入れ換える義務があります(笑)。

推奨割り当て:Ctrl+X(推奨って言うか、絶対)

ファイル操作

WZ NOTEに送る(toWZNOTE)

現在開いている文書の全部、または一部を、WZ NOTEに送ります。要は[編集]-[追加]-[メモ]のWZ NOTE版です。範囲選択をしている場合はタイトル入力のダイアログが開き、そのタイトルで保存されます。非選択時はテキストの先頭行を見出し1に設定した上で文書のタイトルにし、テキスト全体が保存されます。

使う前に、[JunkToysの設定](JunkToys.main)で、「[WZ NOTEに送る]の送り先」に「WZ MAILのフォルダ(デフォルトはC:\wzmail\)+text\+[一時保管に使いたい文書フォルダ名].MBX」を入力しておいてください。

【99/06/06(Sun)】一度実行するとMBXファイルの拡張子が変わってしまい、結果的にほとんど使い物にならなかった大バグを修正しました。

【99/06/16(Wed)】木曜日がTueになってたのを修正しました(だっさださ〜)

推奨割り当て:[ファイル]-[送る]

WZ3で開きなおす(toWZ3)

現在開いているテキストを、WZ Editor Ver 3.0で開き直します。カーソル位置は保持され、また先にWZ4を閉じてからWZ3を開くので排他制御も問題ありません。Ctrlキーを押しながら実行すると、WZ4を閉じないでWZ3で開きます(もちろんこの場合は、排他制御をしていればWZ3側はリードオンリーになるか、開けません)。

使う前に、[JunkToysの設定](JunkToys.main)で、「WZ3の実行ファイル([WZ3で開きなおす]用)」にWZ3の実行ファイルを入力しておいてください。

僕がWZ4に乗り換えて最初に作ったマクロです。WZ4も最新α版あたりでかなりいい感じに仕上がってきましたが、まだまだWZ3じゃないとできないことも多いですからね。

推奨割り当て:[ファイル]-[送る]

テキスト→TML変換(ConvertFromPlainToTML) Up!

ビレッジセンターのWZ4掲示板で出た質問をネタに、ちょっと作ってみたテキスト→TML変換マクロです。フォルダ内のテキストを一括で変換します。一つ一つファイルを開いてダイアログを表示し、変換を行なうかどうかを確認する通常のモードと、問答無用で全ファイルを変換する「問答無用」モードがあります。見出しの変換も行ないますが、問答無用モードでは見出しは標準のもの("."を見出しのレベル数並べたもの)固定です。また、見出し文字列は削除されます。

変換後のファイルは、同じフォルダに拡張子をTMLに変えて保存されます。既に同名のファイルがある場合はさくっと上書きするので気を付けましょう(おい)。また、サブフォルダには対応していません。

【2000/11/09(Thu)】処理対象のテキストがすでに開かれていると強制終了するというバグを修正しました。

推奨割り当て:とくになし(たまにしか使わないでしょうし)

一発芸

TX-Cライブラリを開く(OpenTXCLib)

題そのまんまです。マクロと呼ぶほどのものじゃありません。しかも、DDEに関してはInternet Explorerしか見ていないという俗悪な代物です。だってNetscape Navigatorって(以下自主規制)。

推奨割り当て:[ヘルプ]-[WZホームページを開く]の下

NIFTY IDをE-mail形式に(NifToEmail)

ちょいと仕事で必用だったので、WZ4の新しい正規表現のテストがてら作ってみました。未選択でテキスト全体、選択時は範囲内で変換を行ないます。

【99/04/14(Wed)】 「XXX00000@nifty.ne.jp」が「XXX00000@nifty.ne,jp@nifty.ne.jp」になってしまうのを修正しました(てゆーか一から作りなおし)

推奨割り当て:たまに使うもんですから、割り当てる必要もないような。

ネットワーク

WZ BBSプロクシ切り換え(ChangeProxy)

WZ BBSでは現在(4.00D時点)プロクシ経由の接続に未対応なため、Delgateなどのプロクシサーバーソフトをローカルで起動して、WZ BBSのフォルダのプロパティの、接続先URLに「http://127.0.0.1/-_-http://www.villagecenter.co.jp/cgi-bin/wzmail2.cgi」という風にローカルホストのURLを付加することによりプロクシ経由の接続を行ないます(詳しくはVCのFAQなどを参照)。

が、これは逆に通常の接続時は邪魔になるので、例えばノートPCで、会社ではプロクシ経由、家ではダイヤルアップ、という風に接続している場合はそのたびに設定を変えなければいけません。一つ二つならまだいいですが、WZ4、TX-C、HTML、XZ、PWZ、ケータイ・リンク、TRY、TRY2とVCのほとんどの掲示板を読んでるような場合(笑)にはたいへんです。

そこで、「http://127.0.0.1/-_-」を一発で付けたり消したりするマクロを作りました。まず設定でWZ BBSのアカウントのフォルダを指定してから実行してください。

推奨割り当て:メニューの「ツール」あたりにでもどうぞ

【2000/10/03(Tue)】すべてのアカウントを一括で変更するようにしました。フォルダの位置もWZ MAILの設定ファイルから自動で取得するので、設定を行なう必要はありません。

プログラミング

WZ API検索(SearchWZAPI)

y.mikomeさんのTXC-Kidsにある「WZのAPI辞書の参照」をベースに、いろいろと僕好みに改造してみたモノです。カーソル位置の単語を取得し、以下のようなルールでAPI.TML、_wz.h、_idmcmd.hを検索します。

なお、スペースや改行などの上で実行すると、文字列入力ボックスを表示し、直接API名などを入力して検索できます。ちなみに単語取得の場合は単語として検索("txGet"ではtxGetWordにヒットしない)しますが、この場合は単語検索ではなく文字列として検索します。"txgetw"のようなうろ覚えのキーワードでAPIを調べたいときなんかにはけっこう便利です。以前は単語取得の際には大文字小文字を区別していましたが、大文字小文字を間違って入力した場合でも引けたほうが便利かな、と思ってこれはやめました。

……と、割と自分としてはお気に入りなのですが、よくよく考えたらこのマクロの対象となるような「マクロ師」の方々なら、これくらいのものご自分で作られてますよね。あははは……。

【2000/10/11(Wed)】k-kawano氏から1年くらい前にもらった改造報告を、いまさら、しかも中途半端に反映してみました。ダイアログに検索ヒストリを付け、テキストを開いた後続けてその単語をF3などで再検索できるようにしました。

HTML

「更新マーク」シンプル版(InsertUpdateMarkSimple)

y.mikomeさんによるHTML機能拡張(htmlcmd)で追加される「更新マーク」機能互換の、シンプルな更新マーク挿入コマンドです。実行すると以下のような要素をカーソル位置に挿入します。

<STRONG class=updatemark title="1999/04/14+10">New!</STRONG>

マークに使われる文字は、範囲選択をしていなければ「New!」、選択している場合はその文字列です。

htmlcmdの更新マーク削除機能は、標準では「STRONG」に対応していないので、このマクロを使うためには改造する必要があります。htmlcmdの「DeleteUpdateMark」関数の「while (txSearchEx(text,"\\<(IMG|FONT|B)>".....」にSTRONGを加えてください。

ダウンロードリンク作成(MakeDownloadLink)

ファイルのダウンロード用の、ファイルサイズの入るリンクを作成するマクロです。実行するとファイル選択のダイアログでファイルを指定し、以下のようなリンクを挿入します。

<A href="softlib/wz40/wzmob200.lzh">wzmob200.lzh</A>(7.64KB)

リンクの形式は[JunkToysの設定](JunkToys.main)で指定できます。標準では「"<A href=\"%s\">%s</A>(%s)"」となっていますので、画像を含めたり、太字にしたりなど自由に設定してください。三つある"%s"の部分には、前から順に「ファイルへの相対パス」、「ファイル名」、「ファイルサイズ(0〜999バイトではbyte表示、1,000バイトからはKB表示)」が代入されます。

ルビ要素挿入(HtmlInsertRuby)

W3Cで仕様が検討されている(はず、たしか。ちゃんとしたことは調べてない)、ルビを表示する要素「RUBY」を挿入するマクロです。現状では例によって先走ったInternet Explorer 5しか表示できませんが、非対応のブラウザでも括弧付きで表示できるように要素を挿入するので、恐れずに使ってみましょう(なんだそれ)。ルビを振りたい文字列を選択してから実行してください。

例:木之本きのもとさくら 封印解除レリーズ
Internet Explorer 5ではルビとして、それ以外なら封印解除(レリーズ)という風に表示されているはずです。おもしろいでしょ?

とりあえず現在は、新たにルビを挿入することしかできません。将来的にはルビの修正などもできるようにするつもりです。

フック

WZ NOTEの文書タイトル自動決定

WZ NOTE EDITORで保存時、テキストの先頭行を見出し1(H1)に設定し、さらに文書のタイトルとします。

[ファイル]-[文書の情報]をわざわざ開くのが面倒なのと、文書タイトルと先頭行を(HTMLCMDの「H1をTITLEに同期」のように)同期させたかったので作りました。自分ではけっこう気に入ってます。

イベントマクロとして組み込んでお使いください。適当なファイルに貼り付けて保存し、[ツール」-[マクロ]-「TX-Cの設定]の[イベントマクロ]にファイル名を記述すればOKです。

WZ NOTE EDITORでTMLのヘッダを表示する術が分からなかったので、一瞬排他制御をOFFにして裏で同じテキストを開くという、ちょっぴりアブナイ事をしています(苦笑)。ホントに一瞬なのでまあどうってことないですが、100%安全とは言い切れないのでその辺ご了承ください。

【99/04/15(Thu)】 SHIFTキーを押しながらセーブすると、自動決定を抑止するようにしました。

セーブ時にアウトラインを更新

セーブ時に、アウトラインを更新します(あ、そのまんまだ)。もともと「セーブ時に行番号の変更行表示をクリアする」のおまけでしたが、そっちがy.mikomeさんの「拡張オプション」(cmdex)でサポートされたので、おまけだけが残りました。

ウィンドウ多重化先のアウトラインを消す

多重化するときに、多重化先のウィンドウではアウトラインを消し、アウトライン分横幅を縮めます。さらに縦幅もちょっと縮めます(もとのサイズの85%)。
僕は、ウィンドウの多重化を、「メイン作業用のウィンドウを開きながら、片方である特定の場所を表示させておく」という風に活用しています(とくにマクロ作りのとき)。なので、アウトライン表示しているときでも、多重化で開く新しいウィンドウにはアウトラインは邪魔なだけなんですよね。そこでこんなものを作ってみました。

「エディタの名前」ごとに慣用句を切り換える

WZには"HTML"、"MAIL"、"C PROGRAM"など、扱うテキストの種類によってタイトルバーに出るエディタの名前を変える機能があります。上記のものなどがプリセットされてるほか、[文書の設定]-[テキスト]から自由に設定することも可能です。
で、僕のマクロのユーザーさんから「扱うテキストの種類のよって[挿入]-[慣用句]で使うテンプレートを切り換えられないか」というメールが来たので、この「エディタの名前」を利用してやってみました。

使う前にちょっと準備が必要です。まず、WZ本体のあるフォルダに「phrase」というフォルダを作成し、その中に「%エディタの名前%.DIC」というテキストファイル(例:HTML.DIC、MAIL.DICなど)と、エディタの名前が空のときや、該当するファイルが無い場合に使う「_NORMAL.DIC」というファイルを作成してください。この状態で「慣用句の挿入」を行なうと、エディタの名前に応じた慣用句の挿入を行なえます。ダイアログ上での編集も反映されますが、WZ本体のフォルダにある「TEMPLATE.DIC」は単なる一時ファイルと化すので、直接編集する場合はphraseフォルダ以下の方を編集してください。

URLジャンプ時に、Shift押し下げで新しいウィンドウを開く

WZではエディタ上のCtrl+クリックや、閲覧モードでのクリックでURLジャンプを行なえますが、この際、DDEを利用して、既にWebブラウザが立ちあがっている場合は複数起動しないようになっています。が、時には新しいウィンドウを開きたい、って場合もあります(というか、これもまたWZ4の掲示板で出てたネタなんですが)。

というわけで、クリック時にShiftキーを押していると、新しいウィンドウを開いて表示するようにしてみました。設定で、Internet ExplorerからNetscape Navigatorかを選択し、Webブラウザのパスを指定してからお使いください。

しかし……これが、なかなかうまくいかないのです(>_<)。Netscape Navigatorなら単純にもう一つ起動して渡すだけでOKなのですが、Internet Explorerの場合、そうすると新しく起動したものではなく、古いほうのウィンドウに渡されてしまうのです。いろいろやってみたのですがどーしてもうまく行かず、ちょっと強引な方法でやってみました。Internet Explorer使いの方でうまく行かなかった場合はよろしければメールいただければと思います。

行間0&アンダーライン表示の時にURLのアンダーラインなどが消えるのを防ぐ

WZ EDITORには、「行間0でアンダーラインを表示した場合、一部の文字(jなど)の下や、URLの色分けなどがアンダーラインと重なった後に消えてしまう」という仕様があります。僕も今までは仕方なく行間1にして使っていたのですが、WZ掲示板の方で、「今のマシンパワーならカーソルが移動したときに書き直しても大丈夫では」という発言があり、ちょっと試してみようかな、ということでやってみました。表示行が変わった時に、「表示」-「更新」相当の動作を行ない、URLのアンダーラインなどを再描画します。

結果としては、まあさすがにちょっとちらつくけど、それほど気にならない程度かな、ってところです。というわけで公開しちゃいます。

Copyright©1998-2005 Yujiro Nakamura All rights reserved.
本サイトに関するご連絡の方法はreadmeをご参照ください。
本Webページの無断引用、本Webページへの無断リンクを歓迎します(笑)。