emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/helm 5344c1f093 1/2: Show shortdoc when completions-detail


From: ELPA Syncer
Subject: [nongnu] elpa/helm 5344c1f093 1/2: Show shortdoc when completions-detailed is non nil
Date: Wed, 15 Jun 2022 16:02:58 -0400 (EDT)

branch: elpa/helm
commit 5344c1f093f39d6bf020633407b8241592bed5e4
Author: Thierry Volpiatto <thievol@posteo.net>
Commit: Thierry Volpiatto <thievol@posteo.net>

    Show shortdoc when completions-detailed is non nil
    
    This is provided only when helm-completion-style == emacs.
---
 helm-mode.el | 89 ++++++++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 62 insertions(+), 27 deletions(-)

diff --git a/helm-mode.el b/helm-mode.el
index d685aa2cfb..6f5bb0e834 100644
--- a/helm-mode.el
+++ b/helm-mode.el
@@ -37,6 +37,7 @@
 (declare-function helm-apropos-init "helm-elisp")
 (declare-function helm-lisp-completion-persistent-action "helm-elisp")
 (declare-function helm-lisp-completion-persistent-help "helm-elisp")
+(declare-function help--symbol-class "help-fns.el")
 
 (defgroup helm-mode nil
   "Enable helm completion."
@@ -991,6 +992,8 @@ This handler uses dynamic matching which allows honouring 
`completion-styles'."
                        '(metadata)))
          (afun (or (plist-get completion-extra-properties :annotation-function)
                    (completion-metadata-get metadata 'annotation-function)))
+         (afix (or (plist-get completion-extra-properties :affixation-function)
+                   (completion-metadata-get metadata 'affixation-function)))
          (file-comp-p (eq (completion-metadata-get metadata 'category) 'file))
          (compfn (lambda (str _predicate _action)
                    (let* ((completion-ignore-case (helm-set-case-fold-search))
@@ -1034,10 +1037,15 @@ This handler uses dynamic matching which allows 
honouring `completion-styles'."
                                   (memq helm-completion-style '(helm 
helm-fuzzy))
                                   (list default))
                              (helm-completion-in-region--initial-filter
-                              (if (and sort-fn (> (length str) 0))
-                                  (funcall sort-fn all)
-                                all)
-                              afun file-comp-p)))))
+                              (pcase-let ((lst (if (and sort-fn (> (length 
str) 0))
+                                                   (funcall sort-fn all)
+                                                 all)))
+                                (if (and default afix)
+                                    (prog1 (append (list default)
+                                                   (delete default lst))
+                                      (setq default nil))
+                                  lst))
+                              afun afix file-comp-p)))))
          (data (if (memq helm-completion-style '(helm helm-fuzzy))
                    (funcall compfn (or input "") nil nil)
                  compfn))
@@ -1060,7 +1068,7 @@ This handler uses dynamic matching which allows honouring 
`completion-styles'."
          :reverse-history helm-mode-reverse-history
          ;; In helm h-c-styles default is passed directly in
          ;; candidates.
-         :default (and (eq helm-completion-style 'emacs) default)
+         :default (and (eq helm-completion-style 'emacs) (null afix) default)
          :fc-transformer
          ;; Ensure sort fn is at the end.
          (append '(helm-cr-default-transformer)
@@ -1664,32 +1672,55 @@ The `helm-find-files' history `helm-ff-history' is used 
here."
       (propertize str 'read-only t 'face 'helm-mode-prefix 'rear-nonsticky t)
     str))
 
-(defun helm-completion-in-region--initial-filter (comps afun file-comp-p)
-  "Add annotations at end of candidates and filter out dot files."
+(defun helm--symbol-completion-table-affixation (completions)
+  "Same as `help--symbol-completion-table-affixation' but for helm.
+
+Return a list of cons cells of the form (disp . real)."
+  (mapcar (lambda (c)
+            (let* ((s   (intern c))
+                   (doc (ignore-errors
+                          (helm-get-first-line-documentation s))))
+              (cons (concat (propertize
+                             (format "%-4s" (help--symbol-class s))
+                             'face 'completions-annotations)
+                            c
+                            (if doc
+                                (propertize (format " -- %s" doc)
+                                            'face 'completions-annotations)
+                              ""))
+                    c)))
+          completions))
+
+(defun helm-completion-in-region--initial-filter (comps afun afix file-comp-p)
+  "Compute COMPS with function AFUN or AFIX unless FILE-COMP-P non nil.
+
+If both AFUN and AFIX are provided only AFIX is used.
+When FILE-COMP-P is provided only filter out dot files."
   (if file-comp-p
       ;; Filter out dot files in file completion.
       (cl-loop for f in comps unless
                (string-match "\\`\\.\\{1,2\\}/\\'" f)
                collect f)
-    (if afun
-        ;; Add annotation at end of
-        ;; candidate if needed, e.g. foo<f>, this happen when
-        ;; completing against a quoted symbol.
-        (mapcar (lambda (s)
-                  (let ((ann (funcall afun s)))
-                    (if ann
-                        (cons
-                         (concat
-                          s
-                          (propertize
-                           " " 'display
-                           (propertize
-                            ann
-                            'face 'completions-annotations)))
-                         s)
-                      s)))
-                comps)
-      comps)))
+    (cond (afix (helm--symbol-completion-table-affixation comps))
+          (afun
+           ;; Add annotation at end of
+           ;; candidate if needed, e.g. foo<f>, this happen when
+           ;; completing against a quoted symbol.
+           (mapcar (lambda (s)
+                     (let ((ann (funcall afun s)))
+                       (if ann
+                           (cons
+                            (concat
+                             s
+                             (propertize
+                              " " 'display
+                              (propertize
+                               ann
+                               'face 'completions-annotations)))
+                            s)
+                         s)))
+                   comps))
+          (t comps))))
 
 ;; Helm multi matching style
 
@@ -1917,6 +1948,10 @@ Can be used for `completion-in-region-function' by 
advicing it with an
                  ;; See Bug#407.
                  (afun (or (plist-get completion-extra-properties 
:annotation-function)
                            (completion-metadata-get metadata 
'annotation-function)))
+                 ;; Not sure if affixations are provided in
+                 ;; completion-in-region, try anyway never know.
+                 (afix (or (plist-get completion-extra-properties 
:affixation-function)
+                           (completion-metadata-get metadata 
'affixation-function)))
                  (init-space-suffix (unless (or (memq helm-completion-style 
'(helm-fuzzy emacs))
                                                 (string-suffix-p " " input)
                                                 (string= input ""))
@@ -1979,7 +2014,7 @@ Can be used for `completion-in-region-function' by 
advicing it with an
                               (if (and sort-fn (> (length str) 0))
                                   (funcall sort-fn all)
                                 all)
-                              afun file-comp-p))))
+                              afun afix file-comp-p))))
                  (data (if (memq helm-completion-style '(helm helm-fuzzy))
                            (funcall compfn input nil nil)
                          compfn))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]