summaryrefslogtreecommitdiff
path: root/lisp/man.el
diff options
context:
space:
mode:
authorNoam Postavsky <npostavs@gmail.com>2019-05-04 14:47:29 -0400
committerNoam Postavsky <npostavs@gmail.com>2019-05-04 15:33:20 -0400
commit4fd9048e940d38364caf4abe9b209f9288c78544 (patch)
treea89d315f7671b1369c90bb3b7c503ca78193ea3f /lisp/man.el
parent37963ed4991823fd1ee5cd2c485f22ac988259e2 (diff)
downloademacs-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.el23
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.