;;; 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
(get-text-property 0 'meta candidate))
(defun company-clang--annotation (candidate)
+ (let ((ann (company-clang--annotation-1 candidate)))
+ (if (not (string-prefix-p "(*)" ann))
+ ann
+ (with-temp-buffer
+ (insert ann)
+ (search-backward ")")
+ (let ((pt (1+ (point))))
+ (forward-symbol 1)
+ (delete-region pt (point)))
+ (buffer-string)))))
+
+(defun company-clang--annotation-1 (candidate)
(let ((meta (company-clang--meta candidate)))
(cond
((null meta) nil)
(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))
+ (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