GNU bug report logs - #26892
25.2; whitespace-mode does not turn off correctly

Previous Next

Package: emacs;

Reported by: Nick Helm <nick <at> tenpoint.co.nz>

Date: Thu, 11 May 2017 23:36:02 UTC

Severity: minor

Found in version 25.2

Done: Eli Zaretskii <eliz <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 26892 in the body.
You can then email your comments to 26892 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#26892; Package emacs. (Thu, 11 May 2017 23:36:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Nick Helm <nick <at> tenpoint.co.nz>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 11 May 2017 23:36:03 GMT) Full text and rfc822 format available.

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

From: Nick Helm <nick <at> tenpoint.co.nz>
To: <bug-gnu-emacs <at> gnu.org>
Subject: 25.2; whitespace-mode does not turn off correctly
Date: Fri, 12 May 2017 11:34:33 +1200
Emacs -Q
C-u 20 SPC RET RET RET RET   ; type some random whitespace
M-x global-whitespace-mode
M-x whitespace-mode
M-x whitespace-mode

The last command should toggle local whitespace-mode off, but note that the
whitespace display characters are not properly removed from the current
buffer.

I had a look at whitespace.el and I think the problem lies in
`whitespace-display-char-on'. Among other things, this function stores the
buffer display table and replaces it with a temporary display table to show
whitespace chars. The original is restored when the mode is turned off.

However, with global-whitespace-mode active, there is already a temporary
display table in place, which whitespace-mode incorrectly picks up and stores,
clobbering the original display table in the process. When whitespace-mode is
turned off, it restores the temporary display table set by
global-whitespace-mode, which leads to the problem.

Here's a little patch to check if global-whitespace-mode is active before
storing the display table. I've tried this for a few days with no obvious
problems.

--- whitespace-a.el	2017-05-12 00:59:34.000000000 +1200
+++ whitespace-b.el	2017-05-12 01:02:26.000000000 +1200
@@ -2496,9 +2496,10 @@
     (let (vecs vec)
       ;; Remember whether a buffer has a local display table.
       (unless whitespace-display-table-was-local
-	(setq whitespace-display-table-was-local t
-	      whitespace-display-table
-	      (copy-sequence buffer-display-table))
+	(setq whitespace-display-table-was-local t)
+        (unless global-whitespace-mode
+ 	      (setq whitespace-display-table
+	      (copy-sequence buffer-display-table)))
 	;; Assure `buffer-display-table' is unique
 	;; when two or more windows are visible.
 	(setq buffer-display-table





In GNU Emacs 25.2.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 (Build 13F1911))
 of 2017-04-22 built on builder10-9.porkrind.org
Windowing system distributor 'Apple', version 10.3.1504
Configured using:
 'configure --with-ns '--enable-locallisppath=/Library/Application
 Support/Emacs/${version}/site-lisp:/Library/Application
 Support/Emacs/site-lisp' --with-modules'

Configured features:
NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES

Important settings:
  value of $LANG: en_NZ.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Messages

Minor modes in effect:
  recentf-mode: t
  savehist-mode: t
  ivy-mode: t
  global-eldoc-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  transient-mark-mode: t

Recent messages:
Loading /Users/nick/.emacs.d/config/mc/mc-run-once.list...done
Emacs start-up time: 1.0 seconds
For information about GNU Emacs and the GNU system, type C-h C-a.
Loading /Users/nick/.emacs.d/config/recentf/recentf.history...done
Cleaning up the recentf list...done (0 removed)
user-error: The mark is not set now, so there is no region
s-b is undefined [2 times]

