[Top][All Lists]
[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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/select.el,
Kenichi Handa <=