[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 526aa5b 5/8: Discard company-capf--current-completion-data
From: |
Dmitry Gutov |
Subject: |
[elpa] master 526aa5b 5/8: Discard company-capf--current-completion-data when we can |
Date: |
Sat, 8 Dec 2018 19:13:05 -0500 (EST) |
branch: master
commit 526aa5b3cffb93e07313ace7a3902be19f46eddf
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>
Discard company-capf--current-completion-data when we can
#845
---
company-capf.el | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/company-capf.el b/company-capf.el
index 4cc8a90..11e3382 100644
--- a/company-capf.el
+++ b/company-capf.el
@@ -36,7 +36,6 @@
;; FIXME: Provide a way to save this info once in Company itself
;; (https://github.com/company-mode/company-mode/pull/845).
-;; FIXME: What about memory usage?
(defvar-local company-capf--current-completion-data nil
"Value last returned by `company-capf' when called with `candidates'.
For most properties/actions, this is just what we need: the exact values
@@ -76,6 +75,20 @@ that accompanied the completion table that's currently is
use.")
completion-at-point-functions
(remq 'python-completion-complete-at-point completion-at-point-functions)))
+(defun company-capf--save-current-data (data)
+ (setq company-capf--current-completion-data data)
+ (add-hook 'company-completion-cancelled-hook
+ #'company-capf--clear-current-data nil t)
+ (add-hook 'company-completion-finished-hook
+ #'company-capf--clear-current-data nil t))
+
+(defun company-capf--clear-current-data (_ignored)
+ (setq company-capf--current-completion-data nil)
+ (remove-hook 'company-completion-cancelled-hook
+ #'company-capf--clear-current-data t)
+ (remove-hook 'company-completion-finished-hook
+ #'company-capf--clear-current-data t))
+
(defun company-capf (command &optional arg &rest _args)
"`company-mode' backend using `completion-at-point-functions'."
(interactive (list 'interactive))
@@ -92,7 +105,7 @@ that accompanied the completion table that's currently is
use.")
(t prefix))))))
(`candidates
(let ((res (company--capf-data)))
- (setq company-capf--current-completion-data res)
+ (company-capf--save-current-data res)
(when res
(let* ((table (nth 3 res))
(pred (plist-get (nthcdr 4 res) :predicate))
- [elpa] master updated (652ba99 -> cd8bbda), Dmitry Gutov, 2018/12/08
- [elpa] master 373c078 2/8: company-capf: Use exit-function that came with the completion table in use, Dmitry Gutov, 2018/12/08
- [elpa] master b37cab3 6/8: company-completion-cancelled-hook: Don't remove-hook, Dmitry Gutov, 2018/12/08
- [elpa] master 23f930b 4/8: Make company-capf--current-completion-data buffer-local, Dmitry Gutov, 2018/12/08
- [elpa] master 5ed4918 3/8: Use company-capf--current-completion-data in more places, Dmitry Gutov, 2018/12/08
- [elpa] master 5adb0be 7/8: Release 0.9.8, Dmitry Gutov, 2018/12/08
- [elpa] master 0af4163 1/8: Remove an old workaround from company-capf, Dmitry Gutov, 2018/12/08
- [elpa] master cd8bbda 8/8: Merge commit '5adb0be1dfa1c9767e888eee5892a10a1f81d582' from company, Dmitry Gutov, 2018/12/08
- [elpa] master 526aa5b 5/8: Discard company-capf--current-completion-data when we can,
Dmitry Gutov <=