読み取り専用のテキストで始まるバッファの先頭にテキストを挿入しない


8

既存のEmacsパッケージを拡張していて、バッファーの一部を編集不可にしたい(読み取り専用)。実際、バッファの中央の1行だけを編集可能にしたいので、次のスニペットを使用してそれを実現しています。

(put-text-property (point-min) point-before-editable-text 'read-only t)
;; (put-text-property point-after-editable-text (point-max) 'read-only t)

ただし、バッファの先頭にカーソルを置いて、目的の動作ではないテキストを挿入することはできます。

バッファの先頭での挿入を防ぐにはどうすればよいですか?

回答:


9

(propertyを追加する前にread-only)最初の文字read-onlyにproperty を含む値を持たせる必要がありますfront-sticky

(put-text-property 1 2 'front-sticky '(read-only)) ; Do this one first.
(put-text-property (point-min) 50 'read-only t)

Elispマニュアルのnodeを参照してくださいSticky Properties。問題は、最初の文字に非nilプロパティがあったにもかかわらず、最初の文字のプロパティ値ではなかったread-onlyため、そのプロパティが継承されない前に挿入されたことです。read-onlyfront-sticky


#タグが付いた以前のバージョンが電話で機能しなかったため、Sticky Propertiesリンクを更新しました。
Kaushal Modi 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.