[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/rust-mode 70ff9a0 421/486: electric-pair-mode: prevent sel
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/rust-mode 70ff9a0 421/486: electric-pair-mode: prevent self-insert of `>' when already inserted. (#337) |
Date: |
Sat, 7 Aug 2021 09:26:06 -0400 (EDT) |
branch: elpa/rust-mode
commit 70ff9a027c51118ebba07c9be832c3efa7a7df67
Author: Nathan Moreau <nathan.moreau@m4x.org>
Commit: GitHub <noreply@github.com>
electric-pair-mode: prevent self-insert of `>' when already inserted. (#337)
---
rust-mode-tests.el | 16 +++++++++++++++-
rust-mode.el | 9 +++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index 3252b6a..42b7a44 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -3220,4 +3220,18 @@ impl Two<'a> {
(ert-deftest rust-test-electric-pair-lt-expression-capitalized-keyword ()
(test-electric-pair-insert "fn foo() -> Box" 16 ?< ?>))
- )
+
+ (ert-deftest rust-test-electric-pair-<-> ()
+ (let ((old-electric-pair-mode electric-pair-mode))
+ (electric-pair-mode 1)
+ (unwind-protect
+ (with-temp-buffer
+ (electric-pair-mode 1)
+ (rust-mode)
+ (mapc (lambda (c)
+ (let ((last-command-event c)) (self-insert-command 1)))
+ "tmp<T>")
+ (should
+ (equal "tmp<T>" (buffer-substring-no-properties (point-min)
+ (point-max)))))
+ (electric-pair-mode (or old-electric-pair-mode 1))))))
diff --git a/rust-mode.el b/rust-mode.el
index 5c68640..dd50f18 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -21,6 +21,7 @@
(require 'json)
(defvar electric-pair-inhibit-predicate)
+(defvar electric-pair-skip-self)
(defvar electric-indent-chars)
(defvar rust-buffer-project)
@@ -1049,6 +1050,13 @@ This wraps the default defined by
`electric-pair-inhibit-predicate'."
(rust-is-lt-char-operator)))
(funcall (default-value 'electric-pair-inhibit-predicate) char)))
+(defun rust-electric-pair-skip-self-wrap (char)
+ "Skip CHAR instead of inserting a second closing character.
+This wraps the default defined by `electric-pair-skip-self'."
+ (or
+ (= ?> char)
+ (funcall (default-value 'electric-pair-skip-self) char)))
+
(defun rust-ordinary-lt-gt-p ()
"Test whether the `<' or `>' at point is an ordinary operator of some kind.
@@ -1625,6 +1633,7 @@ Return the created process."
(setq-local end-of-defun-function 'rust-end-of-defun)
(setq-local parse-sexp-lookup-properties t)
(setq-local electric-pair-inhibit-predicate
'rust-electric-pair-inhibit-predicate-wrap)
+ (setq-local electric-pair-skip-self 'rust-electric-pair-skip-self-wrap)
(add-hook 'before-save-hook 'rust-before-save-hook nil t)
(add-hook 'after-save-hook 'rust-after-save-hook nil t)
- [nongnu] elpa/rust-mode c5ab165 423/486: mention LSP support, (continued)
- [nongnu] elpa/rust-mode c5ab165 423/486: mention LSP support, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode a36bc70 426/486: Merge pull request #340 from brotzeit/readme, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 6a57253 427/486: rust-dbg-wrap-or-unwrap: bind to C-c C-d rather than C-c d., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode e8345f6 440/486: Add triagebot configuration (#364), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode a364b24 445/486: Make *rustfmt* buffer readonly., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 15a077a 458/486: rustc-colon-compilation-regexps: improve highlighting., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 00177f5 461/486: compile-mode integration: add link to code references. (#391), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 5585cf9 477/486: rust-mode: Cosmetics, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 3fa8f0b 479/486: Add non-empty commentary section, slightly reword summary, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 7ff04a8 337/486: Merge pull request #234 from jjwest/master, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 70ff9a0 421/486: electric-pair-mode: prevent self-insert of `>' when already inserted. (#337),
ELPA Syncer <=
- [nongnu] elpa/rust-mode 4fd637c 428/486: rust-insert-dbg: handle the case of string literals. (#342), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 844bb51 429/486: add support for "async fn", ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 63ec74c 434/486: Enforce use of spaces for indentation and cleanup whitespace (#353), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode a36c96a 435/486: integrate rustfmt error messages, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 8665005 436/486: Introduce constant for *rustfmt*., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 08d7141 449/486: README: support for emacs 24 has been dropped., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 1603a25 455/486: Change 'rust-build' to 'rust-compile' in README.md, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 6e4835c 456/486: Update README.md, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 5dc219f 465/486: rearrange III: Mode, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode beda16d 466/486: rearrange IV: Misc, ELPA Syncer, 2021/08/07