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

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

[elpa] master 32911db 42/68: Start transition to `read-char'


From: Oleh Krehel
Subject: [elpa] master 32911db 42/68: Start transition to `read-char'
Date: Sat, 21 Mar 2015 19:07:02 +0000

branch: master
commit 32911dbc7ba8ec6e1e343f06663150d4e96f6114
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    Start transition to `read-char'
    
    * ace-window.el (aw--callback-body): Move most of `aw-callback' here.
    (aw--doit): Only pass the char to `aw--callback-body'.
    (aw--done): Repurpose from `ace-jump-done'.
    (ace-select-window): Use `read-char' instead of `set-transient-map'.
---
 ace-window.el |   63 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 46 insertions(+), 17 deletions(-)

diff --git a/ace-window.el b/ace-window.el
index 08ae5dd..9a86b76 100644
--- a/ace-window.el
+++ b/ace-window.el
@@ -116,16 +116,14 @@ This hook is set to nil with each call to `ace-window'.")
 (defvar aw--current-op nil
   "A function of one argument to call.")
 
-(defun aw--callback ()
-  "Call `aw--current-op' for the window selected by ace-jump."
-  (interactive)
-  (let* ((index (or (cl-position (aref (this-command-keys) 0)
-                                 aw-keys)
+(defun aw--callback-body (char)
+  (let* ((index (or (cl-position char aw-keys)
                     (length aw-keys)))
          (node (nth index (cdr ace-jump-search-tree))))
     (cond ((null node)
            (message "No such position candidate.")
-           (ace-jump-done))
+           ;; (ace-jump-done)
+           )
 
           ((eq (car node) 'branch)
            (let ((old-tree ace-jump-search-tree))
@@ -150,6 +148,29 @@ This hook is set to nil with each call to `ace-window'.")
            (ace-jump-done)
            (error "[AceJump] Internal error: tree node type is invalid")))))
 
+(defun aw--callback ()
+  "Call `aw--current-op' for the window selected by ace-jump."
+  (interactive)
+  (aw--callback-body (aref (this-command-keys) 0)))
+
+(defun aw--done ()
+  (setq ace-jump-query-char nil)
+  (setq ace-jump-current-mode nil)
+
+  ;; clean the status line
+  (setq ace-jump-mode nil)
+  (force-mode-line-update)
+
+  ;; delete background overlay
+  (loop for ol in ace-jump-background-overlay-list
+     do (delete-overlay ol))
+  (setq ace-jump-background-overlay-list nil)
+
+  ;; delete overlays in search tree
+  (when ace-jump-search-tree
+    (ace-jump-delete-overlay-in-search-tree ace-jump-search-tree)
+    (setq ace-jump-search-tree nil)))
+
 (defun aw--doit (mode-line)
   "Select a window and eventually call `aw--current-op' for it.
 Set mode line to MODE-LINE during the selection process."
@@ -172,7 +193,8 @@ Set mode line to MODE-LINE during the selection process."
                         (= 0 (buffer-size b))))))
              visual-area-list))))
     (cl-case (length visual-area-list)
-      (0)
+      (0
+       (error "Nowhere to switch to"))
       (1
        (if (aw-ignored-p (selected-window))
            (other-window 1)
@@ -231,17 +253,24 @@ Set mode line to MODE-LINE during the selection process."
          (force-mode-line-update)
          ;; turn off helm transient map
          (remove-hook 'post-command-hook 'helm--maybe-update-keymap)
+         (unwind-protect
+              (let ((char (read-char mode-line)))
+                (aw--callback-body char))
+           (aw--done))
+
+
          ;; override the local key map
-         (let ((map (make-keymap)))
-           (dolist (key-code aw-keys)
-             (define-key map (make-string 1 key-code) 'aw--callback))
-           (define-key map [t] 'ace-jump-done)
-           (if (fboundp 'set-transient-map)
-               (set-transient-map map)
-             (set-temporary-overlay-map map)))
-
-         (add-hook 'mouse-leave-buffer-hook 'ace-jump-done)
-         (add-hook 'kbd-macro-termination-hook 'ace-jump-done))))))
+         ;; (let ((map (make-keymap)))
+         ;;   (dolist (key-code aw-keys)
+         ;;     (define-key map (make-string 1 key-code) 'aw--callback))
+         ;;   (define-key map [t] 'ace-jump-done)
+         ;;   (if (fboundp 'set-transient-map)
+         ;;       (set-transient-map map)
+         ;;     (set-temporary-overlay-map map)))
+
+         ;; (add-hook 'mouse-leave-buffer-hook 'ace-jump-done)
+         ;; (add-hook 'kbd-macro-termination-hook 'ace-jump-done)
+         )))))
 
 ;; ——— Interactive 
—————————————————————————————————————————————————————————————
 ;;;###autoload



reply via email to

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