Как мне сделать так, чтобы emacs отображал математически комбинированные символы в режиме font-lock?
Я пытаюсь заставить emacs правильно отображать математически комбинированные символы, такие как диарез, перемычка и т. Д., В режиме font-lock. Цель состоит в том, чтобы иметь возможность написать что-то математическое, например x_dot, и отобразить его как "ẋ" или x_bar как "x̄".
Это то, что я имею до сих пор, и это в основном работает.
(font-lock-add-keywords
nil
`(("\\<\\(\\w\\)\\(_dot\\)\\>"
(0 (progn (compose-region (match-beginning 1) (match-end 2)
(concatenate 'string (match-string 1) " ̇" )) nil)))))
НО: я вижу визуального артефакта персонажа перед сочиненным персонажем. Проверьте это, написав "x_dot" или что-то подобное в буфере * scratch * после выполнения вышеупомянутого.
Этот артефакт приходит и уходит как призрак. Такое поведение не возникает при составлении обычных символов, таких как "o" и "-", как в следующем примере.
(font-lock-add-keywords
nil
`(("\\<\\(\\w\\)\\(_dash\\)\\>"
(0 (progn (compose-region (match-beginning 1) (match-end 2)
(concatenate 'string (match-string 1) "-" )) nil)))))
А затем набрав где-нибудь "x_dash".
Что здесь происходит?
1 ответ
Как бы то ни было, ваш первый пример прекрасно работает без артефактов в моем ультрасовременном Emacs на OS X. Возможно, вы видите причуду рендеринга, специфичную для пользовательского интерфейса emacs вашей платформы и / или библиотеки шрифтов. Если вы опубликуете больше информации о Emacs, который вы используете, люди, более опытные, чем я, могут подтвердить эту проблему.