[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/breadcrumb 4dd49220fd 12/18: Fancy it up with some face
From: |
ELPA Syncer |
Subject: |
[elpa] externals/breadcrumb 4dd49220fd 12/18: Fancy it up with some faces |
Date: |
Tue, 5 Sep 2023 06:57:42 -0400 (EDT) |
branch: externals/breadcrumb
commit 4dd49220fdcdc047d57e9eb98d455572fb77f53c
Author: João Távora <joaotavora@gmail.com>
Commit: João Távora <joaotavora@gmail.com>
Fancy it up with some faces
* breadcrumb.el (bc--format-ipath-node): Rename from
bc--format-node.
(bc-face, bc-imenu-crumbs-face, bc-imenu-leaf-face)
(bc-project-crumbs-face, bc-project-base-face)
(bc-project-leaf-face): Add some faces.
(bc--summarize): Add docstring.
(breadcrumb-project-crumbs)
(breadcrumb-imenu-crumbs)
(bc--header-line): Use faces.
---
breadcrumb.el | 63 +++++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 51 insertions(+), 12 deletions(-)
diff --git a/breadcrumb.el b/breadcrumb.el
index 50176c4b4b..9b16080c0d 100644
--- a/breadcrumb.el
+++ b/breadcrumb.el
@@ -169,7 +169,7 @@ These structures don't have a `breadcrumb-region' property
on."
(let ((pulse-delay 0.05) (pulse-flag t))
(pulse-momentary-highlight-region (line-beginning-position)
(line-end-position))))))
-(defun bc--format-node (p)
+(defun bc--format-ipath-node (p)
(let ((window (selected-window)))
(propertize
p 'mouse-face 'header-line-highlight
@@ -255,18 +255,46 @@ These structures don't have a `breadcrumb-region'
property on."
(defcustom bc-imenu-crumb-separator " > "
"Separator for `breadcrumb-project-crumbs'." :type 'string)
+(defface bc-face '((t (:inherit shadow)))
+ "Base face for all breadcrumb things.")
+
+(defface bc-imenu-crumbs-face '((t (:inherit bc-face)))
+ "Face for imenu crumbs in the breadcrumb imenu path.")
+
+(defface bc-imenu-leaf-face '((t (:inherit (font-lock-function-name-face
+ bc-imenu-crumbs-face))))
+ "Face for imenu leaf crumbs in the breadcrumb imenu path.")
+
+(defface bc-project-crumbs-face '((t (:inherit bc-face)))
+ "Face for project crumbs in the breadcrumb project path.")
+
+(defface bc-project-base-face '((t (:inherit bc-project-crumbs-face)))
+ "Face for project base in the breadcrumb project path.")
+
+(defface bc-project-leaf-face '((t (:inherit (mode-line-buffer-id))))
+ "Face for the project leaf crumb in breadcrumb project path.")
+
;;;###autoload
(defun breadcrumb-imenu-crumbs ()
"Describe point inside the Imenu tree of current file."
(when-let ((alist (bc--ipath-alist)))
(when (cl-some #'identity alist)
(bc--summarize
- (cl-loop for p in (bc-ipath alist (point))
- collect (bc--format-node p))
+ (cl-loop for (p . more) on (bc-ipath alist (point))
+ for p2 = (propertize p 'face (if more
+ 'bc-imenu-crumbs-face
+ 'bc-imenu-leaf-face))
+ collect (bc--format-ipath-node p2))
bc-imenu-max-length
bc-imenu-crumb-separator))))
(defun bc--summarize (crumbs cutoff separator)
+ "Return a string that summarizes CRUMBS, a list of strings.
+\"Summarization\" consists of truncating some CRUMBS to 1
+character. Rightmost members of CRUMBS are summarized last.
+Members with a `breadcrumb-dont-shorten' are never truncated.
+Aim for a return string that is at most CUTOFF characters long.
+Join the crumbs with SEPARATOR."
(let ((rcrumbs
(cl-loop
for available = (- cutoff used)
@@ -287,23 +315,34 @@ These structures don't have a `breadcrumb-region'
property on."
(or bc--cached-project-crumbs
(setq bc--cached-project-crumbs
(bc--summarize
- (if-let ((p (project-current)))
- (cons (propertize (project-name p) 'bc-dont-shorten t)
- (split-string
- (file-relative-name (or (buffer-file-name)
- default-directory)
- (project-root p))
- "/"))
+ (if-let ((p (and buffer-file-name
+ (project-current))))
+ (cons (propertize (project-name p)
+ 'bc-dont-shorten t
+ 'face 'bc-project-base-face)
+ (cl-loop
+ for (s . more) on
+ (split-string
+ (file-relative-name (or (buffer-file-name)
+ default-directory)
+ (project-root p))
+ "/")
+ for s2 = (propertize s 'face
+ (if more 'bc-project-crumbs-face
+ 'bc-project-leaf-face)
+ 'bc-dont-shorten (null more))
+ collect s2))
(list (buffer-name)))
bc-project-max-length
- bc-project-crumb-separator))))
+ (propertize bc-project-crumb-separator
+ 'face 'bc-project-crumbs-face)))))
(defun bc--header-line ()
"Helper for `breadcrumb-headerline-mode'."
(let ((x (cl-remove-if
#'seq-empty-p (mapcar #'funcall
'(bc-project-crumbs bc-imenu-crumbs)))))
- (mapconcat #'identity x " : ")))
+ (mapconcat #'identity x (propertize " : " 'face 'bc-face))))
;;;###autoload
(define-minor-mode breadcrumb-local-mode
- [elpa] externals/breadcrumb 2369e5b609 03/18: * breadcrumb.el: Fix todos add another one, (continued)
- [elpa] externals/breadcrumb 2369e5b609 03/18: * breadcrumb.el: Fix todos add another one, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb df9e2c3678 10/18: Fix case when bc--ipath-alist results in something useless, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb 1cb229b87e 14/18: Clean up before ELPA submission, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb 9205ef62c8 15/18: Fix indentation in two places, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb 20bfa7407b 16/18: * breadcrumb.el (bc--format-ipath-node): Fix bug, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb a44bb5ced2 17/18: Compute length of breadcrumbs dynamically by default, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb e9358a641a 13/18: Work some more in the mode-line/header-line mouse interaction, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb 995e1638d2 18/18: * .elpaignore: Add a basic file (#15), ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb 64ae52c534 01/18: Initial commit, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb cda39e32f0 08/18: Use longhand symbol forms for autoloaded functions, ELPA Syncer, 2023/09/05
- [elpa] externals/breadcrumb 4dd49220fd 12/18: Fancy it up with some faces,
ELPA Syncer <=