aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorGlenn Morris2014-02-01 17:04:08 -0800
committerGlenn Morris2014-02-01 17:04:08 -0800
commit7c3247627a102b53e9808ef51eca4a22c3a39fa3 (patch)
tree0991781118d5d1e1a20952a9f5919e41b2bcd512 /lisp
parent28e6cee8178fb4134480e01e92a3a58a64e6cbee (diff)
downloademacs-7c3247627a102b53e9808ef51eca4a22c3a39fa3.tar.gz
emacs-7c3247627a102b53e9808ef51eca4a22c3a39fa3.zip
register preview fixes
* doc/emacs/regs.texi (Registers): Mention previewing. * lisp/register.el (register-preview-default): New function, split from register-preview. (register-preview-function): Rename from register-preview-functions, make it not a hook. (register-preview): Use register-preview-function. (register-read-with-preview): Error on non-character event. * etc/NEWS: Related markup. Fixes: debbugs:16595
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/register.el26
2 files changed, 24 insertions, 11 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b2adc2cf881..11952ba98ee 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,12 @@
12014-02-02 Glenn Morris <rgm@gnu.org>
2
3 * register.el (register-preview-default): New function,
4 split from register-preview.
5 (register-preview-function): Rename from register-preview-functions,
6 make it not a hook.
7 (register-preview): Use register-preview-function.
8 (register-read-with-preview): Error on non-character event. (Bug#16595)
9
12014-02-01 Dmitry Gutov <dgutov@yandex.ru> 102014-02-01 Dmitry Gutov <dgutov@yandex.ru>
2 11
3 * progmodes/ruby-mode.el (ruby-smie--implicit-semi-p): Check for 12 * progmodes/ruby-mode.el (ruby-smie--implicit-semi-p): Check for
diff --git a/lisp/register.el b/lisp/register.el
index 798ea0615d1..cca09930611 100644
--- a/lisp/register.el
+++ b/lisp/register.el
@@ -119,11 +119,21 @@ See the documentation of the variable `register-alist' for possible VALUEs."
119 (substring d (match-end 0)) 119 (substring d (match-end 0))
120 d))) 120 d)))
121 121
122(defvar register-preview-functions nil) 122(defun register-preview-default (r)
123 "Default function for the variable `register-preview-function'."
124 (format "%s %s\n"
125 (concat (single-key-description (car r)) ":")
126 (register-describe-oneline (car r))))
127
128(defvar register-preview-function #'register-preview-default
129 "Function to format a register for previewing.
130Takes one argument, a cons (NAME . CONTENTS) as found in `register-alist'.
131Returns a string.")
123 132
124(defun register-preview (buffer &optional show-empty) 133(defun register-preview (buffer &optional show-empty)
125 "Pop up a window to show register preview in BUFFER. 134 "Pop up a window to show register preview in BUFFER.
126If SHOW-EMPTY is non-nil show the window even if no registers." 135If SHOW-EMPTY is non-nil show the window even if no registers.
136Format of each entry is controlled by the variable `register-preview-function'."
127 (when (or show-empty (consp register-alist)) 137 (when (or show-empty (consp register-alist))
128 (with-temp-buffer-window 138 (with-temp-buffer-window
129 buffer 139 buffer
@@ -132,14 +142,7 @@ If SHOW-EMPTY is non-nil show the window even if no registers."
132 nil 142 nil
133 (with-current-buffer standard-output 143 (with-current-buffer standard-output
134 (setq cursor-in-non-selected-windows nil) 144 (setq cursor-in-non-selected-windows nil)
135 (mapc 145 (insert (mapconcat register-preview-function register-alist ""))))))
136 (lambda (r)
137 (insert (or (run-hook-with-args-until-success
138 'register-preview-functions r)
139 (format "%s %s\n"
140 (concat (single-key-description (car r)) ":")
141 (register-describe-oneline (car r))))))
142 register-alist)))))
143 146
144(defun register-read-with-preview (prompt) 147(defun register-read-with-preview (prompt)
145 "Read and return an event, prompting with PROMPT, possibly showing a preview. 148 "Read and return an event, prompting with PROMPT, possibly showing a preview.
@@ -162,7 +165,8 @@ such a window regardless."
162 help-chars) 165 help-chars)
163 (unless (get-buffer-window buffer) 166 (unless (get-buffer-window buffer)
164 (register-preview buffer 'show-empty))) 167 (register-preview buffer 'show-empty)))
165 last-input-event) 168 (if (characterp last-input-event) last-input-event
169 (error "Non-character input-event")))
166 (and (timerp timer) (cancel-timer timer)) 170 (and (timerp timer) (cancel-timer timer))
167 (let ((w (get-buffer-window buffer))) 171 (let ((w (get-buffer-window buffer)))
168 (and (window-live-p w) (delete-window w))) 172 (and (window-live-p w) (delete-window w)))