Subject: bug#55668: Extending the `C-x 8' map to include macrons

From: Robert Pluim <[email-masked]>
Date: Mon, 06 Jun 2022 11:53:29 +0200

(what is it about Monday mornings and character rabbit holes?)

>>>>> On Sat, 28 May 2022 13:46:52 +1200, Phil Sainty <[email-masked]> said:

    Phil> I find the latin-4-postfix input method good for entering macrons:

    Phil>              | postfix | examples
    Phil>  ------------+---------+----------
    Phil>   macron     |    -    | a- -> ā

Yep. There were a couple missing from latin-postfix and C-x 8, and they were all
missing from latin-prefix, so I came up with the below. If the AE
stuff is overkill, I can remove it.

Robert
-- 
>From f685eaf33b7c323604aaa581a1848979045521f9 Mon Sep 17 00:00:00 2001
From: Robert Pluim <[email-masked]>
Date: Mon, 6 Jun 2022 11:46:55 +0200
Subject: [PATCH] Add more characters with macron in C-x 8 map and latin input
 methods
To: [email-masked]

* lisp/international/iso-transl.el (iso-transl-char-map): Add
sequences for {AE,ae,G,g} with macron.
* lisp/leim/quail/latin-post.el ("latin-postfix"): Add missing entries
for {AE,ae,G,g} with macron.
* lisp/leim/quail/latin-pre.el ("latin-prefix"): Add entries for
'letter with macron' for {A,a,E,e,AE,ae,I,I,O,o,U,u,Y,y} with macron.

(Bug#55668)
---
 lisp/international/iso-transl.el |  6 ++++++
 lisp/leim/quail/latin-post.el    |  7 +++++++
 lisp/leim/quail/latin-pre.el     | 18 ++++++++++++++++++
 3 files changed, 31 insertions(+)

diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el
index 3be80e5e6a..5243293312 100644
--- a/lisp/international/iso-transl.el
+++ b/lisp/international/iso-transl.el
@@ -123,10 +123,12 @@ iso-transl-char-map
     ("/A"   . [?Å])
     ("/L"   . [?Ł])
     ("/E"   . [?Æ])
+    ("/=E"  . [?Ǣ])
     ("/O"   . [?Ø])
     ("/a"   . [?å])
     ("/l"   . [?ł])
     ("/e"   . [?æ])
+    ("/=e"  . [?ǣ])
     ("/o"   . [?ø])
     ("1/2"  . [?½])
     ("1/4"  . [?¼])
@@ -139,6 +141,10 @@ iso-transl-char-map
     ("=a"   . [?ā])
     ("=E"   . [?Ē])
     ("=e"   . [?ē])
+    ("=/E"  . [?Ǣ])
+    ("=/e"  . [?ǣ])
+    ("=G"   . [?Ḡ])
+    ("=g"   . [?ḡ])
     ("=I"   . [?Ī])
     ("=i"   . [?ī])
     ("=O"   . [?Ō])
diff --git a/lisp/leim/quail/latin-post.el b/lisp/leim/quail/latin-post.el
index acb3ef8ede..008c949f90 100644
--- a/lisp/leim/quail/latin-post.el
+++ b/lisp/leim/quail/latin-post.el
@@ -2239,6 +2239,7 @@
   tilde      |    ~    | a~ -> ã
   cedilla    |    ,    | c, -> ç
   ogonek     |    ,    | a, -> ą
+  macron     |    -    | a- -> ā   g- -> ḡ e/- -> ǣ
   breve      |    ~    | a~ -> ă
   caron      |    ~    | c~ -> č
   dbl. acute |    :    | o: -> ő
@@ -2284,11 +2285,14 @@
  ("E-" ?Ē)
  ("E." ?Ė)
  ("E/" ?Æ)
+ ("E//" ?Æ)
+ ("E/-" ?Ǣ)
  ("E\"" ?Ë)
  ("E^" ?Ê)
  ("E`" ?È)
  ("E~" ?Ě)
  ("G," ?Ģ)
+ ("G-" ?Ḡ)
  ("G." ?Ġ)
  ("G^" ?Ĝ)
  ("G~" ?Ğ)
@@ -2374,12 +2378,15 @@
  ("e-" ?ē)
  ("e." ?ė)
  ("e/" ?æ)
+ ("e//" ?æ)
+ ("e/-" ?ǣ)
  ("e\"" ?ë)
  ("e^" ?ê)
  ("e`" ?è)
  ("e~" ?ě)
  ("e=" ?€)
  ("g," ?ģ)
+ ("g-" ?ḡ)
  ("g." ?ġ)
  ("g^" ?ĝ)
  ("g~" ?ğ)
diff --git a/lisp/leim/quail/latin-pre.el b/lisp/leim/quail/latin-pre.el
index b6a26e0b2c..55435d5675 100644
--- a/lisp/leim/quail/latin-pre.el
+++ b/lisp/leim/quail/latin-pre.el
@@ -1104,6 +1104,7 @@
    cedilla   |  , ~   | ,c -> ç  ~c -> ç
     caron    |   ~    | ~c -> č  ~g -> ğ
     breve    |   ~    | ~a -> ă
+    macron   |   -    | -a -> ā  -/e -> ǣ  -- -> ¯
   dot above  |   / .  | /g -> ġ   .g -> ġ
     misc     | \" ~ /  | \"s -> ß  ~d -> ð  ~t -> þ  /a -> å  /e -> æ  /o -> ø
    symbol    |   ~    | ~> -> »  ~< -> «  ~! -> ¡  ~? -> ¿  ~~ -> ¸
@@ -1112,6 +1113,23 @@
 " nil t nil nil nil nil nil nil nil nil t)
 
 (quail-define-rules
+ ("--" ?¯)
+ ("-A" ?Ā)
+ ("-a" ?ā)
+ ("-E" ?Ē)
+ ("-e" ?ē)
+ ("-/E" ?Ǣ)
+ ("-/e" ?ǣ)
+ ("-G" ?Ḡ)
+ ("-g" ?ḡ)
+ ("-I" ?Ī)
+ ("-i" ?ī)
+ ("-O" ?Ō)
+ ("-o" ?ō)
+ ("-U" ?Ū)
+ ("-u" ?ū)
+ ("-Y" ?Ȳ)
+ ("-y" ?ȳ)
  ("' " ?')
  ("''" ?´)
  ("'A" ?Á)
-- 
2.35.1.607.gf01e51a7cf