Eric Abrahamsen writes: > We've all written this a million times: > > (let* ((choices (mapcar (lambda (elt) > (cons (make-string-from-thing elt) > elt)) > my-list-of-things)) > (choice (completing-read "Choose: " > choices))) > (cdr (assoc-string choice choices))) Sorry, I didn't follow the whole thread (too long), here some Helm features you may not be aware of: (helm-comp-read "test: " '(("un" . 1) ("deux" . 2) ("trois" . 3))) => 1 (helm-comp-read "test: " '(("un" . 1) ("deux" . 2) ("trois" . 3)) :alistp nil) => "un" (helm-comp-read "test: " '(("un" . 1) ("deux" . 2) ("trois" . 3)) :marked-candidates t) => (1) (helm-comp-read "test: " '(("un" . 1) ("deux" . 2) ("trois" . 3)) :marked-candidates t :alistp nil) => ("un") Hope that helps. -- Thierry