2012-11-29 4 views
5

Wie kann ich den Cursor in Emacs wie einen Herzschlag blinken lassen. Wie die LED auf der Vorderseite des Laptops, wenn der Computer ausgeschaltet ist.Ich freue mich darauf, wie der Cursor in Emacs wie ein Herzschlag blinkt

Es gibt Variable blink-cursor-alist, die das Blinzeln des Cursors steuern, aber ich weiß nicht, wie ich es verwenden kann, um meine Anforderung zu erfüllen.

Ist es möglich?

Antwort

3

Sie vermuten, dass die Option etwas mit dem Wort "blink" zu tun hat. Sie drücken also C-h a (für apropos) und tippen "blink". Auf meinem Emacs, bekomme ich zwei Optionen: blink-cursor-mode und blink-matching-open. Der erste sieht richtig aus. Die Beschreibung sagt: "Blinken Cursor-Modus".

Die Abkürzung auf meinem Emacs sagt: <menu-bar> <options> <blink-cursor-mode>. Also ich denke, dass die Option irgendwo im Menü ist, vielleicht unter "Optionen". Ich öffne das Menü Optionen, und dort ist es: "blinkender Cursor" mit einem Häkchen.

Dies klingt auch wie eine Option, die angepasst werden kann. Also schreibe ich M-x customize-option und dann blink-cursor-mode. Dadurch kann ich den Wert umschalten und ihn auch für zukünftige Sitzungen speichern.

EDIT: das Intervall zwischen ON und OFF für die Cursor zu setzen, gibt es eine Variable namens blink-cursor-interval. Sie können M-x customize-variable und dann blink-cursor-interval verwenden, um das Intervall festzulegen. Die Variable blink-cursor-alist gleicht einen OFF-Status-Cursortyp mit dem ON-Status-Cursortyp und hängt nicht mit der Geschwindigkeit des Blinkens zusammen.

EDIT2: Soweit ich weiß, gibt es keine Möglichkeit, den Cursor allmählich aus- und einzuschalten, weil die Form des Cursors für den ON-Zustand anders sein kann als die Form im OFF-Zustand (also a allmähliche Änderung der Form wird erforderlich sein).

+1

Ja, ich weiß, dass der Cursor blinken kann, aber könnte es in einem langsamen Tempo blinken? Nicht nur einfach aus, aus. 'Wie die LED auf der Vorderseite des Laptops, wenn der Computer ausgesetzt ist'. – louxiu

+0

Danke :-) Hoffe, Emacs kann diese Funktion in der Zukunft haben. – louxiu

+1

@louxiu Die Zukunft ist da. :) Siehe meine Antwort für einen einfachen blinkenden Cursor im Stil eines Herzschlags. – user4815162342

7

Dieser einfache Nebenmodus implementiert einen blinkenden Cursor im Heartbeat-Stil. Sie können heartbeat-cursor-colors zwicken, um unterschiedliche Farbtöne oder Variationen davon zu erhalten.

Der Code wurde in Emacs 24.2.1 getestet, wäre aber leicht zu älteren Emacsen zu portieren.

(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

Das ist fantastisch! Ich arbeite! – louxiu

+0

Unglaublich - ein großes Lob an Sie und an Emacs. Jetzt sehen wir, dass du das in Eclipse machst ;-) –

+0

erstaunlich! um es mit emacs 24.3.1 zu starten, musste ich auf 'nil'' heartbeat-cursor-timer' setzen - (defvar heartbeat-cursor-timer nil) – nic

Verwandte Themen