all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Robert Cochran <robert-emacs@cochranmail.com>
To: Matthew Malcomson <hardenedapple@gmail.com>
Cc: 24133@debbugs.gnu.org
Subject: bug#24133: 25.1.50; Some checkdoc.el functions use call-interactively incorrectly
Date: Fri, 19 Aug 2016 18:24:40 -0700	[thread overview]
Message-ID: <87bn0oqlk7.fsf@cochranmail.com> (raw)
In-Reply-To: <2eb6d6f3-09e8-093b-568f-634dced3fcd6@gmail.com> (Matthew Malcomson's message of "Tue, 2 Aug 2016 08:08:24 +0100")

[-- Attachment #1: Type: text/plain, Size: 1015 bytes --]

Matthew Malcomson <hardenedapple@gmail.com> writes:

> There are a few checkdoc.el functions that pass `current-prefix-arg'
> as the third argument (KEYS) to `call-interactively'.
> When running any of these with a prefix argument (whether numeric or
> a cons cell) gives an error about the argument to `call-interactively'
> not being a vector.
> e.g.
>
> emacs -Q
>
> C-u M-x checkdoc-ispell<RET>
>
> checkdoc-ispell: Wrong type argument: vectorp, (4)
>
>
> I see this with any emacs version I've tried.

As it turns out, whoever wrote that wasn't paying close enough
attention, as the third argument is supposed to be for events (to
satisfy commands that ask for "e", "k", "K", or "U").

It seems that `call-interactively' propagates the prefix argument to the
called function automatically (it did with a test command that printed
its arg in my git emacs -Q), so you should be able to remove the last 2
arguments to each call and it should Just Work(tm).

I have a patch, attached, that does just that.

-----


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: checkdoc.el call-interactively fixup patch --]
[-- Type: text/x-patch, Size: 4080 bytes --]

From 77b83195d234efe1e8876733067548d7e9c17271 Mon Sep 17 00:00:00 2001
From: Robert Cochran <robert-git@cochranmail.com>
Date: Fri, 19 Aug 2016 18:03:24 -0700
Subject: [PATCH] Fix uses of (call-interactively) in
 lisp/emacs-lisp/checkdoc.el

* lisp/emacs-lisp/checkdoc.el (checkdoc-ispell)
  (checkdoc-ispell-current-buffer)
  (checkdoc-ispell-interactive)
  (checkdoc-ispell-message-text)
  (checkdoc-ispell-start)
  (checkdoc-ispell-continue)
  (checkdoc-ispell-comments)
  (checkdoc-ispell-defun):
  Do not pass 'current-prefix-arg' to 'call-interactively' as an event
  vector; merely allow it to propagate forward to the interactive call.

Passing the prefix argument as the 3rd argument to 'call-interactively'
causes the prefix argument to be interpreted as events, which is not
only wrong, but also causes a type error, as 'current-prefix-arg' can
never be a vector as 'call-interactively' expects. 'call-interactively'
automatically passes its prefix argument to the called function, so just
do that, eliminating faulty behavior.
---
 lisp/emacs-lisp/checkdoc.el | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index 3a81ade..769c2fe 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -1062,7 +1062,7 @@ checkdoc-ispell
 Prefix argument is the same as for `checkdoc'"
   (interactive)
   (let ((checkdoc-spellcheck-documentation-flag t))
-    (call-interactively #'checkdoc nil current-prefix-arg)))
+    (call-interactively #'checkdoc)))
 
 ;;;###autoload
 (defun checkdoc-ispell-current-buffer ()
@@ -1071,7 +1071,7 @@ checkdoc-ispell-current-buffer
 Prefix argument is the same as for `checkdoc-current-buffer'"
   (interactive)
   (let ((checkdoc-spellcheck-documentation-flag t))
-    (call-interactively #'checkdoc-current-buffer nil current-prefix-arg)))
+    (call-interactively #'checkdoc-current-buffer)))
 
 ;;;###autoload
 (defun checkdoc-ispell-interactive ()
@@ -1080,7 +1080,7 @@ checkdoc-ispell-interactive
 Prefix argument is the same as for `checkdoc-interactive'"
   (interactive)
   (let ((checkdoc-spellcheck-documentation-flag t))
-    (call-interactively #'checkdoc-interactive nil current-prefix-arg)))
+    (call-interactively #'checkdoc-interactive)))
 
 ;;;###autoload
 (defun checkdoc-ispell-message-interactive ()
@@ -1099,7 +1099,7 @@ checkdoc-ispell-message-text
 Prefix argument is the same as for `checkdoc-message-text'"
   (interactive)
   (let ((checkdoc-spellcheck-documentation-flag t))
-    (call-interactively #'checkdoc-message-text nil current-prefix-arg)))
+    (call-interactively #'checkdoc-message-text)))
 
 ;;;###autoload
 (defun checkdoc-ispell-start ()
@@ -1108,7 +1108,7 @@ checkdoc-ispell-start
 Prefix argument is the same as for `checkdoc-start'"
   (interactive)
   (let ((checkdoc-spellcheck-documentation-flag t))
-    (call-interactively #'checkdoc-start nil current-prefix-arg)))
+    (call-interactively #'checkdoc-start)))
 
 ;;;###autoload
 (defun checkdoc-ispell-continue ()
@@ -1117,7 +1117,7 @@ checkdoc-ispell-continue
 Prefix argument is the same as for `checkdoc-continue'"
   (interactive)
   (let ((checkdoc-spellcheck-documentation-flag t))
-    (call-interactively #'checkdoc-continue nil current-prefix-arg)))
+    (call-interactively #'checkdoc-continue)))
 
 ;;;###autoload
 (defun checkdoc-ispell-comments ()
@@ -1126,7 +1126,7 @@ checkdoc-ispell-comments
 Prefix argument is the same as for `checkdoc-comments'"
   (interactive)
   (let ((checkdoc-spellcheck-documentation-flag t))
-    (call-interactively #'checkdoc-comments nil current-prefix-arg)))
+    (call-interactively #'checkdoc-comments)))
 
 ;;;###autoload
 (defun checkdoc-ispell-defun ()
@@ -1135,7 +1135,7 @@ checkdoc-ispell-defun
 Prefix argument is the same as for `checkdoc-defun'"
   (interactive)
   (let ((checkdoc-spellcheck-documentation-flag t))
-    (call-interactively #'checkdoc-defun nil current-prefix-arg)))
+    (call-interactively #'checkdoc-defun)))
 
 ;;; Error Management
 ;;
-- 
2.7.4


[-- Attachment #3: Type: text/plain, Size: 102 bytes --]

-----

HTH,
-- 
~Robert Cochran

GPG Fingerprint - E778 2DD4 FEA6 6A68 6F26  AD2D E5C3 EB36 4886 8871

  reply	other threads:[~2016-08-20  1:24 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-02  7:08 bug#24133: 25.1.50; Some checkdoc.el functions use call-interactively incorrectly Matthew Malcomson
2016-08-20  1:24 ` Robert Cochran [this message]
2016-08-26 16:14   ` Robert Cochran
2016-08-27  2:58   ` npostavs
2016-08-27 18:38     ` Robert Cochran
2016-09-02  2:55       ` npostavs
2016-09-02  7:01         ` Eli Zaretskii
2016-09-03 16:04           ` npostavs

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=87bn0oqlk7.fsf@cochranmail.com \
    --to=robert-emacs@cochranmail.com \
    --cc=24133@debbugs.gnu.org \
    --cc=hardenedapple@gmail.com \
    /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.