Thay đổi màu nền của khối cụ thể?


7

Tôi muốn bắt đầu một màu nền khác nhau bắt đầu từ một chức năng đến cuối.

Như thế này:

nhập mô tả hình ảnh ở đây

Tôi biết bạn có thể xác định màu nền từ một số khuôn mặt như tên hàm và hàm như thế nào foobar. Nhưng nó chỉ ảnh hưởng đến màu nền của các từ functionfoobar. Tôi muốn thay đổi màu nền của toàn bộ dòng nơi thống kê hàm và kết thúc với nó.

Tại sao, bạn sẽ hỏi? Nó sẽ giúp tôi dễ dàng hơn rất nhiều để phân biệt phần nào thuộc về chức năng.

Vì vậy, tôi tự hỏi nếu có một cách pratical để quản lý điều này trong Emacs, có một gói Lisp để đạt được một cái gì đó như thế không?


Theo tôi, một lớp phủ có khuôn mặt sẽ dễ nhất - tương tự như làm nổi bật một vùng cụ thể - bạn có thể chọn màu và mức độ ưu tiên. Ví dụ, hãy xem các chức năng isearch-highlightisearch-dehighlight
luật

Câu trả lời:


4
  1. Bạn có thể sử dụng Đánh dấu thư viện để tô sáng một vùng bằng các thuộc tính lớp phủ hoặc văn bản - cụ thể là thuộc tính face. Để làm nổi bật nền, sử dụng một khuôn mặt sử dụng thuộc tính backgroundnhưng không foreground.

    Nếu bạn sử dụng thuộc tính văn bản facethì bạn cũng có thể sao chép các thuộc tính từ một số văn bản và dán chúng vào văn bản khác. Vì vậy, nếu định nghĩa của bạn thay đổi và trở nên lớn hơn, bạn có thể sao chép một số phần được tô sáng và sau đó dán thuộc tính của nó facevào phần không được tô sáng.

    Bạn cũng có thể sử dụng các chức năng được xác định trong thư viện để thực hiện tự động (ví dụ như móc thay đổi bộ đệm hoặc theo định kỳ, trên bộ hẹn giờ) mở rộng phần tô sáng của bộ khử để điều chỉnh các thay đổi của nó.

    Nếu bạn sử dụng lớp phủ thì bạn có thể sử dụng các lệnh xóa tô sáng (ví dụ hlt-eraser:) để chỉ xóa khuôn mặt cuối cùng mà bạn đã tô sáng. Kéo chuột trên văn bản nơi bạn muốn xóa phần tô sáng.

  2. Bạn có thể sử dụng khóa phông chữ thông thường. Thêm một mẫu để font-lock-keywordssử dụng một chức năng nhận ra điểm bắt đầu và kết thúc của định nghĩa của bạn. Xem hướng dẫn Elisp, Từ khóa tùy chỉnh nút cũng như nút cha, Chế độ khóa phông chữ và các con khác của nó.


CẬP NHẬT sau bình luận của bạn

Tôi nghĩ rằng có thể bạn đang hỏi về việc làm nổi bật không phải khu vực mà là các dòng được chạm vào khu vực đó và mở rộng đánh dấu qua phần cuối của văn bản (bao gồm cả bất kỳ ký tự khoảng trắng nào). Là nó? Nếu vậy, hãy thử điều này:

(defun hlt-highlight-lines (start end face msgp)
  "Highlight full lines in region, window-wide."
  (interactive (list (save-excursion (goto-char (region-beginning))
                                     (line-beginning-position))
                     (save-excursion (goto-char (region-end))
                                     (line-beginning-position 2))
                     nil
                     t))
  (hlt-highlight-region start end face msgp))

Drew, cảm ơn bạn đã trả lời. Phải mất một thời gian để tôi trả lời câu trả lời của bạn vì tôi muốn thử các ứng dụng này. Tuy nhiên, highlightthư viện đã không làm việc cho tôi. Nó chỉ áp dụng một nền tảng về nơi văn bản. Khi văn bản kết thúc, nó dừng lại với màu nền. Bất cứ đề nghị nào?
ReneFroger

1. Tôi nghĩ có lẽ bạn đang hỏi về việc kéo dài phần tô sáng qua phần cuối của văn bản (bao gồm cả bất kỳ ký tự khoảng trắng nào). Là nó? Nếu vậy, hãy thử lệnh tôi đã thêm ở trên. 2. Bạn cũng đã thử câu trả lời khóa chữ chưa? Điều đó cũng nên làm việc.
vẽ

Trong mọi trường hợp, tôi đã thêm lệnh đơn giản đó vào highlight.el. Nếu nó giúp bạn, tốt.
vẽ

Lưu ý rằng điều này hoạt động miễn là bạn có một dòng mới sau dòng cuối cùng bạn muốn làm nổi bật.
zck
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.