help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Going through a list using the minibuffer


From: Jean Louis
Subject: Re: Going through a list using the minibuffer
Date: Sun, 13 Jun 2021 18:57:35 +0300
User-agent: Mutt/2.0.7+183 (3d24855) (2021-05-28)

* Yuri Khan <yuri.v.khan@gmail.com> [2021-06-13 18:10]:
> On Sun, 13 Jun 2021 at 20:55, <arvid-harnack@lavache.com> wrote:
> 
> > Suppose I define a list namely '("alpha" "beta" "gamma")
> >
> > I would like to get the minibuffer to show me the options one by
> > one as the down and up arrow keys are pressed.  Then in my
> > function I get the equivalent position "k" of the string in the
> > list.
> 
> You basically want ‘(completing-read "Choose a Greek letter: "
> '("alpha" "beta" "gamma") nil t)’, except that it will give you the
> selected option value rather than its index.

Then using hash is possible.

Visual hash editing: Emacs Lisp package `rcd-hash-edit.el`
https://hyperscope.link/3/7/6/6/1/Emacs-Lisp-package-rcd-hash-edit-37661.html

M-x rcd-hash-edit

Enter: my-hash

- Press `a' to add new key/value to hash
- Choose type of Cons
- Enter configuration
- M-x rcd-hash-save

Example:

my-hash ⇒ #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 
0.8125 data ("config-1" '(12 3)))

Use this function to load hash:

(defun data-from-file (file)
  "Reads and returns Emacs Lisp data from FILE"
  (car
   (read-from-string
    (file-to-string file))))

For example in init file:

(setq my-hash (data-from-file "~/tmp/my-hash"))

my-hash ⇒ #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 
0.8125 data ("config-1" '(12 3)))

Use completing read with hash:

(completing-read "My config: " my-hash)

Choose a key, use key to get configuration:

In init.el:
(setq my-hash (data-from-file "~/tmp/my-hash"))

If you wish to set `my-other-variable' to the value of hash:

(defun my-config ()
  (interactive)
  (let* ((key (completing-read "Configuration? " my-hash nil t))
         (value (gethash key my-hash)))
    (setq my-other-variable value)))

M-x my-config

- choose configuration
- let other variable be set

If you wish to edit hash again, no problem:

M-x rcd-hash-edit

add more values, or edit present values... it is like a database
form.

Save the hash:

M-x rcd-hash-save

There is no benefit nor advantage with this approach over simply
writing it in the init.el file. But the package would give more
understanding how to use keys to get values from
`completing-read'


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]