((string-match "[^:]:[^:]" meta)
(substring meta (1+ (match-beginning 0))))
((string-match "\\((.*)[ a-z]*\\'\\)" meta)
- (match-string 1 meta)))))
+ (let ((paren (match-beginning 1)))
+ (if (not (eq (aref meta (1- paren)) ?>))
+ (match-string 1 meta)
+ (with-temp-buffer
+ (insert meta)
+ (goto-char paren)
+ (substring meta (1- (search-backward "<"))))))))))
(defun company-clang--strip-formatting (text)
(replace-regexp-in-string
(should (equal "createBookWithTitle:arg0 andAuthor:arg1" (buffer-string)))
(should (looking-at "arg0"))
(should (null (overlay-get (company-template-field-at) 'display))))))
+
+(ert-deftest company-clang-simple-annotation ()
+ (let ((str (propertize
+ "foo" 'meta
+ "wchar_t * wmemchr(wchar_t *__p, wchar_t __c, size_t __n)")))
+ (should (equal (company-clang 'annotation str)
+ "(wchar_t *__p, wchar_t __c, size_t __n)"))))
+
+(ert-deftest company-clang-generic-annotation ()
+ (let ((str (propertize
+ "foo" 'meta
+ "shared_ptr<_Tp> make_shared<typename _Tp>(_Args &&__args...)")))
+ (should (equal (company-clang 'annotation str)
+ "<typename _Tp>(_Args &&__args...)"))))