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.
This commit is contained in:
parent
5498acb5a2
commit
6353387835
1 changed files with 9 additions and 2 deletions
|
@ -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))
|
||||
|
|
Loading…
Add table
Reference in a new issue