quail: TeX input method: change UTF8 to tex and back: solution & problems

Stephen J. Turnbull stephen at xemacs.org
Mon Jan 7 19:50:06 EST 2008


Aidan Kehoe writes:

 > What you need to do is rewrite the code to use #'posix-search-forward, which
 > guarantees that it will return the longest match (that is, it will always
 > try to match "\\infty" if possible, and only then look for "\in".)

I don't think so: this code is almost surely trying each car in order.
Something like:

(progn
  (search-forward (regexp-opt (mapcar #'car replacement-alist)))
  (goto-char (match-begin 0))
  (when (looking-at target-string)
    (replace-match replacement-string)))

Note to Uwe: one problem you're facing here is that SGML entities have
a fairly reliable terminator character, the semicolon.  TeX does not,
so you might try replacing `target-string' in the logic above with
`(concat target-string "\\>")'.

 > You might also want to look into the #'regexp-opt function, which,
 > given a list of strings,

regex-opt won't work here, it doesn't know anything about internal
grouping, so there's no way to trigger the replacement of "\in" rather
than "\infty".  In fact, I doubt that Emacs regexp groups can
simultaneously express all the relevant string matches for
#r"\in\(t\|fty\)".



More information about the XEmacs-Beta mailing list