Làm thế nào để làm nổi bật biểu tượng nổi bật với biểu tượng nổi bật tại điểm


13

highlight-symbol-at-point thực sự hữu ích tuy nhiên tôi không thể tìm thấy một cách dễ dàng để làm nổi bật các biểu tượng.

Hiện tại tôi phải gọi unhighlight-regexpliên tục cho mỗi biểu tượng được tô sáng.

Có cách nào tốt hơn để:

  • làm nổi bật tất cả các biểu tượng được tô sáng trong bộ đệm
  • làm nổi bật một biểu tượng tại điểm?

Bạn có cần làm nổi bật tất cả các biểu tượng trong một lần?
Kaushal Modi

Hầu hết thời gian, đúng thế. Thỉnh thoảng làm nổi bật một biểu tượng tại điểm cũng hữu ích.
kostya

Các câu trả lời sẽ khác nhau nếu bạn muốn làm nổi bật biểu tượng dưới điểm hoặc làm nổi bật tất cả các biểu tượng.
Kaushal Modi

Tôi đã cập nhật câu hỏi của mình
kostya

2
Bạn có thể xóa tất cả các biểu tượng được tô sáng bằng cách sử dụngM-x hi-lock-mode
Amir Karimi

Câu trả lời:


10

Có cách nào tốt hơn để làm nổi bật tất cả các biểu tượng được tô sáng trong bộ đệm không?

Từ C-h f unhighlight-regexp, chúng tôi nhận được

(REGEXP không nổi bật)

Xóa phần tô sáng của mỗi trận đấu thành REGEXP được đặt bằng khóa hi. Tương tác, nhắc nhở REGEXP, chỉ chấp nhận các biểu thức chính được chèn trước đó bởi các chức năng tương tác khóa cao. Nếu REGEXP là t (hoặc nếu Cu được chỉ định tương tác), thì hãy xóa tất cả đánh dấu khóa hi.

Điều đó có nghĩa là chúng ta chỉ cần gọi unhighlight-regexpvới ttư cách là đối số của nó để loại bỏ tất cả các đánh dấu khóa hi trong bộ đệm.

Nếu nó là một lần duy nhất, nó có thể được thực hiện nhanh chóng bằng M-: (unhighlight-regexp t)hoặc C-u M-s h u. Nhưng dường như đây là việc bạn cần làm khá thường xuyên. Trong trường hợp đó, tốt hơn là bọc nó trong một interactivehàm và liên kết nó với một số khóa.

Dưới đây là một giải pháp được đề xuất trong đó my/unhighlight-all-in-bufferlà chức năng tương tác của trình bao bọc và nó được ràng buộc hUtrong search-map. Theo mặc định, search-maptiền tố là M-s. Vì vậy, bây giờ, giống như M-s h ura mắt unhighlight-regexp, M-s h U(lưu ý thủ đô U) ra mắt 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)

Có cách nào tốt hơn để làm nổi bật một biểu tượng tại điểm?

Điều tốt là bạn không cần phải đặt điểm trên một biểu tượng bạn cần làm nổi bật.

Bạn chỉ cần gọi M-x unhighlight-regexphoặc M-s h u(ràng buộc mặc định của nó) và nhấn M-p/ M-ncho đến khi bạn gặp phải biểu thức chính của biểu tượng bạn cần làm nổi bật và nhấn Enter.


4

Một cách khác là sử dụng thư viện Highlight ( highlight.el), các lệnh hlt-highlight-symbol-at-pointhlt-unhighlight-symbol-at-point.

Chúng được ràng buộc mặc định C-x X h sC-x X u s, tương ứng. Theo mặc định, tất cả các lệnh tô sáng và làm nổi bật đều bị ràng buộc trên khóa tiền tố C-x X. Các lệnh tô sáng sử dụng khóa tiền tố C-x X h. Các lệnh làm sáng tỏ sử dụng khóa tiền tố C-x X u. Bạn có thể sử dụng khóa tiền tố khác với C-x Xchỉ ràng buộc nó với lệnh tiền tố hlt-map.

Làm nổi bật trong thư viện Nổi bật có thể sử dụng lớp phủ hoặc thuộc tính văn bản (hoặc cả hai). Mặt hoặc màu tô sáng có thể được chọn tự động (từ một chuỗi các mặt và màu tùy chỉnh) hoặc không.

Làm nổi bật có thể sử dụng thuộc tính font-lock-face, do đó nó được điều khiển bởi chế độ Khóa chữ. Hoặc nó có thể sử dụng tài sản face, để nó không bị kiểm soát. (Bạn có thể sử dụng thuộc tính faceđể tô sáng trong các bộ đệm không sử dụng khóa phông chữ và phần tô sáng vẫn còn trong bộ đệm bị khóa phông chữ khi bạn tắt chế độ Khóa phông chữ.)


4

C-u C-x w r

(unhighlight-regexp REGEXP) (...) Nếu REGEXP là t (hoặc nếu C-u được chỉ định tương tác), thì hãy xóa tất cả tô sáng khóa.


0

Điều này sẽ làm nổi bật một biểu tượng duy nhất:

(defun unhighlight-symbol-at-point ()
  "Remove highlight of symbol at point."
  (interactive)
  (unhighlight-regexp (concat "\\_<" (thing-at-point 'symbol) "\\_>")))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.