Scintilla/Selection and information

Last-modified: 2008-03-01 (土) 18:59:31

選択と情報

Scintillaはアンカーと現在の位置の2ポイント間で伸びる選択を維持する。
アンカーと現在の位置が同じであるなら、テキストは選択されない。
ドキュメントの位置は0(先頭文字の前)~ドキュメントサイズ(最後の文字の後)まで及ぶ。
あなたがメッセージを使用するなら、すなわち、何もあなたが位置を設定するのを止めるものがCRLFペアの中央、または2バイト文字の中央にない。
しかしながら、キーボードのコマンドはキャレットをそのような所定の位置に動かさないだろう。

  • SCI_GETTEXTLENGTH
  • SCI_GETLENGTH
  • SCI_GETLINECOUNT
  • SCI_GETFIRSTVISIBLELINE
  • SCI_LINESONSCREEN
  • SCI_GETMODIFY
  • SCI_SETSEL(int anchorPos, int currentPos)
  • SCI_GOTOPOS(int position)
  • SCI_GOTOLINE(int line)
  • SCI_SETCURRENTPOS(int position)
  • SCI_GETCURRENTPOS
  • SCI_SETANCHOR(int position)
  • SCI_GETANCHOR
  • SCI_SETSELECTIONSTART(int position)
  • SCI_GETSELECTIONSTART
  • SCI_SETSELECTIONEND(int position)
  • SCI_GETSELECTIONEND
  • SCI_SELECTALL
  • SCI_LINEFROMPOSITION(int position)
  • SCI_POSITIONFROMLINE(int line)
  • SCI_GETLINEENDPOSITION(int line)
  • SCI_LINELENGTH(int line)
  • SCI_GETCOLUMN(int position)
  • SCI_FINDCOLUMN(int line, int column)
  • SCI_POSITIONFROMPOINT(int x, int y)
  • SCI_POSITIONFROMPOINTCLOSE(int x, int y)
  • SCI_POINTXFROMPOSITION(<unused>, int position)
  • SCI_POINTYFROMPOSITION(<unused>, int position)
  • SCI_HIDESELECTION(bool hide)
  • SCI_GETSELTEXT(<unused>, char *text)
  • SCI_GETCURLINE(int textLen, char *text)
  • SCI_SELECTIONISRECTANGLE
  • SCI_SETSELECTIONMODE(int mode)
  • SCI_GETSELECTIONMODE
  • SCI_GETLINESELSTARTPOSITION(int line)
  • SCI_GETLINESELENDPOSITION(int line)
  • SCI_MOVECARETINSIDEVIEW
  • SCI_WORDENDPOSITION(int position, bool onlyWordCharacters)
  • SCI_WORDSTARTPOSITION(int position, bool onlyWordCharacters)
  • SCI_POSITIONBEFORE(int position)
  • SCI_POSITIONAFTER(int position)
  • SCI_TEXTWIDTH(int styleNumber, const char *text)
  • SCI_TEXTHEIGHT(int line)
  • SCI_CHOOSECARETX

SCI_GETTEXTLENGTH

SCI_GETLENGTH

これらのメッセージの両方がドキュメントの文字長を返す。

SCI_GETLINECOUNT

これはドキュメントの行数を返す。
空のドキュメントは1つの行を含んでいる。
唯一の行末を保持するドキュメントは、2つの行を持っている。

SCI_GETFIRSTVISIBLELINE

これは最初のScintillaビューの可視行の行番号を返す。
ドキュメントにおける最初の行は番号0である。
値はドキュメント行よりむしろ可視行である。

SCI_LINESONSCREEN

これはスクリーンで目に見える完全な行数を返す。
これによる利用可能な垂直なスペースが行間を割ったという一定の行高さによることである。
あなたが整数の行へのウインドウをサイズにアレンジしないなら、ビューの下部で目に見える部分的な行があるかもしれない。

SCI_GETMODIFY

ドキュメントが変更されていていれば非ゼロ、変更されてなければ0を返す。
ドキュメントの変更された状態はアンドゥ位置でセーブポイントに比例して決定する。
通常、あなたがファイルとしてデータを保存したとき、セーブポイントはSCI_SETSAVEPOINTによって設定される。


あなたが、ドキュメントが変更されるようになるとき、通知される必要があるなら、ScintillaはSCN_SAVEPOINTREACHEDとSCN_SAVEPOINTLEFT通知メッセージでそれがセーブポイントに入れるか、または出たことをコンテナに通知する。

SCI_SETSEL(int anchorPos, int currentPos)

このメッセージはアンカーと現在の位置の両方を設定する。
もしcurrentPosがマイナスなら、ドキュメントの最後を意味する。
もしanchorPosがマイナスなら、選択が削除されることを意味する(すなわち、currentPosとしてpositionと同じアンカーをセットする)。
操作の後、キャレットはビュー内にスクロールされる。

