Function: squeeze-bidi-context-1
squeeze-bidi-context-1 is a byte-compiled function defined in
simple.el.gz.
Signature
(squeeze-bidi-context-1 FROM TO CATEGORY REPLACEMENT)
Documentation
A subroutine of squeeze-bidi-context.
FROM and TO should be markers, CATEGORY and REPLACEMENT should be strings.
Source Code
;; Defined in /usr/src/emacs/lisp/simple.el.gz
(defun squeeze-bidi-context-1 (from to category replacement)
"A subroutine of `squeeze-bidi-context'.
FROM and TO should be markers, CATEGORY and REPLACEMENT should be strings."
(let ((pt (copy-marker from))
(limit (copy-marker to))
(old-pt 0)
lim1)
(setq lim1 limit)
(goto-char pt)
(while (< pt limit)
(if (> pt old-pt)
(move-marker lim1
(save-excursion
;; L and R categories include embedding and
;; override controls, but we don't want to
;; replace them, because that might change
;; the visual order. Likewise with PDF and
;; isolate controls.
(+ pt (skip-chars-forward
bidi-directional-non-controls-chars
limit)))))
;; Replace any run of non-RTL characters by a single LRM.
(if (null (re-search-forward category lim1 t))
;; No more characters of CATEGORY, we are done.
(setq pt limit)
(replace-match replacement nil t)
(move-marker pt (point)))
(setq old-pt pt)
;; Skip directional controls, if any.
(move-marker
pt (+ pt (skip-chars-forward bidi-directional-controls-chars limit))))))