Scintilla |
2004年5月29日更新
Last edited 29/May/2004 NH
内部設計の概観
Scintilla を使う上でのメモ
Windows での Scintilla エディットコントロールの使い方
Windows 上の C++ で Scintilla を使う簡単なサンプル
Visual Basic で Scintilla を使う簡単なサンプル
Bait は GTK+ 上で Scintilla を使う小さなサンプルです。
解析器の書き方についての詳述。折りたたみについても含みます。
コンテナの中への解析器の実装方法
折りたたみの実装方法
Scintilla や SciTE にコードを寄付するときは、それらにおけるコーディングスタイルに従うことが推奨されます。ただし強制ではありません。
There is an overview of the internal design of
Scintilla.
Some notes on using Scintilla.
How to use the Scintilla Edit Control on Windows.
A simple sample using Scintilla from
C++ on Windows.
A simple sample using Scintilla from
Visual Basic.
Bait is a tiny sample using Scintilla
on GTK+.
A detailed description of how to write a lexer, including a
discussion of folding.
How to implement a lexer in the container.
How to implement folding.
The coding style used in Scintilla and SciTE is
worth following if you want to contribute code to Scintilla but is not compulsory.
Windows 版の Scintilla は Windows コントロールです。Windows コントロールと同様に基本的なプログラミングインタフェイスは Windows メッセージを介するものとなっています。初期の Scintilla はたくさんの API を数え上げていました。Windows の標準エディット/リッチエディットコントロールに定義されていたものです。しかしながらこれらの API は現在非推奨となっていて、Scintilla 自身のより一貫性のあるものが支持されています。通常のエディットコントロールのメッセージに加え、Scintilla は文法による装飾、折りたたみ、マーカー、自動補完、コールチップを使うことができます。
The Windows version of Scintilla is a Windows Control. As such, its primary programming interface is through Windows messages. Early versions of Scintilla emulated much of the API defined by the standard Windows Edit and RichEdit controls but those APIs are now deprecated in favour of Scintilla's own, more consistent API. In addition to messages performing the actions of a normal Edit control, Scintilla allows control of syntax styling, folding, markers, autocompletion and call tips.
GTK+ 版の Scintilla も Windows 版のそれと同様にメッセージを使います。これは通常の GTK+ の手順と異なりますが実装は簡単で速くなります。
The GTK+ version also uses messages in a similar way to the Windows version. This is different to normal GTK+ practice but made it easier to implement rapidly.
この解説書は Scintilla で使われるメッセージと通知のそれぞれについて書かれています。どのように組み合わせれば便利なエディタを構成することができるかについては書いていません。現時点では、Scintilla を使う開発の手法は SciTE がどのようにしているかを見るのが一番です。SciTE は Scintilla の機能の大半を実行します。
This documentation describes the individual messages and notifications used by Scintilla. It does not describe how to link them together to form a useful editor. For now, the best way to work out how to develop using Scintilla is to see how SciTE uses it. SciTE exercises most of Scintilla's facilities.
以下では、メッセージは関数の呼び出しとして記述されています。関数呼び出しの媒介変数は 0 〜 2 個となっています。通常は二つで、Windows プログラマによくなじみのある wParam
と lParam
です。命令は記述されている引数だけを使います。すべてのメッセージは Scintilla が使おうと使うまいと二つの引数をとりますので、命令の引数は内容を記述されたもののみを使う形になります。ここで使われなかった引数はゼロにしておくことが強く推奨されます。このことによって、すでにあるコードを破壊するリスクなしに将来のメッセージの拡張ができるようになるからです。共通する引数の型は次の通りです。
In the descriptions that follow, the messages are described as function calls with zero, one
or two arguments. These two arguments are the standard wParam
and
lParam
familiar to Windows programmers. Although the commands only use the
arguments described, because all messages have two arguments whether Scintilla uses them or
not, it is strongly recommended that any unused arguments are set to 0. This allows future
enhancement of messages without the risk of breaking existing code. Common argument types
are:
bool | 0 として false , 1 として true を期待している引数 |
---|---|
int | 符号付 32 ビット整数引数 |
const char * | Scintilla に渡されるテキストへのポインタを表す引数。テキストは変更されない。テキストは 0 を終端に置かれるか他の引数が文字数を渡しているかされている。説明でこの点ははっきりさせています。 |
char * | Scintilla がテキストで満たすであろうバッファへのポインタを表す引数。場合により他の引数が Scintilla にバッファの大きさを伝えます。そうでない場合は呼び出し側が応答を受け取るに充分な大きさをバッファに確保しておかなくてはなりません。もし SCI_* 呼び出しで NULL ポインタ (0) が渡されると必要なバッファの大きさが返されます。 |
colour | RGB 形式で色を設定します(R=赤, G=緑, B=青)。各色成分は 0 〜 255 の値で強さを表します。この三つの色の値は次の方法で結合します : 赤 | (緑 << 8) | (青 << 16) 。色の強さがすべて 255 であれば白になり、すべて 0 であれば黒となります。colour を設定するとそれを要求していることになります。要求に対して何が得られるかは実行環境の性能・画面モードによります。 |
<unused> | これは未使用の引数です。将来の拡張に対する互換性を保証するために 0 にしておいてください。 |
bool | Arguments expect the values 0 for false and 1 for
true . |
---|---|
int | Arguments are 32-bit signed integers. |
const char * | Arguments point at text that is being passed to Scintilla but not modified. The text may be zero terminated or another argument may specify the character count, the description will make this clear. |
char * | Arguments point at text buffers that Scintilla will fill with text. In some cases, another argument will tell Scintilla the buffer size. In others, you must make sure that the buffer is big enough to hold the requested text. If a NULL pointer (0) is passed then, for SCI_* calls, the length that should be allocated is returned. |
colour | Colours are set using the RGB format (Red, Green, Blue). The intensity of each colour is set in the range 0 to 255. If you have three such intensities, they are combined as: red | (green << 8) | (blue << 16). If you set all intensities to 255, the colour is white. If you set all intensities to 0, the colour is black. When you set a colour, you are making a request. What you will get depends on the capabilities of the system and the current screen mode. |
<unused> | This is an unused argument. Setting it to 0 will ensure compatibility with future enhancements. |
o テキストの獲得と変更 | o 検索と置換 | o 上書きモード |
o 切り取り、コピー、貼り付け | o エラーの取り扱い | o 取り消しと再実行 |
o 選択と情報 | o スクロールと自動スクロール | o ホワイトスペース |
o カーソル | o マウスキャプチャ | o 行末 |
o 装飾 | o 装飾の定義 | o キャレット・選択範囲・ホットスポットの装飾 |
o 余白 | o その他の設定 | o 括弧の強調 |
o タブと字下げの誘導 | o マーカ | o 標示 |
o 自動補完 | o ユーザ提供の自動補完語 | o コールチップ |
o キーボードコマンド | o キーの割り当て | o ポップアップ編集メニュー |
o マクロの記録 | o 印刷 | o 直接アクセス |
o 複数の視野 | o 折りたたみ | o 行クリップ |
o 拡大 | o 長い線 | o 解析器 |
o 通知 | o 非推奨のメッセージ | o Scintilla で決して対応しないメッセージ |
o Scintilla の構築 |
SCI_SETxxxxx
という名前のメッセージはしばしば SCI_GETxxxxx
というメッセージと対になっています。かったるい繰り返しを少なくするために、SCI_GETxxxxx
が SCI_SETxxxxx
で設定された値を返す場合(だけ)、SET
処理のコードを書き、GET
処理は後の自分の想像のために残しておきます。
Messages with names of the form SCI_SETxxxxx
often have a companion
SCI_GETxxxxx
. To save tedious repetition, if the SCI_GETxxxxx
message
returns the value set by the SCI_SETxxxxx
message, the SET
routine is
described and the GET
routine is left to your imagination.
Scintilla が保持する文書の各文字は関連づけられた装飾情報を伴っています。文字オクテットと装飾オクテットの組はセルと呼ばれます。装飾オクテットは装飾番号を下位 5 ビットに、これとは独立して残りの 3 ビットを識別子(indicators) に使います。これにより大部分の言語に対応できる 32 種の基本修飾が可能となり、三つの独立識別子によって文法エラー、非推奨メッセージ、字下げの不整合などの情報も一度に表示可能となります。装飾に使うビット数は で変更でき、最大 7 ビットを割り当てることができます。残りのビットは識別子として利用可能です。
(訳注: 日本語のように一文字で複数バイトを要する文字は各オクテットに分散して保持し、実装でそれらがバラバラになるのを避ける設計のようです。ですから次の段落の「文字」はオクテット単位の話になると思われます。)
Each character in a Scintilla document is followed by an associated byte of styling information. The combination of a character byte and a style byte is called a cell. Style bytes are interpreted as a style index in the low 5 bits and as 3 individual bits of indicators. This allows 32 fundamental styles, which is enough for most languages, and three independent indicators so that, for example, syntax errors, deprecated names and bad indentation could all be displayed at once. The number of bits used for styles can be altered with up to a maximum of 7 bits. The remaining bits can be used for indicators.
Scintilla が保持する文書における「位置」は文字もしくは文字の前の空間を参照します。文書の先頭の文字位置は 0 で、2 文字目が 1 、3 文字目が 2 となります。文書の保持する文字数が nLen
であれば最後の文字位置は nLen
-1 となります。キャレットは文字間に位置し、最初の文字の前 (0) から最後の文字の後ろ (nLen
) までを移動することができます。
Positions within the Scintilla document refer to a character or the gap before that
character. The first character in a document is 0, the second 1 and so on. If a document
contains nLen
characters, the last character is numbered nLen
-1.
The caret exists between character positions and can be located from before the first character (0)
to after the last character (nLen
).
二つのオクテットが一つの文字を構成している場合、その真ん中にキャレットを移動させることはできません。これは日本語のような DBCS 文字と CP/M 標準に由来する改行文字とそれに直接続く復帰文字の組み合わせにおいて発生します。INVALID_POSITION
定数 (-1) は文書内の不正な位置を表します。
There are places where the caret can not go where two character bytes make up one character.
This occurs when a DBCS character from a language like Japanese is included in the document or
when line ends are marked with the CP/M standard of a carriage return followed by a line feed.
The INVALID_POSITION
constant (-1) represents an invalid position within the
document.
Scintilla のすべての行は同じ高さを持ち、現在有効なスタイルすべてのなかで一番大きなフォントから計算されます。この制限は実行性能を求めたものです。もし、各行の高さが異なるとしたら、文字位置から計算するために最初に装飾を完了しなくてはならないことになります。
All lines of text in Scintilla are the same height, and this height is calculated from the largest font in any current style. This restriction is for performance; if lines differed in height then calculations involving positioning of text would require the text to be styled first.
SCI_GETTEXT(int length, char *text)
SCI_SETTEXT(<unused>, const char *text)
SCI_SETSAVEPOINT
SCI_GETLINE(int line, char *text)
SCI_REPLACESEL(<unused>, const char
*text)
SCI_SETREADONLY(bool readOnly)
SCI_GETREADONLY
SCI_GETTEXTRANGE(<unused>, TextRange
*tr)
SCI_ALLOCATE(int bytes, <unused>)
SCI_ADDTEXT(int length, const char *s)
SCI_ADDSTYLEDTEXT(int length, cell *s)
SCI_APPENDTEXT(int length, const char *s)
SCI_INSERTTEXT(int pos, const char *text)
SCI_CLEARALL
SCI_CLEARDOCUMENTSTYLE
SCI_GETCHARAT(int position)
SCI_GETSTYLEAT(int position)
SCI_GETSTYLEDTEXT(<unused>, TextRange
*tr)
SCI_SETSTYLEBITS(int bits)
SCI_GETSTYLEBITS
文書の先頭から length
-1 文字のテキストを取り出し、終端文字 0 を加えて返します。文書の全テキストを獲得するには SCI_GETLENGTH
を用いて文書が保持する文字数 (nLen
) を獲得してください。長さ nLen+1
バイトのバッファを割り当ててから SCI_GETTEXT(nLen+1, char
*text)
を呼び出します。text 引数が 0 の場合、文書のすべてを収めるに必要な大きさが返されます。テキストを保存したときは、 SCI_SETSAVEPOINT
を用いてテキストを未編集扱いにするべきです。
参照: , , , ,
SCI_GETTEXT(int length, char *text)
This returns length
-1 characters of text from the start of the document plus one
terminating 0 character. To collect all the text in a document, use SCI_GETLENGTH
to get the number of characters in the document (nLen
), allocate a character
buffer of length nLen+1
bytes, then call SCI_GETTEXT(nLen+1, char
*text)
. If the text argument is 0 then the length that should be allocated to store the
entire document is returned.
If you then save the text, you should use SCI_SETSAVEPOINT
to mark
the text as unmodified.
See also: , , , ,
文書内のテキストすべてを指定した文字列で置き換えます。text は 0 終端を持つ文字列を指定します。
SCI_SETTEXT(<unused>, const char *text)
This replaces all the text in the document with the zero terminated text string you pass
in.
Scintilla に文書を未編集扱いにすることを伝えます。通常はファイルの保存あるいは読み出しを行ったときに実行することからこの名前(保存ポイント)があります。Scintilla がやり直しと再実行を扱うのと同様に、 と
の各通知メッセージにより、コンテナにファイルが変更されていることを考慮すべきかどうかを知らせることができます。(未訳: あとで意味の検証必要)
参照: ,
SCI_SETSAVEPOINT
This message tells Scintilla that the current state of the document is unmodified. This is
usually done when the file is saved or loaded, hence the name "save point". As Scintilla
performs undo and redo operations, it notifies the container that it has entered or left the
save point with and
notification messages, allowing the container to know if the file
should be considered dirty or not.
See also: ,
text 引数で指定されたバッファを、指定された行の内容で満たします。行番号は 0 から始まります。バッファは 0 を終端文字に持ちません。バッファがテキストを格納するに充分な長さを持っていることは呼び出し側が保証しなくてはなりません。
を使ってください。戻り値はバッファに複写された文字数です。返された文字列は行末文字を含んでいます。文書がもつ行数を超える行番号が指定された場合は一文字も複写されません。text 引数が 0 の場合は行全体を保存するに必要な長さが返されます。参照: , , , ,
SCI_GETLINE(int line, char *text)
This fills the buffer defined by text with the contents of the nominated line (lines start at
0). The buffer is not terminated by a 0 character. It is up to you to make sure that the buffer
is long enough for the text, use . The returned value is the
number of characters copied to the buffer. The returned text includes any end of line
characters. If you ask for a line number outside the range of lines in the document, 0
characters are copied. If the text argument is 0 then the length that should be allocated
to store the entire line is returned.
See also: , , , ,
アンカーから現在位置までの選択範囲のテキストを指定した 0 終端文字列で置換します。アンカーと現在位置が同じの時はキャレットの位置に指定文字列が挿入されます。キャレットは挿入された文字列の後ろに移動し、必要であれば画面がスクロールしてキャレットが見えるようになります。
SCI_REPLACESEL(<unused>, const char *text)
The currently selected text between the anchor
and the current position is replaced by the 0 terminated text string. If the anchor and
current position are the same, the text is inserted at the caret position. The caret is
positioned after the inserted text and the caret is scrolled into view.
これらのメッセージは文書の「読み出し専用」フラグを設定したり読み出したりします。文書を読み出し専用にすると、テキストを変更しようとしたときに
通知が発生します。SCI_SETREADONLY(bool readOnly)
SCI_GETREADONLY
These messages set and get the read-only flag for the document. If you mark a document as read
only, attempts to modify the text cause the notification.
cpMin
から cpMax
までの範囲の文字列を lpstrText
に複写します(Scintilla.h
にある TextRange
構造体を参照ください)。cpMax
が -1 の場合は文書の最後までが範囲となります。返される文字列は 0 終端を持ちます。従って、バッファの大きさは読み出し予定の大きさよりも少なくとも 1 文字長くなくてはなりません。戻り値は終端の 0 を含まない文字列の長さです。
参照: , , , ,
SCI_GETTEXTRANGE(<unused>, TextRange *tr)
This collects the text between the positions cpMin
and cpMax
and
copies it to lpstrText
(see struct TextRange
in
Scintilla.h
). If cpMax
is -1, text is returned to the end of the
document. The text is 0 terminated, so you must supply a buffer that is at least 1 character
longer than the number of characters you wish to read. The return value is the length of the
returned text not including the terminating 0.
See also: , , , ,
装飾情報を含めて文字列をバッファに複写します。各セルは 2 オクテットを使用し、各セル内の下位アドレス側に文字、上位アドレス側に装飾情報が格納されます。cpMin
から cpMax
までの文字が lpstrText
に複写されます(Scintilla.h
にある TextRange
構造体を参照ください)。終端には 2 オクテットの 0 が追加されます。従って lpstrText
で指定するバッファは少なくとも 2*(cpMax-cpMin)+2
バイトの大きさが必要です。cpMin
や cpMax
が有効な値かどうかの検査は行われません。文書の外を示す位置は文字・装飾情報ともに 0 を返します。
SCI_GETSTYLEDTEXT(<unused>, TextRange *tr)
This collects styled text into a buffer using two bytes for each cell, with the character at
the lower address of each pair and the style byte at the upper address. Characters between the
positions cpMin
and cpMax
are copied to lpstrText
(see
struct TextRange
in Scintilla.h
). Two 0 bytes are added to the end of
the text, so the buffer that lpstrText
points at must be at least
2*(cpMax-cpMin)+2
bytes long. No check is made for sensible values of
cpMin
or cpMax
. Positions outside the document return character codes
and style bytes of 0.
参照: , , , ,
See also: , , , ,
与えられたバイト数を格納するに充分な文書バッファを割り当てます。その文書は現在の内容よりも小さくなることはありません。
SCI_ALLOCATE(int bytes, <unused>)
Allocate a document buffer large enough to store a given number of bytes.
The document will not be made smaller than its current contents.
文字列 s
の最初の length
文字を現在位置に挿入します。挿入処理を停止させるための 0 を文字列の中に含めることができます。現在位置は挿入された文字列の後ろに移動しますが、自動スクロールは行われません。
SCI_ADDTEXT(int length, const char *s)
This inserts the first length
characters from the string s
at the current position. This will include any 0's in the string that you might have expected
to stop the insert operation. The current position is set at the end of the inserted text,
but it is not scrolled into view.
SCI_ADDTEXT
と同様ですが、挿入されるのは装飾付文字列です。
SCI_ADDSTYLEDTEXT(int length, cell *s)
This behaves just like SCI_ADDTEXT
, but inserts styled text.
文字列 s
の最初の length
文字を文書の最後に挿入します。挿入処理を停止させるための 0 を文字列の中に含めることができます。現在の選択範囲は変更されず、挿入された文字列を見せるような自動スクロールも発生しません。
SCI_APPENDTEXT(int length, const char *s)
This adds the first length
characters from the string s
to the end
of the document. This will include any 0's in the string that you might have expected to stop
the operation. The current selection is not changed and the new text is not scrolled into
view.
0 終端文字列 text
を位置 pos
か、もしこれが -1 であれば現在位置に挿入します。現在位置は挿入された文字列の後ろに移動しますが、自動スクロールは発生しません。
SCI_INSERTTEXT(int pos, const char *text)
This inserts the zero terminated text
string at position pos
or at
the current position if pos
is -1. The current position is set at the end of the
inserted text, but it is not scrolled into view.
文書が読み出し専用でない限り、テキストすべてを削除します。
SCI_CLEARALL
Unless the document is read-only, this deletes all the text.
解析器を選択した後など、文書全体を再装飾したい場合は SCI_CLEARDOCUMENTSTYLE
ですべての装飾情報と折りたたみ状態をクリアすることができます。
SCI_CLEARDOCUMENTSTYLE
When wanting to completely restyle the document, for example after choosing a lexer, the
SCI_CLEARDOCUMENTSTYLE
can be used to clear all styling information and reset the
folding state.
文書内の位置 pos
にある文字を返します。pos
が範囲外の値であれば 0 が返されます。
SCI_GETCHARAT(int pos)
This returns the character at pos
in the document or 0 if pos
is
negative or past the end of the document.
文書内の位置 pos
についての装飾情報を返します。pos
が範囲外の値であれば 0 が返されます。
SCI_GETSTYLEAT(int pos)
This returns the style at pos
in the document, or 0 if pos
is
negative or past the end of the document.
各セルで装飾情報に使われるビット数の設定と読み出しを行います。装飾情報は最大 7 ビットにすることができます。残りのビットは識別子として用いることができます。標準設定は SCI_SETSTYLEBITS(5)
です。
SCI_SETSTYLEBITS(int bits)
SCI_GETSTYLEBITS
This pair of routines sets and reads back the number of bits in each cell to use for styling,
to a maximum of 7 style bits. The remaining bits can be used as indicators. The standard
setting is SCI_SETSTYLEBITS(5)
.
これらの構造体は Win32 の TEXTRANGE
および CHARRANGE
と全く同じ形で定義されています。これにより、Scintilla をリッチエディットのように扱う古いコードも動作します。
TextRange and CharacterRange
These structures are defined to be exactly the same shape as the Win32 TEXTRANGE
and CHARRANGE
, so that older code that treats Scintilla as a RichEdit will
work.
struct CharacterRange { long cpMin; long cpMax; }; struct TextRange { struct CharacterRange chrg; char *lpstrText; };
SCI_FINDTEXT(int flags, TextToFind
*ttf)
SCI_SEARCHANCHOR
SCI_SEARCHNEXT(int searchFlags, const char
*text)
SCI_SEARCHPREV(int searchFlags, const char
*text)
target を使った検索と置換
Search and replace using the
target
searchFlags
検索ルーチンのいくつかは flag オプションを使います。これにより簡単な正規表現検索が可能です。次のフラグを加算合成してください。
searchFlags
Several of the search routines use flag options, which include a simple regular expression
search. Combine the flag options by adding them:
SCFIND_MATCHCASE |
検索文字列の大文字小文字まで一致した場合のみ合致とみなします。 |
SCFIND_WHOLEWORD |
前後の文字が単語を構成するものではない場合のみ合致とみなします。 (訳注: 日本語でどれだけ役に立つかという点は怪しい。次も同様。) |
SCFIND_WORDSTART |
前の文字が単語を構成するものではない場合のみ合致とみなします。 |
SCFIND_REGEXP |
指定する検索文字列が正規表現とみなされます。 |
SCFIND_POSIX |
正規表現の書式がより POSIX 互換となります。( ) はエスケープなしでタグを生成します。 |
SCFIND_MATCHCASE |
A match only occurs with text that matches the case of the search string. |
SCFIND_WHOLEWORD |
A match only occurs if the characters before and after are not word characters. |
SCFIND_WORDSTART |
A match only occurs if the character before is not a word character. |
SCFIND_REGEXP |
The search string should be interpreted as a regular expression. |
SCFIND_POSIX |
Treat regular expression in a more POSIX compatible manner by interpreting bare ( and ) for tagged sections rather than \( and \). |
searchFlags
に SCFIND_REGEXP
が含まれていなければ、検索範囲の終端を開始端より前に持ってくるという手法で逆方向検索を行うことができます。SCFIND_REGEXP
が含まれている場合は、位置指定が逆転していても常に文書の順方向に検索します。
If SCFIND_REGEXP
is not included in the searchFlags
, you can
search backwards to find the previous occurrence of a search string by setting the end of the
search range before the start. If SCFIND_REGEXP
is included, searches are always
from a lower position to a higher position, even if the search range is backwards.
正規表現の中で特殊文字として扱われる文字は以下の通りです。
In a regular expression, special characters interpreted are:
. |
任意の一文字と一致します。 |
\( |
一致部のタグづけ範囲の開始を定めます。 |
\) |
タグ付け範囲の範囲の終わりを定めます。 |
\n |
n は 1 〜 9 までで、n 番目のタグ範囲に合致した文字列を参照します。例えば、検索文字列が Fred\([1-9]\)XXX で 置換文字列が Sam\1YYY であるとき、Fred2XXX が与えられると Sam2YYY に置換されます。 |
\< |
Scintilla の定義する単語の開始位置に一致します。 |
\> | Scintilla の定義する単語の終了位置に一致します。 |
\x |
通常は正規表現内で特殊な意味を持つ文字 x をその文字そのものとして使います。例えば \[ は文字集合の開始ではなく単なる [ の文字として扱われます。 |
[...] |
文字集合を意味します。[abc] は a, b, c, のいずれか一文字に合致します。範囲指定も可能で、[a-z] は全ての小文字一文字に合致します。 |
[^...] |
文字集合の補集合を意味します。[^A-Za-z] はアルファベット以外の全ての文字一字に合致します。 |
^ |
(上記の「文字の補集合」の中で使われているのでなければ)行頭に合致します。 |
$ |
行末に合致します。 |
* |
0 回以上の繰り返しに合致します。Sa*m は Sm ,
Sam , Saam , Saaam などのすべてに合致します。 |
+ |
1 回以上の繰り返しに合致します。Sa+m は
Sam , Saam , Saaam などに合致します。 |
. |
Matches any character |
\( |
This marks the start of a region for tagging a match. |
\) |
This marks the end of a tagged region. |
\n |
Where n is 1 through 9 refers to the first through ninth tagged region
when replacing. For example, if the search string was Fred\([1-9]\)XXX and
the replace string was Sam\1YYY , when applied to Fred2XXX this
would generate Sam2YYY . |
\< |
This matches the start of a word using Scintilla's definitions of words. |
\> | This matches the end of a word using Scintilla's definition of words. |
\x |
This allows you to use a character x that would otherwise have a special meaning. For example, \[ would be interpreted as [ and not as the start of a character set. |
[...] |
This indicates a set of characters, for example, [abc] means any of the characters a, b or c. You can also use ranges, for example [a-z] for any lower case character. |
[^...] |
The complement of the characters in the set. For example, [^A-Za-z] means any character except an alphabetic character. |
^ |
This matches the start of a line (unless used inside a set, see above). |
$ |
This matches the end of a line. |
* |
This matches 0 or more times. For example, Sa*m matches Sm ,
Sam , Saam , Saaam and so on. |
+ |
This matches 1 or more times. For example, Sa+m matches
Sam , Saam , Saaam and so on. |
文書内の文字列を検索します。選択範囲を参照したり移動させたりはしません。searchFlags
引数は検索方法の種類を指定します。正規表現も使用できます。
SCI_FINDTEXT(int searchFlags, TextToFind *ttf)
This message searches for text in the document. It does not use or move the current selection.
The searchFlags
argument controls the
search type, which includes regular expression searches.
TextToFind
構造体は Scintilla.h
に定義されています。文書内の検索範囲をchrg.cpMin
と chrg.cpMax
に設定してください。SCFIND_REGEXP
がフラグに含まれていなければ、chrg.cpMax
を chrg.cpMin
より小さくすることで逆方向検索が行えます。SCFIND_REGEXP
が含まれている場合は常に順方向検索となります(chrg.cpMax
が chrg.cpMin
より小さい場合でも)。
TextToFind
構造体のメンバ lpstrText
に、検索対象を表す 0 終端文字列へのポインタを設定してください。TextToFind
の適用が難しい言語の場合は SCI_SEARCHINTARGET
で代用することを考慮しましょう。
The TextToFind
structure is defined in Scintilla.h
; set
chrg.cpMin
and chrg.cpMax
with the range of positions in the document
to search. If SCFIND_REGEXP
is not included in the flags, you can search backwards by
setting chrg.cpMax
less than chrg.cpMin
. If SCFIND_REGEXP
is included, the search is always forwards (even if chrg.cpMax
is less than chrg.cpMin
).
Set the lpstrText
member of TextToFind
to point at a zero terminated
text string holding the search pattern. If your language makes the use of TextToFind
difficult, you should consider using SCI_SEARCHINTARGET
instead.
検索が失敗したときは -1 が、成功したときは見つかった文字列の先頭位置が戻り値となります。TextToFind
のメンバである chrgText.cpMin
と chrgText.cpMax
には見つかったテキストの開始端と終端の位置が収められます。
The return value is -1 if the search fails or the position of the start of the found text if
it succeeds. The chrgText.cpMin
and chrgText.cpMax
members of
TextToFind
are filled in with the start and end positions of the found text.
参照:
See also:
この構造体は正確に Win32 の FINDTEXTEX
構造体と等価になるように定義されています。リッチエディットコントロールとして Scintilla を扱う古いコードのためです。
TextToFind
This structure is defined to have exactly the same shape as the Win32 structure
FINDTEXTEX
for old code that treated Scintilla as a RichEdit control.
struct TextToFind { struct CharacterRange chrg; // 検索範囲。 char *lpstrText; // 検索対象文字列 ( 終端を 0 にすること )。 struct CharacterRange chrgText; // 合致文字列の位置が返される。 };
struct TextToFind { struct CharacterRange chrg; // range to search char *lpstrText; // the search pattern (zero terminated) struct CharacterRange chrgText; // returned as position of matching text };
これらによって再配置可能な検索を実行できます。マクロで記録できるような対話的多重インクリメンタルサーチが可能となります。(未訳)この三種のメッセージは 通知を送ります。
のSCI_SEARCHANCHOR
SCI_SEARCHNEXT(int searchFlags, const char *text)
SCI_SEARCHPREV(int searchFlags, const char *text)
These messages provide relocatable search support. This allows multiple incremental
interactive searches to be macro recorded while still setting the selection to found text so
the find/select operation is self-contained. These three messages send notifications if macro recording is enabled.
SCI_SEARCHANCHOR
は検索の開始位置を設定し、SCI_SEARCHNEXT
と SCI_SEARCHPREV
で現在の選択範囲の先頭あるいは最後(文書の先頭に近い方)を示します。SCI_SEARCHNEXT
もしくは SCI_SEARCHPREV
を呼び出すときは常に事前に SCI_SEARCHANCHOR
を呼び出すべきです。
SCI_SEARCHANCHOR
sets the search start point used by
SCI_SEARCHNEXT
and SCI_SEARCHPREV
to the start of the current
selection, that is, the end of the selection that is nearer to the start of the document. You
should always call this before calling either of SCI_SEARCHNEXT
or
SCI_SEARCHPREV
.
SCI_SEARCHNEXT
と SCI_SEARCHPREV
は次あるいは前の合致部分を検索します。検索文字列は text で指定し、これは 0 終端文字列へのポインタです。検索方法は searchFlags
で調整できます。正規表現で指定したときは SCI_SEARCHPREV
は最初の合致部分文字列を探し当てるだけで、アンカーポイントの一つ前の合致部分を検索するわけではありません。
SCI_SEARCHNEXT
and SCI_SEARCHPREV
search for the next and previous
occurrence of the zero terminated search string pointed at by text. The search is modified by
the searchFlags
. If you request a regular
expression, SCI_SEARCHPREV
finds the first occurrence of the search string in the
document, not the previous one before the anchor point.
合致部分がなければ -1 が、あれば開始位置が戻り値として返されます。合致文字列を示すために選択部が更新されますが、それが見えるようにするためにスクロールをするようなことはありません。
The return value is -1 if nothing is found, otherwise the return value is the start position of the matching text. The selection is updated to show the matched text, but is not scrolled into view.
参照:
,See also:
,SCI_REPLACETARGET
や SCI_REPLACETARGETRE
を呼び出します。
Using SCI_REPLACETARGET
or SCI_REPLACETARGETRE
.
target で指定した範囲内での検索は SCI_SEARCHINTARGET
で実行されます。文字数を別に与えられた文字列を使うため、ヌル文字を検索することもできます。検索に成功すると範囲の長さ、失敗すると -1 が返されます。失敗した場合、target は削除されません。SCFIND_MATCHCASE
,
SCFIND_WHOLEWORD
, SCFIND_WORDSTART
, SCFIND_REGEXP
といったフラグが SCI_SEARCHINTARGET
で使われる際、SCI_SETSEARCHFLAGS
とも組み合わせることができます。構造体へのポインタが不要なことから、SCI_SEARCHINTARGET
はいくつかの場合において よりも簡単に使うことができます。
Searching can be performed within the target range with SCI_SEARCHINTARGET
,
which uses a counted string to allow searching for null characters. It returns the length of
range or -1 for failure, in which case the target is not moved. The flags used by
SCI_SEARCHINTARGET
such as SCFIND_MATCHCASE
,
SCFIND_WHOLEWORD
, SCFIND_WORDSTART
, and SCFIND_REGEXP
can be set with SCI_SETSEARCHFLAGS
. SCI_SEARCHINTARGET
may be simpler
for some clients to use than , as that requires using a pointer to a
structure.
SCI_SETTARGETSTART(int pos)
SCI_GETTARGETSTART
SCI_SETTARGETEND(int pos)
SCI_GETTARGETEND
SCI_TARGETFROMSELECTION
SCI_SETSEARCHFLAGS(int searchFlags)
SCI_GETSEARCHFLAGS
SCI_SEARCHINTARGET(int length, const char
*text)
SCI_REPLACETARGET(int length, const char
*text)
SCI_REPLACETARGETRE(int length, const char
*text)
target の開始及び終了点を設定あるいは取得します。正規表現を使わない検索を行っている場合は、開始点を終了点より後ろに置くことができます。このような指定を行うと文書の末尾側から合致部分を検索していきます。target は SCI_SEARCHINTARGET
の成功によっても設定されます。
SCI_SETTARGETSTART(int pos)
SCI_GETTARGETSTART
SCI_SETTARGETEND(int pos)
SCI_GETTARGETEND
These functions set and return the start and end of the target. When searching in non-regular
expression mode, you can set start greater than end to find the last matching text in the
target rather than the first matching text. The target is also set by a successful
SCI_SEARCHINTARGET
.
target の範囲が選択範囲に一致するよう再設定します。
SCI_TARGETFROMSELECTION
Set the target start and end to the start and end positions of the selection.
SCI_SEARCHINTARGET
で用いる searchFlags
を設定または取得します。簡単な正規表現検索を含む数種のオプションフラグがあります。
SCI_SETSEARCHFLAGS(int searchFlags)
SCI_GETSEARCHFLAGS
These get and set the searchFlags
used by
SCI_SEARCHINTARGET
. There are several option flags including a simple regular
expression search.
SCI_SETTARGETSTART
と SCI_SETTARGETEND
で定義された target 内の最初の合致文字列 text を検索します。text は 0 終端文字列というわけではなく、length
で長さを指定します。検索が成功すれば target は合致した文字列を設定され、戻り値はその開始位置となります。検索に失敗すれば -1 が返されます。
SCI_SEARCHINTARGET(int length, const char *text)
This searches for the first occurrence of a text string in the target defined by
SCI_SETTARGETSTART
and SCI_SETTARGETEND
. The text string is not zero
terminated; the size is set by length
. The search is modified by the search flags
set by SCI_SETSEARCHFLAGS
. If the search succeeds, the target is set to the found
text and the return value is the position of the start of the matching text. If the search
fails, the result is -1.
length
が -1 の場合は text
は 0 終端文字列でなくてはなりません。それ以外の場合は length
で置換する文字列の文字数を指定します。戻り値は置換する文字列の長さです。文書内の文字列を削除する推奨された方法は target に削除される文字列を入れ、空文字列で置換するというものです。
SCI_REPLACETARGET(int length, const char *text)
If length
is -1, text
is a zero terminated string, otherwise
length
sets the number of character to replace the target with. The return value
is the length of the replacement string.
Note that the recommanded way to delete text in the document is to set the target to the text to be removed,
and to perform a replace target with an empty string.
正規表現を使った合致部分の置換を行います。length
が -1 のO場合は text
は 0 終端文字列でなくてはなりません。それ以外の場合は length
で text の先頭から使用する文字数を指定します。置換文字列は \1
〜 \9
を含んだ文字列 text から、タグ付けされた合致部分を当てはめた上で生成されます。タグ付け部分の差し替えは直前の合致結果から採用されます。戻り値は置換文字列の長さです。
SCI_REPLACETARGETRE(int length, const char *text)
This replaces the target using regular expressions. If length
is -1,
text
is a zero terminated string, otherwise length
is the number of
characters to use. The replacement string is formed from the text string with any sequences of
\1
through \9
replaced by tagged matches from the most recent regular
expression search. The return value is the length of the replacement string.
参照:
See also:
上書きモードが有効になっていると、キー入力した文字でキャレットの右側の文字を置換していきます。無効になっているときはキャレットの位置に挿入されます。SCI_GETOVERTYPE
は上書きモードの時に TRUE
(1) を、そうでないときに FALSE
(0) を返します。SCI_SETOVERTYPE
を使って上書きモードを切り替えることができます。
SCI_SETOVERTYPE(bool overType)
SCI_GETOVERTYPE
When overtype is enabled, each typed character replaces the character to the right of the text
caret. When overtype is disabled, characters are inserted at the caret.
SCI_GETOVERTYPE
returns TRUE
(1) if overtyping is active, otherwise
FALSE
(0) will be returned. Use SCI_SETOVERTYPE
to set the overtype
mode.
SCI_CUT
SCI_COPY
SCI_PASTE
SCI_CLEAR
SCI_CANPASTE
SCI_COPYRANGE(int start, int end)
SCI_COPYTEXT(int length,
const char *text)
クリップボードに対する標準的な切り取り、コピー、あるいはクリップボードから文書への貼り付け、および文書の全消去を行います。SCI_CANPASTE
は文書が読み出し専用でなく、選択範囲にも被保護部分が含まれていないときに 0 でない値を返します。「コピー可能か?」「切り取り可能か?」を知りたいときは SCI_GETSELECTIONSTART()-SCI_GETSELECTIONEND()
を使ってください。コピー・切り取りが可能であれば 0 でない値が計算結果となります。
SCI_CUT
SCI_COPY
SCI_PASTE
SCI_CLEAR
SCI_CANPASTE
These commands perform the standard tasks of cutting and copying data to the clipboard,
pasting from the clipboard into the document, and clearing the document.
SCI_CANPASTE
returns non-zero if the document isn't read-only and if the selection
doesn't contain protected text. If you need a "can copy" or "can cut", use
SCI_GETSELECTIONSTART()-SCI_GETSELECTIONEND()
, which will be non-zero if you can
copy or cut to the clipboard.
GTK+ では、SCI_CANPASTE
は完全には動作しません。読み出し専用文書でない限り常に TRUE
を返します。
GTK+ does not really support SCI_CANPASTE
and always returns TRUE
unless the document is read-only.
SCI_COPYRANGE
は文書内の指定された範囲を、SCI_COPYTEXT
は指定した文字列をシステムのクリップボードにコピーします。
SCI_COPYRANGE(int start, int end)
SCI_COPYTEXT(int length, const char *text)
SCI_COPYRANGE
copies a range of text from the document to
the system clipboard and SCI_COPYTEXT
copies a supplied piece of
text to the system clipboard.
エラーが発生したとき、Scintilla は内部エラー番号を設定します。この値は SCI_GETSTATUS
で取得できます。現在はまだ使われていませんが、将来利用できるようになる予定です。SCI_SETSTATUS(0)
のコードでエラー状態をクリアします。
SCI_SETSTATUS(int status)
SCI_GETSTATUS
If an error occurs, Scintilla may set an internal error number that can be retrieved with
SCI_GETSTATUS
. Not currently used but will be in the future. To clear the error
status call SCI_SETSTATUS(0)
.
Scintilla は多段階の取り消し・再実行機能を持っています。取り消し可能な行動の記録はメモリがある限り行われます。Scintilla は文書の変更行動を保存します。一方、キャレットと選択範囲の移動は記録しません。可視範囲の移動も同様です。一続きのキー入力や削除は一回の行動に圧縮されます。これにより、取り消しと再実行は何が起きたか理解しやすくなります。連続した行動は一単位の取り消しとして使用できる行動に合成することができます。これらの連続体はSCI_BEGINUNDOACTION
メッセージと
SCI_ENDUNDOACTION
メッセージの間で発生します。これらの連続体は入れ子にすることが可能です。また最上位の連続体のみが一単位で取り消しを実行できます。
Scintilla has multiple level undo and redo. It will continue to collect undoable actions
until memory runs out. Scintilla saves actions that change the document. Scintilla does not
save caret and selection movements, view scrolling and the like. Sequences of typing or
deleting are compressed into single actions to make it easier to undo and redo at a sensible
level of detail. Sequences of actions can be combined into actions that are undone as a unit.
These sequences occur between SCI_BEGINUNDOACTION
and
SCI_ENDUNDOACTION
messages. These sequences can be nested and only the top-level
sequences are undone as units.
SCI_UNDO
SCI_CANUNDO
SCI_EMPTYUNDOBUFFER
SCI_REDO
SCI_CANREDO
SCI_SETUNDOCOLLECTION(bool
collectUndo)
SCI_GETUNDOCOLLECTION
SCI_BEGINUNDOACTION
SCI_ENDUNDOACTION
SCI_UNDO
で行動一つ分を取り消します。取り消しバッファが SCI_ENDUNDOACTION
を行った点に達した場合は、対応する SCI_BEGINUNDOACTION
まで一度に取り消し動作を行います。
SCI_UNDO
SCI_CANUNDO
SCI_UNDO
undoes one action, or if the undo buffer has reached a
SCI_ENDUNDOACTION
point, all the actions back to the corresponding
SCI_BEGINUNDOACTION
.
SCI_CANUNDO
は取り消す動作がない場合に 0 を返し、ある場合は 1 を返します。このメッセージの結果は一般的に取り消しコマンドを使用可能にしておくか否かの切り替えに利用します。
SCI_CANUNDO
returns 0 if there is nothing to undo, and 1 if there is. You would
typically use the result of this message to enable/disable the Edit menu Undo command.
SCI_REDO
は最後の取り消しをさらに取り消し、結果として再実行を行います。
SCI_REDO
SCI_CANREDO
SCI_REDO
undoes the effect of the last SCI_UNDO
operation.
SCI_CANREDO
は再実行する行動がないときに 0 を返し、あるときに 1 を返します。このメッセージの結果は一般的に再実行コマンドを使用可能にしておくか否かの切り替えに利用します。
SCI_CANREDO
returns 0 if there is no action to redo and 1 if there are undo
actions to redo. You could typically use the result of this message to enable/disable the Edit
menu Redo command.
Scintilla に取り消し・再実行のための履歴記録を破棄させます。同時に取り消しバッファの開始点を保存しますので、文書は未編集状態として扱われます。この処理ではコンテナに 通知を送りません。
SCI_EMPTYUNDOBUFFER
This command tells Scintilla to forget any saved undo or redo history. It also sets the save
point to the start of the undo buffer, so the document will appear to be unmodified. This does
not cause the notification to be sent to the
container.
参照:
See also:
Scintilla が取り消し情報を集めるか否かを設定できます。SCI_SETUNDOCOLLECTION
の呼び出しで true
(1) を与えると情報収集を行い、false
(0) を与えると収集を停止します。SCI_EMPTYUNDOBUFFER
も同時に使用すべきです。これは編集バッファが取り消しバッファと同期をとれなくなることを防ぎます。
SCI_SETUNDOCOLLECTION(bool collectUndo)
SCI_GETUNDOCOLLECTION
You can control whether Scintilla collects undo information with
SCI_SETUNDOCOLLECTION
. Pass in true
(1) to collect information and
false
(0) to stop collecting. If you stop collection, you should also use
SCI_EMPTYUNDOBUFFER
to avoid the undo buffer being unsynchronized with the data in
the buffer.
Scintilla がログの表示などプログラムが生成した文字列を表示するとか、テキストがしばしば削除と再生成を繰り返すといった場合に、取り消し情報の保存を禁止することになるでしょう。
You might wish to turn off saving undo information if you use the Scintilla to store text generated by a program (a Log view) or in a display window where text is often deleted and regenerated.
これらのメッセージを Scintilla に送ると処理集合の開始点と終点を印付けることができます。印付けられた集合は一回の取り消し指示で全部が取り消されます。印付けを行わなければ一つ一つ取り消ししなくてはなりません。他方、取り消しの際に前後の処理と一緒にしたくないという目的でもこの印付けを利用することができます。
SCI_BEGINUNDOACTION
SCI_ENDUNDOACTION
Send these two messages to Scintilla to mark the beginning and end of a set of operations that
you want to undo all as one operation but that you have to generate as several operations.
Alternatively, you can use these to mark a set of operations that you do not want to have
combined with the preceding or following operations if they are undone.
Scintilla は二点間に伸びる選択範囲を扱えます。この二点はアンカーと現在位置です。これらが同じ位置にある場合は選択範囲内にテキストがないということになります。文書内の位置は 0 (最初の文字の前)から文書の大きさ(最後の文字の後ろを表す)までです。メッセージを使うと CRLF の組や 2 オクテット文字列の真ん中を指定することも可能ですが、キーボードによる移動ではそのような位置を指定することはできません。
Scintilla maintains a selection that stretches between two points, the anchor and the current position. If the anchor and the current position are the same, there is no selected text. Positions in the document range from 0 (before the first character), to the document size (after the last character). If you use messages, there is nothing to stop you setting a position that is in the middle of a CRLF pair, or in the middle of a 2 byte character. However, keyboard commands will not move the caret into such positions.
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
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
Both these messages return the length of the document in characters.
文書内の行数を返します。空の文書は 1 行あるとみなします。改行だけを持っている文書は 2 行とみなされます。
SCI_GETLINECOUNT
This returns the number of lines in the document. An empty document contains 1 line. A
document holding only an end of line sequence has 2 lines.
Scintilla が最初に見せている行の行番号を返します。文書の先頭行番号は 0 です。
SCI_GETFIRSTVISIBLELINE
This returns the line number of the first visible line in the Scintilla view. The first line
in the document is numbered 0.
画面に完全に表示できる行の数を返します。行の高さが一定ならば、この値は垂直方向の利用可能空間を行数で割ったものです。表示可能行がぴったり収まるようにウィンドウをリサイズするまでは画面の下端に部分的に見える行があるかも知れません。
SCI_LINESONSCREEN
This returns the number of complete lines visible on the screen. With a constant line height,
this is the vertical space available divided by the line separation. Unless you arrange to size
your window to an integral number of lines, there may be a partial line visible at the bottom
of the view.
文書が変更されていれば 0 以外が、未変更ならば 0 が返されます。文書の変更状態は、取り消し情報列において保存位置と取り消し位置が異なるかどうかで決まります。この保存位置は通常ファイルにデータを保存した位置です。保存位置は
で設定できます。SCI_GETMODIFY
This returns non-zero if the document is modified and 0 if it is unmodified. The modified
status of a document is determined by the undo position relative to the save point. The save
point is set by ,
usually when you have saved data to a file.
文書が変更されようとしていることを知るには、保存位置に達したり保存位置から移動したりした際に Scintilla がコンテナに対して送る 通知メッセージを利用します。
やIf you need to be notified when the document becomes modified, Scintilla notifies the container that it has entered or left the save point with the notification messages.
andアンカーと現在位置の両方を設定します。currentPos
が負数の場合、文書の末尾を意味します。anchorPos
が負数の場合は選択範囲が無くなります。すなわち、アンカーが currentPos
と同じ場所に移動します。このメッセージの実行後、スクロールによってキャレットが画面内に見えるようになります。
SCI_SETSEL(int anchorPos, int currentPos)
This message sets both the anchor and the current position. If currentPos
is
negative, it means the end of the document. If anchorPos
is negative, it means
remove any selection (i.e. set the anchor to the same position as currentPos
). The
caret is scrolled into view after this operation.
選択範囲が無くなり、キャレットを pos
に移動させ、また必要であればキャレットが見えるようにスクロールが行われます。SCI_SETSEL(pos, pos)
と同じ効果をもたらします。アンカーはキャレットと同じ位置に設定されます。
SCI_GOTOPOS(int pos)
This removes any selection, sets the caret at pos
and scrolls the view to make
the caret visible, if necessary. It is equivalent to
SCI_SETSEL(pos, pos)
. The anchor position is set the same as the current
position.
選択範囲が無くなり、キャレットを行番号 line
の行の先頭に置きます。また必要であればキャレットが見えるようにスクロールが行われます。アンカーはキャレットと同じ位置に設定されます。line
が文書の外を指定している場合は、先頭行か最終行とみなします。
SCI_GOTOLINE(int line)
This removes any selection and sets the caret at the start of line number line
and scrolls the view (if needed) to make it visible. The anchor position is set the same as the
current position. If line
is outside the lines in the document (first line is 0),
the line set is the first or last.
現在位置を変更し、アンカーとの間に選択範囲を設定します。キャレットを表示させるためのスクロールは行われません。
SCI_SETCURRENTPOS(int pos)
This sets the current position and creates a selection between the anchor and the current
position. The caret is not scrolled into view.
参照:
See also:
現在位置を示す値を返します。
SCI_GETCURRENTPOS
This returns the current position.
アンカーを移動し現在位置との間に選択範囲を設定します。キャレットを表示させるためのスクロールは行われません。
SCI_SETANCHOR(int pos)
This sets the anchor position and creates a selection between the anchor position and the
current position. The caret is not scrolled into view.
参照:
See also:
アンカー位置を示す値を返します。
SCI_GETANCHOR
This returns the current anchor position.
これらのメッセージはアンカーがキャレットよりも前(先行する側)にあることを前提として選択範囲を設定します。キャレットを表示させるためのスクロールは行われません。実行後のキャレットとアンカーの位置については次の表をご覧ください。
SCI_SETSELECTIONSTART(int pos)
SCI_SETSELECTIONEND(int pos)
These set the selection based on the assumption that the anchor position is less than the
current position. They do not make the caret visible. The table shows the positions of the
anchor and the current position after using these messages.
アンカー | キャレット | |
---|---|---|
SCI_SETSELECTIONSTART |
pos |
Max(pos, キャレット位置) |
SCI_SETSELECTIONEND |
Min(アンカー位置, pos) |
pos |
参照:
anchor | current | |
---|---|---|
SCI_SETSELECTIONSTART |
pos |
Max(pos, current) |
SCI_SETSELECTIONEND |
Min(anchor, pos) |
pos |
See also:
選択範囲の開始端と終端を返します。キャレットとアンカーの前後関係には影響されません。SCI_GETSELECTIONSTART
はそれらの位置の小さい方、SCI_GETSELECTIONEND
は大きい方を返します。
SCI_GETSELECTIONSTART
SCI_GETSELECTIONEND
These return the start and end of the selection without regard to which end is the current
position and which is the anchor. SCI_GETSELECTIONSTART
returns the smaller of the
current position or the anchor position. SCI_GETSELECTIONEND
returns the larger of
the two values.
文書内のすべてのテキストを選択します。キャレットを表示させるためのスクロールは行われません。
SCI_SELECTALL
This selects all the text in the document. The current position is not scrolled into view.
文書内の位置 pos
を含む行の番号を取得します。pos
が 0 以下の時は 0 、pos
が文書末を越えているときは最終行を戻り値とします。
SCI_LINEFROMPOSITION(int pos)
This message returns the line that contains the position pos
in the document. The
return value is 0 if pos
<= 0. The return value is the last line if
pos
is beyond the end of the document.
文書内における指定された行の開始位置を返します。line
が負数の時は、選択範囲の先頭が含まれる行の開始位置が返されます。line
が文書内の行数よりも大きい値の時は戻り値は -1 になります。line
と文書内の行数が同じである場合(すなわち最終行の番号より1多い場合)は文書末を意味する値を返します。
SCI_POSITIONFROMLINE(int line)
This returns the document position that corresponds with the start of the line. If
line
is negative, the position of the line holding the start of the selection is
returned. If line
is greater than the lines in the document, the return value is
-1. If line
is equal to the number of lines in the document (i.e. 1 line past the
last line), the return value is the end of the document.
行末の位置、具体的には行末文字の直前の位置を返します。line
が負数であれば 0 を返します(*)。line
が文書の終わりの(ため行末文字がない)場合、文書の大きさが返されます。line
が負数であれば -1 を返します(*)。line
>=
SCI_GETLINECOUNT()
の状態の時は現在は SCI_GETLENGTH()-1
を返します。未定義かも知れません。
(訳注: (*)で、結局 line が負数だったら結果は -1 なのか 0 なのか。つーか誰がこの原文書いたんだよ。)
SCI_GETLINEENDPOSITION(int line)
This returns the position at the end of the line, before any line end characters. If
line
is negative, the result is 0. If line
is the last line in the
document, (which does not have any end of line characters), the result is the size of the
document. If line
is negative, the result is -1. If line
is >=
SCI_GETLINECOUNT()
, the result is currently SCI_GETLENGTH()-1
...
(undefined?).
行末文字まで含めた行の長さを返します。line
が負数であったり文書の最終行を越えていたりする場合は 0 を返します。行末文字を含まない行の長さを知る場合は - を求めてください。
SCI_LINELENGTH(int line)
This returns the length of the line, including any line end characters. If line
is negative or beyond the last line in the document, the result is 0. If you want the length of
the line not including any end of line characters, use - .
現在の選択範囲にある文字列をコピーし、終端に 0 を加えて text
バッファに格納します。このバッファは少なくとも SCI_GETSELECTIONEND()-SCI_GETSELECTIONSTART()+1
バイトの大きさが無くてはなりません。引数 text が 0 の場合は、格納に最低必要なバッファの大きさを返します。
SCI_GETSELTEXT(<unused>, char *text)
This copies the currently selected text and a terminating 0 byte to the text
buffer. The buffer must be at least
SCI_GETSELECTIONEND()-SCI_GETSELECTIONSTART()+1
bytes long.
If the text argument is 0 then the length that should be allocated
to store the entire selection is returned.
参照: , , , ,
See also: , , , ,
キャレットがある行のテキストを取得し、その行におけるキャレットの位置を返します。char* text
は該当行の内容から取得したい長さと終端の 0 を収めるに充分な大きさが無くてはなりません。textLen
はバッファの大きさです。引数 text が 0 の時は該当行全体を収めるために必要な大きさが返されます。
SCI_GETCURLINE(int textLen, char *text)
This retrieves the text of the line containing the caret and returns the position within the
line of the caret. Pass in char* text
pointing at a buffer large enough to hold
the text you wish to retrieve and a terminating 0 character. Set textLen
to the
length of the buffer. If the text argument is 0 then the length that should be allocated
to store the entire current line is returned.
参照: , , , ,
See also: , , , ,
矩形選択モードの時は 1 、そうでなければ 0 を返します。
SCI_SELECTIONISRECTANGLE
This returns 1 if the current selection is in rectangle mode, 0 if not.
選択モードの設定と取得を行います。ストリーム(SC_SEL_STREAM
=1), 矩形(SC_SEL_RECTANGLE
=2), 行単位(SC_SEL_LINES
=3) が取りうる値です。これら各モードが設定されると、キャレットの移動とともに選択範囲の拡縮が行われます。同じ値か SCI_CANCEL
を引数にしてで呼び出されるまでこの効果は続きます。取得関数はすでに選択範囲が生成されている場合でも現在のモードを返します。
SCI_SETSELECTIONMODE
SCI_GETSELECTIONMODE
The two functions set and get the selection mode, which can be
stream (SC_SEL_STREAM
=1) or
rectangular (SC_SEL_RECTANGLE
=2)
or by lines (SC_SEL_LINES
=3).
When set in these modes, regular caret moves will extend or reduce the selection,
until the mode is cancelled by a call with same value or with SCI_CANCEL
.
The get function returns the current mode even if the selection was made by mouse
or with regular extended moves.
指定された行における選択範囲の開始点や終了点を返します。当該行に選択範囲がない場合は INVALID_POSITION が返されます。
SCI_GETLINESELSTARTPOSITION(int line)
SCI_GETLINESELENDPOSITION(int line)
Retrieve the position of the start and end of the selection at the given line with
INVALID_POSITION returned if no selection on this line.
可視範囲の上下からキャレットがはみ出して見えないとき、可視範囲の一番近い行へキャレットを移動します。選択範囲はキャンセルされます。
SCI_MOVECARETINSIDEVIEW
If the caret is off the top or bottom of the view, it is moved to the nearest line that is
visible to its current position. Any selection is lost.
Scintilla が内部で使う単語定義と同様のものを用いて単語の開始点や終了点を求めます。どの文字を単語の一部として扱うかについて独自の情報を
で与えることができます。position 引数には検索の開始点を指定します。その位置から、単語の開始点を探すときは後方に、終了点を探すときには前方に検索します。SCI_WORDENDPOSITION(int position, bool
onlyWordCharacters)
SCI_WORDSTARTPOSITION(int position, bool
onlyWordCharacters)
These messages return the start and end of words using the same definition of words as used
internally within Scintilla. You can set your own list of characters that count as words with
. The position
sets the start or the search, which is forwards when searching for the end and backwards when
searching for the start.
onlyWordCharacters
に true
(1) を与えると、検索方向に向かって単語を構成しない文字で止まります。onlyWordCharacters
が false
(0) の時は、まず検索方向の最初の文字の種類(単語を校正する文字か否か)を判別し、同じ方向へ同じ種類の文字が続く位置を検索します。検索は文書の先頭か末尾に達した場合も終了します。
Set onlyWordCharacters
to true
(1) to stop searching at the first
non-word character in the search direction. If onlyWordCharacters
is
false
(0), the first character in the search direction sets the type of the search
as word or non-word and the search stops at the first non-matching character. Searches are also
terminated by the start or end of the document.
"w" が単語構成文字で "," がそうでない場合、"|" で位置を表して、true
や false
は onlyWordCharacters
への指定値だとすると次の表のような結果になります。
初期状態 | 〜END〜, true | 〜END〜, false | 〜START〜, true | 〜START〜, false |
---|---|---|---|---|
..ww..|..ww.. | ..ww..|..ww.. | ..ww....|ww.. | ..ww..|..ww.. | ..ww|....ww.. |
....ww|ww.... | ....wwww|.... | ....wwww|.... | ....|wwww.... | ....|wwww.... |
..ww|....ww.. | ..ww|....ww.. | ..ww....|ww.. | ..|ww....ww.. | ..|ww....ww.. |
..ww....|ww.. | ..ww....ww|.. | ..ww....ww|.. | ..ww....|ww.. | ..ww|....ww.. |
If "w" represents word characters and "." represents non-word characters and "|" represents
the position and true
or false
is the state of
onlyWordCharacters
:
Initial state | end, true | end, false | start, true | start, false |
---|---|---|---|---|
..ww..|..ww.. | ..ww..|..ww.. | ..ww....|ww.. | ..ww..|..ww.. | ..ww|....ww.. |
....ww|ww.... | ....wwww|.... | ....wwww|.... | ....|wwww.... | ....|wwww.... |
..ww|....ww.. | ..ww|....ww.. | ..ww....|ww.. | ..|ww....ww.. | ..|ww....ww.. |
..ww....|ww.. | ..ww....ww|.. | ..ww....ww|.. | ..ww....|ww.. | ..ww|....ww.. |
文書内の指定位置の直前や直後の位置を返します。現在のコードページを意識します。最小の位置は 0 で最大の位置は文書の末尾です。マルチバイト文字の中の位置を指定した場合、その文字の開始位置・終了位置を返します。
SCI_POSITIONBEFORE(int position)
SCI_POSITIONAFTER(int position)
These messages return the position before and after another position
in the document taking into account the current code page. The minimum
position returned is 0 and the maximum is the last position in the document.
If called with a position within a multi byte character will return the position
of the start/end of that character.
styleNumber
のスタイルで指定した文字列を描画するのに必要なピクセル幅を返します。例えば行番号をを表示する余白幅を決めるためなどに利用することができます。
SCI_TEXTWIDTH(int styleNumber, const char *text)
This returns the pixel width of a string drawn in the given styleNumber
which can
be used, for example, to decide how wide to make the line number margin in order to display a
given number of numerals.
指定行のピクセル単位の高さを返します。現時点では全ての行が同じ高さを持っています。
SCI_TEXTHEIGHT(int line)
This returns the height in pixels of a particular line. Currently all lines are the same
height.
文書内の位置 pos
の桁番号を返します。タブ幅も計算上考慮されます。pos
より前でその行の最後のタブの桁番号に、そこから pos
の直前までの文字数を加えた値を返します。その行にタブ文字がないときは、戻り値は最大でその行の文字数です。ダブルバイト文字は一つの文字として数えられます。おそらくは固定幅フォントでのみ有効に利用できるものです。
SCI_GETCOLUMN(int pos)
This message returns the column number of a position pos
within the document
taking the width of tabs into account. This returns the column number of the last tab on the
line before pos
, plus the number of characters between the last tab and
pos
. If there are no tab characters on the line, the return value is the number of
characters up to the position on the line. In both cases, double byte characters count as a
single character. This is probably only useful with monospaced fonts.
line
行の column
文字目の位置を、タブ幅を考慮した上で返します。マルチバイト文字は一つの桁として数えられます。桁番号は行番号同様に 0 から始まります。
SCI_FINDCOLUMN(int line, int column)
This message returns the position of a column
on a line
taking the width of tabs into account. It treats a multi-byte character as a single column.
Column numbers, like lines start at 0.
SCI_POSITIONFROMPOINT
は指定座標から一番近い文字の位置を返します。SCI_POSITIONFROMPOINTCLOSE
も同様の動作をしますが、ウィンドウの外を指定されたり近くに文字がない場合には -1 を返す点が異なります。
SCI_POSITIONFROMPOINT(int x, int y)
SCI_POSITIONFROMPOINTCLOSE(int x, int y)
SCI_POSITIONFROMPOINT
finds the closest character position to a point and
SCI_POSITIONFROMPOINTCLOSE
is similar but returns -1 if the point is outside the
window or not close to any characters.
文書内における位置 pos
の文字のピクセル座標を返します。
SCI_POINTXFROMPOSITION(<unused>, int pos)
SCI_POINTYFROMPOSITION(<unused>, int pos)
These messages return the x and y display pixel location of text at position pos
in the document.
選択範囲がわかるように描画する通常の状態は
と によって設定しますが、このメッセージによって選択範囲を「隠す」ようにすると、選択範囲も通常のテキストとして描画されます。SCI_HIDESELECTION(bool hide)
The normal state is to make the selection visible by drawing it as set by and . However, if you hide the selection, it
is drawn as normal text.
垂直移動の際、Scintilla はユーザが明示的に移動した最後の横座標( x ) を記憶しており、この値は矢印キーの上下などで移動するときに用いられます。このメッセージはキャレットの位置でその記憶する横座標を設定するものです。
SCI_CHOOSECARETX
Scintilla remembers the x value of the last position horizontally moved to explicitly by the
user and this value is then used when moving vertically such as by using the up and down keys.
This message sets the current x position of the caret as the remembered value.
SCI_LINESCROLL(int column, int line)
SCI_SCROLLCARET
SCI_SETXCARETPOLICY(int caretPolicy, int
caretSlop)
SCI_SETYCARETPOLICY(int caretPolicy, int
caretSlop)
SCI_SETVISIBLEPOLICY(int caretPolicy, int
caretSlop)
SCI_SETHSCROLLBAR(bool visible)
SCI_GETHSCROLLBAR
SCI_SETVSCROLLBAR(bool visible)
SCI_GETVSCROLLBAR
SCI_GETXOFFSET
SCI_SETXOFFSET(int xOffset)
SCI_SETSCROLLWIDTH(int pixelWidth)
SCI_GETSCROLLWIDTH
SCI_SETENDATLASTLINE(bool
endAtLastLine)
SCI_GETENDATLASTLINE
指定した桁数分と行数分の画面スクロールを試みます。正の行数は最上部の行番号を増やすようにスクロールします。つまりユーザから見てテキストが上に動くように見えます。負の行数は逆方向にこれを行います。
SCI_LINESCROLL(int column, int line)
This will attempt to scroll the display by the number of columns and lines that you specify.
Positive line values increase the line number at the top of the screen (i.e. they move the text
upwards as far as the user is concerned), Negative line values do the reverse.
桁数の単位は標準スタイルの空白の幅です。正の値は可視部の左端の桁位置を増加します。したがってテキストが左に動くように見えます。負の値は逆方向にこれを行います。
The column measure is the width of a space in the default style. Positive values increase the column at the left edge of the view (i.e. they move the text leftwards as far as the user is concerned). Negative values do the reverse.
参照:
See also:
現在位置(選択範囲がなければキャレット位置)が見えない状態の時はスクロールによって見えるようにします。これは現在のキャレットポリシーに従う動作を行います。
SCI_SCROLLCARET
If the current position (this is the caret if there is no selection) is not visible, the view
is scrolled to make it visible according to the current caret policy.
キャレットポリシーを設定します。caretPolicy
は CARET_SLOP
, CARET_STRICT
, CARET_JUMPS
,
CARET_EVEN
の組み合わせで指定します。
SCI_SETXCARETPOLICY(int caretPolicy, int caretSlop)
SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop)
These set the caret policy. The value of caretPolicy
is a combination of
CARET_SLOP
, CARET_STRICT
, CARET_JUMPS
and
CARET_EVEN
.
CARET_SLOP |
指定されると溢れ値 caretSlop を定義できます。この値は可視部のうちキャレットを置いて欲しくない区間を定義するもので、垂直余白からはピクセル単位、水平余白からは行数でで指定します。これらの端にキャレットを近づけないことにより、常にキャレットを中に表示することができます。これにより、キャレットが置かれているところにある識別子を尻切れトンボに表示させずに済ませたり、キャレットがある行と関係するであろう直後の数行を現在行とともに見ることができます。 |
---|---|
CARET_STRICT |
指定されると CARET_SLOP の効果を厳格に実行します。caretSlop が未設定の時はキャレットが常に中央にあります。caretSlop が設定済みであればキャレットは指定の区間に決してはいることができなくなります。 |
CARET_JUMPS |
指定されると表示範囲が大胆に移動するようになり、キャレットポリシーを再適用せずに同一方向へ移動できる量が多くなります。'3UZ' は指定値の三倍の距離を意味します。 |
CARET_EVEN |
指定されていなければ、対称的に指定区間があるものと考える代わりに左側と下側のキャレット拒絶区間が右側と上側の拒絶区間まで引き延ばされます。こうすると大部分のコードがある行頭を表示しやすくなり、またキャレットの下にある関数本体等も見やすくなります。 |
slop | strict | jumps | even | キャレットが余白に移動できるか | 可視部か拒絶区間の外にキャレットが出た場合 |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | ○ | 上端・右端に置かれるようにスクロール |
0 | 0 | 0 | 1 | ○ | 一単位移動 |
0 | 0 | 1 | 0 | ○ | 上端・右端に置かれるようにスクロール |
0 | 0 | 1 | 1 | ○ | キャレットは可視部の中央へ |
0 | 1 | - | 0 | キャレットは常に上端・右端 | - |
0 | 1 | - | 1 | キャレットは常に中央 | - |
1 | 0 | 0 | 0 | ○ | 非対称の指定区間の外へ |
1 | 0 | 0 | 1 | ○ | 指定区間の外へ |
1 | 0 | 1 | 0 | ○ | 上端・右端から指定値の三倍離してキャレットを置く |
1 | 0 | 1 | 1 | ○ | 端から指定値の三倍離してキャレットを置く |
1 | 1 | - | 0 | 常に上・右の指定区間に接する | - |
1 | 1 | 0 | 1 | × - 指定区間の外側へ | 一単位移動 |
1 | 1 | 1 | 0 | × - 指定区間の外側へ | 端から指定値の三倍離してキャレットを置く |
CARET_SLOP |
If set, we can define a slop value: caretSlop . This value defines an
unwanted zone (UZ) where the caret is... unwanted. This zone is defined as a number of
pixels near the vertical margins, and as a number of lines near the horizontal margins.
By keeping the caret away from the edges, it is seen within its context. This makes it
likely that the identifier that the caret is on can be completely seen, and that the
current line is seen with some of the lines following it, which are often dependent on
that line. |
---|---|
CARET_STRICT |
If set, the policy set by CARET_SLOP is enforced... strictly. The caret
is centred on the display if caretSlop is not set, and cannot go in the UZ
if caretSlop is set. |
CARET_JUMPS |
If set, the display is moved more energetically so the caret can move in the same direction longer before the policy is applied again. '3UZ' notation is used to indicate three time the size of the UZ as a distance to the margin. |
CARET_EVEN |
If not set, instead of having symmetrical UZs, the left and bottom UZs are extended up to right and top UZs respectively. This way, we favour the displaying of useful information: the beginning of lines, where most code reside, and the lines after the caret, for example, the body of a function. |
slop | strict | jumps | even | Caret can go to the margin | On reaching limit (going out of visibility or going into the UZ) display is... |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | Yes | moved to put caret on top/on right |
0 | 0 | 0 | 1 | Yes | moved by one position |
0 | 0 | 1 | 0 | Yes | moved to put caret on top/on right |
0 | 0 | 1 | 1 | Yes | centred on the caret |
0 | 1 | - | 0 | Caret is always on top/on right of display | - |
0 | 1 | - | 1 | No, caret is always centred | - |
1 | 0 | 0 | 0 | Yes | moved to put caret out of the asymmetrical UZ |
1 | 0 | 0 | 1 | Yes | moved to put caret out of the UZ |
1 | 0 | 1 | 0 | Yes | moved to put caret at 3UZ of the top or right margin |
1 | 0 | 1 | 1 | Yes | moved to put caret at 3UZ of the margin |
1 | 1 | - | 0 | Caret is always at UZ of top/right margin | - |
1 | 1 | 0 | 1 | No, kept out of UZ | moved by one position |
1 | 1 | 1 | 0 | No, kept out of UZ | moved to put caret at 3UZ of the margin |
VISIBLE_SLOP
および VISIBLE_STRICT
フラグがポリシー引数となります。 と同様の処理を行います。
SCI_SETVISIBLEPOLICY(int caretPolicy, int caretSlop)
This determines how the vertical positioning is determined when is
called. It takes VISIBLE_SLOP
and VISIBLE_STRICT
flags for the policy
parameter. It is similar in operation to .
水平スクロールバーは計算した幅に必要な場合のみ表示されます。SCI_SETHSCROLLBAR(0)
というコードで水平スクロールバーは全く表示されなくなります。SCI_SETHSCROLLBAR(1)
で再び表示されるようになります。SCI_GETHSCROLLBAR
は現在の状態を返します。標準状態では水平スクロールバーが表示されるようになっています。
参照:
SCI_SETHSCROLLBAR(bool visible)
SCI_GETHSCROLLBAR
The horizontal scroll bar is only displayed if it is needed for the assumed width.
If you never wish to see it, call
SCI_SETHSCROLLBAR(0)
. Use SCI_SETHSCROLLBAR(1)
to enable it again.
SCI_GETHSCROLLBAR
returns the current state. The default state is to display it
when needed.
See also: .
標準状態手は、垂直スクロールバーは必要に応じて常に表示されます。SCI_SETVSCROLLBAR
でこれを隠すかどうかを指定することができ、SCI_GETVSCROLLBAR
で現在の状態を取得することができます。
SCI_SETVSCROLLBAR(bool visible)
SCI_GETVSCROLLBAR
By default, the vertical scroll bar is always displayed when required. You can choose to hide
or show it with SCI_SETVSCROLLBAR
and get the current state with
SCI_GETVSCROLLBAR
.
xOffset
はピクセル単位で、テキストビュー開始点からの水平スクロール位置を指定します。。0 が最初の桁が左端に見えるような通常の位置です。
SCI_SETXOFFSET(int xOffset)
SCI_GETXOFFSET
The xOffset
is the horizontal scroll position in pixels of the start of the text
view. A value of 0 is the normal position with the first text column visible at the left of the
view.
参照:
See also:
実行速度の面から、Scintilla は水平スクロールバーの特性を決める目的では文書の表示幅を計算しません。その代わり、想定幅を用います。これらのメッセージは、Scintilla が仮定する文書幅をピクセル単位で設定あるいは取得します。標準値は 2000 です。
SCI_SETSCROLLWIDTH(int pixelWidth)
SCI_GETSCROLLWIDTH
For performance, Scintilla does not measure the display width of the document to determine
the properties of the horizontal scroll bar. Instead, an assumed width is used.
These messages set and get the document width in pixels assumed by Scintilla.
The default value is 2000.
SCI_SETENDATLASTLINE
でスクロール幅を設定します。標準では、最大のスクロール位置で最終行が可視範囲の一番下に現れます。endAtLastLine
に false
を指定すると最終行からさらに一頁下にスクロールします。
SCI_SETENDATLASTLINE(bool endAtLastLine)
SCI_GETENDATLASTLINE
SCI_SETENDATLASTLINE
sets the scroll range so that maximum scroll position has
the last line at the bottom of the view (default). Setting this to false
allows
scrolling one page below the last line.
SCI_SETVIEWWS(int wsMode)
SCI_GETVIEWWS
SCI_SETWHITESPACEFORE(bool
useWhitespaceForeColour, int colour)
SCI_SETWHITESPACEBACK(bool
useWhitespaceBackColour, int colour)
ホワイトスペースは目に見えるようにすることができます。Python のようにホワイトスペースが意味を持つような言語では便利です。空白文字はその中央に小さな点で、タブ文字は右向きの矢印で表示されます。行末文字を表示する方法も提供されています。ここでのメッセージはこのホワイトスペースの表示モードを設定あるいは取得するものです。引数 wsMode
は次のいずれか一つを取ります。
SCI_SETVIEWWS(int wsMode)
SCI_GETVIEWWS
White space can be made visible which may useful for languages in which white space is
significant, such as Python. Space characters appear as small centred dots and tab characters
as light arrows pointing to the right. There are also ways to control the display of end of line characters. The two messages set and get the
white space display mode. The wsMode
argument can be one of:
SCWS_INVISIBLE |
0 | 通常の表示を行います。ホワイトスペースは全体を背景色で表示します。 colour. |
---|---|---|
SCWS_VISIBLEALWAYS |
1 | ホワイトスペース文字が点と矢印で表示されます。 |
SCWS_VISIBLEAFTERINDENT |
2 | 字下げに使われているホワイトスペースは背景色のままですが、同じ行で可視文字の後にあるホワイトスペースは点と矢印で表示されます。 |
wsMode
に他の値を与えたときの動作は定義されていません。
SCWS_INVISIBLE |
0 | The normal display mode with white space displayed as an empty background colour. |
---|---|---|
SCWS_VISIBLEALWAYS |
1 | White space characters are drawn as dots and arrows, |
SCWS_VISIBLEAFTERINDENT |
2 | White space used for indentation is displayed normally but after the first visible character, it is shown as dots and arrows. |
The effect of using any other wsMode
value is undefined.
標準状態では、見えるようにされたホワイトスペースは使用中の解析器に定義されます。文字色と背景色は一方または両方を共有特性として定義でき、SCI_SETWHITESPACEFORE
と
SCI_SETWHITESPACEBACK
による解析器の指定で上書きすることになります。
SCI_SETWHITESPACEFORE<(bool useWhitespaceForeColour, int colour)
SCI_SETWHITESPACEBACK(bool useWhitespaceBackColour, int colour)
By default, the colour of visible white space is determined by the lexer in use. The
foreground and/or background colour of all visible white space can be set globally, overriding
the lexer's colours with SCI_SETWHITESPACEFORE
and
SCI_SETWHITESPACEBACK
.
マウスカーソルはその位置の内容に応じて変化します。テキスト上にあるときと余白にあるときは異なることがあります。遅いカーソルを実現したい場合はカーソルの待ち手法を変更することができます。手法は SCI_SETCURSOR
で指定します。引数 curType
は次のいずれかです。
SC_CURSORNORMAL |
-1 | 通常のカーソル表示を行います。 |
---|---|---|
SC_CURSORWAIT |
4 | Scintilla かそれが所有するウィンドウ上にカーソルが来たときに待ちカーソルを表示します。 |
SCI_SETCURSOR(int curType)
SCI_GETCURSOR
The cursor is normally chosen in a context sensitive way, so it will be different over the
margin than when over the text. When performing a slow action, you may wish to change to a wait
cursor. You set the cursor type with SCI_SETCURSOR
. The curType
argument can be:
SC_CURSORNORMAL |
-1 | The normal cursor is displayed. |
---|---|---|
SC_CURSORWAIT |
4 | The wait cursor is displayed when the mouse is over or owned by the Scintilla window. |
1 〜 7 のカーソル値はカーソルで定義されていますが、SC_CURSORWAIT
だけが制御に便利です。他の curType
の値はカーソルポインタを表示します。SCI_GETCURSOR
メッセージは最後に指定されたカーソル種別を返します。未指定だった場合は SC_CURSORNORMAL
(-1) が返されます。
Cursor values 1 through 7 have defined cursors, but only SC_CURSORWAIT
is
usefully controllable. Other values of curType
cause a pointer to be displayed.
The SCI_GETCURSOR
message returns the last cursor type you set, or
SC_CURSORNORMAL
(-1) if you have not set a cursor type.
Scintilla の内部でマウスのボタンが押されると、それ以後マウスが動いたというイベント情報が Scintilla に送られます。この挙動は SCI_SETMOUSEDOWNCAPTURES(0)
で切ることができます。
SCI_SETMOUSEDOWNCAPTURES(bool captures)
SCI_GETMOUSEDOWNCAPTURES
When the mouse is pressed inside Scintilla, it is captured so future mouse movement events are
sent to Scintilla. This behavior may be turned off with
SCI_SETMOUSEDOWNCAPTURES(0)
.
Scintilla は三種の主要な行末表現を解釈することができます。Macintosh (\r), Unix
(\n), CP/M / DOS / Windows (\r\n) がその三種です。ユーザが Enter キーを押すとこれらの行末文字の一つがバッファに挿入されます。Windows では \r\n, Unix では \n が標準で挿入されますが、SCI_SETEOLMODE
メッセージで変更することができます。行末文字は SCI_SETVIEWEOL
の設定によって表示することも可能です。
Scintilla can interpret any of the three major line end conventions, Macintosh (\r), Unix
(\n) and CP/M / DOS / Windows (\r\n). When the user presses the Enter key, one of these line
end strings is inserted into the buffer. The default is \r\n in Windows and \n in Unix, but
this can be changed with the SCI_SETEOLMODE
message. You can also convert the
entire document to one of these line endings with SCI_CONVERTEOLS
. Finally, you
can choose to display the line endings with SCI_SETVIEWEOL
.
SCI_SETEOLMODE(int eolMode)
SCI_GETEOLMODE
SCI_CONVERTEOLS(int eolMode)
SCI_SETVIEWEOL(bool visible)
SCI_GETVIEWEOL
ユーザが Enter キーを押したときに挿入される文字は SCI_SETEOLMODE
で設定できます。eolMode
は SC_EOL_CRLF
(0),
SC_EOL_CR
(1), SC_EOL_LF
(2) のいずれかです。SCI_GETEOLMODE
で現在の状態を取得できます。
SCI_SETEOLMODE(int eolMode)
SCI_GETEOLMODE
SCI_SETEOLMODE
sets the characters that are added into the document when the user
presses the Enter key. You can set eolMode
to one of SC_EOL_CRLF
(0),
SC_EOL_CR
(1), or SC_EOL_LF
(2). The SCI_GETEOLMODE
message retrieves the current state.
文書内のすべての行末文字を eolMode
で指定したものに置き換えます。SC_EOL_CRLF
(0), SC_EOL_CR
(1), SC_EOL_LF
(2) が有効です。
SCI_CONVERTEOLS(int eolMode)
This message changes all the end of line characters in the document to match
eolMode
. Valid values are: SC_EOL_CRLF
(0), SC_EOL_CR
(1), or SC_EOL_LF
(2).
通常、行末文字は隠されていますが SCI_SETVIEWEOL
で設定することによりこれを見えるようにすることができます。visible
に true
を指定すると見えるようになり、false
を指定すると見えなくなります。見えるようにした場合、(CR)
, (LF)
, (CR)(LF)
といった表現になっています。SCI_GETVIEWEOL
で現在の状態を取得できます。
SCI_SETVIEWEOL(bool visible)
SCI_GETVIEWEOL
Normally, the end of line characters are hidden, but SCI_SETVIEWEOL
allows you to
display (or hide) them by setting visible
true
(or
false
). The visible rendering of the end of line characters is similar to
(CR)
, (LF)
, or (CR)(LF)
. SCI_GETVIEWEOL
returns the current state.
ここで解説する装飾系のメッセージはテキストの装飾割り当てを行います。Scintilla の標準設定では、文字毎に 8 ビットの情報が持てる中で 5 ビットを装飾 ( ビット 0 〜 4 = 装飾番号 0 〜 31 )に、残りの 3 ビットを指標に割り当てます。装飾と指標の配分は で変更できます。既存の標準解析器の中に欲しい装飾方法がある場合、あるいは自分で解析器を書く場合のいずれでも、解析器はおそらく文書を装飾表示する最も簡単な方法です。装飾を実行するコンテナを使うことに決めたときは で SCLEX_CONTAINER
を選択します。この場合、テキストを表示用に装飾する必要が出るたびに 通知がコンテナに送られます。装飾は空き時間で行うように指示することができます。解析器を使っている場合も含め、コンパイラが見つけたエラーに印をつけるために装飾コマンドを使うこともあるでしょう。次のコマンドが提供されています。
The styling messages allow you to assign styles to text. The standard Scintilla settings
divide the 8 style bits available for each character into 5 bits (0 to 4 = styles 0 to 31) that set a style and three bits (5 to 7) that
define indicators. You can change the balance between
styles and indicators with . If your styling needs can be met by
one of the standard lexers, or if you can write your own, then a lexer is probably the easiest
way to style your document. If you choose to use the container to do the styling you can use
the command to select
SCLEX_CONTAINER
, in which case the container is sent a notification each time text needs styling for display. As another
alternative, you might use idle time to style the document. Even if you use a lexer, you might
use the styling commands to mark errors detected by a compiler. The following commands can be
used.
SCI_GETENDSTYLED
SCI_STARTSTYLING(int position, int mask)
SCI_SETSTYLING(int length, int style)
SCI_SETSTYLINGEX(int length, const char
*styles)
SCI_SETLINESTATE(int line, int value)
SCI_GETLINESTATE(int line)
SCI_GETMAXLINESTATE
Scintilla は正しく装飾されたと思われる最後の文字を記録しています。その次の文字が装飾されれば記録はその方向へ移動し、それ以前の文字が修正されれば記録の位置も戻ります。テキストの描画の前に何らかの装飾が必要かどうかを知るためにこの位置が検査され、もし必要ならば通知 がコンテナに送られます。コンテナは
SCI_GETENDSTYLED
で装飾の開始点を見つけることができます。Scintilla は常に行全体に対して装飾目的の問い合わせを行います。
SCI_GETENDSTYLED
Scintilla keeps a record of the last character that is likely to be styled correctly. This is
moved forwards when characters after it are styled and moved backwards if changes are made to
the text of the document before it. Before drawing text, this position is checked to see if any
styling is needed and, if so, a notification message is sent to the
container. The container can send
SCI_GETENDSTYLED
to work out where it needs to
start styling. Scintilla will always ask to style whole lines.
装飾処理の準備をします。位置 pos
を開始点とし、どの装飾が設定可能かを示すマスクを mask
で指定します。マスクによって何度か同じ点を処理させることができます。例えば一回目で基本装飾を行ってコードテキストを素早く正確に表示させ、他方時間のかかる二回目で文法の誤りを検出し、指標を使って誤りがどれなのかを示すといった使い方ができます。標準設定では装飾が 5 ビット、指標が 3 ビットになっていますが、この状態で mask
を 31 (0x1f) にすると、テキストの装飾のみを設定し、指標を操作させないでいることができます。SCI_STARTSTYLING
の後、装飾に使う解析時の実体ごとに SCI_SETSTYLING
メッセージを送信してください。
SCI_STARTSTYLING(int pos, int mask)
This prepares for styling by setting the styling position pos
to start at and a
mask
indicating which bits of the style bytes can be set. The mask allows styling
to occur over several passes, with, for example, basic styling done on an initial pass to
ensure that the text of the code is seen quickly and correctly, and then a second slower pass,
detecting syntax errors and using indicators to show where these are. For example, with the
standard settings of 5 style bits and 3 indicator bits, you would use a mask
value
of 31 (0x1f) if you were setting text styles and did not want to change the indicators. After
SCI_STARTSTYLING
, send multiple SCI_SETSTYLING
messages for each
lexical entity to style.
装飾開始位置から文字数 length
に渡って指定の装飾を設定します。実行後、装飾開始位置は length
の分だけ移動し、次の呼び出しに利用できるようになります。sCell
が対象文字の装飾オクテットであるとき、この呼び出しは次の処理を行います。
if ((sCell & mask) != style) sCell = (sCell & ~mask) | (style &
mask);
SCI_SETSTYLING(int length, int style)
This message sets the style of length
characters starting at the styling position
and then increases the styling position by length
, ready for the next call. If
sCell
is the style byte, the operation is:
if ((sCell & mask) != style) sCell = (sCell & ~mask) | (style &
mask);
SCI_SETSTYLING
が指定範囲に同じ装飾を設定するのに対し、このメッセージでは装飾開始位置と length
で定まる範囲の各オクテットごとに styles
配列の装飾を設定します。styles
の各オクテットはマスクで指定されたビット以外を設定すべきではありません。実行後、装飾開始位置は length
の分だけ移動し、次の呼び出しに利用できるようになります。
SCI_SETSTYLINGEX(int length, const char *styles)
As an alternative to SCI_SETSTYLING
, which applies the same style to each byte,
you can use this message which specifies the styles for each of length
bytes from
the styling position and then increases the styling position by length
, ready for
the next call. The length
styling bytes pointed at by styles
should
not contain any bits not set in mask.
各文字に対し 8 ビットの解析状態が格納されているように、各行にも整数が格納されています。ASP ページ内でどのスクリプト言語が使われているか、などといった長い範囲の分析状態の格納に使うことができます。SCI_SETLINESTATE
でこの値を設定し、SCI_GETLINESTATE
で取得することができます。
SCI_SETLINESTATE(int line, int value)
SCI_GETLINESTATE(int line)
As well as the 8 bits of lexical state stored for each character there is also an integer
stored for each line. This can be used for longer lived parse states such as what the current
scripting language is in an ASP page. Use SCI_SETLINESTATE
to set the integer
value and SCI_GETLINESTATE
to get the value.
行の状態を持っているもののうちで最終の行を返します。
SCI_GETMAXLINESTATE
This returns the last line that has any line state.
前節で解説した装飾設定メッセージはテキストに関係づけられた装飾番号を変更するものでした。ここではそれらの装飾番号に対して視覚的にどう表現するかを定義するメッセージを紹介します。装飾ビットには 0 〜 STYLEMAX
(127) まで 128 種の解析による装飾値が設定できます。0 〜 31 はテキストの属性に使われます。さらに 32 以降にも定義済みの番号があり、次の STYLE_
* 定数で参照します。
While the style setting messages mentioned above change the style numbers associated with
text, these messages define how those style numbers are interpreted visually. There are 128
lexer styles that can be set, numbered 0 to STYLEMAX
(127). Unless you use to change the number
of style bits, styles 0 to 31 are used to set the text attributes. There are also some
predefined numbered styles starting at 32, The following STYLE_
* constants are
defined.
STYLE_DEFAULT |
32 | SCI_STYLECLEARALL メッセージが使われたときにすべての装飾が参照する属性を定義します。 |
---|---|---|
STYLE_LINENUMBER |
33 | 行番号表示余白の属性に関する装飾番号です。文字色・背景色が設定できます。背景色は折りたたみのマスクビットが使われていてはいけません。すなわち mask & SC_MASK_FOLDERS は 0 でなくてはなりません。マスクについては を参照してください。 |
STYLE_BRACELIGHT |
34 | 括弧の強調に関する装飾番号です。 | メッセージで使うほか、 で関係し合う字下げ部の強調表示にも使用されます。
STYLE_BRACEBAD |
35 | 対応の付かない括弧に関する装飾番号です。 | メッセージで使用します。
STYLE_CONTROLCHAR |
36 | 制御文字に関する装飾番号です。フォント、文字の大きさ、太字、イタリック体、文字集合の属性が使用できます。他方、色の属性は利用できません。 参照: |
STYLE_INDENTGUIDE |
37 | 字下げ情報を表示する部分の前景色と背景色に関する装飾番号です。 |
STYLE_LASTPREDEFINED |
39 | コードを書く側が定義済みスタイル番号を検出できるように定義されている値です。この値は定義済み装飾番号のうち最後のものに設定されています。現時点の最終番号は 37 であるのに対してこの値が 39 になっています。これは将来の定義済み装飾番号のために予約されているものです。 |
STYLE_MAX |
127 | これは装飾属性ではありませんが、使用可能な装飾番号の最大値を保持しています。STYLE_LASTPREDEFINED 〜 STYLE_MAX の間の装飾番号が充当されることになります。 |
を用いて装飾ビットを 5 ビットより多くした場合は
STYLE_DEFAULT |
32 | This style defines the attributes that all styles receive when the
SCI_STYLECLEARALL message is used. |
---|---|---|
STYLE_LINENUMBER |
33 | This style sets the attributes of the text used to display line numbers in a line
number margin. The background colour set for this style also sets the background colour
for all margins that do not have any folding mask bits set. That is, any margin for which
mask & SC_MASK_FOLDERS is 0. See for more about masks. |
STYLE_BRACELIGHT |
34 | This style sets the attributes used when highlighting braces with the | message and when highlighting the corresponding indentation with .
STYLE_BRACEBAD |
35 | This style sets the display attributes used when marking an unmatched brace with the | message.
STYLE_CONTROLCHAR |
36 | This style sets the font used when drawing control characters. Only the font, size, bold, italics, and character set attributes are used and not the colour attributes. See also: | .
STYLE_INDENTGUIDE |
37 | This style sets the foreground and background colours used when drawing the indentation guides. |
STYLE_LASTPREDEFINED |
39 | To make it easier for client code to discover the range of styles that are predefined, this is set to the style number of the last predefined style. This is currently set to 39 and the last style with an identifier is 37, which reserves space for future predefined styles. |
STYLE_MAX |
127 | This is not a style but is the number of the maximum style that can be set. Styles
between STYLE_LASTPREDEFINED and STYLE_MAX would be appropriate
if you used
to set more than 5 style bits. |
各々の装飾番号毎にフォント名、文字の大きさ、太字・イタリック・下線の指定、文字色(前景色)、背景色、および文字集合を設定できます。また、要求された装飾に対してテキストを隠したり、文字をすべて大文字化あるいは小文字化したり、文書途中で内包されている別言語の識別のために行末文字から行末までを塗りつぶすといったこともできます。このほか、試験的に「読み出し専用テキスト」属性が用意されています。
For each style you can set the font name, size and use of bold, italic and underline, foreground and background colour and the character set. You can also choose to hide text with a given style, display all characters as upper or lower case and fill from the last character on a line to the end of the line (for embedded languages). There is also an experimental attribute to make text read-only.
装飾をどのように使うかは完全にあなたの責任です。文法解析による色づけを行いたいのであれば、ホワイトスペースに 0 、数字に 1 、キーワードに 2 、文字列に3、プリプロセッサに 4、演算子に 5 …といった具合に自分で定義できます。
It is entirely up to you how you use styles. If you want to use syntax colouring you might use style 0 for white space, style 1 for numbers, style 2 for keywords, style 3 for strings, style 4 for preprocessor, style 5 for operators, and so on.
SCI_STYLERESETDEFAULT
SCI_STYLECLEARALL
SCI_STYLESETFONT(int styleNumber, char
*fontName)
SCI_STYLESETSIZE(int styleNumber, int
sizeInPoints)
SCI_STYLESETBOLD(int styleNumber, bool
bold)
SCI_STYLESETITALIC(int styleNumber, bool
italic)
SCI_STYLESETUNDERLINE(int styleNumber, bool
underline)
SCI_STYLESETFORE(int styleNumber, int
colour)
SCI_STYLESETBACK(int styleNumber, int
colour)
SCI_STYLESETEOLFILLED(int styleNumber, bool
eolFilled)
SCI_STYLESETCHARACTERSET(int styleNumber,
int charSet)
SCI_STYLESETCASE(int styleNumber, int
caseMode)
SCI_STYLESETVISIBLE(int styleNumber, bool
visible)
SCI_STYLESETCHANGEABLE(int styleNumber, bool
changeable)
SCI_STYLESETHOTSPOT(int styleNumber, bool
hotspot)
STYLE_DEFAULT
を Scintilla が初期化されたときの状態に戻します。
SCI_STYLERESETDEFAULT
This message resets STYLE_DEFAULT
to its state when Scintilla was
initialised.
すべての装飾を STYLE_DEFAULT
の状態に設定します。文法による色づけの用途で Scintilla を使っているなら、解析による装飾はおおよそ似たものになるでしょう。装飾設定の手順の一つは次のようになります。
STYLE_DEFAULT
に全装飾に共通の要素を設定する。SCI_STYLECLEARALL
で全ての装飾にこれを複製する。SCI_STYLECLEARALL
This message sets all styles to have the same attributes as STYLE_DEFAULT
. If you
are setting up Scintilla for syntax colouring, it is likely that the lexical styles you set
will be very similar. One way to set the styles is to:
1. Set STYLE_DEFAULT
to the common features of all styles.
2. Use SCI_STYLECLEARALL
to copy this to all styles.
3. Set the style attributes that make your lexical styles different.
これらおよびメッセージ fontName
は 0 終端文字列で、フォント名を指定します。Windows では名前の先頭32文字を使用し、大文字小文字は区別されません。内部キャッシュのため、Scintilla は名前でフォントを検索し、フォント名の大文字小文字を合わせようとします。ですから、指定名は一貫性を持たせておいてください(訳注: このあたり特に意味不明)。GTK+ 2.x においては、GDK でも Pango でもテキストを表示できます。Pango であればアンチエイリアステキストを使えますし Unicode を使うこともできますが、GDK は高速に動作します。Pango を使うには '!' の文字をフォント名の先頭に追加してください。
SCI_STYLESETFONT(int styleNumber, const char *fontName)
SCI_STYLESETSIZE(int styleNumber, int sizeInPoints)
SCI_STYLESETBOLD(int styleNumber, bool bold)
SCI_STYLESETITALIC(int styleNumber, bool italic)
These messages (plus ) set the font
attributes that are used to match the fonts you request to those available. The
fontName
is a zero terminated string holding the name of a font. Under Windows,
only the first 32 characters of the name are used and the name is not case sensitive. For
internal caching, Scintilla tracks fonts by name and does care about the casing of font names,
so please be consistent. On GTK+ 2.x, either GDK or Pango can be used to display text.
Pango antialiases text and works well with Unicode but GDK is faster.
Prepend a '!' character to the font name to use Pango.
装飾に下線を使うようにします。下線は文字色で描かれます。下線の属性を持つ文字はホワイトスペースも含めてすべて下線が引かれます。
SCI_STYLESETUNDERLINE(int styleNumber, bool
underline)
You can set a style to be underlined. The underline is drawn in the foreground colour. All
characters with a style that includes the underline attribute are underlined, even if they are
white space.
テキストは前景色(foreground colour)で描かれます。文字を囲む矩形の文字ではない部分は背景色(background colour) で描かれます。
SCI_STYLESETFORE(int styleNumber, int colour)
SCI_STYLESETBACK(int styleNumber, int colour)
Text is drawn in the foreground colour. The space in each character cell that is not occupied
by the character is drawn in the background colour.
行の最後にある文字が属性設定を受けた装飾を持つとき、その右側からウィンドウの右端までは最後の文字の背景色で塗りつぶされます。HTML の中の JavaScript など、ある言語の中に別の言語が内包されているときにこの機能は便利です。eolFilled
を true
に、かつ内包された側の言語の背景色を一定の内包する側とは違う色にすると、この場合なら JavaScript と HTML が区別しやすくなります。
SCI_STYLESETEOLFILLED(int styleNumber, bool
eolFilled)
If the last character in the line has a style with this attribute set, the remainder of the
line up to the right edge of the window is filled with the background colour set for the last
character. This is useful when a document contains embedded sections in another language such
as HTML pages with embedded JavaScript. By setting eolFilled
to true
and a consistent background colour (different from the background colour set for the HTML
styles) to all JavaScript styles then JavaScript sections will be easily distinguished from
HTML.
標準とは異なる文字集合に装飾をつけることができます。そういった文字集合が注釈や文字列で使えると便利です。SCI_STYLESETCHARACTERSET(SCE_C_STRING, SC_CHARSET_RUSSIAN)
と言うコードはロシア語の文字列を C と C++ で正確に表示します。SCE_C_STRING
は C/C++ 解析器で使われている文字列への装飾番号(値は6)です。現在は Windows でのみ全機能が動作します。
SCI_STYLESETCHARACTERSET(int styleNumber, int
charSet)
You can set a style to use a different character set than the default. The places where such
characters sets are likely to be useful are comments and literal strings. For example,
SCI_STYLESETCHARACTERSET(SCE_C_STRING, SC_CHARSET_RUSSIAN)
would ensure that
strings in Russian would display correctly in C and C++ (SCE_C_STRING
is the style
number used by the C and C++ lexer to display literal strings; it has the value 6). This
feature currently only works fully on Windows.
Windows で対応できる文字集合は次の通りです。SC_CHARSET_ANSI
, SC_CHARSET_ARABIC
, SC_CHARSET_BALTIC
,
SC_CHARSET_CHINESEBIG5
, SC_CHARSET_DEFAULT
,
SC_CHARSET_EASTEUROPE
, SC_CHARSET_GB2312
,
SC_CHARSET_GREEK
, SC_CHARSET_HANGUL
, SC_CHARSET_HEBREW
,
SC_CHARSET_JOHAB
, SC_CHARSET_MAC
, SC_CHARSET_OEM
,
SC_CHARSET_SHIFTJIS
, SC_CHARSET_SYMBOL
, SC_CHARSET_THAI
,
SC_CHARSET_TURKISH
, SC_CHARSET_VIETNAMESE
.
The character sets supported on Windows are:
SC_CHARSET_ANSI
, SC_CHARSET_ARABIC
, SC_CHARSET_BALTIC
,
SC_CHARSET_CHINESEBIG5
, SC_CHARSET_DEFAULT
,
SC_CHARSET_EASTEUROPE
, SC_CHARSET_GB2312
,
SC_CHARSET_GREEK
, SC_CHARSET_HANGUL
, SC_CHARSET_HEBREW
,
SC_CHARSET_JOHAB
, SC_CHARSET_MAC
, SC_CHARSET_OEM
,
SC_CHARSET_SHIFTJIS
, SC_CHARSET_SYMBOL
, SC_CHARSET_THAI
,
SC_CHARSET_TURKISH
, and SC_CHARSET_VIETNAMESE
.
GTK+ で対応している文字集合は次の通りです。SC_CHARSET_ANSI
, SC_CHARSET_EASTEUROPE
,
SC_CHARSET_GB2312
, SC_CHARSET_HANGUL
,
SC_CHARSET_SHIFTJIS
.
The character sets supported on GTK+ are:
SC_CHARSET_ANSI
, SC_CHARSET_EASTEUROPE
,
SC_CHARSET_GB2312
, SC_CHARSET_HANGUL
, and
SC_CHARSET_SHIFTJIS
.
caseMode によりアルファベットの大文字小文字に関してどのように表示するかを指定します。通常表示(SC_CASE_MIXED
, 0)、大文字(SC_CASE_UPPER
, 1)、小文字(SC_CASE_LOWER
, 2)のいずれかを設定します。この機能は表示方法だけを変更するもので、記憶しているテキスト自体は変更されません。
SCI_STYLESETCASE(int styleNumber, int caseMode)
The value of caseMode determines how text is displayed. You can set upper case
(SC_CASE_UPPER
, 1) or lower case (SC_CASE_LOWER
, 2) or display
normally (SC_CASE_MIXED
, 0). This does not change the stored text, only how it is
displayed.
通常、テキストは「見えます」。しかしながら、このメッセージにおいて visible
に 0 を指定することによって完全に隠すことができます。埋め込まれた書式化命令や、HTML や XML におけるハイパーテキストのキーワードなどに用いることができます。
SCI_STYLESETVISIBLE(int styleNumber, bool visible)
Text is normally visible. However, you can completely hide it by giving it a style with the
visible
set to 0. This could be used to hide embedded formatting instructions or
hypertext keywords in HTML or XML.
これはまだ実験的で不完全な実装の装飾属性です。標準では changeable
が true
に設定されていますがこれを false
にすると文字列が読み出し専用になります。現時点では変更不可能とされたテキストの中にキャレットが入り込まないような機能を持つだけで、指定範囲の中に変更不可テキストがあった場合にその削除を避けるといった機能は未実装です。
SCI_STYLESETCHANGEABLE(int styleNumber, bool
changeable)
This is an experimental and incompletely implemented style attribute. The default setting is
changeable
set true
but when set false
it makes text
read-only. Currently it only stops the caret from being within not-changeable text and does not
yet stop deleting a range that contains not-changeable text.
マウスクリックを検出できるテキスト範囲を目立たせるために用いられます。マウスカーソルはホットスポットの上では手の形に変わり、前景色・背景色も変更され、下線が表示されてクリックに反応することを示します。他の文書へのハイパーリンク実装の一部としてつかうことができます。
SCI_STYLESETHOTSPOT(int styleNumber, bool
hotspot)
This style is used to mark ranges of text that can detect mouse clicks.
The cursor changes to a hand over hotspots, and the foreground, and background colours
may change and an underline appear to indicate that these areas are sensitive to clicking.
This may be used to allow hyperlinks to other documents.
選択範囲は文字色・背景色の一方または両方を変更することで表示されます。各々が未設定だった場合は選択範囲に含まれても表示属性が変更されません。標準では背景色が明るい灰色になり、文字色は変更されないままとなっています。選択範囲がない場合は、現在の挿入点がテキストキャレットで印付けられます。キャレットは垂直な線で、通常はユーザが気づきやすいやすいように点滅をしています。
The selection is shown by changing the foreground and/or background colours. If one of these is not set then that attribute is not changed for the selection. The default is to show the selection by changing the background to light gray and leaving the foreground the same as when it was not selected. When there is no selection, the current insertion point is marked by the text caret. This is a vertical line that is normally blinking on and off to attract the users attention.
SCI_SETSELFORE(bool useSelectionForeColour, int
colour)
SCI_SETSELBACK(bool useSelectionBackColour, int
colour)
SCI_SETCARETFORE(int colour)
SCI_GETCARETFORE
SCI_SETCARETLINEVISIBLE(bool
show)
SCI_GETCARETLINEVISIBLE
SCI_SETCARETLINEBACK(int colour)
SCI_GETCARETLINEBACK
SCI_SETCARETPERIOD(int milliseconds)
SCI_GETCARETPERIOD
SCI_SETCARETWIDTH(int pixels)
SCI_GETCARETWIDTH
SCI_SETHOTSPOTACTIVEFORE
SCI_SETHOTSPOTACTIVEBACK
SCI_SETHOTSPOTACTIVEUNDERLINE
SCI_SETHOTSPOTSINGLELINE
SCI_SETCONTROLCHARSYMBOL(int
symbol)
SCI_GETCONTROLCHARSYMBOL
選択範囲に対する標準設定を上書きすることができます。 useSelection*Colour
を true
にすると任意の色を指定できます。false
にすると標準の色処理が採用され、colour
は無視されます。
SCI_SETSELFORE(bool useSelectionForeColour, int colour)
SCI_SETSELBACK(bool useSelectionBackColour, int colour)
You can choose to override the default selection colouring with these two messages. The colour
you provide is used if you set useSelection*Colour
to true
. If it is
set to false
, the default colour colouring is used and the colour
argument has no effect.
キャレットの色を SCI_SETCARETFORE
で設定し、 SCI_GETCARETFORE
で取得することができます。
SCI_SETCARETFORE(int colour)
SCI_GETCARETFORE
The colour of the caret can be set with SCI_SETCARETFORE
and retrieved with
SCI_CETCARETFORE
.
キャレットのある行に対して特別に背景色を設定できます。SCI_SETCARETLINEBACK
で背景色を設定し、次に SCI_SETCARETLINEVISIBLE(true)
というコードで有効にします。SCI_SETCARETLINEVISIBLE(false)
というコードで無効になります。SCI_GETCARET*
の二関数は状態と色を返します。他の印付けによって背景色が変更されていても、この形による背景色は最も高い優先度を持っています。
SCI_SETCARETLINEVISIBLE(bool show)
SCI_GETCARETLINEVISIBLE
SCI_SETCARETLINEBACK(int colour)
SCI_GETCARETLINEBACK
You can choose to make the background colour of the line containing the caret different with
these messages. To do this, set the desired background colour with
SCI_SETCARETLINEBACK
, then use SCI_SETCARETLINEVISIBLE(true)
to
enable the effect. You can cancel the effect with SCI_SETCARETLINEVISIBLE(false)
.
The two SCI_GETCARET*
functions return the state and the colour. This form of
background colouring has highest priority when a line has markers that would otherwise change
the background colour.
キャレットの点滅間隔は SCI_SETCARETPERIOD
で設定します。時間はミリ秒単位で、指定時間毎に表示と非表示を繰り返します。0 を指定すると点滅を行いません。標準値は 500 ミリ秒です。SCI_GETCARETPERIOD
で現在の値を取得できます。
SCI_SETCARETPERIOD(int milliseconds)
SCI_GETCARETPERIOD
The rate at which the caret blinks can be set with SCI_SETCARETPERIOD
which
determines the time in milliseconds that the caret is visible or invisible before changing
state. Setting the period to 0 stops the caret blinking. The default value is 500 milliseconds.
SCI_GETCARETPERIOD
returns the current setting.
SCI_SETCARETWIDTH
によって、キャレット自身の幅を 0 〜 3 ピクセルのいずれかに変更できます。標準値は 1 ピクセルです。SCI_GETCARETWIDTH
で現在の設定を取得することができます。0 はキャレットが見えなくなることを意味します。
SCI_SETCARETWIDTH(int pixels)
SCI_GETCARETWIDTH
The width of the caret can be set with SCI_SETCARETWIDTH
to a value of 0, 1, 2 or
3 pixels. The default width is 1 pixel. You can read back the current width with
SCI_GETCARETWIDTH
. A width of 0 makes the caret invisible (added at version
1.50).
カーソルがホットスポット属性の修飾を受けているテキスト上にあるとき、標準の色づけを変更して下線を引くことができます。単線モードは行クリップをまたいでホットスポットを続けることを抑制します。
SCI_SETHOTSPOTACTIVEFORE(bool useHotSpotForeColour, int colour)
SCI_SETHOTSPOTACTIVEBACK(bool useHotSpotBackColour, int colour)
SCI_SETHOTSPOTACTIVEUNDERLINE(bool underline,)
SCI_SETHOTSPOTSINGLELINE(bool singleLine,)
While the cursor hovers over text in a style with the hotspot attribute set,
the default colouring can be modified and an underline drawn with these settings.
Single line mode stops a hotspot from wrapping onto next line.
Scintilla は標準設定では制御文字(文字コードが32未満のもの)を角の丸い四角に ASCII による略号で表示します。これらの略号はコンピュータ黎明期の信号からきたもので、一部は現在も利用されています。LF = Line Feed(改行), BS = Back Space(後退), CR = Carriage Return (復帰)などです。次のものが表示されます。"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US".
SCI_SETCONTROLCHARSYMBOL(int symbol)
SCI_GETCONTROLCHARSYMBOL
By default, Scintilla displays control characters (characters with codes less than 32) in a
rounded rectangle as ASCII mnemonics: "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
"BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK",
"SYN", "ETB", "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US". These mnemonics come from the
early days of signaling, though some are still used (LF = Line Feed, BS = Back Space, CR =
Carriage Return, for example).
これらの略号を表示する代わりに、32〜255までのアスキーコードを指定して表示させることができます。指定値が 32 未満の場合、上記の略号が表示されます。設定した符号はその文字の修飾集合におけるフォントで表示されます。現在の指定値は SCI_GETCONTROLCHARSYMBOL
で取得できます。標準値は 0 です。
You can choose to replace these mnemonics by a nominated symbol with an ASCII code in the
range 32 to 255. If you set a symbol value less than 32, all control characters are displayed
as mnemonics. The symbol you set is rendered in the font of the style set for the character.
You can read back the current symbol with the SCI_GETCONTROLCHARSYMBOL
message.
The default symbol value is 0.
テキスト表示の左側には最大三つの余白が存在します。加えて、テキスト表示の上下左右に空間ができます。
によって、余白の各々は記号や行番号を表示するよう指定できます。余白毎に表示できる目印は で設定できます。可視状態の余白に関係づけられていない目印はテキストの背景色変更のように表示されます。ピクセル単位で余白毎の幅を設定できます。幅が 0 の余白は完全に無視されます。余白でマウスをクリックしたときの動作は でコンテナへの通知かテキスト一行の選択かを決めることができます。There may be up to three margins to the left of the text display, plus a gap either side of the text. Each margin can be set to display either symbols or line numbers with
. The markers that can be displayed in each margin are set with . Any markers not associated with a visible margin will be displayed as changes in background colour in the text. A width in pixels can be set for each margin. Margins with a zero width are ignored completely. You can choose if a mouse click in a margin sends a notification to the container or selects a line of text.各余白は 0 〜 2 の番号が付けられています。これ以外の余白番号は意味を持ちません。標準では余白番号 0 は行番号を表示するようになっていますが、幅が 0 なので表示されていません。余白番号 1 は折りたたまれて「いない」符号を表示します。16 ピクセルの幅がありますので表示されています。余白 2 は折りたたみを示す符号を表示しますが幅は 0 になっています。これら各余白の幅は変更ができます。
The margins are numbered 0 to 2. Using a margin number outside the valid range has no effect. By default, margin 0 is set to display line numbers, but is given a width of 0, so it is hidden. Margin 1 is set to display non-folding symbols and is given a width of 16 pixels, so it is visible. Margin 2 is set to display the folding symbols, but is given a width of 0, so it is hidden. Of course, you can set the margins to be whatever you wish.
SCI_SETMARGINTYPEN(int margin, int
type)
SCI_GETMARGINTYPEN(int margin)
SCI_SETMARGINWIDTHN(int margin, int
pixelWidth)
SCI_GETMARGINWIDTHN(int margin)
SCI_SETMARGINMASKN(int margin, int
mask)
SCI_GETMARGINMASKN(int margin)
SCI_SETMARGINSENSITIVEN(int margin, bool
sensitive)
SCI_GETMARGINSENSITIVEN(int
margin)
SCI_SETMARGINLEFT(<unused>, int
pixels)
SCI_GETMARGINLEFT
SCI_SETMARGINRIGHT(<unused>, int
pixels)
SCI_GETMARGINRIGHT
SCI_SETFOLDMARGINCOLOUR(bool useSetting, int colour)
SCI_SETFOLDMARGINHICOLOUR(bool useSetting, int colour)
余白の種別を設定あるいは取得します。引数 margin は 0, 1, 2 のいずれかであるべきです。定義済み定数 SC_MARGIN_SYMBOL
(0) と SC_MARGIN_NUMBER
(1) で符号用余白か行番号表示余白かを設定できます。便宜的に余白番号 0 には行番号が、残りの二つには符号が割り当てられます。
SCI_SETMARGINTYPEN(int margin, int iType)
SCI_GETMARGINTYPEN(int margin)
These two routines set and get the type of a margin. The margin argument should be 0, 1 or 2.
You can use the predefined constants SC_MARGIN_SYMBOL
(0) and
SC_MARGIN_NUMBER
(1) to set a margin as either a line number or a symbol margin.
By convention, margin 0 is used for line numbers and the other two are used for symbols.
余白幅をピクセル単位で設定もしくは取得します。幅 0 の余白は見えなくなります。標準では Scintilla は余白番号 1 に符号用の 16 ピクセルを与えていますので大きさの参考にしてください。行番号用の余白幅は文書内の行数と行番号装飾を考慮すべきです。
といったコードで適切な幅を得られます。SCI_SETMARGINWIDTHN(int margin, int pixelWidth)
SCI_GETMARGINWIDTHN(int margin)
These routines set and get the width of a margin in pixels. A margin with zero width is
invisible. By default, Scintilla sets margin 1 for symbols with a width of 16 pixels, so this
is a reasonable guess if you are not sure what would be appropriate. Line number margins widths
should take into account the number of lines in the document and the line number style. You
could use something like to get a
suitable width.
mask は 32 ビットの値で、各ビットが 32 種の論理記号に対応しています。論理記号は符号として余白に表示できるものです。折りたたみを示すことに使われる 7 つの論理記号をマスクするために SC_MASK_FOLDERS
(0xFE000000,十進 -33554432) という定数があります。広範囲の符号と色を 32 種の論理記号の各々に割り当てることができます。目印を参考にしてください。(mask
& SC_MASK_FOLDERS)==0
である場合は余白の背景色は装飾番号 33 ( )で制御されています。
SCI_SETMARGINMASKN(int margin, int mask)
SCI_GETMARGINMASKN(int margin)
The mask is a 32-bit value. Each bit corresponds to one of 32 logical symbols that can be
displayed in a margin that is enabled for symbols. There is a useful constant,
SC_MASK_FOLDERS
(0xFE000000 or -33554432), that is a mask for the 7 logical
symbols used to denote folding. You can assign a wide range of symbols and colours to each of
the 32 logical symbols, see Markers for more information. If (mask
& SC_MASK_FOLDERS)==0
, the margin background colour is controlled by style 33 ( ).
により、行に対して論理上の目印を加えることができます。可視余白のマスクには現れない目印を持つ行はその行の背景色を変更します。例えば文法エラーのある行に論理番号 10 の目印を使い、背景色を変える場合を考えます。この目印に対するマスクは 0x400 ( 1 << 10, 1 を左に10回シフトした値 )です。符号余白のいずれもマスクに 0x400 を含んでいなければ、この目印を持つ行の背景色が変更されます。
You add logical markers to a line with
. If a line has an associated marker that does not appear in the mask of any margin with a non-zero width, the marker changes the background colour of the line. For example, suppose you decide to use logical marker 10 to mark lines with a syntax error and you want to show such lines by changing the background colour. The mask for this marker is 1 shifted left 10 times (1<<10) which is 0x400. If you make sure that no symbol margin includes 0x400 in its mask, any line with the marker gets the background colour changed.余白1 に折りたたみ情報以外を設定するときは SCI_SETMARGINMASKN(1, ~SC_MASK_FOLDERS)
, 余白 2 に折りたたみ情報余白を設定するときは SCI_SETMARGINMASKN(2, SC_MASK_FOLDERS)
といったコードを使います。これらは Scintilla の標準設定となっています。~SC_MASK_FOLDERS
は 0x1FFFFFF ( 十進 33554431 ) です。余白に 32 種すべての符号を表示する必要がある場合は SCI_SETMARGINMASKN(余白番号, -1)
というコードを使ってください。
To set a non-folding margin 1 use SCI_SETMARGINMASKN(1, ~SC_MASK_FOLDERS)
; to
set a folding margin 2 use SCI_SETMARGINMASKN(2, SC_MASK_FOLDERS)
. This is the
default set by Scintilla. ~SC_MASK_FOLDERS
is 0x1FFFFFF in hexadecimal or 33554431
decimal. Of course, you may need to display all 32 symbols in a margin, in which case use
SCI_SETMARGINMASKN(margin, -1)
.
三つの各余白がマウスボタンクリックに反応するかどうかを定めます。反応する設定の余白でクリックすると、そのコンテナに 通知 が送信されます。反応しない設定の余白は選択範囲設定用余白として動作します。これは行単位で選択するのに便利です。標準ではどの余白もクリックに反応しない設定になっています。
SCI_SETMARGINSENSITIVEN(int margin, bool
sensitive)
SCI_GETMARGINSENSITIVEN(int margin)
Each of the three margins can be set sensitive or insensitive to mouse clicks. A click in a
sensitive margin sends a notification to the container. Margins that are not sensitive act as
selection margins which make it easy to select ranges of lines. By default, all margins are
insensitive.
テキスト部左右の余白幅を設定あるいは取得します。標準設定は左右とも 1 ピクセルです。
SCI_SETMARGINLEFT(<unused>, int pixels)
SCI_GETMARGINLEFT
SCI_SETMARGINRIGHT(<unused>, int pixels)
SCI_GETMARGINRIGHT
These messages set and get the width of the blank margin on both sides of the text in pixels.
The default is to one pixel on each side.
折りたたみ余白の通常と強調時の色に関する変更ができます。Windows においての標準は ::GetSysColor(COLOR_3DFACE), 強調色が ::GetSysColor(COLOR_3DHIGHLIGHT) になっています。
SCI_SETFOLDMARGINCOLOUR(bool useSetting, int colour)
SCI_SETFOLDMARGINHICOLOUR(bool useSetting, int colour)
These messages allow changing the colour of the fold margin and fold margin highlight.
On Windows the fold margin colour defaults to ::GetSysColor(COLOR_3DFACE) and the fold margin highlight
colour to ::GetSysColor(COLOR_3DHIGHLIGHT).
SCI_SETUSEPALETTE(bool
allowPaletteUse)
SCI_GETUSEPALETTE
SCI_SETBUFFEREDDRAW(bool isBuffered)
SCI_GETBUFFEREDDRAW
SCI_SETTWOPHASEDRAW(bool twoPhase)
SCI_GETTWOPHASEDRAW
SCI_SETCODEPAGE(int codePage)
SCI_GETCODEPAGE
SCI_SETWORDCHARS(<unused>, const char
*chars)
SCI_SETWHITESPACECHARS(<unused>, const char
*chars)
SCI_SETCHARSDEFAULT
SCI_GRABFOCUS
SCI_SETFOCUS(bool focus)
SCI_GETFOCUS
同時に 256 色しか表示できない8 ビットの表示装置では、表示環境がパレットを用いてアプリケーションの色要求を仲裁します。GTK+ では Scintilla は常にパレットを使います。
SCI_SETUSEPALETTE(bool allowPaletteUse)
SCI_GETUSEPALETTE
On 8 bit displays, which can only display a maximum of 256 colours, the graphics environment
mediates between the colour needs of applications through the use of palettes. On GTK+,
Scintilla always uses a palette.
Windows でこのようなパレットを使うとアプリケーションを切り替える際に視覚的な発光の問題が起こります。これは Scintilla コントロールを保持するアプリケーションにおいて、いくつかの Scintilla メッセージを転送してパレットコードをうまく動作させるために必要なものです。標準ではパレットは使われず、使う場合はアプリケーションが Scintilla にそのことを通知しなくてはなりません。Scintilla がパレットを使わない場合はすでに使用可能な色を単に表示します。この色はしばしば Windows のシステム色 20 色が使われます。。
On Windows, there are some problems with visual flashing when switching between applications with palettes and it is also necessary for the application containing the Scintilla control to forward some messages to Scintilla for its palette code to work. Because of this, by default, the palette is not used and the application must tell Scintilla to use one. If Scintilla is not using a palette, it will only display in those colours already available, which are often the 20 Windows system colours.
Scintilla がどのようにしてパレットを利用可能にしているかについては、SciTE で WM_PALETTECHANGED
, WM_QUERYNEWPALETTE
, SCI_SETUSEPALETTE
を検索してください。転送すべき Windows メッセージは次の通りです。
WM_SYSCOLORCHANGE
, WM_PALETTECHANGED
,
WM_QUERYNEWPALETTE
(TRUE
を返すべき).
To see an example of how to enable palette support in Scintilla, search the text of SciTE
for WM_PALETTECHANGED
, WM_QUERYNEWPALETTE
and
SCI_SETUSEPALETTE
. The Windows messages to forward are:
WM_SYSCOLORCHANGE
, WM_PALETTECHANGED
,
WM_QUERYNEWPALETTE
(should return TRUE
).
(WM_XXXX, WPARAM, LPARAM)
を Scintilla に転送するには SendMessage(hScintilla, WM_XXXX, WPARAM, LPARAM)
というコードが使えます。hScintilla は Scintilla ウィンドウを作ったときに返されるそのウィンドウへのハンドルです。
To forward a message (WM_XXXX, WPARAM, LPARAM)
to Scintilla, you can use
SendMessage(hScintilla, WM_XXXX, WPARAM, LPARAM)
where hScintilla
is
the handle to the Scintilla window you created as your editor.
Windows のメッセージを転送する状況にある間、トップレベルウィンドウはすべての WM_SETTINGCHANGE
メッセージを Scintilla に送らなくてはなりません。このメッセージは現在マウス設定の正確な変更に使われていますが、将来別のユーザインタフェイス部品のために使われる可能性があります。
While we are on the subject of forwarding messages in Windows, the top level window should
forward any WM_SETTINGCHANGE
messages to Scintilla (this is currently used to
collect changes to mouse settings, but could be used for other user interface items in the
future).
描画バッファを使うかどうかの設定と現在状態の取得を行います。描画バッファを用いると、各行毎に直接画面に描画するのではなくいったんパッファに書き込みを行い、その後画面に複製を行います。バッファを使うとちらつきが抑えられますが処理速度は落ちます。初期状態ではバッファを使います。
SCI_SETBUFFEREDDRAW(bool isBuffered)
SCI_GETBUFFEREDDRAW
These messages turn buffered drawing on or off and report the buffered drawing state. Buffered
drawing draws each line into a bitmap rather than directly to the screen and then copies the
bitmap to the screen. This avoids flickering although it does take longer. The default is for
drawing to be buffered.
テキストの二段階描画はよりきれいになりますが処理速度は落ちます。単段階描画では同じ装飾を受ける一連の文字を背景とともに描画します。その一続きの最後の文字が次の文字にかかるような場合、具体的には "V_" のように "V" が 異なる装飾の "_" の直前に来るような場合、"V" の右半分は "_" の背景色に塗りつぶされて切れてしまいます。二段階描画では、この現象を避けるためにまず背景色をすべて処理してしまい、その上から文字を背景透過指定で描画します。二段階描画を描画バッファなしで用いると単段階描画よりもちらつきが大きくなります。初期状態では二段階描画になっています。
SCI_SETTWOPHASEDRAW(bool twoPhase)
SCI_GETTWOPHASEDRAW
Two phase drawing is a better but slower way of drawing text.
In single phase drawing each run of characters in one style is drawn along with its background.
If a character overhangs the end of a run, such as in "V_" where the
"V" is in a different style from the "_", then this can cause the right hand
side of the "V" to be overdrawn by the background of the "_" which
cuts it off. Two phase drawing
fixes this by drawing all the backgrounds first and then drawing the text in
transparent mode. Two phase drawing may flicker more than single phase
unless buffered drawing is on. The default is for drawing to be two phase.
Scintilla は日本語・中国語・韓国語の DBCS に対応しています。codePage
にコードページを指定すると Scintilla はダブルバイト文字を一文字として扱うように保証されます。キャレットはダブルバイト文字を割るような位置には来なくなります。 codePage
に 0 を指定すると DBCS 対応は無効となります。初期状態では SCI_SETCODEPAGE(0)
です。
SCI_SETCODEPAGE(int codePage)
SCI_GETCODEPAGE
Scintilla has some support for Japanese, Chinese and Korean DBCS. Use this message with
codePage
set to the code page number to set Scintilla to use code page information
to ensure double byte characters are treated as one character rather than two. This also stops
the caret from moving between the two bytes in a double byte character. Call with
codePage
set to zero to disable DBCS support. The default is
SCI_SETCODEPAGE(0)
.
SC_CP_UTF8
(65001) というコードページは Scintilla を Unicode モードにして文書を UTF-8 で書かれた文字の流れとして扱います。テキストは描画される前にその環境における通常の Unicode エンコーディングを通して変換されます。この結果ヘブライ語・アラビア語・キリル語・漢字を表示できるようになります。二文字が一行の中で縦に並ぶことがあるタイ語のような言語でもほぼ動作しますが、このような文字が分離して視覚的に異常な表示になる問題があります。双方向テキストは未対応です。
Code page SC_CP_UTF8
(65001) sets Scintilla into Unicode mode with the document
treated as a sequence of characters expressed in UTF-8. The text is converted to the platform's
normal Unicode encoding before being drawn by the OS and thus can display Hebrew, Arabic,
Cyrillic, and Han characters. Languages which can use two characters stacked vertically in one
horizontal space, such as Thai, will mostly work but there are some issues where the characters
are drawn separately leading to visual glitches. Bi-directional text is not supported.
Windows ではコードページに 932(日本語 Shift-JIS), 936 (簡体中文 GBK), 949 (韓国語), and 950 (繁体中文 Big5) を設定できます。ただし、言語依存の実装が環境側に要求される可能性があります。
On Windows, code page can be set to 932 (Japanese Shift-JIS), 936 (Simplified Chinese GBK), 949 (Korean), and 950 (Traditional Chinese Big5) although these may require installation of language specific support.
GTK+ では SC_CP_DBCS
(1) を指定することで Scintilla を多バイト文字モードにすることができます。日本語 EUC のようなものの処理に使われます。
On GTK+, code page SC_CP_DBCS
(1) sets Scintilla into
multi byte character mode as is required for Japanese language processing with
the EUC encoding.
GTK+ では、ロケールは setlocale(LC_CTYPE, "en_US.UTF-8")
といったコードで Unicode に設定されなくてはなりません。"iso10646"
レジストリにあるフォントがフォント集合の中で用いられます。フォント集合はコンマで区切られた部分フォント仕様の一覧で、各々のフォント仕様は次のいずれかになります。foundry-fontface-charsetregistry-encoding
,
fontface-charsetregistry-encoding
, foundry-fontface
,
fontface
例えば "misc-fixed-iso10646-1,*"
という形になります。
For GTK+, the locale should be set to a Unicode locale with a call similar to
setlocale(LC_CTYPE, "en_US.UTF-8")
. Fonts with an "iso10646"
registry
should be used in a font set. Font sets are a comma separated list of partial font
specifications where each partial font specification can be in the form:
foundry-fontface-charsetregistry-encoding
or
fontface-charsetregistry-encoding
or foundry-fontface
or
fontface
. An example is "misc-fixed-iso10646-1,*"
.
codePage
を SC_CP_UTF8
でも 0 でもない値にした場合の動作は OS に依存します。
Setting codePage
to a non-zero value that is not SC_CP_UTF8
is
operating system dependent.
Scintilla は単語単位の処理を行う関数をいくつか保有しています。単語は特定の文字集合からの文字列のひとつながりで構成されます。どれを単語を構成する文字とみなすかを設定することができます。文字集合は指定されるまでは標準値を保持しています。
例えば、'_' を文字集合の一部とみなしたくない場合は次のようなコードを使います。SCI_SETWORDCHARS(0, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
;
SCI_SETWORDCHARS(<unused>, const char *chars)
Scintilla has several functions that operate on words, which are defined to be contiguous
sequences of characters from a particular set of characters. This message defines which
characters are members of that set. The character sets are set to default values before processing this
function.
For example, if you don't allow '_' in your set of characters
use:
SCI_SETWORDCHARS(0, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
;
SCI_SETWORDCHARS
と似ていますが、こちらはどの文字をホワイトスペースとみなすかを設定します。ホワイトスペース文字を指定することで Scintilla はユーザに最適のキャレット移動性能を持たせることができます。単語の先頭や末尾への移動などです。例えば、句読点文字をホワイトスペースと定義すると、Ctrl を押しながら左右矢印キーを入力したときに通過されます。この関数は SCI_SETWORDCHARS
の後に呼び出されるべきです。SCI_SETWORDCHARS
はホワイトスペースの設定を初期状態に戻してしまいます。
SCI_SETWHITESPACECHARS(<unused>, const char *chars)
Similar to SCI_SETWORDCHARS
, this message allows the user to define which chars Scintilla considers
as whitespace. Setting the whitespace chars allows the user to fine-tune Scintilla's behaviour doing
such things as moving the cursor to the start or end of a word; for example, by defining punctuation chars
as whitespace, they will be skipped over when the user presses ctrl+left or ctrl+right.
This function should be called after SCI_SETWORDCHARS
as it will
reset the whitespace characters to the default set.
単語とホワイトスペースを標準設定をに戻します。空白・タブ文字・コードが 0x20 未満の文字をホワイトスペース、英数字と '_' を単語に使用される文字と考えるようになります。
SCI_SETCHARSDEFAULT
Use the default sets of word and whitespace characters. This sets whitespace to space, tab and other
characters with codes less than 0x20, with word characters set to alphanumeric and '_'.
GTK+ は Windows よりもフォーカスの制御が少し複雑です。Scintilla はこのメッセージでフォーカスを変えることができます。
SCI_GRABFOCUS
SCI_SETFOCUS(bool focus)
SCI_GETFOCUS
On GTK+, focus handling is more complicated than on Windows, so Scintilla can be told with
this message to grab the focus.
内部フォーカスフラグは SCI_SETFOCUS
で設定することができます。複雑なフォーカス要求を持つクライアントで使われます。自身が実際のフォーカスを持っていながら、Scintilla が論理的なフォーカスを持っているように示さなくてはならない場合などデス。
The internal focus flag can be set with SCI_SETFOCUS
. This is used by clients
that have complex focus requirements such as having their own window that gets the real focus
but with the need to indicate that Scintilla has the logical focus.
SCI_BRACEHIGHLIGHT(int pos1, int
pos2)
SCI_BRACEBADLIGHT(int pos1)
SCI_BRACEMATCH(int position, int
maxReStyle)
最大二文字が「括弧の強調装飾」で強調されます。装飾番号は
(34) です。字下げ誘導が有効になっている場合、括弧に関連する字下げも強調したいと考えることがあるでしょう。 で桁の位置を取得し、 で字下げの強調を行うことができます。SCI_BRACEHIGHLIGHT(int pos1, int pos2)
Up to two characters can be highlighted in a 'brace highlighting style', which is defined as
style number (34).
If you have enabled indent guides, you may also wish to highlight the indent that corresponds
with the brace. You can locate the column with and highlight the indent with .
対応する括弧が見つからない場合は 括弧の不正に対する強調装飾で対応のない括弧を強調することができます。装飾番号は BRACE_BADLIGHT
(35) です。位置に INVALID_POSITION
(-1) を指定するとこの強調は取り除かれます。
SCI_BRACEBADLIGHT(int pos1)
If there is no matching brace then the brace
badlighting style, style BRACE_BADLIGHT
(35), can be used to show the brace
that is unmatched. Using a position of INVALID_POSITION
(-1) removes the
highlight.
SCI_BRACEMATCH
は位置pos
の文字と関係づけられた対応する括弧を差がします。制御される括弧文字は '(', ')', '[',
']', '{', '}', '<', '>' です。開き括弧からは文書の進行方向、閉じ括弧からはその逆方向に検索します。もし指定位置の文字が括弧ではなかった場合や対応する括弧が見つからなかった場合は、-1 を返します。そうでなければ戻り値は対応する括弧の位置となります。
SCI_BRACEMATCH(int pos, int maxReStyle)
The SCI_BRACEMATCH
message finds a corresponding matching brace given
pos
, the position of one brace. The brace characters handled are '(', ')', '[',
']', '{', '}', '<', and '>'. The search is forwards from an opening brace and backwards
from a closing brace. If the character at position is not a brace character, or a matching
brace cannot be found, the return value is -1. Otherwise, the return value is the position of
the matching brace.
対応する括弧はともに同じ装飾を持っているか、装飾部の端を越えているかしていなくてはなりません。入れ語の括弧は正しく処理されます。媒介変数 maxReStyle
は現時点では必ず 0 にしてください。将来、括弧の検索の長さを制限する目的に使われる予定です。
A match only occurs if the style of the matching brace is the same as the starting brace or
the matching brace is beyond the end of styling. Nested braces are handled correctly. The
maxReStyle
parameter must currently be 0 - it may be used in the future to limit
the length of brace searches.
字下げ(行先頭のホワイトスペース)はプログラマーが構造を明確にするためによく使われる他、Python のような一部の言語では文法の一部となっています。タブキーは通常エディタで用いられ、タブ文字を挿入するか次のタブ位置まで空白を詰めていくかするために使われます。
Indentation (the white space at the start of a line) is often used by programmers to clarify program structure and in some languages, for example Python, it may be part of the language syntax. Tabs are normally used in editors to insert a tab character or to pad text with spaces up to the next tab.
行頭のホワイトスペース内において、タブや後退の入力を特別に扱うことができます。タブキーで現在の文字位置に単にタブ文字を入れる代わりに次の字下げ位置まで進め、後退キーで文字を削除する代わりに字下げを解除していくなどです。Scintila は字下げ誘導(垂直な線)を表示することができます。コードの生成に役立てることができます。
Scintilla can be set to treat tab and backspace in the white space at the start of a line in a special way: inserting a tab indents the line to the next indent position rather than just inserting a tab at the current character position and backspace unindents the line rather than deleting a character. Scintilla can also display indentation guides (vertical lines) to help you to generate code.
SCI_SETTABWIDTH(int widthInChars)
SCI_GETTABWIDTH
SCI_SETUSETABS(bool useTabs)
SCI_GETUSETABS
SCI_SETINDENT(int widthInChars)
SCI_GETINDENT
SCI_SETTABINDENTS(bool tabIndents)
SCI_GETTABINDENTS
SCI_SETBACKSPACEUNINDENTS(bool
bsUnIndents)
SCI_GETBACKSPACEUNINDENTS
SCI_SETLINEINDENTATION(int line, int
indentation)
SCI_GETLINEINDENTATION(int line)
SCI_GETLINEINDENTPOSITION(int
line)
SCI_SETINDENTATIONGUIDES(bool
view)
SCI_GETINDENTATIONGUIDES
SCI_SETHIGHLIGHTGUIDE(int column)
SCI_GETHIGHLIGHTGUIDE
SCI_SETTABWIDTH
でタブの大きさを STYLE_DEFAULT
の整数倍の空白文字で定義します。初期状態のタブ幅は 8 文字です。タブ幅に制限はありませんが 1 未満とか大きすぎる値などは想定外の動作をすることがあります。
SCI_SETTABWIDTH(int widthInChars)
SCI_GETTABWIDTH
SCI_SETTABWIDTH
sets the size of a tab as a multiple of the size of a space
character in STYLE_DEFAULT
. The default tab width is 8 characters. There are no
limits on tab sizes, but values less than 1 or large values may have undesirable effects.
SCI_SETUSETABS
によって、字下げがタブ文字と空白文字の混成にならないようにしたり空白文字だけになったりするように設定できます。useTabs
を false
(0) にすると素手のタブと字下げに空白文字を使わなくなります。初期状態では true
です。 を使うとタブ幅を考慮に入れた桁位置を取得することができます。
SCI_SETUSETABS(bool useTabs)
SCI_GETUSETABS
SCI_SETUSETABS
determines whether indentation should be created out of a mixture
of tabs and spaces or be based purely on spaces. Set useTabs
to false
(0) to create all tabs and indents out of spaces. The default is true
. You can use
to get the column of a
position taking the width of a tab into account.
SCI_SETINDENT
は で設定された空白の幅から字下げ幅を設定します。0 を指定すると字下げ幅はタブ幅と同じになります。字下げ幅に制限はありませんが、0 未満や大きすぎる値は想定外の挙動を起こすことがあります。
SCI_SETINDENT(int widthInChars)
SCI_GETINDENT
SCI_SETINDENT
sets the size of indentation in terms of the width of a space in . If you set a width of
0, the indent size is the same as the tab size. There are no limits on indent sizes, but values
less than 0 or large values may have undesirable effects.
SCI_SETTABINDENTS(bool tabIndents)
SCI_GETTABINDENTS
SCI_SETBACKSPACEUNINDENTS(bool bsUnIndents)
SCI_GETBACKSPACEUNINDENTS
字下げのホワイトスペース内では、タブキーと後退キーを字下げとその解除に使うことができます。それぞれ SCI_SETTABINDENTS
と SCI_SETBACKSPACEUNINDENTS
関数で指定します。
Inside indentation white space, the tab and backspace keys can be made to indent and
unindent rather than insert a tab character or delete a character with the
SCI_SETTABINDENTS
and SCI_SETBACKSPACEUNINDENTS
functions.
SCI_GETLINEINDENTATION
と SCI_SETLINEINDENTATION
により、ある行の字下げ量の取得または設定ができます。字下げは文字単位の桁数で計測されます。文字単位とは空白文字の幅に関係づけられたものです。
SCI_SETLINEINDENTATION(int line, int indentation)
SCI_GETLINEINDENTATION(int line)
The amount of indentation on a line can be discovered and set with
SCI_GETLINEINDENTATION
and SCI_SETLINEINDENTATION
. The indentation is
measured in character columns, which correspond to the width of space characters.
指定行の字下げの終了位置を返します。
SCI_GETLINEINDENTPOSITION(int line)
This returns the position at the end of indentation of a line.
字下げ誘導は垂直の点線で、字下げの空白の中に字下げ幅毎に現れます。これにより、特に複数ページに渡るような場合に、各行がどの構造に属しているのかがわかりやすくなります。装飾番号
(37) は字下げ誘導に文字色と背景色をつけることに使われます。SCI_SETINDENTATIONGUIDES(bool view)
SCI_GETINDENTATIONGUIDES
Indentation guides are dotted vertical lines that appear within indentation white space every
indent size columns. They make it easy to see which constructs line up especially when they
extend over multiple pages. Style (37) is used to specify the
foreground and background colour of the indentation guides.
括弧の強調が発生したとき、この括弧に関係する字下げ誘導をも強調することができます。これは装飾番号 column
に 0 を指定すると強調が行われません。
SCI_SETHIGHLIGHTGUIDE(int column)
SCI_GETHIGHLIGHTGUIDE
When brace highlighting occurs, the indentation guide corresponding to the braces may be
highlighted with the brace highlighting style, (34). Set column
to 0 to
cancel this highlight.
0 〜 31 に番号づけられたマーカがあり、これらの任意の組み合わせを各行に指定することができます。マーカはテキストの左にある選択用余白の中に現れます。選択用余白の幅が 0 の場合は、代わりに行全体の背景色が変わります。マーカ番号 25 〜 31 は Scintilla が折りたたみ余白の中で使い、SC_MARKNUM_
* と言う形の参照名が与えられています。SC_MARKNUM_FOLDEROPEN
といったものがあります。
There are 32 markers, numbered 0 to 31, and you can assign any combination of them to each
line in the document. Markers appear in the selection
margin to the left of the text. If the selection margin is set to zero width, the
background colour of the whole line is changed instead. Marker numbers 25 to 31 are used by
Scintilla in folding margins, and have symbolic names of the form SC_MARKNUM_
*,
for example SC_MARKNUM_FOLDEROPEN
.
マーカ番号 0 〜 24 は機能を定義されておらず、Scintilla を利用する側で文法エラーや実行位置、ブレークポイント、その他の必要な標示に使用することができます。折りたたみ機能が不要の場合は 32 種すべてのマーカを好きな目的に使用することができます。
Marker numbers 0 to 24 have no pre-defined function; you can use them to mark syntax errors or the current point of execution, break points, or whatever you need marking. If you do not need folding, you can use all 32 for any purpose you wish.
マーカ番号はこれに関係づけられた符号を持っています。マーカ番号毎に前景色と背景色を指定することができますので、同じ符号を別目的の別の色で使うことができます。Scintilla は符号の集合を持っており、(SC_MARK_
*) に割り当てたり、文字を使ったりすることができます。初期状態では、32 の全てのマーカが SC_MARK_CIRCLE
に割り当てられており、前景色が黒、背景色が白となっています。
Each marker number has a symbol associated with it. You can also set the foreground and
background colour for each marker number, so you can use the same symbol more than once with
different colouring for different uses. Scintilla has a set of symbols you can assign
(SC_MARK_
*) or you can use characters. By default, all 32 markers are set to
SC_MARK_CIRCLE
with a black foreground and a white background.
マーカはその番号順に描画されます。したがって番号の大きいマーカが低いマーカの上に現れます。マーカがある行が移動する場合、行頭の移動先を追跡することでマーカの移動が試みられます。もしマーカのある行が削除された場合、マーカの情報はその前の行のマーカ情報と OR
演算で合成されます。
The markers are drawn in the order of their numbers, so higher numbered markers appear on
top of lower numbered ones. Markers try to move with their text by tracking where the start of
their line moves. When a line is deleted, its markers are combined, by an OR
operation, with the markers of the previous line.
SCI_MARKERDEFINE(int markerNumber, int
markerSymbols)
SCI_MARKERDEFINEPIXMAP(int markerNumber,
const char *xpm)
SCI_MARKERSETFORE(int markerNumber, int
colour)
SCI_MARKERSETBACK(int markerNumber, int
colour)
SCI_MARKERADD(int line, int markerNumber)
SCI_MARKERDELETE(int line, int
markerNumber)
SCI_MARKERDELETEALL(int markerNumber)
SCI_MARKERGET(int line)
SCI_MARKERNEXT(int lineStart, int
markerMask)
SCI_MARKERPREVIOUS(int lineStart, int
markerMask)
SCI_MARKERLINEFROMHANDLE(int
handle)
SCI_MARKERDELETEHANDLE(int handle)
0 〜 31 のマーカ番号とマーカシンボルもしくは ASCII 文字を関係づけます。目的の特化されていないシンボルは現在以下のものが用意されています。SC_MARK_CIRCLE
, SC_MARK_ROUNDRECT
, SC_MARK_ARROW
,
SC_MARK_SMALLRECT
, SC_MARK_SHORTARROW
, SC_MARK_EMPTY
,
SC_MARK_ARROWDOWN
, SC_MARK_MINUS
, SC_MARK_PLUS
,
SC_MARK_ARROWS
, SC_MARK_DOTDOTDOT
, SC_MARK_EMPTY
,
SC_MARK_BACKGROUND
SCI_MARKERDEFINE(int markerNumber, int markerSymbols)
This message associates a marker number in the range 0 to 31 with one of the marker symbols or
an ASCII character. The general-purpose marker symbols currently available are:
SC_MARK_CIRCLE
, SC_MARK_ROUNDRECT
, SC_MARK_ARROW
,
SC_MARK_SMALLRECT
, SC_MARK_SHORTARROW
, SC_MARK_EMPTY
,
SC_MARK_ARROWDOWN
, SC_MARK_MINUS
, SC_MARK_PLUS
,
SC_MARK_ARROWS
, SC_MARK_DOTDOTDOT
, SC_MARK_EMPTY
and
SC_MARK_BACKGROUND
.
マーカは pixmap にすることができます。XPM 形式が pixmap に用いられます。pixmap は 1 オクテットで 1 ピクセルを表すという制限があります。データは 0 終端でなくてはなりません。pixmap はマーカ用シンボル SC_MARK_PIXMAP
を使います。XPM 形式の全容は別途参照してください。
SCI_MARKERDEFINEPIXMAP(int markerNumber, const char
*xpm)
Markers can be set to pixmaps with this message. The XPM format is used for the pixmap and it
is limited to pixmaps that use one character per pixel. The data should be null terminated.
Pixmaps use the SC_MARK_PIXMAP
marker symbol. You can find the full description of
the XPM format here.
マーカ SC_MARK_BACKGROUND
は行の背景色を変更するだけです。SC_MARK_EMPTY
は見えないマーカで、行を追跡することに使えます。また、折りたたみへの装飾を変更して SC_FOLDERNUM_
* を関係のないシンボルと結びつけたいときにも使えます。
The SC_MARK_BACKGROUND
marker changes the background colour of the line only.
The SC_MARK_EMPTY
symbol is invisible, allowing client code to track the movement
of lines. You would also use it if you changed the folding style and wanted one or more of the
SC_FOLDERNUM_
* markers to have no associated symbol.
余白の中で平坦な木の形に折りたたみを表現するためのマーカシンボルは次の通りです。
SC_MARK_BOXMINUS
, SC_MARK_BOXMINUSCONNECTED
,
SC_MARK_BOXPLUS
, SC_MARK_BOXPLUSCONNECTED
,
SC_MARK_CIRCLEMINUS
, SC_MARK_CIRCLEMINUSCONNECTED
,
SC_MARK_CIRCLEPLUS
, SC_MARK_CIRCLEPLUSCONNECTED
,
SC_MARK_LCORNER
, SC_MARK_LCORNERCURVE
, SC_MARK_TCORNER
,
SC_MARK_TCORNERCURVE
, SC_MARK_VLINE
There are also marker symbols designed for use in the folding margin in a flattened tree
style.
SC_MARK_BOXMINUS
, SC_MARK_BOXMINUSCONNECTED
,
SC_MARK_BOXPLUS
, SC_MARK_BOXPLUSCONNECTED
,
SC_MARK_CIRCLEMINUS
, SC_MARK_CIRCLEMINUSCONNECTED
,
SC_MARK_CIRCLEPLUS
, SC_MARK_CIRCLEPLUSCONNECTED
,
SC_MARK_LCORNER
, SC_MARK_LCORNERCURVE
, SC_MARK_TCORNER
,
SC_MARK_TCORNERCURVE
, and SC_MARK_VLINE
.
文字もマーカとして利用可能です。文字の ASCII 値に SC_MARK_CHARACTER
(10000) を加えて指定してください。例えば 'A' (ASCII コード 65) をマーカ番号 1 に使うのであれば SCI_MARKETDEFINE(1, SC_MARK_CHARACTER+65)
というコードを実行します。
Characters can be used as markers by adding the ASCII value of the character to
SC_MARK_CHARACTER
(10000). For example, to use 'A' (ASCII code 65) as marker
number 1 use:
SCI_MARKETDEFINE(1, SC_MARK_CHARACTER+65)
.
マーカ番号 SC_MARKNUM_FOLDER
と SC_MARKNUM_FOLDEROPEN
は折りたたみ部分が開いているか閉じているかを標示するために使われます。どのシンボルもこの目的で割り当てることができますが、(SC_MARK_PLUS
, SC_MARK_MINUS
) もしくは (SC_MARK_ARROW
, SC_MARK_ARROWDOWN
) の組を選択するのがよいでしょう。平坦木で表示するにはほかにも次のものへの割り当てが必要です。SC_MARKNUM_FOLDEREND
, SC_MARKNUM_FOLDERMIDTAIL
,
SC_MARKNUM_FOLDEROPENMID
, SC_MARKNUM_FOLDERSUB
,
SC_MARKNUM_FOLDERTAIL
折りたたみに使う分のビットは SC_MASK_FOLDERS
で表現できます。これは通常折りたたみ用の余白に対して SCI_SETMARGINMASKN
の引数で用いられます。
The marker numbers SC_MARKNUM_FOLDER
and SC_MARKNUM_FOLDEROPEN
are
used for showing that a fold is present and open or closed. Any symbols may be assigned for
this purpose although the (SC_MARK_PLUS
, SC_MARK_MINUS
) pair or the
(SC_MARK_ARROW
, SC_MARK_ARROWDOWN
) pair are good choices. As well as
these two, more assignments are needed for the flattened tree style:
SC_MARKNUM_FOLDEREND
, SC_MARKNUM_FOLDERMIDTAIL
,
SC_MARKNUM_FOLDEROPENMID
, SC_MARKNUM_FOLDERSUB
, and
SC_MARKNUM_FOLDERTAIL
. The bits used for folding are specified by
SC_MASK_FOLDERS
, which is commonly used as an argument to
SCI_SETMARGINMASKN
when defining a margin to be used for folding.
次の表は、四種の折りたたみ表示においてどの SC_MARK_
* シンボルがどのマーカ番号 SC_MARKNUM_
* に割り当てられるべきかを示しています。Macintosh を模した矢印、'+' と '-' で閉じた折りたたみと開いた折りたたみを表現したもの、丸い記号の木、四角の記号の木がこの四種です。
This table shows which SC_MARK_
* symbols should be assigned to which
SC_MARKNUM_
* marker numbers to obtain four folding styles: Arrow (mimics
Macintosh), plus/minus shows folded lines as '+' and opened folds as '-', Circle tree, Box
tree.
SC_MARKNUM_ * |
矢印 | +− | 丸記号の木 | 四角記号の木 |
---|---|---|---|---|
FOLDEROPEN |
ARROWDOWN |
MINUS |
CIRCLEMINUS |
BOXMINUS |
FOLDER |
ARROW |
PLUS |
CIRCLEPLUS |
BOXPLUS |
FOLDERSUB |
EMPTY |
EMPTY |
VLINE |
VLINE |
FOLDERTAIL |
EMPTY |
EMPTY |
LCORNERCURVE |
LCORNER |
FOLDEREND |
EMPTY |
EMPTY |
CIRCLEPLUSCONNECTED |
BOXPLUSCONNECTED |
FOLDEROPENMID |
EMPTY |
EMPTY |
CIRCLEMINUSCONNECTED |
BOXMINUSCONNECTED |
FOLDERMIDTAIL |
EMPTY |
EMPTY |
TCORNERCURVE |
TCORNER |
SC_MARKNUM_ * |
Arrow | Plus/minus | Circle tree | Box tree |
---|---|---|---|---|
FOLDEROPEN |
ARROWDOWN |
MINUS |
CIRCLEMINUS |
BOXMINUS |
FOLDER |
ARROW |
PLUS |
CIRCLEPLUS |
BOXPLUS |
FOLDERSUB |
EMPTY |
EMPTY |
VLINE |
VLINE |
FOLDERTAIL |
EMPTY |
EMPTY |
LCORNERCURVE |
LCORNER |
FOLDEREND |
EMPTY |
EMPTY |
CIRCLEPLUSCONNECTED |
BOXPLUSCONNECTED |
FOLDEROPENMID |
EMPTY |
EMPTY |
CIRCLEMINUSCONNECTED |
BOXMINUSCONNECTED |
FOLDERMIDTAIL |
EMPTY |
EMPTY |
TCORNERCURVE |
TCORNER |
マーカ番号に対する前景色と背景色を設定します。
SCI_MARKERSETFORE(int markerNumber, int colour)
SCI_MARKERSETBACK(int markerNumber, int colour)
These two messages set the foreground and background colour of a marker number.
指定行に指定番号のマーカを追加します。行番号がおかしい場合やメモリ不足などで失敗すると -1 を返します。それ以外の場合は追加後のマーカ制御番号を返します。マーカ制御番号は、移動や行の結合後のマーカを探す際の
指定されたマーカ番号自身や、すでにその行にマーカがあるかどうかは調べません。
SCI_MARKERADD(int line, int markerNumber)
This message adds marker number markerNumber
to a line. The message returns -1 if
this fails (illegal line number, out of memory) or it returns a marker handle number that
identifies the added marker. You can use this returned handle with to find where a
marker is after moving or combining lines and with to delete the marker
based on its handle. The message does not check the value of markerNumber, nor does it
check if the line already contains the marker.
指定行番号で指定マーカ番号を探し、そのマーカがあればマーカを削除します。同じマーカを複数回加えていた場合はこれを一回にひとつずつ削除していきます。マーカ番号に -1 を指定すると、その行のすべてのマーカが削除されます。
SCI_MARKERDELETE(int line, int markerNumber)
This searches the given line number for the given marker number and deletes it if it is
present. If you added the same marker more than once to the line, this will delete one copy
each time it is used. If you pass in a marker number of -1, all markers are deleted from the
line.
全ての行から指定番号のマーカを削除します。マーカ番号が -1 の場合はすべての行のすべてのマーカが削除されます。
SCI_MARKERDELETEALL(int markerNumber)
This removes markers of the given number from all lines. If markerNumber is -1, it deletes all
markers from all lines.
指定行にどのマーカがあるかを示す 32 ビット整数値を返します。低位ビットから順にマーカ番号 0, 1, 2 … に対応します。
SCI_MARKERGET(int line)
This returns a 32-bit integer that indicates which markers were present on the line. Bit 0 is
set if marker 0 is present, bit 1 for marker 1 and so on.
指定された行以前または以後から指定されたマーカの集合を検索します。検索は行番号 lineStart
の行から始まり、ファイルの終端方向(SCI_MARKERNEXT
)もしくは開始位置方向(SCI_MARKERPREVIOUS
) へ検索を続けます。引数 markerMask
は検索したいマーカを示す少なくとも一つのビットが指定されているべきです。低位ビットからマーカ番号 0, 1, 2 …に対応しており、立てられると検索対象となります。markerMask
に含まれているマーカのいずれかがはじめて見つかった行番号を返します。見つからなかった場合は -1 を返します。
SCI_MARKERNEXT(int lineStart, int markerMask)
SCI_MARKERPREVIOUS(int lineStart, int markerMask)
These messages search efficiently for lines that include a given set of markers. The search
starts at line number lineStart
and continues forwards to the end of the file
(SCI_MARKERNEXT
) or backwards to the start of the file
(SCI_MARKERPREVIOUS
). The markerMask
argument should have one bit set
for each marker you wish to find. Set bit 0 to find marker 0, bit 1 for marker 1 and so on. The
message returns the line number of the first line that contains one of the markers in
markerMask
or -1 if no marker is found.
引数 markerHandle
は から返されたマーカへの識別子です。この関数はこの識別子があるマーカを検索します。見つかればその行番号、見つからなければ -1 を返します。
SCI_MARKERLINEFROMHANDLE(int markerHandle)
The markerHandle
argument is an identifier for a marker returned by . This function searches
the document for the marker with this handle and returns the line number that contains it or -1
if it is not found.
引数 markerHandle
は から返されたマーカへの識別子です。この関数はこの識別子があるマーカを検索し、見つかればこのマーカを削除します。
SCI_MARKERDELETEHANDLE(int markerHandle)
The markerHandle
argument is an identifier for a marker returned by . This function searches
the document for the marker with this handle and deletes the marker if it is found.
初期状態の Scintilla は文字毎に対応している装飾オクテットを 5 ビットと 3 ビットに分け、前者を装飾情報( 32 種)、後者を標示情報としています。ですから、文法エラー・非推奨の名前・不正な字下げを一度に標示することができます。標示は次のいずれかになります。単純な下線、波線、小さな "T" の形の線、斜めのハッチング、打ち消し線、テキストの周りを囲む矩形。
By default, Scintilla organizes the style byte associated with each text byte as 5 bits of style information (for 32 styles) and 3 bits of indicator information for 3 independent indicators so that, for example, syntax errors, deprecated names and bad indentation could all be displayed at once. Indicators may be displayed as simple underlines, squiggly underlines, a line of small 'T' shapes, a line of diagonal hatching, a strike-out or a rectangle around the text.
標示は INDICS_MASK
マスクを用い、 で INDIC0_MASK
, INDIC1_MASK
, INDIC2_MASK
を用いることで設定されます。
The indicators are set using INDICS_MASK
mask
and with the values
INDIC0_MASK
, INDIC1_MASK
and INDIC2_MASK
.
装飾に使うビット数は Scintilla.h
で定義されている定数 INDIC*_MASK
はすべて 5 ビットの装飾情報と 3 ビットの標示情報を前提としています。これと異なる配分を使う場合は自分で定数を定める必要があります。
The number of bits used for styles can be altered with INDIC*_MASK
constants defined in Scintilla.h
all assume 5 bits of
styling information and 3 indicators. If you use a different arrangement, you must define your
own constants.
SCI_INDIC*
メッセージは標示の視覚的状態を取得あるいは設定します。これらはすべて引数 indicatorNumber
を使い、これは 0 〜 7 の範囲で指定の標示に装飾を与えるために使われます。初期設定では標示番号 0, 1, 2 だけが使えます。
The SCI_INDIC*
messages allow you to get and set the visual appearance of the
indicators. They all use an indicatorNumber
argument in the range 0 to 7 to set
the indicator to style. With the default settings, only indicators 0, 1 and 2 will have any
visible effect.
SCI_INDICSETSTYLE(int indicatorNumber, int
indicatorStyle)
SCI_INDICGETSTYLE(int indicatorNumber)
SCI_INDICSETFORE(int indicatorNumber, int
colour)
SCI_INDICGETFORE(int indicatorNumber)
特性の標示が使っている装飾の設定または取得を行います。標示のための装飾は現在次のものが使えます。
SCI_INDICSETSTYLE(int indicatorNumber, int
indicatorStyle)
SCI_INDICGETSTYLE(int indicatorNumber)
These two messages set and get the style for a particular indicator. The indicator styles
currently available are:
定数 | 値 | 視覚効果 |
---|---|---|
INDIC_PLAIN |
0 | 単純な直線の下線がつきます。 |
INDIC_SQUIGGLE |
1 | 波状の下線がつきます。 |
INDIC_TT |
2 | 小さな T が並んだような下線がつきます。. |
INDIC_DIAGONAL |
3 | 斜線のハッチがつきます。 |
INDIC_STRIKE |
4 | 打ち消し線がつきます。 |
INDIC_HIDDEN |
5 | 標示に対して視覚効果はありません。 |
INDIC_BOX |
6 | テキストを矩形で囲みます。 |
Symbol | Value | Visual effect |
---|---|---|
INDIC_PLAIN |
0 | Underlined with a single, straight line. |
INDIC_SQUIGGLE |
1 | A squiggly underline. |
INDIC_TT |
2 | A line of small T shapes. |
INDIC_DIAGONAL |
3 | Diagonal hatching. |
INDIC_STRIKE |
4 | Strike out. |
INDIC_HIDDEN |
5 | An indicator with no visual effect. |
INDIC_BOX |
6 | A rectangle around the text. |
初期状態の標示装飾は次と等価です。
SCI_INDICSETSTYLE(0, INDIC_SQUIGGLE);
SCI_INDICSETSTYLE(1, INDIC_TT);
SCI_INDICSETSTYLE(2, INDIC_PLAIN);
The default indicator styles are equivalent to:
SCI_INDICSETSTYLE(0, INDIC_SQUIGGLE);
SCI_INDICSETSTYLE(1, INDIC_TT);
SCI_INDICSETSTYLE(2, INDIC_PLAIN);
標示を描画するための色を設定あるいは取得します。初期状態の標示の色は次と等価です。
SCI_INDICSETFORE(0, 0x007f00);
(暗い緑)
SCI_INDICSETFORE(1, 0xff0000);
(明るい青)
SCI_INDICSETFORE(2, 0x0000ff);
(明るい赤)
SCI_INDICSETFORE(int indicatorNumber, int colour)
SCI_INDICGETFORE(int indicatorNumber)
These two messages set and get the colour used to draw an indicator. The default indicator
colours are equivalent to:
SCI_INDICSETFORE(0, 0x007f00);
(dark green)
SCI_INDICSETFORE(1, 0xff0000);
(light blue)
SCI_INDICSETFORE(2, 0x0000ff);
(light red)
自動補完機能はリストボックスを使ってユーザが入力した文字に近い識別子を表示するものです。ユーザは候補をタブキーで選択するか、更に候補を絞るために入力を続けるかします。候補は SCI_AUTOCSETFILLUPS
で定義します。自動補完は Scintilla 自身ではなく実装側が起動させます。例えば、C 言語でユーザが fred
とだけ入力したとすると、一覧の中へ fred
を調べ、見つかれば自動補完一覧として提示することができます。またユーザの入力を監視し、その入力に近い候補を提示したら以後は入力毎に候補の絞り込みを行うこともできます。さらに別の方法として、一覧表示を呼び出すためのキーを定義しておくといった使い方もあります。
Autocompletion displays a list box showing likely identifiers based upon the users typing.
The user chooses the currently selected item by pressing the tab character or another character
that is a member of the fillup character set defined with SCI_AUTOCSETFILLUPS
.
Autocompletion is triggered by your application. For example, in C if you detect that the user
has just typed fred.
you could look up fred
, and if it has a known
list of members, you could offer them in an autocompletion list. Alternatively, you could
monitor the user's typing and offer a list of likely items once their typing has narrowed down
the choice to a reasonable list. As yet another alternative, you could define a key code to
activate the list.
自動補完を機能させるには、文書に追加されていく文字を逐一監視していなくてはなりません。SciTEBase.cxx の SciTEBase::CharAdded()
関数が自動補完の例となっています。
To make use of autocompletion you must monitor each character added to the document. See
SciTEBase::CharAdded()
in SciTEBase.cxx for an example of autocompletion.
SCI_AUTOCSHOW(int lenEntered, const char
*list)
SCI_AUTOCCANCEL
SCI_AUTOCACTIVE
SCI_AUTOCPOSSTART
SCI_AUTOCCOMPLETE
SCI_AUTOCSTOPS(<unused>, const char
*chars)
SCI_AUTOCSETSEPARATOR(char
separator)
SCI_AUTOCGETSEPARATOR
SCI_AUTOCSELECT(<unused>, const char
*select)
SCI_AUTOCGETCURRENT
SCI_AUTOCSETCANCELATSTART(bool
cancel)
SCI_AUTOCGETCANCELATSTART
SCI_AUTOCSETFILLUPS(<unused>, const char
*chars)
SCI_AUTOCSETCHOOSESINGLE(bool
chooseSingle)
SCI_AUTOCGETCHOOSESINGLE
SCI_AUTOCSETIGNORECASE(bool
ignoreCase)
SCI_AUTOCGETIGNORECASE
SCI_AUTOCSETAUTOHIDE(bool autoHide)
SCI_AUTOCGETAUTOHIDE
SCI_AUTOCSETDROPRESTOFWORD(bool
dropRestOfWord)
SCI_AUTOCGETDROPRESTOFWORD
SCI_REGISTERIMAGE
SCI_CLEARREGISTEREDIMAGES
SCI_AUTOCSETTYPESEPARATOR(char separatorCharacter)
SCI_AUTOCGETTYPESEPARATOR
項目群を表示します。lenEntered
は入力済みの文字数、list
は特定の文字で区切られた単語項目群です。初期状態の区切り文字は空白ですが、
および で変更あるいは取得が可能です。
SCI_AUTOCSHOW(int lenEntered, const char *list)
This message causes a list to be displayed. lenEntered
is the number of
characters of the word already entered and list
is the list of words separated by
separator characters. The initial separator character is a space but this can be set or got
with
and .
単語項目群は並べ替えが済んでいるものでなくてはなりません。
によって大文字小文字を区別しないように設定されている場合は、検索の前に大文字に変換されます。並べ替えを行った項目群は句読点文字のうち '[', '\', ']', '^', '_', '`' が他の文字の後ろに来ていなくてはならないことになります。The list of words should be in sorted order. If set to ignore case mode with
, then strings are matched after being converted to upper case. One result of this is that the list should be sorted with the punctuation characters '[', '\', ']', '^', '_', and '`' sorted after letters.項目群の表示を中断します。自動補完実行中、どの項目の一部分にも該当しないことになる文字の入力があったときは項目群の表示は消去されるべきです。たとえば識別子の入力中に '.', '(','[' といった文字が来た場合などです。自動補完を中断する文字の集合は
で指定できます。SCI_AUTOCCANCEL
This message cancels any displayed autocompletion list. When in autocompletion mode, the list
should disappear when the user types a character that can not be part of the autocompletion,
such as '.', '(' or '[' when typing an identifier. A set of characters that will cancel
autocompletion can be specified with .
活性化中の自動補完項目群があれば 0 以外、なければ 0 を返します。
SCI_AUTOCACTIVE
This message returns non-zero if there is an active autocompletion list and zero if there is
not.
SCI_AUTOCSHOW
が項目群の表示を開始しているときに、現在位置を返します。
SCI_AUTOCPOSSTART
This returns the value of the current position when SCI_AUTOCSHOW
started display
of the list.
自動補完機能を活性化させます。タブキーと同じ効果を持ちます。
SCI_AUTOCCOMPLETE
This message triggers autocompletion. This has the same effect as the tab key.
引数 chars
は自動補完項目群表示を自動で中断する文字の一覧になっている文字列です。エディタを開始した時点では、どの文字も自動中断を行わない設定となっています。
SCI_AUTOCSTOPS(<unused>, const char *chars)
The chars
argument is a string containing a list of characters that will
automatically cancel the autocompletion list. When you start the editor, this list is
empty.
SCI_AUTOCSHOW
で指定する項目群の区切り文字を設定もしくは取得します。初期設定は空白文字です。
SCI_AUTOCSETSEPARATOR(char separator)
SCI_AUTOCGETSEPARATOR
These two messages set and get the separator character used to separate words in the
SCI_AUTOCSHOW
list. The default is the space character.
自動補完項目群の中からselect
に最初に合致する項目を選択します。初期状態では大文字小文字を区別しますが で区別しないようにもできます。合致検査は select
と一文字ずつ行われます。select が "Fred" であれば "Fred" で始まる項目群の最初にある例えば "Frederick" が合致するものとみなされます。項目が見つかればこれが選択されます。 で自動消去が有効になっている場合、項目が見つからなければ項目群表示が消去されます。現在選択されている項目は SCI_AUTOCGETCURRENT
で取得できます。
SCI_AUTOCSELECT(<unused>, const char *select)
SCI_AUTOCGETCURRENT
This message selects an item in the autocompletion list. It searches the list of words for the
first that matches select
. By default, comparisons are case sensitive, but you can
change this with . The match is character
by character for the length of the select
string. That is, if select is "Fred" it
will match "Frederick" if this is the first item in the list that begins with "Fred". If an
item is found, it is selected. If the item is not found, the autocompletion list closes if
auto-hide is true (see ).
The current selection can be retrieved with SCI_AUTOCGETCURRENT
初期状態では、項目群の表示が行われたときよりもキャレットが後退方向に移動したときにその項目群が取り消されるようになっています。引数に false
を与えて SCI_AUTOCSETCANCELATSTART を呼び出すと、補完対象となる単語の最初の文字より前に戻るまで項目群は取り消されません。
SCI_AUTOCSETCANCELATSTART(bool cancel)
SCI_AUTOCGETCANCELATSTART
The default behavior is for the list to be cancelled if the caret moves before the location it
was at when the list was displayed. By calling this message with a false
argument,
the list is not cancelled until the caret moves before the first character of the word being
completed.
自動補完項目群が活性化しているときに決定を意味する文字を入力すると、現在選択中の項目とそれに続いてその決定を促した文字が入力されます。一般的な決定文字は '(', '[', '.' ですが、使っている言語によりその他の文字も使われます。初期状態ではこのような決定文字は定義されていません。
SCI_AUTOCSETFILLUPS(<unused>, const char *chars)
If a fillup character is typed with an autocompletion list active, the currently selected item
in the list is added into the document, then the fillup character is added. Common fillup
characters are '(', '[' and '.' but others are possible depending on the language. By default,
no fillup characters are set.
SCI_AUTOCSETCHOOSESINGLE(1)
を実行している場合、項目を一つしか取り得ない状態ならば項目群の表示なしで自動的にその項目が入力されます。初期状態では、項目が一つしかない場合でも項目群の形で表示されます。
SCI_AUTOCSETCHOOSESINGLE(bool chooseSingle)
SCI_AUTOCGETCHOOSESINGLE
If you use SCI_AUTOCSETCHOOSESINGLE(1)
and a list has only one item, it is
automatically added and no list is displayed. The default is to display the list even if there
is only a single item.
項目群をなす項目群が大文字小文字を区別するかどうかを設定または取得します。初期状態では区別します。
SCI_AUTOCSETIGNORECASE(bool ignoreCase)
SCI_AUTOCGETIGNORECASE
By default, matching of characters to list members is case sensitive. These messages let you
set and get case sensitivity.
初期状態では、取りうる項目が無くなってしまった場合は項目群が取り消されます。どの項目にも合致しない入力があった場合がそれです。autoHide
を false
にすると、このようなときに元の項目群を保持し続けます。この指定は にも影響を与えます。
SCI_AUTOCSETAUTOHIDE(bool autoHide)
SCI_AUTOCGETAUTOHIDE
By default, the list is cancelled if there are no viable matches (the user has typed
characters that no longer match a list entry). If you want to keep displaying the original
list, set autoHide
to false
. This also effects .
dropRestOfWord
が true
に設定されていると、項目が選択されたときにキャレットのうしろの単語構成文字が先だって消去されます。初期設定では false
になっています。
SCI_AUTOCSETDROPRESTOFWORD(bool dropRestOfWord)
SCI_AUTOCGETDROPRESTOFWORD
When an item is selected, any word characters following the caret are first erased if
dropRestOfWord
is set true
. The default is false
.
自動補完項目群は文字列の代わりに画像で表示することもできます。各画像は整数型で登録され、'?' で区切られた項目群文字列の形で使われます。"fclose?2 fopen" という文字列は画像番号 2 を "fclose" の前に表示し、"fopen" の前には画像がないという指定になります。画像は SCI_CLEARREGISTEREDIMAGES
で消去できます。また、上記説明の区切り '?' は SCI_AUTOCSETTYPESEPARATOR
で変更できます。
SCI_REGISTERIMAGE(int type, const char *xpmData)
SCI_CLEARREGISTEREDIMAGES
SCI_AUTOCSETTYPESEPARATOR(char separatorCharacter)
SCI_AUTOCGETTYPESEPARATOR
Autocompletion list items may display an image as well as text. Each image is first registered with an integer
type. Then this integer is included in the text of the list separated by a '?' from the text. For example,
"fclose?2 fopen" displays image 2 before the string "fclose" and no image before "fopen".
The images are in XPM format as is described for
The set of registered images can be cleared with SCI_CLEARREGISTEREDIMAGES
and the '?' separator changed
with SCI_AUTOCSETTYPESEPARATOR
.
ユーザによる項目群は、自動補完と内部的に同じ機構を使っています。自動補完機能用の呼び出しをそのまま適用することができます。自動補完項目群が活性化しているときはユーザ項目群は表示できません。また次のような違いがあります。
User lists use the same internal mechanisms as autocompletion lists, and all the calls listed for autocompletion work on them; you cannot display a user list at the same time as an autocompletion list is active. They differ in the following respects:
は無効です。
が送られます。o The message has no
effect.
o When the user makes a selection you are sent a notification message.
注意: (訳注: 原文の構造が理解不能) まだ活性化状態のユーザ項目群で使われている文字について、決定文字や停止文字に指定されている場合、エディタにユーザが文字入力をすることで、ユーザ項目群が選択されたり取り消されたりすることがあります。
BEWARE: if you have set fillup characters or stop characters, these will still be active with the user list, and may result in items being selected or the user list cancelled due to the user typing into the editor.
媒介変数 listType
は 構造体の wParam
フィールドとしてのコンテナです。Scintilla が自動補完項目群とユーザ項目群を区別できるようにするため、これは 0 より大きくなくてはなりません。バッファの項目群とマクロの項目群、といった異種の項目群があるときは listType
でどの種類のものを返すのか設定できます。
SCI_USERLISTSHOW(int listType, const char *list)
The listType
parameter is returned to the container as the wParam
field of the
structure. It must be greater than 0 as this is how Scintilla tells the difference between an
autocompletion list and a user list. If you have different types of list, for example a list of
buffers and a list of macros, you can use listType
to tell which one has returned
a selection.
コールチップとは関数の引数を表示する小さなウィンドウで、ユーザが関数名を入力した後に表示されるものです。コールチップは自動補完項目群との間で一部内部的動作を行います。コールチップは活性化状態の自動補完項目群を取り消す、などです。
Call tips are small windows displaying the arguments to a function and are displayed after the user has typed the name of the function. There is some interaction between call tips and autocompletion lists in that showing a call tip cancels any active autocompletion list, and vice versa.
コールチップは、その中の文字列の一部を強調することができます。カンマなどを数えて関数内の現在の引数を強調することなどに利用できます。コールチップの使い方については SciTEBase.cxx
の SciTEBase::CharAdded()
関数を参照してください。
Call tips can highlight part of the text within them. You could use this to highlight the
current argument to a function by counting the number of commas (or whatever separator your
language uses). See SciTEBase::CharAdded()
in SciTEBase.cxx
for an
example of call tip use.
コールチップ上でマウスボタンクリックを行うことができ、クリックされるとそのコンテナに を送信します。'\001' や '\002' の文字を入れることで、小さな上下の矢印を表示することができます。ある関数名に対するオーバロードされた形のものを表示するときに利用し、ユーザが矢印をクリックすることでオーバロード関数を巡回させる目的などに使えます。
The mouse may be clicked on call tips and this causes a
notification to be sent to the container. Small up an down arrows may be displayed within
a call tip by, respectively, including the characters '\001', or '\002'. This is useful
for showing that there are overloaded variants of one function name and that the user can
click on the arrows to cycle through the overloads.
そのほか、通知 への応答として、単語の上で少し止まっていたマウスカーソルが去った時にコールチップを表示させ、
の応答の際に消去することができます。この手法はデバッガで変数の値を表示したり、編集中にマウスカーソル下の単語についての情報を提供したりすることに使えます。
Alternatively, call tips can be displayed when you leave the mouse pointer for a while over
a word in response to the notification and cancelled in response to
. This method could be used in a debugger to give
the value of a variable, or during editing to give information about the word under the
pointer.
SCI_CALLTIPSHOW(int posStart, const char
*definition)
SCI_CALLTIPCANCEL
SCI_CALLTIPACTIVE
SCI_CALLTIPPOSSTART
SCI_CALLTIPSETHLT(int highlightStart, int
highlightEnd)
SCI_CALLTIPSETBACK(int colour)
SCI_CALLTIPSETFORE(int colour)
SCI_CALLTIPSETFOREHLT(int colour)
コールチップウィンドウの表示によってプロセスを開始します。コールチップがすでに活性化されている場合は何もしません。posStart
は、コールチップが添えられる文書内での位置です。コールチップ文字列は指定位置から一行下に沿って表示されます。definition
がコールチップに表示する文字列を定義します。 '\n' (改行、ASCII コード 10) によって複数行にすることができます。
SCI_CALLTIPSHOW(int posStart, const char *definition)
This message starts the process by displaying the call tip window. If a call tip is already
active, this has no effect.
posStart
is the position in the document at which to align the call tip. The call
tip text is aligned to start 1 line below this character.
definition
is the call tip text. This can contain multiple lines separated by
'\n' (Line Feed, ASCII code 10) characters.
表示されているコールチップを消去します。Scintilla は編集中の関数における引数項目群と互換性のないキーボードによる指示を使ったときもコールチップを消去します。
SCI_CALLTIPCANCEL
This message cancels any displayed call tip. Scintilla will also cancel call tips for you if
you use any keyboard commands that are not compatible with editing the argument list of a
function.
コールチップが活性化されているならば 1 、そうでなければ 0 を返します。
SCI_CALLTIPACTIVE
This returns 1 if a call tip is active and 0 if it is not active.
SCI_CALLTIPSHOW
がコールチップを表示し始めたときにその現在位置をこのメッセージが返します。
SCI_CALLTIPPOSSTART
This message returns the value of the current position when SCI_CALLTIPSHOW
started to display the tip.
強調装飾で表示するコールチップ文字列の範囲を指定します。hlStart
は 0 基準の強調開始文字位置、hlEnd
は次に強調されない文字の最初の位置となります。hlEnd
は hlStart
よりも大きくなくてはなりません。hlEnd-hlStart
は強調する文字数となります。指定により行末より後ろも強調することもできます。
SCI_CALLTIPSETHLT(int hlStart, int hlEnd)
This sets the region of the call tips text to display in a highlighted style.
hlStart
is the zero-based index into the string of the first character to
highlight and hlEnd
is the index of the first character after the highlight.
hlEnd
must be greater than hlStart
; hlEnd-hlStart
is the
number of characters to highlight. Highlights can extend over line ends if this is
required.
強調されていない文字は「中くらいの灰色」で描画されます。選択された文字列は暗い黒が使われます。背景色は白です。これらは SCI_CALLTIPSETBACK
,
SCI_CALLTIPSETFORE
,
SCI_CALLTIPSETFOREHLT
で変更できます。
Unhighlighted text is drawn in a mid gray. Selected text is drawn in a dark blue. The
background is white. These can be changed with
SCI_CALLTIPSETBACK
,
SCI_CALLTIPSETFORE
, and
SCI_CALLTIPSETFOREHLT
.
コールチップの背景色を設定します。初期状態では白です。選択されていない文字が灰色に、選択された文字が暗い青になっているという事情から、暗い色を背景色にするのはよくありません。
SCI_CALLTIPSETBACK(int colour)
The background colour of call tips can be set with this message; the default colour is white.
It is not a good idea to set a dark colour as the background as the unselected text is drawn in
mid gray and the selected text in a dark blue.
コールチップ文字列の色を指定します。初期状態では暗い青です。
SCI_CALLTIPSETFORE(int colour)
The colour of call tip text can be set with this message; the default colour is mid gray.
コールチップで強調されている文字列の色を設定します。初期状態では暗い青です。
SCI_CALLTIPSETFOREHLT(int colour)
The colour of highlighted call tip text can be set with this message; the default colour is dark blue.
Scintilla のコンテナとなるアプリケーションが、ユーザのキー入力ですべての機能を使えるようにするという目的でキーボードによる行動はすべてメッセージにされます。これらは媒介変数をとりません。これらの指示はメッセージ
によるキー割り当ての再定義でも用いられます。To allow the container application to perform any of the actions available to the user with keyboard, all the keyboard actions are messages. They do not take any parameters. These commands are also used when redefining the key bindings with the
message.SCI_LINEDOWN |
SCI_LINEDOWNEXTEND |
SCI_LINEDOWNRECTEXTEND |
SCI_LINESCROLLDOWN |
SCI_LINEUP |
SCI_LINEUPEXTEND |
SCI_LINEUPRECTEXTEND |
SCI_LINESCROLLUP |
SCI_PARADOWN |
SCI_PARADOWNEXTEND |
SCI_PARAUP |
SCI_PARAUPEXTEND |
SCI_CHARLEFT |
SCI_CHARLEFTEXTEND |
SCI_CHARLEFTRECTEXTEND |
|
SCI_CHARRIGHT |
SCI_CHARRIGHTEXTEND |
SCI_CHARRIGHTRECTEXTEND |
|
SCI_WORDLEFT |
SCI_WORDLEFTEXTEND |
SCI_WORDRIGHT |
SCI_WORDRIGHTEXTEND |
SCI_WORDLEFTEND |
SCI_WORDLEFTENDEXTEND |
SCI_WORDRIGHTEND |
SCI_WORDRIGHTENDEXTEND |
SCI_WORDPARTLEFT |
SCI_WORDPARTLEFTEXTEND |
SCI_WORDPARTRIGHT |
SCI_WORDPARTRIGHTEXTEND |
SCI_HOME |
SCI_HOMEEXTEND |
[SCI_HOMERECTEXTEND] |
|
SCI_HOMEDISPLAY |
SCI_HOMEDISPLAYEXTEND |
SCI_HOMEWRAP |
SCI_HOMEWRAPEXTEND |
SCI_VCHOME |
SCI_VCHOMEEXTEND |
SCI_VCHOMERECTEXTEND |
|
SCI_VCHOMEWRAP |
SCI_VCHOMEWRAPEXTEND |
||
SCI_LINEEND |
SCI_LINEENDEXTEND |
SCI_LINEENDRECTEXTEND |
|
SCI_LINEENDDISPLAY |
SCI_LINEENDDISPLAYEXTEND |
SCI_LINEENDWRAP |
SCI_LINEENDWRAPEXTEND |
SCI_DOCUMENTSTART |
SCI_DOCUMENTSTARTEXTEND |
SCI_DOCUMENTEND |
SCI_DOCUMENTENDEXTEND |
SCI_PAGEUP |
SCI_PAGEUPEXTEND |
SCI_PAGEUPRECTEXTEND |
|
SCI_PAGEDOWN |
SCI_PAGEDOWNEXTEND |
SCI_PAGEDOWNRECTEXTEND |
|
SCI_STUTTEREDPAGEUP |
SCI_STUTTEREDPAGEUPEXTEND |
||
SCI_STUTTEREDPAGEDOWN |
SCI_STUTTEREDPAGEDOWNEXTEND |
||
SCI_DELETEBACK |
SCI_DELETEBACKNOTLINE |
SCI_DELWORDLEFT |
SCI_DELWORDRIGHT |
SCI_DELLINELEFT |
SCI_DELLINERIGHT |
SCI_LINEDELETE |
|
SCI_LINECUT |
SCI_LINECOPY |
SCI_LINETRANSPOSE |
SCI_LINEDUPLICATE |
SCI_LOWERCASE |
SCI_UPPERCASE |
SCI_CANCEL |
SCI_EDITTOGGLEOVERTYPE |
SCI_NEWLINE |
SCI_FORMFEED |
SCI_TAB |
SCI_BACKTAB |
SCI_*EXTEND
は選択範囲を拡げます。
The SCI_*EXTEND
messages extend the selection.
SCI_*RECTEXTEND
は矩形選択を拡げ、通常の選択範囲があればこれを矩形選択に変換します。
The SCI_*RECTEXTEND
messages extend the rectangular selection
(and convert regular selection to rectangular one, if any).
SCI_WORDPART*
は単語要素間の移動に使われます。大文字毎 (aCamelCaseIdentifier) か 下線毎 (an_under_bar_ident) に印づけられた位置を移動します。
The SCI_WORDPART*
commands are used to move between word segments marked by
capitalisation (aCamelCaseIdentifier) or underscores (an_under_bar_ident).
SCI_HOME*
は行頭にキャレットを移動します。SCI_VCHOME*
が行内の最初の非空白文字種に(つまり字下げの直後に)移動するのに対して、いきなり行頭へ移動します。SCI_VCHOME*
のときでも、すでに字下げ直後に移動している場合は SCI_HOME*
と同じ動作になります。
The SCI_HOME*
commands move the caret to the start of the line, while the
SCI_VCHOME*
commands move the caret to the first non-blank character of the line
(ie. just after the indentation) unless it is already there; in this case, it acts as SCI_HOME*.
SCI_[HOME|LINEEND]
は行頭または行末に移動します。これに対し、行クリップを有効にしているときに SCI_[HOME|LINEEND]DISPLAY*
を実行すると表示行単位での行頭または行末に移動します。
The SCI_[HOME|LINEEND]DISPLAY*
commands are used when in line wrap mode to
allow movement to the start or end of display lines as opposed to the normal
SCI_[HOME|LINEEND]
commands which move to the start or end of document lines.
SCI_[[VC]HOME|LINEEND]WRAP*
と SCI_[[VC]HOME|LINEEND]*
は行クリップが有効なときに異なる動作をします。SCI_[HOME|LINEEND]DISPLAY*
同様に いずれも最初は表示行単位での行頭もしくは行末に移動します。すでにその位置にあるときは、SCI_[[VC]HOME|LINEEND]*
だけが論理行の先頭に移動します。
The SCI_[[VC]HOME|LINEEND]WRAP*
commands are like their namesakes
SCI_[[VC]HOME|LINEEND]*
except they behave differently when word-wrap is enabled:
They go first to the start / end of the display line, like SCI_[HOME|LINEEND]DISPLAY*
,
but if the cursor is already at the point, it goes on to the start or end of the document line,
as appropriate for SCI_[[VC]HOME|LINEEND]*
.
Scintilla のソースファイル KeyMap.cxx
の中で定数 KeyMap::MapDefault[]
がキー入力による指示の初期設定を定義しています。この表はキーを、媒介変数のない SCI_*
メッセージ群に対応づけています。大部分は前掲の キーボードによる指示 がこれに当たるのですが媒介変数のない Scintilla の指示であれば何でも割り当てができます。自分の好みに合うようにキー割り当てを変更することができます。
There is a default binding of keys to commands that is defined in the Scintilla source in
the file KeyMap.cxx
by the constant KeyMap::MapDefault[]
. This table
maps key definitions to SCI_*
messages with no parameters (mostly the keyboard commands discussed above, but any Scintilla
command that has no arguments can be mapped). You can change the mapping to suit your own
requirements.
SCI_ASSIGNCMDKEY(int keyDefinition, int
sciCommand)
SCI_CLEARCMDKEY(int keyDefinition)
SCI_CLEARALLCMDKEYS
SCI_NULL
キー定義は下位 16 ビットのキーコード、上位 16 ビットの修飾キーからなっています。キーコード
と 修飾キー
は次のようにして結合します。
キー定義 = キーコード + (修飾キー << 16)
keyDefinition
A key definition contains the key code in the low 16-bits and the key modifiers in the high
16-bits. To combine keyCode
and keyMod
set:
keyDefinition = keyCode + (keyMod << 16)
キーコードは可視であるか制御文字であるか、あるいは SCK_*
に列挙されているものです。列挙されているものには次のものがあります。
SCK_ADD
, SCK_BACK
, SCK_DELETE
, SCK_DIVIDE
,
SCK_DOWN
, SCK_END
, SCK_ESCAPE
, SCK_HOME
,
SCK_INSERT
, SCK_LEFT
, SCK_NEXT
(Page Down),
SCK_PRIOR
(Page Up), SCK_RETURN
, SCK_RIGHT
,
SCK_SUBTRACT
, SCK_TAB
, SCK_UP
.
The key code is a visible or control character or a key from the SCK_*
enumeration, which contains:
SCK_ADD
, SCK_BACK
, SCK_DELETE
, SCK_DIVIDE
,
SCK_DOWN
, SCK_END
, SCK_ESCAPE
, SCK_HOME
,
SCK_INSERT
, SCK_LEFT
, SCK_NEXT
(Page Down),
SCK_PRIOR
(Page Up), SCK_RETURN
, SCK_RIGHT
,
SCK_SUBTRACT
, SCK_TAB
, and SCK_UP
.
修飾キーは 0 と SCMOD_ALT
,
SCMOD_CTRL
, SCMOD_SHIFT
の結合で表します。表を作るときには修飾キーのないことを意味する SCMOD_NORM
を使うこともできます。
The modifiers are a combination of zero or more of SCMOD_ALT
,
SCMOD_CTRL
, and SCMOD_SHIFT
. If you are building a table, you might
want to use SCMOD_NORM
, which has the value 0, to mean no modifiers.
指定したキーの定義を Scintilla への指示 sciCommand
と結びつけます。sciCommand
には引数のない任意の SCI_*
指示を指定することができます。
SCI_ASSIGNCMDKEY(int keyDefinition, int sciCommand)
This assigns the given key definition to a Scintilla command identified by
sciCommand
. sciCommand
can be any SCI_*
command that has
no arguments.
キーの定義に何もしないことを意味する SCI_NULL
を割り当てます。
SCI_CLEARCMDKEY(int keyDefinition)
This makes the given key definition do nothing by assigning the action SCI_NULL
to it.
すべてのキー割り当てを改称します。空の割り当て表が使われます。
SCI_CLEARALLCMDKEYS
This command removes all keyboard command mapping by setting an empty mapping table.
SCI_NULL
は何もしないことを意味する値で、キー定義に割り当てる目的でこの値があります。
SCI_NULL
The SCI_NULL
does nothing and is the value assigned to keys that perform no
action.
マウスの誤ったボタンをクリックすると小さな初期状態の編集メニューが出てきます。これを抑制するには SCI_USEPOPUP(0)
を実行します。抑制されている場合は Scintilla がコンテキストメニュー指示 (Windows では WM_CONTEXTMENU
) を扱わないようになります。この結果 Scintilla の親ウィンドウはメッセージを扱う機会を得ることができます。
SCI_USEPOPUP(bool bEnablePopup)
Clicking the wrong button on the mouse pops up a short default editing menu. This may be
turned off with SCI_USEPOPUP(0)
. If you turn it off, context menu commands (in
Windows, WM_CONTEXTMENU
) will not be handled by Scintilla, so the parent of the
Scintilla window will have the opportunity to handle the message.
ここではマクロ記録の開始と停止についてを記述します。マクロ記録モードでは、行動がコンテナに通知 を通して報告されます。将来再現するためにこれらの行動を記録するのはコンテナまで関わってきます。
Start and stop macro recording mode. In macro recording mode, actions are reported to the
container through
notifications. It is then up to the container to
record these actions for future replay.
マクロ記録の開始または停止を行います。
SCI_STARTRECORD
SCI_STOPRECORD
These two messages turn macro recording on and off.
Windows では SCI_FORMATRANGE
を使って表示コンテキスト上に文字を描画することができます。これにはプリンタ表示コンテキストも含まれます。印刷出力には文字列の装飾が画面同様になされますが、行番号以外の余白、特殊マーカ効果、選択範囲、キャレットは印刷されません。
On Windows SCI_FORMATRANGE
can be used to draw the text onto a display context
which can include a printer display context. Printed output shows text styling as on the
screen, but it hides all margins except a line number margin. All special marker effects are
removed and the selection and caret are hidden.
SCI_FORMATRANGE(bool bDraw, RangeToFormat
*pfr)
SCI_SETPRINTMAGNIFICATION(int
magnification)
SCI_GETPRINTMAGNIFICATION
SCI_SETPRINTCOLOURMODE(int mode)
SCI_GETPRINTCOLOURMODE
SCI_SETPRINTWRAPMODE
SCI_GETPRINTWRAPMODE
Windows で、指定範囲の文字列をデバイスコンテキストにレンダリングします。これを印刷に用いた場合、ページのヘッダやフッタも欲しいところですが、Scintilla は特に何もしません。SciTEWinDlg.cxx
の SciTEWin::Print()
のコードを例として参照してください。これらのメッセージはそれぞれテキストを矩形範囲にレンダリングし、文書内で次に印刷を始める位置を返します。
SCI_FORMATRANGE(bool bDraw, RangeToFormat *pfr)
This call allows Windows users to render a range of text into a device context. If you use
this for printing, you will probably want to arrange a page header and footer; Scintilla does
not do this for you. See SciTEWin::Print()
in SciTEWinDlg.cxx
for an
example. Each use of this message renders a range of text into a rectangular area and returns
the position in the document of the next character to print.
bDraw
は出力が実行されたかどうかを制御します。丁づけする場合は false にしてください。たとえば MFC でつかうなら各頁を出力する前に OnBeginPrinting()
の中で丁づけする必要があるでしょう。
bDraw
controls if any output is done. Set this to false if you are paginating
(for example, if you use this with MFC you will need to paginate in
OnBeginPrinting()
before you output each page.
struct RangeToFormat { SurfaceID hdc; // 印刷の対象となる HDC (デバイスコンテキスト) SurfaceID hdcTarget; // 計測に使う HDC (hdc と同じでよい) PRectangle rc; // 印刷範囲を示す矩形 PRectangle rcPage; // 物理的なページの大きさ CharacterRange chrg; // 印刷する文字の範囲 };
struct RangeToFormat { SurfaceID hdc; // The HDC (device context) we print to SurfaceID hdcTarget; // The HDC we use for measuring (may be same as hdc) PRectangle rc; // Rectangle in which to print PRectangle rcPage; // Physically printable page size CharacterRange chrg; // Range of characters to print };
hdc
と hdcTarget
は両方とも出力デバイス(通常はプリンタ)のデバイスコンテキストハンドルです。Windows メタファイル(拡張メタファイルではないようなもの)とは異なるメタファイルに印刷するときは、返値の情報にすべての API を実装しないでください。この場合、hdcTarget
には画面のデバイスコンテキストを設定します。rcPage
は {0, 0, maxX, maxY}
の形で指定する矩形です。maxX+1
と maxY+1
は物理的な印刷可能ピクセル数の横方向と縦方向の値です。rc
はテキストをレンダリングする範囲です。当然ながら rcPage の内側に収まるように指定します。chrg.cpMin
とchrg.cpMax
は出力する文字の開始位置と最大位置を指定します。
hdc
and hdcTarget
should both be set to the device context handle
of the output device (usually a printer). If you print to a metafile these will not be the same
as Windows metafiles (unlike extended metafiles) do not implement the full API for returning
information. In this case, set hdcTarget
to the screen DC.
rcPage
is the rectangle {0, 0, maxX, maxY}
where maxX+1
and maxY+1
are the number of physically printable pixels in x and y.
rc
is the rectangle to render the text in (which will, of course, fit within the
rectangle defined by rcPage).
chrg.cpMin
and chrg.cpMax
define the start position and maximum
position of characters to output.
印刷に当たってもっとも面倒なのは、ヘッダとフッタの印刷や印刷不可区域を考えた上の余白をどうすればいいかいうことです。SciTE の印刷に関するコードでは、その大部分をこの構造体によって定めています。余白、印刷不可区域、ヘッダ、フッタを切り落としてしまえば Scintilla のテキストレンダリングループはとても単純です。
When printing, the most tedious part is always working out what the margins should be to allow for the non-printable area of the paper and printing a header and footer. If you look at the printing code in SciTE, you will find that most of it is taken up with this. The loop that causes Scintilla to render text is quite simple if you strip out all the margin, non-printable area, header and footer code.
画面のフォントとは異なる大きさで印刷するには SCI_GETPRINTMAGNIFICATION
を用います。magnification
は画面上での大きさに加算される値でポイント単位です。-3 や -4 は小さく印刷するの便利です。この値は SCI_GETPRINTMAGNIFICATION
で取得できます。
SCI_SETPRINTMAGNIFICATION(int magnification)
SCI_GETPRINTMAGNIFICATION
SCI_GETPRINTMAGNIFICATION
lets you to print at a different size than the screen
font. magnification
is the number of points to add to the size of each screen
font. A value of -3 or -4 gives reasonably small print. You can get this value with
SCI_GETPRINTMAGNIFICATION
.
通常白紙を使うプリンタで色が付いたテキストをレンダリングする手法を設定あるいは取得します。画面上では暗い色あるいは黒の背景色を使っている場合には色の扱いの考慮はとても重要なこととなります。黒字に白という印刷は他の方法よりもトナーとインクを速く使い切ってしまいます。以下のうちから一つ、モードを設定できます。
SCI_SETPRINTCOLOURMODE(int mode)
SCI_GETPRINTCOLOURMODE
These two messages set and get the method used to render coloured text on a printer that is
probably using white paper. It is especially important to consider the treatment of colour if
you use a dark or black screen background. Printing white on black uses up toner and ink very
many times faster than the other way around. You can set the mode to one of:
定数名 | 値 | 目的 |
---|---|---|
SC_PRINT_NORMAL |
0 | 現在の画面の色をそのまま印刷します。これが初期状態です。 |
SC_PRINT_INVERTLIGHT |
1 | 暗い背景色の場合は、明度を反転して白地に印刷することでインクを節約します。 |
SC_PRINT_BLACKONWHITE |
2 | すべての文字を白地に黒文字で印刷します。 |
SC_PRINT_COLOURONWHITE |
3 | 白地に画面通りの色で印刷します。 |
SC_PRINT_COLOURONWHITEDEFAULTBG |
4 | 白地に画面通りの色で印刷しますが、行番号だけは自分自身の背景色を使います。 |
Symbol | Value | Purpose |
---|---|---|
SC_PRINT_NORMAL |
0 | Print using the current screen colours. This is the default. |
SC_PRINT_INVERTLIGHT |
1 | If you use a dark screen background this saves ink by inverting the light value of all colours and printing on a white background. |
SC_PRINT_BLACKONWHITE |
2 | Print all text as black on a white background. |
SC_PRINT_COLOURONWHITE |
3 | Everything prints in its own colour on a white background. |
SC_PRINT_COLOURONWHITEDEFAULTBG |
4 | Everything prints in its own colour on a white background except that line numbers use their own background colour. |
プリンタの行クリップモードを設定または取得します。wrapMode
は SC_WRAP_NONE
(0) と SC_WRAP_WORD
(1) のいずれかです。初期設定では SC_WRAP_WORD
になっており、これは行クリップを行うのですべての文字が印刷範囲の矩形に収まります。SC_WRAP_NONE
を指定すると、文書の各行が一行として出力されますので、印刷範囲からはみ出るような長い行は切り捨てられてしまいます。
SC_WRAP_CHAR (2) は SC_WRAP_WORD と異なり行クリップのために空白文字列を検索せず、必要な場所で文字を問わずに折り返すようになります。日本語のように空白文字類を原則的に利用しない自然言語を使うときのために訳者が実装したものです。
SCI_SETPRINTWRAPMODE(int wrapMode)
SCI_GETPRINTWRAPMODE
These two functions get and set the printer wrap mode. wrapMode
can be
set to SC_WRAP_NONE
(0) or SC_WRAP_WORD
(1). The default is
SC_WRAP_WORD
, which wraps printed output so that all characters fit
into the print rectangle. If you set SC_WRAP_NONE
, each line of text
generates one line of output and the line is truncated if it is too long to fit
into the print area.
SCI_GETDIRECTFUNCTION
SCI_GETDIRECTPOINTER
Windows では、Scintilla とそのコンテナとの間のメッセージ受け渡し手順は OS の SendMessage
関数によって実装されており、集中的に呼び出したときには処理速度が落ちてしまいます。このオーバヘッドを避けるため、Scintilla はそのメッセージ関数を直接呼び出すメッセージを提供しています。C/C++ ではこれを次の形で行います。
On Windows, the message-passing scheme used to communicate between the container and
Scintilla is mediated by the operating system SendMessage
function and can lead to
bad performance when calling intensively. To avoid this overhead, Scintilla provides messages
that allow you to call the Scintilla message function directly. The code to do this in C/C++ is
of the form:
#include "Scintilla.h" SciFnDirect pSciMsg = (SciFnDirect)SendMessage(hSciWnd, SCI_GETDIRECTFUNCTION, 0, 0); sptr_t pSciWndData = (sptr_t)SendMessage(hSciWnd, SCI_GETDIRECTPOINTER, 0, 0); // now a wrapper to call Scintilla directly sptr_t CallScintilla(unsigned int iMessage, uptr_t wParam, sptr_t lParam){ return pSciMsg(pSciWndData, iMessage, wParam, lParam); }
SciFnDirect
, sptr_t
, uptr_t
は Scintilla.h
で宣言されています。hSciWnd
は Scintilla ウィンドウを作ったときに返されているウィンドウハンドルです。
SciFnDirect
, sptr_t
and uptr_t
are declared in
Scintilla.h
. hSciWnd
is the window handle returned when you created
the Scintilla window.
この直接呼び出しは高速ですが、Scintilla ウィンドウがあるものとは異なるスレッドから呼び出すと問題を起こします。SendMessage(hSciWnd, SCI_*,
wParam, lParam)
はウィンドウのスレッドと同期を取らなくてはならないからです。
While faster, this direct calling will cause problems if performed from a different thread
to the native thread of the Scintilla window in which case SendMessage(hSciWnd, SCI_*,
wParam, lParam)
should be used to synchronize with the window's thread.
この機能は GTK+ でも動作しますが、明示的な高速化には繋がりません。
This feature also works on GTK+ but has no significant impact on speed.
版 1.47 以降、Windows においては Scintilla が Scintilla_DirectFunction
関数をエクスポートしています。これは SCI_GETDIRECTFUNCTION
の戻り値と同じように使うことができます。これを使うと SCI_GETDIRECTFUNCTION
の呼び出しを省略し、関数ポインタを介して Scintilla を直接呼び出す必要がなくなります。
From version 1.47 on Windows, Scintilla exports a function called
Scintilla_DirectFunction
that can be used the same as the function returned by
SCI_GETDIRECTFUNCTION
. This saves you the call to
SCI_GETDIRECTFUNCTION
and the need to call Scintilla indirectly via the function
pointer.
Scintilla のメッセージを扱う関数へのポインタのアドレスを返します。このポインタを使って Windows のメッセージ系を通すことによるオーバヘッドを回避することができます。Scintilla のウィンドウがいくつあっても、この関数を呼び出すのは一度で構いません。
SCI_GETDIRECTFUNCTION
This message returns the address of the function to call to handle Scintilla messages without
the overhead of passing through the Windows messaging system. You need only call this once,
regardless of the number of Scintilla windows you create.
Scintilla ウィンドウが使用中のデータへのポインタを返します。これは Scintilla ウィンドウを作る毎に一度呼び出す必要があります。直接関数を呼び出すときは、対象ウィンドウに関係づけられた直接ポインタを渡さなくてはなりません。
SCI_GETDIRECTPOINTER
This returns a pointer to data that identifies which Scintilla window is in use. You must call
this once for each Scintilla window you create. When you call the direct function, you must
pass in the direct pointer associated with the target window.
Scintilla のウィンドウとその中に表示する文書とは別々の実体になっています。新しいウィンドウを作る時、同じように新しい空の文書も作ります。文書はそれぞれ初期値が 1 の参照値を持っています。文書は Scintilla ウィンドウの一覧をも持っていて、それで Scintilla ウィンドウに接続しています。ですから、あるウィンドウの中で文書が変更されたら文書から接続されている他のウィンドウは更新を求める通知を受け取ります。このような形になっているため、単一の Scintilla ウィンドウで多くの文書を扱うこともできますし、単一の文書をスプリッタを用いた複数のウィンドウで表示することもできます。
A Scintilla window and the document that it displays are separate entities. When you create a new window, you also create a new, empty document. Each document has a reference count that is initially set to 1. The document also has a list of the Scintilla windows that are linked to it so when any window changes the document, all other windows in which it appears are notified to cause them to update. The system is arranged in this way so that you can work with many documents in a single Scintilla window and so you can display a single document in multiple windows (for use with splitter windows).
これらのメッセージは将来の Scintilla との互換性のために document *pDoc
を用いますが、pDoc
は不透明な void*
として扱わなくてはなりません。本節に説明するポインタとして利用あるいは格納することができますが、参照を解除することはできません。
Although these messages use document *pDoc
, to ensure compatibility with future
releases of Scintilla you should treat pDoc
as an opaque void*
. That
is, you can use and store the pointer as described in this section but you should not
dereference it.
SCI_GETDOCPOINTER
SCI_SETDOCPOINTER(<unused>, document
*pDoc)
SCI_CREATEDOCUMENT
SCI_ADDREFDOCUMENT(<unused>, document
*pDoc)
SCI_RELEASEDOCUMENT(<unused>, document
*pDoc)
ウィンドウに現在使われている文書へのポインタを返します。他には何もしません。
SCI_GETDOCPOINTER
This returns a pointer to the document currently in use by the window. It has no other
effect.
次のことを行います。
pDoc
を先ほど除かれたウィンドウの新しい文書として設定します。pDoc
が 0 のときは新しい空の文書が作成され、同様にそのウィンドウに接続されます。SCI_SETDOCPOINTER(<unused>, document *pDoc)
This message does the following:
1. It removes the current window from the list held by the current document.
2. It reduces the reference count of the current document by 1.
3. If the reference count reaches 0, the document is deleted.
4. pDoc
is set as the new document for the window.
5. If pDoc
was 0, a new, empty document is created and attached to the
window.
新しい空の文書を作成し、それへのポインタを返します。この文書はエディタに選択されておらず、一方で参照数は 1 になっています。ですから、文書の所有権はポインタを返されたコードにあります。SCI_SETDOCPOINTER
を使った後に参照数をひとつ減らして Scitilla ウィンドウに文書を所有させるか、アプリケーション終了前に SCI_RELEASEDOCUMENT
で参照数をひとつ減らすかしてメモリーリークを避ける必要があります。
SCI_CREATEDOCUMENT
This message creates a new, empty document and returns a pointer to it. This document is not
selected into the editor and starts with a reference count of 1. This means that you have
ownership of it and must either reduce its reference count by 1 after using
SCI_SETDOCPOINTER
so that the Scintilla window owns it or you must make sure that
you reduce the reference count by 1 with SCI_RELEASEDOCUMENT
before you close the
application to avoid memory leaks.
文書の参照数をひとつ増やします。Scintilla ウィンドウの現在注目中の文書を交換し、またその所有権を持ちたい場合は次の手順を踏みます。一つのウィンドウで多数の文書を編集する場合がこれにあたります。
SCI_GETDOCPOINTER
を用いて文書へのポインタを取得します。SCI_ADDREFDOCUMENT(0, pDoc)
というコードで参照数を増やします。SCI_SETDOCPOINTER(0, pNewDoc)
というコードで別の文書を割り当てます。新しく割り当てる文書へのポインタ pNewDoc
が 0 であったときは、新しい空の文書が割り当てられます。SCI_ADDREFDOCUMENT(<unused>, document *pDoc)
This increases the reference count of a document by 1. If you want to replace the current
document in the Scintilla window and take ownership of the current document, for example if you
are editing many documents in one window, do the following:
1. Use SCI_GETDOCPOINTER
to get a pointer to the document,
pDoc
.
2. Use SCI_ADDREFDOCUMENT(0, pDoc)
to increment the reference count.
3. Use SCI_SETDOCPOINTER(0, pNewDoc)
to set a different document or
SCI_SETDOCPOINTER(0, 0)
to set a new, empty document.
pDoc
で示された文書の参照数をひとつ減らします。pDoc は SCI_GETDOCPOINTER
や SCI_CREATEDOCUMENT
の戻り値でなくてはなりません。また、すでに実在する文書へのポインタでなくてはなりません。Scintilla ウィンドウに接続されたままの参照数 1 の文書に対して呼び出されると不整合が発生します。ちきうがへいわにまわっていられるように、SCI_RELEASEDOCUMENT
と SCI_CREATEDOCUMENT
+ SCI_ADDREFDOCUMENT
の回数を合わせることを忘れないでください。
SCI_RELEASEDOCUMENT(<unused>, document *pDoc)
This message reduces the reference count of the document identified by pDoc
. pDoc
must be the result of SCI_GETDOCPOINTER
or SCI_CREATEDOCUMENT
and
must point at a document that still exists. If you call this on a document with a reference
count of 1 that is still attached to a Scintilla window, bad things will happen. To keep the
world spinning in its orbit you must balance each call to SCI_CREATEDOCUMENT
or
SCI_ADDREFDOCUMENT
with a call to SCI_RELEASEDOCUMENT
.
折りたたみの基本的な動作は、行の可視化と不可視化です。行を見ることができるかどうかは文書ではなく可視部の特性ですので、可視部の各々は異なる行を表示することができます。ユーザから見ると、折りたたみ点で行が隠されたり表示されたりしています。一般的に折りたたみ点は、文書の階層構造を元に設定されます。Python では階層が字下げによって定められますし、C++ では波括弧文字で定められます。文書オブジェクトの各行に“折りたたみ階層数”を接続することで、この階層構造が表現されます。折りたたみ階層数の大部分は解析器によって設定されますが、メッセージによって設定することも可能です。
The fundamental operation in folding is making lines invisible or visible. Line visibility is a property of the view rather than the document so each view may be displaying a different set of lines. From the point of view of the user, lines are hidden and displayed using fold points. Generally, the fold points of a document are based on the hierarchical structure of the document contents. In Python, the hierarchy is determined by indentation and in C++ by brace characters. This hierarchy can be represented within a Scintilla document object by attaching a numeric "fold level" to each line. The fold level is most easily set by a lexer, but you can also set it with messages.
ユーザの行動と折りたたみの実行・解除との対応付けは Scintilla を扱う側のコードが責任を持ちます。一番よい方法は、 SciTE のソースコードで本節のメッセージが使われているところを探してそこを見てください。マーカと折りたたみ余白も、実装の完成に必要となります。折りたたみを有効にするには SCI_SETPROPERTY("fold", "1")
というコードで "fold"
特性を "1"
にしなくてはなりません。
It is up to your code to set the connection between user actions and folding and unfolding.
The best way to see how this is done is to search the SciTE source code for the messages used
in this section of the documentation and see how they are used. You will also need to use
markers and a folding margin to complete your folding implementation.
The "fold"
property should be set to "1"
with
SCI_SETPROPERTY("fold", "1")
to enable folding.
SCI_VISIBLEFROMDOCLINE(int
docLine)
SCI_DOCLINEFROMVISIBLE(int
displayLine)
SCI_SHOWLINES(int lineStart, int lineEnd)
SCI_HIDELINES(int lineStart, int lineEnd)
SCI_GETLINEVISIBLE(int line)
SCI_SETFOLDLEVEL(int line, int level)
SCI_GETFOLDLEVEL(int line)
SCI_SETFOLDFLAGS(int flags)
SCI_GETLASTCHILD(int line, int level)
SCI_GETFOLDPARENT(int line)
SCI_SETFOLDEXPANDED(int line, bool
expanded)
SCI_GETFOLDEXPANDED(int line)
SCI_TOGGLEFOLD(int line)
SCI_ENSUREVISIBLE(int line)
SCI_ENSUREVISIBLEENFORCEPOLICY(int
line)
いくつかの行が折りたたまれているとき、以後の行は文書上の行位置とは違うところに表示されます。折りたたまれている行がないとき、このメッセージは docLine
を返します。そうでない場合、このメッセージは隠されていない行数を返します。折りたたまれて不可視になっている行が指定された場合、それより文書開始方向にある最初の可視行の番号を返します。可視行のうち、文書内で先頭の行の番号が 0 となります。docLine
がもとの文書の行数範囲の外を指示していた場合は -1 を返します。行クリップが有効な場合はひとつの行が表示上の複数行になっていることがあります。
SCI_VISIBLEFROMDOCLINE(int docLine)
When some lines are folded, then a particular line in the document may be displayed at a
different position to its document position. If no lines are folded, this message returns
docLine
. Otherwise, this returns the display line (counting the very first visible
line as 0). The display line of an invisible line is the same as the previous visible line. The
display line number of the first line in the document is 0. If there is folding and
docLine
is outside the range of lines in the document, the return value is -1.
Lines can occupy more than one display line if they wrap.
隠されている行がある場合、以後の行は文書上の行位置とは違うところに表示されます。このメッセージは表示されている行の番号から実際の文書上の行番号を求めて返します。displayLine
が 0 以下の時は 0 を返します。可視行数以上の値が指定されたときは、文書の実際の行数を返します。
SCI_DOCLINEFROMVISIBLE(int displayLine)
When some lines are hidden, then a particular line in the document may be displayed at a
different position to its document position. This message returns the document line number that
corresponds to a display line (counting the display line of the first line in the document as
0). If displayLine
is less than or equal to 0, the result is 0. If
displayLine
is greater than or equal to the number of displayed lines, the result
is the number of lines in the document.
最初の二つは指定範囲の行を可視化もしくは不可視化するものです。画面の再描画も行います。三つ目のメッセージは指定行の表示状態を返すもので、可視であれば 1 、不可視であれば 0 を返します。これらのメッセージは折りたたみ階層数や折りたたみフラグに影響を与えません。
SCI_SHOWLINES(int lineStart, int lineEnd)
SCI_HIDELINES(int lineStart, int lineEnd)
SCI_GETLINEVISIBLE(int line)
The first two messages mark a range of lines as visible or invisible and then redraw the
display. The third message reports on the visible state of a line and returns 1 if it is
visible and 0 if it is not visible. These messages have no effect on fold levels or fold
flags.
指定行の折りたたみ階層数や関連フラグを含む 32 ビット値を設定または取得します。折りたたみ階層数は 0 〜 SC_FOLDLEVELNUMBERMASK
(4095) の値を取りますが、初期状態では SC_FOLDLEVELBASE
(1024) が上限となっています。追加のフラグが 2 ビットあります。SC_FOLDLEVELWHITEFLAG
は空行であって少し異なる扱いにすることを示します。この結果、空行には文字がないにもかかわらず階層数が示されていることになります。たとえば、空行は通常折りたたみ点にすべきではありません。SC_FOLDLEVELHEADERFLAG
は折りたたみ点を示すヘッダとなります。
SCI_SETFOLDLEVEL(int line, int level)
SCI_GETFOLDLEVEL(int line)
These two messages set and get a 32-bit value that contains the fold level of a line and some
flags associated with folding. The fold level is a number in the range 0 to
SC_FOLDLEVELNUMBERMASK
(4095). However, the initial fold level is set to
SC_FOLDLEVELBASE
(1024) to allow unsigned arithmetic on folding levels. There are
two addition flag bits. SC_FOLDLEVELWHITEFLAG
indicates that the line is blank and
allows it to be treated slightly different then its level may indicate. For example, blank
lines should generally not be fold points. SC_FOLDLEVELHEADERFLAG
indicates that
the line is a header (fold point).
SCI_GETFOLDLEVEL(line) & SC_FOLDLEVELNUMBERMASK
というコードで指定行の折りたたみ階層数を取得できます。同様に SCI_GETFOLDLEVEL(line) & SC_FOLDLEVEL*FLAG
でフラグを取得できます。折りたたみ階層を設定するときは関連フラグも一度に設定しなくてはなりません。階層数 thisLevel
と折りたたみ点であることを示すフラグを設定するときは SCI_SETFOLDLEVEL(line, thisLevel | SC_FOLDLEVELHEADERFLAG)
といったコードになります。
Use SCI_GETFOLDLEVEL(line) & SC_FOLDLEVELNUMBERMASK
to get the fold level
of a line. Likewise, use SCI_GETFOLDLEVEL(line) & SC_FOLDLEVEL*FLAG
to get the
state of the flags. To set the fold level you must or in the associated flags. For instance, to
set the level to thisLevel
and mark a line as being a fold point use:
SCI_SETFOLDLEVEL(line, thisLevel | SC_FOLDLEVELHEADERFLAG)
.
解析器を使っているときは SCI_SETFOLDLEVEL
を使う必要がないようにすべきです。解析器に任せたほうがずっといい処理をすると思われるからです。ユーザの折りたたみ要求を決めるために SCI_GETFOLDLEVEL
を使う必要があります。折りたたみ階層数を変更したら、折りたたみ余白もその変更に合わせて更新されます。
If you use a lexer, you should not need to use SCI_SETFOLDLEVEL
as this is far
better handled by the lexer. You will need to use SCI_GETFOLDLEVEL
to decide how
to handle user folding requests. If you do change the fold levels, the folding margin will
update to match your changes.
折りたたみ余白のマーカ表示に加えて、テキスト区画に線を引くことで折りたたみを表現することができます。この線は flags
に設定されたビットでどこに折りたたみ表現線を引くかを指定します。
SCI_SETFOLDFLAGS(int flags)
In addition to showing markers in the folding margin, you can indicate folds to the user by
drawing lines in the text area. The lines are drawn in the foreground colour set for . Bits set in
flags
determine where folding lines are drawn:
値 | 効果 |
---|---|
1 | 展開しているときに矩形で囲む。(動作試験中) |
2 | 展開しているときに上に引く。 |
4 | 折りたたまれているときに上に引く。 |
8 | 展開しているときに下に引く。 |
16 | 折りたたまれているときに下に引く。 |
64 | 16 進数で行の余白に折りたたみ階層数を表示する。折りたたみのデバッグ用。この機能は理解しやすいように再設計する必要がある。 |
このメッセージは画面の再描画を促します。
Value | Effect |
---|---|
1 | Experimental - draw boxes if expanded |
2 | Draw above if expanded |
4 | Draw above if not expanded |
8 | Draw below if expanded |
16 | Draw below if not expanded |
64 | display hexadecimal fold levels in line margin to aid debugging of folding. This feature needs to be redesigned to be sensible. |
This message causes the display to redraw.
startLine
の行以降に折りたたみ階層数が level
以下の行を探します。見つけた場合はその一行前の行番号を返します。level
に -1 を指定したときは、startLine
と同じ折りたたみ階層数とみなします。SCI_GETLASTCHILD(from,
-1)
というコードで from
が折りたたみ点であるときに返される行番号は、可視行もしくは折りたたみによって不可視にされている行のうちの最後の行になります。
SCI_GETLASTCHILD(int startLine, int level)
This message searches for the next line after startLine
, that has a folding level
that is less than or equal to level
and then returns the previous line number. If
you set level
to -1, level
is set to the folding level of line
startLine
. If from
is a fold point, SCI_GETLASTCHILD(from,
-1)
returns the last line that would be in made visible or hidden by toggling the fold
state.
startLine
より文書先頭方向にあり、startLine
より折りたたみ階層数が小さく、SC_FOLDLEVELHEADERFLAG
で折りたたみ点として印づけられている行のうち最初の行の番号を返します。該当行がない場合や、ヘッダフラグと折りたたみ階層数に齟齬がある場合は -1 を返します。
SCI_GETFOLDPARENT(int startLine)
This message returns the line number of the first line before startLine
that is
marked as a fold point with SC_FOLDLEVELHEADERFLAG
and has a fold level less than
the startLine
. If no line is found, or if the header flags and fold levels are
inconsistent, the return value is -1.
各折りたたみ点は展開時にすべての子孫階層を表示したり、閉じたときにすべての子孫階層を隠したりできます。このメッセージは指定行が SC_FOLDLEVELHEADERFLAG
を設定されていればその折りたたみ状態を切り替えます。折りたたみもしくは展開の状態が指定行に依存する行の状態も制御します。このメッセージの後表示は更新されます。
SCI_TOGGLEFOLD(int line)
Each fold point may be either expanded, displaying all its child lines, or contracted, hiding
all the child lines. This message toggles the folding state of the given line as long as it has
the SC_FOLDLEVELHEADERFLAG
set. This message takes care of folding or expanding
all the lines that depend on the line. The display updates after this message.
指定行一行の展開状態を設定または取得します。このメッセージは行の可視状態や指定行に依存する行には影響を与えません。折りたたみ余白のマーカは変更されます。文書の外を指すような行番号を指定すると false
(0) が返されます。
SCI_SETFOLDEXPANDED(int line, bool expanded)
SCI_GETFOLDEXPANDED(int line)
These messages set and get the expanded state of a single line. The set message has no effect
on the visible state of the line or any lines that depend on it. It does change the markers in
the folding margin. If you ask for the expansion state of a line that is outside the document,
the result is false
(0).
単にある行の折りたたみ状態を変更し、それに依存する行もまとめて変更したい場合は SCI_TOGGLEFOLD
を使うほうが簡単です。SCI_SETFOLDEXPANDED
はまとめて折りたたみを処理し終わるまで表示更新を待たせる場合に使うことがあります。使い方については SciTEBase::FoldAll()
と SciTEBase::Expand()
を参照してください。
If you just want to toggle the fold state of one line and handle all the lines that are
dependent on it, it is much easier to use SCI_TOGGLEFOLD
. You would use the
SCI_SETFOLDEXPANDED
message to process many folds without updating the display
until you had finished. See SciTEBase::FoldAll()
and
SciTEBase::Expand()
for examples of the use of these messages.
ある行がその祖先階層の行を折りたたまれる事により隠されてしまうことがあります。これらのメッセージは折りたたみ階層構造を上位にたどり、閉じられている折りたたみを最上位階層まで開いていきます。結果、指定行は可視になります。SCI_ENSUREVISIBLEENFORCEPOLICY
を使うと、 で使う垂直方向のキャレットポリシーが適用されます。
SCI_ENSUREVISIBLE(int line)
SCI_ENSUREVISIBLEENFORCEPOLICY(int line)
A line may be hidden because more than one of its parent lines is contracted. Both these
message travels up the fold hierarchy, expanding any contracted folds until they reach the top
level. The line will then be visible. If you use SCI_ENSUREVISIBLEENFORCEPOLICY
,
the vertical caret policy set by is then applied.
SCI_SETWRAPMODE(int wrapMode)
SCI_GETWRAPMODE
SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
SCI_GETWRAPVISUALFLAGS
SCI_SETWRAPSTARTINDENT(int indent)
SCI_GETWRAPSTARTINDENT
SCI_SETLAYOUTCACHE(int cacheMode)
SCI_GETLAYOUTCACHE
SCI_LINESSPLIT
SCI_LINESJOIN
初期状態では Scintilla は行クリップを行いません。行クリップを有効にするとウィンドウ幅より長い行は次の行以降に折り返して表示されるようになります。空白文字、タブ文字、あるいは装飾の異なる位置を機会にそのような行を折り返そうとします。単一装飾の単語がウィンドウ幅より長いために折り返すことができない場合は、ウィンドウ幅で強制的に折り返します。行クリップが有効の時は水平スクロールバーは表示されません。
By default, Scintilla does not wrap lines of text. If you enable line wrapping, lines wider than the window width are continued on the following lines. Lines are broken after space or tab characters or between runs of different styles. If this is not possible because a word in one style is wider than the window then the break occurs after the last character that completely fits on the line. The horizontal scroll bar does not appear when wrap mode is on.
Scintilla は折り返された行について、その折り返しで継続される位置に小さな矢印を表示することができます。これらは個々に有効にできますが、二行目以降の行頭に矢印を描画する場合は一字字下げを行います。また、この矢印とは別に折り返しの二行目以降を字下げさせることができます。
For wrapped lines Scintilla can draw visual flags (little arrows) at end of a a subline of a wrapped line and at begin of the next subline. These can be enabled individually, but if Scintilla draws the visual flag at begin of the next subline this subline will be indented by one char. Independent from drawing a visual flag at the begin the subline can have an indention.
Scintilla はテキストの配置と描画に多くの時間を割きます。計算結果が変化しないものであっても同じテキストの配置計算が何度も行われます。この不必要な再計算を避けるために、行配置キャッシュに計算結果を格納することができます。キャッシュはその行の文字や装飾が変更されたときに無効化されます。文書全体をキャッシュすれば最大の効果が得られ、動的行クリップが 20 倍の速さで処理される一方、文書内容そのものに 7 倍のメモリと一行あたり 80 バイトのメモリが消費されます。
Much of the time used by Scintilla is spent on laying out and drawing text. The same text layout calculations may be performed many times even when the data used in these calculations does not change. To avoid these unnecessary calculations in some circumstances, the line layout cache can store the results of the calculations. The cache is invalidated whenever the underlying data, such as the contents or styling of the document changes. Caching the layout of the whole document has the most effect, making dynamic line wrap as much as 20 times faster but this requires 7 times the memory required by the document contents plus around 80 bytes per line.
行クリップは文書の変更直後ではなく再描画の時点で実行されます。この遅れにより全体の処理速度が上がります。まとまった変更ができるようになり、それに対する行クリップと再表示も一度だけでよくなります。このため、いくつかの処理が思ったように動作しないことがあります。ファイルを読み出してスクロール位置を移動すると、スクロール位置は行クリップの前に決められてしまうため表示されるテキスト範囲がスクロールバーと違うところになります。これはセッションの復帰の際などに起こります。正しいスクロール位置にするには、行クリップが実行されるまでスクロールさせないことです。これは最初の
通知を待つことで実現できます。Wrapping is not performed immediately there is a change but is delayed until the display is redrawn. This delay improves peformance by allowing a set of changes to be performed and then wrapped and displayed once. Because of this, some operations may not occur as expected. If a file is read and the scroll position moved to a particular line in the text, such as occurs when a container tries to restore a previous editing session, then the scroll position will have been determined before wrapping so an unexpected range of text will be displayed. To scroll to the position correctly, delay the scroll until the wrapping has been performed by waiting for an initial
notification.wrapMode
に SC_WRAP_WORD
(1) を指定すると行クリップが有効となり、SC_WRAP_NONE
(0) を指定すると無効になります。
SC_WRAP_CHAR (2) は SC_WRAP_WORD と異なり行クリップのために空白文字列を検索せず、必要な場所で文字を問わずに折り返すようになります。日本語のように空白文字類を原則的に利用しない自然言語を使うときのために訳者が実装したものです。
SCI_SETWRAPMODE(int wrapMode)
SCI_GETWRAPMODE
Set wrapMode to SC_WRAP_WORD
(1) to enable line wrapping and to
SC_WRAP_NONE
(0) to disable line wrapping.
行クリップが行われていることを示す印を描画することができます。wrapVisualFlags
に設定されたビットでどの印が秒がされるかが決まります。
SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
SCI_GETWRAPVISUALFLAGS
You can enable the drawing of visual flags to indicate a line is wrapped. Bits set in
wrapVisualFlags determine which visual flags are drawn.
定数 | 値 | 効果 |
---|---|---|
SC_WRAPVISUALFLAG_NONE |
0 | 何も表示しません。 |
SC_WRAPVISUALFLAG_END |
1 | 二行目以降の行末に表示します。 |
SC_WRAPVISUALFLAG_START |
2 | 二行目以降の先頭に表示します。 表示される行はその印のために少なくとも 1 文字分字下げします。 |
Symbol | Value | Effect |
---|---|---|
SC_WRAPVISUALFLAG_NONE |
0 | No visual flags |
SC_WRAPVISUALFLAG_END |
1 | Visual flag at end of subline of a wrapped line. |
SC_WRAPVISUALFLAG_START |
2 | Visual flag at begin of subline of a wrapped line. Subline is indented by at least 1 to make room for the flag. |
行クリップが行われていることを示すフラグを枠の近くに表示するかテキストの近くに表示するかを設定することができます。wrapVisualFlagsLocation
にはテキストに対応するフラグの位置を設定します。
SCI_SETWRAPVISUALFLAGSLOCATION(int wrapVisualFlagsLocation)
SCI_GETWRAPVISUALFLAGSLOCATION
You can set wether the visual flags to indicate a line is wrapped are drawn near the border or near the text.
Bits set in wrapVisualFlagsLocation set the location to near the text for the corresponding visual flag.
定数 | 値 | 効果 |
---|---|---|
SC_WRAPVISUALFLAGLOC_DEFAULT |
0 | 枠の近くに表示します。 |
SC_WRAPVISUALFLAGLOC_END_BY_TEXT |
1 | 二行目以降の行末、テキスト寄りに表示します。 |
SC_WRAPVISUALFLAGLOC_START_BY_TEXT |
2 | 二行目以降の行頭、テキスト寄りに表示します。 |
Symbol | Value | Effect |
---|---|---|
SC_WRAPVISUALFLAGLOC_DEFAULT |
0 | Visual flags drawn near border |
SC_WRAPVISUALFLAGLOC_END_BY_TEXT |
1 | Visual flag at end of subline drawn near text |
SC_WRAPVISUALFLAGLOC_START_BY_TEXT |
2 | Visual flag at begin of subline drawn near text |
行クリップ発生時の二行目以降の字下げ量を SCI_SETWRAPSTARTINDENT
で設定します。 の空白文字の幅が単位です。字下げ量に制限はありませんが、0 以下や大きすぎる値は想定外の効果を起こすことがあります。二行目以降の字下げは字下げを示す印とは独立した設定ですが、SC_WRAPVISUALFLAG_START
が設定されているときは、少なくとも一字分字下げが行われます。
SCI_SETWRAPSTARTINDENT(int indent)
SCI_GETWRAPSTARTINDENT
SCI_SETWRAPSTARTINDENT
sets the size of indentation of sublines for
wrapped lines in terms of the width of a space in
.
There are no limits on indent sizes, but values less than 0 or large values may have
undesirable effects.
The indention of sublines is independent of visual flags, but if
SC_WRAPVISUALFLAG_START
is set an indent of at least 1 is used.
cacheMode
に次表の定数のうち一つを設定できます。
SCI_SETLAYOUTCACHE(int cacheMode)
SCI_GETLAYOUTCACHE
You can set cacheMode
to one of the symbols in the table:
定数 | 値 | 行配置キャッシュの種類 |
---|---|---|
SC_CACHE_NONE |
0 | キャッシュは取りません。 |
SC_CACHE_CARET |
1 | キャレットのある行がキャッシュされます。初期設定です。 |
SC_CACHE_PAGE |
2 | 現在見えている行とキャレットのある行がキャッシュされます。 |
SC_CACHE_DOCUMENT |
3 | 文書内のすべての行がキャッシュされます。 |
Symbol | Value | Layout cached for these lines |
---|---|---|
SC_CACHE_NONE |
0 | No lines are cached. |
SC_CACHE_CARET |
1 | The line containing the text caret. This is the default. |
SC_CACHE_PAGE |
2 | Visible lines plus the line containing the caret. |
SC_CACHE_DOCUMENT |
3 | All lines in the document. |
対象として示された範囲内の行を、最大幅が pixelWidth
の行へ分割します。可能な限り行クリップと同じ手法で単語の境界における分割が発生します。pixelWidth
が 0 の場合はウィンドウ幅が用いられます。
SCI_LINESSPLIT(int pixelWidth)
Split a range of lines indicated by the target into lines that are at most pixelWidth wide.
Splitting occurs on word boundaries wherever possible in a similar manner to line wrapping.
When pixelWidth
is 0 then the width of the window is used.
対象として示された範囲内の行を、行末文字を除くことにより一行にまとめます。単語間に空白が無くなってしまう場合は空白文字が追加挿入されます。
SCI_LINESJOIN
Join a range of lines indicated by the target into one line by
removing line end characters.
Where this would lead to no space between words, an extra space is inserted.
Scintilla には“拡大係数”が組み込まれており、文書内の文字列を 1 ポイント単位で大きくしたり小さくしたりできます。係数の値にかかわらず、2 ポイント未満にはなりません。拡大係数は -10 〜 +20 ポイントの範囲で指定できます。
Scintilla incorporates a "zoom factor" that lets you make all the text in the document larger or smaller in steps of one point. The displayed point size never goes below 2, whatever zoom factor you set. You can set zoom factors in the range -10 to +20 points.
SCI_ZOOMIN
SCI_ZOOMOUT
SCI_SETZOOM(int zoomInPoints)
SCI_GETZOOM
SCI_ZOOMIN
は拡大係数を 1 ポイント加え、SCI_ZOOMOUT
は 1 ポイント減らします。20 ポイントを越えたり -10 ポイントを下回ったりすることはありません。
SCI_ZOOMIN
SCI_ZOOMOUT
SCI_ZOOMIN
increases the zoom factor by one point if the current zoom factor is
less than 20 points. SCI_ZOOMOUT
decreases the zoom factor by one point if the
current zoom factor is greater than -10 points.
SCI_SETZOOM
は直接拡大係数を指定します。指定値に制限がありませんので、自分で -10 〜 +20 に制限する加算拡大関数を作るのはよい方法です。
SCI_SETZOOM(int zoomInPoints)
SCI_GETZOOM
These messages let you set and get the zoom factor directly. There is no limit set on the
factors you can set, so limiting yourself to -10 to +20 to match the incremental zoom functions
is a good idea.
指定桁数を超えた行を示すために垂直線を引いたり、越えた部分の背景色を変えたりすることができます。
You can choose to mark lines that exceed a given length by drawing a vertical line or by colouring the background of characters that exceed the set length.
SCI_SETEDGEMODE(int mode)
SCI_GETEDGEMODE
SCI_SETEDGECOLUMN(int column)
SCI_GETEDGECOLUMN
SCI_SETEDGECOLOUR(int colour)
SCI_GETEDGECOLOUR
超過桁境界線の表示方法を設定または取得します。次表に挙げた値のうち一つを設定できます。
SCI_SETEDGEMODE(int edgeMode)
SCI_GETEDGEMODE
These two messages set and get the mode used to display long lines. You can set one of the
values in the table:
定数 | 値 | 境界線の表現 |
---|---|---|
EDGE_NONE |
0 | 境界線は表示されません。初期状態値です。 |
EDGE_LINE |
1 | SCI_SETEDGECOLUMN で設定された桁に垂直線が引かれます。固定幅フォントを使っているときに正しく動作します。 における空白文字の幅を基準にして線の位置を計算しますので、プロポーショナルフォントを使ったり装飾毎に異なる大きさのフォントを使ったり、あるいは太字・斜体・通常フォントを混ぜて使ったりするとあまりいい位置には来ません。 |
EDGE_BACKGROUND |
2 | 桁境界以降の文字の背景色を SCI_SETEDGECOLOUR で指定した色に変更します。プロポーショナルフォントにはこちらをおすすめします。 |
Symbol | Value | Long line display mode |
---|---|---|
EDGE_NONE |
0 | Long lines are not marked. This is the default state. |
EDGE_LINE |
1 | A vertical line is drawn at the column number set by SCI_SETEDGECOLUMN .
This works well for monospaced fonts. The line is drawn at a position based on the width
of a space character in , so it may not work very well if
your styles use proportional fonts or if your style have varied font sizes or you use a
mixture of bold, italic and normal text. . |
EDGE_BACKGROUND |
2 | The background colour of characters after the column limit is changed to the colour
set by SCI_SETEDGECOLOUR . This is recommended for proportional fonts. |
超過桁境界線を表示する桁位置を設定または取得します。線を引く場合は STYLE_DEFAULT
における空白文字の幅を単位として位置を計算します。背景色が変更されるときは、タブも考慮した文字数単位で数えます。
SCI_SETEDGECOLUMN(int column)
SCI_GETEDGECOLUMN
These messages set and get the column number at which to display the long line marker. When
drawing lines, the column sets a position in units of the width of a space character in
STYLE_DEFAULT
. When setting the background colour, the column is a character count
(allowing for tabs) into the line.
SCI_SETEDGECOLUMN
の桁数を越えた行における印の背景色を設定または取得します。
SCI_SETEDGECOLOUR(int colour)
SCI_GETEDGECOLOUR
These messages set and get the colour of the marker used to show that a line has exceeded the
length set by SCI_SETEDGECOLUMN
.
Scintilla の構築の際に SCI_LEXER
シンボルを定義しておくと、広範囲のプログラミング言語解析および本節のメッセージに対応できるようになります。これは時に SciLexer 版の Scintilla と呼ばれます。未対応の言語に装飾や折りたたみ点を設定したい場合でもコンテナの中でそれができますし、今でもよりよい方法として、既存の解析器のパターンを応用して自身の解析器を作ることができます。
If you define the symbol SCI_LEXER
when building Scintilla, (this is sometimes
called the SciLexer version of Scintilla), lexing support for a wide range programming
languages is included and the messages in this section are supported. If you want to set
styling and fold points for an unsupported language you can either do this in the container or
better still, write your own lexer following the pattern of one of the existing ones.
Scintilla は外部の解析器にも対応します。Windows では DLL、GTK+/Linux では .so モジュールの形で、次の四関数をエクスポートしたものを使います。GetLexerCount
, GetLexerName
, Lex
, Fold
.
詳しくは externalLexer.cxx
を参照してください。
Scintilla also supports external lexers. These are DLLs (on Windows) or .so modules (on GTK+/Linux) that export four
functions: GetLexerCount
, GetLexerName
, Lex
and
Fold
. See externalLexer.cxx
for more.
SCI_SETLEXER(int lexer)
SCI_GETLEXER
SCI_SETLEXERLANGUAGE(<unused>, char
*name)
SCI_LOADLEXERLIBRARY(<unused>, char
*path)
SCI_COLOURISE(int start, int end)
SCI_SETPROPERTY(const char *key, const char *value)
SCI_SETKEYWORDS(int keyWordSet, const char
*keyWordList)
Scintilla.h
に列挙されている SCLEX_*
を使うことで解析器を選択できます。このうち二つは解析器を使わないことを示すものです。SCLEX_NULL
は解析そのものを行いません。SCLEX_CONTAINER
は装飾情報を必要とするテキストがある時に通知 をコンテナに送信します。
SCLEX_AUTOMATIC
は使用することができません。これは外部の追加解析器を示し、Scintilla が未使用の解析器番号を割り当てていくものです。
SCI_SETLEXER(int lexer)
SCI_GETLEXER
You can select the lexer to use with an integer code from the SCLEX_*
enumeration
in Scintilla.h
. There are two codes in this sequence that do not use lexers:
SCLEX_NULL
to select no lexing action and SCLEX_CONTAINER
which sends
the notification to
the container whenever a range of text needs to be styled. You cannot use the
SCLEX_AUTOMATIC
value; this identifies additional external lexers that Scintilla
assigns unused lexer numbers to.
名称を元に解析器を選択します。またこれは、外部解析器を使っている場合あるいは独自の解析器を使っていてそれに明示的な番号を割り当てたくない場合の唯一の方法です。既存の解析器を選択する場合は name
にモジュールが与えられている名前を指定します。大文字小文字を区別しますので "ada" や "python" と指定してください。"Ada", "Python" は使えません。組み込み済み解析器の名前は、対応する Lex*.cxx
の中で LexerModule
を検索してください。LexerModule
のコンストラクタの第三引数がその名前です。
SCI_SETLEXERLANGUAGE(<unused>, const char *name)
This message lets you select a lexer by name, and is the only method if you are using an
external lexer or if you have written a lexer module for a language of your own and do not wish
to assign it an explicit lexer number. To select an existing lexer, set name
to
match the (case sensitive) name given to the module, for example "ada" or "python", not "Ada"
or "Python". To locate the name for the built-in lexers, open the relevant
Lex*.cxx
file and search for LexerModule
. The third argument in the
LexerModule
constructor is the name to use.
解析器の割り当てが動作するかどうかは、新しい解析器を設定する前後に
を使って解析器番号が変化するかどうかを見てください。To test if your lexer assignment worked, use
before and after setting the new lexer to see if the lexer number changed.共有ライブラリに実装されている解析器を読み出します。GTK+/Linux では .so 、Windows では .DLL ファイルです。
SCI_LOADLEXERLIBRARY(<unused>, const char *path)
Load a lexer implemented in a shared library. This is a .so file on GTK+/Linux or a .DLL file on Windows.
文書の startPos
と endPos
の間のテキスト装飾を現在の解析器かコンテナに実行させます。解析器が SCLEX_CONTAINER
である場合にコンテナ任せになります。
endPos
が -1 の場合、startPos
から文書末までが対象となります。"fold"
特性が "1"
に設定されていて、かつ解析器またはコンテナが折りたたみに対応している場合は折りたたみ階層数も設定されます。このメッセージは画面再描画を起こします。
SCI_COLOURISE(int startPos, int endPos)
This forces the current lexer or the container (if the lexer is set to
SCLEX_CONTAINER
) to style the document between startPos
and
endPos
. If endPos
is -1, the document is styled from
startPos
to the end. If the "fold"
property is set to
"1"
and your lexer or container supports folding, fold levels are also set. This
message causes a redraw.
キーワードと値から成る文字列の組で解析器と対話をします。キーワードの組数に制限はなく、メモリの許す限り使えます。key
はキーワードで、大文字小文字を区別します。value
はキーワードに関係づけられた文字列です。すでに指定キーワードに値が設定されているときは、置換されます。長さ 0 の文字列を指定した場合は何もしません。key
と value
は修正なしで使用されます。key
で指定した文字列の先頭や末尾の空白文字も意味を持ちます。
SCI_SETPROPERTY(const char *key, const char *value)
You can communicate settings to lexers with keyword:value string pairs. There is no limit to
the number of keyword pairs you can set, other than available memory. key
is a
case sensitive keyword, value
is a string that is associated with the keyword. If
there is already a value string associated with the keyword, it is replaced. If you pass a zero
length string, the message does nothing. Both key
and value
are used
without modification; extra spaces at the beginning or end of key
are
significant.
value
は他のキーワードを参照することができます。SCI_SETPROPERTY("foldTimes10", "$(fold)0")
は "$(fold)0"
を格納しますが、取得しようとすると $(fold)
が "fold"
キーワードの値に置換されます。置換されるキーワードが存在しないときはその部分の文字列はありません。
The value
string can refer to other keywords. For example,
SCI_SETPROPERTY("foldTimes10", "$(fold)0")
stores the string
"$(fold)0"
, but when this is accessed, the $(fold)
is replaced by the
value of the "fold"
keyword (or by nothing if this keyword does not exist).
現在、"fold" 特性は大部分の解析器で "1" の時に折りたたみ構造を指定するように定義されています。SCLEX_PYTHON
では "tab.timmy.whinge.level"
を不正な字下げの表示方法の指定として扱います。大部分のキーワードは整数に通訳されます。解析器のソースで GetPropertyInt
の部分を探すと特性の使い方がわかります。
Currently the "fold" property is defined for most of the lexers to set the fold structure if
set to "1". SCLEX_PYTHON
understands "tab.timmy.whinge.level"
as a
setting that determines how to indicate bad indentation. Most keywords have values that are
interpreted as integers. Search the lexer sources for GetPropertyInt
to see how
properties are used.
現在使用中の解析器に対して最大 9 つのキーワード項目群を設定できます(版 1.50 号で 6 から 9 になりました)。keyWordSet
は 0 〜 8(KEYWORDSET_MAX
) で、設定する項目群番号を指定します。keyWordList
は空白文字、タブ文字、"\n"
、"\r"
またはこの組み合わせで区切られたキーワード群です。キーワードは ASCII 標準印刷可能文字から成ることを期待した設計になっていますが、コード番号 1 〜 255 の区切り文字ではない文字を弾くような処理はしていません。
(訳注: 原文は「常識以外に 1 〜 255 の文字を止めるものはない」と読めるが、そうだとしたらずいぶん失礼な話だと思う。)
SCI_SETKEYWORDS(int keyWordSet, const char *keyWordList)
You can set up to 9 lists of keywords for use by the current lexer. This was increased from 6
at revision 1.50. keyWordSet
can be 0 to 8 (actually 0 to KEYWORDSET_MAX
)
and selects which keyword list to replace. keyWordList
is a list of keywords
separated by spaces, tabs, "\n"
or "\r"
or any combination of these.
It is expected that the keywords will be composed of standard ASCII printing characters,
but there is nothing to stop you using any non-separator character codes from 1 to 255
(except common sense).
キーワードをどのように使うかは完全に解析器側に任されています。一部の言語は、他の埋め込み言語を含んでいることがあり、たとえば HTML では VBScript, JavaScript などがよく埋め込まれています。HTML の場合は項目群 0 がHTML, 1 が JavaScript, 2 が VBScript, 3 が Python, 4 が PHP, 5 が SGML と DTD のキーワード集合を持っています。キーワード項目群の例は解析器のコードを見てください。完全に仕様を満たした解析器では LexerModule
コンストラクタの第四引数が各キーワード群の用途を記述した項目群の文字列となっています。
How these keywords are used is entirely up to the lexer. Some languages, such as HTML may
contain embedded languages, VBScript and JavaScript are common for HTML. For HTML, key word set
0 is for HTML, 1 is for JavaScript and 2 is for VBScript, 3 is for Python, 4 is for PHP and 5
is for SGML and DTD keywords. Review the lexer code to see examples of keyword list. A fully
conforming lexer sets the fourth argument of the LexerModule
constructor to be a
list of strings that describe the uses of the keyword lists.
項目群 0 に一般キーワード、項目群 1 に字下げを起こすキーワード、項目群 2 に字下げを解除するキーワード、という使い方もできます。また、キーワードに色を付けるだけの簡単な解析器を使い、キーワード項目群 0 を差し替えることで言語の切り替えを表すということもできます。解析器自身にキーワード項目群を組み込んでしまうことも可能ですが、この場合キーワードが増えたときには解析器を再構築しなくてはなりません。
Alternatively, you might use set 0 for general keywords, set 1 for keywords that cause indentation and set 2 for keywords that cause unindentation. Yet again, you might have a simple lexer that colours keywords and you could change languages by changing the keywords in set 0. There is nothing to stop you building your own keyword lists into the lexer, but this means that the lexer must be rebuilt if more keywords are added.
通知は Scintilla コントロールからそのコンテナへ、コンテナが関わってくるようなイベントが発生したときに送信されます。Windows では WM_NOTIFY
メッセージで、GTK+ では "notify" シグナルで通知が送られてきます。コンテナはイベント情報を持っている SCNotification
を渡されることになります。
Notifications are sent (fired) from the Scintilla control to its container when an event has
occurred that may interest the container. Notifications are sent using the
WM_NOTIFY
message on Windows and the "notify" signal on GTK+. The container is
passed a SCNotification
structure containing information about the event.
struct NotifyHeader { // Win32 の NMHDR 構造体と同じ形です。This matches the Win32 NMHDR structure void *hwndFrom; // 環境依存のウィンドウハンドルもしくはポインタ。environment specific window handle/pointer unsigned int idFrom;// 通知を出すウィンドウの CtrlID。CtrlID of the window issuing the notification unsigned int code; // SCN_* 通知コードが入ります。The SCN_* notification code }; struct SCNotification { struct NotifyHeader nmhdr; int position; // SCN_STYLENEEDED, SCN_MODIFIED, SCN_DWELLSTART, // SCN_DWELLEND, SCN_CALLTIPCLICK, // SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK int ch; // SCN_CHARADDED, SCN_KEY int modifiers; // SCN_KEY, SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK int modificationType; // SCN_MODIFIED const char *text; // SCN_MODIFIED int length; // SCN_MODIFIED int linesAdded; // SCN_MODIFIED int message; // SCN_MACRORECORD uptr_t wParam; // SCN_MACRORECORD sptr_t lParam; // SCN_MACRORECORD int line; // SCN_MODIFIED int foldLevelNow; // SCN_MODIFIED int foldLevelPrev; // SCN_MODIFIED int margin; // SCN_MARGINCLICK int listType; // SCN_USERLISTSELECTION int x; // SCN_DWELLSTART, SCN_DWELLEND int y; // SCN_DWELLSTART, SCN_DWELLEND };
コンテナが操作できる通知メッセージあるいは関連するメッセージは次の通りです。
The notification messages that your container can choose to handle and the messages associated with them are:
SCN_STYLENEEDED
SCN_CHARADDED
SCN_SAVEPOINTREACHED
SCN_SAVEPOINTLEFT
SCN_MODIFYATTEMPTRO
SCN_KEY
SCN_DOUBLECLICK
SCN_UPDATEUI
SCN_MODIFIED
SCN_MACRORECORD
SCN_MARGINCLICK
SCN_NEEDSHOWN
SCN_PAINTED
SCN_USERLISTSELECTION
SCN_URIDROPPED
SCN_DWELLSTART
SCN_DWELLEND
SCN_ZOOM
SCN_HOTSPOTCLICK
SCN_HOTSPOTDOUBLECLICK
SCN_CALLTIPCLICK
次の SCI_*
メッセージはこれらの通知と関係しています。
The following SCI_*
messages are associated with these notifications:
SCI_SETMODEVENTMASK(int
eventMask)
SCI_GETMODEVENTMASK
SCI_SETMOUSEDWELLTIME
SCI_GETMOUSEDWELLTIME
次の通知は Windows ではWM_COMMAND
を、GTK+ では "Command" シグナルを通して送信され、Windows のエディットコントロールを模倣することに使われます。
The following additional notifications are sent using the WM_COMMAND
message on
Windows and the "Command" signal on GTK+ to emulate the Windows Edit control:
SCEN_CHANGE
SCEN_SETFOCUS
SCEN_KILLFOCUS
によりコンテナが解析器の役割をも担うように設定するとこの通知が送られるようになります。装飾が必要なテキスト表示もしくは印刷を行おうとするとき発光されます。 (SCLEX_CONTAINER) の戻り値を含んでいる行から
SCNotification.position
で渡される位置までの装飾を要求されていることになります。端的には次のようなコードが必要となります。
SCN_STYLENEEDED
If you used to make the container act as the
lexer, you will receive this notification when Scintilla is about to display or print text that
requires styling. You are required to style the text from the line that contains the position
returned by (SCLEX_CONTAINER) up to
the position passed in
SCNotification.position
. Symbolically, you need code of the
form:
startPos = SCI_GETENDSTYLED() lineNumber = SCI_LINEFROMPOSITION(startPos); startPos = SCI_POSITIONFROMLINE(lineNumber); MyStyleRoutine(startPos, SCNotification.position);
ユーザが通常の(コマンド文字ではない、と言う意味での)テキスト文字をタイプしたときに送られるメッセージです。メッセージを受け取ったコンテナはコールチップや自動補完候補項目を表示するかどうかなどを決めることができます。タイプされた文字は SCNotification.ch
に入っています。
SCN_CHARADDED
This is sent when the user types an ordinary text character (as opposed to a command
character) that is entered into the text. The container can use this to decide to display a call tip or an auto
completion list. The character is in SCNotification.ch
.
保存点に戻ってきたかそこから変化していくときに送られてくるメッセージです。コンテナはこれにより「文書変更済み」のサインを表示し、関連メニューを変更できます。
参照:
,SCN_SAVEPOINTREACHED
SCN_SAVEPOINTLEFT
Sent to the container when the save point is entered or left, allowing the container to
display a "document dirty" indicator and change its menus.
See also: ,
読み出し専用モードの時にユーザがテキストの変更を試みた場合に送信されるメッセージです。版管理系からの文書を調べることに利用できます。文書を読み出し専用にするには を使います。
SCN_MODIFYATTEMPTRO
When in read-only mode, this notification is sent to the container if the user tries to change
the text. This can be used to check the document out of a version control system. You can set
the read-only state of a document with .
あらゆるキーの押下を報告するメッセージです。GTK+ のキーボードフォーカスの問題から、GTK+ でのみ使われます。Windows 版では送信されません。SCNotification.ch
にキーコード、SCNotification.modifiers
に修飾キー情報が入っています。この通知は修飾キーに SCMOD_ALT
もしくは SCMOD_CTRL
が含まれていて、キーコードが 256 未満の場合に送信されます。
SCN_KEY
Reports all keys pressed. Used on GTK+ because of some problems with keyboard focus and is not
sent by the Windows version. SCNotification.ch
holds the key code and
SCNotification.modifiers
holds the modifiers. This notification is sent if the
modifiers include SCMOD_ALT
or SCMOD_CTRL
and the key code is less
than 256.
エディタの中でマウスボタンがダブルクリックされたときに送信されます。付加情報はありません。
SCN_DOUBLECLICK
The mouse button was double clicked in editor. There is no additional information.
文書内のテキストもしくは装飾が変更されたり、選択範囲が変化したりしたときに送信されます。文書や表示状態に依存するユーザインタフェイス要素を更新する機会となります。かつては として使われていたもので、主な利用方法が括弧の隣にキャレットがあるかどうかの調査、またあるのであればその括弧及び対応する括弧の強調にあったからです。このメッセージは をも廃止統合しています。
SCN_UPDATEUI
Either the text or styling of the document has changed or the selection range has changed. Now
would be a good time to update any container UI elements that depend on document or view state.
This was previously called because a common use is to check whether the
caret is next to a brace and set highlights on this brace and its corresponding matching brace.
This also replaces ,
which is now deprecated.
テキストや装飾が変更されたか、あるいはされようとしているときに発行される通知です。コンテナに送信される通知は SCN_MODIFIED
イベントが起きている間は実際の変化は起こりません。SCNotification
の使われ肩は次の通りです。
SCN_MODIFIED
This notification is sent when the text or styling of the document changes or is about to
change. You can set a mask for the notifications that are sent to the container with . The
notification structure contains information about what changed, how the change occurred and
whether this changed the number of lines in the document. No modifications may be performed
while in a SCN_MODIFIED
event. The SCNotification
fields used
are:
項目 | 用途 |
---|---|
modificationType |
変更内容を示すフラグの論理和。次の表を参照してください。 |
position |
テキストまたは装飾が変更される開始点。使われない場合は 0。 |
length |
テキストか装飾が変更される場合の装飾セル数もしくは文字数。使われない場合は 0。 |
linesAdded |
追加行数。負の値の場合は削除行数。増減がない場合は 0。 |
text |
テキストの変化に関する場合のみ有効、装飾の変更の場合は使われません。やり直しに関する情報を収集していたときはその処理へ渡すテキストへのポインタを格納しています。そうでなければ 0 です。 |
line |
折りたたみ階層数もしくはマーカの変化が起きた行番号。使われない場合は 0。 |
foldLevelNow |
当該行に新しく割り当てられる折りたたみ階層数。使われない場合は 0。 |
foldLevelPrev |
当該行の以前の折りたたみ階層数。使われない場合は 0。 |
Field | Usage |
---|---|
modificationType |
A set of flags that identify the change(s) made. See the next table. |
position |
Start position of a text or styling change. Set to 0 if not used. |
length |
Length of the change in cells or characters when the text or styling changes. Set to 0 if not used. |
linesAdded |
Number of added lines. If negative, the number of deleted lines. Set to 0 if not used or no lines added or deleted. |
text |
Valid for text changes, not for style changes. If we are collecting undo information this holds a pointer to the text that is handed to the Undo system, otherwise it is zero. |
line |
The line number at which a fold level or marker change occurred. This is 0 if unused. |
foldLevelNow |
The new fold level applied to the line or 0 if this field is unused. |
foldLevelPrev |
The previous folding level of the line or 0 if this field is unused. |
SCNotification.modificationType
は何が行われたかを示すビット集合となっています。SC_MOD_*
が行動と関連づけられています。SC_PREFORMED_*
ビットでユーザの操作によるものか、またはやり直し・再実行の結果によるものかが示されます。
The SCNotification.modificationType
field has bits set to tell you what has
been done. The SC_MOD_*
bits correspond to actions. The
SC_PREFORMED_*
bits tell you if the action was done by the user, or the result of
Undo or Redo of a previous action.
定数 | 値 | 意味 | SCNotification 上の有効項目 |
---|---|---|---|
SC_MOD_INSERTTEXT |
0x01 | 文書にテキストが挿入されました。 | position, length, linesAdded |
SC_MOD_DELETETEXT |
0x02 | テキストが文書から取り除かれました。 | position, length, linesAdded |
SC_MOD_CHANGESTYLE |
0x04 | 装飾の変更が起きました。 | position, length |
SC_MOD_CHANGEFOLD |
0x08 | 折りたたみの変更が起きました。 | line, foldLevelNow, foldLevelPrev |
SC_PERFORMED_USER |
0x10 | 情報: ユーザによって行われました。 | なし |
SC_PERFORMED_UNDO |
0x20 | 情報: やり直しによって起きました。 | なし |
SC_PERFORMED_REDO |
0x40 | 情報: 再実行によって起きました。 | なし |
SC_LASTSTEPINUNDOREDO |
0x100 | 複数セクションを持つやり直し・再実行の最後の一処理です。 | なし |
SC_MOD_CHANGEMARKER |
0x200 | マーカが変更されました。 | line |
SC_MOD_BEFOREINSERT |
0x400 | 文書の中にテキストが挿入されようとしています。 | position, length |
SC_MOD_BEFOREDELETE |
0x800 | 文書からテキストが取り除かれようとしています。 | position, length |
SC_MODEVENTMASKALL |
0xf77 | すべての有効なフラグを重ねたマスクです。 | の初期設定値です。なし |
Symbol | Value | Meaning | SCNotification fields |
---|---|---|---|
SC_MOD_INSERTTEXT |
0x01 | Text has been inserted into the document. | position, length, linesAdded |
SC_MOD_DELETETEXT |
0x02 | Text has been removed from the document. | position, length, linesAdded |
SC_MOD_CHANGESTYLE |
0x04 | A style change has occurred. | position, length |
SC_MOD_CHANGEFOLD |
0x08 | A folding change has occurred. | line, foldLevelNow, foldLevelPrev |
SC_PERFORMED_USER |
0x10 | Information: the operation was done by the user. | None |
SC_PERFORMED_UNDO |
0x20 | Information: this was the result of an Undo. | None |
SC_PERFORMED_REDO |
0x40 | Information: this was the result of a Redo. | None |
SC_LASTSTEPINUNDOREDO |
0x100 | This is the final step in an Undo or Redo that has several sections. | None |
SC_MOD_CHANGEMARKER |
0x200 | One or more markers has changed in a line. | line |
SC_MOD_BEFOREINSERT |
0x400 | Text is about to be inserted into the document. | position, length |
SC_MOD_BEFOREDELETE |
0x800 | Text is about to be deleted from the document. | position, length |
SC_MODEVENTMASKALL |
0xf77 | This is a mask for all valid flags. This is the default mask state set by | .None |
SCEN_CHANGE
(768) は文書内のテキストが変更されたときに発行されます。装飾の変更では発行されません。この通知は Windows では WM_COMMAND
を、GTK+ では "Command" シグナルを用いて送られます。標準のエディットコントロールと同じ挙動を行うために発行されているもので、Windows では SCEN_CHANGE
と EN_CHANGE
が同じ値を持っています。他の情報は送られてきません。詳細を知る場合は を用いてください。 によって通知をあらかじめ選別することができます。
SCEN_CHANGE
SCEN_CHANGE
(768) is fired when the text (not the style) of the document changes.
This notification is sent using the WM_COMMAND
message on Windows and the
"Command" signal on GTK+ as this is the behavior of the standard Edit control
(SCEN_CHANGE
has the same value as the Windows Edit control
EN_CHANGE
). No other information is sent. If you need more detailed information
use . You can filter the
types of changes you are notified about with .
SCI_SETMODEVENTMASK(SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT)
というコードを使います。
SCI_SETMODEVENTMASK(int eventMask)
SCI_GETMODEVENTMASK
These messages set and get an event mask that determines which document change events are
notified to the container with and . For example, a container may decide to see
only notifications about changes to text and not styling changes by calling
SCI_SETMODEVENTMASK(SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT)
.
通知の種別は SCN_MODIFIED
で使われている modificationType
ビットフラグと同じです。具体的には次の通りです。SC_MOD_INSERTTEXT
,
SC_MOD_DELETETEXT
, SC_MOD_CHANGESTYLE
,
SC_MOD_CHANGEFOLD
, SC_PERFORMED_USER
, SC_PERFORMED_UNDO
,
SC_PERFORMED_REDO
, SC_LASTSTEPINUNDOREDO
,
SC_MOD_CHANGEMARKER
, SC_MOD_BEFOREINSERT
,
SC_MOD_BEFOREDELETE
, SC_MODEVENTMASKALL
.
The possible notification types are the same as the modificationType
bit flags
used by SCN_MODIFIED
: SC_MOD_INSERTTEXT
,
SC_MOD_DELETETEXT
, SC_MOD_CHANGESTYLE
,
SC_MOD_CHANGEFOLD
, SC_PERFORMED_USER
, SC_PERFORMED_UNDO
,
SC_PERFORMED_REDO
, SC_LASTSTEPINUNDOREDO
,
SC_MOD_CHANGEMARKER
, SC_MOD_BEFOREINSERT
,
SC_MOD_BEFOREDELETE
, and SC_MODEVENTMASKALL
.
Scintilla がフォーカスを得たときに SCEN_SETFOCUS
(512) が、フォーカスを失ったときに SCEN_KILLFOCUS
(256) が発行されます。Windows では WM_COMMAND
を、GTK+ では "Command" シグナルを用いて通知されます。これらは標準エディットコントロールと同じ挙動を行うために発行されます。残念ながら Windows の通知コード EN_SETFOCUS
(256) および EN_KILLFOCUS
(512) とは一致していません。現在の値で Scintilla を利用しているものがあるため、Scintilla を変更するにはすでに手遅れでした。
SCEN_SETFOCUS
SCEN_KILLFOCUS
SCEN_SETFOCUS
(512) is fired when Scintilla receives focus and
SCEN_KILLFOCUS
(256) when it loses focus. These notifications are sent using the
WM_COMMAND
message on Windows and the "Command" signal on GTK+ as this is the
behavior of the standard Edit control. Unfortunately, these codes do not match the Windows Edit
notification codes EN_SETFOCUS
(256) and EN_KILLFOCUS
(512). It is
now too late to change the Scintilla codes as clients depend on the current values.
と はマクロの記録を開始・停止します。開始された場合、記録できる変更がある度に通知
SCN_MACRORECORD
がコンテナに送られます。記録はコンテナの責任になります。記録可能な SCI_*
メッセージの完全な一覧は Scintilla のソースファイル Editor.cxx
で Editor::NotifyMacroRecord
を検索してください。この通知で設定される SCNotification
の項目は次の通りです。
SCN_MACRORECORD
The and messages enable and
disable macro recording. When enabled, each time a recordable change occurs, the
SCN_MACRORECORD
notification is sent to the container. It is up to the container
to record the action. To see the complete list of SCI_*
messages that are
recordable, search the Scintilla source Editor.cxx
for
Editor::NotifyMacroRecord
. The fields of SCNotification
set in this
notification are:
項目 | 用途 |
---|---|
message |
通知の元となった SCI_* メッセージです。 |
wParam |
SCI_* メッセージの wParam 値です。 |
lParam |
SCI_* メッセージの lParam 値です。 |
Field | Usage |
---|---|
message |
The SCI_* message that caused the notification. |
wParam |
The value of wParam in the SCI_* message. |
lParam |
The value of lParam in the SCI_* message. |
マウスクリックに反応するように指定されたマーカのある余白部分でマウスがクリックされたことをコンテナに伝えます。 を参照ください。SCNotification
内の次の項目が使われます。
SCN_MARGINCLICK
This notification tells the container that the mouse was clicked inside a margin that was marked as sensitive (see ). This can be used to
perform folding or to place breakpoints. The following SCNotification
fields are
used:
項目 | 用途 |
---|---|
modifiers |
余白部がクリックされた時点で押下されていた修飾キーの情報を SCI_SHIFT , SCI_CTRL , SCI_ALT の組み合わせで表します。 |
position |
クリックされた余白に対応する行の先頭を、文書内の位置で示します。 |
margin |
クリックされた余白の番号を示します。 |
Field | Usage |
---|---|
modifiers |
The appropriate combination of SCI_SHIFT ,
SCI_CTRL and SCI_ALT to indicate the keys that were held down
at the time of the margin click. |
position |
The position of the start of the line in the document that corresponds to the margin click. |
margin |
The margin number that was clicked. |
Scintilla が現在見えていない複数行の一部を見えるようにしようとしていることを通知します。折りたたまれている省略部が削除された場合などに発行されます。文書全体を可視とするような、通常の方法とは違うやり方で行を見えるようにしつつあるときもコンテナに送信されます。多くの場合、コンテナは単に SCNotification
の二項目 position
および length
で文書内のどの範囲を可視にすべきかを表しています。コンテナは次のようなコードになるでしょう。
SCN_NEEDSHOWN
Scintilla has determined that a range of lines that is currently invisible should be made
visible. An example of where this may be needed is if the end of line of a contracted fold
point is deleted. This message is sent to the container in case it wants to make the line
visible in some unusual way such as making the whole document visible. Most containers will
just ensure each line in the range is visible by calling . The position
and
length
fields of SCNotification
indicate the range of the document
that should be made visible. The container code will be similar to the following code
skeleton:
firstLine = SCI_LINEFROMPOSITION(scn.position)
lastLine = SCI_LINEFROMPOSITION(scn.position+scn.length-1)
for line = lineStart to lineEnd do SCI_ENSUREVISIBLE(line) next
描画が終了したことを通知します。Scintilla 内の変更に基づいて他のウィジェットを更新したいときでなおかつ、描画を先に終わらせて反応の良い表示に見せたい場合に有用です。SCNotification
に設定される情報はありません。
SCN_PAINTED
Painting has just been done. Useful when you want to update some other widgets based on a
change in Scintilla, but want to have the paint occur first to appear more responsive. There is
no other information in SCNotification
.
ユーザがユーザ項目群からある項目を選択したことを通知します。SCNotification
で使用される項目は次の通りです。
SCN_USERLISTSELECTION
The user has selected an item in a user list. The
SCNotification
fields used are:
項目 | 用途 |
---|---|
wParam |
項目群を初期化した時の listType 引数です。 |
で指定した
text |
選択範囲のテキストです。 |
Field | Usage |
---|---|
wParam |
This is set to the listType parameter from the message that
initiated the list. |
text |
The text of the selection. |
GTK+ 版でのみ使います。ファイル名やウェブアドレスが Scintilla 内へドラッグされたことを通知します。コンテナはこれをファイルを開く要求として会食できます。SCNotification
構造体の text
項目が URI 文字列を指しています。
SCN_URIDROPPED
Only on the GTK+ version. Indicates that the user has dragged a URI such as a file name or Web
address onto Scintilla. The container could interpret this as a request to open the file. The
text
field of SCNotification
points at the URI text.
ある点でマウスを一定時間停止させていると SCN_DWELLSTART
が発行されます。 を参照してください。
SCN_DWELLSTART
の発行された後、マウスが動かされたりするほか、キーの押下などでマウスの停留状態が終了したときに SCN_DWELLEND
が発行されます。SCNotification
の用途は双方に共通しています。以下の通りです。
SCN_DWELLSTART
SCN_DWELLEND
SCN_DWELLSTART
is generated when the user keeps the mouse in one position for the
dwell period (see ).
SCN_DWELLEND
is
generated after a SCN_DWELLSTART
and the mouse is moved or other activity such as
key press indicates the dwell is over. Both notifications set the same fields in
SCNotification
:
項目 | 用途 |
---|---|
position |
マウスが停留しているところから一番近い文書上の位置です。 |
x, y |
マウスポインタが停留している位置です。 によって設定されています。 (x, y) |
Field | Usage |
---|---|
position |
This is the nearest position in the document to the position where the mouse pointer was lingering. |
x, y |
Where the pointer lingered. The position field is set to
. (x, y) |
ミリ秒単位でマウスの停留とみなす時間を指定または取得します。マウス停留が検出されると が発行されます。初期状態では停留イベントは発行されません。
SCI_SETMOUSEDWELLTIME
SCI_GETMOUSEDWELLTIME
These two messages set and get the time the mouse must sit still, in milliseconds, to generate
a notification. If
set to
SC_TIME_FOREVER
, the default, no dwell events are generated.
ユーザが表示の拡大縮小を行おうとしている場合に発行されます。キーボード操作によるものか によるものです。行番号余白の幅のやピクセル単位でなく文字単位の大きさの管理といった場合の位置の再計算に用いることが出来ます。
SCNotification
構造体は用いられていません。
SCN_ZOOM
This notification is generated when the user zooms the display using the keyboard or the
method is called. This
notification can be used to recalculate positions, such as the width of the line number margin
to maintain sizes in terms of characters rather than pixels.
SCNotification
has no
additional information.
ホットスポット特性を設定されたテキスト上でクリックあるいはダブルクリックされたときに発行されます。当該変数の定義部やウェブサイトへのリンクに用いることができます。項目 position
にクリックされた位置、modifiers
にクリック時に押下されていた修飾キーの情報が入っています。修飾キー情報は と同様のものです。
SCN_HOTSPOTCLICK
SCN_HOTSPOTDOUBLECLICK
These notifications are generated when the user clicks or double clicks on
text that is in a style with the hotspot attribute set.
This notification can be used to link to variable definitions or web pages.
The position
field is set the text position of the click or
double click and the modifiers
field set to the key modifiers
held down in a similar manner to .
コールチップ上でクリックされたときに発行されます。関数名が異なる引数でオーバロードされているときに、現在表示しているものとは違う引数の雛形を表示することに用いられます。項目 position
には上向き矢印をクリックされたときに 1, 下向き矢印の時に 2, そうでなければ 0 が収められています。
SCN_CALLTIPCLICK
This notification is generated when the user clicks on a calltip.
This notification can be used to display the next function prototype when a
function name is overloaded with different arguments.
The position
field is set to 1 if the click is in an up arrow,
2 if in a down arrow, and 0 if elsewhere.
次のメッセージは現在既存の Windows コントロールを模倣するために対応していますが、将来の版の Scintilla では削除される予定のものです。これらのメッセージを使っている場合は現行の等価なものに置き換えてください。
The following messages are currently supported to emulate existing Windows controls, but they will be removed in future versions of Scintilla. If you use these messages you should replace them with the Scintilla equivalent.
WM_GETTEXT(int length, char *text) WM_SETTEXT(<unused>, const char *text) EM_GETLINE(int line, char *text) EM_REPLACESEL(<unused>, const char *text) EM_SETREADONLY EM_GETTEXTRANGE(<unused>, TEXTRANGE *tr) WM_CUT WM_COPY WM_PASTE WM_CLEAR WM_UNDO EM_CANUNDO EM_EMPTYUNDOBUFFER WM_GETTEXTLENGTH EM_GETFIRSTVISIBLELINE EM_GETLINECOUNT EM_GETMODIFY EM_SETMODIFY(bool isModified) EM_GETRECT(RECT *rect) EM_GETSEL(int *start, int *end) EM_EXGETSEL(<unused>, CHARRANGE *cr) EM_SETSEL(int start, int end) EM_EXSETSEL(<unused>, CHARRANGE *cr) EM_GETSELTEXT(<unused>, char *text) EM_LINEFROMCHAR(int position) EM_EXLINEFROMCHAR(int position) EM_LINEINDEX(int line) EM_LINELENGTH(int position) EM_SCROLL(int line) EM_LINESCROLL(int column, int line) EM_SCROLLCARET() EM_CANPASTE EM_CHARFROMPOS(<unused>, POINT *location) EM_POSFROMCHAR(int position, POINT *location) EM_SELECTIONTYPE EM_HIDESELECTION(bool hide) EM_FINDTEXT(int flags, FINDTEXTEX *ft) EM_FINDTEXTEX(int flags, FINDTEXTEX *ft) EM_GETMARGINS EM_SETMARGINS(EC_LEFTMARGIN or EC_RIGHTMARGIN or EC_USEFONTINFO, int val) EM_FORMATRANGE
次の二つは Scintilla.h
で INCLUDE_DEPRECATED_FEATURES
を定義したときのみ実装されます。将来との互換性を確実にするためには各々の説明に従ってください。
The following are features that are only included if you define
INCLUDE_DEPRECATED_FEATURES
in Scintilla.h
. To ensure future
compatibility you should change them as indicated.
テキストの違う位置へカーソルが動かされたときに送信されます。
を代わりに使ってください。SCN_POSCHANGED() Deprecated
Fired when the user moves the cursor to a different position in the text. Use instead.
文書の文字か装飾が変化した場合、あるいは選択範囲が変更された場合に送信されます。現在は を用いて変化の詳細を知ることができます。
SCN_CHECKBRACE Deprecated
Either the text or styling of the document has changed or the selection range has changed.
This is replaced by . You
can also use for more
detailed information on text and styling changes,
EM_GETWORDBREAKPROC EM_GETWORDBREAKPROCEX EM_SETWORDBREAKPROC EM_SETWORDBREAKPROCEX EM_GETWORDWRAPMODE EM_SETWORDWRAPMODE EM_LIMITTEXT EM_EXLIMITTEXT EM_SETRECT EM_SETRECTNP EM_FMTLINES EM_GETHANDLE EM_SETHANDLE EM_GETPASSWORDCHAR EM_SETPASSWORDCHAR EM_SETTABSTOPS EM_FINDWORDBREAK EM_GETCHARFORMAT EM_SETCHARFORMAT EM_GETOLEINTERFACE EM_SETOLEINTERFACE EM_SETOLECALLBACK EM_GETPARAFORMAT EM_SETPARAFORMAT EM_PASTESPECIAL EM_REQUESTRESIZE EM_GETBKGNDCOLOR EM_SETBKGNDCOLOR EM_STREAMIN EM_STREAMOUT EM_GETIMECOLOR EM_SETIMECOLOR EM_GETIMEOPTIONS EM_SETIMEOPTIONS EM_GETOPTIONS EM_SETOPTIONS EM_GETPUNCTUATION EM_SETPUNCTUATION EM_GETTHUMB EM_GETEVENTMASK EM_SETEVENTMASK EM_DISPLAYBAND EM_SETTARGETDEVICE
Scintilla は意味を持っている限りの標準のエディットウィンドウコントロールやリッチエディットコントロールの上位互換であろうとします。ただし、ワープロとしての利用を考えていないため、いくつかのメッセージは相応に扱うことができません。対応していないメッセージは何ら実行に影響を与えません。
Scintilla tries to be a superset of the standard windows Edit and RichEdit controls wherever that makes sense. As it is not intended for use in a word processor, some edit messages can not be sensibly handled. Unsupported messages have no effect.
Scintilla や SciTE を構築するにはそれぞれのディレクトリにある README ファイルをお読みください。Windows では GCC 3.2, Borland C++, Microsoft Visual Studio .NET でビルドすることができます。Visual C++ 6 については、Scintilla 用の makefile はあります(scintilla/win32/scintilla_vc6.mak)が、SciTE 用がありません。GTK+ 用では GCC 3.1 を使うべきです。GTK+ 1.2x と 2.0x に対応しています。コンパイル環境の GTK+ の版は自動的に検出されます。両方がある場合は、コマンドラインで GTK1 を定義しないと GTK+ 1.x 用の構築ができません。
To build Scintilla or SciTE, see the README file present in both the Scintilla and SciTE directories. For Windows, GCC 3.2, Borland C++ or Microsoft Visual Studio .NET can be used for building. There is a make file for building Scintilla but not SciTE with Visual C++ 6 at scintilla/win32/scintilla_vc6.mak. For GTK+, GCC 3.1 should be used. GTK+ 1.2x and 2.0x are supported. The version of GTK+ installed should be detected automatically. When both GTK+ 1 and GTK+ 2 are present, building for GTK+ 1.x requires defining GTK1 on the command line.
Windows では Scintilla は通常 .DLL ファイルとして動的ライブラリの形で使われます。Scintilla を直接各自の .EXE あるいは .DLL ファイルの中に結合してしまいたい場合は、プリプロセッサシンボル STATIC_BUILD
を定義し、Scintilla_RegisterClasses
を呼び出します。STATIC_BUILD
は Scintilla 側で DllMain
関数が生成されるのを防ぎます。Scintilla_RegisterClasses
は 各自のアプリケーションの HINSTANCE
をとり、ウィンドウクラス "Scintilla" を確実に登録します。Scintilla にその余白区域へ右向きの矢印カーソルを確実に表示させるようにするには、scintilla/win32/Margin.cur
をアプリケーションのリソースに加え、その識別子 IDC_MARGIN
とします。これは scintilla/win32/platfromRes.h
で 400 に定義されています。
On Windows, Scintilla is normally used as a dynamic library as a .DLL file. If you want to
link Scintilla directly into your application .EXE or .DLL file, then the
STATIC_BUILD
preprocessor symbol should be defined and
Scintilla_RegisterClasses
called. STATIC_BUILD
prevents compiling the
DllMain
function which will conflict with any DllMain
defined in your
code. Scintilla_RegisterClasses
takes the HINSTANCE
of your
application and ensures that the "Scintilla" window class is registered. To make sure that the
right pointing arrow cursor used in the margin is displayed by Scintilla add the
scintilla/win32/Margin.cur
file to your application's resources with the ID
IDC_MARGIN
which is defined in scintilla/win32/platfromRes.h
as
400.
使用するコンパイラとリンカによっては解析器が切り捨てられてしまいます。この現象の大部分は静的ライブラリの構築に置いて発生します。Scintilla_LinkLexers()
関数を呼び出しておくと解析器を確実にリンクさせることができます。
Depending on the compiler and linker used, the lexers may be stripped out. This is most
often caused when building a static library. To ensure the lexers are linked in, the
Scintilla_LinkLexers()
function may be called.
Scintilla の解析器の集合を変更するには、まずディレクトリ scintilla/src
から解析器のソースファイル(Lex*.cxx
)を追加・削除してください。次に scintilla/src
から src/LexGen.py
スクリプトを実行し、makefile と KeyWords.cxx
を更新します。LexGen.py
は Python 2.1 以降が必要です。Python が使えない環境の場合は、手動により他の解析器の形に従う形で KeyWords.cxx
を書き換えることができます。解析器のソースコードで LINK_LEXER(lmMyLexer);
を含むことにより LexerModule lmMyLexer(...);
に合致させることが重要です。
To change the set of lexers in Scintilla, add and remove lexer source files
(Lex*.cxx
) from the scintilla/src directory
and run the
src/LexGen.py
script from the src
directory to update the make files
and KeyWords.cxx
. LexGen.py
requires Python 2.1 or later. If you do
not have access to Python, you can hand edit KeyWords.cxx
in a simple-minded way,
following the patterns of other lexers. The important thing is to include
LINK_LEXER(lmMyLexer);
to correspond with the LexerModule
lmMyLexer(...);
in your lexer source code.
Download Scintilla (Scintilla のダウンロード)