[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 26.1 emacs-mac 7.2; map key to interactive lisp function (command) w
From: |
Van L |
Subject: |
Re: 26.1 emacs-mac 7.2; map key to interactive lisp function (command) with an argument |
Date: |
Mon, 22 Oct 2018 10:00:27 +1100 |
Thank you so much Eli, Michael.
┌────
│ the general form is
│
│ (global-set-key KEY COMMAND)
│
│ where COMMAND is a _symbol_, like this:
│
│ (global-set-key (kbd "C-c o") 'foo)
│
│ So you need to define an interactive function named SOMETHING:
│
│ (defun SOMETHING (...)
│ (interactive)
│ ...)
│
│ then bind it to a key:
│
│ (global-set-key (kbd "C-c o") 'SOMETHING)
└────
┌────
│ 1 (defun set-face-height (number)
│ 2 "Face height is set to NUMBER."
│ 3 (interactive "nInsert number: ")
│ 4 (set-face-attribute 'default (selected-frame) :height number))
│ 5
│ 6 (defun set-face-height-202 ()
│ 7 "Set height of face to 202"
│ 8 (interactive)
│ 9 (set-face-attribute 'default (selected-frame) :height 202))
│ 10 (global-set-key (kbd "C-c o") 'set-face-height-202)
│ 11
│ 12 (defun set-face-height-256 ()
│ 13 "Set height of face to 256"
│ 14 (interactive)
│ 15 (set-face-attribute 'default (selected-frame) :height 256))
│ 16 (global-set-key (kbd "C-c O") 'set-face-height-256)
└────
At the outset my goal was to get rid of lines 6 to 9, 12 to 15.
To do that is to call a function with an argument in the place of
'set-face-height-XXX.
I hit the documentation as follows:
1) (info "(elisp) Calling Functions")
- experiment with funcall and fail
2) (info "(elisp) Interactive Call")
- experiment with funcall-interactively and fail
Along the way I came across two mentions of what a COMMAND is.
The errors I got mentioned “commandp”.
I didn't lookup global-set-key (lazily) believing I needed a list decorated the
right-way to slot in the
context given by 'SOMETHING, which I understand to be a quote or
'(quoted list).
COMMAND is the command definition to use; usually it is
a symbol naming an interactively-callable function.
[ I am going to read that as follows: In use the COMMAND is usually
a symbol naming an interactive function which is called. ]
>> IOW, it usually should be a symbol,
>> whereas in your example it is a
>> list that calls a function.
The guiding lamp I take to Lisp is it is a Russian Doll of lists.
If I plug a list to that-list-context-right it will work.
Obviously it is more complicated than that.
The COMMAND has to be an "expression that evals to (fbound) symbol” and I’d
like a function with an argument to be that.
That will by explained going from
(info "(elisp) Symbols”)
Thank you.