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)))