未完成品だったり、わざわざページを分けて紹介する必要の無いマクロをこちらでまとめて紹介します。ソースだけで、ドキュメントなどはありません。分からんことがあったら適当に聞いてください。
選択範囲(非選択時はファイル全体)の、文字数、400字詰め原稿用紙換算の枚数&行数、および「12Q、13Qで3段組み」における段数、行数を表示します。まあ12Qとかその辺は気にせず、文字数+原稿用紙枚数計算マクロとして使ってみてやってください。
禁則処理、ワードラップなどはもとの文書の設定に従います。
たまに誤作動?してとんでもなく少ない値が出ます。もう一度やるとちゃんとした値が取れるので気にしないでください。(この辺が未完成たる由縁。原因不明なのでほっといてます。)
ダウンロード:countline.c
テキストの操作とは全く関係無い、TXE型(アプリケーション)マクロです。
「投入したいファイル」と「それを投入したいフォルダ」を指定し、フォルダ下をサブフォルダを含めて検索、古いファイルがあったら上書きします。ってゆーか名前が同じなら古かろうが新しかろうが否応なしに上書きするのですが(笑)。
必要に迫られたのと、再帰処理の勉強のためにずいぶん前に作りました。
ダウンロード:putnew.c
ここから先は、僕が自分専用に作っているちょっとしたマクロから、0.00000001%でも他の人に役立つかもしれない可能性のあるものを掲載します。直接ソースを掲載するので、ブラウザからコピー&ペーストして適当なファイルに貼りつけて利用してください。
Netscape Navigatorの一部のバージョン(僕は4.5で確認しました)だと、ソース内の改行が滅茶滅茶になってしまう場合があるみたいです。その場合はすみませんがNavigatorの設定でスタイルシート機能をOFFにしてみてください。どうもスタイルシートでPreformatted text(PREエレメント)に枠を指定すると改行がおかしくなるみたい。中途半端に解釈してバグ出すくらいなら対応しないほうがいいっての!(怒)
Ctrl+ESDXキーによるカーソル移動(いわゆるダイアモンドカーソル)は大変便利ですが、Windowsの標準動作であるCtrl+XCVによるコピー(カット)&ペーストも、特にマウスを併用しているときは便利です。しかしこれではXキーが競合してしまう! そんな悩みもコレで一気に解決……か?(笑) これをCtrl+Xに割り当てれば、普段はダイアモンドカーソル、範囲選択中はクリップボードへのカットとして働きます。
最初はとまどうかもしれませんが、慣れると快適です。基本的にWindowsだとモノを書いているときは手はホームポジション上から離れませんが、行をまたがるような長い文章の範囲選択はたいていマウスでやりますからね。
ちなみにAT互換機でこのマクロを使う人は、CtrlキーとCapsキーを入れ換える義務があります(笑)
#include "edit.h"
ExtCtrlX
//Ctrl+Xの拡張(ダイヤモンドカーソル、Windows準拠マルチ対応)
//非選択なら下、選択中なら切り取り
{
if(text->fClip){
txClipboardCut(text);
}else{
keyDown(1);
}
}
現在開いている文書を、けっこう使えるわりにはイマイチ知名度が低い(苦笑)メーラー、tsworksのドラフト保存フォルダに送ります。その際、送信先のメールアドレスと題名が文書の先頭に無ければ、ダイアログから入力するようになっています。逆に、文書の先頭が以下のようにtsworksのドラフトファイルの書式に合っていれば、そのまま加工せずにドラフト保存フォルダに送ります。
とか言いつつホントはテキストの先頭が"To"であるかどうかしか見ていません!誤作動の可能性もあるので(たいていtsworks側がエラーを出してくれるでしょうが)気をつけてください。
To: yujiro@example.jp Fcc: sent Subject: ○○の件について ----------
アドレス帳とかも利用できませんしはっきりいって低機能です。唯一便利な点はドラフトフォルダにファイルを置くだけなので、tsworksが起動してなくてもOKってことくらいでしょうか。
ちょっとした走り書きを送ったりするときに使ってください。
注意:Fcc(Fcc: sent)と保存先フォルダ(L:¥¥tsworks¥¥yujiro¥¥Spool¥¥)は必ずお使いの環境にあわせて書き換えてください。
#include "dialog.h"
SendTsWorks
{
txstr szBuff = "";
txJumpFileTop(text);
txGetWord(text,szBuff);
if(szBuff != "To"|txIsCurReturn(text)){
txstr szTo = "";
txstr szSubject = "";
HDIALOG hd = dialog("送信先の設定");
dialogStr(hd,"メールアドレス",szTo,12,30);
dialogStr(hd,"題名",szSubject,12,30);
dialogOpen(hd);
txInsertf(text,"To: %s¥nFcc: sent¥nSubject: %s¥n----------¥n",szTo,szSubject);
}
txstr szFileName;
txstr szTsWorksPath = "L:¥¥tsworks¥¥yujiro¥¥Spool¥¥";
sprintf(szFileName,"%02d%02d%02d%02d%02d.drf",timeGetMonth(),timeGetDay(),timeGetHour(),timeGetMinute(),timeGetSecond());
txSaveAs(text,szTsWorksPath+szFileName,text->crSave,text->kcSave,0);
// txClose(text);
}
マニュアルにも載っているような、何の変哲もない日付挿入マクロです。[98/11/23(Mon)03:35]という書式(外側の括弧はなし)で入力します。
誰でも作れるようなモノですが、この日付フォーマットがけっこう気に入ってて昔(秀丸ユーザー時代)から使っているので、それを普及させるために(笑)公開しました。
InsertDate
{
txstr szYoubi;
strcpymax(szYoubi,"SunMonTueWedThuFriSat" + timeGetDayofweek()*3,4);
insertf("%2d/%02d/%02d(%s)%02d:%02d",timeGetYear(),timeGetMonth(),timeGetDay(),szYoubi,timeGetHour(),timeGetMinute());
}
秀丸からWZに乗り換えたとき、唯一気に入らなかったのが「上書きセーブ後、行番号の変更行表示がクリアされない(太字のまま)ということでした。どーにかならないもんかなぁ、と思っていたのですが、WZ4のβテストBBSで、N.Yamamotoさんの発言の中に「セーブ後アンドゥでクリアされる」というものがあり、早速イベントマクロ(マクロっていうのかこれ?)を組みました。でもあと1週間でWZ4発売、いまさら気がつくなんて。
とはいえ、WZ4でも似たようなもんらしいので、WZ4が出たら対応版マクロ(だからこれマクロっていうのかホントに?)を作ります。
セーブ後のイベントマクロに割り当ててお使いください
(しかし、たいていの人はイベントマクロは専用のマクロファイル(_event.cなど)を用意してるんだから、直接そっちに書いてしまったほうがはやい、という話も……)
HenkouClear
//変更行クリア
//WZ4だと"1文字入力してアンドゥ"になるらしい。
{
txUndo(text);
}
Copyright©1998-2005 Yujiro Nakamura All rights reserved.