Як виділити символ неяскравого світла, виділений символом підсвічування в точці


13

highlight-symbol-at-point дійсно корисно, проте я не зміг знайти простий спосіб відкреслити символи.

Наразі мені доводиться unhighlight-regexpнеодноразово телефонувати по кожному виділеному символу.

Чи є кращий спосіб:

  • зніміть освітлення всіх виділених символів у буфері
  • зняти символ в точці?

Чи потрібно одночасно висвітлювати всі символи?
Каушал Моді

Більшість часу - так. Іноді корисне неяскраве позначення символу в точці.
Костя

Відповіді були б різними, якщо ви хочете вимкнути символ під точкою або не освітлити всі символи.
Каушал Моді

Я оновив своє запитання
kostya

2
Ви можете видалити всі виділені символи, використовуючиM-x hi-lock-mode
Амір Карімі

Відповіді:


10

Чи є кращий спосіб висвітлити всі виділені символи в буфері?

От C-h f unhighlight-regexp, ми отримуємо

(Неяскраве світло-регепс REGEXP)

Видаліть підсвічування кожного матчу на REGEXP, встановленому hi-lock. В інтерактивному режимі запросіть REGEXP, приймаючи лише регулярні вирази, попередньо вставлені інтерактивними функціями hi-lock. Якщо REGEXP є t (або якщо Cu було вказано інтерактивно), тоді видаліть усі підсвічування високого блокування.

Це означає, що нам просто потрібно зателефонувати unhighlight-regexpіз tсвоїм аргументом, щоб видалити всі виділення в блоці hi-lock.

Якби це була разова річ, це можна було б швидко зробити 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-regexpабо M-s h u(за замовчуванням прив’язка) та натисніть M-p/, M-nпоки не наткнетесь на регулярне вираження символу, який потрібно зняти, і натисніть Enter.


4

Інший спосіб - використовувати бібліотеку Highlight ( 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 u. Ви можете використовувати інший ключ префікса, ніж C-x Xпросто прив’язуючи його до команди префікса hlt-map.

Виділення в бібліотеці Highlight може використовувати накладки або властивості тексту (або обидва). Виділення обличчя чи кольору можна вибирати автоматично (із налаштованої послідовності облич та кольорів) чи ні.

Виділення може використовувати властивість font-lock-face, щоб воно контролювалося в режимі блокування шрифтів. Або він може використовувати властивість 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) "\\_>")))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.