From 19b43ada7e304221680df6e6fb53383d9a367d7c Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 29 Sep 2022 10:43:50 +1000 Subject: cut off component in minibuffer if too long --- hcel-results.el | 5 ++++- 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 -- cgit v1.2.3