Skip to content

@randomphrase /semantic-browse-c++-doc.el
Last active

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
semantic-browse-c++-doc
(defun c++-type-at (point)
"Use semantic to determine the fully namespace-qualified type of the symbol at POINT."
(interactive "d")
(let* ((ctxt (semantic-analyze-current-context point))
(pf (reverse (oref ctxt prefix)))
(lastname (pop pf))
(tag (if (semantic-tag-p lastname) lastname (car pf)))
(names (append
(when (semantic-tag-p tag)
(save-excursion
(when (semantic-tag-with-position-p tag)
(set-buffer (semantic-tag-buffer tag))
(semantic-go-to-tag tag)
(mapcar 'semantic-tag-name (semantic-analyze-scope-nested-tags (point) nil))
)))
(list (if (semantic-tag-p lastname) (semantic-tag-name lastname) lastname))
))
)
(message (mapconcat 'concat names "::"))
))
(defvar c++-doco-sources
'(("std::" . "http://en.cppreference.com/mwiki/index.php?title=Special:Search&search=%s")
("boost::" . "http://google.com/search?q=site:boost.org%%20%s")
))
(defun semantic-browse-c++-doc (point)
"Browse the documentation for the C++ symbol at POINT."
(interactive "d")
(let* ((cpptype (c++-type-at point))
(ref (car (cl-member-if (lambda (S) (string-prefix-p (car S) cpptype)) c++-doco-sources))))
(unless ref
(error "No documentation source found for %s" cpptype))
(browse-url (format (cdr ref) cpptype))
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.