Trường hợp sử dụng của tôi cho SE này là có một hộp quanh region
mặt, do đó, vùng được tô sáng transient-mark-mode
sẽ hiển thị ngay cả khi vùng này chồng lấp với một số lớp phủ khác:
(set-face-attribute 'region nil
:box '(:line-width -1
:color "gtk_selection_bg_color"
:style nil))
Ví dụ iedit-mode
: với :
Mỗi khi văn bản được tô sáng bằng "vùng được đóng hộp" tôi có thể thấy độ rộng văn bản được mô tả nhấp nháy.
Cách hack bẩn mà tôi có thể tìm thấy để loại bỏ hiện tượng nhấp nháy này là thêm một hộp có màu nền vào default
mặt. Thật không may, việc hack như vậy sẽ gây ra một số vấn đề ở những nơi khác, chẳng hạn như khoảng cách bổ sung giữa các dòng hoặc hiển thị không chính xác các tiện ích nút (ví dụ: trong bộ đệm tùy chỉnh).
Giải pháp cuối cùng được đưa ra trong báo cáo lỗi sau (xem bản vá đính kèm ở cuối chuỗi):
Con trỏ di chuyển nhấp nháy văn bản với hộp xung quanh văn bản được bật
Giải pháp này ảnh hưởng đến nội bộ Emacs và yêu cầu xây dựng tùy chỉnh Emacs sau khi áp dụng bản vá.
Tôi sẽ thử giải pháp sau. Tuy nhiên, vấn đề là init.el
sau đó tôi sẽ không tương thích với các bản dựng Emacs stock và sẽ phải sử dụng một số logic bổ sung để tìm xem bản vá trên có được áp dụng hay không.
Hy vọng, sau một số thử nghiệm, bản vá này sẽ được chấp nhận vào nguồn Emacs ...
Theo dõi 2019-01-21 :
Có vẻ như bản vá được tham chiếu ở trên không tương thích với mã nguồn Emacs mới nhất. Tôi đã phải thực hiện một số thay đổi để làm cho nó hoạt động với nhánh chủ git Emacs hiện tại. Thay vì tạo một bản vá khác, tôi đã tạo một ngã ba tại github và tạo một nhánh từ thượng nguồn với bản vá hộp mặt:
miếng dán mặt
Xây dựng Emacs từ chi nhánh này cũng giống như xây dựng Emacs chứng khoán.
Sau đây là init.el
mã phải tương thích với cả phiên bản Emacs đã vá và vanilla:
(unwind-protect
(condition-case ex
(set-face-attribute
'region nil
:box '(:line-width (-1 . -1)
:color "gtk_selection_bg_color"
:style nil))
('error
(set-face-attribute
'region nil
:box '(:line-width -1
:color "gtk_selection_bg_color"
:style nil)))))
Nó chỉ được thử nghiệm trên Linux với GTK +