あるバッファーが読み取り専用(read-only)の場合には、たとえスクロールやナローイングによってファイルのコンテンツのビューを変更しても、そのコンテンツを変更することはできません。
読み取り専用バッファーは、2つのタイプの状況において使用されます:
ここでの目的はユーザーにたいしてそのファイルへの保存を意図したバッファーの編集が無益、または望ましくないかもしれないことを伝えることである。それにも関わらずバッファーのテキストの変更を望むユーザーは、C-x C-qで読み取り専用フラグをクリアーした後にこれを行うことができる。
このようなモードのスペシャルコマンドは、buffer-read-only
を(let
によって)nil
にバインドしたり、テキストを変更する箇所ではinhibit-read-only
をt
にバインドする。
このバッファーローカル変数は、そのバッファーが読み取り専用かどうかを指定する。この変数が非nil
ならそのバッファーは読み取り専用。しかしテキストプロパティinhibit-read-only
をもつ文字は依然として編集可能。inhibit-read-onlyを参照のこと。
この変数が非nil
なら、読み取り専用バッファー、およびその実際の値に依存して、一部もしくはすべての読み取り専用文字が変更されている。バッファー内の読み取り専用文字とはテキストプロパティread-only
が非nil
の文字。テキストプロパティについての詳細は特殊な意味をもつプロパティを参照のこと。
inhibit-read-only
がt
なら、すべてのread-only
文字プロパティは効果がなくなる。inhibit-read-only
がリストの場合には、read-only
文字プロパティがリストのメンバーなら効果がなくなる(比較はeq
で行われる)。
これはバッファーローカルなマイナーモードRead
Onlyモードにたいするモードコマンド。このモードが有効なときは、そのバッファーのbuffer-read-only
は非nil
。無効なときは、そのバッファーのbuffer-read-only
はnil
。呼び出す際の慣習は、他のマイナーモードコマンドの慣習と同じ(マイナーモード記述の規約を参照)。
このマイナーモードは他のマイナーモードとは異なり、主にbuffer-read-only
にたいするラッパーの役目を果たし、別個にread-only-mode
変数は存在しない。Read
Onlyモードが無効なときでも、read-only
テキストプロパティが非nil
の文字は読み取り専用のままである。一時的にすべての読み取り専用ステータスを無視するには上述のinhibit-read-only
をバインドすること。
Read
Onlyモードを有効にする際、このモードコマンドはオプションview-read-only
が非nil
ならViewモードも有効にする。Miscellaneous Buffer Operations in The GNU Emacs
Manualを参照のこと。Read Onlyモードを無効にする際に、もしもViewモードが有効ならViewモードも無効にする。
この関数はカレントバッファーが読み取り専用ならbuffer-read-only
エラーをシグナルする。position
(デフォルトはポイント位置)のテキストのテキストプロパティinhibit-read-only
がセットされていればエラーは発生しないだろう。
カレントバッファーが読み取り専用の場合にエラーをシグナルする他の方法については、interactive
の使用を参照のこと。