Function: ex-next-related-buffer
ex-next-related-buffer is a byte-compiled function defined in
viper-ex.el.gz.
Signature
(ex-next-related-buffer DIRECTION &optional NO-RECURSION)
Source Code
;; Defined in /usr/src/emacs/lisp/emulation/viper-ex.el.gz
(defun ex-next-related-buffer (direction &optional no-recursion)
(viper-ring-rotate1 viper-related-files-and-buffers-ring direction)
(let ((file-or-buffer-name
(viper-current-ring-item viper-related-files-and-buffers-ring))
(old-ring viper-related-files-and-buffers-ring)
(old-win (selected-window))
skip-rest buf wind)
(or (and (ring-p viper-related-files-and-buffers-ring)
(> (ring-length viper-related-files-and-buffers-ring) 0))
(error "This buffer has no related files or buffers"))
(or (stringp file-or-buffer-name)
(error
"File and buffer names must be strings, %S" file-or-buffer-name))
(setq buf (cond ((get-buffer file-or-buffer-name))
((file-exists-p file-or-buffer-name)
(find-file-noselect file-or-buffer-name))
))
(if (not (viper-buffer-live-p buf))
(error "Didn't find buffer %S or file %S"
file-or-buffer-name
(abbreviate-file-name
(expand-file-name file-or-buffer-name))))
(if (equal buf (current-buffer))
(or no-recursion
;; try again
(progn
(setq skip-rest t)
(ex-next-related-buffer direction 'norecursion))))
(if skip-rest
()
;; setup buffer
(if (setq wind (get-buffer-window buf 'visible))
()
(setq wind (get-lru-window 'visible))
(set-window-buffer wind buf))
(if (viper-window-display-p)
(progn
(raise-frame (window-frame wind))
(if (equal (window-frame wind) (window-frame old-win))
(save-window-excursion (select-window wind) (sit-for 1))
(select-window wind)))
(save-window-excursion (select-window wind) (sit-for 1)))
(with-current-buffer buf
(setq viper-related-files-and-buffers-ring old-ring))
(setq viper-local-search-start-marker (point-marker))
)))