highlight-symbol-at-pointで強調表示されたシンボルのハイライトを解除する方法


13

highlight-symbol-at-point は本当に便利ですが、シンボルをハイライト解除する簡単な方法を見つけることができませんでした。

現在unhighlight-regexp、強調表示されているシンボルごとに繰り返し呼び出す必要があります。

より良い方法はありますか:

  • バッファ内の強調表示されたすべてのシンボルのハイライトを解除します
  • ポイントでシンボルをハイライト解除しますか?

すべてのシンボルを一度にハイライト解除する必要がありますか?
カウシャルモディ

ほとんどの場合-はい。時折、ポイントでシンボルのハイライトを解除することも有用です。
コスティア

ポイントの下にあるシンボルのハイライトを解除したい場合、またはすべてのシンボルのハイライトを解除したい場合、答えは異なります。
カウシャルモディ

質問を更新しました
-kostya

2
あなたは使用して、すべてのハイライト表示されたシンボル削除することができますM-x hi-lock-mode
アミール・カリミ

回答:


10

バッファ内のすべての強調表示されたシンボルをハイライト解除するより良い方法はありますか?

からC-h f unhighlight-regexp

(unhighlight-regexp REGEXP)

hi-lockによって設定されたREGEXPへの各一致の強調表示を削除します。インタラクティブに、REGEXPのプロンプトを表示し、以前にhi-lockインタラクティブ機能によって挿入された正規表現のみを受け入れます。REGEXPがtの場合(またはCuがインタラクティブに指定された場合)、すべてのハイロックハイライトを削除します。

我々は、単に呼び出す必要があることを意味unhighlight-regexpしてtバッファに強調表示するすべてのハイロックを解除するために、引数として。

一度限りのものであれば、M-: (unhighlight-regexp t)またはですばやく処理できますC-u M-s h u。しかし、これは非常に頻繁に行う必要のあることのようです。その場合は、interactive関数にラップして、何らかのキーにバインドする方が適切です。

以下はmy/unhighlight-all-in-buffer、ラッパーインタラクティブ関数であり、にバインドさhUれている提案されたソリューションsearch-mapです。デフォルトでは、search-mapプレフィックスはM-sです。だから今、M-s h uローンチunhighlight-regexpと同時に、M-s h U(首都のUに注意してください)がローンチしmy/unhighlight-all-in-bufferます。

(require 'hi-lock)        
(defun my/unhighlight-all-in-buffer ()
  "Remove all highlights made by `hi-lock' from the current buffer.
The same result can also be be achieved by \\[universal-argument] \\[unhighlight-regexp]."
  (interactive)
  (unhighlight-regexp t))
(define-key search-map "hU" #'my/unhighlight-all-in-buffer)

ポイントでシンボルをハイライト解除するより良い方法はありますか?

良い点は、強調表示を解除する必要があるシンボルにポイントを配置する必要がないことです。

あなたは、単に呼び出すM-x unhighlight-regexpM-s h u(デフォルトは結合)とヒットM-p/ M-nあなたがハイライトを消しに必要なシンボルの正規表現に遭遇するまで、およびEnterキーを押します。


4

別の方法は、ライブラリのハイライトhighlight.el)、コマンドhlt-highlight-symbol-at-point、およびを使用することhlt-unhighlight-symbol-at-pointです。

これらはそれぞれデフォルトでC-x X h sおよびC-x X u sにバインドされています。すべての強調表示および強調表示解除コマンドはC-x X、デフォルトでプレフィックスキーにバインドされています。強調表示コマンドは、プレフィックスキーを使用しますC-x X h。ハイライト解除コマンドは、プレフィックスキーを使用しますC-x X uC-x Xprefix commandにバインドするだけでなく、異なるプレフィックスキーを使用できますhlt-map

ライブラリのハイライトハイライトでは、オーバーレイまたはテキストプロパティ(またはその両方)を使用できます。強調表示されている顔または色は、(カスタマイズされた顔と色のシーケンスから)自動的に選択される場合とされない場合があります。

強調表示にはpropertyを使用できるためfont-lock-face、Font Lockモードで制御されます。または、propertyを使用してface、制御されないようにすることができます。(プロパティfaceを使用して、フォントロックを使用しないバッファーで強調表示できます。フォントロックモードをオフにすると、強調表示はフォントロックバッファーに残ります。)


4

C-u C-x w r

(unhighlight-regexp REGEXP) (...)REGEXPがtの場合(またはC-u インタラクティブに指定された場合)、すべてのハイロックハイライトを削除します。


0

これにより、単一のシンボルのハイライトが解除されます。

(defun unhighlight-symbol-at-point ()
  "Remove highlight of symbol at point."
  (interactive)
  (unhighlight-regexp (concat "\\_<" (thing-at-point 'symbol) "\\_>")))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.