Subject: bug#63626: [PATCH] Make forward and backward-to-word arg optional

From: Zaz Brown <[email-masked]>
Date: Sat, 20 May 2023 21:33:51 -0700

(forward-to-word) throws (wrong-number-of-arguments forward-to-word 0)
in spite of the doc string stating:

> Move forward until encountering the beginning of a word.
> With argument, do this that many times.

This behaviour is present in Spacemacs 28.2, and has been confirmed by
Daniel Nicolai on Emacs 30. It's also evident in the latest source code.

The same issue exists for (backward-to-word). But running each command
with M-x works with no argument.

I'm new to Emacs, so please take this with a grain of salt.  Thank you!

---
 lisp/misc.el | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git master/lisp/misc.el arg-optional/lisp/misc.el
index ca013d5..f97240e 100644
--- a/lisp/misc.el
+++ b/lisp/misc.el
@@ -166,18 +166,20 @@ is an upper-case character."
     (upcase-region (point) (progn (forward-char arg) (point)))))

 ;;;###autoload
-(defun forward-to-word (arg)
+(defun forward-to-word (&optional arg)
   "Move forward until encountering the beginning of a word.
 With argument, do this that many times."
   (interactive "^p")
+  (unless arg (setq arg 1))
   (or (re-search-forward (if (> arg 0) "\\W\\b" "\\b\\W") nil t arg)
       (goto-char (if (> arg 0) (point-max) (point-min)))))

 ;;;###autoload
-(defun backward-to-word (arg)
+(defun backward-to-word (&optional arg)
   "Move backward until encountering the end of a word.
 With argument, do this that many times."
   (interactive "^p")
+  (unless arg (setq arg 1))
   (forward-to-word (- arg)))

 ;;;###autoload
--
2.40.1