Load-path shadows:
/Users/nick/.emacs.d/lisp/org/ox hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox
/Users/nick/.emacs.d/lisp/org/ox-texinfo hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-texinfo
/Users/nick/.emacs.d/lisp/org/ox-publish hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-publish
/Users/nick/.emacs.d/lisp/org/ox-org hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-org
/Users/nick/.emacs.d/lisp/org/ox-odt hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-odt
/Users/nick/.emacs.d/lisp/org/ox-md hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-md
/Users/nick/.emacs.d/lisp/org/ox-man hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-man
/Users/nick/.emacs.d/lisp/org/ox-latex hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-latex
/Users/nick/.emacs.d/lisp/org/ox-icalendar hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-icalendar
/Users/nick/.emacs.d/lisp/org/ox-html hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-html
/Users/nick/.emacs.d/lisp/org/ox-beamer hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-beamer
/Users/nick/.emacs.d/lisp/org/ox-ascii hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ox-ascii
/Users/nick/.emacs.d/lisp/org/org hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org
/Users/nick/.emacs.d/lisp/org/org-w3m hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-w3m
/Users/nick/.emacs.d/lisp/org/org-version hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-version
/Users/nick/.emacs.d/lisp/org/org-timer hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-timer
/Users/nick/.emacs.d/lisp/org/org-table hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-table
/Users/nick/.emacs.d/lisp/org/org-src hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-src
/Users/nick/.emacs.d/lisp/org/org-rmail hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-rmail
/Users/nick/.emacs.d/lisp/org/org-protocol hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-protocol
/Users/nick/.emacs.d/lisp/org/org-plot hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-plot
/Users/nick/.emacs.d/lisp/org/org-pcomplete hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-pcomplete
/Users/nick/.emacs.d/lisp/org/org-mouse hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-mouse
/Users/nick/.emacs.d/lisp/org/org-mobile hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-mobile
/Users/nick/.emacs.d/lisp/org/org-mhe hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-mhe
/Users/nick/.emacs.d/lisp/org/org-macs hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-macs
/Users/nick/.emacs.d/lisp/org/org-macro hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-macro
/Users/nick/.emacs.d/lisp/org/org-loaddefs hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-loaddefs
/Users/nick/.emacs.d/lisp/org/org-list hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-list
/Users/nick/.emacs.d/lisp/org/org-irc hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-irc
/Users/nick/.emacs.d/lisp/org/org-install hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-install
/Users/nick/.emacs.d/lisp/org/org-inlinetask hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
/Users/nick/.emacs.d/lisp/org/org-info hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-info
/Users/nick/.emacs.d/lisp/org/org-indent hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-indent
/Users/nick/.emacs.d/lisp/org/org-id hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-id
/Users/nick/.emacs.d/lisp/org/org-habit hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-habit
/Users/nick/.emacs.d/lisp/org/org-gnus hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-gnus
/Users/nick/.emacs.d/lisp/org/org-footnote hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-footnote
/Users/nick/.emacs.d/lisp/org/org-feed hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-feed
/Users/nick/.emacs.d/lisp/org/org-faces hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-faces
/Users/nick/.emacs.d/lisp/org/org-eshell hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-eshell
/Users/nick/.emacs.d/lisp/org/org-entities hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-entities
/Users/nick/.emacs.d/lisp/org/org-element hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-element
/Users/nick/.emacs.d/lisp/org/org-docview hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-docview
/Users/nick/.emacs.d/lisp/org/org-datetree hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-datetree
/Users/nick/.emacs.d/lisp/org/org-ctags hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-ctags
/Users/nick/.emacs.d/lisp/org/org-crypt hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-crypt
/Users/nick/.emacs.d/lisp/org/org-compat hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-compat
/Users/nick/.emacs.d/lisp/org/org-colview hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-colview
/Users/nick/.emacs.d/lisp/org/org-clock hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-clock
/Users/nick/.emacs.d/lisp/org/org-capture hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-capture
/Users/nick/.emacs.d/lisp/org/org-bibtex hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-bibtex
/Users/nick/.emacs.d/lisp/org/org-bbdb hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-bbdb
/Users/nick/.emacs.d/lisp/org/org-attach hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-attach
/Users/nick/.emacs.d/lisp/org/org-archive hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-archive
/Users/nick/.emacs.d/lisp/org/org-agenda hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/org-agenda
/Users/nick/.emacs.d/lisp/org/ob hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob
/Users/nick/.emacs.d/lisp/org/ob-tangle hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-tangle
/Users/nick/.emacs.d/lisp/org/ob-table hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-table
/Users/nick/.emacs.d/lisp/org/ob-sqlite hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-sqlite
/Users/nick/.emacs.d/lisp/org/ob-sql hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-sql
/Users/nick/.emacs.d/lisp/org/ob-shen hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-shen
/Users/nick/.emacs.d/lisp/org/ob-screen hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-screen
/Users/nick/.emacs.d/lisp/org/ob-scheme hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-scheme
/Users/nick/.emacs.d/lisp/org/ob-scala hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-scala
/Users/nick/.emacs.d/lisp/org/ob-sass hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-sass
/Users/nick/.emacs.d/lisp/org/ob-ruby hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-ruby
/Users/nick/.emacs.d/lisp/org/ob-ref hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-ref
/Users/nick/.emacs.d/lisp/org/ob-R hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-R
/Users/nick/.emacs.d/lisp/org/ob-python hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-python
/Users/nick/.emacs.d/lisp/org/ob-plantuml hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-plantuml
/Users/nick/.emacs.d/lisp/org/ob-picolisp hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-picolisp
/Users/nick/.emacs.d/lisp/org/ob-perl hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-perl
/Users/nick/.emacs.d/lisp/org/ob-org hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-org
/Users/nick/.emacs.d/lisp/org/ob-octave hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-octave
/Users/nick/.emacs.d/lisp/org/ob-ocaml hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-ocaml
/Users/nick/.emacs.d/lisp/org/ob-mscgen hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-mscgen
/Users/nick/.emacs.d/lisp/org/ob-maxima hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-maxima
/Users/nick/.emacs.d/lisp/org/ob-matlab hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-matlab
/Users/nick/.emacs.d/lisp/org/ob-makefile hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-makefile
/Users/nick/.emacs.d/lisp/org/ob-lob hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-lob
/Users/nick/.emacs.d/lisp/org/ob-lisp hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-lisp
/Users/nick/.emacs.d/lisp/org/ob-lilypond hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-lilypond
/Users/nick/.emacs.d/lisp/org/ob-ledger hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-ledger
/Users/nick/.emacs.d/lisp/org/ob-latex hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-latex
/Users/nick/.emacs.d/lisp/org/ob-keys hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-keys
/Users/nick/.emacs.d/lisp/org/ob-js hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-js
/Users/nick/.emacs.d/lisp/org/ob-java hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-java
/Users/nick/.emacs.d/lisp/org/ob-io hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-io
/Users/nick/.emacs.d/lisp/org/ob-haskell hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-haskell
/Users/nick/.emacs.d/lisp/org/ob-gnuplot hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot
/Users/nick/.emacs.d/lisp/org/ob-fortran hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-fortran
/Users/nick/.emacs.d/lisp/org/ob-exp hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-exp
/Users/nick/.emacs.d/lisp/org/ob-eval hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-eval
/Users/nick/.emacs.d/lisp/org/ob-emacs-lisp hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp
/Users/nick/.emacs.d/lisp/org/ob-dot hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-dot
/Users/nick/.emacs.d/lisp/org/ob-ditaa hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-ditaa
/Users/nick/.emacs.d/lisp/org/ob-css hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-css
/Users/nick/.emacs.d/lisp/org/ob-core hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-core
/Users/nick/.emacs.d/lisp/org/ob-comint hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-comint
/Users/nick/.emacs.d/lisp/org/ob-clojure hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-clojure
/Users/nick/.emacs.d/lisp/org/ob-calc hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-calc
/Users/nick/.emacs.d/lisp/org/ob-C hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-C
/Users/nick/.emacs.d/lisp/org/ob-awk hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-awk
/Users/nick/.emacs.d/lisp/org/ob-asymptote hides /Users/nick/Desktop/Emacs.app/Contents/Resources/lisp/org/ob-asymptote

