Scintilla icon Scintilla

Scintilla 解説書Scintilla Documentation

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.

はじめにIntroduction

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 プログラマによくなじみのある wParamlParam です。命令は記述されている引数だけを使います。すべてのメッセージは 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.

目次Contents

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 の構築
o Text retrieval and modification o Searching and replacing o Overtype
o Cut, copy and paste o Error handling o Undo and Redo
o Selection and information o Scrolling and automatic scrolling o White space
o Cursor o Mouse capture o Line endings
o Styling o Style definition o Caret, selection, and hotspot styles
o Margins o Other settings o Brace highlighting
o Tabs and Indentation Guides o Markers o Indicators
o Autocompletion o User lists o Call tips
o Keyboard commands o Key bindings o Popup edit menu
o Macro recording o Printing o Direct access
o Multiple views o Folding o Line wrapping
o Zooming o Long lines o Lexer
o Notifications o Deprecated messages o Edit messages never supported by Scintilla
o Building Scintilla

SCI_SETxxxxx という名前のメッセージはしばしば SCI_GETxxxxx というメッセージと対になっています。かったるい繰り返しを少なくするために、SCI_GETxxxxxSCI_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.

テキストの獲得と変更Text retrieval and modification

Scintilla が保持する文書の各文字は関連づけられた装飾情報を伴っています。文字オクテットと装飾オクテットの組はセルと呼ばれます。装飾オクテットは装飾番号を下位 5 ビットに、これとは独立して残りの 3 ビットを識別子(indicators) に使います。これにより大部分の言語に対応できる 32 種の基本修飾が可能となり、三つの独立識別子によって文法エラー、非推奨メッセージ、字下げの不整合などの情報も一度に表示可能となります。装飾に使うビット数は SCI_SETSTYLEBITS で変更でき、最大 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 SCI_SETSTYLEBITS 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

SCI_GETTEXT(int length, char *text)

文書の先頭から length-1 文字のテキストを取り出し、終端文字 0 を加えて返します。文書の全テキストを獲得するには SCI_GETLENGTH を用いて文書が保持する文字数 (nLen) を獲得してください。長さ nLen+1 バイトのバッファを割り当ててから SCI_GETTEXT(nLen+1, char *text) を呼び出します。text 引数が 0 の場合、文書のすべてを収めるに必要な大きさが返されます。テキストを保存したときは、 SCI_SETSAVEPOINT を用いてテキストを未編集扱いにするべきです。

参照: SCI_GETSELTEXT, SCI_GETCURLINE, SCI_GETLINE, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

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: SCI_GETSELTEXT, SCI_GETCURLINE, SCI_GETLINE, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

SCI_SETTEXT(<unused>, const char *text)

文書内のテキストすべてを指定した文字列で置き換えます。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.

SCI_SETSAVEPOINT

Scintilla に文書を未編集扱いにすることを伝えます。通常はファイルの保存あるいは読み出しを行ったときに実行することからこの名前(保存ポイント)があります。Scintilla がやり直しと再実行を扱うのと同様に、SCN_SAVEPOINTREACHEDSCN_SAVEPOINTLEFT の各通知メッセージにより、コンテナにファイルが変更されていることを考慮すべきかどうかを知らせることができます。(未訳: あとで意味の検証必要)

参照: SCI_EMPTYUNDOBUFFER, SCI_GETMODIFY

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 SCN_SAVEPOINTREACHED and SCN_SAVEPOINTLEFT notification messages, allowing the container to know if the file should be considered dirty or not.

See also: SCI_EMPTYUNDOBUFFER, SCI_GETMODIFY

SCI_GETLINE(int line, char *text)

text 引数で指定されたバッファを、指定された行の内容で満たします。行番号は 0 から始まります。バッファは 0 を終端文字に持ちません。バッファがテキストを格納するに充分な長さを持っていることは呼び出し側が保証しなくてはなりません。SCI_LINELENGTH(int line) を使ってください。戻り値はバッファに複写された文字数です。返された文字列は行末文字を含んでいます。文書がもつ行数を超える行番号が指定された場合は一文字も複写されません。text 引数が 0 の場合は行全体を保存するに必要な長さが返されます。

参照: SCI_GETCURLINE, SCI_GETSELTEXT, SCI_GETTEXTRANGE, SCI_GETSTYLEDTEXT, SCI_GETTEXT

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 SCI_LINELENGTH(int line). 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: SCI_GETCURLINE, SCI_GETSELTEXT, SCI_GETTEXTRANGE, SCI_GETSTYLEDTEXT, SCI_GETTEXT

SCI_REPLACESEL(<unused>, const char *text)

アンカーから現在位置までの選択範囲のテキストを指定した 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

これらのメッセージは文書の「読み出し専用」フラグを設定したり読み出したりします。文書を読み出し専用にすると、テキストを変更しようとしたときに SCN_MODIFYATTEMPTRO 通知が発生します。

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 SCN_MODIFYATTEMPTRO notification.

SCI_GETTEXTRANGE(<unused>, TextRange *tr)

cpMin から cpMax までの範囲の文字列を lpstrText に複写します(Scintilla.h にある TextRange 構造体を参照ください)。cpMax が -1 の場合は文書の最後までが範囲となります。返される文字列は 0 終端を持ちます。従って、バッファの大きさは読み出し予定の大きさよりも少なくとも 1 文字長くなくてはなりません。戻り値は終端の 0 を含まない文字列の長さです。

参照: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETCURLINE, SCI_GETSTYLEDTEXT, SCI_GETTEXT

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: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETCURLINE, SCI_GETSTYLEDTEXT, SCI_GETTEXT

SCI_GETSTYLEDTEXT(<unused>, TextRange *tr)

装飾情報を含めて文字列をバッファに複写します。各セルは 2 オクテットを使用し、各セル内の下位アドレス側に文字、上位アドレス側に装飾情報が格納されます。cpMin から cpMax までの文字が lpstrText に複写されます(Scintilla.h にある TextRange 構造体を参照ください)。終端には 2 オクテットの 0 が追加されます。従って lpstrText で指定するバッファは少なくとも 2*(cpMax-cpMin)+2 バイトの大きさが必要です。cpMincpMax が有効な値かどうかの検査は行われません。文書の外を示す位置は文字・装飾情報ともに 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.

参照: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETCURLINE, SCI_GETTEXTRANGE, SCI_GETTEXT

See also: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETCURLINE, SCI_GETTEXTRANGE, SCI_GETTEXT

SCI_ALLOCATE(int bytes, <unused>)

与えられたバイト数を格納するに充分な文書バッファを割り当てます。その文書は現在の内容よりも小さくなることはありません。

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.

SCI_ADDTEXT(int length, const char *s)

文字列 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_ADDSTYLEDTEXT(int length, cell *s)

SCI_ADDTEXT と同様ですが、挿入されるのは装飾付文字列です。

SCI_ADDSTYLEDTEXT(int length, cell *s)
This behaves just like SCI_ADDTEXT, but inserts styled text.

SCI_APPENDTEXT(int length, const char *s)

文字列 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.

SCI_INSERTTEXT(int pos, const char *text)

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

文書が読み出し専用でない限り、テキストすべてを削除します。

SCI_CLEARALL
Unless the document is read-only, this deletes all the text.

SCI_CLEARDOCUMENTSTYLE

解析器を選択した後など、文書全体を再装飾したい場合は 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.

SCI_GETCHARAT(int pos)

文書内の位置 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.

SCI_GETSTYLEAT(int pos)

文書内の位置 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.

SCI_SETSTYLEBITS(int bits)
SCI_GETSTYLEBITS

各セルで装飾情報に使われるビット数の設定と読み出しを行います。装飾情報は最大 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).

TextRangeCharacterRange

これらの構造体は 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;
};

検索と置換Searching

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 \).

searchFlagsSCFIND_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*mSm, Sam, Saam, Saaam などのすべてに合致します。
+ 1 回以上の繰り返しに合致します。Sa+mSam, 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.

SCI_FINDTEXT(int searchFlags, TextToFind *ttf)

文書内の文字列を検索します。選択範囲を参照したり移動させたりはしません。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.cpMinchrg.cpMax に設定してください。SCFIND_REGEXP がフラグに含まれていなければ、chrg.cpMaxchrg.cpMin より小さくすることで逆方向検索が行えます。SCFIND_REGEXP が含まれている場合は常に順方向検索となります(chrg.cpMaxchrg.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.cpMinchrgText.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.

参照: SCI_SEARCHINTARGET

See also: SCI_SEARCHINTARGET

TextToFind

この構造体は正確に 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)

これらによって再配置可能な検索を実行できます。マクロで記録できるような対話的多重インクリメンタルサーチが可能となります。(未訳)この三種のメッセージは SCN_MACRORECORD通知を送ります。

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 SCN_MACRORECORD notifications if macro recording is enabled.

SCI_SEARCHANCHOR は検索の開始位置を設定し、SCI_SEARCHNEXTSCI_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_SEARCHNEXTSCI_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.

参照: SCI_SEARCHINTARGET, SCI_FINDTEXT

See also: SCI_SEARCHINTARGET, SCI_FINDTEXT

target を使う検索と置換Search and replace using the target

SCI_REPLACESEL を使うと視覚的に確認できるその他の変更やスクロールが発生します。これは時に思わぬ動作の場合があります。「すべてを置換」のような多数の変更を行う場合、target を代わりに使うことができます。まず変更される範囲を target に設定し、SCI_REPLACETARGETSCI_REPLACETARGETRE を呼び出します。

Using SCI_REPLACESEL, modifications cause scrolling and other visible changes, which may take some time and cause unwanted display updates. If performing many changes, such as a replace all command, the target can be used instead. First, set the target, ie. the range to be replaced. Then call SCI_REPLACETARGET or SCI_REPLACETARGETRE.

