From 043631796e44bcfde79160170c96142c10175b0d Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Wed, 24 Jan 2001 13:14:45 +0000 Subject: [PATCH] (universal-coding-system-argument): Handle commands with prefix args. --- lisp/ChangeLog | 5 +++++ lisp/international/mule-cmds.el | 32 ++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bac8e169de2..3fa3c14a06c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2001-01-24 Gerd Moellmann + + * international/mule-cmds.el (universal-coding-system-argument): + Handle commands with prefix args. + 2001-01-24 Edward M. Reingold * calendar/diary-lib.el (diary-float): Fix case of MONTH diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 6ff2e46b53a..0d81e8412fb 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -264,9 +264,37 @@ wrong, use this command again to toggle back to the right mode." default)) (keyseq (read-key-sequence (format "Command to execute with %s:" coding-system))) - (cmd (key-binding keyseq))) + (cmd (key-binding keyseq)) + prefix) + + (when (eq cmd 'universal-argument) + (call-interactively cmd) + + ;; Process keys bound in `universal-argument-map'. + (while (progn + (setq keyseq (read-key-sequence nil t) + cmd (key-binding keyseq t)) + (not (eq cmd 'universal-argument-other-key))) + (let ((current-prefix-arg prefix-arg) + ;; Have to bind `last-command-char' here so that + ;; `digit-argument', for isntance, can compute the + ;; prefix arg. + (last-command-char (aref keyseq 0))) + (call-interactively cmd))) + + ;; This is the final call to `univeral-argument-other-key', which + ;; set's the final `prefix-arg. + (let ((current-prefix-arg prefix-arg)) + (call-interactively cmd)) + + ;; Read the command to execute with the given prefix arg. + (setq prefix prefix-arg + keyseq (read-key-sequence nil t) + cmd (key-binding keyseq))) + (let ((coding-system-for-read coding-system) - (coding-system-for-write coding-system)) + (coding-system-for-write coding-system) + (current-prefix-arg prefix)) (message "") (call-interactively cmd)))) -- 2.39.2