メモに書き込み

作成理由

  • 特定のファイルの末尾に選択したテキストを書き込みたい。
  • もともとはファイルを選択させてたけど毎回ほとんど同じファイルを選んでることに気づいてファイル選択のひと手間を省略できるようにしてみた。

仕様を詰める

  • 二つ上のフォルダまで memo.txt を探し選択したテキストを貼り付ける。
  • memo.txt が見つからない場合は貼り付けるファイルを選択する。

秀丸マクロ

//メモに書き込み.mac

runsync2 "rubyw -x "+currentmacrofilename;
execmacro directory + "\\tmp.mac";
endmacro;

/*
#/
#! ruby
# encoding: utf-8
Encoding.default_external = 'UTF-8'
$stdout=open("tmp.txt","w")
$stderr=open("tmp_err.txt","w")

fl=""
if FileTest.file?("memo.txt")
  fl=File.expand_path("memo.txt")
elsif FileTest.file?("../memo.txt")
  fl=File.expand_path("../memo.txt") 
elsif FileTest.file?("../../memo.txt")
  fl=File.expand_path("../../memo.txt")
end
fl=fl.gsub("/","\\\\\\")

st=%Q|if(!selecting)endmacro;\n|
if fl==""
  st+=%Q|$f=browsefile("","*.*");\n|
  st+=%Q|if($f=="")endmacro;\n|
else
  st+=%Q|$f="#{fl}";\n|
end
st+=%Q|$s=getselectedtext();\n|
st+=%Q|openfile $f;begingroupundo;gofileend;\n|
st+=%Q|insert "\\n"+$s+"\\n";endgroupundo;\n|
File.write("tmp.mac",st)

__END__
*/



今更だけどちょっとメモ

  • 秀丸マクロを作ってて ruby なら簡単に書けるのにとか思うときはコメント/*~*/の中に ruby のスクリプトを忍び込ませてやるといい。
  • rubyの実行には xオプションを使う。
  • ruby にデータを渡したい場合は引数やクリップボードを使ったりテキストに落としたりする。
  • ruby からデータを受け取りたい場合もやはりクリップボードとかテキストの読み込みで行う。
  • ディレクトリの記号は ruby では / だけど秀丸マクロでは \ を使ったほうが良い。(でないとopenfileで開いてくれたのにfindfileで見つけてくれないなんていう罠が待ち受けているから気をつけろ)
  • 今回のように ruby で使い捨ての秀丸マクロを作って実行してやればけっこう複雑な操作も可能になる。

コメント