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

1 件の投稿を表示中 (合計 18 個)
  • 作成者
    投稿
  • わかりました、やってみます。
    ありがとうございました。

    開発お疲れ様です。

    21.3.903 x64で、

    BOOL checks[7] {};
    BOOL enables[7] {
    	Editor_QueryStatus(em, EEID_WINDOW_SPLIT,		&checks[0]),
    	Editor_QueryStatus(em, EEID_WINDOW_SPLIT_HORZ,		&checks[1]),
    	Editor_QueryStatus(em, EEID_WINDOW_SPLIT_VERT,		&checks[2]),
    	Editor_QueryStatus(em, EEID_WINDOW_SPLIT_HORZ_FIX,	&checks[3]),
    	Editor_QueryStatus(em, EEID_WINDOW_SPLIT_VERT_FIX,	&checks[4]),
    	Editor_QueryStatus(em, EEID_WINDOW_SPLIT_HORZ_TOGGLE,	&checks[5]),
    	Editor_QueryStatus(em, EEID_WINDOW_SPLIT_VERT_TOGGLE,	&checks[6])
    };
    wchar_t str[0x8000];
    swprintf_s(str, 
    	L"%d : %d, %d : %d, %d : %d, %d\n"
    	L"%d : %d, %d : %d, %d : %d, %d", 
    	enables[0], enables[1], enables[2], enables[3], enables[4], enables[5], enables[6], 
    	checks[0], checks[1], checks[2], checks[3], checks[4], checks[5], checks[6] );
    MessageBoxW(em, str, L"test", MB_OK);

    というコードを試しました。

    分割無し
    1 : 1, 1 : 1, 1 : 1, 1
    0 : 0, 0 : 0, 0 : 0, 0

    上下2分割
    1 : 1, 1 : 1, 1 : 1, 1
    0 : 0, 0 : 0, 0 : 1, 0

    左右2分割
    1 : 1, 1 : 1, 1 : 1, 1
    0 : 0, 0 : 0, 0 : 0, 1

    上下3分割
    0 : 0, 0 : 0, 0 : 0, 0
    0 : 0, 0 : 0, 0 : 0, 0

    左右3分割
    0 : 0, 0 : 0, 0 : 0, 0
    0 : 0, 0 : 0, 0 : 0, 0

    上下左右4分割
    1 : 1, 1 : 0, 0 : 1, 1
    0 : 0, 0 : 0, 0 : 1, 1
    という結果が得られました。

    上下3分割と、左右3分割の区別がつけられないようです。

    わかりました、それでやってみます。
    ありがとうございました。

    一応直しました。
    都合で水平スクロールバーのほうの分割ボックスの位置が左端になっちゃいましたが…

    そのうちライブラリに追加されるとは思いますが、とりあえずここにもあります。

    冬期休暇に入ったので、とっかかります。

    v14.4.3 beta 1で問題が修正されてるのを確認しました。
    ありがとうございました。

    次のベータの修正で直るかもしれませんが、一応追加の情報です。

    表示/非表示を切り替えられるものはいくつかありますが、
     各種ツールバーの有無は影響しない
     タブの有無/スタイルは影響しない
     スクロールバーの有無は影響しない
     ステータスバーの有無は影響しない
     ルーラーを非表示にしてる時は発生しない
     ルーラーを表示しているときだけおかしくなる

    ルーラーを表示しているときの「文末へ」コマンド時、OnEventsに EVENT_CARET_MOVED が、2回やってくる。
    そのうち1回目でやると、0xffffffff80000000へ変換される。 2回目でやった時は正常値へ変換される。
    ルーラーを表示してないときの「文末へ」コマンド時、OnEventsのEVENT_CARET_MOVEDは1回だけ。

    逆に「文頭へ」コマンドの場合は、ルーラーの有無にかかわらず、OnEventsのEVENT_CARET_MOVEDは1回だけ。

    返信先: 公式サイトのライブラリについて #18862

    ライブラリページが修正されてるの確認しました。
    ありがとうございました

    返信先: キーボードで箱型選択 #11643

    こんにちは

    手前味噌な話で恐縮ですが、拙作「BoxSelects 箱形選択」プラグインが、
    そのような操作で箱型選択できるようにするためのものです。

    ここのライブラリにも登録してあります。
    (型の字が間違ってるので検索するときは注意。)

    それを入れて、ショートカットキーを割り当てて使います。

    返信先: 分割ウインドウ間の移動 #9106

    こんにちは

    亀レスですが、ひょっとしたら、
    昔作った EditViewOnlyChangePanes 分割されたペインへ切り替え というプラグインが、
    kshiさんの望みの操作かもしれません。

    よろしければ、本体に実装されるまでのつなぎとしてどうぞ。

    返信先: 高速な全てのテキストの取得方法は? #7850

    よくよく考えてみたら、巨大ファイルコントローラ使って大きなファイルを部分的に読み込んでるときは、GetWindowText系はうまくいかないかもしれません。(未テスト)

    ファイルが巨大な場合(EmEditorは248 GB以上のファイルも処理できることになっている)、いかなる手段であれ全体を取得するのは無理があると思うので、一定以上大きなファイルの時は全体を取得しないようにした方がいいと思います。

    返信先: 高速な全てのテキストの取得方法は? #7847

    横から失礼。

    snowさんのおっしゃるカーソル位置のシリアル位置取得なら
    POINT_PTR pp;
    Editor_GetCaretPos( hwnd, POS_LOGICAL_W, &pp );
    UINT_PTR n = Editor_LogicalToSerial( hwnd, &pp );
    でいけますね。
    昔使ったことあるのに、存在をすっかり忘れてた・・・

    こちらも例によって改行文字がカウントされます。
    また、フリーカーソル時に改行の右側へカーソルが行ったときのことを若干気にした方がいいかもしれません。

    返信先: 高速な全てのテキストの取得方法は? #7846

    横から失礼。

    全体の文字数を取るなら GetWindowTextLength
    全体の文字列を取るなら GetWindowText
    が使えますよ。
    (8.05 32bit版のOnCommandとOnEventsに渡ってくるウィンドウハンドルについて実験済み。)

    ただし、改行文字も(おそらくその他の制御文字も)含まれます。
    試した範囲では、改行コードがCRLFのようなので一改行に付き2文字分増えます。

    返信先: 巨大なSJISファイルの動作 #7698

    横から失礼します

    ShiftJISは範囲内の全ての番号を使い切ってるわけではないので、
    >>第一バイトが0x81~0x9F・0xE0~0xFC
    >>第二バイトが0x40~0x7E・0x80~0xFC
    >>と0x0D0Aだけで構成されていることは確認済みです。
    であっても EmEditorの内部コードであると思われるUNICODEに変換できるとは限りません。

    たとえば 0x81 0xB0 はShiftJISの範囲内ですが、文字が割り当てられておらず、UNICODEにも変換できません。
    (後で調べたらShift_JIS-2004では文字が割り当てられてるようです。しかしながら 少なくともXPSP3ではUNICODEへ変換できない状況は変わらないようです)

    なので、
    プログラマさんのようなので、一度、全文字UNICODEに変換できるか試してみてははいかがでしょう?
    そのときはMultiByteToWideCharの第二引数にMB_ERR_INVALID_CHARSを指定してやってください。
    もし変換できない文字が含まれてたら失敗して0が帰ってきます。

    これできっちり全ての文字が変換できたら、あなたのファイルは、より確実に白であるといえるでしょう。

    >>その二つのファイルをバイナリで比較するとまったく同一のファイルでした。
    のほうは、わかりませんが・・・

    返信先: ATOKの前後参照変換 #7483

    こちらのコードが動いたのは、
    32bit版
    WinXP+ATOK2008
    WinXP+MS-IME2002(詳細なテキストサービスのサポートをプログラムのすべてに拡張する offの時のみ)
    64bit版
    WinVista+ATOK2008
    EmEditor 8.05です

    WinVista64bit+MS-IMEは、こっちもダメですね・・・

    返信先: ATOKの前後参照変換 #7480

    横から失礼

    このスレ見てプラグインを作ろうとしてたのですが、本体側で対応してくれるのならプラグインいらないですね。

    こっちでは機能するようになったので、ソースの一部を張っときます。

    case WM_IME_REQUEST:
    if( wParam == IMR_DOCUMENTFEED ){
    POINT_PTR pos;
    Editor_GetCaretPos( hwnd, POS_LOGICAL_W, &pos );
    GET_LINE_INFO inf;
    inf.cch = 0;
    inf.flags = FLAG_LOGICAL;
    inf.yLine = pos.y;
    UINT_PTR size( Editor_GetLineW( hwnd, &inf, NULL ) );
    inf.cch = size + 32;
    wchar_t* buf( (wchar_t*)_alloca( inf.cch * sizeof(wchar_t) ) );
    if( buf ){
    Editor_GetLineW( hwnd, &inf, buf );
    size_t len( wcslen(buf) );
    /* wchar_t str[30];
    swprintf_s( str, L” %d”, lParam );
    wcscat_s( buf, inf.cch, str );
    MessageBox( hwnd, buf, L””, MB_OK );/**/
    if( lParam ){
    RECONVERTSTRING* rcs( (RECONVERTSTRING*)lParam );
    memset( rcs, 0, sizeof(RECONVERTSTRING) );
    rcs->dwSize = sizeof(RECONVERTSTRING);
    rcs->dwStrOffset = sizeof(RECONVERTSTRING);
    rcs->dwStrLen = (DWORD)len;
    rcs->dwTargetStrOffset = (DWORD)(min( (size_t)max( pos.x, 0 ), len ) * sizeof(wchar_t));
    wcscpy_s( (wchar_t*)(rcs + 1), len + 1, buf );
    }
    return sizeof(RECONVERTSTRING) + (len + 1) * sizeof(wchar_t);
    }
    }
    break;

    このソースはUnicode版のものです。
    多分に余計なものも含まれてるでしょうが、私のところではこれで、32bit,64bitともに動いてます。

    参考になりますでしょうか・・・

    調べてみたところ、

    ・プロジェクトプラグインでVisualStudioのソリューションを開く。
    ・現在のソリューションテンプレートのプロパティのキーボードで、定義へ移動からF12を削除し、いったんプロパティを閉じる。

    とすると、上記プロパティのパラメータ情報の現在のキーのところに、勝手にSpaceが出現し、これが作用していたようです。
    (仮想PCにクリーンインストールした環境でも再現しました)

    説明の通りにすると、タグジャンプできるようになりました。
    ありがとうございます。

    「プラグインの設定」以外にも、設定画面があったのですね……
    気づかなかった。

    とりあえず、F12タグジャンプができるようにはなったのですが、説明されたようにキー設定を変えて以降、プロジェクトプラグインを表示している間、スペースキーでスペースを入力できなくなりました。
    スペースキーには、本体でもプラグインでも設定してないのですが……

1 件の投稿を表示中 (合計 18 個)