From 74b7318fc223e5a64d20660522c01c03cf9a7022 Mon Sep 17 00:00:00 2001 From: Gregory Heytings Date: Wed, 3 Nov 2021 09:53:47 +0000 Subject: [PATCH] Make bidi reordering characters visible * lisp/progmodes/prog-mode.el (fontify-bidi-reordering-characters, make-bidi-reordering-characters-visible): New functions. (prog-mode): Use the new functions. --- lisp/progmodes/prog-mode.el | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el index db350a5f70..0005d3d4d7 100644 --- a/lisp/progmodes/prog-mode.el +++ b/lisp/progmodes/prog-mode.el @@ -289,6 +289,24 @@ turn-on-prettify-symbols-mode (local-variable-p 'prettify-symbols-alist)) (prettify-symbols-mode 1))) +(defun fontify-bidi-reordering-characters () + (font-lock-add-keywords nil '(("⁩\\|‬\\|⁨\\|⁧\\|⁦\\|‫\\|‪\\|‮\\|‭" . 'font-lock-warning-face)))) + +(defun make-bidi-reordering-characters-visible () + (setq buffer-display-table (or buffer-display-table + standard-display-table + (make-display-table))) + (aset buffer-display-table ?‪ [?→]) + (aset buffer-display-table ?‫ [?←]) + (aset buffer-display-table ?‭ [?→]) + (aset buffer-display-table ?‮ [?←]) + (aset buffer-display-table ?⁦ [?→]) + (aset buffer-display-table ?⁧ [?←]) + (aset buffer-display-table ?⁨ [?↓]) + (aset buffer-display-table ?‬ [?↑]) + (aset buffer-display-table ?⁩ [?↑]) + (add-hook 'font-lock-mode-hook #'fontify-bidi-reordering-characters)) + ;;;###autoload (define-globalized-minor-mode global-prettify-symbols-mode prettify-symbols-mode turn-on-prettify-symbols-mode) @@ -300,7 +318,8 @@ prog-mode (setq-local parse-sexp-ignore-comments t) (add-hook 'context-menu-functions 'prog-context-menu 10 t) ;; Any programming language is always written left to right. - (setq bidi-paragraph-direction 'left-to-right)) + (setq bidi-paragraph-direction 'left-to-right) + (make-bidi-reordering-characters-visible)) (provide 'prog-mode) -- 2.33.0