Mercurial > emacs
comparison lisp/emacs-lisp/edebug.el @ 90813:e6fdae9180d4
Merge from emacs--devo--0
Patches applied:
* emacs--devo--0 (patch 698-710)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 216)
- Update from CVS
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-196
author | Miles Bader <miles@gnu.org> |
---|---|
date | Tue, 24 Apr 2007 21:56:25 +0000 |
parents | 4ef881a120fe 4ae89136374d |
children | 3619e7770f2e |
comparison
equal
deleted
inserted
replaced
90812:6137cc8ddf90 | 90813:e6fdae9180d4 |
---|---|
362 (defconst edebug-trace-buffer "*edebug-trace*" | 362 (defconst edebug-trace-buffer "*edebug-trace*" |
363 "Name of the buffer to put trace info in.") | 363 "Name of the buffer to put trace info in.") |
364 | 364 |
365 (defun edebug-pop-to-buffer (buffer &optional window) | 365 (defun edebug-pop-to-buffer (buffer &optional window) |
366 ;; Like pop-to-buffer, but select window where BUFFER was last shown. | 366 ;; Like pop-to-buffer, but select window where BUFFER was last shown. |
367 ;; Select WINDOW if it provided and it still exists. Otherwise, | 367 ;; Select WINDOW if it is provided and still exists. Otherwise, |
368 ;; if buffer is currently shown in several windows, choose one. | 368 ;; if buffer is currently shown in several windows, choose one. |
369 ;; Otherwise, find a new window, possibly splitting one. | 369 ;; Otherwise, find a new window, possibly splitting one. |
370 (setq window (if (and (windowp window) (edebug-window-live-p window) | 370 (setq window |
371 (eq (window-buffer window) buffer)) | 371 (cond |
372 window | 372 ((and (windowp window) (edebug-window-live-p window) |
373 (if (eq (window-buffer (selected-window)) buffer) | 373 (eq (window-buffer window) buffer)) |
374 (selected-window) | 374 window) |
375 (edebug-get-buffer-window buffer)))) | 375 ((eq (window-buffer (selected-window)) buffer) |
376 (if window | 376 ;; Selected window already displays BUFFER. |
377 (select-window window) | 377 (selected-window)) |
378 (if (one-window-p) | 378 ((edebug-get-buffer-window buffer)) |
379 (split-window)) | 379 ((one-window-p 'nomini) |
380 ;; (message "next window: %s" (next-window)) (sit-for 1) | 380 ;; When there's one window only, split it. |
381 (if (eq (get-buffer-window edebug-trace-buffer) (next-window)) | 381 (split-window)) |
382 ;; Don't select trace window | 382 ((let ((trace-window (get-buffer-window edebug-trace-buffer))) |
383 nil | 383 (catch 'found |
384 (select-window (next-window)))) | 384 (dolist (elt (window-list nil 'nomini)) |
385 (set-window-buffer (selected-window) buffer) | 385 (unless (or (eq elt (selected-window)) (eq elt trace-window) |
386 (set-window-hscroll (selected-window) 0);; should this be?? | 386 (window-dedicated-p elt)) |
387 ;; Found a non-dedicated window not showing | |
388 ;; `edebug-trace-buffer', use it. | |
389 (throw 'found elt)))))) | |
390 ;; All windows are dedicated or show `edebug-trace-buffer', split | |
391 ;; selected one. | |
392 (t (split-window)))) | |
393 (select-window window) | |
394 (set-window-buffer window buffer) | |
395 (set-window-hscroll window 0);; should this be?? | |
387 ;; Selecting the window does not set the buffer until command loop. | 396 ;; Selecting the window does not set the buffer until command loop. |
388 ;;(set-buffer buffer) | 397 ;;(set-buffer buffer) |
389 ) | 398 ) |
390 | |
391 | 399 |
392 (defun edebug-get-displayed-buffer-points () | 400 (defun edebug-get-displayed-buffer-points () |
393 ;; Return a list of buffer point pairs, for all displayed buffers. | 401 ;; Return a list of buffer point pairs, for all displayed buffers. |
394 (let (list) | 402 (let (list) |
395 (walk-windows (lambda (w) | 403 (walk-windows (lambda (w) |