2011-02-07 23 views
12

Tôi gặp lỗi đồ họa này với chế độ linum trong Emacs của tôi. Tôi đã thử nâng cấp từ 23 lên 24 (qua git) và tôi đã thử cả hai với các tệp nhị phân được cung cấp trực tuyến và với phiên bản được biên dịch tại nhà của tôi. Điều tôi thực sự quan tâm là bắt đầu chẩn đoán vấn đề ở đâu.Điều gì gây ra lỗi đồ họa này trong các emacs với chế độ linum trên OS X?

"Tearing" of numbers in linum-mode

Vấn đề sẽ biến mất nếu tôi di chuyển các số dòng xé rời màn hình và trở lại trong.

Trả lời

11

tôi đã trải qua cùng một vấn đề và dành nhiều thời gian cố gắng để giải quyết nó. Lỗi đồ họa là kết quả của một xung đột giữa chế độ linum và cách rìa được hiển thị. Thật không may, tôi đã không thể giải quyết vấn đề trong linum.el, và mã hiển thị rìa là một phần của nguồn C.

Nó vẫn có thể được thực hiện! Cách dễ nhất để sửa chữa nó là chỉ cần tắt rìa.

M-x fringe-mode RET none RET 

Để thực hiện các rìa vĩnh viễn ở lại tắt, tôi khuyên bạn tùy biến các thiết lập với M-x customize-group RET fringe vì một số phiên bản biên dịch của Emacs dành cho Mac OS X có các cài đặt rìa của mình mà có thể ghi đè lên các bộ phận của tập tin emacs của bạn.

Tôi không thực sự cần những chỉ báo bọc đường đó, vì vậy không có rìa không làm phiền tôi. Tuy nhiên, tôi đã bỏ lỡ một sự tách biệt nhỏ giữa các số dòng và văn bản đệm. Tôi theo lời khuyên của một bài đăng trên Wiki Emacs để lấy lại khoảng cách đó. Trong phiên bản 0.9x của Linum, thay đổi dòng 160 từ

(setq width (max width (length str))) 

để

(setq width (max width (+ (length str) 1))) 

Cảm hứng cho sự thay đổi này là ở đây: http://www.emacswiki.org/emacs/LineNumbers

Có tranh luận tại liên kết nguồn để thiết lập linum-format thay vì sửa đổi linum.el. Trong khi tôi hiểu nơi họ đến từ, hầu hết các chủ đề màu sắc những ngày này sẽ tô màu thêm không gian và không cung cấp những gì tôi đang tìm kiếm (một sự tách biệt về một không gian đó là màu nền). Nếu bạn chỉnh sửa linum.el, hãy đảm bảo chạy

M-x emacs-lisp-byte-compile-and-load 

để thực hiện thay đổi liên tục. Bạn có thể xem kết quả của điều này bằng cách nhìn vào khoảng trống trước con trỏ trong hình được tìm thấy ở đây: http://i.stack.imgur.com/TxyMr.png (Tôi không có đủ danh tiếng để nhúng hình ảnh).

Không có đồ tạo tác đồ họa nào khác!

0

Đây là cách tôi thiết lập nó trong số .emacs và tôi không gặp sự cố, mặc dù tôi cũng không sử dụng biểu tượng cảm xúc với gtk hoặc bất kỳ gui nào khác.

(Linum-mode +1)

(setq Linum định dạng "% d")

Bạn có thể muốn hack xung quanh với (setq linum-format) để xem nếu bạn có thể nhận được kết quả tốt. Cũng đừng quên duyệt emacswiki on linum.

7

Tôi đã có cùng một vấn đề và tôi đã tìm ra một giải pháp và trong khi nó không phải là đẹp nhất, do có thêm không gian ở bên trái của số dòng, nó thanh lịch hơn nhiều so với thay đổi linum.el. Đây là phần liên hệ của tôi ~/emacs:

;; Linum mode                                                       
(global-linum-mode t)                                                     
;; Offset the number by two spaces to work around some weird fringe glitch                                          
(setq linum-format " %d ") 

này loại bỏ các vấn đề rìa lớp phủ và không có bất kỳ tác động nào khác ngoài bù đắp số dòng.

0

để làm cho một sự tách biệt giữa số dòng và văn bản đệm, sự thay đổi tiếp theo sẽ tốt hơn:

Trong phiên bản 0.9x của Linum, thay đổi dòng 150 từ

(concat "%" (số -to-chuỗi w) "d")))))

để

(concat "%" (số-to-chuỗi w) "d")))))

làm này sự phân chia có cùng màu nền với số dòng '.

+0

Chỉnh sửa mã gốc không phải là một ý tưởng tuyệt vời, mặc dù. Tôi khuyên bạn nên áp dụng mã theo câu trả lời sau và thay đổi điều đó thành: http://stackoverflow.com/a/11496199/324105 – phils

0

Sự cố vẫn ở đây trên các emacs 24.4, OS X 10.10.1. Các giải pháp tôi làm việc ra: sau khi tải chủ đề của sự lựa chọn của bạn:

(load-theme 'whatever) 
(set-face-attribute 'fringe nil :background (face-background 'default)) 
Các vấn đề liên quan