target で指定した範囲内での検索は SCI_SEARCHINTARGET で実行されます。文字数を別に与えられた文字列を使うため、ヌル文字を検索することもできます。検索に成功すると範囲の長さ、失敗すると -1 が返されます。失敗した場合、target は削除されません。SCFIND_MATCHCASE, SCFIND_WHOLEWORD, SCFIND_WORDSTART, SCFIND_REGEXP といったフラグが SCI_SEARCHINTARGET で使われる際、SCI_SETSEARCHFLAGS とも組み合わせることができます。構造体へのポインタが不要なことから、SCI_SEARCHINTARGET はいくつかの場合において SCI_FINDTEXT よりも簡単に使うことができます。

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 SCI_FINDTEXT, 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)

SCI_SETTARGETSTART(int pos)
SCI_GETTARGETSTART
SCI_SETTARGETEND(int pos)
SCI_GETTARGETEND

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.

SCI_TARGETFROMSELECTION

target の範囲が選択範囲に一致するよう再設定します。

SCI_TARGETFROMSELECTION
Set the target start and end to the start and end positions of the selection.

SCI_SETSEARCHFLAGS(int searchFlags)
SCI_GETSEARCHFLAGS

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_SEARCHINTARGET(int length, const char *text)

SCI_SETTARGETSTARTSCI_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.

SCI_REPLACETARGET(int length, const char *text)

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.

SCI_REPLACETARGETRE(int length, const char *text)

正規表現を使った合致部分の置換を行います。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.

参照: SCI_FINDTEXT

See also: SCI_FINDTEXT

上書きモードOvertype

SCI_SETOVERTYPE(bool overType)
SCI_GETOVERTYPE

上書きモードが有効になっていると、キー入力した文字でキャレットの右側の文字を置換していきます。無効になっているときはキャレットの位置に挿入されます。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.

切り取り、コピー、貼り付けCut, copy and paste

SCI_CUT
SCI_COPY
SCI_PASTE
SCI_CLEAR
SCI_CANPASTE
SCI_COPYRANGE(int start, int end)
SCI_COPYTEXT(int length, const char *text)

SCI_CUT
SCI_COPY
SCI_PASTE
SCI_CLEAR
SCI_CANPASTE

クリップボードに対する標準的な切り取り、コピー、あるいはクリップボードから文書への貼り付け、および文書の全消去を行います。
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(int start, int end)
SCI_COPYTEXT(int length, const char *text)

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.

エラーの取り扱いError handling

SCI_SETSTATUS(int status)
SCI_GETSTATUS

エラーが発生したとき、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).

取り消しと再実行Undo and Redo

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_CANUNDO

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_CANREDO

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.

SCI_EMPTYUNDOBUFFER

Scintilla に取り消し・再実行のための履歴記録を破棄させます。同時に取り消しバッファの開始点を保存しますので、文書は未編集状態として扱われます。この処理ではコンテナに SCN_SAVEPOINTREACHED 通知を送りません。

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 SCN_SAVEPOINTREACHED notification to be sent to the container.

参照: SCI_SETSAVEPOINT

See also: SCI_SETSAVEPOINT

SCI_SETUNDOCOLLECTION(bool collectUndo)
SCI_GETUNDOCOLLECTION

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.

SCI_BEGINUNDOACTION
SCI_ENDUNDOACTION

これらのメッセージを 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.

選択と情報Selection and information

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

これらのメッセージはともに文書の長さを文字数で返します。

(訳注: 文字数ではなくオクテット数なのだろうが未確認)

SCI_GETTEXTLENGTH
SCI_GETLENGTH
Both these messages return the length of the document in characters.

SCI_GETLINECOUNT

文書内の行数を返します。空の文書は 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.

SCI_GETFIRSTVISIBLELINE

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

画面に完全に表示できる行の数を返します。行の高さが一定ならば、この値は垂直方向の利用可能空間を行数で割ったものです。表示可能行がぴったり収まるようにウィンドウをリサイズするまでは画面の下端に部分的に見える行があるかも知れません。

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.

SCI_GETMODIFY

文書が変更されていれば 0 以外が、未変更ならば 0 が返されます。文書の変更状態は、取り消し情報列において保存位置と取り消し位置が異なるかどうかで決まります。この保存位置は通常ファイルにデータを保存した位置です。保存位置は SCI_SETSAVEPOINT で設定できます。

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 SCI_SETSAVEPOINT, usually when you have saved data to a file.

文書が変更されようとしていることを知るには、保存位置に達したり保存位置から移動したりした際に Scintilla がコンテナに対して送る SCN_SAVEPOINTREACHEDSCN_SAVEPOINTLEFT 通知メッセージを利用します。

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 SCN_SAVEPOINTREACHED and SCN_SAVEPOINTLEFT notification messages.

SCI_SETSEL(int anchorPos, int currentPos)

アンカーと現在位置の両方を設定します。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.

SCI_GOTOPOS(int pos)

選択範囲が無くなり、キャレットを 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.

SCI_GOTOLINE(int line)

選択範囲が無くなり、キャレットを行番号 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)

現在位置を変更し、アンカーとの間に選択範囲を設定します。キャレットを表示させるためのスクロールは行われません。

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.

参照: SCI_SCROLLCARET

See also: SCI_SCROLLCARET

SCI_GETCURRENTPOS

現在位置を示す値を返します。

SCI_GETCURRENTPOS
This returns the current position.

SCI_SETANCHOR(int pos)

アンカーを移動し現在位置との間に選択範囲を設定します。キャレットを表示させるためのスクロールは行われません。

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.

参照: SCI_SCROLLCARET

See also: SCI_SCROLLCARET

SCI_GETANCHOR

アンカー位置を示す値を返します。

SCI_GETANCHOR
This returns the current anchor position.

SCI_SETSELECTIONSTART(int pos)
SCI_SETSELECTIONEND(int pos)

これらのメッセージはアンカーがキャレットよりも前(先行する側)にあることを前提として選択範囲を設定します。キャレットを表示させるためのスクロールは行われません。実行後のキャレットとアンカーの位置については次の表をご覧ください。

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

参照: SCI_SCROLLCARET

anchor current
SCI_SETSELECTIONSTART pos Max(pos, current)
SCI_SETSELECTIONEND Min(anchor, pos) pos

See also: SCI_SCROLLCARET

SCI_GETSELECTIONSTART
SCI_GETSELECTIONEND

選択範囲の開始端と終端を返します。キャレットとアンカーの前後関係には影響されません。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

文書内のすべてのテキストを選択します。キャレットを表示させるためのスクロールは行われません。

SCI_SELECTALL
This selects all the text in the document. The current position is not scrolled into view.

SCI_LINEFROMPOSITION(int pos)

文書内の位置 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.

SCI_POSITIONFROMLINE(int line)

文書内における指定された行の開始位置を返します。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.

SCI_GETLINEENDPOSITION(int line)

行末の位置、具体的には行末文字の直前の位置を返します。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?).

SCI_LINELENGTH(int line)

行末文字まで含めた行の長さを返します。line が負数であったり文書の最終行を越えていたりする場合は 0 を返します。行末文字を含まない行の長さを知る場合は SCI_GETLINEENDPOSITION(line) - SCI_POSITIONFROMLINE(line) を求めてください。

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 SCI_GETLINEENDPOSITION(line) - SCI_POSITIONFROMLINE(line).

SCI_GETSELTEXT(<unused>, char *text)

現在の選択範囲にある文字列をコピーし、終端に 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.

参照: SCI_GETCURLINE, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

See also: SCI_GETCURLINE, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

SCI_GETCURLINE(int textLen, char *text)

キャレットがある行のテキストを取得し、その行におけるキャレットの位置を返します。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.

参照: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

See also: SCI_GETSELTEXT, SCI_GETLINE, SCI_GETTEXT, SCI_GETSTYLEDTEXT, SCI_GETTEXTRANGE

SCI_SELECTIONISRECTANGLE

矩形選択モードの時は 1 、そうでなければ 0 を返します。

SCI_SELECTIONISRECTANGLE
This returns 1 if the current selection is in rectangle mode, 0 if not.

SCI_SETSELECTIONMODE
SCI_GETSELECTIONMODE

選択モードの設定と取得を行います。ストリーム(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.

SCI_GETLINESELSTARTPOSITION(int line)
SCI_GETLINESELENDPOSITION(int line)

指定された行における選択範囲の開始点や終了点を返します。当該行に選択範囲がない場合は 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

可視範囲の上下からキャレットがはみ出して見えないとき、可視範囲の一番近い行へキャレットを移動します。選択範囲はキャンセルされます。

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.

SCI_WORDENDPOSITION(int position, bool onlyWordCharacters)
SCI_WORDSTARTPOSITION(int position, bool onlyWordCharacters)

Scintilla が内部で使う単語定義と同様のものを用いて単語の開始点や終了点を求めます。どの文字を単語の一部として扱うかについて独自の情報を SCI_SETWORDCHARS で与えることができます。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 SCI_SETWORDCHARS. The position sets the start or the search, which is forwards when searching for the end and backwards when searching for the start.

onlyWordCharacterstrue (1) を与えると、検索方向に向かって単語を構成しない文字で止まります。onlyWordCharactersfalse (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" が単語構成文字で "," がそうでない場合、"|" で位置を表して、truefalseonlyWordCharacters への指定値だとすると次の表のような結果になります。

初期状態 〜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..

SCI_POSITIONBEFORE(int position)
SCI_POSITIONAFTER(int position)

文書内の指定位置の直前や直後の位置を返します。現在のコードページを意識します。最小の位置は 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.

SCI_TEXTWIDTH(int styleNumber, const char *text)

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)

指定行のピクセル単位の高さを返します。現時点では全ての行が同じ高さを持っています。

SCI_TEXTHEIGHT(int line)
This returns the height in pixels of a particular line. Currently all lines are the same height.

SCI_GETCOLUMN(int pos)

文書内の位置 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.

SCI_FINDCOLUMN(int line, int column)

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(int x, int y)
SCI_POSITIONFROMPOINTCLOSE(int x, int y)

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.

SCI_POINTXFROMPOSITION(<unused>, int pos)
SCI_POINTYFROMPOSITION(<unused>, int pos)

文書内における位置 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)

選択範囲がわかるように描画する通常の状態は SCI_SETSELFORESCI_SETSELBACK によって設定しますが、このメッセージによって選択範囲を「隠す」ようにすると、選択範囲も通常のテキストとして描画されます。

SCI_HIDESELECTION(bool hide)
The normal state is to make the selection visible by drawing it as set by SCI_SETSELFORE and SCI_SETSELBACK. However, if you hide the selection, it is drawn as normal text.

SCI_CHOOSECARETX

垂直移動の際、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.

スクロールと自動スクロールScrolling and automatic scrolling

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)

指定した桁数分と行数分の画面スクロールを試みます。正の行数は最上部の行番号を増やすようにスクロールします。つまりユーザから見てテキストが上に動くように見えます。負の行数は逆方向にこれを行います。

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.

参照: SCI_SETXOFFSET

See also: SCI_SETXOFFSET

SCI_SCROLLCARET

現在位置(選択範囲がなければキャレット位置)が見えない状態の時はスクロールによって見えるようにします。これは現在のキャレットポリシーに従う動作を行います。

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.

SCI_SETXCARETPOLICY(int caretPolicy, int caretSlop)
SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop)

キャレットポリシーを設定します。caretPolicyCARET_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

SCI_SETVISIBLEPOLICY(int caretPolicy, int caretSlop)

SCI_ENSUREVISIBLEENFORCEPOLICY が呼び出されたときに垂直位置をどのように定めるかを指定します。VISIBLE_SLOP および VISIBLE_STRICT フラグがポリシー引数となります。SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop) と同様の処理を行います。

SCI_SETVISIBLEPOLICY(int caretPolicy, int caretSlop)
This determines how the vertical positioning is determined when SCI_ENSUREVISIBLEENFORCEPOLICY is called. It takes VISIBLE_SLOP and VISIBLE_STRICT flags for the policy parameter. It is similar in operation to SCI_SETYCARETPOLICY(int caretPolicy, int caretSlop).

SCI_SETHSCROLLBAR(bool visible)
SCI_GETHSCROLLBAR

水平スクロールバーは計算した幅に必要な場合のみ表示されます。SCI_SETHSCROLLBAR(0) というコードで水平スクロールバーは全く表示されなくなります。SCI_SETHSCROLLBAR(1) で再び表示されるようになります。
SCI_GETHSCROLLBAR は現在の状態を返します。標準状態では水平スクロールバーが表示されるようになっています。
参照: SCI_SETSCROLLWIDTH

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_SETSCROLLWIDTH.

SCI_SETVSCROLLBAR(bool visible)
SCI_GETVSCROLLBAR

標準状態手は、垂直スクロールバーは必要に応じて常に表示されます。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.

SCI_SETXOFFSET(int xOffset)
SCI_GETXOFFSET

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.

参照: SCI_LINESCROLL

See also: SCI_LINESCROLL

SCI_SETSCROLLWIDTH(int pixelWidth)
SCI_GETSCROLLWIDTH

実行速度の面から、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(bool endAtLastLine)
SCI_GETENDATLASTLINE

SCI_SETENDATLASTLINE でスクロール幅を設定します。標準では、最大のスクロール位置で最終行が可視範囲の一番下に現れます。endAtLastLinefalse を指定すると最終行からさらに一頁下にスクロールします。

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.

ホワイトスペースWhite space

SCI_SETVIEWWS(int wsMode)
SCI_GETVIEWWS
SCI_SETWHITESPACEFORE(bool useWhitespaceForeColour, int colour)
SCI_SETWHITESPACEBACK(bool useWhitespaceBackColour, int colour)

SCI_SETVIEWWS(int wsMode)
SCI_GETVIEWWS

ホワイトスペースは目に見えるようにすることができます。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<(bool useWhitespaceForeColour, int colour)
SCI_SETWHITESPACEBACK(bool useWhitespaceBackColour, int colour)

標準状態では、見えるようにされたホワイトスペースは使用中の解析器に定義されます。文字色と背景色は一方または両方を共有特性として定義でき、SCI_SETWHITESPACEFORESCI_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.

マウスカーソルCursor

SCI_SETCURSOR(int curType)

マウスカーソルはその位置の内容に応じて変化します。テキスト上にあるときと余白にあるときは異なることがあります。遅いカーソルを実現したい場合はカーソルの待ち手法を変更することができます。手法は 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.

マウスキャプチャMouse capture

SCI_SETMOUSEDOWNCAPTURES(bool captures)
SCI_GETMOUSEDOWNCAPTURES

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).

行末文字Line endings

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

SCI_SETEOLMODE(int eolMode) SCI_GETEOLMODE

ユーザが Enter キーを押したときに挿入される文字は SCI_SETEOLMODE で設定できます。eolModeSC_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.

SCI_CONVERTEOLS(int eolMode)

文書内のすべての行末文字を 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(bool visible)
SCI_GETVIEWEOL

通常、行末文字は隠されていますが SCI_SETVIEWEOL で設定することによりこれを見えるようにすることができます。visibletrue を指定すると見えるようになり、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.

装飾Styling

ここで解説する装飾系のメッセージはテキストの装飾割り当てを行います。Scintilla の標準設定では、文字毎に 8 ビットの情報が持てる中で 5 ビットを装飾 ( ビット 0 〜 4 = 装飾番号 0 〜 31 )に、残りの 3 ビットを指標に割り当てます。装飾と指標の配分は SCI_SETSTYLEBITS で変更できます。既存の標準解析器の中に欲しい装飾方法がある場合、あるいは自分で解析器を書く場合のいずれでも、解析器はおそらく文書を装飾表示する最も簡単な方法です。装飾を実行するコンテナを使うことに決めたときは SCI_SETLEXERSCLEX_CONTAINER を選択します。この場合、テキストを表示用に装飾する必要が出るたびに SCN_STYLENEEDED 通知がコンテナに送られます。装飾は空き時間で行うように指示することができます。解析器を使っている場合も含め、コンパイラが見つけたエラーに印をつけるために装飾コマンドを使うこともあるでしょう。次のコマンドが提供されています。

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 SCI_SETSTYLEBITS. 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 SCI_SETLEXER command to select SCLEX_CONTAINER, in which case the container is sent a SCN_STYLENEEDED 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

SCI_GETENDSTYLED

Scintilla は正しく装飾されたと思われる最後の文字を記録しています。その次の文字が装飾されれば記録はその方向へ移動し、それ以前の文字が修正されれば記録の位置も戻ります。テキストの描画の前に何らかの装飾が必要かどうかを知るためにこの位置が検査され、もし必要ならば通知 SCN_STYLENEEDED がコンテナに送られます。コンテナは 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 SCN_STYLENEEDED 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.

SCI_STARTSTYLING(int pos, int mask)

装飾処理の準備をします。位置 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.

SCI_SETSTYLING(int length, int 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_SETSTYLINGEX(int length, const char *styles)

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.

SCI_SETLINESTATE(int line, int value)
SCI_GETLINESTATE(int line)

各文字に対し 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

行の状態を持っているもののうちで最終の行を返します。

SCI_GETMAXLINESTATE
This returns the last line that has any line state.

装飾の定義Style definition

前節で解説した装飾設定メッセージはテキストに関係づけられた装飾番号を変更するものでした。ここではそれらの装飾番号に対して視覚的にどう表現するかを定義するメッセージを紹介します。装飾ビットには 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 SCI_SETSTYLEBITS 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 でなくてはなりません。マスクについては SCI_SETMARGINMASKN を参照してください。
STYLE_BRACELIGHT 34 括弧の強調に関する装飾番号です。SCI_BRACEHIGHLIGHT メッセージで使うほか、SCI_SETHIGHLIGHTGUIDE で関係し合う字下げ部の強調表示にも使用されます。
STYLE_BRACEBAD 35 対応の付かない括弧に関する装飾番号です。SCI_BRACEBADLIGHT メッセージで使用します。
STYLE_CONTROLCHAR 36 制御文字に関する装飾番号です。フォント、文字の大きさ、太字、イタリック体、文字集合の属性が使用できます。他方、色の属性は利用できません。
参照: SCI_SETCONTROLCHARSYMBOL
STYLE_INDENTGUIDE 37 字下げ情報を表示する部分の前景色と背景色に関する装飾番号です。
STYLE_LASTPREDEFINED 39 コードを書く側が定義済みスタイル番号を検出できるように定義されている値です。この値は定義済み装飾番号のうち最後のものに設定されています。現時点の最終番号は 37 であるのに対してこの値が 39 になっています。これは将来の定義済み装飾番号のために予約されているものです。
STYLE_MAX 127 これは装飾属性ではありませんが、使用可能な装飾番号の最大値を保持しています。SCI_SETSTYLEBITS を用いて装飾ビットを 5 ビットより多くした場合は STYLE_LASTPREDEFINEDSTYLE_MAX の間の装飾番号が充当されることになります。
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 SCI_SETMARGINMASKN for more about masks.
STYLE_BRACELIGHT 34 This style sets the attributes used when highlighting braces with the SCI_BRACEHIGHLIGHT message and when highlighting the corresponding indentation with SCI_SETHIGHLIGHTGUIDE.
STYLE_BRACEBAD 35 This style sets the display attributes used when marking an unmatched brace with the SCI_BRACEBADLIGHT 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: SCI_SETCONTROLCHARSYMBOL.
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 SCI_SETSTYLEBITS 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)

SCI_STYLERESETDEFAULT

STYLE_DEFAULT を Scintilla が初期化されたときの状態に戻します。

SCI_STYLERESETDEFAULT
This message resets STYLE_DEFAULT to its state when Scintilla was initialised.

SCI_STYLECLEARALL

すべての装飾を STYLE_DEFAULT の状態に設定します。文法による色づけの用途で Scintilla を使っているなら、解析による装飾はおおよそ似たものになるでしょう。装飾設定の手順の一つは次のようになります。

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.

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)

これらおよびメッセージ SCI_STYLESETCHARACTERSET はフォント属性を設定し、これらが要求されたときの合致条件として使用されます。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 SCI_STYLESETCHARACTERSET) 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)

装飾に下線を使うようにします。下線は文字色で描かれます。下線の属性を持つ文字はホワイトスペースも含めてすべて下線が引かれます。

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.

SCI_STYLESETFORE(int styleNumber, int colour)
SCI_STYLESETBACK(int styleNumber, int colour)

テキストは前景色(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.

SCI_STYLESETEOLFILLED(int styleNumber, bool eolFilled)

行の最後にある文字が属性設定を受けた装飾を持つとき、その右側からウィンドウの右端までは最後の文字の背景色で塗りつぶされます。HTML の中の JavaScript など、ある言語の中に別の言語が内包されているときにこの機能は便利です。eolFilledtrue に、かつ内包された側の言語の背景色を一定の内包する側とは違う色にすると、この場合なら 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(int styleNumber, int charSet)

標準とは異なる文字集合に装飾をつけることができます。そういった文字集合が注釈や文字列で使えると便利です。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.

SCI_STYLESETCASE(int styleNumber, int caseMode)

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.

SCI_STYLESETVISIBLE(int styleNumber, bool visible)

通常、テキストは「見えます」。しかしながら、このメッセージにおいて 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.

SCI_STYLESETCHANGEABLE(int styleNumber, bool changeable)

これはまだ実験的で不完全な実装の装飾属性です。標準では changeabletrue に設定されていますがこれを 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)

マウスクリックを検出できるテキスト範囲を目立たせるために用いられます。マウスカーソルはホットスポットの上では手の形に変わり、前景色・背景色も変更され、下線が表示されてクリックに反応することを示します。他の文書へのハイパーリンク実装の一部としてつかうことができます。

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.

キャレット・選択範囲・ホットスポットの装飾Caret, selection, and hotspot styles

選択範囲は文字色・背景色の一方または両方を変更することで表示されます。各々が未設定だった場合は選択範囲に含まれても表示属性が変更されません。標準では背景色が明るい灰色になり、文字色は変更されないままとなっています。選択範囲がない場合は、現在の挿入点がテキストキャレットで印付けられます。キャレットは垂直な線で、通常はユーザが気づきやすいやすいように点滅をしています。

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

SCI_SETSELFORE(bool useSelectionForeColour, int colour)

選択範囲に対する標準設定を上書きすることができます。 useSelection*Colourtrue にすると任意の色を指定できます。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(int colour)
SCI_GETCARETFORE

キャレットの色を 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_SETCARETLINEVISIBLE(bool show)
SCI_GETCARETLINEVISIBLE
SCI_SETCARETLINEBACK(int colour)
SCI_GETCARETLINEBACK

キャレットのある行に対して特別に背景色を設定できます。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(int milliseconds)
SCI_GETCARETPERIOD

キャレットの点滅間隔は 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(int pixels)
SCI_GETCARETWIDTH

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,)

カーソルがホットスポット属性の修飾を受けているテキスト上にあるとき、標準の色づけを変更して下線を引くことができます。単線モードは行クリップをまたいでホットスポットを続けることを抑制します。

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.

SCI_SETCONTROLCHARSYMBOL(int symbol)
SCI_GETCONTROLCHARSYMBOL

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.

余白Margins

テキスト表示の左側には最大三つの余白が存在します。加えて、テキスト表示の上下左右に空間ができます。SCI_SETMARGINTYPEN によって、余白の各々は記号や行番号を表示するよう指定できます。余白毎に表示できる目印は SCI_SETMARGINMASKN で設定できます。可視状態の余白に関係づけられていない目印はテキストの背景色変更のように表示されます。ピクセル単位で余白毎の幅を設定できます。幅が 0 の余白は完全に無視されます。余白でマウスをクリックしたときの動作は SCN_MARGINCLICK でコンテナへの通知かテキスト一行の選択かを決めることができます。

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 SCI_SETMARGINTYPEN. The markers that can be displayed in each margin are set with SCI_SETMARGINMASKN. 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 SCN_MARGINCLICK 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)

SCI_SETMARGINTYPEN(int margin, int iType)
SCI_GETMARGINTYPEN(int margin)

余白の種別を設定あるいは取得します。引数 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.

SCI_SETMARGINWIDTHN(int margin, int pixelWidth)
SCI_GETMARGINWIDTHN(int margin)

余白幅をピクセル単位で設定もしくは取得します。幅 0 の余白は見えなくなります。標準では Scintilla は余白番号 1 に符号用の 16 ピクセルを与えていますので大きさの参考にしてください。行番号用の余白幅は文書内の行数と行番号装飾を考慮すべきです。SCI_TEXTWIDTH(STYLE_LINENUMBER, "_99999") といったコードで適切な幅を得られます。

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 SCI_TEXTWIDTH(STYLE_LINENUMBER, "_99999") to get a suitable width.

SCI_SETMARGINMASKN(int margin, int mask)
SCI_GETMARGINMASKN(int margin)

mask は 32 ビットの値で、各ビットが 32 種の論理記号に対応しています。論理記号は符号として余白に表示できるものです。折りたたみを示すことに使われる 7 つの論理記号をマスクするために SC_MASK_FOLDERS (0xFE000000,十進 -33554432) という定数があります。広範囲の符号と色を 32 種の論理記号の各々に割り当てることができます。目印を参考にしてください。(mask & SC_MASK_FOLDERS)==0 である場合は余白の背景色は装飾番号 33 (STYLE_LINENUMBER)で制御されています。

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 (STYLE_LINENUMBER).

SCI_MARKERADD により、行に対して論理上の目印を加えることができます。可視余白のマスクには現れない目印を持つ行はその行の背景色を変更します。例えば文法エラーのある行に論理番号 10 の目印を使い、背景色を変える場合を考えます。この目印に対するマスクは 0x400 ( 1 << 10, 1 を左に10回シフトした値 )です。符号余白のいずれもマスクに 0x400 を含んでいなければ、この目印を持つ行の背景色が変更されます。

You add logical markers to a line with SCI_MARKERADD. 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)

三つの各余白がマウスボタンクリックに反応するかどうかを定めます。反応する設定の余白でクリックすると、そのコンテナに SCN_MARGINCLICK 通知 が送信されます。反応しない設定の余白は選択範囲設定用余白として動作します。これは行単位で選択するのに便利です。標準ではどの余白もクリックに反応しない設定になっています。

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 SCN_MARGINCLICK 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.

SCI_SETMARGINLEFT(<unused>, int pixels)
SCI_GETMARGINLEFT
SCI_SETMARGINRIGHT(<unused>, int pixels)
SCI_GETMARGINRIGHT

テキスト部左右の余白幅を設定あるいは取得します。標準設定は左右とも 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.

SCI_SETFOLDMARGINCOLOUR(bool useSetting, int colour)
SCI_SETFOLDMARGINHICOLOUR(bool useSetting, int colour)

折りたたみ余白の通常と強調時の色に関する変更ができます。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).

その他の設定Other settings

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

SCI_SETUSEPALETTE(bool allowPaletteUse)
SCI_GETUSEPALETTE

同時に 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

描画バッファを使うかどうかの設定と現在状態の取得を行います。描画バッファを用いると、各行毎に直接画面に描画するのではなくいったんパッファに書き込みを行い、その後画面に複製を行います。バッファを使うとちらつきが抑えられますが処理速度は落ちます。初期状態ではバッファを使います。

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.

SCI_SETTWOPHASEDRAW(bool twoPhase)
SCI_GETTWOPHASEDRAW

テキストの二段階描画はよりきれいになりますが処理速度は落ちます。単段階描画では同じ装飾を受ける一連の文字を背景とともに描画します。その一続きの最後の文字が次の文字にかかるような場合、具体的には "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.

SCI_SETCODEPAGE(int codePage)
SCI_GETCODEPAGE

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,*".

codePageSC_CP_UTF8 でも 0 でもない値にした場合の動作は OS に依存します。

Setting codePage to a non-zero value that is not SC_CP_UTF8 is operating system dependent.

SCI_SETWORDCHARS(<unused>, const char *chars)

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_SETWHITESPACECHARS(<unused>, const char *chars)

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.

SCI_SETCHARSDEFAULT

単語とホワイトスペースを標準設定をに戻します。空白・タブ文字・コードが 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 '_'.

SCI_GRABFOCUS
SCI_SETFOCUS(bool focus)
SCI_GETFOCUS

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.

括弧の強調Brace highlighting

SCI_BRACEHIGHLIGHT(int pos1, int pos2)
SCI_BRACEBADLIGHT(int pos1)
SCI_BRACEMATCH(int position, int maxReStyle)

SCI_BRACEHIGHLIGHT(int pos1, int pos2)

