## Next
+* New function `company-grab-symbol-cons`.
* `company-clang` fetches completion candidates asynchronously.
* Added support for asynchronous back-ends (experimental).
* Support for back-end command `crop` dropped (it was never documented).
(company-clang--build-complete-args (- (point) (length prefix)))))
(defun company-clang--prefix ()
- (let ((symbol (company-grab-symbol)))
- (if symbol
- (if (and company-clang-begin-after-member-access
- (save-excursion
- (forward-char (- (length symbol)))
- (looking-back "\\.\\|->\\|::" (- (point) 2))))
- (cons symbol t)
- symbol)
- 'stop)))
+ (if company-clang-begin-after-member-access
+ (company-grab-symbol-cons "\\.\\|->\\|::" 2)
+ (company-grab-symbol)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
buffer-file-name
company-clang-executable
(not (company-in-string-or-comment))
- (company-clang--prefix)))
+ (or (company-clang--prefix) 'stop)))
(candidates (cons :async
(lambda (cb) (company-clang--candidates arg cb))))
(meta (company-clang--meta arg))
(unless (and (char-after) (eq (char-syntax (char-after)) ?w))
"")))
+(defun company-grab-symbol-cons (idle-begin-after-re &optional max-len)
+ (let ((symbol (company-grab-symbol)))
+ (when symbol
+ (save-excursion
+ (forward-char (- (length symbol)))
+ (if (looking-back idle-begin-after-re (if max-len
+ (- (point) max-len)
+ (line-beginning-position)))
+ (cons symbol t)
+ symbol)))))
+
(defun company-in-string-or-comment ()
(let ((ppss (syntax-ppss)))
(or (car (setq ppss (nthcdr 3 ppss)))