Function: filesets-wrap-submenu
filesets-wrap-submenu is a byte-compiled function defined in
filesets.el.gz.
Signature
(filesets-wrap-submenu SUBMENU-BODY)
Documentation
Split long submenus.
Source Code
;; Defined in /usr/src/emacs/lisp/filesets.el.gz
; (vconcat `[,name] (subseq submenu 1)))))
(defun filesets-wrap-submenu (submenu-body)
"Split long submenus."
(let ((bl (length submenu-body)))
(if (or (= filesets-max-submenu-length 0)
(<= bl filesets-max-submenu-length))
submenu-body
(let* ((result nil)
(factor (ceiling (/ (float bl)
filesets-max-submenu-length))))
(cl-do ((data submenu-body (cdr data))
(n 1 (+ n 1))
(count 0 (+ count factor)))
((or (> count bl)
(null data)))
;; (let ((sl (subseq submenu-body count
(let ((sl (seq-subseq submenu-body count
(let ((x (+ count factor)))
(if (>= bl x)
x
nil)))))
(when sl
;; FIXME: O(n²) performance bug because of repeated `append':
;; use `mapcan'?
(setq result
(append
result
(if (= (length sl) 1)
(if filesets-menu-shortcuts-flag
(list (filesets-remake-shortcut n (car sl)))
sl)
`((,(concat
(filesets-get-shortcut n)
(let ((rv ""))
(cl-do ((x sl (cdr x)))
((null x))
(let ((y (concat (elt (car x) 0)
(if (null (cdr x))
""
", "))))
;; FIXME: O(n²) performance bug because of
;; repeated `concat': use `mapconcat'?
(setq rv
(concat
rv
(if filesets-menu-shortcuts-flag
(substring y 2)
y)))))
(if (> (length rv)
filesets-max-entry-length)
(concat
(substring rv 0 filesets-max-entry-length)
" ...")
rv)))
,@sl))))))))
result))))