最大二文字が「括弧の強調装飾」で強調されます。装飾番号は STYLE_BRACELIGHT (34) です。字下げ誘導が有効になっている場合、括弧に関連する字下げも強調したいと考えることがあるでしょう。SCI_GETCOLUMN で桁の位置を取得し、SCI_SETHIGHLIGHTGUIDE で字下げの強調を行うことができます。

SCI_BRACEHIGHLIGHT(int pos1, int pos2)
Up to two characters can be highlighted in a 'brace highlighting style', which is defined as style number STYLE_BRACELIGHT (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 SCI_GETCOLUMN and highlight the indent with SCI_SETHIGHLIGHTGUIDE.

SCI_BRACEBADLIGHT(int pos1)

対応する括弧が見つからない場合は 括弧の不正に対する強調装飾で対応のない括弧を強調することができます。装飾番号は 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(int pos, int maxReStyle)

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.

タブと字下げの誘導Tabs and Indentation Guides

字下げ(行先頭のホワイトスペース)はプログラマーが構造を明確にするためによく使われる他、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(int widthInChars)
SCI_GETTABWIDTH

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(bool useTabs)
SCI_GETUSETABS

SCI_SETUSETABS によって、字下げがタブ文字と空白文字の混成にならないようにしたり空白文字だけになったりするように設定できます。useTabsfalse (0) にすると素手のタブと字下げに空白文字を使わなくなります。初期状態では true です。SCI_GETCOLUMN を使うとタブ幅を考慮に入れた桁位置を取得することができます。

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 SCI_GETCOLUMN to get the column of a position taking the width of a tab into account.

SCI_SETINDENT(int widthInChars)
SCI_GETINDENT

SCI_SETINDENTSTYLE_DEFAULT で設定された空白の幅から字下げ幅を設定します。0 を指定すると字下げ幅はタブ幅と同じになります。字下げ幅に制限はありませんが、0 未満や大きすぎる値は想定外の挙動を起こすことがあります。

SCI_SETINDENT(int widthInChars)
SCI_GETINDENT
SCI_SETINDENT sets the size of indentation in terms of the width of a space in STYLE_DEFAULT. 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(bool tabIndents)
SCI_GETTABINDENTS
SCI_SETBACKSPACEUNINDENTS(bool bsUnIndents)
SCI_GETBACKSPACEUNINDENTS

字下げのホワイトスペース内では、タブキーと後退キーを字下げとその解除に使うことができます。それぞれ SCI_SETTABINDENTSSCI_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_SETLINEINDENTATION(int line, int indentation)
SCI_GETLINEINDENTATION(int line)

SCI_GETLINEINDENTATIONSCI_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)

指定行の字下げの終了位置を返します。

SCI_GETLINEINDENTPOSITION(int line)
This returns the position at the end of indentation of a line.

SCI_SETINDENTATIONGUIDES(bool view)
SCI_GETINDENTATIONGUIDES

字下げ誘導は垂直の点線で、字下げの空白の中に字下げ幅毎に現れます。これにより、特に複数ページに渡るような場合に、各行がどの構造に属しているのかがわかりやすくなります。装飾番号 STYLE_INDENTGUIDE (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 STYLE_INDENTGUIDE (37) is used to specify the foreground and background colour of the indentation guides.

SCI_SETHIGHLIGHTGUIDE(int column)
SCI_GETHIGHLIGHTGUIDE

括弧の強調が発生したとき、この括弧に関係する字下げ誘導をも強調することができます。これは装飾番号 STYLE_BRACELIGHT (34) の情報が使用されます。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, STYLE_BRACELIGHT (34). Set column to 0 to cancel this highlight.

マーカMarkers

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)

SCI_MARKERDEFINE(int markerNumber, int markerSymbols)

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.

SCI_MARKERDEFINEPIXMAP(int markerNumber, const char *xpm)

マーカは 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_FOLDERSC_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)

マーカ番号に対する前景色と背景色を設定します。

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.

SCI_MARKERADD(int line, int markerNumber)

指定行に指定番号のマーカを追加します。行番号がおかしい場合やメモリ不足などで失敗すると -1 を返します。それ以外の場合は追加後のマーカ制御番号を返します。マーカ制御番号は、移動や行の結合後のマーカを探す際の SCI_MARKERLINEFROMHANDLE や、マーカを削除する際の SCI_MARKERDELETEHANDLE で使用することができます。
指定されたマーカ番号自身や、すでにその行にマーカがあるかどうかは調べません。

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 SCI_MARKERLINEFROMHANDLE to find where a marker is after moving or combining lines and with SCI_MARKERDELETEHANDLE 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.

SCI_MARKERDELETE(int line, int markerNumber)

指定行番号で指定マーカ番号を探し、そのマーカがあればマーカを削除します。同じマーカを複数回加えていた場合はこれを一回にひとつずつ削除していきます。マーカ番号に -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.

SCI_MARKERDELETEALL(int markerNumber)

全ての行から指定番号のマーカを削除します。マーカ番号が -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.

SCI_MARKERGET(int line)

指定行にどのマーカがあるかを示す 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.

SCI_MARKERNEXT(int lineStart, int markerMask)
SCI_MARKERPREVIOUS(int lineStart, int markerMask)

指定された行以前または以後から指定されたマーカの集合を検索します。検索は行番号 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.

SCI_MARKERLINEFROMHANDLE(int markerHandle)

引数 markerHandleSCI_MARKERADD から返されたマーカへの識別子です。この関数はこの識別子があるマーカを検索します。見つかればその行番号、見つからなければ -1 を返します。

SCI_MARKERLINEFROMHANDLE(int markerHandle)
The markerHandle argument is an identifier for a marker returned by SCI_MARKERADD. 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.

SCI_MARKERDELETEHANDLE(int markerHandle)

引数 markerHandleSCI_MARKERADD から返されたマーカへの識別子です。この関数はこの識別子があるマーカを検索し、見つかればこのマーカを削除します。

SCI_MARKERDELETEHANDLE(int markerHandle)
The markerHandle argument is an identifier for a marker returned by SCI_MARKERADD. This function searches the document for the marker with this handle and deletes the marker if it is found.

標示Indicators

初期状態の 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.

標示は SCI_STARTSTYLINGINDICS_MASK マスクを用い、SCI_SETSTYLINGINDIC0_MASK, INDIC1_MASK, INDIC2_MASK を用いることで設定されます。

The indicators are set using SCI_STARTSTYLING with a INDICS_MASK mask and SCI_SETSTYLING with the values INDIC0_MASK, INDIC1_MASK and INDIC2_MASK.

装飾に使うビット数は SCI_SETSTYLEBITS によって 0 〜 7 の範囲で変更できます。残りのビットが標示に使われますので標示は 1 〜 8 ビットの範囲のいずれかです。しかしながら Scintilla.h で定義されている定数 INDIC*_MASK はすべて 5 ビットの装飾情報と 3 ビットの標示情報を前提としています。これと異なる配分を使う場合は自分で定数を定める必要があります。

The number of bits used for styles can be altered with SCI_SETSTYLEBITS from 0 to 7 bits. The remaining bits can be used for indicators, so there can be from 1 to 8 indicators. However, the 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)

特性の標示が使っている装飾の設定または取得を行います。標示のための装飾は現在次のものが使えます。

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(int indicatorNumber, int colour)
SCI_INDICGETFORE(int indicatorNumber)

標示を描画するための色を設定あるいは取得します。初期状態の標示の色は次と等価です。
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)

自動補完Autocompletion

自動補完機能はリストボックスを使ってユーザが入力した文字に近い識別子を表示するものです。ユーザは候補をタブキーで選択するか、更に候補を絞るために入力を続けるかします。候補は 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

SCI_AUTOCSHOW(int lenEntered, const char *list)

項目群を表示します。lenEntered は入力済みの文字数、list は特定の文字で区切られた単語項目群です。初期状態の区切り文字は空白ですが、SCI_AUTOCSETSEPARATOR および SCI_AUTOCGETSEPARATOR で変更あるいは取得が可能です。

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 SCI_AUTOCSETSEPARATOR and SCI_AUTOCGETSEPARATOR.

