[
目次
]
改行コードについて
取り扱える改行コード
複数の改行コードが混在したファイルも取り扱えるようにする
CR00LF00 ( 0d 00 0a 00 )
廃止しました。(sakura:1.3.4.1)
CRLF ( 0d 0a )
LFCR ( 0a 0d )
CR ( 0d )
LF ( 0a )
ファイル読み込み時の処理
ファイルを読み込む際は改行単位で行バッファに追加していく。
ファイルの先頭から1バイトずつサーチし、CRかLFが出現するまでループする。
取り扱える改行コードのどれに該当するのか調べる。
行テキストと改行コードの情報を行バッファに格納する。
ファイルの終わりまで繰り返す。
ファイルの最後に改行なしの行がある場合も、行テキストと改行コードなしの情報を行バッファに格納する。
改行コードの種類を判別する。これにより、編集時にEnter等で挿入される改行コードを決定する。
クリップボードへコピーする処理
■
矩形選択時
"
MSDEVColumnSelect
"形式のデータをクリップボードに格納
データ内容不定
CF_OEMTEXT
形式のデータをクリップボードに格納
選択領域の各行が改行を含む場合はCRLFに変換、改行を含まない場合はCRLFを付加
すべての改行コードをCRLFに統一
null文字(0x00)以降切捨て
"
SAKURAClip
"形式のデータをクリップボードに格納
先頭0〜3の4バイトがint型のデータ長(n)
先頭4〜4 + n - 1 のnバイトがデータ(バイナリ含む)
選択領域の各行が改行を含む場合はそのまま、改行を含まない場合はCRLFを付加
■
線形選択時
CF_OEMTEXT
形式のデータをクリップボードに格納
改行コードは元テキストの状態を保持する。
null文字(0x00)以降切捨て
"
SAKURAClip
"形式のデータをクリップボードに格納
先頭0〜3の4バイトがint型のデータ長(n)
先頭4〜4 + n - 1 のnバイトがデータ(バイナリ含む)
■
未選択時
カーソル位置のレイアウト行データを線形選択時の方法でコピーし、 加えて、
共通設定
のランモード貼付設定が有効になっている場合、 "
MSDEVLineSelect
"形式のデータをクリップボードに格納
クリップボードから貼り付ける処理
クリップボードの形式を調べる
"
MSDEVColumnSelect
"形式がある場合
矩形貼り付けとする
"
MSDEVLineSelect
"形式がある場合
共通設定
で有効の場合、ラインモード貼付とする
"
SAKURAClip
"形式がある場合
そのデータを取り出しそのまま貼り付けデータとする。
CF_UNICODETEXT
形式のデータがある場合
サクラエディタ内部のSJIS変換ロジックを使用してShiftJISに変換したものを貼り付けデータとする。
改行コードは元テキストの状態を保持する。
null文字(0x00)以降切捨て
CF_OEMTEXT
形式のデータがある場合
そのデータを取り出しそのまま貼り付けデータとする。
改行コードは元テキストの状態を保持する。
null文字(0x00)以降切捨て
[Enter] キー入力時の処理
挿入される改行コードの種類はファイル読み込み時に決定する。
[Enter] キー入力時は、その改行コードに変換して格納する。
アンドゥ・リドゥバッファへの改行コード格納形式
前バージョンは改行コードを\rで表現していた。
新バージョンはCRLFやLFCR等をそのまま格納する。
バッファからの取り出し処理の際、複数種類の改行コードを判別する。
編集画面での記号表記について
1.6.0.0より改行コードの表記が変わりましたので、ご注意ください。
1.5.17.0以前
:LF←,CR↓
1.6.0.0以降
:LF↓,CR←
なお、これは以前のバージョンが間違えていたわけではなく、過去の経緯によるものなので仕様変更と理解してください。