X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/37fc4433fb7e0f99a0ff74ddb23075127b7e4656..46fb87539e16f7243698a839933fd8eb74a7f75b:/packages/company/company-clang.el diff --git a/packages/company/company-clang.el b/packages/company/company-clang.el index 4f0f3189e..90757a84b 100644 --- a/packages/company/company-clang.el +++ b/packages/company/company-clang.el @@ -51,7 +51,7 @@ and `c-electric-colon', for automatic completion right after \">\" and "Additional arguments to pass to clang when completing. Prefix files (-include ...) can be selected with `company-clang-set-prefix' or automatically through a custom `company-clang-prefix-guesser'." - :type '(repeat (string :tag "Argument" nil))) + :type '(repeat (string :tag "Argument"))) (defcustom company-clang-prefix-guesser 'company-clang-guess-prefix "A function to determine the prefix file for the current buffer." @@ -61,7 +61,9 @@ or automatically through a custom `company-clang-prefix-guesser'." "Major modes which clang may complete.") (defcustom company-clang-insert-arguments t - "When non-nil, insert function arguments as a template after completion.") + "When non-nil, insert function arguments as a template after completion." + :type 'boolean + :package-version '(company . "0.8.0")) ;; prefix ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -108,7 +110,7 @@ or automatically through a custom `company-clang-prefix-guesser'." ;; TODO: Handle Pattern (syntactic hints would be neat). ;; Do we ever see OVERLOAD (or OVERRIDE)? (defconst company-clang--completion-pattern - "^COMPLETION: \\_<\\(%s[a-zA-Z0-9_:]*\\)\\(?: : \\(.*\\)$\\)?$") + "^COMPLETION: \\_<\\(%s[a-zA-Z0-9_:<>]*\\)\\(?: : \\(.*\\)$\\)?$") (defconst company-clang--error-buffer-name "*clang-error*") @@ -145,9 +147,9 @@ or automatically through a custom `company-clang-prefix-guesser'." (let ((meta (company-clang--meta candidate))) (cond ((null meta) nil) - ((string-match ":" meta) - (substring meta (match-beginning 0))) - ((string-match "\\((.*)\\'\\)" meta) + ((string-match "[^:]:[^:]" meta) + (substring meta (1+ (match-beginning 0)))) + ((string-match "\\((.*)[ a-z]*\\'\\)" meta) (match-string 1 meta))))) (defun company-clang--strip-formatting (text) @@ -217,14 +219,14 @@ or automatically through a custom `company-clang-prefix-guesser'." t)))))) (defsubst company-clang--build-complete-args (pos) - (append '("-cc1" "-fsyntax-only" "-code-completion-macros") + (append '("-fsyntax-only" "-Xclang" "-code-completion-macros") (unless (company-clang--auto-save-p) (list "-x" (company-clang--lang-option))) company-clang-arguments (when (stringp company-clang--prefix) (list "-include" (expand-file-name company-clang--prefix))) - '("-code-completion-at") - (list (company-clang--build-location pos)) + (list "-Xclang" (format "-code-completion-at=%s" + (company-clang--build-location pos))) (list (if (company-clang--auto-save-p) buffer-file-name "-")))) (defun company-clang--candidates (prefix callback) @@ -316,9 +318,10 @@ passed via standard input." (post-completion (let ((anno (company-clang--annotation arg))) (when (and company-clang-insert-arguments anno) (insert anno) - (if (string-match ":" anno) + (if (string-match "\\`:[^:]" anno) (company-clang-objc-templatify anno) - (company-template-c-like-templatify anno))))))) + (company-template-c-like-templatify + (concat arg anno)))))))) (provide 'company-clang) ;;; company-clang.el ends here