Next: Window Internals, Up: Object Internals [Contents][Index]
Cでバッファーを表すために2つの構造体(buffer.hを参照)が使用されます。buffer_text構造体にはバッファーのテキストを記述するフィールドが含まれます。buffer構造体は他のフィールドを保持します。インダイレクトバッファーの場合には、2つ以上のbuffer構造体が同じbuffer_text構造体を参照します。
以下にstruct buffer_text内のフィールドをいくつか示します:
begバッファーコンテンツのアドレス。バッファーコンテンツは途中にギャップをもつcharの線形C配列。
gptgpt_byteバッファーのギャップの文字位置とバイト位置。Buffer Gapを参照のこと。
zz_byteバッファーテキストの終端の文字位置とバイト位置。
gap_sizeバッファーのギャップのサイズ。Buffer Gapを参照のこと。
modiffsave_modiffchars_modiffoverlay_modiffこれらのフィールドは、そのバッファーで行われたバッファー変更イベントの数をカウントする。modiffはバッファー変更イベントのたびに増分されて、それ以外では決して変化しない。save_modiffにはバッファーが最後にvisitや保存されたときのmodiffの値が含まれる。chars_modiffはバッファー内の文字にたいする変更だけをカウントして、(テキストプロパティのように)その他すべての種類の変更を無視する。overlay_modiffはバッファーのオーバーレイにたいする変更だけをカウントする。
beg_unchangedend_unchanged最後の再表示完了以降に未変更だと解っているテキスト、開始と終了の箇所での文字数。
unchanged_modifiedoverlay_unchanged_modifiedそれぞれ最後に再表示が完了した後のmodiffとoverlay_modiffの値。これらのカレント値がmodiffやoverlay_modiffとマッチしたら、それはbeg_unchangedとend_unchangedに有用な情報が含まれないことを意味する。
markersこのバッファーを参照するマーカー。これは実際には単一のマーカーであり、自身のマーカー“チェーン”内の一連の要素がバッファー内のテキストを参照する他のマーカーになる。
intervalsそのバッファーのテキストプロパティを記録するインターバルツリー。
struct bufferのいくつかのフィールドを以下に示します:
headerタイプunion vectorlike_headerのヘッダーは、すべてのベクター類似のオブジェクトに共通。
own_text構造体struct
buffer_textは通常はバッファーのコンテンツを保持する。このフィールドはインダイレクトバッファーでは使用されない。
textそのバッファーのbuffer_text構造体へのポインター。通常のバッファーでは上述のown_textフィールド。インダイレクトバッファーではベースバッファーのown_textフィールド。
nextkillされたバッファーを含むすべてのバッファーのチェーン内において次のバッファーへのポインター。このチェーンはkillされたバッファーを正しく回収するために割り当てとガーベージコレクションのためだけに使用される。
ptpt_byteバッファー内のポイントの文字位置とバイト位置。
begvbegv_byteそのバッファー内のアクセス可能範囲の先頭位置の文字位置とバイト位置。
zvzv_byteそのバッファー内のアクセス可能範囲の終端位置の文字位置とバイト位置。
base_bufferインダイレクトバッファーではベースバッファーのポイント。通常のバッファーではnull。
local_flagsこのフィールドはバッファー内でローカルな変数にたいしてそれを示すフラグを含む。そのような変数はCコードではDEFVAR_PER_BUFFERを使用して宣言され、それらのバッファーローカルなバインディングはバッファー構造体自身内のフィールドに格納される(これらのフィールドのいくつかはこのテーブル内で説明している)。
modtimevisitされているファイルの変更時刻。これはファイルの書き込みと読み込み時にセットされる。そのバッファーをファイルに書き込む前にファイルがディスク上で変更されていないことを確認するために、このフィールドとそのファイルの変更時刻を比較する。Buffer Modificationを参照のこと。
auto_save_modifiedそのバッファーが最後に自動保存されたときの時刻。
last_window_startそのバッファーが最後にウィンドウに表示されたときのバッファー内でのwindow-start位置。
clip_changedこのフラグはバッファーでのナローイングが変更されているかを示す。Narrowingを参照のこと。
prevent_redisplay_optimizations_pこのフラグはバッファーの表示において再表示最適化が使用されるべきではないことを示す。
overlay_centerこのフィールドはカレントオーバーレイの中心位置を保持する。Managing Overlaysを参照のこと。
overlays_beforeoverlays_afterこれらのフィールドはカレントオーバーレイ中心、またはその前で終わるオーバーレイのリスト、およびカレントオーバーレイの後で終わるオーバーレイのリスト。Managing Overlaysを参照のこと。overlays_beforeは終端位置の記述順、overlays_afterは先頭位置増加順で格納される。
nameバッファーを命名するLisp文字列。一意であることが保証されている。Buffer Namesを参照のこと。このフィールドと以降のフィールドは以下のようにBVARを介するアクセス以外の方法で直接アクセスするべきではないことを示すためにC構造体定義内の名前の最後に_をもつ:
Lisp_Object buf_name = BVAR (buffer, name);
save_lengthそのバッファーがvisitしているファイルを最後に読み込み、または保存したときの長さ。2つの特別な値をもつことができる。-1はそのバッファーで自動保存がオフであること、-2はバッファーのテキストが大量に減少するようなら自動保存をオフに切り替えないことを意味する。インダイレクトバッファーは決して保存されることはないので、保存に関して、このフィールドとその他のフィールドはbuffer_text構造体で維持されない
directory相対ファイル名を展開するディレクトリー。これはバッファーローカル変数default-directoryの値(File Name Expansionを参照)。
filenameそのバッファーがvisitしているファイルの名前。これはバッファーローカル変数buffer-file-nameの値(Buffer File Nameを参照)。
undo_listbacked_upauto_save_file_nameauto_save_file_formatread_onlyfile_formatfile_truenameinvisibility_specdisplay_countdisplay_timeこれらのフィールドは自動的にバッファーローカル(Buffer-Local Variablesを参照)になるLisp変数の値を格納する。これらに対応する変数は名前に追加のプレフィクスbuffer-がつき、アンダースコアがダッシュで置換される。たとえばundo_listはbuffer-undo-listの値を格納する。
markそのバッファーにたいするマーク。マークはマーカーなのでリストmarkers内にも含まれる。The Markを参照のこと。
local_var_alistこの連想リストはバッファーのバッファーローカル変数のバインディングを記述する。これにはバッファーオブジェクト内に特別なスロットをもつ、ビルトインのバッファーローカルなバインディングは含まれない(このテーブルではそれらのスロットは省略している)。Buffer-Local Variablesを参照のこと。
major_modeそのバッファーのメジャーモードを命名するシンボル(例: lisp-mode)。
mode_nameそのメジャーモードの愛称(例: "Lisp")。
keymapabbrev_tablesyntax_tablecategory_tabledisplay_tableこれらのフィールドはバッファーのローカルキーマップ(Keymapsを参照)、abbrevテーブル(Abbrev Tablesを参照)、構文テーブル(Syntax Tablesを参照)、カテゴリーテーブル(Categoriesを参照)、ディスプレーテーブル(Display Tablesを参照)を格納する。
downcase_tableupcase_tablecase_canon_tableこれらのフィールドはテキストを小文字、大文字、およびcase-fold検索でのテキストの正規化の変換テーブルを格納する。Case Tablesを参照のこと。
minor_modesそのバッファーのマイナーモードのalist。
pt_markerbegv_markerzv_markerこれらのフィールドはインダイレクトバッファー、またはインダイレクトバッファーのベースバッファーであるようなバッファーでのみ使用される。これらはそれぞれバッファーがカレントでないときにバッファーにたいするpt、begv、zvを記録するマーカーを保持する。
mode_line_formatheader_line_formatcase_fold_searchtab_widthfill_columnleft_marginauto_fill_functiontruncate_linesword_wrapctl_arrowbidi_display_reorderingbidi_paragraph_directionselective_displayselective_display_ellipsesoverwrite_modeabbrev_modemark_activeenable_multibyte_charactersbuffer_file_coding_systemcache_long_line_scanspoint_before_scrollleft_fringe_widthright_fringe_widthfringes_outside_marginsscroll_bar_widthindicate_empty_linesindicate_buffer_boundariesfringe_indicator_alistfringe_cursor_alistscroll_up_aggressivelyscroll_down_aggressivelycursor_typecursor_in_non_selected_windowsこれらのフィールドは自動的にバッファーローカル(Buffer-Local Variablesを参照)になるLisp変数の値を格納する。これらに対応する変数は名前のアンダースコアがダッシュで置換される。たとえばmode_line_formatはmode-line-formatの値を格納する。
last_selected_windowこれは最後に選択されていたときにそのバッファーを表示していたウィンドウ、またはそのウィンドウがすでにそのバッファーを表示していなければnil。
Next: Window Internals, Up: Object Internals [Contents][Index]