bug#4039: C-x 8 RET with prefix arg doesn't repeat character

Juri Linkov <[email protected]>
Newsgroups gmane.emacs.bugs,gmane.emacs.pretest.bugs
Organization JURTA
Message-ID <[email protected]>
Typing

  C-u 5 C-x 8 ' a

is supposed to insert 5 characters of á in a row
(modulo the reported bug#4037).

However, typing

  C-u 5 C-x 8 RET E1 RET

inserts just 1 character (`E1' is the code point of á).

I propose to fix `ucs-insert' to accept the same arguments
as `insert-char', i.e. `character', `count' and `inherit':

Index: lisp/international/mule-cmds.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/international/mule-cmds.el,v
retrieving revision 1.362
diff -c -r1.362 mule-cmds.el
*** lisp/international/mule-cmds.el	15 Jul 2009 12:28:09 -0000	1.362
--- lisp/international/mule-cmds.el	4 Aug 2009 19:50:42 -0000
***************
*** 2941,2959 ****
       (t
        (cdr (assoc-string input (ucs-names) t))))))
  
! (defun ucs-insert (arg)
!   "Insert a character of the given Unicode code point.
  Interactively, prompts for a Unicode character name or a hex number
! using `read-char-by-name'."
!   (interactive (list (read-char-by-name "Unicode (name or hex): ")))
!   (if (stringp arg)
!       (setq arg (string-to-number arg 16)))
    (cond
!    ((not (integerp arg))
!     (error "Not a Unicode character code: %S" arg))
!    ((or (< arg 0) (> arg #x10FFFF))
!     (error "Not a Unicode character code: 0x%X" arg)))
!   (insert-and-inherit arg))
  
  (define-key ctl-x-map "8\r" 'ucs-insert)
  
--- 2941,2968 ----
       (t
        (cdr (assoc-string input (ucs-names) t))))))
  
! (defun ucs-insert (character &optional count inherit)
!   "Insert COUNT copies of CHARACTER of the given Unicode code point.
  Interactively, prompts for a Unicode character name or a hex number
! using `read-char-by-name'.
! The optional third arg INHERIT (non-nil when called interactively),
! says to inherit text properties from adjoining text, if those
! properties are sticky."
!   (interactive
!    (list (read-char-by-name "Unicode (name or hex): ")
! 	 (prefix-numeric-value current-prefix-arg)
! 	 t))
!   (unless count (setq count 1))
!   (if (stringp character)
!       (setq character (string-to-number character 16)))
    (cond
!    ((not (integerp character))
!     (error "Not a Unicode character code: %S" character))
!    ((or (< character 0) (> character #x10FFFF))
!     (error "Not a Unicode character code: 0x%X" character)))
!   (if inherit
!       (dotimes (i count) (insert-and-inherit character))
!     (dotimes (i count) (insert character))))
  
  (define-key ctl-x-map "8\r" 'ucs-insert)

-- 
Juri Linkov
http://www.jurta.org/emacs/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.