aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuchen Pei <hi@ypei.me>2022-09-29 10:43:50 +1000
committerYuchen Pei <hi@ypei.me>2022-09-29 10:43:50 +1000
commit19b43ada7e304221680df6e6fb53383d9a367d7c (patch)
treed073e1791d21bfc0cb9cfec7eb30ef3e7cd357ab
parentba93eaa07c02d1fe21c8b267f0e126ff1519a721 (diff)
cut off component in minibuffer if too long
-rw-r--r--hcel-results.el5
-rw-r--r--hcel-utils.el27
2 files changed, 20 insertions, 12 deletions
diff --git a/hcel-results.el b/hcel-results.el
index 58c6f31..275cab9 100644
--- a/hcel-results.el
+++ b/hcel-results.el
@@ -332,6 +332,7 @@ Start by choosing a package."
(defvar hcel-ids--minibuffer-saved-query nil)
(defvar hcel-ids--minibuffer-saved-results nil)
(defvar hcel-ids--minibuffer-selected nil)
+(defvar hcel-ids-minibuffer-component-max-len 80)
(defun hcel-ids--affixation-internal (scope items)
(let ((results
@@ -344,7 +345,9 @@ Start by choosing a package."
(format
" :: %s"
(hcel-render-components
- (alist-get 'components (alist-get 'idType info))))
+ (alist-get 'components (alist-get 'idType info))
+ nil
+ hcel-ids-minibuffer-component-max-len))
'face 'completions-annotations))
(prefix
(propertize
diff --git a/hcel-utils.el b/hcel-utils.el
index 3bd8841..18a8c07 100644
--- a/hcel-utils.el
+++ b/hcel-utils.el
@@ -111,20 +111,25 @@ Example of an idSrcSpan:
(unless (stringp divider) (setq divider " "))
(concat (alist-get 'name package) divider (alist-get 'version package)))
-(defun hcel-render-components (components &optional name)
+(defun hcel-render-components (components &optional name comp-max-len)
(when (or components name)
(concat (when name (replace-regexp-in-string "\n" " " name))
(when components
- (concat (when name " :: ")
- (replace-regexp-in-string
- "\n" " " (mapconcat
- (lambda (component)
- (propertize
- (or (alist-get 'name component)
- (alist-get 'contents component))
- 'internal-id (alist-get 'internalId component)))
- components
- "")))))))
+ (let ((rendered-comp
+ (concat (when name " :: ")
+ (substring
+ (replace-regexp-in-string
+ "\n" " " (mapconcat
+ (lambda (component)
+ (propertize
+ (or (alist-get 'name component)
+ (alist-get 'contents component))
+ 'internal-id (alist-get 'internalId component)))
+ components
+ ""))))))
+ (if (and comp-max-len (< comp-max-len (length rendered-comp)))
+ (concat (substring rendered-comp 0 comp-max-len) "...")
+ rendered-comp))))))
(defun hcel-render-id-type (id-type)
(concat