(defgroup srb nil "srb group.") (defcustom srb-dir "~/srb/" "Directory of files whose names are members of `srb-file-list'." :type 'directory :group 'srb) (defvar srb-file-list (if (file-exists-p srb-dir) (directory-files srb-dir nil "^[^.]+")) ; Don't include "." or ".." "List of names of files in `srb-dir'.") (defcustom srb-selected-file (car srb-file-list) "A selected file name from `srb-file-list'." :type `(radio ,@(mapcar (lambda (x) (list 'const x)) srb-file-list)) :group 'srb) (defun srb-add-file () "Add a file name to `srb-file-list' and update `srb-selected-file'." (interactive) (unless (file-exists-p srb-dir) (make-directory srb-dir)) (let ((file (read-from-minibuffer "Enter a file name: "))) (with-current-buffer (get-buffer-create file) (erase-buffer) (write-region (point-min) (point-max) (concat srb-dir file) nil 'nomessage nil t) (kill-buffer file))) (setq srb-file-list (directory-files srb-dir nil "^[^.]+")) (custom-reevaluate-setting 'srb-selected-file) (custom-set-default 'srb-file (symbol-value 'srb-selected-file))) (provide 'srb)