NAME

bidi - Make urxvt present Bidi text correctly

DESCRIPTION

This extension filters the text displayed by Urxvt, so that Bi-directional text (e.g., Hebrew or Arabic mixed with English) is displayed correctly. It does so using the Text::Bidi module (which should be installed).

The extension emulates a cursor via rendition. This means that when typing, there will be two cursors, the original one whose location corresponds to the current location within the logical string (so, mostly useless), and a fake one which corresponds to the current insertion point.

To enable the extension, add bidi to the Urxvt.perl-ext-common resource. See urxvt(1) and urxvtperl(1) for other options and more details.

The extension recognises the following resources:

bidi.FieldSep

This should be a string on which each line is split before applying the Bidi algorithm. This permits creating tables, where each cell is treated separately, e.g., in the index of an email client. Note that this is a string, not a regular expression. The default is \x{2502}.

bidi.LRE

A regular expression. The plugin insert an explicit left-right mark where it matches.

bidi.PDF

A regular expression. The plugin insert a PDF mark (end of LRE) where it matches.

bidi.par

Boolean, if true work in paragraph mode: the paragraph direction is not reset on each line, but only on lines that start or end a paragraph

bidi.ParReset

A regular expression. A line matching this will start a new paragraph.

bidi.ParResetAfter

Similar to bidi.ParReset, but the paragraph starts after the matching line.

For example, I use urxvt with this plugin to edit LaTeX documents in Hebrew. I have the following resources defined:

URxvt.bidi.LRE: \\\\[([]
URxvt.bidi.PDF: \\\\[)\\]]
urxvt-vimh.bidi.par: true
urxvt-vimh.cursorUnderline: true
urxvt-vimh.bidi.ParReset: ^\\s*$|^\\\\begin|^\\\\\\[
urxvt-vimh.bidi.ParResetAfter: ^\\\\end|\\\\\\]$

This causes inline equations (delimited by \( and \)) be displayed correctly, and equation environments be considered a paragraph (so that it is displayed on the left).