SCI_GOTOPOS(int pos)

これは、どんな選択も取り除く。posにキャレットを設定し、必要ならキャレットを見えるようにビューをスクロールする。
それはSCI_SETSEL(pos、pos)と同等である。
アンカー位置は現在の位置と同じに設定される。

SCI_GOTOLINE(int line)

これは、どんな選択も取り除く。行番号行の始めにキャレットを設定し、それを見えるように(必要であるなら)スクロールする。
アンカー位置は現在の位置と同じに設定される。
ドキュメントの行の外で行があるなら(最初の行は0)、行は最初または最後にセットされる。

SCI_SETCURRENTPOS(int pos)

これは、アンカーと現在の位置の間で現在の位置を設定して、選択を作成する。
キャレットはビュー内にスクロールされない。

[star] 関連項目: SCI_SCROLLCARET

SCI_GETCURRENTPOS

これは現在の位置を返す。

SCI_SETANCHOR(int pos)

これは、アンカー位置と現在の位置の間でアンカー位置を設定して、選択を作成する。
キャレットはビュー内にスクロールされない。

[star] 関連項目: SCI_SCROLLCARET

SCI_GETANCHOR

これは現在のアンカー位置を返す。

SCI_SETSELECTIONSTART(int pos)

SCI_SETSELECTIONEND(int pos)

これらはアンカー位置が現在の位置以下であるという仮定に基づく選択を設定する。
キャレットは目に見えるようにならない。
これらのメッセージを使用した後に、テーブルはアンカーの位置と現在の位置を示す。

 

[heart] 表: SetSelectionキャレットと位置

アンカー現在
SCI_SETSELECTIONSTARTposMax(pos, current)
SCI_SETSELECTIONENDMin(anchor, pos)pos
 

[star] 関連項目: SCI_SCROLLCARET

SCI_GETSELECTIONSTART

SCI_GETSELECTIONEND

これらはアンカーであるに関係なく終わりが現在の位置である選択の始めと終わりを返す。
SCI_GETSELECTIONSTARTは、より小さく現在の位置かアンカー位置に戻る。
SCI_GETSELECTIONENDは2つの値について、より大きいのを返す。

SCI_SELECTALL

これはドキュメントのすべてのテキストを選択する。
現在の位置はビュー内にスクロールされない。

SCI_LINEFROMPOSITION(int pos)

このメッセージはドキュメントの位置posを含む行を返す。
もしpos <= 0なら、戻り値は0である。
posがドキュメントの最後にあるなら、リターン値は最後の行である。

SCI_POSITIONFROMLINE(int line)

これは行の始まりに対応するドキュメント位置を返す。
もしlineがマイナスなら、選択の始まりを保持する行の位置を返す。
もしlineがドキュメントの行より大きければ、戻り値は-1である。
もしlineがドキュメントの行数(すなわち、1行が最後の行)と同じなら、戻り値はドキュメントの最後である。

SCI_GETLINEENDPOSITION(int line)

これはどんな改行文字を含む行の位置を返す。
もしlineがドキュメント(どんな改行文字もない)の最後の行であれば、結果はドキュメントのサイズである。
もしlineがマイナスまたはline >= SCI_GETLINECOUNT()であれば、結果は未定義である。

SCI_LINELENGTH(int line)

これはどんな改行文字を含む行の長さを返す。
もしlineがマイナスまたはドキュメントの最後の行を超える場合、結果は0である。
もしどんな改行文字も含まない行の長さがほしいなら、SCI_GETLINEENDPOSITION(line) - SCI_POSITIONFROMLINE(line)を使う。

SCI_GETSELTEXT(<unused>, char *text)

これは現在選択されたテキストとバイト0で終わるをテキストバッファにコピーする。
バッファは少なくともSCI_GETSELECTIONEND()-SCI_GETSELECTIONSTART()+1バイト長であるに違いない。
テキスト引数が0であれば、全体の選択を格納するために割り当てられるべき長さが返される。

[star] 関連項目: SCI_GETCURLINE, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

SCI_GETCURLINE(int textLen, char *text)

キャレットがある行のテキストを取得し、その行におけるキャレットの位置を返す。
char* textは該当行の内容から取得したい長さと終端の0を収めるに充分な大きさが無くてはならない。
textLenはバッファの大きさである。
引数textが0の時は該当行全体を収めるために必要な大きさが返される。

[star] 関連項目: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

SCI_SELECTIONISRECTANGLE

現在の選択が矩形モードなら1、そうでなければ0を返す。

SCI_SETSELECTIONMODE(int mode)

SCI_GETSELECTIONMODE

