История изменений
Исправление Silerus, (текущая версия) :
судя из примера, текущий виджет присваивается переменной widget. Насчет а b - Вы их сами создали глобальными (defvar a), я их просто использовал, lambda ничего не создает, а лишние переменные удалил. &rest - это синтаксическая единица - которая говорит интерпретатору что переменная ignore - это список в который будет помещено неопределённое количество элементов, например
(defun func (&rest test)
(message "%s" test))
(defun test_rest()
(interactive)
(func "1" "2")
(func "1" "2" "4" ""))
Есть еще &optional - необязательные аргументы, если вызвать функцию не указав такой аргумент - то ошибки не будет, а значение аргумента будет nil
(defun func1 (&optional test)
(message "%s" test))
(defun test_opt()
(interactive)
(func1 "1")
(func1))
Результат отобразится в буфере Messages
Исходная версия Silerus, :
судя из примера, текущий виджет присваивается переменной widget. Насчет а b - Вы их сами создали глобальными (defvar a), я их просто использовал, lambda ничего не создает, а лишние переменные удалил. &rest - это синтаксическая единица - которая говорит интерпретатору что переменная ignore - это список в который будет помещено неопределённое количество элементов, например
(defun func (&rest test)
(message "%s" test))
(defun test_rest()
(interactive)
(func "1" "2")
(func "1" "2" "4" ""))
Есть еще &optional - необязательные аргументы, если вызвать функцию не указав такой аргумент - то ошибки не будет, а значение аргумента будет nil
(defun func1 (&optional test)
(message "%s" test))
(defun test_opt()
(interactive)
(func1 "1")
(func1))