9

私は今日、Emacs のテキスト プロパティを使って実験してきました。テキストのある行にカーソルを置き、次のコードを で実行するとM-:、行が太字で再表示されます。

(overlay-put
 (make-overlay
  (line-beginning-position)
  (line-end-position))
 'face 'bold)

ただし、次のコードでオーバーレイを消去し(remove-overlays)て実行すると、何も起こりません (ミニバッファーに "nil" という単語が表示されることを除いて)。

(put-text-property
 (line-beginning-position)
 (line-end-position)
 'face 'bold)

これまでに収集したことから、これら 2 つのスニペットは同じ視覚的結果を生成するはずです。なぜ彼らはしないのですか?

4

2 に答える 2

4

font-lock-modeがオンの場合、アトリビュートfaceはオーバーライドされます。font-lock-face代わりに試してください:

(put-text-property
 (行頭位置)
 (行末位置)
 'font-lock-face'bold)
于 2010-02-11T10:07:44.587 に答える
2

ansi-color.el -- 「しかし、Emacs では状況が少し異なります。font-lock がバッファーでアクティブになっている場合、単純にフェースのテキスト プロパティをバッファーに追加することはできません。Font-lock はフェースのテキストを削除します。 'font-lock-unfontify-region-function' を使用してプロパティ. 'ansi-color-apply' によって返された文字列をそのようなバッファに挿入する場合は、'font-lock-unfontify-region-function' を ` に設定する必要がありますansi-color-unfontify-region'. この関数は、すべての面のテキスト プロパティを無条件に削除するわけではありません. プロパティ 'ansi-color' が設定されている場合は、面のテキスト プロパティを保持します.

于 2011-03-07T08:26:10.367 に答える