emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master bbc1edc 2/2: Merge branch 'master' of https://github.com/l


From: Leo Liu
Subject: [elpa] master bbc1edc 2/2: Merge branch 'master' of https://github.com/leoliu/temp-buffer-browse
Date: Thu, 4 Aug 2016 17:36:24 +0000 (UTC)

branch: master
commit bbc1edcf377950ca6412fd25402ba1117a9af107
Merge: 56bf176 db6041b
Author: Leo Liu <address@hidden>
Commit: Leo Liu <address@hidden>

    Merge branch 'master' of https://github.com/leoliu/temp-buffer-browse
---
 packages/temp-buffer-browse/temp-buffer-browse.el |   37 +++++++++++++--------
 1 file changed, 24 insertions(+), 13 deletions(-)

diff --git a/packages/temp-buffer-browse/temp-buffer-browse.el 
b/packages/temp-buffer-browse/temp-buffer-browse.el
index 70871af..0a63ac2 100644
--- a/packages/temp-buffer-browse/temp-buffer-browse.el
+++ b/packages/temp-buffer-browse/temp-buffer-browse.el
@@ -1,9 +1,10 @@
 ;;; temp-buffer-browse.el --- temp buffer browse mode  -*- lexical-binding: t; 
-*-
 
-;; Copyright (C) 2013-2014  Free Software Foundation, Inc.
+;; Copyright (C) 2013-2016  Free Software Foundation, Inc.
 
 ;; Author: Leo Liu <address@hidden>
-;; Version: 1.4
+;; Version: 1.5
+;; Package-Requires: ((emacs "24"))
 ;; Keywords: convenience
 
 ;; This program is free software; you can redistribute it and/or modify
@@ -96,6 +97,9 @@
     (define-key map [backspace] down)
     map))
 
+(defvar temp-buffer-browse--last-exit #'ignore
+  "The \"exit-function\" of the last call to `set-transient-map'.")
+
 ;;;###autoload
 (defun temp-buffer-browse-activate ()
   "Activate temporary key bindings for current window.
@@ -133,17 +137,24 @@ scroll down and close the temp buffer window, 
respectively."
       ;; negative priority.
       (unless (bound-and-true-p adaptive-wrap-prefix-mode)
         (overlay-put o 'wrap-prefix (overlay-get o 'line-prefix)))
-      (set-transient-map
-       temp-buffer-browse-map
-       (lambda ()
-         ;; When any error happens the keymap is active forever.
-         (with-demoted-errors
-           (or (and (window-live-p temp-buffer-browse--window)
-                    (not (member (this-command-keys) '("\C-m" [return])))
-                    (eq this-command (lookup-key temp-buffer-browse-map
-                                                 (this-command-keys))))
-               (ignore (overlay-put o 'line-prefix nil)
-                       (overlay-put o 'wrap-prefix nil)))))))))
+      ;; Workaround for bug http://debbugs.gnu.org/24149.
+      (funcall temp-buffer-browse--last-exit)
+      (setq temp-buffer-browse--last-exit
+            (set-transient-map
+             temp-buffer-browse-map
+             (lambda ()
+               ;; If uncaught any error will make the keymap active
+               ;; forever.
+               (condition-case err
+                   (or (and (window-live-p temp-buffer-browse--window)
+                            (not (member (this-command-keys) '("\C-m" 
[return])))
+                            (eq this-command (lookup-key temp-buffer-browse-map
+                                                         (this-command-keys))))
+                       (ignore (setq temp-buffer-browse--last-exit #'ignore)
+                               (overlay-put o 'line-prefix nil)
+                               (overlay-put o 'wrap-prefix nil)))
+                 (error (message "%s:%s" this-command (error-message-string 
err))
+                        nil))))))))
 
 ;;;###autoload
 (define-minor-mode temp-buffer-browse-mode nil



reply via email to

[Prev in Thread] Current Thread [Next in Thread]