From 6b4843727d299b5ff7826cfb74e0d8dd43bd67a3 Mon Sep 17 00:00:00 2001 From: TLINDEN Date: Sun, 15 May 2016 14:33:23 +0200 Subject: [PATCH] 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. --- viking-mode.el | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/viking-mode.el b/viking-mode.el index e3bb6e8..c4c0e18 100644 --- a/viking-mode.el +++ b/viking-mode.el @@ -199,25 +199,18 @@ should be a point-moving function." (defun vk/last-key-repeats () "Returns how many times the last key has been pressed as integer." - ;; FIXME: should be possible with just counting '(recent-keys) (interactive) - (let* ((keys (recent-keys)) + (let* ((keys (reverse (append (recent-keys) nil))) (len (length keys)) - (key1 (if (> len 0) (elt keys (- len 1)) nil)) - (key2 (if (> len 1) (elt keys (- len 2)) nil)) - (key3 (if (> len 2) (elt keys (- len 3)) nil)) - (key4 (if (> len 3) (elt keys (- len 4)) nil)) - (key5 (if (> len 4) (elt keys (- len 5)) nil)) - (key-equal-1 (equal key1 key2)) - (key-equal-2 (and key-equal-1 (equal key2 key3))) - (key-equal-3 (and key-equal-2 (equal key3 key4))) - (key-equal-4 (and key-equal-3 (equal key4 key5)))) - (cond (key-equal-4 5) - (key-equal-3 4) - (key-equal-2 3) - (key-equal-1 2) - (t 1) - ))) + (first (car keys)) + (times 0)) + (progn + (catch 'nomore + (dolist (k keys) + (if (equal first k) + (setq times (+ times 1)) + (throw 'nomore t)))) + times))) ;;;;; kill/delete wrappers