Jak odznaczyć symbol podświetlony symbolem podświetlenia w punkcie

14

highlight-symbol-at-point jest naprawdę przydatny, ale nie mogłem znaleźć łatwego sposobu na odznaczenie symboli.

Obecnie muszę dzwonić unhighlight-regexpwielokrotnie dla każdego wyróżnionego symbolu.

Czy istnieje lepszy sposób na:

  • odznacz wszystkie podświetlone symbole w buforze
  • odznaczyć symbol w punkcie?
kostya
źródło
Czy musisz odznaczyć wszystkie symbole za jednym razem?
Kaushal Modi
Przez większość czasu - tak. Czasami przydatne jest również podświetlenie symbolu w punkcie.
kostya
Odpowiedzi byłyby różne, jeśli chcesz odznaczyć symbol pod punktem lub odznaczyć wszystkie symbole.
Kaushal Modi
Zaktualizowałem swoje pytanie
kostya
2
Możesz usunąć wszystkie podświetlone symbole za pomocąM-x hi-lock-mode
Amir Karimi

Odpowiedzi:

11

Czy istnieje lepszy sposób na wyróżnienie wszystkich podświetlonych symboli w buforze?

Od C-h f unhighlight-regexp, rozumiemy

(unhighlight-regexp REGEXP)

Usuń zaznaczenie każdego dopasowania do zestawu REGEXP przez hi-lock. Interaktywnie pytaj o REGEXP, akceptuj tylko wyrażenia regularne poprzednio wstawione przez interaktywne funkcje hi-lock. Jeśli REGEXP to t (lub jeśli Cu określono interaktywnie), usuń wszystkie podświetlenia hi-lock.

Oznacza to, że po prostu musimy zadzwonić unhighlight-regexpz targumentem, aby usunąć wszystkie podświetlenia hi-lock w buforze.

Gdyby to była jednorazowa rzecz, można to szybko zrobić za pomocą M-: (unhighlight-regexp t)lub C-u M-s h u. Wygląda jednak na to, że trzeba to robić dość często. W takim przypadku lepiej jest zawinąć go w interactivefunkcję i przypisać do jakiegoś klawisza.

Poniżej znajdują się proponowane rozwiązanie, gdzie my/unhighlight-all-in-bufferjest interaktywny funkcja otoki i jest związana hUw search-map. Domyślnie search-mapprefiks to M-s. Więc teraz, tak jak M-s h uszalup unhighlight-regexp, M-s h U(uwaga na kapitał U) uruchamia 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)

Czy istnieje lepszy sposób na wyróżnienie symbolu w punkcie?

Dobrą rzeczą jest to, że nie musisz umieszczać punktu na symbolu, który musisz odznaczyć.

Po prostu wywołujesz M-x unhighlight-regexplub M-s h u(jego domyślne wiązanie) i naciskasz M-p/ M-ndopóki nie natrafisz na wyrażenie regularne symbolu, którego chcesz odznaczyć, i naciskasz Enter.

Kaushal Modi
źródło
4

Innym sposobem jest użycie biblioteki Highlight ( highlight.el), poleceń hlt-highlight-symbol-at-pointi hlt-unhighlight-symbol-at-point.

Są one zobowiązane do domyślne C-x X h si C-x X u sodpowiednio. Wszystkie polecenia podświetlania i odznaczania są C-x Xdomyślnie powiązane z klawiszem prefiksu . Polecenia podświetlania używają klawisza prefiksu C-x X h. Polecenia odznaczania używają klawisza prefiksu C-x X u. Możesz użyć innego klucza prefiksu niż C-x Xprzez powiązanie go z poleceniem prefiksu hlt-map.

Podświetlanie w bibliotece Podświetlanie może wykorzystywać nakładki lub właściwości tekstu (lub oba te elementy). Podkreślającą twarz lub kolor można wybrać automatycznie (z dostosowanej sekwencji twarzy i kolorów) lub nie.

Podświetlanie może wykorzystywać właściwość font-lock-face, dzięki czemu jest kontrolowana przez tryb blokady czcionek. Lub może użyć właściwości face, aby nie była przez nią kontrolowana. (Możesz użyć właściwości facedo podświetlania w buforach, które nie używają blokowania czcionek, a podświetlanie pozostaje w buforach z zablokowanymi czcionkami po wyłączeniu trybu Blokowania czcionek.)

Rysował
źródło
4

C-u C-x w r

(unhighlight-regexp REGEXP) (...) Jeśli REGEXP to t (lub jeśli C-u został określony interaktywnie), usuń wszystkie podświetlenia hi-lock.

rofrol
źródło
0

Spowoduje to wyróżnienie jednego symbolu:

(defun unhighlight-symbol-at-point ()
  "Remove highlight of symbol at point."
  (interactive)
  (unhighlight-regexp (concat "\\_<" (thing-at-point 'symbol) "\\_>")))
znak
źródło