2012-11-29 11 views

Trả lời

3

Bạn đoán rằng tùy chọn có liên quan đến từ "nhấp nháy". Vì vậy, bạn nhấn C-h a (cho apropos) và gõ "chớp mắt". Trên emacs của tôi, tôi nhận được hai tùy chọn: blink-cursor-modeblink-matching-open. Cái đầu tiên có vẻ đúng. Mô tả cho biết: "Chuyển đổi chế độ con trỏ nhấp nháy".

Phím tắt trên biểu tượng cảm xúc của tôi cho biết: <menu-bar> <options> <blink-cursor-mode>. Vì vậy, tôi đoán rằng tùy chọn ở đâu đó trong menu, có thể trong "tùy chọn". Tôi mở menu Tùy chọn và ở đó là: "Con trỏ nhấp nháy" với một hộp đánh dấu.

Điều này cũng giống như một tùy chọn có thể được tùy chỉnh. Vì vậy, tôi nhập M-x customize-option và sau đó blink-cursor-mode. Điều này cho phép tôi chuyển đổi giá trị và cũng lưu nó cho các phiên trong tương lai.

EDIT: Để đặt khoảng thời gian giữa BẬT và TẮT cho con trỏ, có một biến được gọi là blink-cursor-interval. Bạn có thể sử dụng M-x customize-variable và sau đó blink-cursor-interval để đặt khoảng thời gian. Biến số blink-cursor-alist khớp với loại con trỏ trạng thái TẮT cho loại con trỏ trạng thái ON và không liên quan đến tốc độ nhấp nháy. Theo như tôi biết không có cách nào để làm cho con trỏ dần tắt và bật, vì hình dạng của con trỏ cho trạng thái BẬT có thể khác với hình dạng ở trạng thái TẮT (vì vậy, một thay đổi dần dần hình dạng sẽ được yêu cầu).

+1

Vâng, tôi biết con trỏ có thể nhấp nháy, nhưng nó có thể nhấp nháy với tốc độ chậm không? Không chỉ đơn giản trên, tắt. 'Giống như đèn LED trên mặt trước của máy tính xách tay khi máy tính bị treo '. – louxiu

+0

Cảm ơn :-) Hy vọng Emacs có thể có tính năng này trong tương lai. – louxiu

+1

@louxiu Tương lai đã đến. :) Xem câu trả lời của tôi cho một con trỏ nhấp nháy kiểu nhịp tim đơn giản. – user4815162342

7

Chế độ nhỏ đơn giản này thực hiện con trỏ nhấp nháy kiểu nhịp tim. Bạn có thể tinh chỉnh heartbeat-cursor-colors để nhận các màu sắc khác nhau hoặc các biến thể của chúng.

Mã được kiểm tra trong Emacs 24.2.1, nhưng sẽ dễ dàng chuyển đến Emacsen cũ hơn.

(require 'cl) 
(require 'color) 

(defvar heartbeat-fps 16) 
(defvar heartbeat-period 5) 

(defun heartbeat-range (from to cnt) 
    (let ((step (/ (- to from) (float cnt)))) 
    (loop for i below cnt collect (+ from (* step i))))) 

(defun heartbeat-cursor-colors() 
    (let ((cnt (* heartbeat-period heartbeat-fps))) 
    (mapcar (lambda (r) 
       (color-rgb-to-hex r 0 0)) 
      (nconc (heartbeat-range .2 1 (/ cnt 2)) 
        (heartbeat-range 1 .2 (/ cnt 2)))))) 

(defvar heartbeat-cursor-timer nil) 
(defvar heartbeat-cursor-old-color) 

(define-minor-mode heartbeat-cursor-mode 
    "Change cursor color with the heartbeat effect." 
    nil "" nil 
    :global t 
    (when heartbeat-cursor-timer 
    (cancel-timer heartbeat-cursor-timer) 
    (setq heartbeat-cursor-timer nil) 
    (set-face-background 'cursor heartbeat-cursor-old-color)) 
    (when heartbeat-cursor-mode 
    (setq heartbeat-cursor-old-color (face-background 'cursor) 
      heartbeat-cursor-timer 
      (run-with-timer 
      0 (/ 1 (float heartbeat-fps)) 
      (lexical-let ((colors (heartbeat-cursor-colors)) tail) 
      (lambda() 
       (setq tail (or (cdr tail) colors)) 
       (set-face-background 'cursor (car tail)))))))) 
+0

Thật tuyệt vời! Tôi làm việc! – louxiu

+0

Đáng kinh ngạc - kudo cả bạn và emacs. Bây giờ chúng ta hãy xem bạn làm điều đó trong Eclipse ;-) –

+0

tuyệt vời! để chạy nó với emacs 24.3.1 tôi đã phải đặt thành 'nil'' heartbeat-cursor-timer' - (defvar heartbeat-cursor-timer nil) – nic