rewrote vk/last-key-repeats: now really count the number of times the last key have been pressed, no matter how many times that might have been.

This commit is contained in:
TLINDEN
2016-05-15 14:33:23 +02:00
parent da1a5959f1
commit 6b4843727d

View File

@@ -199,25 +199,18 @@ should be a point-moving function."
(defun vk/last-key-repeats () (defun vk/last-key-repeats ()
"Returns how many times the last key has been pressed as integer." "Returns how many times the last key has been pressed as integer."
;; FIXME: should be possible with just counting '(recent-keys)
(interactive) (interactive)
(let* ((keys (recent-keys)) (let* ((keys (reverse (append (recent-keys) nil)))
(len (length keys)) (len (length keys))
(key1 (if (> len 0) (elt keys (- len 1)) nil)) (first (car keys))
(key2 (if (> len 1) (elt keys (- len 2)) nil)) (times 0))
(key3 (if (> len 2) (elt keys (- len 3)) nil)) (progn
(key4 (if (> len 3) (elt keys (- len 4)) nil)) (catch 'nomore
(key5 (if (> len 4) (elt keys (- len 5)) nil)) (dolist (k keys)
(key-equal-1 (equal key1 key2)) (if (equal first k)
(key-equal-2 (and key-equal-1 (equal key2 key3))) (setq times (+ times 1))
(key-equal-3 (and key-equal-2 (equal key3 key4))) (throw 'nomore t))))
(key-equal-4 (and key-equal-3 (equal key4 key5)))) times)))
(cond (key-equal-4 5)
(key-equal-3 4)
(key-equal-2 3)
(key-equal-1 2)
(t 1)
)))
;;;;; kill/delete wrappers ;;;;; kill/delete wrappers