3 (eval-when-compile (require 'cl))
5 (defvar company-semantic-context-regexp
6 "\\(->\\|\\.\\|\\_<\\)\\(\\(\\s_\\|\\sw\\)+\\_>\\=\\)")
8 (defsubst company-semantic-completions (prefix)
10 (let ((completion-ignore-case nil)
11 (context (semantic-analyze-current-context)))
12 (all-completions prefix (semantic-ia-get-completions context (point))))))
14 (defun company-semantic (command &optional arg &rest ignored)
16 ('prefix (and (memq major-mode '(c-mode c++-mode jde-mode java-mode))
17 (not (company-in-string-or-comment))
18 (or (company-grab company-semantic-context-regexp 2) "")))
19 ('candidates (or (company-semantic-completions arg)
20 (mapcar 'semantic-tag-name
21 (semantic-analyze-find-tags-by-prefix arg))))))
23 (provide 'company-semantic)
24 ;;; company-semantic.el ends here