Christophe Weblog Wiki Code Publications Music
cosmetic change
[iplayer-el.git] / iplayer.el
index 882e5e961f3933464e28bdb8a36027b814bc77ce..2ad03d1ec4759bb300927425de093c013d15bf64 100644 (file)
                    (lambda ()
                      (select-frame iplayer-command-frame)
                      (select-window iplayer-command-window)
-                     (set-buffer iplayer-command-buffer)))
-                  (post-command-hook
-                   (lambda ()
-                     (select-window old-window)
-                     (select-frame old-frame)
-                     (set-buffer old-buffer))))
+                     (set-buffer iplayer-command-buffer)
+                     (setq pre-command-hook nil))))
               ;; KLUDGE: execute-kbd-macro executes a normal
               ;; command-loop, whose first action is to select the
               ;; current frame and window, which is why we contort
               ;; that it works, but mine is not too much to reason
               ;; why; lots of other ways to try to achieve this didn't
               ;; in fact work.
-              (execute-kbd-macro keys))))))
+              (execute-kbd-macro keys)
+              ;; KLUDGE: and then we restore old state
+              (select-window old-window)
+              (select-frame old-frame)
+              (set-buffer old-buffer))))))
     (message "Done updating iPlayer cache")))
 
 (defmacro define-iplayer-command (name arglist &rest body)
@@ -58,7 +58,7 @@
          (message "Updating iPlayer cache"))
        (if iplayer-updating-cache-sentinel-executing
            (progn ,@body)
-         (push (list (selected-frame) (selected-window) (current-buffer) (this-command-keys))
+         (push (list (selected-frame) (selected-window) (current-buffer) (this-command-keys-vector))
                iplayer-updating-cache-sentinel-info)))))
 
 (defun get-iplayer-tree (&rest args)