diff options
author | Noam Postavsky <npostavs@gmail.com> | 2019-05-04 14:47:29 -0400 |
---|---|---|
committer | Noam Postavsky <npostavs@gmail.com> | 2019-05-04 15:33:20 -0400 |
commit | 4fd9048e940d38364caf4abe9b209f9288c78544 (patch) | |
tree | a89d315f7671b1369c90bb3b7c503ca78193ea3f /lisp/man.el | |
parent | 37963ed4991823fd1ee5cd2c485f22ac988259e2 (diff) | |
download | emacs-4fd9048e940d38364caf4abe9b209f9288c78544.tar.gz |
Avoid slow overlay ansi coloring in eshell (Bug#29854)
* lisp/ansi-color.el (ansi-color-apply-on-region): Reset temporary
markers after finishing with them.
(ansi-color-apply-text-property-face): New function.
* lisp/eshell/esh-mode.el (eshell-handle-ansi-color):
* lisp/man.el (Man-fontify-manpage): Use it as the
`ansi-color-apply-face-function' while calling
`ansi-color-apply-on-region'. Use `font-lock-face' to propertize
instead of `face'.
Diffstat (limited to 'lisp/man.el')
-rw-r--r-- | lisp/man.el | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/lisp/man.el b/lisp/man.el index b1d0fd3d17c..d52ca2156d2 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -1206,10 +1206,7 @@ Same for the ANSI bold and normal escape sequences." (interactive) (goto-char (point-min)) ;; Fontify ANSI escapes. - (let ((ansi-color-apply-face-function - (lambda (beg end face) - (when face - (put-text-property beg end 'face face)))) + (let ((ansi-color-apply-face-function #'ansi-color-apply-text-property-face) (ansi-color-map Man-ansi-color-map)) (ansi-color-apply-on-region (point-min) (point-max))) ;; Other highlighting. @@ -1220,31 +1217,33 @@ Same for the ANSI bold and normal escape sequences." (goto-char (point-min)) (while (and (search-forward "__\b\b" nil t) (not (eobp))) (backward-delete-char 4) - (put-text-property (point) (1+ (point)) 'face 'Man-underline)) + (put-text-property (point) (1+ (point)) + 'font-lock-face 'Man-underline)) (goto-char (point-min)) (while (search-forward "\b\b__" nil t) (backward-delete-char 4) - (put-text-property (1- (point)) (point) 'face 'Man-underline)))) + (put-text-property (1- (point)) (point) + 'font-lock-face 'Man-underline)))) (goto-char (point-min)) (while (and (search-forward "_\b" nil t) (not (eobp))) (backward-delete-char 2) - (put-text-property (point) (1+ (point)) 'face 'Man-underline)) + (put-text-property (point) (1+ (point)) 'font-lock-face 'Man-underline)) (goto-char (point-min)) (while (search-forward "\b_" nil t) (backward-delete-char 2) - (put-text-property (1- (point)) (point) 'face 'Man-underline)) + (put-text-property (1- (point)) (point) 'font-lock-face 'Man-underline)) (goto-char (point-min)) (while (re-search-forward "\\(.\\)\\(\b+\\1\\)+" nil t) (replace-match "\\1") - (put-text-property (1- (point)) (point) 'face 'Man-overstrike)) + (put-text-property (1- (point)) (point) 'font-lock-face 'Man-overstrike)) (goto-char (point-min)) (while (re-search-forward "o\b\\+\\|\\+\bo" nil t) (replace-match "o") - (put-text-property (1- (point)) (point) 'face 'bold)) + (put-text-property (1- (point)) (point) 'font-lock-face 'bold)) (goto-char (point-min)) (while (re-search-forward "[-|]\\(\b[-|]\\)+" nil t) (replace-match "+") - (put-text-property (1- (point)) (point) 'face 'bold)) + (put-text-property (1- (point)) (point) 'font-lock-face 'bold)) ;; When the header is longer than the manpage name, groff tries to ;; condense it to a shorter line interspersed with ^H. Remove ^H with ;; their preceding chars (but don't put Man-overstrike). (Bug#5566) @@ -1258,7 +1257,7 @@ Same for the ANSI bold and normal escape sequences." (while (re-search-forward Man-heading-regexp nil t) (put-text-property (match-beginning 0) (match-end 0) - 'face 'Man-overstrike)))) + 'font-lock-face 'Man-overstrike)))) (defun Man-highlight-references (&optional xref-man-type) "Highlight the references on mouse-over. |