bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Uwe Brauer
Subject: bug#45693: [two word expansion works, but write-abbrev-file destroys it]
Date: Wed, 13 Jan 2021 17:25:42 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

>>> "RP" == Robert Pluim <rpluim@gmail.com> writes:

>>>>>> On Wed, 13 Jan 2021 14:18:37 +0100, Uwe Brauer <oub@mat.ucm.es> said:
>>> Uwe Brauer <oub@mat.ucm.es> writes:

>>> 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))))

Uwe> Ok I did not think that through, you were referring to 
Uwe> (setq local-abbrev-table (list my-abbrev-table 
fundamental-mode-abbrev-table))

Uwe> And the question is what comes first in that list, right?

Uwe> You asked whether to take the first or all elements of the list, would
Uwe> it be very resource consuming to take all?

> Not really, but people might find it confusing when 'add a local
> abbrev' results in modifying more than one abbrev table.

Ok, then the following question supposed I have executed 

(setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))

I want to add 

    1. A simple word abbrev as in nacion to nación

    2. I want to add a two word abbrev as in
       a que --> a qué


For the latter I would use registers and something like this 

(defun ediff-copy-to-register-A ()
  (interactive)
  (copy-to-register ?A (region-beginning) (region-end) nil)
  (message "diff is copied to register A"))

(defun ediff-copy-to-register-B ()
  (interactive)
  (copy-to-register ?B (region-beginning) (region-end) nil)
  (message "diff is copied to register B"))

(defun ediff-define-abbrev ()
  (interactive)
  (let ((name (get-register ?A)))
        (let ((expansion (get-register ?B)))
          (set-text-properties 0 (length name) nil name)
          (define-abbrev local-abbrev-table  name (downcase expansion))))
  (message "abbrev is added using register A and B."))

Now should the first abbrev land in the fundamental local abbrev list
and the two word abbrev in my-abbrev-table?

Or shall I create another minor mode that I associate with the my-abbrev-table?

Attachment: smime.p7s
Description: S/MIME cryptographic signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]