mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
cl-macs `loop' fix for bug#7492.
* lisp/emacs-lisp/cl-macs.el (cl-parse-loop-clause): Avoid infinite loop over windows.
This commit is contained in:
parent
bd77c2effa
commit
05907bb3aa
2 changed files with 14 additions and 2 deletions
|
|
@ -1,5 +1,8 @@
|
|||
2010-12-02 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* emacs-lisp/cl-macs.el (cl-parse-loop-clause):
|
||||
Avoid infinite loop over windows. (Bug#7492)
|
||||
|
||||
* progmodes/flymake.el (flymake-check-file-limit):
|
||||
Allow nil to mean "no limit".
|
||||
(flymake-check-patch-master-file-buffer): Update for above change.
|
||||
|
|
|
|||
|
|
@ -965,16 +965,25 @@ Valid clauses are:
|
|||
|
||||
((memq word '(window windows))
|
||||
(let ((scr (and (memq (car loop-args) '(in of)) (cl-pop2 loop-args)))
|
||||
(temp (make-symbol "--cl-var--")))
|
||||
(temp (make-symbol "--cl-var--"))
|
||||
(minip (make-symbol "--cl-minip--")))
|
||||
(push (list var (if scr
|
||||
(list 'frame-selected-window scr)
|
||||
'(selected-window)))
|
||||
loop-for-bindings)
|
||||
;; If we started in the minibuffer, we need to
|
||||
;; ensure that next-window will bring us back there
|
||||
;; at some point. (Bug#7492).
|
||||
;; (Consider using walk-windows instead of loop if
|
||||
;; you care about such things.)
|
||||
(push (list minip `(minibufferp (window-buffer ,var)))
|
||||
loop-for-bindings)
|
||||
(push (list temp nil) loop-for-bindings)
|
||||
(push (list 'prog1 (list 'not (list 'eq var temp))
|
||||
(list 'or temp (list 'setq temp var)))
|
||||
loop-body)
|
||||
(push (list var (list 'next-window var)) loop-for-steps)))
|
||||
(push (list var (list 'next-window var minip))
|
||||
loop-for-steps)))
|
||||
|
||||
(t
|
||||
(let ((handler (and (symbolp word)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue