Function: ebrowse-switch-member-buffer-to-sibling-class

ebrowse-switch-member-buffer-to-sibling-class is an interactive and byte-compiled function defined in ebrowse.el.gz.

Signature

(ebrowse-switch-member-buffer-to-sibling-class INC)

Documentation

Switch member display to nth sibling class.

Prefix arg INC specifies which one.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/ebrowse.el.gz
(defun ebrowse-switch-member-buffer-to-sibling-class (inc)
  "Switch member display to nth sibling class.
Prefix arg INC specifies which one."
  (interactive "p")
  (let ((containing-list ebrowse--tree)
	index cls
	(supers (ebrowse-direct-base-classes ebrowse--displayed-class)))
    (cl-flet ((trees-alist (trees)
                           (cl-loop for tr in trees
                                    collect (cons (ebrowse-cs-name
                                                   (ebrowse-ts-class tr))
                                                  tr))))
      (when supers
	(let ((tree (if (cl-second supers)
			(ebrowse-completing-read-value
			 "Relative to base class: "
			 (trees-alist supers) nil)
		      (cl-first supers))))
	  (unless tree (error "Not found"))
	  (setq containing-list (ebrowse-ts-subclasses tree)))))
    (setq index (+ inc (seq-position containing-list
				     ebrowse--displayed-class
				     #'eql)))
    (cond ((minusp index) (message "No previous class"))
	  ((null (nth index containing-list)) (message "No next class")))
    (setq index (max 0 (min index (1- (length containing-list)))))
    (setq cls (nth index containing-list))
    (setf ebrowse--displayed-class cls
	  ebrowse--member-list (funcall ebrowse--accessor cls))
    (ebrowse-redisplay-member-buffer)))