;;; company-clang.el --- company-mode completion back-end for Clang -*- lexical-binding: t -*-
-;; Copyright (C) 2009, 2011, 2013-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2011, 2013-2015 Free Software Foundation, Inc.
;; Author: Nikolaj Schumacher
((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
(defun company-clang--start-process (prefix callback &rest args)
(let ((objc (derived-mode-p 'objc-mode))
- (buf (get-buffer-create "*clang-output*")))
- (with-current-buffer buf (erase-buffer))
+ (buf (get-buffer-create "*clang-output*"))
+ ;; Looks unnecessary in Emacs 25.1 and later.
+ (process-adaptive-read-buffering nil))
+ (with-current-buffer buf
+ (erase-buffer)
+ (setq buffer-undo-list t))
(if (get-buffer-process buf)
(funcall callback nil)
(let ((process (apply #'start-process "company-clang" buf
(insert 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