From 37e51e65ade14ded8d4a45cc725b4b66bab6b879 Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Tue, 19 Jul 2016 19:16:19 +0800 Subject: Fix a workspace switch issue * exwm-workspace.el (exwm-workspace--switch-map-nth-prefix): Add more checking conditions. --- exwm-workspace.el | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/exwm-workspace.el b/exwm-workspace.el index 551ccbfba98d..5d4d78f402ce 100644 --- a/exwm-workspace.el +++ b/exwm-workspace.el @@ -337,11 +337,17 @@ PREFIX-DIGITS is a list of the digits introduced so far." (* o x)) prefix-digits))) (n (+ pn d)) - (num-workspaces (exwm-workspace--count))) - (if (= (length prefix-digits) - (floor (log (1- num-workspaces) 10))) + prefix-length index-max index-length) + (if (or (= n 0) + (> n + (setq index-max (1- (exwm-workspace--count)))) + (>= (setq prefix-length (length prefix-digits)) + (setq index-length (floor (log index-max 10)))) + ;; Check if it's still possible to do a match. + (> (* n (expt 10 (- index-length prefix-length))) + index-max)) (exwm-workspace--switch-map-select-nth n) - ;; go ahead if there are enough digits to select any workspace. + ;; Go ahead if there are enough digits to select any workspace. (set-transient-map (let ((map (make-sparse-keymap)) (cmd `(lambda () -- cgit 1.4.1