=== modified file 'lisp/international/mule-cmds.el'
*** lisp/international/mule-cmds.el	2012-06-27 21:15:13 +0000
--- lisp/international/mule-cmds.el	2012-07-15 15:31:27 +0000
*************** point or a number in hash notation, e.g.
*** 2954,2996 ****
       (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'.
! 
! You can type a few of the first letters of the Unicode name and
! use completion.  If you type a substring of the Unicode name
! preceded by an asterisk `*' and use completion, it will show all
! the characters whose names include that substring, not necessarily
! at the beginning of the name.
! 
! This function also accepts a hexadecimal number of Unicode code
! point or a number in hash notation, e.g. #o21430 for octal,
! #x2318 for hex, or #10r8984 for decimal.
! 
! 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 (and (stringp character)
! 	   (string-match-p "\\`[0-9a-fA-F]+\\'" character))
!       (setq character (string-to-number character 16)))
!   (cond
!    ((null character)
!     (error "Not a Unicode character"))
!    ((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)
  
  ;;; mule-cmds.el ends here
--- 2954,2960 ----
       (t
        (cdr (assoc-string input (ucs-names) t))))))
  
! (defalias 'ucs-insert 'insert-char)
! (define-key ctl-x-map "8\r" 'insert-char)
  
  ;;; mule-cmds.el ends here

=== modified file 'src/editfns.c'
*** src/editfns.c	2012-07-10 23:24:36 +0000
--- src/editfns.c	2012-07-15 16:03:00 +0000
*************** usage: (insert-before-markers-and-inheri
*** 2368,2378 ****
    return Qnil;
  }
  
! DEFUN ("insert-char", Finsert_char, Sinsert_char, 2, 3, 0,
!        doc: /* Insert COUNT copies of CHARACTER.
  Point, and before-insertion markers, are relocated as in the function `insert'.
! The optional third arg INHERIT, if non-nil, says to inherit text properties
! from adjoining text, if those properties are sticky.  */)
    (Lisp_Object character, Lisp_Object count, Lisp_Object inherit)
  {
    int i, stringlen;
--- 2368,2397 ----
    return Qnil;
  }
  
! DEFUN ("insert-char", Finsert_char, Sinsert_char, 1, 3,
!        "(list (read-char-by-name \"Unicode (name or hex): \")\
! 	 (prefix-numeric-value current-prefix-arg)\
! 	 t))",
!        doc: /*Insert COUNT copies of CHARACTER.
! Interactively, prompts for a Unicode character name or a hex number
! using `read-char-by-name'.
! 
! You can type a few of the first letters of the Unicode name and
! use completion.  If you type a substring of the Unicode name
! preceded by an asterisk `*' and use completion, it will show all
! the characters whose names include that substring, not necessarily
! at the beginning of the name.
! 
! This function also accepts a hexadecimal number of Unicode code
! point or a number in hash notation, e.g. #o21430 for octal,
! #x2318 for hex, or #10r8984 for decimal.
! 
! The optional third arg INHERIT (non-nil when called interactively),
! says to inherit text properties from adjoining text, if those
! properties are sticky.
! 
  Point, and before-insertion markers, are relocated as in the function `insert'.
! */)
    (Lisp_Object character, Lisp_Object count, Lisp_Object inherit)
  {
    int i, stringlen;
*************** from adjoining text, if those properties
*** 2382,2387 ****
--- 2401,2408 ----
    char string[4000];
  
    CHECK_CHARACTER (character);
+   if (NILP (count))
+     XSETFASTINT (count, 1);
    CHECK_NUMBER (count);
    c = XFASTINT (character);
  

