Emacsでwidgetのボタン作ったけどクリックのイベントが発生しなくてハマった
現象
表題まんまなんですが、customize-groupとかで出てくるようなボタンが作りたくて、
(widget-create 'push-button :tag " Hoge " :action `(lambda (widget &optional event) (message "Clicked!!!")))
のような感じでボタンは作れました。
...が、クリックしても"Clicked!!!"が表示されません。。
解決
マウスクリックに対するキーマップを設定する必要がありました。
冷静に考えれば当然なんですが、widgetって何か特別な感じがしてさっぱり気が付きませんでした。
widget-keymapという、そういう設定がしてあるキーマップがあるので、
こだわりがないなら、set-keymap-parentや、use-local-mapで、これを使えば良いかと思います。
あとがき
地味に大分ハマった…。
ググって出てくるサンプルは:actionとか:notifyを指定するってなってて、
結局、customize-groupのソース追っかけて彷徨ってたら気がついた。
初歩的なことだよ、ワトソン君。的な感じ?