emacs-diffs
[Top][All Lists]
Advanced

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

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


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/lisp/select.el
Date: Tue, 13 Aug 2002 20:57:59 -0400

Index: emacs/lisp/select.el
diff -c emacs/lisp/select.el:1.17 emacs/lisp/select.el:1.18
*** emacs/lisp/select.el:1.17   Wed Jun  5 13:14:16 2002
--- emacs/lisp/select.el        Tue Aug 13 20:57:55 2002
***************
*** 133,161 ****
  ;;; for TIMESTAMP, which is a special case.
  
  (defun xselect-convert-to-string (selection type value)
!   (cond ((stringp value)
!        ;; Return the type as well, so that xselect.c could honor
!        ;; requests whose type is STRING.
!        (cons type value))
!       ((overlayp value)
!        (save-excursion
!          (or (buffer-name (overlay-buffer value))
!              (error "selection is in a killed buffer"))
!          (set-buffer (overlay-buffer value))
!          (buffer-substring (overlay-start value)
!                            (overlay-end value))))
!       ((and (consp value)
!             (markerp (car value))
!             (markerp (cdr value)))
!        (or (eq (marker-buffer (car value)) (marker-buffer (cdr value)))
!            (signal 'error
!                    (list "markers must be in the same buffer"
!                          (car value) (cdr value))))
!        (save-excursion
!          (set-buffer (or (marker-buffer (car value))
!                          (error "selection is in a killed buffer")))
!          (buffer-substring (car value) (cdr value))))
!       (t nil)))
  
  (defun xselect-convert-to-length (selection type value)
    (let ((value
--- 133,216 ----
  ;;; for TIMESTAMP, which is a special case.
  
  (defun xselect-convert-to-string (selection type value)
!   (let (str coding)
!     ;; Get the actual string from VALUE.
!     (cond ((stringp value)
!          (setq str value))
! 
!         ((overlayp value)
!          (save-excursion
!            (or (buffer-name (overlay-buffer value))
!                (error "selection is in a killed buffer"))
!            (set-buffer (overlay-buffer value))
!            (setq str (buffer-substring (overlay-start value)
!                                        (overlay-end value)))))
!         ((and (consp value)
!               (markerp (car value))
!               (markerp (cdr value)))
!          (or (eq (marker-buffer (car value)) (marker-buffer (cdr value)))
!              (signal 'error
!                      (list "markers must be in the same buffer"
!                            (car value) (cdr value))))
!          (save-excursion
!            (set-buffer (or (marker-buffer (car value))
!                            (error "selection is in a killed buffer")))
!            (setq str (buffer-substring (car value) (cdr value))))))
! 
!     (when str
!       ;; If TYPE is nil, this is a local request, thus return STR as
!       ;; is.  Otherwise, encode STR.
!       (if (not type)
!         str
!       (setq coding (or next-selection-coding-system selection-coding-system))
!       (if coding
!           (setq coding (coding-system-base coding))
!         (setq coding 'raw-text))
!       ;; Suppress producing escape sequences for compositions.
!       (remove-text-properties 0 (length str) '(composition nil) str)
!       (cond
!        ((eq type 'TEXT)
!         (if (not (multibyte-string-p str))
!             ;; Don't have to encode unibyte string.
!             (setq type 'STRING)
!           ;; If STR contains only ASCII, Latin-1, and raw bytes,
!           ;; encode STR by iso-latin-1, and return it as type
!           ;; `STRING'.  Otherwise, encode STR by CODING.  In that
!           ;; case, the returing type depends on CODING.
!           (let ((charsets (find-charset-string str)))
!             (setq charsets
!                   (delq 'ascii
!                         (delq 'latin-iso8859-1
!                               (delq 'eight-bit-control
!                                     (delq 'eight-bit-graphic charsets)))))
!             (if charsets
!                 (setq str (encode-coding-string str coding)
!                       type (if (memq coding '(compound-text
!                                               compound-text-with-extensions))
!                                'COMPOUND_TEXT
!                              'STRING))
!               (setq type 'STRING
!                     str (encode-coding-string str 'iso-latin-1))))))
!             
!        ((eq type 'COMPOUND_TEXT)
!         (setq str (encode-coding-string str coding)))
! 
!        ((eq type 'STRING)
!         (if (memq coding '(compound-text
!                            compound-text-with-extensions))
!             (setq str (string-make-unibyte str))
!           (setq str (encode-coding-string str coding))))
! 
!        ((eq type 'UTF8_STRING)
!         (setq str (encode-coding-string str 'utf-8)))
! 
!        (t
!         (error "Unknow selection type: %S" type))
!        ))
! 
!       (setq next-selection-coding-system nil)
!       (cons type str))))
! 
  
  (defun xselect-convert-to-length (selection type value)
    (let ((value
***************
*** 304,309 ****
--- 359,365 ----
        '((TEXT . xselect-convert-to-string)
        (COMPOUND_TEXT . xselect-convert-to-string)
        (STRING . xselect-convert-to-string)
+       (UTF8_STRING . xselect-convert-to-string)
        (TARGETS . xselect-convert-to-targets)
        (LENGTH . xselect-convert-to-length)
        (DELETE . xselect-convert-to-delete)




reply via email to

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