Непонятно о каком-то фундаментальном синтаксисе здесь.define-key
принимает набор входных данных, один из которых находится внутри квадратных скобок.Что это за конструкция?Как я могу динамически генерировать то, что происходит внутри квадратных скобок?
В простом случае я могу отобразить одноэлементное меню следующим образом:
(flet ((ok (&optional p1 &rest args) t))
(setq menu-1 (make-sparse-keymap "Title"))
(define-key menu-1 [menu-1-ok-event]
`(menu-item "OK"
ok
:keys ""
:visible t
:enable t))
(x-popup-menu t menu-1))
Я могу вставить дополнительные пункты меню, такие как:
(flet ((ok (&optional p1 &rest args) t))
(setq menu-1 (make-sparse-keymap "Title"))
(define-key menu-1 [menu-1-event-ok]
`(menu-item "OK"
ok
:keys ""
:visible t
:enable t))
(define-key menu-1 [menu-1-event-1]
`(menu-item "This is line 1"
nil
:keys ""
:visible t
:enable t))
(x-popup-menu t menu-1))
НоЧто делать, если я хочу динамически генерировать вещь в квадратных скобках?Что делать, если я хочу что-то вроде этого:
(while (< n 5)
(define-key menu-1 [(dynamic-thing n)]
`(menu-item (format "This is line %d" n)
nil
:keys ""
:visible t
:enable t)))
Я пытался
(define-key menu-1 [(intern (format "menu-1-event-%d" n))]
...
.. но это не сработало.Результат всегда "стажер".???
Что такое квадратные скобки?Синтаксис мне незнаком.