* bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode
@ 2015-02-24 21:19 Simen Heggestøyl
2016-04-03 3:49 ` Marcin Borkowski
0 siblings, 1 reply; 7+ messages in thread
From: Simen Heggestøyl @ 2015-02-24 21:19 UTC (permalink / raw)
To: 19940
[-- Attachment #1: Type: text/plain, Size: 2898 bytes --]
An infinite loop occurs when Subword mode is active and
`studlify-word' is run on a word with more than one subword. The bug
seems to have been introduced by changes made to subword.el in commit
6ddc44225e743e2b2a0d5c192f50aefd7a4a915b.
Here is a recipe that triggers the bug, starting from emacs -Q:
1. Open a new buffer, and type in "subWord".
2. Activate Subword mode by `M-x subword-mode'.
3. Move point to the beginning of the line, and run `M-x
studlify-word'.
In GNU Emacs 25.0.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.14.5)
of 2015-02-24 on x240
Repository revision: 450bebaec94611f0958e13e35faf494e17931f8e
Windowing system distributor `The X.Org Foundation', version
11.0.11604000
System Description: Debian GNU/Linux 8.0 (jessie)
Configured using:
`configure --without-makeinfo'
Configured features:
XPM JPEG TIFF GIF PNG SOUND DBUS GSETTINGS NOTIFY LIBXML2 FREETYPE XFT
ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Lisp Interaction
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-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
line-number-mode: t
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Load-path shadows:
None found.
Features:
(shadow sort gnus-util mail-extr emacsbug message dired format-spec
rfc822 mml easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util help-fns mail-prsvr mail-utils time-date tooltip
eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win
x-dnd 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 cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak
czech european ethiopic indian cyrillic chinese 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 make-network-process dbusbind
gfilenotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)
Memory information:
((conses 16 74956 6410)
(symbols 48 18012 0)
(miscs 40 43 124)
(strings 32 10961 5159)
(string-bytes 1 296944)
(vectors 16 9377)
(vector-slots 8 386766 15535)
(floats 8 70 63)
(intervals 56 175 0)
(buffers 976 11)
(heap 1024 31954 1039))
[-- Attachment #2: Type: text/html, Size: 3958 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode
2015-02-24 21:19 bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode Simen Heggestøyl
@ 2016-04-03 3:49 ` Marcin Borkowski
2016-04-03 14:43 ` Eli Zaretskii
0 siblings, 1 reply; 7+ messages in thread
From: Marcin Borkowski @ 2016-04-03 3:49 UTC (permalink / raw)
To: Simen Heggestøyl; +Cc: 19940
On 2015-02-24, at 21:19, Simen Heggestøyl <simenheg@gmail.com> wrote:
> An infinite loop occurs when Subword mode is active and
>
> `studlify-word' is run on a word with more than one subword. The bug
>
>
> seems to have been introduced by changes made to subword.el in commit
>
>
> 6ddc44225e743e2b2a0d5c192f50aefd7a4a915b.
>
>
> Here is a recipe that triggers the bug, starting from emacs -Q:
>
>
> 1. Open a new buffer, and type in "subWord".
>
>
> 2. Activate Subword mode by `M-x subword-mode'.
>
>
> 3. Move point to the beginning of the line, and run `M-x
>
>
> studlify-word'.
Hi,
I can confirm this behavior on GNU Emacs 25.1.50.7 (commit 7570b35).
The problem seems to be that `studlify-region' assumes that
`forward-word' and `backward-word' will stop at non-word characters (in
the sense of the regex `\W').
One possible solution would be to temporarily switch `subword-mode' off
in `studlify-region'. Given the nonsensicality of the latter, and the
fact that it breaks studlyCapsIdentifiers anyway, this might be the
preferred solution. If nobody proposes anything better, I'll tryto
prepare such a patch within a few days.
--
Marcin Borkowski
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode
2016-04-03 3:49 ` Marcin Borkowski
@ 2016-04-03 14:43 ` Eli Zaretskii
2016-04-03 16:07 ` Marcin Borkowski
0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2016-04-03 14:43 UTC (permalink / raw)
To: Marcin Borkowski; +Cc: 19940, simenheg
> From: Marcin Borkowski <mbork@mbork.pl>
> Date: Sun, 03 Apr 2016 05:49:10 +0200
> Cc: 19940@debbugs.gnu.org
>
> One possible solution would be to temporarily switch `subword-mode' off
> in `studlify-region'. Given the nonsensicality of the latter, and the
> fact that it breaks studlyCapsIdentifiers anyway, this might be the
> preferred solution. If nobody proposes anything better, I'll tryto
> prepare such a patch within a few days.
Actually, the right solution is described in this NEWS entry:
** The new implementation of Subword mode affects word movement everywhere.
When Subword mode is turned on, 'forward-word', 'backward-word', and
everything that uses them will move by sub-words, effectively
overriding the buffer's syntax table. Lisp programs that shouldn't be
affected by Subword mode should call the new functions
'forward-word-strictly' and 'backward-word-strictly' instead.
At the time I wrote this NEWS entry, I reviewed all the callers of
forward/backward-word and changed those which I thought needed that; I
guess I missed studly.el at that time. Sorry about that.
Thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode
2016-04-03 14:43 ` Eli Zaretskii
@ 2016-04-03 16:07 ` Marcin Borkowski
2016-04-06 11:49 ` Marcin Borkowski
0 siblings, 1 reply; 7+ messages in thread
From: Marcin Borkowski @ 2016-04-03 16:07 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 19940, simenheg
On 2016-04-03, at 16:43, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Marcin Borkowski <mbork@mbork.pl>
>> Date: Sun, 03 Apr 2016 05:49:10 +0200
>> Cc: 19940@debbugs.gnu.org
>>
>> One possible solution would be to temporarily switch `subword-mode' off
>> in `studlify-region'. Given the nonsensicality of the latter, and the
>> fact that it breaks studlyCapsIdentifiers anyway, this might be the
>> preferred solution. If nobody proposes anything better, I'll tryto
>> prepare such a patch within a few days.
>
> Actually, the right solution is described in this NEWS entry:
>
> ** The new implementation of Subword mode affects word movement everywhere.
> When Subword mode is turned on, 'forward-word', 'backward-word', and
> everything that uses them will move by sub-words, effectively
> overriding the buffer's syntax table. Lisp programs that shouldn't be
> affected by Subword mode should call the new functions
> 'forward-word-strictly' and 'backward-word-strictly' instead.
>
> At the time I wrote this NEWS entry, I reviewed all the callers of
> forward/backward-word and changed those which I thought needed that; I
> guess I missed studly.el at that time. Sorry about that.
Ah, good to know. I suspected that such function would exist, but was
too lazy to actually find out - sorry!
I'll make a patch tomorrow.
> Thanks.
Best,
--
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode
2016-04-03 16:07 ` Marcin Borkowski
@ 2016-04-06 11:49 ` Marcin Borkowski
2016-04-08 7:59 ` Eli Zaretskii
0 siblings, 1 reply; 7+ messages in thread
From: Marcin Borkowski @ 2016-04-06 11:49 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 19940-done, simenheg
[-- Attachment #1: Type: text/plain, Size: 188 bytes --]
On 2016-04-03, at 18:07, Marcin Borkowski <mbork@mbork.pl> wrote:
> I'll make a patch tomorrow.
Sorry it took me so long, here's the patch. I'm also closing this bug.
Best,
--
Marcin
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-bug-19940.patch --]
[-- Type: text/x-patch, Size: 1280 bytes --]
From 1e8cd05ba1c83fa48831e234bb3a2893252ca238 Mon Sep 17 00:00:00 2001
From: Marcin Borkowski <mbork@mbork.pl>
Date: Mon, 4 Apr 2016 22:12:23 +0200
Subject: [PATCH] Fix bug #19940
* lisp/play/studly.el (studlify-region): Change
\(forward\|backward\)-word to \1-word-strictly. Should fix
bug#19940.
---
lisp/play/studly.el | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lisp/play/studly.el b/lisp/play/studly.el
index f6aae45..ff1bf03 100644
--- a/lisp/play/studly.el
+++ b/lisp/play/studly.el
@@ -25,10 +25,10 @@ studlify-region
(setq begin (point))
(while (and (<= (point) end)
(not (looking-at "\\W*\\'")))
- (forward-word 1)
- (backward-word 1)
+ (forward-word-strictly 1)
+ (backward-word-strictly 1)
(setq begin (max (point) begin))
- (forward-word 1)
+ (forward-word-strictly 1)
(let ((offset 0)
(word-end (min (point) end))
c)
@@ -55,7 +55,7 @@ studlify-word
"Studlify-case the current word, or COUNT words if given an argument."
(interactive "*p")
(let ((begin (point)) end rb re)
- (forward-word count)
+ (forward-word-strictly count)
(setq end (point))
(setq rb (min begin end) re (max begin end))
(studlify-region rb re)))
--
2.4.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode
2016-04-06 11:49 ` Marcin Borkowski
@ 2016-04-08 7:59 ` Eli Zaretskii
2016-04-08 18:14 ` Marcin Borkowski
0 siblings, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2016-04-08 7:59 UTC (permalink / raw)
To: Marcin Borkowski; +Cc: 19940
> From: Marcin Borkowski <mbork@mbork.pl>
> Cc: 19940-done@debbugs.gnu.org, simenheg@gmail.com
> Date: Wed, 06 Apr 2016 13:49:23 +0200
>
> Sorry it took me so long, here's the patch. I'm also closing this bug.
Thanks, I pushed it to the emacs-25 branch.
In the future, please don't use Sed-like expressions in the log
entries, use plain English instead. And we usually close bugs only
after the changes are committed to the repository.
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode
2016-04-08 7:59 ` Eli Zaretskii
@ 2016-04-08 18:14 ` Marcin Borkowski
0 siblings, 0 replies; 7+ messages in thread
From: Marcin Borkowski @ 2016-04-08 18:14 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 19940
On 2016-04-08, at 07:59, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Marcin Borkowski <mbork@mbork.pl>
>> Cc: 19940-done@debbugs.gnu.org, simenheg@gmail.com
>> Date: Wed, 06 Apr 2016 13:49:23 +0200
>>
>> Sorry it took me so long, here's the patch. I'm also closing this bug.
>
> Thanks, I pushed it to the emacs-25 branch.
>
> In the future, please don't use Sed-like expressions in the log
> entries, use plain English instead. And we usually close bugs only
> after the changes are committed to the repository.
Sorry, I'm still learning to write commit messages for Emacs. I'll also
remember your remark about closing.
Best,
--
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-04-08 18:14 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-24 21:19 bug#19940: 25.0.50; Infinite loop in `studlify-word' with Subword mode Simen Heggestøyl
2016-04-03 3:49 ` Marcin Borkowski
2016-04-03 14:43 ` Eli Zaretskii
2016-04-03 16:07 ` Marcin Borkowski
2016-04-06 11:49 ` Marcin Borkowski
2016-04-08 7:59 ` Eli Zaretskii
2016-04-08 18:14 ` Marcin Borkowski
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).