[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master ad6ff0e 01/40: Inhibit template field interaction while co
From: |
Dmitry Gutov |
Subject: |
[elpa] master ad6ff0e 01/40: Inhibit template field interaction while completion is active |
Date: |
Thu, 2 Jan 2020 18:56:59 -0500 (EST) |
branch: master
commit ad6ff0eecca99dc5ac8b6a8a6174df7d2ad88ae7
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>
Inhibit template field interaction while completion is active
Assisted by https://github.com/joaotavora/yasnippet/issues/987.
Helps #881, #731.
Fixes #281, fixes #515.
---
NEWS.md | 8 ++++++++
company-template.el | 18 +++++++++++++++---
company.el | 5 +++++
3 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/NEWS.md b/NEWS.md
index 8404398..aad2ec3 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,13 @@
# History of user-visible changes
+## Next
+
+* Snippet/template field interaction is inhibited while completion is active
+ (where by default `TAB` calls `company-complete-common`, clashing with
snippet
+ map binding `TAB` to "jump to the next field"). Affects both
+ `company-template` and `yasnippet` (requires changes from 2019-04-21,
+ currently unreleased).
+
## 2019-04-15 (0.9.10)
* `company-clang`: better compatibility with Clang 8
diff --git a/company-template.el b/company-template.el
index 930e638..7db50dd 100644
--- a/company-template.el
+++ b/company-template.el
@@ -29,16 +29,24 @@
"Face used for editable text in template fields."
:group 'company)
+(defvar company-template-forward-field-item
+ '(menu-item "" company-template-forward-field
+ :filter company-template--keymap-filter))
+
(defvar company-template-nav-map
(let ((keymap (make-sparse-keymap)))
- (define-key keymap [tab] 'company-template-forward-field)
- (define-key keymap (kbd "TAB") 'company-template-forward-field)
+ (define-key keymap [tab] company-template-forward-field-item)
+ (define-key keymap (kbd "TAB") company-template-forward-field-item)
keymap))
+(defvar company-template-clear-field-item
+ '(menu-item "" company-template-clear-field
+ :filter company-template--keymap-filter))
+
(defvar company-template-field-map
(let ((keymap (make-sparse-keymap)))
(set-keymap-parent keymap company-template-nav-map)
- (define-key keymap (kbd "C-d") 'company-template-clear-field)
+ (define-key keymap (kbd "C-d") company-template-clear-field-item)
keymap))
(defvar-local company-template--buffer-templates nil)
@@ -78,6 +86,10 @@
(when (functionp after-clear-fn)
(funcall after-clear-fn))))))
+(defun company-template--keymap-filter (cmd)
+ (unless (run-hook-with-args-until-success 'yas-keymap-disable-hook)
+ cmd))
+
(defun company-template--after-clear-c-like-field ()
"Function that can be called after deleting a field of a c-like template.
For c-like templates it is set as `after-post-fn' property on fields in
diff --git a/company.el b/company.el
index 4f085ee..2b92f85 100644
--- a/company.el
+++ b/company.el
@@ -774,9 +774,11 @@ keymap during active completions (`company-active-map'):
(progn
(add-hook 'pre-command-hook 'company-pre-command nil t)
(add-hook 'post-command-hook 'company-post-command nil t)
+ (add-hook 'yas-keymap-disable-hook 'company--active-p nil t)
(mapc 'company-init-backend company-backends))
(remove-hook 'pre-command-hook 'company-pre-command t)
(remove-hook 'post-command-hook 'company-post-command t)
+ (remove-hook 'yas-keymap-disable-hook 'company--active-p t)
(company-cancel)
(kill-local-variable 'company-point)))
@@ -1669,6 +1671,9 @@ prefix match (same case) will be prioritized."
(defsubst company-keep (command)
(and (symbolp command) (get command 'company-keep)))
+(defun company--active-p ()
+ company-candidates)
+
(defun company-pre-command ()
(company--electric-restore-window-configuration)
(unless (company-keep this-command)
- [elpa] master updated (c084cc1 -> ed14c67), Dmitry Gutov, 2020/01/02
- [elpa] master 6274149 03/40: Add Embarcadero clang-based compilers to company-clang-version, Dmitry Gutov, 2020/01/02
- [elpa] master 1120b56 04/40: Merge pull request #908 from matthijsk/embarcadero, Dmitry Gutov, 2020/01/02
- [elpa] master 65fd368 09/40: Support completion style specific sorting (Emacs 27), Dmitry Gutov, 2020/01/02
- [elpa] master 6d808c4 06/40: Revert "speed up company-etags", Dmitry Gutov, 2020/01/02
- [elpa] master ad6ff0e 01/40: Inhibit template field interaction while completion is active,
Dmitry Gutov <=
- [elpa] master 226943f 10/40: Add a couple of clarifying comments, Dmitry Gutov, 2020/01/02
- [elpa] master d497b8c 02/40: speed up company-etags, Dmitry Gutov, 2020/01/02
- [elpa] master 1cb2960 11/40: Use line-wrap in company doc buffer, Dmitry Gutov, 2020/01/02
- [elpa] master f6974e3 07/40: Merge pull request #909 from company-mode/revert-904-master, Dmitry Gutov, 2020/01/02
- [elpa] master ec1fb85 16/40: Fix typos, Dmitry Gutov, 2020/01/02
- [elpa] master 39a74c5 18/40: Add a NEWS entry, Dmitry Gutov, 2020/01/02
- [elpa] master c45c5f9 08/40: Extract company-capf--candidates for ease of debugging, Dmitry Gutov, 2020/01/02
- [elpa] master ccc22eb 05/40: Merge pull request #904 from redguardtoo/master, Dmitry Gutov, 2020/01/02
- [elpa] master 263438e 12/40: Merge pull request #930 from Zetagon/master, Dmitry Gutov, 2020/01/02
- [elpa] master 3cd2b1a 13/40: Update copyright, Dmitry Gutov, 2020/01/02