From: "Peck, Jeff" <jeff.peck@intel.com>
Subject: translate-region occasionally misses chars?
Date: Thu, 2 May 2002 22:51:11 -0400 [thread overview]
Message-ID: <59F55CE047A6D51196360002A534A4AC0296C6D0@pysmsx102.py.intel.com> (raw)
Running ntemacs 20.7 on Win2K, and with 21.2 the problem continues.
Using translate-region, occasionally and intermittantly
a character will *not* be translated.
Attached is a function that demonstrates the problem.
Starting from some buffer (I used Help-apropos "file" for my test)
The routine copies buf1 to another buffer (buf2),
and then applies translate-region to that buffer.
The particular translation swaps each printing char with
another, Z<=>E, Y<=>F, etc. so applying it twice should return
the original buffer.
But occasionally, as demonstrated by the output below,
a single character will fail to be translated.
[can't tell if it fails on pass1 or pass2, but it doesn't matter]
Of course, it may not be translate-region's fault,
I have other experience, not so reproducible, where a char
in a file just appears to read in wrong! [that is, the buffer
shows --nomodification-- but it there is a character that
does not agree with the file].
If anyone knows what is happening, my eternal thanks.
In the meantime, my use of translate-region is wrapped
in a loop that compares the before to the double application
and keeps trying until they are the same... bletch.
It fails on both my Win2k machines, I don't a have a unix/linux to test.
If someone can confirm this on other OS, that would be a comfort.
It is intermittant, to you may need to try it a couple times.
Sometimes it fails immediately and frequently, other times it takes longer.
I have not found a correlation with OS activity, paging, filesystem or
whatever.
;;; this routine applies translate-region and logs the errors to *Messages*
;;; print flip-string and flop-string for a convenient translation table
;;; to see that the erroneous chars really are 'missed translations' and
;;; not some random bit loss. (flop-string has no other purpose)
(defun test-flip (n &optional i)
(message "flip %d chars, %d times" (- (point-max)(point-min)) n)
(sit-for 1)
(setq i n)
(let ((flip-string ; reverse chars and nums:
(do ((str "") (i 0 (1+ i))) ((> i 255) str)
(let ((chr (char-to-string
(if (or (<= i 32) (>= i 127)) i (- 159 i)))))
(setq str (concat str chr)))))
(flop-string
(do ((str "") (i 0 (1+ i))) ((> i 255) str)
(let ((chr (char-to-string
(if (or (<= i 32) (>= i 127)) i i))))
(setq str (concat str chr)))))
(buf1 (current-buffer))
(buf2 (get-buffer-create "*flip*")))
(message "flip-string is %s" (substring flip-string 32 127))
(message "flop-string is %s" (substring flop-string 32 127))
;; copy buf1 to buf2
(set-buffer buf2)
(erase-buffer)
(insert-buffer buf1)
(while (plusp n)
(progn
(setq n (- n 1))
(translate-region (point-min) (point-max) flip-string)
(translate-region (point-min) (point-max) flip-string)
(let ((comp (abs (compare-buffer-substrings buf1 4 (- (point-max) 4)
buf2 4 (- (point-max)
4)))))
(if (not (zerop comp))
(let ((str1 (save-excursion
(set-buffer buf1)
(buffer-substring comp (+ comp 7))))
(str2 (buffer-substring comp (+ comp 7))))
(message "%d. error at %d: [%s] [%s]" (- i n) comp str1
str2)
(sit-for 1)
(erase-buffer)
(insert-buffer buf1)
)))))))
Here is output from one run against *Apropos*
flip 12089 chars, 50 times
flip-string is ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE
DCBA@?>=<;:9876543210/.-,+*)('&%$#"!
flop-string is !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Mark set
43. error at 1168: [oint.
c] [oin+.
c]
44. error at 144: [tation.] [tat6on.]
45. error at 579: [-x appe] [-x >ppe]
46. error at 1623: [ one.
c] [ on:.
c]
47. error at 2072: [ subdir] [ su=dir]
48. error at 2301: [ FILE-B] [ FISE-B]
49. error at 216: [me RET
] [me MET
]
50. error at 372: [additio] [add6tio]
next reply other threads:[~2002-05-03 2:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-03 2:51 Peck, Jeff [this message]
2002-05-04 3:36 ` translate-region occasionally misses chars? Richard Stallman
-- strict thread matches above, loose matches on Subject: below --
2002-05-04 3:58 Peck, Jeff
2002-05-05 5:34 ` Richard Stallman
2002-06-07 16:33 Peck, Jeff
2002-06-15 14:13 ` Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=59F55CE047A6D51196360002A534A4AC0296C6D0@pysmsx102.py.intel.com \
--to=jeff.peck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.