From 7f83e7e5367cc11071a628a6ff7ba0c050a80c6d Mon Sep 17 00:00:00 2001
From: Eli Zaretskii <eliz@gnu.org>
Date: Sun, 26 Jun 2016 19:40:12 +0300
Subject: [PATCH] Fix slow redisplay in term-mode

* lisp/term.el (term-mode): Move the setting of
bidi-paragraph-direction from 'ansi-term' to here, since term-mode
is also affected.  Do not merge to master, since there the problem
is solved in bidi.c by changing the regexps that delimit a
paragraph.  (Bug#23801)
---
 lisp/term.el | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/lisp/term.el b/lisp/term.el
index 7e44c57228e..562d9b0487c 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1098,6 +1098,11 @@ Entry to this mode runs the hooks on `term-mode-hook'."
                     (term-reset-size (cdr size) (car size)))
                   size))
 
+  ;; Without the below setting, term-mode and ansi-term behave
+  ;; sluggishly when the buffer includes a lot of whitespace
+  ;; characters.
+  (setq bidi-paragraph-direction 'left-to-right)
+
   (easy-menu-add term-terminal-menu)
   (easy-menu-add term-signals-menu)
   (or term-input-ring
@@ -4138,17 +4143,7 @@ the process.  Any more args are arguments to PROGRAM."
     ;; .emacs ...
     (term-set-escape-char ?\C-x))
 
-  (switch-to-buffer term-ansi-buffer-name)
-  ;; For some reason, without the below setting, ansi-term behaves
-  ;; sluggishly, not clear why, since the buffer is typically very
-  ;; small.
-  ;;
-  ;; There's a larger problem here with supporting bidirectional text:
-  ;; the application that writes to the terminal could have its own
-  ;; ideas about displaying bidirectional text, and might not want us
-  ;; reordering the text or deciding on base paragraph direction.  One
-  ;; such application is Emacs in TTY mode...  FIXME.
-  (setq bidi-paragraph-direction 'left-to-right))
+  (switch-to-buffer term-ansi-buffer-name))
 
 
 ;;; Serial terminals
-- 
2.39.5