В (S)XEmacs есть классный package, называется xpm-button.el. Он умеет на лету генерировать картинку с кнопкой. Всё вроде бы хорошо, но «красота» сгенерированных кнопок повергает в уныние. Решил написать достаточно гибкий генератор красивых кнопок используя Wand-mode. По мере написания генератора, добавлял необходимый функционал в Wand-mode. Вот что в итоге получилось:
(wand-button 150 32 "Wand Button"
:bg "cornflowerblue" :fg "white"
:round 8.0 :depth 1 :yoff 8 ; :type 'pressed
:wand-font (make-wand-font :family "Zapfino"))
→
(wand-button 100 20 "Wand Button"
:bg "gray80" :fg "black" :round 10.0
:contrast 0.5 :depth 2 ; :type 'pressed
:wand-font (make-wand-font :family "Copperplate"))
→
(wand-button 100 40 (encode-coding-string "привет" 'utf-8)
:bg "palegreen" :fg "green" :round 0.0
:depth 4 :yoff -2 ; :type 'pressed
:wand-font (make-wand-font :family "Arial Black"
:size 20))
→
Интересно будет этот функционал внедрить в Emacs widgets, а то кнопки там сделаны через очень большую задницу.