Function: idlwave-display-user-catalog-widget
idlwave-display-user-catalog-widget is an interactive and
byte-compiled function defined in idlwave.el.gz.
Signature
(idlwave-display-user-catalog-widget DIRS-LIST)
Documentation
Create the widget to select IDL search path directories for scanning.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/idlwave.el.gz
(defun idlwave-display-user-catalog-widget (dirs-list)
"Create the widget to select IDL search path directories for scanning."
(interactive)
(require 'widget)
(require 'wid-edit)
(unless dirs-list
(error "Don't know IDL's search path"))
(kill-buffer (get-buffer-create "*IDLWAVE Widget*"))
(switch-to-buffer (get-buffer-create "*IDLWAVE Widget*"))
(kill-all-local-variables)
(make-local-variable 'idlwave-widget)
(widget-insert (format idlwave-user-catalog-widget-help-string
idlwave-user-catalog-file))
(widget-create 'push-button
:notify 'idlwave-widget-scan-user-lib-files
"Scan & Save")
(widget-insert " ")
(widget-create 'push-button
:notify 'idlwave-delete-user-catalog-file
"Delete File")
(widget-insert " ")
(widget-create 'push-button
:notify
(lambda (&rest _ignore)
(let ((path-list (widget-get idlwave-widget :path-dirs)))
(dolist (x path-list)
(unless (memq 'lib (cdr x))
(idlwave-path-alist-add-flag x 'user)))
(idlwave-display-user-catalog-widget path-list)))
"Select All Non-Lib")
(widget-insert " ")
(widget-create 'push-button
:notify
(lambda (&rest _ignore)
(let ((path-list (widget-get idlwave-widget :path-dirs)))
(dolist (x path-list)
(idlwave-path-alist-remove-flag x 'user))
(idlwave-display-user-catalog-widget path-list)))
"Deselect All")
(widget-insert " ")
(widget-create 'push-button
:notify (lambda (&rest _ignore)
(kill-buffer (current-buffer)))
"Quit")
(widget-insert "\n\n")
(widget-insert "Select Directories: \n")
(setq idlwave-widget
(apply #'widget-create
'checklist
:value (delq nil (mapcar (lambda (x)
(if (memq 'user (cdr x))
(car x)))
dirs-list))
:greedy t
:tag "List of directories"
(mapcar (lambda (x)
(list 'item
(if (memq 'lib (cdr x))
(concat "[LIB] " (car x) )
(car x))))
dirs-list)))
(widget-put idlwave-widget :path-dirs dirs-list)
(widget-insert "\n")
(use-local-map widget-keymap)
(widget-setup)
(goto-char (point-min))
(delete-other-windows))