From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Robert Pluim Newsgroups: gmane.emacs.bugs Subject: bug#70984: 30.0.50; Improved support for entering quotation marks Date: Thu, 16 May 2024 16:35:33 +0200 Message-ID: <87r0e1j03u.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13406"; mail-complaints-to="usenet@ciao.gmane.io" To: 70984@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu May 16 16:37:38 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1s7cEj-0003Hf-6D for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 16 May 2024 16:37:37 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s7cDL-00071K-Gs; Thu, 16 May 2024 10:36:14 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s7cDA-0006ja-Ri for bug-gnu-emacs@gnu.org; Thu, 16 May 2024 10:36:04 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1s7cDA-0000Po-Gf for bug-gnu-emacs@gnu.org; Thu, 16 May 2024 10:36:00 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1s7cDC-0007Of-Nx for bug-gnu-emacs@gnu.org; Thu, 16 May 2024 10:36:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Robert Pluim Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 16 May 2024 14:36:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 70984 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.171587015628423 (code B ref -1); Thu, 16 May 2024 14:36:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 16 May 2024 14:35:56 +0000 Original-Received: from localhost ([127.0.0.1]:49067 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s7cD3-0007ON-Gb for submit@debbugs.gnu.org; Thu, 16 May 2024 10:35:56 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:37380) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s7cCw-0007OD-Vj for submit@debbugs.gnu.org; Thu, 16 May 2024 10:35:51 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s7cCp-0005tS-Ef for bug-gnu-emacs@gnu.org; Thu, 16 May 2024 10:35:39 -0400 Original-Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1s7cCn-0000Mg-A5 for bug-gnu-emacs@gnu.org; Thu, 16 May 2024 10:35:39 -0400 Original-Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-34e0d47bd98so5293645f8f.0 for ; Thu, 16 May 2024 07:35:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715870135; x=1716474935; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=vpwg9DiU3e9+X9czG4xKHFw35s4ixwXowXC0Hwm8v+8=; b=Kc1i4juC4eW81V+DJlQAIclB5YUFHywdgLUFFCvFLXL5JgC26PIRXPen+mIrxzRvYF 3bP8hf5CaU8By7IB6yEEdumgV9XYWPhP4raCodI4iTH1OSatWmI088In35JPddi7Png0 NG3z9PTlNmcuX9RkS/ejC0NyqUP9ZCX2P/myd+JrMnJXZE5liPPYyHpKGy8qsaNIGrMs hGBQQm4VFL+13U9iZabp24ZyWlq0HKVESEecuv2vyjigGZrM2H77LSSP/uh1Aey7YVaT SM0Fv8Lt69A4hFXR/87IISM646XnJf8Rw949m+Ze7J8kjaAalVRM2AvvaDY9fBzilo6Y Igqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715870135; x=1716474935; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=vpwg9DiU3e9+X9czG4xKHFw35s4ixwXowXC0Hwm8v+8=; b=OM3dK0xRQz4w+//htbxhrpfj1Qt59kkKgGAuqfHO6xruXohJDDaCG0ThM8ARS6uRv2 38uZsyMsMNnClo9xF5FjxaHPNyOxym9SGxPe6IuppHaZxDsTQZZeEl5K0wTRSiVRX0mL XMvBN0m+c7uHe4y6TnNU1y6+tewNLqBwQIK52HmuosEof2dFINwmWkXgGNQ2+alMjeXe 30G+ZrP0kNTjrqUOC/Od4WF/KjjUYM4BztSvAkGGprVS3evsZZfJTWyoGHrlbZzo1SbX 3XWXN3ezddX5S+SmE2z6DprFCuV7N+zNnT9Musg8hiEE+ABHwHpNOPcdsViEMyQomKpl I4fw== X-Gm-Message-State: AOJu0YxlVVWcrkJskbd+vdO7PtQodnnoMDXhPtwlOv+aNTrW4ZbPbQrg yFtckWTn3e0hkBenWpirHmLlTaDu19NZhs+drehAs3kOQ94hVxtj0tTQaA== X-Google-Smtp-Source: AGHT+IFRme+JJi51+IYCVlFT3GN2As+7gUymVXHTXutEvqOUx4ER2ser1oPTCH5HH5bvNIyS0bfxJQ== X-Received: by 2002:adf:ed8d:0:b0:34d:7d04:7903 with SMTP id ffacd0b85a97d-3504979ca69mr16722190f8f.6.1715870135353; Thu, 16 May 2024 07:35:35 -0700 (PDT) Original-Received: from rltb ([82.66.8.55]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3518d817ee2sm15491706f8f.2.2024.05.16.07.35.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 May 2024 07:35:34 -0700 (PDT) Received-SPF: pass client-ip=2a00:1450:4864:20::429; envelope-from=rpluim@gmail.com; helo=mail-wr1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:285157 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable I=CA=BCll update the commit message after I get the bug number. I started looking at quotation marks, and came up with the attached extensions to iso-transl and the latin-prefix and latin-postfix methods. Please let me know if my key sequence choices need to be improved. Robert --=20 --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=0001-Improve-support-for-entering-quotation-marks.patch Content-Transfer-Encoding: quoted-printable >From d6de9b14660882924c13bd7237a4905bd6a5578e Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Thu, 16 May 2024 16:25:24 +0200 Subject: [PATCH] Improve support for entering quotation marks To: emacs-devel@gnu.org * lisp/international/iso-transl.el (iso-transl-char-map): Add entries for "low" single and double quotation marks. (iso-transl-language-alist): Add convenient support for the official German quoting style, which uses "low" double quotes on the left, and *left* double quotes on the right. Add support for single guillemets to the French language entrey. * lisp/leim/quail/latin-post.el ("latin-postfix"): Add entries for single, double and "low" Unicode quotation marks. Add entries for single guillemets. * lisp/leim/quail/latin-pre.el ("latin-prefix"): And here. * etc/NEWS: Announce the changes. --- etc/NEWS | 26 ++++++++++++++++++++++++++ lisp/international/iso-transl.el | 8 +++++++- lisp/leim/quail/latin-post.el | 19 +++++++++++++++++++ lisp/leim/quail/latin-pre.el | 11 +++++++++++ 4 files changed, 63 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 77b2749fe43..f7aeeab46d9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -573,6 +573,32 @@ These characters can now be input with 'C-x 8 a e' and= 'C-x 8 A E', respectively, in addition to the existing translations 'C-x 8 / e' and 'C-x 8 / E'. =20 +*** Add 'C-x 8' key translations for "low" quotes "=E2=80=9E", and "=E2=80= =9A". +These can now be entered with 'C-x , "' and 'C-x , ''. + +*** German language 'C-x 8' key translations for "=E2=80=9E" and "=E2=80= =9C". +These characters are used for the official German quoting style, and can +now be input with 'C-x 8 9' and 'C-x 8 0' respectively (the latter could +already be entered using 'C-x 8 {'. Using them requires activating +"German" language support using 'iso-transl-set-language'. + +*** "latin-prefix" and "latin-postfix" quotation marks additions. +These input methods can now produce single, double and "low" left and +right quotation marks: +"=E2=80=98", "=E2=80=99", "=E2=80=9C", "=E2=80=9D", "=E2=80=9E", and "=E2= =80=9A" +using "[", "]", and "," for "left", "right", and "low" respectively to +modify "'" and """. + +*** "latin-prefix" and "latin-postfix" guillemets support. +These input methods can now produce single guillemets. For +"latin-prefix" use "~~<" and "~~>", for "latin-postfix" use "<~" and +">~". Double guillemets were already supported. + +*** French language 'C-x 8' key translations for "=E2=80=B9" and "=E2=80= =BA". +These characters can now be entered using 'C-x 8 < <' and 'C-x 8 > >' +respectively, after activating "French" language support using +'iso-transl-set-language'. + * Changes in Specialized Modes and Packages in Emacs 30.1 =20 diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-tran= sl.el index 67659f7c265..648770fa658 100644 --- a/lisp/international/iso-transl.el +++ b/lisp/international/iso-transl.el @@ -111,6 +111,8 @@ iso-transl-char-map ("*+" . [?=C2=B1]) ("+" . [?=C2=B1]) (",," . [?=C2=B8]) + (",\"" . [?=E2=80=9E]) + (",'" . [?=E2=80=9A]) (",A" . [?=C4=84]) (",C" . [?=C3=87]) (",N" . [?=C5=85]) @@ -327,7 +329,9 @@ iso-transl-language-alist ("u" . [?=C5=AD])) ("French" ("C" . [?=C3=87]) - ("c" . [?=C3=A7])) + ("c" . [?=C3=A7]) + ("<<" . [?=E2=80=B9]) + (">>" . [?=E2=80=BA])) ("German" ("A" . [?=C3=84]) ("O" . [?=C3=96]) @@ -336,6 +340,8 @@ iso-transl-language-alist ("a" . [?=C3=A4]) ("o" . [?=C3=B6]) ("s" . [?=C3=9F]) + ("9" . [?=E2=80=9E]) + ("0" . [?=E2=80=9C]) ("u" . [?=C3=BC])) ("Portuguese" ("C" . [?=C3=87]) diff --git a/lisp/leim/quail/latin-post.el b/lisp/leim/quail/latin-post.el index 25e7c4a64a8..00851a94284 100644 --- a/lisp/leim/quail/latin-post.el +++ b/lisp/leim/quail/latin-post.el @@ -2302,6 +2302,9 @@ subscript | _ | 0_ -> =E2=82=80 1_ -> =E2=82=81 +_ -> =E2=82= =8A -_ -> =E2=82=8B others | / | s/ -> =C3=9F ?/ -> =C2=BF !/ -> =C2=A1 // -= > =C2=B0 o/ -> =C5=93 | / | 2/ -> =C2=BD 3/ -> =C2=BE 4/ -> ?=C2=BC + | [ | \\=3D'[ -> =E2=80=98 \"[ -> =E2=80=9C + | ] | \\=3D'] -> =E2=80=99 \"] -> =E2=80=9D + | , | \\=3D', -> =E2=80=9A \", -> =E2=80=9E | various | << -> =C2=AB >> -> =C2=BB o_ -> =C2=BA a_ -= > =C2=AA =20 Doubling the postfix separates the letter and postfix: e.g. a\\=3D'\\=3D' = -> a\\=3D' @@ -2309,6 +2312,12 @@ =20 ;; Fixme: =C2=A6 =C2=A7 =C2=A8 =C2=A9 =C2=AC =C2=B1 =C2=B4 =C2=B5 =C2=B6 = =C2=B7 =C2=B8 =C3=97 =C3=B7 (quail-define-rules + ("'[" ?=E2=80=98) + ("']" ?=E2=80=99) + ("\"[" ?=E2=80=9C) + ("\"]" ?=E2=80=9D) + ("\"," ?=E2=80=9E) + ("'," ?=E2=80=9A) ("2/" ?=C2=BD) ("3/" ?=C2=BE) ("4/" ?=C2=BC) @@ -2341,6 +2350,8 @@ ("//" ?=C2=B0) ("<<" ?\=C2=AB) (">>" ?\=C2=BB) + ("<~" ?\=E2=80=B9) + (">~" ?\=E2=80=BA) ("?/" ?=C2=BF) ("$/" ?=C2=A3) ("$/" ?=C2=A4) @@ -2532,6 +2543,12 @@ ("z~" ?=C5=BE) ("--" ?=C2=AF) =20 + ("'[[" ["'["]) + ("']]" ["']"]) + ("\"[[" ["\"["]) + ("\"]]" ["\"]"]) + ("\",," ["\","]) + ("',," ["',"]) ("2//" ["2/"]) ("3//" ["3/"]) ("4//" ["4/"]) @@ -2564,6 +2581,8 @@ ("///" ["//"]) ("<<<" ["<<"]) (">>>" [">>"]) + ("<~~" ["<~"]) + (">~~" [">~"]) ("?//" ["?/"]) ("$//" ["$/"]) ("A''" ["A'"]) diff --git a/lisp/leim/quail/latin-pre.el b/lisp/leim/quail/latin-pre.el index 91164df0c72..b344a6304bb 100644 --- a/lisp/leim/quail/latin-pre.el +++ b/lisp/leim/quail/latin-pre.el @@ -1107,6 +1107,9 @@ macron | - | -a -> =C4=81 -/e -> =C7=A3 -- -> =C2=AF dot above | / . | /g -> =C4=A1 .g -> =C4=A1 misc | \" ~ / | \"s -> =C3=9F ~d -> =C3=B0 ~t -> =C3=BE /a -> = =C3=A5 /e -> =C3=A6 /o -> =C3=B8 + | [ | [\\=3D' -> =E2=80=98 [\" -> =E2=80=9C + | ] | ]\\=3D' -> =E2=80=99 ]\" -> =E2=80=9D + | , | ,\\=3D' -> =E2=80=9A ,\" -> =E2=80=9E symbol | ~ | ~> -> =C2=BB ~< -> =C2=AB ~! -> =C2=A1 ~? -> = =C2=BF ~~ -> =C2=B8 symbol | _ / | _o -> =C2=BA _a -> =C2=AA // -> =C2=B0 /\\ -> = =C3=97 _y -> =C2=A5 symbol | ^ | ^r -> =C2=AE ^t -> =E2=84=A2 ^c -> =C2=A9 ^1 ->= =C2=B9 ^2 -> =C2=B2 ^3 -> =C2=B3 @@ -1132,6 +1135,12 @@ ("-y" ?=C8=B3) ("' " ?') ("''" ?=C2=B4) + ("['" ?=E2=80=98) + ("]'" ?=E2=80=99) + ("[\"" ?=E2=80=9C) + ("]\"" ?=E2=80=9D) + (",\"" ?=E2=80=9E) + (",'" ?=E2=80=9A) ("'A" ?=C3=81) ("'E" ?=C3=89) ("'I" ?=C3=8D) @@ -1295,8 +1304,10 @@ ("~-" ?=C2=AD) ("~." ?=C2=B7) ("~<" ?\=C2=AB) + ("~~<" ?\=E2=80=B9) ("~=3D" ?=C2=AF) ("~>" ?\=C2=BB) + ("~~>" ?\=E2=80=BA) ("~?" ?=C2=BF) ("~A" ?=C3=83) ("~A" ?=C4=82) --=20 2.38.1.420.g319605f8f0 --=-=-=--