]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/company/company-semantic.el
Add 'packages/spinner/' from commit '9477ee899d62259d4b946f243cdcdd9cdeb1e910'
[gnu-emacs-elpa] / packages / company / company-semantic.el
index 110d4fd8946adf0bb26994609bc0fca324067700..a1c7d16c90af0abdf2888a36b9284ba16a468a6e 100644 (file)
@@ -49,9 +49,8 @@
 
 (defvar company-semantic-modes '(c-mode c++-mode jde-mode java-mode))
 
-(defvar company-semantic--current-tags nil
+(defvar-local company-semantic--current-tags nil
   "Tags for the current context.")
-(make-variable-buffer-local 'company-semantic--current-tags)
 
 (defun company-semantic-documentation-for-tag (tag)
   (when (semantic-tag-buffer tag)
       (push tag company-semantic--current-tags)))
   (delete "" (mapcar 'semantic-tag-name company-semantic--current-tags)))
 
+(defun company-semantic-annotation (argument tags)
+  (let* ((tag (assoc argument tags))
+         (kind (when tag (elt tag 1))))
+    (cl-case kind
+      (function (let* ((prototype (semantic-format-tag-prototype tag nil nil))
+                       (par-pos (string-match "(" prototype)))
+                  (when par-pos (substring prototype par-pos)))))))
+
 (defun company-semantic--pre-prefix-length (prefix-length)
   "Sum up the length of all chained symbols before POS.
 Symbols are chained by \".\" or \"->\"."
@@ -134,6 +141,8 @@ Symbols are chained by \".\" or \"->\"."
                   (company-semantic-completions arg)))
     (meta (funcall company-semantic-metadata-function
                    (assoc arg company-semantic--current-tags)))
+    (annotation (company-semantic-annotation arg
+                                             company-semantic--current-tags))
     (doc-buffer (company-semantic-doc-buffer
                  (assoc arg company-semantic--current-tags)))
     ;; Because "" is an empty context and doesn't return local variables.