フォーラムの返信を作成しました。

126 件の投稿を表示中 (合計 176 個)
  • 作成者
    投稿
  • 返信先: 使い捨てマクロ置き場 #4148
    takuya
    参加者

    =====================================
    名前:開いているファイルの半角カナを全角カナへ
    版:1.0
    用途:半角カナを全角カタカナに変換したいとき
    コメント:変換関数は水沢・penguin-19・和彦様のホームページにあったモノを転用させていただきました。
    作ったものの、よく考えたらEmEditorに同じ機能が。。。
    供養させてください。。。macro作成の参考例になればイイかと思って。あげときます。
    =====================================

    Window.Redraw = false;
    document.selection.SelectAll();
    var text = document.selection.Text;
    document.selection.Text = toZenkaku( text );
    document.selection.Collapse();
    Window.Redraw = true;
    ////////
    ///toZenkaku()関数オリジナルはココのサイトから
    ///http://www.kiwi-us.com/~mizusawa/penguin/html_hint/java_s_kana.html
    ///
    function toZenkaku( str ){
    //配列を用意する
    hankaku = new Array(“ガ”, “ギ”, “グ”, “ゲ”, “ゴ”,
    “ザ”, “ジ”, “ズ”, “ゼ”, “ゾ”, “ダ”, “ヂ”, “ヅ”,
    “デ”, “ド”, “バ”, “パ”, “ビ”, “ピ”, “ブ”, “プ”,
    “ベ”, “ペ”, “ボ”, “ポ”, “ヴ”, “ァ”, “ア”, “ィ”, “イ”,
    “ゥ”, “ウ”, “ェ”, “エ”, “ォ”, “オ”, “カ”, “キ”, “ク”, “ケ”,
    “コ”, “サ”, “シ”, “ス”, “セ”, “ソ”, “タ”, “チ”, “ッ”, “ツ”,
    “テ”, “ト”, “ナ”, “ニ”, “ヌ”, “ネ”, “ノ”, “ハ”, “ヒ”, “フ”,
    “ヘ”, “ホ”, “マ”, “ミ”, “ム”, “メ”, “モ”, “ャ”, “ヤ”, “ュ”,
    “ユ”, “ョ”, “ヨ”, “ラ”, “リ”, “ル”, “レ”, “ロ”, “ワ”, “ヲ”,
    “ン”, “。”, “「”, “」”, “、”, “・”, “ー”, “゙”, “゚”);
    zenkaku = new Array(“ガ”, “ギ”, “グ”, “ゲ”, “ゴ”,
    “ザ”, “ジ”, “ズ”, “ゼ”, “ゾ”, “ダ”, “ヂ”, “ヅ”, “デ”,
    “ド”, “バ”, “パ”, “ビ”, “ピ”, “ブ”, “プ”, “ベ”, “ペ”,
    “ボ”, “ポ”, “ヴ”, “ァ”, “ア”, “ィ”, “イ”, “ゥ”, “ウ”,
    “ェ”, “エ”, “ォ”, “オ”, “カ”, “キ”, “ク”, “ケ”, “コ”,
    “サ”, “シ”, “ス”, “セ”, “ソ”, “タ”, “チ”, “ッ”, “ツ”,
    “テ”, “ト”, “ナ”, “ニ”, “ヌ”, “ネ”, “ノ”, “ハ”, “ヒ”,
    “フ”, “ヘ”, “ホ”, “マ”, “ミ”, “ム”, “メ”, “モ”, “ャ”,
    “ヤ”, “ュ”, “ユ”, “ョ”, “ヨ”, “ラ”, “リ”, “ル”, “レ”,
    “ロ”, “ワ”, “ヲ”, “ン”, “。”, “「”, “」”, “、”, “・”,
    “ー”, “゛”, “゜”);
    thismoji = str; // 文字を取得
    //変換開始
    for (i=0; i= 0){ //該当する半角カナがなくなるまで繰り返す
    thismoji = thismoji.replace(hankaku, zenkaku); //半角カナに対応する全角カナに置換する
    }
    }
    return thismoji;
    }

    takuya
    参加者

    ありがとうございます。

    やってることは
    document.replace()
    を50回ほどです。

    ちゃんとした正規表現考えるのが面倒なので、パターンを見つけた順にどんどんreplace追加していくうちに、こんな数に。。。。

    おっしゃるとおり、String.replaceを使ってみることにします。画面が緑色(検索結果の強調表示)で埋まっちゃうんですよね。

    takuya
    参加者

    Window.Redraw = false;
    ///たくさんの置換処理
    Window.Redraw =true;
    では期待通り動作しませんでした。なぜなのでしょうか?

    置換しているときに、画面描画をストップさせることができれば、無駄な強調表示などがなくなり、検索&置換の動作速度が速くなると思うのですが。マクロの実行が終わるまで画面の更新を押させる方法はこれだけなのかな。

    なにか良い手はありませんか?

    返信先: 表示設定を継承できるようにしたい。 #4123
    takuya
    参加者

    まとめて修正する場合、変更したくない場所まで触ってしまう可能性もありますので。

    たしかに。レジストリとかUIが変わるのは大幅なUPDATEになってしまうので要望する僕らは楽だけど、作る方は・・・大変だろうなぁ。でも実現すると、設定が操作しやすくなってかなり嬉しいですよね。一時的な設定も継承があればできそうだし

    返信先: 表示設定を継承できるようにしたい。 #4117
    takuya
    参加者

    返信ありがとうございます。コピーする方法では、常に最新の設定にすることが出来ません。必要な箇所だけコピーする事が出来ず、丸々同じものになってしまいます。

    「継承」し、まとめて管理したいのですが。不可能なのでしょうか?

    返信先: [行の分割] コマンドについて #4110
    takuya
    参加者

    なるほど、わかりやすい解説です。ありがとうございます。納得できました。

    できれば、「行の分割」動作の具体例をマニュアルに記載していただけるとうれしいのですが。マニュアルの記述ではまったく動作イメージがわかないです。可能でしょうか?

    返信先: MacroにImport機能 #4094
    takuya
    参加者

    >因みに私のほうはマクロ側からより低レベルな
    処理を実行したいので、DOMを拡張できたらなーと思っています。

    DOM実装ってdocument.getElementsByTagNameNS();みたいなモノですよね。低レベルなDOMの拡張って?もうすこし詳しく知りたいです理解できて無くてすいません。

    拡張ってEmEditor内蔵のDocumentオブジェクトをWRAPするdocumentオブジェクトをマクロ側で定義して、それを毎回Importすれば出来るんじゃないかなと。(重いけど・・・)
    こういうのをWikiなりオープンな場で作って共有できれば良いのじゃないかなと思ったのですが。

    //基本的なオブジェクトを拡張する BASE.js
    var _document = {
    keyPress : function(key){
    var shell = new ActiveXObject(“WScript.Shell”);
    shell.SendKeys( key );//key={F5}, key={A}…
    },
    Caret : {
    move : function(x){//負なら左へ、正なら右へ移動
    if( x <0 )
    this.selection.CharLeft(x);
    else
    this.selection.CharRight(x*-1);
    }
    }
    onSave :function(x){}
    }
    Object.extend( window.document, _document );

    これを使って

    Editor.ImportSrc( “BASE.js” )
    //なんか処理

    こんな感じで出来ないかな。

    >あと、個人的にJavascriptの言語構造でrequireなどの
    機能がないのはemeditor側ではどうしようもないような気がします・・・

    JScript.netには.netFrameWorkをImportする機能があるんだけど。あれってマクロの再利用とは、また違うのかな。たしかに言語構造的には無理だよねぇ。でも組み込みObjectの関数で用意していただけると使える気がする。先の例でのEditor.ImportSrc()みたいな感じで。

    個人的にはeval()するだけのrequire()でもいいからあると楽かなぁと思う。

    返信先: 編集あり(*)のタブ表示 #4091
    takuya
    参加者

    編集あり(*)のタブ表示 

    編集するとタブが、「ファイル名*」 になるところを 「*ファイル名」 になれば、入りきらないときにわからなくなるのが防げるのかな。末尾じゃなくて先頭にできればいいですね。タブの色が変わればもっとわかりやすくなるかも。

    私からも検討をお願いいたします。

    返信先: Editor.NewFile()の戻り値 #4089
    takuya
    参加者

    なるほど、機能追加要望に、Import欲しいのスレッドを作っておきます。

    Editor.NewFile()の戻り値に関してPerlerさんの意見も聞いてみたいなと思ったりします。

    返信先: ファイルから検索で異常終了する #4088
    takuya
    参加者

    私も死亡しました。バイナリファイル(JPGとか)が混ざっているフォルダに対し、拡張子 *.* で検索するとエラーになりました。6以前は画像が混じっていても大丈夫だったと記憶しています。

    返信先: Ctrl+ホイールで文字サイズ変更 #4087
    takuya
    参加者

    文字サイズ自体より、IE7やFireFoxで実装されている縮小表示拡大表示のほうが便利かもしれないですね。

    返信先: タブ関係の要望 #4086
    takuya
    参加者

    >×印については検討します
    個人的なことかもしれませんが、私はキーボード Ctrl+W から閉じることがほとんどなので、x印の表示/非表示が現状ままと、各タブに表示のどちらかを選べるようにしていただけるとうれしいです。

    返信先: タグ ジャンプファイルの編集後に #4072
    takuya
    参加者

    macroなら確実に出来ると思う。ただ、検索してその結果を修正し、それをファイルに反映させる状況を考えてみたのだけど。それって正規表現の置換で出来る場合が殆どだと思うけど。正規表現の置換を数回すれば済むのじゃないかな。

    takuya
    参加者

    ありがとうございます。

    documentの関数だと思ってdocumentの箇所ばかり見てました。助かります。

    Window.Redraw =false;
    //処理
    Window.Redraw =true;

    ですね。了解です。

    返信先: 最近使ったファイルの一覧を作りたい #4057
    takuya
    参加者

    >perlerさん
    ありがとうございます。タグジャンプでマニュアル検索してたからわからなかった。助かりました。

    ちゃんとタグジャンプ出来るファイル履歴一覧マクロに改良ししてみました

    //履歴一覧を新規ドキュメントに出力

    //履歴を配列で
    function RecentHistory(){
    WshShell = new ActiveXObject( “WScript.Shell” );
    var filenames = Array();
    var reg = “HKCUSoftwareEmSoftEmEditor v3Recent File ListFile”;
    try{
    for ( var i=1;;i++ ){
    filenames[filenames.length] = WshShell.RegRead( reg+i );
    }
    }catch( e ){
    //
    }
    return filenames;
    }
    //新規Document
    Window.Editor.NewFile();
    doc = Editor.Documents.Item( Editor.Documents.Count );
    doc.write( RecentHistory().join(“(1):n”) );
    doc.write( “(1):n” );
    doc.HighlightTag = true;

    返信先: Editor.NewFile()の戻り値 #4056
    takuya
    参加者

    openNewに戻り値がないのはCのオブジェクトをJavaScriptに渡せないからなのだろうなぁ。と一応想像はしていますが。

    OpenNewした後に
    doc = Editor.Documents.Item( Editor.Documents.Count );
    すれば良いのだろうけど。

    それをマクロ側でやると、それはエディタ用のマクロじゃない気がする。JavaScriptっぽくもないし。

    require/use/import があるのならEditorオブジェクトをすべてJavaScriptでWRAP出来るのです。起動時に基本的JSを読み込むとか。それが出来れば萌ディタからEmEditorに戻りたいなぁ

    返信先: Editor.NewFile()の戻り値 #4055
    takuya
    参加者

    うん。欲しい。evalするだけのrequireでイイから欲しい。

    いちおう、今のところ私も、eval()でやってますよ。
    http://d.hatena.ne.jp/takuya_1st/20061001/1159731651

    でもuse とか import文があればそれに越したことはない。

    返信先: 最近使ったファイルの一覧を作りたい #4047
    takuya
    参加者

    こんな感じかな?

    履歴を新規ドキュメントに出力することは出来るのですが。
    ファイルから検索結果みたいにクリック可能文字列にする方法がわかりませんでした。クリック出来ないと意味無いですよね。すいません

    //履歴一覧を新規ドキュメントに出力

    //履歴を配列で
    function RecentHistory(){
    WshShell = new ActiveXObject( “WScript.Shell” );
    var filenames = Array();
    var reg = “HKCUSoftwareEmSoftEmEditor v3Recent File ListFile”;
    try{
    for ( var i=1;;i++ ){
    filenames[filenames.length] = WshShell.RegRead( reg+i );
    }
    }catch( e ){
    //
    }
    return filenames;
    }
    //新規Document
    Window.Editor.NewFile();
    doc = Editor.Documents.Item( Editor.Documents.Count );
    doc.write( RecentHistory().join(“(1):n”) );

    takuya
    参加者

    見事に奇数部分だけ残ってますね。。。もしかして正規表現のチェックボックスOFFの可能性があるんじゃ?

    返信先: 編集中以外のファイルを全て閉じる #4032
    takuya
    参加者

    それマクロでもってます。

    わたしのマクロで良ければ。どうぞ
    CloseNotModifiedDoc.jsee

    //ドキュメントのIterator拡張
    var docs = {
    documents : new Enumerator( editor.Documents ),
    size : function(){ return this.documents.Count; },
    hasNext : function(){ return !this.documents.atEnd(); },
    next : function(){ doc= this.documents.item();this.documents.moveNext();return doc }
    }
    //メイン処理
    while( docs.hasNext() ){
    var doc = docs.next();
    if(doc.Saved){
    doc.close();
    }
    }

    できればエディタ本体に内蔵して欲しい機能ですよね。

    返信先: 開いているファイルのサイズ #4028
    takuya
    参加者

    最初、バイト数表示されていても、ステータスバーが書き換わっちゃうと、バイト数表示に戻らないことが原因だったのですね。これって再現可能なので不具合報告にあげた方が良いのじゃないでしょうか?

    返信先: 開いているファイルのサイズ #4001
    takuya
    参加者

    data.length だと2バイト文字も1文字で数えるんじゃないのかな?なのでサイズじゃなくて文字数が返って来る気がするけど。

    間違っていたらゴメンナサイ。

    返信先: Webプレビュープラグイン #4000
    takuya
    参加者

    WEBプレビューに渡すのはCでプラグイン書く必要があるけど。マクロでIE起動ならやってます。。

    PHPを実行して結果をCOMオブジェクトのIEに貼り付ける。(画像とかCSS欲しかったらNavigate(url)してから、DOMノードを書き換えればOK)

    WSHで作っておいて外部ツールで実行か。EmEditorマクロでActiveX使えばいけると思う。

    サーバー側のファイルをWinSCPで直接編集しちゃえるともっと楽ちんかと思います。

    参考 私が選択範囲をIEでHTMLプレビューするの使ってるマクロです

    var url = “http://xxxxxx.xxx.xx/index.php&#8221;;
    var ie = new ActiveXObject(“InternetExplorer.Application”);
    ie.Navigate2( url );
    while( ie.ReadyState != 4 ){ // // }
    ie.Document.write( Document.selection.Text );

    >江村様
    Webプレビューが起動するIEのDOMオブジェクトが取得できれば、IE起動なんて遠回りなことしなくてすむのですが。WebプレビューのDOMをマクロ側に公開してほすぃ・・・

    takuya
    参加者

    なるほど。勘違いしてました。ドラッグ時にターゲットがハイライトされないのがわかりにくいのかなと思ったのです。Snowさんのおっしゃる通りの規則性は慣れていれば気にならないので、そこに引っかかっていらっしゃると気づいていませんでした。

    takuya
    参加者

    タブのカスタマイズで、タブのスタイルを、ボタンからタブに変更すればいいんじゃないでしょうか?

126 件の投稿を表示中 (合計 176 個)