Function: filesets-build-submenu
filesets-build-submenu is a byte-compiled function defined in
filesets.el.gz.
Signature
(filesets-build-submenu COUNT LOOKUP-NAME ENTRY)
Documentation
Build submenu for the fileset ENTRY named LOOKUP-NAME.
Construct a shortcut from COUNT.
Source Code
;; Defined in /usr/src/emacs/lisp/filesets.el.gz
(defun filesets-build-submenu (count lookup-name entry)
"Build submenu for the fileset ENTRY named LOOKUP-NAME.
Construct a shortcut from COUNT."
(let ((lookup-name (or lookup-name
(filesets-data-get-name entry))))
(message "Filesets: %s" lookup-name)
(let ((mode (filesets-entry-mode entry))
(filesets-verbosity (filesets-entry-get-verbosity entry))
(this-lookup-name (concat (filesets-get-shortcut count)
lookup-name)))
(pcase mode
(:file
(let* ((file (filesets-entry-get-file entry)))
`[,this-lookup-name
(filesets-file-open nil ',file ',lookup-name)]))
(_
`(,this-lookup-name
,@(pcase mode
(:pattern
(let* ((files (filesets-get-filelist entry mode 'on-ls))
(dirpatt (filesets-entry-get-pattern entry))
(pattname (apply #'concat (cons "Pattern: " dirpatt)))
(count 0))
;;(filesets-message 3 "Filesets: scanning %S" pattname)
`([,pattname
,(list (function filesets-open) mode lookup-name)]
"---"
,@(filesets-wrap-submenu
(mapcar
(lambda (x)
(setq count (+ count 1))
`[,(concat (filesets-get-shortcut count)
(file-name-nondirectory x))
(filesets-file-open nil ',x ',lookup-name)])
files))
,@(filesets-get-menu-epilog lookup-name mode
lookup-name t))))
(:ingroup
(let* ((master (filesets-entry-get-master entry)))
;;(filesets-message 3 "Filesets: parsing %S" master)
`([,(concat "Inclusion Group: "
(file-name-nondirectory master))
(filesets-open ',mode ',master ',lookup-name)]
"---"
[,master (filesets-file-open nil ',master ',lookup-name)]
"---"
,@(filesets-wrap-submenu
(filesets-build-ingroup-submenu lookup-name master))
,@(filesets-get-menu-epilog master mode lookup-name t))))
(:tree
(let* ((dirpatt (filesets-entry-get-tree entry))
(dir (car dirpatt))
(patt (cadr dirpatt)))
(filesets-build-dir-submenu entry lookup-name dir patt)))
(:files
(let ((files (filesets-get-filelist entry mode 'on-open-all))
(count 0))
`([,(concat "Files: " lookup-name)
(filesets-open ',mode ',lookup-name)]
"---"
,@(filesets-wrap-submenu
(mapcar
(lambda (x)
(setq count (+ count 1))
`[,(concat (filesets-get-shortcut count)
(file-name-nondirectory x))
(filesets-file-open nil ',x ',lookup-name)])
(filesets-conditional-sort
files
(function file-name-nondirectory))))
,@(filesets-get-menu-epilog lookup-name mode
lookup-name t)))))))))))