emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 6353387: Electric-pair-mode lets modes choose how t


From: João Távora
Subject: [Emacs-diffs] master 6353387: Electric-pair-mode lets modes choose how to skip whitespace
Date: Mon, 18 Jun 2018 21:21:35 -0400 (EDT)

branch: master
commit 6353387835f6cb34765ac525ac3e9edf3239e589
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>

    Electric-pair-mode lets modes choose how to skip whitespace
    
    cc-mode.el-based major-modes with stricter syntax for invalid
    NL-terminated strings might choose to have electric-pair-mode skip
    some of whitespace into non-string-syntax regions, for the sake of
    letting electric-pair-mode chomp that whitespace and make the string
    valid again.
    
    * lisp/elec-pair.el (electric-pair-post-self-insert-function): Call it.
    (electric-pair-skip-whitespace-function): New buffer-local variable.
---
 lisp/elec-pair.el | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 97049a7..85c25f0 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -155,6 +155,13 @@ return value is considered instead."
                       (const :tag "Newline" ?\n))
                  (list character)))
 
+(defvar-local electric-pair-skip-whitespace-function
+  #'electric-pair--skip-whitespace
+  "Function to use to skip whitespace forward.
+Before attempting a skip, if `electric-pair-skip-whitespace' is
+non-nil, this function is called. It move point to a new buffer
+position, presumably skipping only whitespace in between.")
+
 (defun electric-pair--skip-whitespace ()
   "Skip whitespace forward, not crossing comment or string boundaries."
   (let ((saved (point))
@@ -501,7 +508,7 @@ happened."
                                                (functionp 
electric-pair-skip-whitespace))
                                           (funcall 
electric-pair-skip-whitespace)
                                         electric-pair-skip-whitespace)))
-                       (electric-pair--skip-whitespace))
+                       (funcall electric-pair-skip-whitespace-function))
                      (eq (char-after) last-command-event))))
          ;; This is too late: rather than insert&delete we'd want to only
          ;; skip (or insert in overwrite mode).  The difference is in what
@@ -509,7 +516,7 @@ happened."
          ;; be visible to other post-self-insert-hook.  We'll just have to
          ;; live with it for now.
          (when skip-whitespace-info
-           (electric-pair--skip-whitespace))
+           (funcall electric-pair-skip-whitespace-function))
          (delete-region (1- pos) (if (eq skip-whitespace-info 'chomp)
                                      (point)
                                    pos))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]