branch: externals/dape
commit 5499b7d3d175fb86b1371d4f2c2a5c832cce5157
Author: Daniel Pettersson <[email protected]>
Commit: Daniel Pettersson <[email protected]>
Add fringe breakpoint icon
When fringe mode is enabled and not in terminal prefer fringe
bitmap instead
---
dape.el | 38 ++++++++++++++++++++++++--------------
1 file changed, 24 insertions(+), 14 deletions(-)
diff --git a/dape.el b/dape.el
index c876c7ce3a..2415a7147b 100644
--- a/dape.el
+++ b/dape.el
@@ -384,7 +384,7 @@ The hook is run with one argument, the compilation buffer."
"Face used to display conditional breakpoints.")
(defface dape-breakpoint-face
- '((t :inherit (bold default)))
+ '((t :inherit (font-lock-keyword-face)))
"Face used to display breakpoint overlays.")
(defface dape-stack-trace
@@ -1861,18 +1861,26 @@ Removes itself on execution."
(when-let ((window (get-buffer-window buffer)))
(set-window-buffer window buffer))))))
-(defun dape--overlay-margin (overlay string)
- "Insert STRING into margin by OVERLAY with FACE."
+(defun dape--overlay-icon (overlay string bitmap face)
+ "Put STRING or BITMAP on OVERLAY with FACE."
(when-let ((buffer (overlay-buffer overlay)))
- (with-current-buffer buffer
- (unless dape--original-margin
- (setq-local dape--original-margin left-margin-width)
- (setq left-margin-width 2)
- (when-let ((window (get-buffer-window)))
- (set-window-buffer window buffer))))
- (overlay-put overlay 'before-string
- (propertize " "
- 'display `((margin left-margin) ,string)))))
+ (let (before-string)
+ (cond
+ ((and (not (eql fringe-mode 0)) (window-system))
+ (setq before-string
+ (propertize " " 'display
+ `(left-fringe ,bitmap ,face))))
+ (t
+ (with-current-buffer buffer
+ (unless dape--original-margin
+ (setq-local dape--original-margin left-margin-width)
+ (setq left-margin-width 2)
+ (when-let ((window (get-buffer-window)))
+ (set-window-buffer window buffer))))
+ (setq before-string
+ (propertize " " 'display `((margin left-margin)
+ ,(propertize string 'face face))))))
+ (overlay-put overlay 'before-string before-string))))
(defun dape--breakpoint-freeze (overlay _after _begin _end &optional _len)
"Make sure that Dape OVERLAY region covers line."
@@ -1926,8 +1934,10 @@ If EXPRESSION place conditional breakpoint."
(format "Break: %s" expression)
'face 'dape-expression-face))))
(t
- (dape--overlay-margin breakpoint
- (propertize "B" 'face 'dape-breakpoint-face))))
+ (dape--overlay-icon breakpoint
+ "B"
+ 'breakpoint
+ 'dape-breakpoint-face)))
(overlay-put breakpoint 'modification-hooks '(dape--breakpoint-freeze))
(push breakpoint dape--breakpoints))
(dape--update-breakpoints-in-buffer (current-buffer))