Function: semantic-mrub-completing-read
semantic-mrub-completing-read is a byte-compiled function defined in
mru-bookmark.el.gz.
Signature
(semantic-mrub-completing-read PROMPT)
Documentation
Do a completing-read on elements from the mru bookmark ring.
Argument PROMPT is the prompt to use when reading.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/mru-bookmark.el.gz
(defun semantic-mrub-completing-read (prompt)
"Do a `completing-read' on elements from the mru bookmark ring.
Argument PROMPT is the prompt to use when reading."
(if (ring-empty-p (oref semantic-mru-bookmark-ring ring))
(error "Semantic Bookmark ring is currently empty"))
(let* ((ring (oref semantic-mru-bookmark-ring ring))
(ans nil)
(alist (semantic-mrub-ring-to-assoc-list ring))
(first (cdr (car alist)))
(semantic-mrub-read-history nil)
)
;; Don't include the current tag.. only those that come after.
(if (semantic-equivalent-tag-p (oref first tag)
(semantic-current-tag))
(setq first (cdr (car (cdr alist)))))
;; Create a fake history list so we don't have to bind
;; M-p and M-n to our special cause.
(let ((elts (reverse alist)))
(while elts
(setq semantic-mrub-read-history
(cons (car (car elts)) semantic-mrub-read-history))
(setq elts (cdr elts))))
(setq semantic-mrub-read-history (nreverse semantic-mrub-read-history))
;; Do the read/prompt
(let ((prompt (if first (format "%s (%s): " prompt
(semantic-format-tag-name
(oref first tag) t)
)
(concat prompt ": ")))
)
(setq ans
(completing-read prompt alist nil nil nil 'semantic-mrub-read-history)))
;; Calculate the return tag.
(if (string= ans "")
(setq ans first)
;; Return the bookmark object.
(setq ans (assoc ans alist))
(if ans
(cdr ans)
;; no match. Custom word. Look it up somewhere?
nil)
)))