2012-07-28 20 views
10

Hai câu hỏi liên quan sử dụng emacs 23.3.1 trên linux:Emacs: thiết lập và chuyển đổi show-dấu khoảng trắng

Thứ nhất, tại sao tôi không thể thiết lập giá trị của show-trailing-whitespace-t với setq như hình dưới đây? Khi tôi đặt phiên bản setq trong số .emacs của tôi, nó không thay đổi giá trị (như được xem là chức năng và bằng cách sử dụng M-x describe-variable).

(setq show-trailing-whitespace t) ; Does not change variable value or give error 

(custom-set-variables    ; Sets show-trailing-whitespace as expected 
'(show-trailing-whitespace t)) 

Thứ hai, làm thế nào tôi có thể chuyển đổi các giá trị giữa tnil? Tôi nghĩ rằng this answer là chính xác những gì tôi cần, nhưng nó không hoạt động trong trường hợp này. Tôi đã sử dụng:

(global-set-key "\M-ow" 'tf-toggle-show-trailing-whitespace) 

(defun tf-toggle-show-trailing-whitespace() 
    "Toggle show-trailing-whitespace between t and nil" 
    (interactive) 
    (setq show-trailing-whitespace (if (= show-trailing-whitespace nil) t nil)) 
    (redraw-display)) 

Khi tôi nhấn M-ow Tôi gặp lỗi Wront type argument: number-or-marker-p, nil. Bất kỳ ý tưởng?

Trả lời

17

Đầu tiên: là describe-variable cho bạn show-trailing-whitespace là Điều này có nghĩa là làm một bộ đệm setq chỉ đặt nó cho bộ đệm hiện tại và do đó không có tác dụng khi được thực hiện trong tệp .emacs. Để có một cái gì đó tương tự như tùy chỉnh nào bạn cần sử dụng setq-default thay vì setq. rk cho tất cả các bộ đệm.

Thứ hai: Để chuyển đổi, bạn có thể muốn sử dụng setq nếu bạn muốn bật bộ đệm trên mỗi bộ đệm. Lỗi bạn nhận được là bạn sử dụng = để kiểm tra xem hai số có bằng nhau hay không. Một toggling được thực hiện trong một thời trang sạch hơn bằng cách sử dụng not. Một lưu ý phụ, lệnh (redraw-display) dường như không làm bất cứ điều gì.

(defun tf-toggle-show-trailing-whitespace() 
    "Toggle show-trailing-whitespace between t and nil" 
    (interactive) 
    (setq show-trailing-whitespace (not show-trailing-whitespace))) 
+0

Siêu, cảm ơn! Thông báo trước duy nhất là '(vẽ lại hiển thị)' ** không ** làm điều gì đó hữu ích trong trường hợp của tôi. Nếu một số khoảng trống ở cuối được hiển thị bằng màu đỏ và tôi tắt cài đặt, không có '(hiển thị lại) ', khoảng trắng được đánh dấu không chuyển sang màu trắng cho đến khi tôi làm mới màn hình theo cách thủ công. –

0

ghi (eq show-dấu khoảng trắng nil)

hoặc ngắn hơn --but reversed--

(nếu show-dấu khoảng trắng

+0

Bạn nên giải thích lỗi là gì. –

Các vấn đề liên quan