]> code.delx.au - gnu-emacs-elpa/blobdiff - company-clang.el
company-clang: don't mistake scoping operator for objc args
[gnu-emacs-elpa] / company-clang.el
index 14b6753e6450aedf072223945f8dc7cb69cb714e..1ddb7caa1a82a032cae914d589ad96787e8cbf51 100644 (file)
@@ -60,6 +60,9 @@ or automatically through a custom `company-clang-prefix-guesser'."
 (defvar company-clang-modes '(c-mode c++-mode objc-mode)
   "Major modes which clang may complete.")
 
+(defcustom company-clang-insert-arguments t
+  "When non-nil, insert function arguments as a template after completion.")
+
 ;; prefix ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defvar company-clang--prefix nil)
@@ -142,7 +145,7 @@ or automatically through a custom `company-clang-prefix-guesser'."
   (let ((meta (company-clang--meta candidate)))
     (cond
      ((null meta) nil)
-     ((string-match ":" meta)
+     ((string-match "[^:]:[^:]" meta)
       (substring meta (match-beginning 0)))
      ((string-match "\\((.*)\\'\\)" meta)
       (match-string 1 meta)))))
@@ -311,11 +314,11 @@ passed via standard input."
     (meta       (company-clang--meta arg))
     (annotation (company-clang--annotation arg))
     (post-completion (let ((anno (company-clang--annotation arg)))
-                       (when anno
+                       (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 anno)))))))
 
 (provide 'company-clang)
 ;;; company-clang.el ends here