emacs-diffs
[Top][All Lists]
Advanced

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

scratch/emoji e269cea: Make more columns for final list


From: Lars Ingebrigtsen
Subject: scratch/emoji e269cea: Make more columns for final list
Date: Tue, 26 Oct 2021 10:48:51 -0400 (EDT)

branch: scratch/emoji
commit e269cead54b65f13453ae369db061be1e3781980
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make more columns for final list
---
 lisp/play/emoji.el | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/lisp/play/emoji.el b/lisp/play/emoji.el
index efabccc..f4ac36a 100644
--- a/lisp/play/emoji.el
+++ b/lisp/play/emoji.el
@@ -33,7 +33,8 @@
 (defun emoji-insert ()
   "Choose and insert an emoji glyph."
   (interactive)
-  (unless emoji--labels
+  ;; Remove debugging.
+  (unless (and nil emoji--labels)
     (emoji--parse-labels)
     (emoji--define-transient))
   (funcall (intern "emoji-command-Emoji")))
@@ -115,8 +116,9 @@
     (setq alist (cons "Emoji" emoji--labels)))
   (let* ((mname (pop alist))
          (name (intern (format "emoji-command-%s" mname)))
+         (has-subs (consp (cadr alist)))
          (layout
-          (if (consp (cadr alist))
+          (if has-subs
               ;; Define sub-maps.
               (cl-loop for entry in (emoji--compute-prefix alist)
                        collect (list
@@ -134,17 +136,9 @@
                                      (lambda ()
                                        (interactive)
                                        (insert this-char)))))))
-         (half (/ (length layout) 2))
-         args)
-    (unless (zerop (mod (length layout) 2))
-      (setq half (1+ half)))
-    (if (nthcdr half layout)
-        (setq args (vector mname
-                           (apply #'vector
-                                  (seq-take layout half))
-                           (apply #'vector
-                                  (nthcdr half layout))))
-      (setq args (vector mname (apply #'vector layout))))
+         (args (apply #'vector mname
+                      (emoji--columnize layout
+                                        (if has-subs 2 8)))))
     ;; There's probably a better way to do this...
     (setf (symbol-function name)
           (lambda ()
@@ -162,6 +156,12 @@
                        suffixes)))
     name))
 
+(defun emoji--columnize (list columns)
+  (cl-loop with length = (ceiling (/ (float (length list)) columns))
+           for i upto length
+           for part on list by (lambda (l) (nthcdr length l))
+           collect (apply #'vector (seq-take part length))))
+
 (defun emoji--compute-prefix (alist)
   "Compute characters to use for entries in ALIST.
 We prefer the earliest unique letter."



reply via email to

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