Features:
(shadow face-remap emacsbug colir color recentf tree-widget wid-edit
time em-term term disp-table ehelp esh-opt esh-ext mu4e desktop frameset
mu4e-speedbar speedbar sb-image ezimage dframe mu4e-main mu4e-context
mu4e-view cal-menu calendar cal-loaddefs epa derived browse-url comint
ansi-color mu4e-headers mu4e-compose mu4e-draft mu4e-actions rfc2368
smtpmail sendmail mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils
doc-view subr-x image-mode mu4e-lists mu4e-vars message format-spec
rfc822 mml mml-sec epg epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev mail-utils
gmm-utils mailheader hl-line cl mu4e-meta dired-x dired savehist smex
ido seq counsel jka-compr esh-util etags xref project ring swiper ivy
delsel ivy-overlay ffap url-parse auth-source cl-seq eieio byte-opt
bytecomp byte-compile cl-extra cconv eieio-core cl-macs gnus-util
mm-util help-fns help-mode mail-prsvr password-cache url-vars
multiple-cursors mc-hide-unmatched-lines-mode mc-separate-operations
rectangular-region-mode mc-mark-pop mc-mark-more mc-cycle-cursors
mc-edit-lines multiple-cursors-core advice rect nh-posmark nh-resize
nh-macdict markdown-mode thingatpt noutline outline easy-mmode easymenu
iso-transl nh-tax nh-move-lines gv flyspell ispell linum plain-theme
edmacro kmacro cl-loaddefs pcase cl-lib time-date mule-util tooltip
eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
ns-win ucs-normalize term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core frame cl-generic cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese charscript case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote kqueue cocoa ns multi-tty
make-network-process emacs)

