Actually, it's a menu-item definition, described in https://www.gnu.org/software/emacs/manual/html_node/elisp/Extended-Menu-Items.html It can be bound to a keymap and use it like key bindings, it also support some dynamic features which normal keybinding can't do, according to manual. At 2020-11-01 22:25:21, "Lars Ingebrigtsen" wrote: >Zhu Zihao writes: > >> +@vindex expand-abbrev-maybe >> + If you don't want to check expand for every @code{self-insert-command} >> +like Abbrev mode. There's a variable describing a conditional key definition >> +You can bind it to some key like @kbd{TAB}. It' ll expand abbrev if >> +there's some abbrev at point, and act like usual @kbd{TAB} if there's not. > >[...] > >> +(defconst expand-abbrev-maybe >> + '(menu-item "" expand-abbrev >> + :filter (lambda (cmd) (and (abbrev--before-point) cmd))) >> + "A conditional key definition for `expand-abbrev'. >> +When this was bound, it will expand abbrev at point if there're any possible >> +abbrev.") > >I'm afraid I don't understand the meaning of this constant, or what this >is trying to achieve. You talk about adding a new key binding, which >should presumably refer to a new command (i.e. function)? > >-- >(domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no