Function: ebrowse-tags-complete-symbol
ebrowse-tags-complete-symbol is an autoloaded, interactive and
byte-compiled function defined in ebrowse.el.gz.
Signature
(ebrowse-tags-complete-symbol PREFIX)
Documentation
Perform completion on the C++ symbol preceding point.
A second call of this function without changing point inserts the next match. A call with prefix PREFIX reads the symbol to insert from the minibuffer with completion.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/ebrowse.el.gz
;;; Symbol completion
;;;###autoload
(cl-defun ebrowse-tags-complete-symbol (prefix)
"Perform completion on the C++ symbol preceding point.
A second call of this function without changing point inserts the next match.
A call with prefix PREFIX reads the symbol to insert from the minibuffer with
completion."
(interactive "P")
(let* ((end (point))
(begin (save-excursion (skip-chars-backward "a-zA-Z_0-9") (point)))
(pattern (buffer-substring begin end))
list completion)
(cond
;; With prefix, read name from minibuffer with completion.
(prefix
(let* ((members (ebrowse-some-member-table))
(completion (completing-read "Insert member: "
members nil t pattern)))
(when completion
(setf ebrowse-last-completion-location nil)
(delete-region begin end)
(insert completion))))
;; If this function is called at the same point the last
;; expansion ended, insert the next expansion.
((eq (point) ebrowse-last-completion-location)
(setf list (all-completions ebrowse-last-completion-start
ebrowse-last-completion-table)
completion (ebrowse-cyclic-successor-in-string-list
ebrowse-last-completion list))
(cond ((null completion)
(error "No completion"))
((string= completion pattern)
(error "No further completion"))
(t
(delete-region begin end)
(insert completion)
(setf ebrowse-last-completion completion
ebrowse-last-completion-location (point)))))
;; First time the function is called at some position in the
;; buffer: Start new completion.
(t
(let* ((members (ebrowse-some-member-table))
(completion (cl-first (all-completions pattern members))))
(cond ((eq completion t))
((null completion)
(error "Can't find completion for `%s'" pattern))
(t
(delete-region begin end)
(insert completion)
(setf ebrowse-last-completion-location (point)
ebrowse-last-completion-start pattern
ebrowse-last-completion completion
ebrowse-last-completion-table members))))))))