А вот ещё псевдофича.
Хотим клавишу, которая в HTML-файл вставит entity reference «<». Естественно, эскейпим &, по правилам XML:
А вот хрен. < разворачивается в < разворачивается в <. Более того, < тоже разворачивается в <.
Обходим фичу, эскейпя l:
Всё работает.
Теперь хотим клавишу, которая вставит « ». Наученные горьким опытом, эскейпим n… эээ, стоп, \n развернётся в перевод строки. Ну ладно, тогда эскейпим что-нибудь ещё.
Code: Select all
<Expand Key="CtrlShiftSpace" To="&n\bsp;" />
Клавиша вставляет «&sp;». Ах да, \b — это же backspace. Как я мог на это попасться.
Code: Select all
<Expand Key="CtrlShiftSpace" To="&nb\sp;" />
Вставляет &nbp;. Ах да, \s — это начало блока. \p — это позиция курсора. Наконец, на \; обретаем искомое.
Code: Select all
<Expand Key="CtrlShiftSpace" To=" \;" />
Так это я всё к чему? Entities надо разворачивать не до опупения, а один раз. Патч прилагается.