Subject: bug#15485: add-abbrev: don't use hard-coded forward-word

From: Andreas Röhler <[email-masked]>
Date: Thu, 15 Aug 2019 16:37:16 +0200

Hi all,

On 15.08.19 14:41, Mauro Aranda wrote:
> Hello Lars.
>
> Lars Ingebrigtsen <[email-masked] <mailto:[email-masked]>> writes:
>
> > Andreas Röhler <[email-masked] 
> <mailto:[email-masked]>> writes:
> >
> >> add-abbrev uses forward-word to catch the expansion, which isn't good
> >> for programming code.
> >>
> >> See
> >>
> >> 
> http://stackoverflow.com/questions/19073674/how-can-i-add-my-personal-abbreviation-to-emmet-mode-in-emacs/19079683#19079683
> >>
> >> Suggest to use forward-symbol instead, or still better to make if 
> customizable:
> >
> > `add-abbrev' doesn't have a doc string itself, but as all the in-tree
> > callers of this function says:
> >
> > ---
> > Don't use this function in a Lisp program; use `define-abbrev' instead.
> > ---
> >
> > So you probably shouldn't use this programmatically, either.
>
> I don't think the OP wanted to use `add-abbrev' in a Lisp program.  What
> I understand is that the problem reported arises when someone wants to
> add an abbrev for a programming construct (in the example: "<?php ?>")
> it is likely that `add-abbrev' won't give the entire desired
> expansion.
>
> With that being said, at least in current Emacs it is easy to add that
> abbrev, by setting the mark and point properly and calling
> `add-mode-abbrev' with a 0 prefix argument.
>
> > However, it's possible that the `forward-word' should perhaps be
> > changed, but on the other hand, abbrev.el will probably be deprecated
> > any year now in favour of nabbrev.el, so I don't think it's a good idea
>
> What is nabbrev.el?  I did a search in what I believe are usual places,
> but didn't found anything.

The idea was to get rid of the restriction only word-syntax chars might 
compose an abbreviation.

After all, when playing with a patched Emacs allowing all chars, it 
turned out word-chars are much more easy to type, so didn't use 
symbol-composed abbrevs finally.