help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: ncr (numeric character reference) to unicode


From: B. T. Raven
Subject: Re: ncr (numeric character reference) to unicode
Date: Wed, 15 Apr 2009 20:42:49 -0500
User-agent: Thunderbird 2.0.0.21 (Windows/20090302)

Stephen Berman wrote:
On Tue, 14 Apr 2009 11:42:09 -0500 "B. T. Raven" <nihil@nihilo.net> wrote:

Miles Bader wrote:
"B. T. Raven" <nihil@nihilo.net> writes:
Does any of you know whether nxhtml has the capability to convert
sequences like this:

&#1513;&#1473;&#1463;&#1500;&#1493;&#1465;&#1501;.
(shalom in Hebrew)
The following should work:

   (defun expand-html-encoded-chars (start end)
     (interactive "r")
     (save-excursion
       (goto-char start)
       (while (re-search-forward "&#\\([0-9]+\\);" end t)
         (replace-match           (char-to-string
           (decode-char 'ucs (string-to-number (match-string 1))) )
          t t))))

-Miles

Thanks, Eli and Miles. The conversion works fine (with uncomposed glyphs, that
is, points as separate characters, same as in the html codes). I referenced
the command in an alias:

(defalias 'xhc 'expand-html-encoded-chars)

and then tried to do the same with this function:

(defun reverse-string (beg end)
  (interactive "r")
  (setq str (buffer-substring beg end))
  (apply #'string (nreverse (string-to-list str))))

but it doesn't seem to work, although it doesn't produce errors in a traceback
buffer. What am I missing?

Thanks,

Ed

Does this do what you want?

(defun reverse-string (beg end)
  (interactive "r")
  (xhc beg end)
  (let* ((beg (region-beginning))
         (end (region-end))
         (str1 (buffer-substring beg end))
         (str2 (apply #'string (nreverse (string-to-list str1)))))
    (replace-string str1 str2 nil beg end)))

Steve Berman




That would probably do a little more than I want. Miles' expand html function is only needed if someone sends these ncr sequences in email. Btw, why are beg and end calculated in the function if they are passed to it? This almost does what I want:

(defun reverse-bufsubstring (beg end)
  (interactive "r")
  (let* (
         (str1 (buffer-substring beg end))
         (str2 (apply #'string (nreverse (string-to-list str1)))))
    (replace-string str1 str2 nil beg end)))


except that it converts

same
one
as
before

into this:

erofeb
sa
eno
emas

so now that has to be reversed line by line rather than character by character. Anyway, all of this is just a kludge until the gurus come up with a real bidi functionality.

Thanks again,

Ed


reply via email to

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