Emacs:バッファの一部を読み取り専用にする

Emacs:バッファの一部を読み取り専用にする

私は時々ファイルを編集しますemacsが、ファイルの一部は編集しない文書やその他のコンテンツで、他の部分は自由に編集して新しいテキストを作成できる「再生領域」です。

質問:作成できますか?部分emacsバッファは読み取り専用ですか?

最も簡単な例は、行1〜100を読み取り専用にすることです(例:)。より複雑な例(emacsブックマークに似ています)は、[readonly]との間のすべてのテキストを[/readonly]編集できないようにすることです。

私はこれを検索しましたが、役に立つものが見つかりませんでした。

答え1

はい、テキスト属性を使用してバッファの一部を読み取り専用にすることができます。以下のコードは、ポイントとマーカーの間の領域に影響を与えるmake-region-read-only2つの新しいコマンドを定義します。make-region-read-writeコマンドを実行できるようにコードを.emacsファイルに入れますMeta-x

(defun make-region-read-only (start end)
  (interactive "*r")
  (let ((inhibit-read-only t))
    (put-text-property start end 'read-only t)))

(defun make-region-read-write (start end)
  (interactive "*r")
  (let ((inhibit-read-only t))
    (put-text-property start end 'read-only nil)))

関連情報