単語項目群は並べ替えが済んでいるものでなくてはなりません。 SCI_AUTOCSETIGNORECASE によって大文字小文字を区別しないように設定されている場合は、検索の前に大文字に変換されます。並べ替えを行った項目群は句読点文字のうち '[', '\', ']', '^', '_', '`' が他の文字の後ろに来ていなくてはならないことになります。

The list of words should be in sorted order. If set to ignore case mode with SCI_AUTOCSETIGNORECASE, 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

項目群の表示を中断します。自動補完実行中、どの項目の一部分にも該当しないことになる文字の入力があったときは項目群の表示は消去されるべきです。たとえば識別子の入力中に '.', '(','[' といった文字が来た場合などです。自動補完を中断する文字の集合は SCI_AUTOCSTOPS で指定できます。

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 SCI_AUTOCSTOPS.

SCI_AUTOCACTIVE

活性化中の自動補完項目群があれば 0 以外、なければ 0 を返します。

SCI_AUTOCACTIVE
This message returns non-zero if there is an active autocompletion list and zero if there is not.

SCI_AUTOCPOSSTART

SCI_AUTOCSHOW が項目群の表示を開始しているときに、現在位置を返します。

SCI_AUTOCPOSSTART
This returns the value of the current position when SCI_AUTOCSHOW started display of the list.

SCI_AUTOCCOMPLETE

自動補完機能を活性化させます。タブキーと同じ効果を持ちます。

SCI_AUTOCCOMPLETE
This message triggers autocompletion. This has the same effect as the tab key.

SCI_AUTOCSTOPS(<unused>, const char *chars)

引数 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_AUTOCSETSEPARATOR(char separator)
SCI_AUTOCGETSEPARATOR

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.

SCI_AUTOCSELECT(<unused>, const char *select)
SCI_AUTOCGETCURRENT

自動補完項目群の中からselect に最初に合致する項目を選択します。初期状態では大文字小文字を区別しますが SCI_AUTOCSETIGNORECASE で区別しないようにもできます。合致検査は select と一文字ずつ行われます。select が "Fred" であれば "Fred" で始まる項目群の最初にある例えば "Frederick" が合致するものとみなされます。項目が見つかればこれが選択されます。SCI_AUTOCSETAUTOHIDE で自動消去が有効になっている場合、項目が見つからなければ項目群表示が消去されます。現在選択されている項目は 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 SCI_AUTOCSETIGNORECASE. 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 SCI_AUTOCSETAUTOHIDE).
The current selection can be retrieved with SCI_AUTOCGETCURRENT

SCI_AUTOCSETCANCELATSTART(bool cancel)
SCI_AUTOCGETCANCELATSTART

初期状態では、項目群の表示が行われたときよりもキャレットが後退方向に移動したときにその項目群が取り消されるようになっています。引数に 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)

自動補完項目群が活性化しているときに決定を意味する文字を入力すると、現在選択中の項目とそれに続いてその決定を促した文字が入力されます。一般的な決定文字は '(', '[', '.' ですが、使っている言語によりその他の文字も使われます。初期状態ではこのような決定文字は定義されていません。

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(bool chooseSingle)
SCI_AUTOCGETCHOOSESINGLE

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

項目群をなす項目群が大文字小文字を区別するかどうかを設定または取得します。初期状態では区別します。

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.

SCI_AUTOCSETAUTOHIDE(bool autoHide)
SCI_AUTOCGETAUTOHIDE

初期状態では、取りうる項目が無くなってしまった場合は項目群が取り消されます。どの項目にも合致しない入力があった場合がそれです。autoHidefalse にすると、このようなときに元の項目群を保持し続けます。この指定は SCI_AUTOCSELECT にも影響を与えます。

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 SCI_AUTOCSELECT.

SCI_AUTOCSETDROPRESTOFWORD(bool dropRestOfWord)
SCI_AUTOCGETDROPRESTOFWORD

dropRestOfWordtrue に設定されていると、項目が選択されたときにキャレットのうしろの単語構成文字が先だって消去されます。初期設定では 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.

SCI_REGISTERIMAGE(int type, const char *xpmData)
SCI_CLEARREGISTEREDIMAGES
SCI_AUTOCSETTYPESEPARATOR(char separatorCharacter)
SCI_AUTOCGETTYPESEPARATOR

自動補完項目群は文字列の代わりに画像で表示することもできます。各画像は整数型で登録され、'?' で区切られた項目群文字列の形で使われます。"fclose?2 fopen" という文字列は画像番号 2 を "fclose" の前に表示し、"fopen" の前には画像がないという指定になります。画像は SCI_MARKERDEFINEPIXMAP 用の XPM 形式です。登録した画像は 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 SCI_MARKERDEFINEPIXMAP The set of registered images can be cleared with SCI_CLEARREGISTEREDIMAGES and the '?' separator changed with SCI_AUTOCSETTYPESEPARATOR.

ユーザによる項目群User lists

ユーザによる項目群は、自動補完と内部的に同じ機構を使っています。自動補完機能用の呼び出しをそのまま適用することができます。自動補完項目群が活性化しているときはユーザ項目群は表示できません。また次のような違いがあります。

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 SCI_AUTOCSETCHOOSESINGLE message has no effect.
o When the user makes a selection you are sent a SCN_USERLISTSELECTION 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.

SCI_USERLISTSHOW(int listType, const char *list)

媒介変数 listTypeSCNotification 構造体の 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 SCNotification 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

コールチップとは関数の引数を表示する小さなウィンドウで、ユーザが関数名を入力した後に表示されるものです。コールチップは自動補完項目群との間で一部内部的動作を行います。コールチップは活性化状態の自動補完項目群を取り消す、などです。

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.cxxSciTEBase::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.

コールチップ上でマウスボタンクリックを行うことができ、クリックされるとそのコンテナに SCN_CALLTIPCLICK を送信します。'\001' や '\002' の文字を入れることで、小さな上下の矢印を表示することができます。ある関数名に対するオーバロードされた形のものを表示するときに利用し、ユーザが矢印をクリックすることでオーバロード関数を巡回させる目的などに使えます。

The mouse may be clicked on call tips and this causes a SCN_CALLTIPCLICK 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.

そのほか、通知 SCN_DWELLSTART への応答として、単語の上で少し止まっていたマウスカーソルが去った時にコールチップを表示させ、SCN_DWELLEND の応答の際に消去することができます。この手法はデバッガで変数の値を表示したり、編集中にマウスカーソル下の単語についての情報を提供したりすることに使えます。

Alternatively, call tips can be displayed when you leave the mouse pointer for a while over a word in response to the SCN_DWELLSTART notification and cancelled in response to SCN_DWELLEND. 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)

SCI_CALLTIPSHOW(int posStart, const char *definition)

コールチップウィンドウの表示によってプロセスを開始します。コールチップがすでに活性化されている場合は何もしません。
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.

SCI_CALLTIPCANCEL

表示されているコールチップを消去します。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.

SCI_CALLTIPACTIVE

コールチップが活性化されているならば 1 、そうでなければ 0 を返します。

SCI_CALLTIPACTIVE
This returns 1 if a call tip is active and 0 if it is not active.

SCI_CALLTIPPOSSTART

SCI_CALLTIPSHOW がコールチップを表示し始めたときにその現在位置をこのメッセージが返します。

SCI_CALLTIPPOSSTART
This message returns the value of the current position when SCI_CALLTIPSHOW started to display the tip.

SCI_CALLTIPSETHLT(int hlStart, int hlEnd)

強調装飾で表示するコールチップ文字列の範囲を指定します。hlStart は 0 基準の強調開始文字位置、hlEnd は次に強調されない文字の最初の位置となります。hlEndhlStart よりも大きくなくてはなりません。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)

コールチップの背景色を設定します。初期状態では白です。選択されていない文字が灰色に、選択された文字が暗い青になっているという事情から、暗い色を背景色にするのはよくありません。

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)

コールチップ文字列の色を指定します。初期状態では暗い青です。

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)

コールチップで強調されている文字列の色を設定します。初期状態では暗い青です。

SCI_CALLTIPSETFOREHLT(int colour)
The colour of highlighted call tip text can be set with this message; the default colour is dark blue.

キーボードによる指示Keyboard commands

Scintilla のコンテナとなるアプリケーションが、ユーザのキー入力ですべての機能を使えるようにするという目的でキーボードによる行動はすべてメッセージにされます。これらは媒介変数をとりません。これらの指示はメッセージ SCI_ASSIGNCMDKEY によるキー割り当ての再定義でも用いられます。

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 SCI_ASSIGNCMDKEY 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]*.

キー割り当てKey bindings

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

keyDefinition

キー定義は下位 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.

SCI_ASSIGNCMDKEY(int keyDefinition, int sciCommand)

指定したキーの定義を 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_CLEARCMDKEY(int keyDefinition)

キーの定義に何もしないことを意味する SCI_NULL を割り当てます。

SCI_CLEARCMDKEY(int keyDefinition)
This makes the given key definition do nothing by assigning the action SCI_NULL to it.

SCI_CLEARALLCMDKEYS

すべてのキー割り当てを改称します。空の割り当て表が使われます。

SCI_CLEARALLCMDKEYS
This command removes all keyboard command mapping by setting an empty mapping table.

SCI_NULL

SCI_NULL は何もしないことを意味する値で、キー定義に割り当てる目的でこの値があります。

SCI_NULL
The SCI_NULL does nothing and is the value assigned to keys that perform no action.

ポップアップ編集メニューPopup edit menu

SCI_USEPOPUP(bool bEnablePopup)

マウスの誤ったボタンをクリックすると小さな初期状態の編集メニューが出てきます。これを抑制するには 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.

マクロの記録Macro recording

ここではマクロ記録の開始と停止についてを記述します。マクロ記録モードでは、行動がコンテナに通知 SCN_MACRORECORD を通して報告されます。将来再現するためにこれらの行動を記録するのはコンテナまで関わってきます。

Start and stop macro recording mode. In macro recording mode, actions are reported to the container through SCN_MACRORECORD notifications. It is then up to the container to record these actions for future replay.

SCI_STARTRECORD
SCI_STOPRECORD

マクロ記録の開始または停止を行います。

SCI_STARTRECORD
SCI_STOPRECORD
These two messages turn macro recording on and off.

印刷Printing

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

SCI_FORMATRANGE(bool bDraw, RangeToFormat *pfr)

Windows で、指定範囲の文字列をデバイスコンテキストにレンダリングします。これを印刷に用いた場合、ページのヘッダやフッタも欲しいところですが、Scintilla は特に何もしません。SciTEWinDlg.cxxSciTEWin::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
};

hdchdcTarget は両方とも出力デバイス(通常はプリンタ)のデバイスコンテキストハンドルです。Windows メタファイル(拡張メタファイルではないようなもの)とは異なるメタファイルに印刷するときは、返値の情報にすべての API を実装しないでください。この場合、hdcTarget には画面のデバイスコンテキストを設定します。
rcPage{0, 0, maxX, maxY} の形で指定する矩形です。maxX+1maxY+1 は物理的な印刷可能ピクセル数の横方向と縦方向の値です。
rc はテキストをレンダリングする範囲です。当然ながら rcPage の内側に収まるように指定します。
chrg.cpMinchrg.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_SETPRINTMAGNIFICATION(int magnification)
SCI_GETPRINTMAGNIFICATION

画面のフォントとは異なる大きさで印刷するには 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

通常白紙を使うプリンタで色が付いたテキストをレンダリングする手法を設定あるいは取得します。画面上では暗い色あるいは黒の背景色を使っている場合には色の扱いの考慮はとても重要なこととなります。黒字に白という印刷は他の方法よりもトナーとインクを速く使い切ってしまいます。以下のうちから一つ、モードを設定できます。

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.

SCI_SETPRINTWRAPMODE(int wrapMode)
SCI_GETPRINTWRAPMODE

プリンタの行クリップモードを設定または取得します。wrapModeSC_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.

直接アクセスDirect access

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_tScintilla.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.

SCI_GETDIRECTFUNCTION

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.

SCI_GETDIRECTPOINTER

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.

可視部の多重化Multiple views

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

ウィンドウに現在使われている文書へのポインタを返します。他には何もしません。

SCI_GETDOCPOINTER
This returns a pointer to the document currently in use by the window. It has no other effect.

SCI_SETDOCPOINTER(<unused>, document *pDoc)

次のことを行います。

  1. 現在の文書に保持されている一覧から現在のウィンドウを取り除きます。
  2. その文書の参照数をひとつ減らします。
  3. 参照数が 0 になったら、その文書を削除します。
  4. pDoc を先ほど除かれたウィンドウの新しい文書として設定します。
  5. 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.

SCI_CREATEDOCUMENT

新しい空の文書を作成し、それへのポインタを返します。この文書はエディタに選択されておらず、一方で参照数は 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.

SCI_ADDREFDOCUMENT(<unused>, document *pDoc)

文書の参照数をひとつ増やします。Scintilla ウィンドウの現在注目中の文書を交換し、またその所有権を持ちたい場合は次の手順を踏みます。一つのウィンドウで多数の文書を編集する場合がこれにあたります。

  1. SCI_GETDOCPOINTER を用いて文書へのポインタを取得します。
  2. SCI_ADDREFDOCUMENT(0, pDoc) というコードで参照数を増やします。
  3. 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.

SCI_RELEASEDOCUMENT(<unused>, document *pDoc)

pDoc で示された文書の参照数をひとつ減らします。pDoc は SCI_GETDOCPOINTERSCI_CREATEDOCUMENT の戻り値でなくてはなりません。また、すでに実在する文書へのポインタでなくてはなりません。Scintilla ウィンドウに接続されたままの参照数 1 の文書に対して呼び出されると不整合が発生します。ちきうがへいわにまわっていられるように、SCI_RELEASEDOCUMENTSCI_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.

折りたたみFolding

折りたたみの基本的な動作は、行の可視化と不可視化です。行を見ることができるかどうかは文書ではなく可視部の特性ですので、可視部の各々は異なる行を表示することができます。ユーザから見ると、折りたたみ点で行が隠されたり表示されたりしています。一般的に折りたたみ点は、文書の階層構造を元に設定されます。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)

SCI_VISIBLEFROMDOCLINE(int docLine)

いくつかの行が折りたたまれているとき、以後の行は文書上の行位置とは違うところに表示されます。折りたたまれている行がないとき、このメッセージは 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.

SCI_DOCLINEFROMVISIBLE(int displayLine)

隠されている行がある場合、以後の行は文書上の行位置とは違うところに表示されます。このメッセージは表示されている行の番号から実際の文書上の行番号を求めて返します。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.

SCI_SHOWLINES(int lineStart, int lineEnd)
SCI_HIDELINES(int lineStart, int lineEnd)
SCI_GETLINEVISIBLE(int line)

最初の二つは指定範囲の行を可視化もしくは不可視化するものです。画面の再描画も行います。三つ目のメッセージは指定行の表示状態を返すもので、可視であれば 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.

SCI_SETFOLDLEVEL(int line, int level)
SCI_GETFOLDLEVEL(int line)

指定行の折りたたみ階層数や関連フラグを含む 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.

SCI_SETFOLDFLAGS(int flags)

折りたたみ余白のマーカ表示に加えて、テキスト区画に線を引くことで折りたたみを表現することができます。この線は STYLE_DEFAULT における文字色で引かれます。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 STYLE_DEFAULT. 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.

SCI_GETLASTCHILD(int startLine, int level)

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.

SCI_GETFOLDPARENT(int startLine)

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.

SCI_TOGGLEFOLD(int line)

各折りたたみ点は展開時にすべての子孫階層を表示したり、閉じたときにすべての子孫階層を隠したりできます。このメッセージは指定行が 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.

SCI_SETFOLDEXPANDED(int line, bool expanded)

指定行一行の展開状態を設定または取得します。このメッセージは行の可視状態や指定行に依存する行には影響を与えません。折りたたみ余白のマーカは変更されます。文書の外を指すような行番号を指定すると 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_ENSUREVISIBLE(int line)
SCI_ENSUREVISIBLEENFORCEPOLICY(int line)

ある行がその祖先階層の行を折りたたまれる事により隠されてしまうことがあります。これらのメッセージは折りたたみ階層構造を上位にたどり、閉じられている折りたたみを最上位階層まで開いていきます。結果、指定行は可視になります。SCI_ENSUREVISIBLEENFORCEPOLICY を使うと、SCI_SETVISIBLEPOLICY で使う垂直方向のキャレットポリシーが適用されます。

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 SCI_SETVISIBLEPOLICY is then applied.

行クリップLine wrapping

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.

行クリップは文書の変更直後ではなく再描画の時点で実行されます。この遅れにより全体の処理速度が上がります。まとまった変更ができるようになり、それに対する行クリップと再表示も一度だけでよくなります。このため、いくつかの処理が思ったように動作しないことがあります。ファイルを読み出してスクロール位置を移動すると、スクロール位置は行クリップの前に決められてしまうため表示されるテキスト範囲がスクロールバーと違うところになります。これはセッションの復帰の際などに起こります。正しいスクロール位置にするには、行クリップが実行されるまでスクロールさせないことです。これは最初の SCN_PAINTED 通知を待つことで実現できます。

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 SCN_PAINTED notification.

SCI_SETWRAPMODE(int wrapMode)
SCI_GETWRAPMODE

wrapModeSC_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.

SCI_SETWRAPVISUALFLAGS(int wrapVisualFlags)
SCI_GETWRAPVISUALFLAGS

行クリップが行われていることを示す印を描画することができます。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.

SCI_SETWRAPVISUALFLAGSLOCATION(int wrapVisualFlagsLocation)
SCI_GETWRAPVISUALFLAGSLOCATION

行クリップが行われていることを示すフラグを枠の近くに表示するかテキストの近くに表示するかを設定することができます。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(int indent)
SCI_GETWRAPSTARTINDENT

行クリップ発生時の二行目以降の字下げ量を SCI_SETWRAPSTARTINDENT で設定します。STYLE_DEFAULT の空白文字の幅が単位です。字下げ量に制限はありませんが、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 STYLE_DEFAULT. 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.

SCI_SETLAYOUTCACHE(int cacheMode)
SCI_GETLAYOUTCACHE

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.

SCI_LINESSPLIT(int pixelWidth)

対象として示された範囲内の行を、最大幅が 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

対象として示された範囲内の行を、行末文字を除くことにより一行にまとめます。単語間に空白が無くなってしまう場合は空白文字が追加挿入されます。

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.

拡大縮小Zooming

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
SCI_ZOOMOUT

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(int zoomInPoints)
SCI_GETZOOM

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.

超過桁境界線Long lines

指定桁数を超えた行を示すために垂直線を引いたり、越えた部分の背景色を変えたりすることができます。

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

超過桁境界線の表示方法を設定または取得します。次表に挙げた値のうち一つを設定できます。

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 で設定された桁に垂直線が引かれます。固定幅フォントを使っているときに正しく動作します。STYLE_DEFAULT における空白文字の幅を基準にして線の位置を計算しますので、プロポーショナルフォントを使ったり装飾毎に異なる大きさのフォントを使ったり、あるいは太字・斜体・通常フォントを混ぜて使ったりするとあまりいい位置には来ません。
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 STYLE_DEFAULT, 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.

SCI_SETEDGECOLUMN(int column)
SCI_GETEDGECOLUMN

超過桁境界線を表示する桁位置を設定または取得します。線を引く場合は 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_SETEDGECOLOUR(int colour)
SCI_GETEDGECOLOUR

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.

解析器Lexer

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)

SCI_SETLEXER(int lexer)
SCI_GETLEXER

Scintilla.h に列挙されている SCLEX_* を使うことで解析器を選択できます。このうち二つは解析器を使わないことを示すものです。SCLEX_NULL は解析そのものを行いません。SCLEX_CONTAINER は装飾情報を必要とするテキストがある時に通知 SCN_STYLENEEDED をコンテナに送信します。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 SCN_STYLENEEDED 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.

SCI_SETLEXERLANGUAGE(<unused>, const char *name)

名称を元に解析器を選択します。またこれは、外部解析器を使っている場合あるいは独自の解析器を使っていてそれに明示的な番号を割り当てたくない場合の唯一の方法です。既存の解析器を選択する場合は 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.

解析器の割り当てが動作するかどうかは、新しい解析器を設定する前後に SCI_GETLEXER を使って解析器番号が変化するかどうかを見てください。

To test if your lexer assignment worked, use SCI_GETLEXER before and after setting the new lexer to see if the lexer number changed.

SCI_LOADLEXERLIBRARY(<unused>, const char *path)

共有ライブラリに実装されている解析器を読み出します。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.

SCI_COLOURISE(int startPos, int endPos)

文書の startPosendPos の間のテキスト装飾を現在の解析器かコンテナに実行させます。解析器が 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.

SCI_SETPROPERTY(const char *key, const char *value)

キーワードと値から成る文字列の組で解析器と対話をします。キーワードの組数に制限はなく、メモリの許す限り使えます。key はキーワードで、大文字小文字を区別します。value はキーワードに関係づけられた文字列です。すでに指定キーワードに値が設定されているときは、置換されます。長さ 0 の文字列を指定した場合は何もしません。keyvalue は修正なしで使用されます。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.

SCI_SETKEYWORDS(int keyWordSet, const char *keyWordList)

現在使用中の解析器に対して最大 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.

通知Notifications

通知は 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

SCN_STYLENEEDED

SCI_SETLEXER(SCLEX_CONTAINER) によりコンテナが解析器の役割をも担うように設定するとこの通知が送られるようになります。装飾が必要なテキスト表示もしくは印刷を行おうとするとき発光されます。SCI_GETENDSTYLED の戻り値を含んでいる行から SCNotification.position で渡される位置までの装飾を要求されていることになります。端的には次のようなコードが必要となります。

SCN_STYLENEEDED
If you used SCI_SETLEXER(SCLEX_CONTAINER) 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 SCI_GETENDSTYLED 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);

SCN_CHARADDED

ユーザが通常の(コマンド文字ではない、と言う意味での)テキスト文字をタイプしたときに送られるメッセージです。メッセージを受け取ったコンテナはコールチップ自動補完候補項目を表示するかどうかなどを決めることができます。タイプされた文字は 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

保存点に戻ってきたかそこから変化していくときに送られてくるメッセージです。コンテナはこれにより「文書変更済み」のサインを表示し、関連メニューを変更できます。

参照: SCI_SETSAVEPOINT, SCI_GETMODIFY

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: SCI_SETSAVEPOINT, SCI_GETMODIFY

SCN_MODIFYATTEMPTRO

読み出し専用モードの時にユーザがテキストの変更を試みた場合に送信されるメッセージです。版管理系からの文書を調べることに利用できます。文書を読み出し専用にするには SCI_SETREADONLY を使います。

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 SCI_SETREADONLY.

SCN_KEY

あらゆるキーの押下を報告するメッセージです。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

エディタの中でマウスボタンがダブルクリックされたときに送信されます。付加情報はありません。

SCN_DOUBLECLICK
The mouse button was double clicked in editor. There is no additional information.

SCN_UPDATEUI

文書内のテキストもしくは装飾が変更されたり、選択範囲が変化したりしたときに送信されます。文書や表示状態に依存するユーザインタフェイス要素を更新する機会となります。かつては SCN_CHECKBRACE として使われていたもので、主な利用方法が括弧の隣にキャレットがあるかどうかの調査、またあるのであればその括弧及び対応する括弧の強調にあったからです。このメッセージは SCN_POSCHANGED をも廃止統合しています。

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 SCN_CHECKBRACE 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 SCN_POSCHANGED, which is now deprecated.

SCN_MODIFIED

テキストや装飾が変更されたか、あるいはされようとしているときに発行される通知です。コンテナに送信される通知は SCI_SETMODEVENTMASK によって選別することができます。何がどのように変化するか、また総行数を変更したかどうかが通知構造体に収められています。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 SCI_SETMODEVENTMASK. 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 すべての有効なフラグを重ねたマスクです。SCI_SETMODEVENTMASK の初期設定値です。 なし
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 SCI_SETMODEVENTMASK. None

SCEN_CHANGE

SCEN_CHANGE (768) は文書内のテキストが変更されたときに発行されます。装飾の変更では発行されません。この通知は Windows では WM_COMMAND を、GTK+ では "Command" シグナルを用いて送られます。標準のエディットコントロールと同じ挙動を行うために発行されているもので、Windows では SCEN_CHANGEEN_CHANGE が同じ値を持っています。他の情報は送られてきません。詳細を知る場合は SCN_MODIFIED を用いてください。SCI_SETMODEVENTMASK によって通知をあらかじめ選別することができます。

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 SCN_MODIFIED. You can filter the types of changes you are notified about with SCI_SETMODEVENTMASK.

SCI_SETMODEVENTMASK(int eventMask)
SCI_GETMODEVENTMASK

SCN_MODIFIEDSCEN_CHANGE において、文書の変更に関しどの情報をコンテナに通知するかを設定あるいは取得します。たとえば装飾変更情報を不要とし、テキストの変更があったときだけ通知をもらう場合は 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 SCN_MODIFIED and SCEN_CHANGE. 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.

SCEN_SETFOCUS
SCEN_KILLFOCUS

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_STARTRECORDSCI_STOPRECORD はマクロの記録を開始・停止します。開始された場合、記録できる変更がある度に通知 SCN_MACRORECORD がコンテナに送られます。記録はコンテナの責任になります。記録可能な SCI_* メッセージの完全な一覧は Scintilla のソースファイル Editor.cxxEditor::NotifyMacroRecord を検索してください。この通知で設定される SCNotification の項目は次の通りです。

SCN_MACRORECORD
The SCI_STARTRECORD and SCI_STOPRECORD 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.

SCN_MARGINCLICK

マウスクリックに反応するように指定されたマーカのある余白部分でマウスがクリックされたことをコンテナに伝えます。SCI_SETMARGINSENSITIVEN を参照ください。SCNotification 内の次の項目が使われます。

SCN_MARGINCLICK
This notification tells the container that the mouse was clicked inside a margin that was marked as sensitive (see SCI_SETMARGINSENSITIVEN). 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.

SCN_NEEDSHOWN

Scintilla が現在見えていない複数行の一部を見えるようにしようとしていることを通知します。折りたたまれている省略部が削除された場合などに発行されます。文書全体を可視とするような、通常の方法とは違うやり方で行を見えるようにしつつあるときもコンテナに送信されます。多くの場合、コンテナは単に SCI_ENSUREVISIBLE を呼び出して通知範囲の各行を可視にすればよいのです。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 SCI_ENSUREVISIBLE. 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

SCN_PAINTED

描画が終了したことを通知します。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.

SCN_USERLISTSELECTION

ユーザがユーザ項目群からある項目を選択したことを通知します。SCNotification で使用される項目は次の通りです。

SCN_USERLISTSELECTION
The user has selected an item in a user list. The SCNotification fields used are:

項目 用途
wParam 項目群を初期化した時の SCI_USERLISTSHOW で指定した listType 引数です。
text 選択範囲のテキストです。
Field Usage
wParam This is set to the listType parameter from the SCI_USERLISTSHOW message that initiated the list.
text The text of the selection.

SCN_URIDROPPED

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_DWELLEND

ある点でマウスを一定時間停止させていると SCN_DWELLSTART が発行されます。SCI_SETMOUSEDWELLTIME を参照してください。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 SCI_SETMOUSEDWELLTIME). 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 マウスポインタが停留している位置です。SCI_POSITIONFROMPOINTCLOSE(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 SCI_POSITIONFROMPOINTCLOSE(x, y).

SCI_SETMOUSEDWELLTIME
SCI_GETMOUSEDWELLTIME

ミリ秒単位でマウスの停留とみなす時間を指定または取得します。マウス停留が検出されると SCN_DWELLSTART が発行されます。初期状態では停留イベントは発行されません。

SCI_SETMOUSEDWELLTIME
SCI_GETMOUSEDWELLTIME
These two messages set and get the time the mouse must sit still, in milliseconds, to generate a SCN_DWELLSTART notification. If set to SC_TIME_FOREVER, the default, no dwell events are generated.

SCN_ZOOM

ユーザが表示の拡大縮小を行おうとしている場合に発行されます。キーボード操作によるものか SCI_SETZOOM によるものです。行番号余白の幅のやピクセル単位でなく文字単位の大きさの管理といった場合の位置の再計算に用いることが出来ます。SCNotification 構造体は用いられていません。

SCN_ZOOM
This notification is generated when the user zooms the display using the keyboard or the SCI_SETZOOM 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.

SCN_HOTSPOTCLICK
SCN_HOTSPOTDOUBLECLICK

ホットスポット特性を設定されたテキスト上でクリックあるいはダブルクリックされたときに発行されます。当該変数の定義部やウェブサイトへのリンクに用いることができます。項目 position にクリックされた位置、modifiers にクリック時に押下されていた修飾キーの情報が入っています。修飾キー情報は SCN_KEY と同様のものです。

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 SCN_KEY.

SCN_CALLTIPCLICK

コールチップ上でクリックされたときに発行されます。関数名が異なる引数でオーバロードされているときに、現在表示しているものとは違う引数の雛形を表示することに用いられます。項目 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.

非推奨のメッセージと通知Deprecated messages and notifications

次のメッセージは現在既存の 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.hINCLUDE_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() 【非推奨】

テキストの違う位置へカーソルが動かされたときに送信されます。SCN_UPDATEUI を代わりに使ってください。

SCN_POSCHANGED() Deprecated
Fired when the user moves the cursor to a different position in the text. Use SCN_UPDATEUI instead.

SCN_CHECKBRACE 【非推奨】

文書の文字か装飾が変化した場合、あるいは選択範囲が変更された場合に送信されます。現在は SCN_UPDATEUI に置き換わりました。SCN_MODIFIED を用いて変化の詳細を知ることができます。

SCN_CHECKBRACE Deprecated
Either the text or styling of the document has changed or the selection range has changed. This is replaced by SCN_UPDATEUI. You can also use SCN_MODIFIED for more detailed information on text and styling changes,

Scintilla で対応しないエディットメッセージEdit messages never supported by Scintilla

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 の構築Building Scintilla

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.

静的リンクStatic linking

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 に解析器を確実にリンクするEnsuring lexers are linked into Scintilla

使用するコンパイラとリンカによっては解析器が切り捨てられてしまいます。この現象の大部分は静的ライブラリの構築に置いて発生します。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.

解析器集合の変更Changing set of lexers

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.