mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-17 11:20:39 -08:00
Fix face issues in show-paren context overlay (bug#59527)
* lisp/paren.el (show-paren--show-context-in-overlay): Use show-paren-priority as overlay priority (fixes problem 2 of bug#59527). * lisp/simple.el (blink-paren-open-paren-line-string): Ensure the context lines are font-locked before taking the buffer-substring (fixes problem 1 of bug#59527).
This commit is contained in:
parent
8252211833
commit
005efce764
2 changed files with 37 additions and 27 deletions
|
|
@ -410,6 +410,10 @@ It is the default value of `show-paren-data-function'."
|
||||||
(line-end-position))))
|
(line-end-position))))
|
||||||
(setq show-paren--context-overlay (make-overlay beg end)))
|
(setq show-paren--context-overlay (make-overlay beg end)))
|
||||||
(overlay-put show-paren--context-overlay 'display text)
|
(overlay-put show-paren--context-overlay 'display text)
|
||||||
|
;; Use the (default very high) `show-paren-priority' ensuring that
|
||||||
|
;; not other overlays shine through (bug#59527).
|
||||||
|
(overlay-put show-paren--context-overlay 'priority
|
||||||
|
show-paren-priority)
|
||||||
(overlay-put show-paren--context-overlay
|
(overlay-put show-paren--context-overlay
|
||||||
'face `(:box
|
'face `(:box
|
||||||
( :line-width (1 . -1)
|
( :line-width (1 . -1)
|
||||||
|
|
|
||||||
|
|
@ -9184,33 +9184,39 @@ The function should return non-nil if the two tokens do not match.")
|
||||||
"Return the line string that contains the openparen at POS."
|
"Return the line string that contains the openparen at POS."
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char pos)
|
(goto-char pos)
|
||||||
|
;; Capture the regions in terms of (beg . end) conses whose
|
||||||
|
;; buffer-substrings we want to show as a context string. Ensure
|
||||||
|
;; they are font-locked (bug#59527).
|
||||||
|
(let (regions)
|
||||||
;; Show what precedes the open in its line, if anything.
|
;; Show what precedes the open in its line, if anything.
|
||||||
(cond
|
(cond
|
||||||
((save-excursion (skip-chars-backward " \t") (not (bolp)))
|
((save-excursion (skip-chars-backward " \t") (not (bolp)))
|
||||||
(buffer-substring (line-beginning-position)
|
(setq regions (list (cons (line-beginning-position)
|
||||||
(1+ pos)))
|
(1+ pos)))))
|
||||||
;; Show what follows the open in its line, if anything.
|
;; Show what follows the open in its line, if anything.
|
||||||
((save-excursion
|
((save-excursion
|
||||||
(forward-char 1)
|
(forward-char 1)
|
||||||
(skip-chars-forward " \t")
|
(skip-chars-forward " \t")
|
||||||
(not (eolp)))
|
(not (eolp)))
|
||||||
(buffer-substring pos
|
(setq regions (list (cons pos (line-end-position)))))
|
||||||
(line-end-position)))
|
|
||||||
;; Otherwise show the previous nonblank line,
|
;; Otherwise show the previous nonblank line,
|
||||||
;; if there is one.
|
;; if there is one.
|
||||||
((save-excursion (skip-chars-backward "\n \t") (not (bobp)))
|
((save-excursion (skip-chars-backward "\n \t") (not (bobp)))
|
||||||
(concat
|
(setq regions (list (cons (progn
|
||||||
(buffer-substring (progn
|
|
||||||
(skip-chars-backward "\n \t")
|
(skip-chars-backward "\n \t")
|
||||||
(line-beginning-position))
|
(line-beginning-position))
|
||||||
(progn (end-of-line)
|
(progn (end-of-line)
|
||||||
(skip-chars-backward " \t")
|
(skip-chars-backward " \t")
|
||||||
(point)))
|
(point)))
|
||||||
;; Replace the newline and other whitespace with `...'.
|
(cons pos (1+ pos)))))
|
||||||
"..."
|
|
||||||
(buffer-substring pos (1+ pos))))
|
|
||||||
;; There is nothing to show except the char itself.
|
;; There is nothing to show except the char itself.
|
||||||
(t (buffer-substring pos (1+ pos))))))
|
(t (setq regions (list (cons pos (1+ pos))))))
|
||||||
|
;; Ensure we've font-locked the context region.
|
||||||
|
(font-lock-ensure (caar regions) (cdar (last regions)))
|
||||||
|
(mapconcat (lambda (region)
|
||||||
|
(buffer-substring (car region) (cdr region)))
|
||||||
|
regions
|
||||||
|
"..."))))
|
||||||
|
|
||||||
(defvar blink-paren-function 'blink-matching-open
|
(defvar blink-paren-function 'blink-matching-open
|
||||||
"Function called, if non-nil, whenever a close parenthesis is inserted.
|
"Function called, if non-nil, whenever a close parenthesis is inserted.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue