From: Dima Kogan <dima@secretsauce.net>
To: 15580@debbugs.gnu.org
Subject: bug#15580: [PATCH] 24.3.50; subword-capitalize at the end of a buffer jumps to the beginning
Date: Thu, 10 Oct 2013 00:01:22 -0700 [thread overview]
Message-ID: <87y561obi5.fsf@secretsauce.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 473 bytes --]
Hi.
I'm observing subword-capitalize get confused when called near the end
of a buffer. Instead of doing nothing like capitalize-word does,
subword-capitalize jumps to around the beginning of the buffer and
capitalizes something there.
The cause is simple. subword-capitalize does
(re-search-forward "[[:alpha:]]" ....)
and uses the results of this search even if it failed. The attached
patch explicitly checks for search failure and exits the function in
that case.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-subword-capitalize-now-fails-gracefully-at-end-of-bu.patch --]
[-- Type: text/x-diff, Size: 1691 bytes --]
From 3329a22e633ce345d727ebceb81d3183bd74372f Mon Sep 17 00:00:00 2001
From: Dima Kogan <dima@secretsauce.net>
Date: Wed, 9 Oct 2013 23:57:25 -0700
Subject: [PATCH] subword-capitalize now fails gracefully at end-of-buffer
---
lisp/progmodes/subword.el | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el
index 8cf4feb..1866ad9 100644
--- a/lisp/progmodes/subword.el
+++ b/lisp/progmodes/subword.el
@@ -260,21 +260,25 @@ Optional argument ARG is the same as for `capitalize-word'."
(let ((count (abs arg))
(start (point))
(advance (if (< arg 0) nil t)))
- (dotimes (i count)
- (if advance
- (progn (re-search-forward
- (concat "[[:alpha:]]")
- nil t)
- (goto-char (match-beginning 0)))
- (subword-backward))
- (let* ((p (point))
- (pp (1+ p))
- (np (subword-forward)))
- (upcase-region p pp)
- (downcase-region pp np)
- (goto-char (if advance np p))))
- (unless advance
- (goto-char start))))
+
+ (catch 'search-failed
+ (dotimes (i count)
+ (if advance
+ (progn
+ (when (not (re-search-forward
+ (concat "[[:alpha:]]")
+ nil t))
+ (throw 'search-failed "search failed"))
+ (goto-char (match-beginning 0)))
+ (subword-backward))
+ (let* ((p (point))
+ (pp (1+ p))
+ (np (subword-forward)))
+ (upcase-region p pp)
+ (downcase-region pp np)
+ (goto-char (if advance np p))))
+ (unless advance
+ (goto-char start)))))
\f
--
1.8.3.2
next reply other threads:[~2013-10-10 7:01 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-10 7:01 Dima Kogan [this message]
2013-10-14 19:25 ` bug#15580: [PATCH] 24.3.50; subword-capitalize at the end of a buffer jumps to the beginning Stefan Monnier
2013-10-15 19:03 ` Dima Kogan
2013-10-16 3:03 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y561obi5.fsf@secretsauce.net \
--to=dima@secretsauce.net \
--cc=15580@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.