@@ -197,6 +197,26 @@ function."
197197
198198; ;; Special handling of ANSI sequences
199199
200+ (defalias 'jupyter--ansi-color-apply-on-region
201+ (if (version< emacs-version " 28.1" )
202+ (lambda (begin end )
203+ (cl-letf (((symbol-function #'delete-and-extract-region )
204+ (lambda (beg end )
205+ (add-text-properties beg end '(invisible t jupyter-invisible t ))
206+ (buffer-substring beg end))))
207+ (ansi-color-apply-on-region begin end)))
208+ (lambda (begin end )
209+ (ansi-color-apply-on-region begin end t )
210+ (dolist (ov (overlays-in begin end))
211+ (when (and (overlay-get ov 'invisible )
212+ (<= begin (overlay-start ov)
213+ (overlay-end ov) end))
214+ ; ; Assume invisible overlay added by
215+ ; ; `ansi-color-apply-on-region' .
216+ (add-text-properties (overlay-start ov) (overlay-end ov)
217+ '(invisible t jupyter-invisible t ))
218+ (delete-overlay ov))))))
219+
200220(defun jupyter-ansi-color-apply-on-region (begin end &optional face-prop )
201221 " `ansi-color-apply-on-region' with Jupyter specific modifications.
202222In particular, does not delete escape sequences between BEGIN and
@@ -212,16 +232,13 @@ a value of t. This is mainly for modes like `org-mode' which
212232strip invisible properties during fontification. In such cases,
213233the jupyter-invisible property can act as an alias to the
214234invisible property by adding it to `char-property-alias-alist' ."
215- (cl-letf (((symbol-function #'delete-region )
216- (lambda (beg end )
217- (add-text-properties beg end '(invisible t jupyter-invisible t ))))
218- (ansi-color-apply-face-function
219- (lambda (beg end face )
220- (when face
221- (setq face (list face))
222- (font-lock-prepend-text-property beg end 'face face)
223- (put-text-property beg end (or face-prop 'font-lock-face ) face)))))
224- (ansi-color-apply-on-region begin end)))
235+ (let ((ansi-color-apply-face-function
236+ (lambda (beg end face )
237+ (when face
238+ (setq face (list face))
239+ (font-lock-prepend-text-property beg end 'face face)
240+ (put-text-property beg end (or face-prop 'font-lock-face ) face)))))
241+ (jupyter--ansi-color-apply-on-region begin end)))
225242
226243; ;; `jupyter-insert' method
227244
0 commit comments