2012年07月25日

JavascriptのマクロをD-monkeyに変換して使いたいのだがカーソル移動のプロバディが不明でどうしたものか

fargolf07.jpg

 ども、アラフォー親父でござんす。
実は前々から考えていることの一つとして、Meryエディタで使用しているマクロをVx EditorやJm Editorに流用したら、かなり便利になるのではないか?と密かに企んでいるわけです。

 前から考えているにも関わらず、中々手が出ないのがエディタ操作画面のキャレット移動オブジェクトが定められていないという点があるわけです。

 Vx EditorとJm Editorの両方のエディタですが、Reademeファイルを読んでみても、Editorオブジェクト・プロパティには、無いんだよね…。
 誰か知っている人がいたら、教えて欲しい部分なんですよ。

 その理由としては、Meryで使用している拡張子 .js のマクロなんですけど、文字の挟み込みを行った後、キャロット移動を行いたいわけです。
 単純にMeryエディタの場合は、CharLeftCharRightLineUpLineDownで定められているため、比較的マクロを入力後のキャレットの位置を調整しやすいわけです。

 んが…D-monkeyマクロのVx EditorとJm Editorは、仲良くそのプロバディに関して分からないときたもんだ(これは自分で変数決めて行えということなのだろうか?)

 これはMery用のマクロを基準にして書いているからなのかもしれないのですが、まあどんなマクロかといえば、例えばULタグを入れたい時Liで箇条書きの部分を挟み込むわけですよ。

文章を途中まで記載して、「あ〜これは箇条書きの方がいいかも?」と感じたら、すぐに変更することが出来るように最初の一行だけでもliタグで挟み込んでおこう、というマクロになっています。

【以下Mery用で書いたマクロ liタグで挟み込んでいくやつ.拡張子はjs】

bEmpty = document.selection.IsEmpty;
//bEmptyはドキュメントが空なのかどうかを調べる
//はじめは選択文なしでタグ入力のみのケース

if(bEmpty != 0){    //こちらは選択文なしで<ul>〜liが3つのタグ入力となる
  document.write("<ul>\n  <li></li>\n  <li></li>\n  <li></li>\n</ul>");
//半角インデントで<li>を入力  \n 正規表現の改行
   document.selection.LineUp(false,3);//<li>が3行なのでラインを3つ上へ
    document.selection.CharLeft(false,-1);//カーソルの位置合わせのため
}else{   
  var str = document.selection.Text;//こちらは選択文があった時の場合
  var li = "<ul>\n  <li>" + str + "</li>\n  <li></li>\n  <li></li>\n</ul>";
//同じく半角インデントで<li>を入力 \n 正規表現の改行
   document.write(li);//選択した文章を挟み込むタグは<li>なので write(li);にしないとエラーとなる
   document.selection.LineUp(false,2);
//選択文の下の<li>タグにカーソルが来ると速くコーディング出来るので LineUp(false,2)とする
    document.selection.CharLeft(false,-1);
//カーソル位置合わせの為…\(^o^)/

}

 こんなマクロでやんす。

 使ってみればわかるのですが、普通に入力すると li タグの間にキャレットが来るようにしていて、文字を選択すると、liタグで挟み込んで置換してタグ挿入となるマクロなんだわさ。
 実はそのまま、Meryだけではなくgpadでも使えるマクロなんだよね。(これはここだけの話)

これZen-Codingを使って書くと、ul>li*3で同じタグが記載されるけど、タイプするのとショートカットキー1発では、全く速さが違うし、文字の挟み込みがZen-Codingでは不得意な分野になるので、状況に応じて使い分けるほうが全体に楽なんですよ。

これをなんとか、D-monkeyで書き換えて、Vx EditorやJm Editorでも使いたいという密かな企み、というわけなんです。
 でもエディタオブジェクトが決まっていないのか、それとも単純に書かれていないだけなのか?
 これは仕様として、諦めるべきなのか、それとも実はこんなプロバディや変数でキャレット移動が可能なのかが、自分としてはReademeを読んでも、D-monkeyヘルプを読んでも、今ひとつ掴み切れないわけです。単純に情報が足りてないだけなんだろうか,頭の中で混乱しているだけなのか?

(正直、始めっからつまづいてしまったわけ)

ましてやね、今までプログラミングなんか、やったことがないから、ここに到達するだけでも結構難儀したわけですよ。全然知らねえからさ、カンだよカン。
 Meryサイトのマクロリファレンスを横目で見つつ、でしたからね。
(ほんと自慢にも何にもならん)

 DR-Xさんに、聞いたほうが早いのかもしれないですけど、安易に聞いてもな〜と思いつつ、VxEditor & DMonkey布教ページさんのページを時々見ては、「こうかな?どうかな?」とトライしては動かないと繰り返しているんだけどね。
(基礎を知っている人なら、よく判るんだろうね、やっぱ本格的に勉強しなきゃダメそうだ)
一日20分程度で、まあ気長にやるさ。
posted by アラフォー親父 at 08:12 | Comment(0) | TrackBack(0) | スクリプト言語 | このブログの読者になる | 更新情報をチェックする
最近のコメント