mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-11 16:08:13 +00:00
(ctext-pre-write-conversion): Handle the
case when FROM is a string, and when we are called from build_annotations_2.
This commit is contained in:
parent
4a81d892ea
commit
5dde3c716f
@ -1392,9 +1392,23 @@ encode each character in this charset. NOCTETS can be 0 (meaning the number
|
||||
of octets per character is variable), 1, 2, 3, or 4.")
|
||||
|
||||
(defun ctext-pre-write-conversion (from to)
|
||||
"Encode characters between FROM and TO as Compound Text w/Extended Segments."
|
||||
(buffer-disable-undo) ; minimize consing due to insertions and deletions
|
||||
(narrow-to-region from to)
|
||||
"Encode characters between FROM and TO as Compound Text w/Extended Segments.
|
||||
|
||||
If FROM is a string, or if the current buffer is not the one set up for us
|
||||
by run_pre_post_conversion_on_str, generate a new temp buffer, insert the
|
||||
text, and convert it in the temporary buffer. Otherwise, convert in-place."
|
||||
(cond ((and (string= (buffer-name) " *code-converting-work*")
|
||||
(not (stringp from)))
|
||||
; Minimize consing due to subsequent insertions and deletions.
|
||||
(buffer-disable-undo)
|
||||
(narrow-to-region from to))
|
||||
(t
|
||||
(let ((buf (current-buffer)))
|
||||
(set-buffer (generate-new-buffer " *temp"))
|
||||
(buffer-disable-undo)
|
||||
(if (stringp from)
|
||||
(insert from)
|
||||
(insert-buffer-substring buf from to)))))
|
||||
(encode-coding-region from to 'ctext-no-compositions)
|
||||
;; Replace ISO-2022 charset designations with extended segments, for
|
||||
;; those charsets that are not part of the official X registry.
|
||||
@ -1404,6 +1418,8 @@ of octets per character is variable), 1, 2, 3, or 4.")
|
||||
(case-fold-search nil)
|
||||
pt desig encode-info encoding chset noctets textlen)
|
||||
(set-buffer-multibyte nil)
|
||||
;; The regexp below finds the leading sequences for big5 and
|
||||
;; iso8859-1[03-6] charsets.
|
||||
(while (re-search-forward "\e\\(\$([01]\\|-[VY_bf]\\)" nil 'move)
|
||||
(setq desig (match-string 1)
|
||||
pt (point-marker)
|
||||
@ -1416,6 +1432,7 @@ of octets per character is variable), 1, 2, 3, or 4.")
|
||||
(cond
|
||||
((eq encoding t) ; only the leading sequence needs to be changed
|
||||
(setq textlen (+ (- newpt pt) (length chset) 1))
|
||||
;; Generate the ICCCM control sequence for an extended segment.
|
||||
(replace-match (format "\e%%/%d%c%c%s"
|
||||
noctets
|
||||
(+ (/ textlen 128) 128)
|
||||
@ -1437,6 +1454,7 @@ of octets per character is variable), 1, 2, 3, or 4.")
|
||||
chset))))
|
||||
(goto-char newpt))))
|
||||
(set-buffer-multibyte t)
|
||||
;; Must return nil, as build_annotations_2 expects that.
|
||||
nil)
|
||||
|
||||
;;; FILE I/O
|
||||
|
Loading…
Reference in New Issue
Block a user