Put defmacro inside eval-and-compile.
Reorganize keymap and menu (and use easy-menu-define).