ひまつぶし雑記帖

doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍

xyzzyのバッファを書き出す

2015/8/22 [15:44:21] (土) 天気

PDFのデータをWEBの管理ページにコピペという単調なワープアIT軽作業。
ぺたぺた貼りつけるだけならいいんだけど、PDFのデータは印刷のことを考えて(?)半角数字などの両側に半角のスペースが入ってたりするし、改行があるとWEBで表示すると半角程度空白になってしまう。

・PDFからエディタにコピペ
・無駄な半角スペースと改行を削除
・エディタから管理ページのフォームにコピペ

という作業。
毎度毎度エディタに貼りつけ置換して…いちいち同じ作業にむかついてきたので、調べてみた。

xyzzyというWINDOWSのエディタを10年以上使っていて、以前はマクロ(lisp)が面白くていろいろいじくってた。でも、もうすっかりびっくり忘却の彼方。lispは手強い。

とりあえず。xyzzyの編集中のバッファをperlに渡して処理させて、その結果を編集中のバッファに書き出して、クリップボードにコピーしてくれればいいや、と久しぶりにxyzzyのlispを調べた。

・カレントバッファをtmpファイルに書き出す
・外部コマンドでtmpファイルを開いて処理をして、その結果をカレントバッファに書き出す
・クリップボードにコピーする

perlを使えば何でもできるしなあ。

…て、「_xyzzy.tmp」とファイルを仲介してるんだけど。バッファを標準出力に出してそれを標準入力でperlが受けとるのが本来あるべきスマートな姿。Windowsだと無理、かなぁ…。


以下、外部コマンド実行でハマったのでメモ。
外部コマンドを実行するための関数「execute-shell-command」があって、xyzzyのリファランスを見ると

外部プログラムを実行します。結果だけをxyzzyに取り込みます。

COMMAND : 実行するコマンドをオプション付で指定します。
INFILE : 標準入力を使用する外部プログラムであれば入力ファイル名を指定します。
OUTPUT : 標準出力を出力するバッファを指定します。
ENVIRON : 設定する環境変数を連想リスト形式で渡します。
(("HOME" . "C:/applications/xyzzy/")
("TOPDIR" . "C:/spool/"))
DIRECTORY : 実行するディレクトリを指定します。



ところが、INFILEにtemp-fileを指定しても、ファイル名が引数になってない=指定のファイルを開けない。

具体的には
(execute-shell-command "_xyzzy-tmp.bat " t temp-file (selected-buffer))
INFILEにtemp-fileを指定すればバッチファイルの引数に渡されると思ったらダメだったので、perlのスクリプトの中で$f='_xyzzy.tmp'とファイル名を固定で指定してた。
これは超ダサイ。

なもんで、
(execute-shell-command (concat "_xyzzy-tmp.bat" " " temp-file) t (selected-buffer))
↑COMMANDにtemp-fileを入れたコマンドライン文字列を作って入れたところ、バッチファイルでtemp-fileを受けとることができた。
system関数にsprintfでコマンドを作って実行させる、ようなものだ。

うーん、でもきっとINFILEを使った方がいいんだろうなあ。
とはいえ、目先、今月8月も残り10日を切ってるんで、不細工でもこいつで作業してやっつけてしまわんと。時間がかかればかかるほど単価がアレになってしまうんで、〆切一ヶ月前倒し進行!

[08/31 19:48:13]追記。
て、optionalのところ、nilだtだじゃなく、ここにINFILEを書けばいいだけの話だった。誤情報すみません。


ちなみに、xyzzyでは「filter-buffer」というのがあって、「Ctrl+x #」と叩くと、外部コマンドを実行するための1行バッファが現われる。
ここに外部コマンドを入力すると、編集中のバッファ(カレントバッファ)を外部コマンドに渡してくれる。
単純なものならperlのワンライナーでやりたい放題だし、スクリプトを実行させるためのバッチファイルでもOKだ。

超手強いlispを避けて、普段使い慣れてる処理系で書けるのは本当に助かる。

image 

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/4/27 12:51

図書館で作業。案の定、目視確認は一回じゃ抜け漏れが出る。
一応、最初に確認、反映させた箇所で大丈夫だったけど、これは先が思いやられる。

2024/4/27 08:52

もろもろ、問題山積でやる気が出なくてマズい。久しぶりに図書館の個人席にノパソ持ち込んで作業してみる、か。

2024/4/27 08:50

こっちはこっちで、問題ありあり

検索
<<2024/4>>
 123456
78910111213
14151617181920
21222324252627
282930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版