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

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

[elpa] master 74bb138 144/167: Update ivy format functions.


From: Oleh Krehel
Subject: [elpa] master 74bb138 144/167: Update ivy format functions.
Date: Tue, 08 Dec 2015 10:50:36 +0000

branch: master
commit 74bb138e92042f039d1f418ba7829b92b593591b
Author: Stephen Whipple <address@hidden>
Commit: Oleh Krehel <address@hidden>

    Update ivy format functions.
    
    `ivy-format-function' now accessible via Customize system.
    
    `ivy-format-function-default' and `ivy-format-function-arrow'
    simplified.
    
    New format `ivy-format-function-line' added.
    
    `counsel-M-x' restores `ivy-format-function' before executing command.
    
    Fixes #306
---
 counsel.el |    3 ++-
 ivy.el     |   46 ++++++++++++++++++++++++++++------------------
 2 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/counsel.el b/counsel.el
index 020c917..5354d39 100644
--- a/counsel.el
+++ b/counsel.el
@@ -887,7 +887,8 @@ Optional INITIAL-INPUT is the initial input in the 
minibuffer."
               (lambda (cmd)
                 (when (featurep 'smex)
                   (smex-rank (intern cmd)))
-                (let ((prefix-arg current-prefix-arg))
+                (let ((prefix-arg current-prefix-arg)
+                      (ivy-format-function store))
                   (command-execute (intern cmd) 'record)))
               :sort sort
               :keymap counsel-describe-map
diff --git a/ivy.el b/ivy.el
index f83d0d0..c365d47 100644
--- a/ivy.el
+++ b/ivy.el
@@ -1894,9 +1894,13 @@ Prefix matches to NAME are put ahead of the list."
     (error
      cands)))
 
-(defvar ivy-format-function 'ivy-format-function-default
+(defcustom ivy-format-function 'ivy-format-function-default
   "Function to transform the list of candidates into a string.
-This string will be inserted into the minibuffer.")
+This string will be inserted into the minibuffer."
+  :type '(choice
+          (const :tag "Default" ivy-format-function-default)
+          (const :tag "Arrow prefix" ivy-format-function-arrow)
+          (const :tag "Full line" ivy-format-function-line)))
 
 (defun ivy--truncate-string (str width)
   "Truncate STR to WIDTH."
@@ -1907,28 +1911,36 @@ This string will be inserted into the minibuffer.")
 
 (defun ivy-format-function-default (cands)
   "Transform CANDS into a string for minibuffer."
-  (if (bound-and-true-p truncate-lines)
-      (mapconcat #'identity cands "\n")
-    (let ((ww (- (window-width)
-                 (if (and (boundp 'fringe-mode) (eq fringe-mode 0)) 1 0))))
-      (mapconcat
-       (if truncate-lines
-           (lambda (s)
-             (ivy--truncate-string s ww))
-         #'identity)
-       cands "\n"))))
+  (let ((i -1))
+    (mapconcat
+     (lambda (s)
+       (when (eq (cl-incf i) ivy--index)
+         (ivy--add-face s 'ivy-current-match))
+       s)
+     cands "\n")))
 
 (defun ivy-format-function-arrow (cands)
   "Transform CANDS into a string for minibuffer."
   (let ((i -1))
     (mapconcat
      (lambda (s)
-       (concat (if (eq (cl-incf i) ivy--index)
-                   "> "
-                 "  ")
-               s))
+       (let ((curr (eq (cl-incf i) ivy--index)))
+         (when curr
+           (ivy--add-face s 'ivy-current-match))
+         (concat (if curr "> " "  ") s)))
      cands "\n")))
 
+(defun ivy-format-function-line (cands)
+  "Transform CANDS into a string for minibuffer."
+  (let ((i -1))
+    (mapconcat
+     (lambda (s)
+       (let ((line (concat s "\n")))
+         (when (eq (cl-incf i) ivy--index)
+           (ivy--add-face line 'ivy-current-match))
+         line))
+     cands "")))
+
 (defface ivy-minibuffer-match-face-1
   '((((class color) (background light))
      :background "#d3d3d3")
@@ -2032,8 +2044,6 @@ CANDS is a list of strings."
       (setq cands (mapcar
                    #'ivy--format-minibuffer-line
                    cands))
-      (setf (nth index cands)
-            (ivy--add-face (nth index cands) 'ivy-current-match))
       (let* ((ivy--index index)
              (res (concat "\n" (funcall ivy-format-function cands))))
         (put-text-property 0 (length res) 'read-only nil res)



reply via email to

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