]> code.delx.au - gnu-emacs-elpa/blob - company-semantic.el
Added semantic backend.
[gnu-emacs-elpa] / company-semantic.el
1 (require 'company)
2 (require 'semantic-ia)
3 (eval-when-compile (require 'cl))
4
5 (defvar company-semantic-context-regexp
6 "\\(->\\|\\.\\|\\_<\\)\\(\\(\\s_\\|\\sw\\)+\\_>\\=\\)")
7
8 (defsubst company-semantic-completions (prefix)
9 (ignore-errors
10 (let ((completion-ignore-case nil)
11 (context (semantic-analyze-current-context)))
12 (all-completions prefix (semantic-ia-get-completions context (point))))))
13
14 (defun company-semantic (command &optional arg &rest ignored)
15 (case command
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))))))
22
23 (provide 'company-semantic)
24 ;;; company-semantic.el ends here