(defun read-menu (filename) "dynamic menu" (setq src-file (open-file filename 'read)) (setq res '()) (while (setq line (read-line src-file)) (if (string-match "^([a-zA-Z0-9\_]+):([a-zA-Z0-9\_\.\"\ \/-]+)\n$" line) (let ((entry (substring line (match-start 1) (match-end 1))) (prog (substring line (match-start 2) (match-end 2)))) (setq res (cons `(,entry (system ,(concat prog " &"))) res))))) (reverse res)) ;;(require 'stdlib) ;;(puts (read-menu "menu.test")) ;; ;; menu.test: ;; ;; title:command line ;; aap:noot 42 ;; mies:wim --foo bar