Memory information:
((conses 16 291871 101436)
 (symbols 48 29250 0)
 (miscs 40 60 296)
 (strings 32 44032 118873)
 (string-bytes 1 1279925)
 (vectors 16 44379)
 (vector-slots 8 762963 80102)
 (floats 8 452 191)
 (intervals 56 708 164)
 (buffers 976 19))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#26892; Package emacs. (Fri, 12 May 2017 06:21:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Nick Helm <nick <at> tenpoint.co.nz>
Cc: 26892 <at> debbugs.gnu.org
Subject: Re: bug#26892: 25.2; whitespace-mode does not turn off correctly
Date: Fri, 12 May 2017 09:19:52 +0300
> From: Nick Helm <nick <at> tenpoint.co.nz>
> Date: Fri, 12 May 2017 11:34:33 +1200
> 
> Emacs -Q
> C-u 20 SPC RET RET RET RET   ; type some random whitespace
> M-x global-whitespace-mode
> M-x whitespace-mode
> M-x whitespace-mode
> 
> The last command should toggle local whitespace-mode off, but note that the
> whitespace display characters are not properly removed from the current
> buffer.
> 
> I had a look at whitespace.el and I think the problem lies in
> `whitespace-display-char-on'. Among other things, this function stores the
> buffer display table and replaces it with a temporary display table to show
> whitespace chars. The original is restored when the mode is turned off.
> 
> However, with global-whitespace-mode active, there is already a temporary
> display table in place, which whitespace-mode incorrectly picks up and stores,
> clobbering the original display table in the process. When whitespace-mode is
> turned off, it restores the temporary display table set by
> global-whitespace-mode, which leads to the problem.
> 
> Here's a little patch to check if global-whitespace-mode is active before
> storing the display table. I've tried this for a few days with no obvious
> problems.

Did you try running whitespace-tests with this change, and if so, did
they pass?

If the tests pass, would you mind to please add a new test for this
bug?

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#26892; Package emacs. (Mon, 15 May 2017 00:27:02 GMT) Full text and rfc822 format available.

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

From: Nick Helm <nick <at> tenpoint.co.nz>
To: <26892 <at> debbugs.gnu.org>
Cc: Eli Zaretskii <eliz <at> gnu.org>
Subject: Re: bug#26892: 25.2; whitespace-mode does not turn off correctly
Date: Mon, 15 May 2017 12:26:14 +1200
[Message part 1 (text/plain, inline)]
> Did you try running whitespace-tests with this change, and if so, did
> they pass?

Yes, all tests pass.

> If the tests pass, would you mind to please add a new test for this
> bug?

I've written a new test and confirmed it catches this problem. I also
tweaked the original patch to handle another instance of the same bug.

Patches for whitespace.el and whitespace-tests.el are attached.

[whitespace-tests.patch (text/x-patch, attachment)]
[whitespace.patch (text/x-patch, attachment)]

Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Fri, 19 May 2017 12:29:01 GMT) Full text and rfc822 format available.

Notification sent to Nick Helm <nick <at> tenpoint.co.nz>:
bug acknowledged by developer. (Fri, 19 May 2017 12:29:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Nick Helm <nick <at> tenpoint.co.nz>
Cc: 26892-done <at> debbugs.gnu.org
Subject: Re: bug#26892: 25.2; whitespace-mode does not turn off correctly
Date: Fri, 19 May 2017 15:27:52 +0300
> From: Nick Helm <nick <at> tenpoint.co.nz>
> CC: Eli Zaretskii <eliz <at> gnu.org>
> Date: Mon, 15 May 2017 12:26:14 +1200
> 
> I've written a new test and confirmed it catches this problem. I also
> tweaked the original patch to handle another instance of the same bug.
> 
> Patches for whitespace.el and whitespace-tests.el are attached.

Thanks, pushed.

A couple of notes, for the future:

 . The test at first failed for me, and needed some tweaking, because
   whitespace-mode refuses to turn on in batch mode.  I guess you ran
   the tests in interactive mode?  You should run tests in batch.

 . The patch was not applicable without manual editing, because it
   used file names like whitespace-a.el, which don't exist.  Please in
   the future submit patches produced against the correct file names,
   preferably with "git diff" or somesuch.

 . Please include with the patch a ChangeLog-style commit log message
   (see CONTRIBUTE for details).

 . Finally, this contribution exhausts the amount of changes we can
   accept from you without legal paperwork, so I encourage you to
   start the paperwork rolling, for us to be able to accept your
   future contributions.  (I can send you the forms off-list if you
   want.)

Thanks again for working on this.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#26892; Package emacs. (Sun, 21 May 2017 23:12:01 GMT) Full text and rfc822 format available.

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

From: Nick Helm <nick <at> tenpoint.co.nz>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 26892-done <at> debbugs.gnu.org
Subject: Re: bug#26892: 25.2; whitespace-mode does not turn off correctly
Date: Mon, 22 May 2017 11:11:11 +1200
> A couple of notes, for the future:
>
>  . The test at first failed for me, and needed some tweaking, because
>    whitespace-mode refuses to turn on in batch mode.  I guess you ran
>    the tests in interactive mode?  You should run tests in batch.

Sorry, yes, I did. I read about batch testing in the manual, but didn't
click that most tests need to run that way. Of course they do, now that
I think about it. 

>  . The patch was not applicable without manual editing, because it
>    used file names like whitespace-a.el, which don't exist.  Please in
>    the future submit patches produced against the correct file names,
>    preferably with "git diff" or somesuch.
>
>  . Please include with the patch a ChangeLog-style commit log message
>    (see CONTRIBUTE for details).
>
>  . Finally, this contribution exhausts the amount of changes we can
>    accept from you without legal paperwork, so I encourage you to
>    start the paperwork rolling, for us to be able to accept your
>    future contributions.  (I can send you the forms off-list if you
>    want.)

I'd like to keep contributing where I can, so please do send the
paperwork when you have a moment. 

Thank you for the feedback and for fixing up the code. It is very much
appreciated! 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#26892; Package emacs. (Mon, 22 May 2017 04:12:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Nick Helm <nick <at> tenpoint.co.nz>
Cc: 26892 <at> debbugs.gnu.org
Subject: Re: bug#26892: 25.2; whitespace-mode does not turn off correctly
Date: Mon, 22 May 2017 07:10:43 +0300
> From: Nick Helm <nick <at> tenpoint.co.nz>
> CC: <26892-done <at> debbugs.gnu.org>
> Date: Mon, 22 May 2017 11:11:11 +1200
> >  . Finally, this contribution exhausts the amount of changes we can
> >    accept from you without legal paperwork, so I encourage you to
> >    start the paperwork rolling, for us to be able to accept your
> >    future contributions.  (I can send you the forms off-list if you
> >    want.)
> 
> I'd like to keep contributing where I can, so please do send the
> paperwork when you have a moment. 

Sent off-list.

> Thank you for the feedback and for fixing up the code. It is very much
> appreciated! 

You are very welcome.




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

This bug report was last modified 8 years and 4 days ago.

Previous Next


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