Christophe Weblog Wiki Code Publications Music
fix iplayer commands invoked using M-x
[iplayer-el.git] / iplayer.el
index 882e5e961f3933464e28bdb8a36027b814bc77ce..cd59ac226eb70917a7ed7f899425d3db22d1dcfa 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)