選択モードの設定と取得を行う。
ストリーム(SC_SEL_STREAM=1)、矩形(SC_SEL_RECTANGLE=2)、行単位(SC_SEL_LINES=3)が取りうる値である。
これら各モードが設定されると、キャレットの移動とともに選択範囲の拡縮が行われる。
同じ値かSCI_CANCELを引数にしてで呼び出されるまでこの効果は続く。
取得関数はすでに選択範囲が生成されている場合でも現在のモードを返す。

SCI_GETLINESELSTARTPOSITION(int line)

SCI_GETLINESELENDPOSITION(int line)

この行における選択でなければ特定の行でINVALID_POSITIONを返していて選択の始めと終わりの位置を検索する。

SCI_MOVECARETINSIDEVIEW

キャレットがビューの上か下にあるなら、それは現在の位置に見える最も近い行に動かされる。
選択は失われる。

SCI_WORDENDPOSITION(int position, bool onlyWordCharacters)

SCI_WORDSTARTPOSITION(int position, bool onlyWordCharacters)

Scintillaが内部で使う単語定義と同様のものを用いて単語の開始点や終了点を求める。
どの文字を単語の一部として扱うかについて独自の情報をSCI_SETWORDCHARSで与えることができる。
position引数には検索の開始点を指定する。
その位置から、単語の開始点を探すときは後方に、終了点を探すときには前方に検索する。


onlyWordCharactersにtrue (1)を与えると、検索方向に向かって単語を構成しない文字で止まる。
onlyWordCharactersがfalse (0)の時は、まず検索方向の最初の文字の種類(単語を校正する文字か否か)を判別し、同じ方向へ同じ種類の文字が続く位置を検索する。
検索は文書の先頭か末尾に達した場合も終了する。


"w"が単語構成文字で","がそうでない場合、"I"で位置を表して、trueやfalseはonlyWordCharactersへの指定値だとすると次の表のような結果になる。

 

[heart] 表: 単語の開始と終了位置

初期状態end, trueend, falsestart, truestart, false
..ww..I..ww....ww..I..ww....ww....Iww....ww..I..ww....wwI....ww..
....wwIww........wwwwI........wwwwI........Iwwww........Iwwww....
..wwI....ww....wwI....ww....ww....Iww....Iww....ww....Iww....ww..
..ww....Iww....ww....wwI....ww....wwI....ww....Iww....wwI....ww..
 

SCI_POSITIONBEFORE(int position)

SCI_POSITIONAFTER(int position)

ドキュメント内の指定位置の直前や直後の位置を返す。
現在のコードページを意識する。
最小の位置は0で最大の位置は文書の末尾である。
マルチバイト文字の中の位置を指定した場合、その文字の開始位置・終了位置を返す。

SCI_TEXTWIDTH(int styleNumber, const char *text)

これは、特定の数の数字を表示するために行番号マージンを作るためにどれくらい広いか状態で決めるために例えば使用できる特定のstyleNumberに描かれた文字列のピクセル幅を返す。

SCI_TEXTHEIGHT(int line)

これは特定行のピクセルの高さを返す。
現在すべての行が同じ高さである。

SCI_GETCOLUMN(int pos)

文書内の位置posの桁番号を返す。
タブ幅も計算上考慮される。
posより前でその行の最後のタブの桁番号に、そこからposの直前までの文字数を加えた値を返す。
その行にタブ文字がないときは、戻り値は最大でその行の文字数である。
ダブルバイト文字は一つの文字として数えられる。
おそらくは固定幅フォントでのみ有効に利用できるものである。

SCI_FINDCOLUMN(int line, int column)

このメッセージは、タブの幅を考慮に入れながら、行に関する1つのカラム位置を返す。
それはシングルカラムとして多バイト文字を扱う。
行が0で始まるような場合はカラム番号である。

SCI_POSITIONFROMPOINT(int x, int y)

SCI_POSITIONFROMPOINTCLOSE(int x, int y)

SCI_POSITIONFROMPOINTが最も近い文字位置まで見つける。SCI_POSITIONFROMPOINTCLOSEは同様ですが、ポイントがウインドウ外または文字にも近くないなら、-1を返す。

SCI_POINTXFROMPOSITION(<unused>, int pos)

SCI_POINTYFROMPOSITION(<unused>, int pos)

これらのメッセージはドキュメントの位置posのテキストの表示ピクセル位置xとyを返す。

SCI_HIDESELECTION(bool hide)

正常な状態は、SCI_SETSELFOREとSCI_SETSELBACKによって設定されるように、それを描画することによって選択を目に見えるようにする。
しかしながら、あなたが選択を隠すなら、それは通常のテキストとして描画される。

SCI_CHOOSECARETX

Scintillaは、最後の位置のx値がユーザで水平移動を記憶しており、上下キーを使用して垂直に移動するとき、この値は使用される。
このメッセージは記憶している値でキャレットの現在のx位置を設定する。