From c2de5588b4c8799f9b5a545bbace588f2454640e Mon Sep 17 00:00:00 2001 From: Dima Kogan Date: Mon, 14 Oct 2013 15:20:29 -0400 Subject: [PATCH] * lisp/progmodes/subword.el (subword-capitalize): Be careful when the search for [[:alpha:]] fails. Fixes: debbugs:15580 --- lisp/ChangeLog | 17 +++++++++++------ lisp/progmodes/subword.el | 37 +++++++++++++++++++------------------ 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4471d4c2b25..ea25c557a51 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-10-14 Dima Kogan (tiny change) + + * progmodes/subword.el (subword-capitalize): Be careful when + the search for [[:alpha:]] fails (bug#15580). + 2013-10-14 Eli Zaretskii * menu-bar.el (tty-menu-navigation-map): Bind shifted mouse clicks @@ -5,8 +10,8 @@ 2013-10-14 Dmitry Gutov - * progmodes/ruby-mode.el (ruby-smie--args-separator-p): Handle - methods ending with `?' and `!'. + * progmodes/ruby-mode.el (ruby-smie--args-separator-p): + Handle methods ending with `?' and `!'. 2013-10-14 Akinori MUSHA @@ -41,8 +46,8 @@ Fix indentation/fontification of Java enum with "implements"/generic. - * progmodes/cc-engine.el (c-backward-over-enum-header): Extracted - from the three other places and enhanced to handle generics. + * progmodes/cc-engine.el (c-backward-over-enum-header): + Extracted from the three other places and enhanced to handle generics. (c-inside-bracelist-p): Uses new function above. * progmodes/cc-fonts.el (c-font-lock-declarations): Uses new function above. @@ -230,8 +235,8 @@ * tooltip.el (tooltip-mode): Don't error out on TTYs. - * menu-bar.el (popup-menu, popup-menu-normalize-position): Moved - here from mouse.el. + * menu-bar.el (popup-menu, popup-menu-normalize-position): + Move here from mouse.el. (popup-menu): Support menu-bar navigation on TTYs using C-f/C-b and arrow keys. (tty-menu-navigation-map): New map for TTY menu navigation. diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el index 8cf4feb62cb..1232588ca32 100644 --- a/lisp/progmodes/subword.el +++ b/lisp/progmodes/subword.el @@ -257,24 +257,25 @@ Optional argument ARG is the same as for `upcase-word'." See the command `subword-mode' for a description of subwords. Optional argument ARG is the same as for `capitalize-word'." (interactive "p") - (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 + (let ((count (abs arg)) + (start (point)) + (advance (>= arg 0))) + + (dotimes (i count) + (if advance + (progn + (search-forward "[[:alpha:]]") + (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))))) -- 2.39.2