emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/ps-mule.el


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/lisp/ps-mule.el
Date: Tue, 22 Feb 2005 01:20:41 -0500

Index: emacs/lisp/ps-mule.el
diff -c emacs/lisp/ps-mule.el:1.36 emacs/lisp/ps-mule.el:1.37
*** emacs/lisp/ps-mule.el:1.36  Wed Sep  8 07:22:06 2004
--- emacs/lisp/ps-mule.el       Tue Feb 22 06:20:41 2005
***************
*** 1390,1409 ****
          (setq string (ps-mule-string-encoding font-spec string nil t))))))
    string)
  
! ;;;###autoload
! (defun ps-mule-header-string-charsets ()
!   "Return a list of character sets that appears in header strings."
!   (let* ((str (ps-header-footer-string))
!        (len (length str))
!        (i 0)
!        charset-list)
!     (while (< i len)
!       (let ((charset (char-charset (aref str i))))
!       (setq i (1+ i))
!       (or (eq charset 'ascii)
!           (memq charset charset-list)
!           (setq charset-list (cons charset charset-list)))))
!     charset-list))
  
  ;;;###autoload
  (defun ps-mule-begin-job (from to)
--- 1390,1449 ----
          (setq string (ps-mule-string-encoding font-spec string nil t))))))
    string)
  
