>From 3329a22e633ce345d727ebceb81d3183bd74372f Mon Sep 17 00:00:00 2001 From: Dima Kogan 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))))) -- 1.8.3.2