GNU bug report logs - #19505
25.0.50; Defining a chomp function breaks electric pairing

Previous Next

Package: emacs;

Reported by: Tom Willemse <tom <at> ryuslash.org>

Date: Sun, 4 Jan 2015 14:54:02 UTC

Severity: normal

Found in version 25.0.50

Fixed in version 25.1

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 19505 in the body.
You can then email your comments to 19505 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#19505; Package emacs. (Sun, 04 Jan 2015 14:54:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Tom Willemse <tom <at> ryuslash.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 04 Jan 2015 14:54:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Tom Willemse <tom <at> ryuslash.org>
To: bug-gnu-emacs <at> gnu.org
Subject: 25.0.50; Defining a chomp function breaks electric pairing
Date: Sun, 04 Jan 2015 15:53:03 +0100
[Message part 1 (text/plain, inline)]
The attached patch fixes the situation where a function `chomp' exists
and `electric-pair-skip-whitespace' has the value `chomp'. Since that
specific symbol is mentioned as a special case for this variable, it
seems that it shouldn't try to call a function named as such.

Basically, defining a function named `chomp' will break electric pairing
if the `electric-pair-skip-whitespace' is set to chomp.

[0001-Always-treat-chomp-as-a-symbol.patch (text/x-diff, inline)]
From d7e6e8f2ff3572afb4131ea64966b2a9253f9ac6 Mon Sep 17 00:00:00 2001
From: Tom Willemse <tom <at> ryuslash.org>
Date: Sun, 4 Jan 2015 05:37:02 +0100
Subject: [PATCH] Always treat chomp as a symbol

---
 lisp/ChangeLog    | 5 +++++
 lisp/elec-pair.el | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index aa79a8d..b031f25 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-04  Tom Willemse  <tom <at> ryuslash.org>
+
+	* elec-pair.el (electric-pair-post-self-insert-function): Make
+	sure chomp isn't used as a function.
+
 2015-01-04  Paul Eggert  <eggert <at> cs.ucla.edu>
 
 	Less 'make' chatter for lisp dir
diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 2cede62..65c3dbf 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -475,7 +475,8 @@ (defun electric-pair-post-self-insert-function
                      (when (and (not (and unconditional
                                           (eq syntax ?\")))
                                 (setq skip-whitespace-info
-                                      (if (functionp electric-pair-skip-whitespace)
+                                      (if (and (not (eq electric-pair-skip-whitespace 'chomp))
+                                               (functionp electric-pair-skip-whitespace))
                                           (funcall electric-pair-skip-whitespace)
                                         electric-pair-skip-whitespace)))
                        (electric-pair--skip-whitespace))
-- 
2.2.1


Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19505; Package emacs. (Sun, 04 Jan 2015 20:15:02 GMT) Full text and rfc822 format available.

Message #8 received at 19505 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Tom Willemse <tom <at> ryuslash.org>
Cc: 19505 <at> debbugs.gnu.org
Subject: Re: bug#19505: 25.0.50;
 Defining a chomp function breaks electric pairing
Date: Sun, 04 Jan 2015 15:14:08 -0500
> The attached patch fixes the situation where a function `chomp' exists
> and `electric-pair-skip-whitespace' has the value `chomp'.  Since that
> specific symbol is mentioned as a special case for this variable, it
> seems that it shouldn't try to call a function named as such.

Maybe a better option is to use the value `:chomp' instead of `chomp',
since defining a function `:chomp' should be considered an error anyway,


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19505; Package emacs. (Sun, 04 Jan 2015 20:26:02 GMT) Full text and rfc822 format available.

Message #11 received at 19505 <at> debbugs.gnu.org (full text, mbox):

From: Tom Willemse <tom <at> ryuslash.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 19505 <at> debbugs.gnu.org
Subject: Re: bug#19505: 25.0.50;
 Defining a chomp function breaks electric pairing
Date: Sun, 04 Jan 2015 21:25:37 +0100
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

>> The attached patch fixes the situation where a function `chomp' exists
>> and `electric-pair-skip-whitespace' has the value `chomp'.  Since that
>> specific symbol is mentioned as a special case for this variable, it
>> seems that it shouldn't try to call a function named as such.
>
> Maybe a better option is to use the value `:chomp' instead of `chomp',
> since defining a function `:chomp' should be considered an error anyway,

Certainly an option, but wouldn't that break people's configuration in
an annoying way?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19505; Package emacs. (Tue, 06 Jan 2015 20:10:02 GMT) Full text and rfc822 format available.

Message #14 received at 19505 <at> debbugs.gnu.org (full text, mbox):

From: Tom Willemse <tom <at> ryuslash.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 19505 <at> debbugs.gnu.org
Subject: Re: bug#19505: 25.0.50;
 Defining a chomp function breaks electric pairing
Date: Tue, 06 Jan 2015 21:09:20 +0100
[Message part 1 (text/plain, inline)]
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

>> The attached patch fixes the situation where a function `chomp' exists
>> and `electric-pair-skip-whitespace' has the value `chomp'.  Since that
>> specific symbol is mentioned as a special case for this variable, it
>> seems that it shouldn't try to call a function named as such.
>
> Maybe a better option is to use the value `:chomp' instead of `chomp',
> since defining a function `:chomp' should be considered an error anyway,

I've attached a patch with the change as you suggested. It seems to me
this change might need an entry in the NEWS file, since it changes the
value of `electric-pair-skip-whitespace' from a symbol to a keyword,
people might be confused that their configuration suddenly stopped
working. I just had no idea how to describe this in a NEWS-friendly way.

Perhaps a test should be written for this as well? If someone could
suggest where to put such a test I would happily (try to) write it.

[0001-Use-a-keyword-not-symbol-to-delete-whitespace.patch (text/x-diff, inline)]
From c9dfaff53b11f6db401d8ed7a7d25e1efb45c461 Mon Sep 17 00:00:00 2001
From: Tom Willemse <tom <at> ryuslash.org>
Date: Tue, 6 Jan 2015 20:37:29 +0100
Subject: [PATCH] Use a keyword, not symbol, to delete whitespace

* elec-pair.el (electric-pair-skip-whitespace): Use `:chomp' instead
of `chomp'.
(electric-pair-post-self-insert-function): Check for a keyword
`:chomp' instead of the symbol `chomp' to prevent naming conflicts.
---
 lisp/ChangeLog    | 8 ++++++++
 lisp/elec-pair.el | 6 +++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 76ba2cd..cd7cd2a 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
+2015-01-06  Tom Willemse  <tom <at> ryuslash.org>
+
+	* elec-pair.el (electric-pair-skip-whitespace): Use `:chomp'
+	instead of `chomp'.
+	(electric-pair-post-self-insert-function): Check for a keyword
+	`:chomp' instead of the symbol `chomp' to prevent naming
+	conflicts.
+
 2015-01-05  Dmitry Gutov  <dgutov <at> yandex.ru>
 
 	* progmodes/xref.el (xref--insert-xrefs): Add `help-echo' property
diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el
index 2cede62..270f4a3 100644
--- a/lisp/elec-pair.el
+++ b/lisp/elec-pair.el
@@ -129,7 +129,7 @@ (defcustom electric-pair-skip-whitespace
 The specific kind of whitespace skipped is given by the variable
 `electric-pair-skip-whitespace-chars'.
 
-The symbol `chomp' specifies that the skipped-over whitespace
+The keyword `:chomp' specifies that the skipped-over whitespace
 should be deleted.
 
 Can also be a function of no arguments, in which case that function's
@@ -138,7 +138,7 @@ (defcustom electric-pair-skip-whitespace
   :group 'electricity
   :type '(choice
           (const :tag "Yes, jump over whitespace" t)
-          (const :tag "Yes, and delete whitespace" chomp)
+          (const :tag "Yes, and delete whitespace" :chomp)
           (const :tag "No, no whitespace skipping" nil)
           function))
 
@@ -487,7 +487,7 @@ (defun electric-pair-post-self-insert-function
          ;; live with it for now.
          (when skip-whitespace-info
            (electric-pair--skip-whitespace))
-         (delete-region (1- pos) (if (eq skip-whitespace-info 'chomp)
+         (delete-region (1- pos) (if (eq skip-whitespace-info :chomp)
                                      (point)
                                    pos))
          (forward-char))
-- 
2.2.1


Reply sent to Glenn Morris <rgm <at> gnu.org>:
You have taken responsibility. (Sun, 19 Apr 2015 01:10:02 GMT) Full text and rfc822 format available.

Notification sent to Tom Willemse <tom <at> ryuslash.org>:
bug acknowledged by developer. (Sun, 19 Apr 2015 01:10:03 GMT) Full text and rfc822 format available.

Message #19 received at 19505-done <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: 19505-done <at> debbugs.gnu.org
Subject: Re: bug#19505: 25.0.50;
 Defining a chomp function breaks electric pairing
Date: Sat, 18 Apr 2015 21:09:49 -0400
Version: 25.1

Tom Willemse wrote:

> The attached patch fixes the situation where a function `chomp' exists
> and `electric-pair-skip-whitespace' has the value `chomp'. Since that
> specific symbol is mentioned as a special case for this variable, it
> seems that it shouldn't try to call a function named as such.

Thanks; applied.
(While it might have been nicer to use :chomp, it doesn't seem worth an
incompatible change to me.)

BTW, you have a few "tiny changes" installed in Emacs now.
If you expect to contribute more, please consider completing the form at 

http://git.savannah.gnu.org/cgit/gnulib.git/plain/doc/Copyright/request-assign.future




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 17 May 2015 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 10 years and 37 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.