! (defun ps-mule-show-warning (charsets from to header-footer-list)
!   (let ((table (make-category-table))
!       (buf (current-buffer))
!       char-pos-list)
!     (define-category ?u "Unprintable charset" table)
!     (dolist (cs charsets)
!       (modify-category-entry (make-char cs) ?u table))
!     (with-category-table table
!       (save-excursion
!       (goto-char from)
!       (while (and (< (length char-pos-list) 20)
!                   (re-search-forward "\\cu" to t))
!         (push (cons (preceding-char) (1- (point))) char-pos-list))
!       (setq char-pos-list (nreverse char-pos-list))))
!     (with-output-to-temp-buffer "*Warning*"
!       (with-current-buffer standard-output
!       (when char-pos-list
!         (let ((func #'(lambda (buf pos)
!                         (when (buffer-live-p buf)
!                           (pop-to-buffer buf)
!                           (goto-char pos)))))
!           (insert "These characters in the buffer can't be printed:\n")
!           (dolist (elt char-pos-list)
!             (insert " ")
!             (insert-text-button (string (car elt))
!                                 :type 'help-xref
!                                 'help-echo
!                                 "mouse-2, RET: jump to this character"
!                                 'help-function func
!                                 'help-args (list buf (cdr elt)))
!             (insert ","))
!           ;; Delete the last comma.
!           (delete-char -1)
!           (insert "\nClick them to jump to the buffer position,\n"
!                   (substitute-command-keys "\
! or \\[universal-argument] \\[what-cursor-position] will give information 
about them.\n"))))
! 
!       (with-category-table table
!         (let (string-list idx)
!           (dolist (elt header-footer-list)
!             (when (stringp elt)
!               (when (string-match "\\cu+" elt)
!                 (setq elt (copy-sequence elt))
!                 (put-text-property (match-beginning 0) (match-end 0)
!                                    'face 'highlight elt)
!                 (while (string-match "\\cu+" elt (match-end 0))
!                   (put-text-property (match-beginning 0) (match-end 0)
!                                      'face 'highlight elt))
!                 (push elt string-list))))
!           (when string-list
!             (insert
!              "These highlighted characters in header/footer can't be 
printed:\n")
!             (dolist (elt string-list)
!               (insert "  " elt "\n")))))))))
  
  ;;;###autoload
  (defun ps-mule-begin-job (from to)
***************
*** 1424,1481 ****
         enable-multibyte-characters
         ;; Initialize `ps-mule-charset-list'.  If some characters aren't
         ;; printable, warn it.
!        (let ((charsets (find-charset-region from to)))
!        (setq charsets (delq 'ascii (delq 'unknown (delq nil charsets)))
!              ps-mule-charset-list charsets)
!        (save-excursion
!          (goto-char from)
!          (and (search-forward "\200" to t)
!               (setq ps-mule-charset-list
!                     (cons 'composition ps-mule-charset-list))))
!        ;; We also have to check non-ASCII charsets in the header strings.
!        (let ((tail (ps-mule-header-string-charsets)))
!          (while tail
!            (unless (eq (car tail) 'ascii)
!              (setq ps-mule-header-charsets
!                    (cons (car tail) ps-mule-header-charsets))
!              (or (memq (car tail) charsets)
!                  (setq charsets (cons (car tail) charsets))))
!            (setq tail (cdr tail))))
!        (while charsets
!          (setq charsets
!                (cond
!                 ((or (eq (car charsets) 'composition)
!                      (ps-mule-printable-p (car charsets)))
!                  (cdr charsets))
!                 ((y-or-n-p
!                   "Font for some characters not found, continue anyway? ")
!                  nil)
!                 (t
!                  (error "Printing cancelled")))))))
  
    (setq ps-mule-current-charset 'ascii)
  
-   (if (and (nth 2 (find-composition from to))
-          (not ps-mule-composition-prologue-generated))
-       (progn
-       (ps-mule-prologue-generated)
-       (ps-output-prologue ps-mule-composition-prologue)
-       (setq ps-mule-composition-prologue-generated t)))
- 
    (if (or ps-mule-charset-list ps-mule-header-charsets)
!       (let ((the-list (append ps-mule-header-charsets ps-mule-charset-list))
!           font-spec elt)
        (ps-mule-prologue-generated)
!       ;; If external functions are necessary, generate prologues for them.
!       (while the-list
!         (setq elt (car the-list)
!               the-list (cdr the-list))
!         (cond ((and (eq elt 'composition)
!                     (not ps-mule-composition-prologue-generated))
!                (ps-output-prologue ps-mule-composition-prologue)
!                (setq ps-mule-composition-prologue-generated t))
!               ((setq font-spec (ps-mule-get-font-spec elt 'normal))
!                (ps-mule-init-external-library font-spec))))))
  
    ;; If ASCII font is also specified in ps-mule-font-info-database,
    ;; use it instead of what specified in ps-font-info-database.
--- 1464,1518 ----
         enable-multibyte-characters
         ;; Initialize `ps-mule-charset-list'.  If some characters aren't
         ;; printable, warn it.
!        (let ((header-footer-list (ps-header-footer-string))
!            unprintable-charsets)
!        (setq ps-mule-charset-list
!              (delq 'ascii (delq 'eight-bit-control
!                                 (delq 'eight-bit-graphic 
!                                       (find-charset-region from to))))
!              ps-mule-header-charsets
!              (delq 'ascii (delq 'eight-bit-control
!                                 (delq 'eight-bit-graphic 
!                                       (find-charset-string
!                                        (mapconcat
!                                         'identity header-footer-list ""))))))
!        (dolist (cs ps-mule-charset-list)
!          (or (ps-mule-printable-p cs)
!              (push cs unprintable-charsets)))
!        (dolist (cs ps-mule-header-charsets)
!          (or (ps-mule-printable-p cs)
!              (memq cs unprintable-charsets)
!              (push cs unprintable-charsets)))
!        (when unprintable-charsets
!          (ps-mule-show-warning unprintable-charsets from to
!                                header-footer-list)
!          (or
!           (y-or-n-p "Font for some characters not found, continue anyway? ")
!           (error "Printing cancelled")))
! 
!        (or ps-mule-composition-prologue-generated
!            (let ((use-composition (nth 2 (find-composition from to))))
!              (or use-composition
!                  (let (str)
!                    (while header-footer-list
!                      (setq str (car header-footer-list))
!                      (if (and (stringp str)
!                               (nth 2 (find-composition 0 (length str) str)))
!                          (setq use-composition t
!                                header-footer-list nil)
!                        (setq header-footer-list (cdr header-footer-list))))))
!              (when use-composition
!                (progn
!                  (ps-mule-prologue-generated)
!                  (ps-output-prologue ps-mule-composition-prologue)
!                  (setq ps-mule-composition-prologue-generated t)))))))
  
    (setq ps-mule-current-charset 'ascii)
  
    (if (or ps-mule-charset-list ps-mule-header-charsets)
!       (dolist (elt (append ps-mule-header-charsets ps-mule-charset-list))
        (ps-mule-prologue-generated)
!       (ps-mule-init-external-library (ps-mule-get-font-spec elt 'normal))))
  
    ;; If ASCII font is also specified in ps-mule-font-info-database,
    ;; use it instead of what specified in ps-font-info-database.
***************
*** 1496,1502 ****
    ;; If the header contains non-ASCII and non-Latin1 characters, prepare a 
font
    ;; and glyphs for the first occurrence of such characters.
    (if (and ps-mule-header-charsets
!          (not (eq (car ps-mule-header-charsets) 'latin-iso8859-1)))
        (let ((font-spec (ps-mule-get-font-spec (car ps-mule-header-charsets)
                                              'normal)))
        (if font-spec
--- 1533,1540 ----
    ;; If the header contains non-ASCII and non-Latin1 characters, prepare a 
font
    ;; and glyphs for the first occurrence of such characters.
    (if (and ps-mule-header-charsets
!          (not (eq (car ps-mule-header-charsets) 'latin-iso8859-1))
!          (= (charset-dimension (car ps-mule-header-charsets)) 1))
        (let ((font-spec (ps-mule-get-font-spec (car ps-mule-header-charsets)
                                              'normal)))
        (if font-spec




reply via email to

[Prev in Thread] Current Thread [Next in Thread]