Function: idlwave-make-one-key-alist
idlwave-make-one-key-alist is a byte-compiled function defined in
idlwave.el.gz.
Signature
(idlwave-make-one-key-alist ALIST)
Documentation
Make an alist for single key selection.
Source Code
;; Defined in /usr/src/emacs/lisp/obsolete/idlwave.el.gz
;; Used for, e.g., electric debug super-examine.
(defun idlwave-make-one-key-alist (alist)
"Make an alist for single key selection."
(let ((l alist) keys-alist name start char help
(cnt 0)
(case-fold-search nil))
(while l
(setq name (car (car l))
l (cdr l))
(catch 'exit
;; First check if the configuration predetermined a key
(if (string-match "\\[\\(.\\)\\]" name)
(progn
(setq char (string-to-char (downcase (match-string 1 name)))
help (format "%c: %s" char name)
keys-alist (cons (list char help name) keys-alist))
(throw 'exit t)))
;; Then check for capital letters
(setq start 0)
(while (string-match "[A-Z]" name start)
(setq start (match-end 0)
char (string-to-char (downcase (match-string 0 name))))
(if (not (assoc char keys-alist))
(progn
(setq help (format "%c: %s" char
(replace-match
(concat "[" (match-string 0 name) "]")
t t name))
keys-alist (cons (list char help name) keys-alist))
(throw 'exit t))))
;; Now check for lowercase letters
(setq start 0)
(while (string-match "[a-z]" name start)
(setq start (match-end 0)
char (string-to-char (match-string 0 name)))
(if (not (assoc char keys-alist))
(progn
(setq help (format "%c: %s" char
(replace-match
(concat "[" (match-string 0 name) "]")
t t name))
keys-alist (cons (list char help name) keys-alist))
(throw 'exit t))))
;; Bummer, nothing found! Use a stupid number
(setq char (string-to-char (int-to-string (setq cnt (1+ cnt))))
help (format "%c: %s" char name)
keys-alist (cons (list char help name) keys-alist))))
(nreverse keys-alist)))