Subject: bug#45693: [two word expansion works, but write-abbrev-file destroys it]

From: Robert Pluim <[email-masked]>
Date: Wed, 13 Jan 2021 11:09:53 +0100

Uwe Brauer <[email-masked]> writes:

>> Uwe Brauer <[email-masked]> writes:
>
>> Thatʼs under the control of your code, no? Itʼs whatever does 'setq
>> local-abbrev-table (list ... ...)'
>
>
> That is what I expect. I have 
> (define-minor-mode american-minor-mode 
>     nil nil nil nil
>     (setq local-abbrev-table
>           (if american-minor-mode
>               american-minor-mode-abbrev-table)))
>
> Now if in LaTeX (mayor) mode (which has its own local-abbrev-table)
> I turn on the american mode, in my understanding the local-abbrev-table
> of american minor mode should be first in the list. At least if I add an
> abbrev (via flyspell) it is added to the amercian-minor-mode-abbrev-table
> not to the latex-mode-abbrev-table.
>
> If that is the case I would say yes to your question, but I am not sure
> how to check that it is indeed the first in the list. (I only know it is «activated»)

Based on the code above, there is no list: youʼre unconditionally
setting local-abbrev-table to a single table. You'd want something
like:

(define-minor-mode american-minor-mode 
    nil nil nil nil
    (setq local-abbrev-table
          (if american-minor-mode
              (list american-minor-mode-abbrev-table local-abbrev-table))))

which would then fail when adding abbrevs, of course.

Robert