diff options
author | Yuchen Pei <hi@ypei.me> | 2022-09-29 10:43:50 +1000 |
---|---|---|
committer | Yuchen Pei <hi@ypei.me> | 2022-09-29 10:43:50 +1000 |
commit | 19b43ada7e304221680df6e6fb53383d9a367d7c (patch) | |
tree | d073e1791d21bfc0cb9cfec7eb30ef3e7cd357ab | |
parent | ba93eaa07c02d1fe21c8b267f0e126ff1519a721 (diff) |
cut off component in minibuffer if too long
-rw-r--r-- | hcel-results.el | 5 | ||||
-rw-r--r-- | hcel-utils.el | 27 |
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 |