From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 13 19:41:02 2013 Received: (at submit) by debbugs.gnu.org; 13 Mar 2013 23:41:03 +0000 Received: from localhost ([127.0.0.1]:52092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFvI4-0005ct-JM for submit@debbugs.gnu.org; Wed, 13 Mar 2013 19:41:02 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59500) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFuJf-0004AF-Sb for submit@debbugs.gnu.org; Wed, 13 Mar 2013 18:38:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UFuIS-0003p8-9p for submit@debbugs.gnu.org; Wed, 13 Mar 2013 18:37:23 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:57913) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFuIS-0003p4-6k for submit@debbugs.gnu.org; Wed, 13 Mar 2013 18:37:20 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42620) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFuIP-0006h8-Db for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 18:37:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UFuIM-0003oT-Am for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 18:37:17 -0400 Received: from mail-qa0-f45.google.com ([209.85.216.45]:35675) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFuIL-0003oM-Q1 for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 18:37:14 -0400 Received: by mail-qa0-f45.google.com with SMTP id g10so2525061qah.18 for ; Wed, 13 Mar 2013 15:37:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=richlowe.net; s=mail; h=x-received:from:to:subject:date:message-id:user-agent:mime-version :content-type; bh=5vvVpr/ddn3/SlR2oIUcWmTeJCWrPg06Xj/96SSPkSc=; b=GrCpaZivQwB1u7e/lontI5K9eTRNl29WTD+IZ17t7wdMYX5SkItBeetXvXQl8N844D Q3nUJ4Tp84WkUlidHmyjOe4W2MGusJe2r5aVtSEGDzkHGIuErQSqUjorXHNwmhBk9V59 cGbtg6OD82CbtIksEWdQqY62PrdhIBfY1wHsU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:subject:date:message-id:user-agent:mime-version :content-type:x-gm-message-state; bh=5vvVpr/ddn3/SlR2oIUcWmTeJCWrPg06Xj/96SSPkSc=; b=E8KrXEh0w2/qxY9zgZsh6/8FgYY8/JA2BoSPnhga4CEqV5z+2KbBN8T5n/b6mSv3UF ZS6bLKMxbzoeL3QXpGfUfarnqYo0ShpvDwu9fnVapRxMNgu9KrWrKAxi6fs0SxrVxm1M 2V2TEYdZxUnhNnirn35D4g067B2hz0rDzQTUO/Q55HhaROzpK5M8PeJ2f1o796PTpThI u9SMeLO4ZezCfXfJICQORbeH26I7vhNM79sk/HjT9ITn/tnu1wkjblEr5P+7fB+AEnBr 4xOHGZNM6bbsiZhG9IpTvzLDo1qwkZpAJSrWALuNQx/TICV21xI4u2Q39Uid4dRhs69i 7uzw== X-Received: by 10.224.42.19 with SMTP id q19mr998805qae.15.1363214232843; Wed, 13 Mar 2013 15:37:12 -0700 (PDT) Received: from quisling.home.richlowe.net (pool-72-66-99-191.washdc.fios.verizon.net. [72.66.99.191]) by mx.google.com with ESMTPS id bb8sm377896qeb.5.2013.03.13.15.37.11 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 13 Mar 2013 15:37:12 -0700 (PDT) From: Richard Lowe To: bug-gnu-emacs@gnu.org Subject: 24.2.93; auto-generated latin-ltx mappings make suboptimal glyph choices Date: Wed, 13 Mar 2013 18:37:10 -0400 Message-ID: User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.2.93 (darwin) MIME-Version: 1.0 Content-Type: text/plain X-Gm-Message-State: ALoCoQlUZ++kSsCmeb9wErJr4BdJkrn1ElD2/XDmoechaWD8g36KachXErF8cMPRRM+VC8nOUwN+ X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Wed, 13 Mar 2013 19:40:57 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) After the change http://bzr.savannah.gnu.org/lh/emacs/emacs-24/revision/107803: * leim/quail/latin-ltx.el: Auto-generate some of the entries. (latin-ltx--ascii-p): New function. (latin-ltx--define-rules): New macro. (define-rules): Use it. Certain latin-ltx rules (those for diaeresis etc) are autogenerated based on a pattern match of character names, this has the unfortunate side-effect of sometimes making undesirable (at least to me) choices of glyph. For example, on this system if I type \"e it prefers CYRILLIC SMALL LETTER E WITH DIAERESIS (the equivalent is true for A, O, etc.) -- presumably because this is the first character that matches the pattern specified -- it's rarely the character I want though, and it's impossible to get completion access to others (or possibly enter them at all, I'm not familiar enough with quail to say, I've never needed to be before) Reverting the above change restores things to defaulting latin, as it used to. It'd be nice to either get the old behaviour back, to get the ability to cycle the possibilities, or to have the ability to specify which alphabet should "win" to resolve conflicts, whichever is more appropriate. In GNU Emacs 24.2.93.5 (i386-apple-darwin11.4.2, NS apple-appkit-1138.51) of 2013-02-25 on quisling.home Windowing system distributor `Apple', version 10.3.1138 Configured using: `configure '--with-ns' '--without-pop'' Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: C-\ t e x \ " e s-x C-g M-x r e p o r t - e m b Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. Loading quail/latin-ltx...done kill-region: The mark is not set now, so there is no region Quit Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils cus-start cus-load quail help-mode easymenu time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel ns-win tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process ns multi-tty emacs) From debbugs-submit-bounces@debbugs.gnu.org Wed Mar 13 23:03:33 2013 Received: (at 13950-done) by debbugs.gnu.org; 14 Mar 2013 03:03:33 +0000 Received: from localhost ([127.0.0.1]:52252 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFyS4-000237-OY for submit@debbugs.gnu.org; Wed, 13 Mar 2013 23:03:33 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:4847) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFyS3-00022u-1r for 13950-done@debbugs.gnu.org; Wed, 13 Mar 2013 23:03:32 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAFABK/CFHO+KL9/2dsb2JhbABEhke4Rxdzgh4BAQQBIzMTAQ8FCwsODAIYDgICFBgNJIgeBgyuU5JOgSOOVIETA6R6gV6DEw X-IPAS-Result: AgAFABK/CFHO+KL9/2dsb2JhbABEhke4Rxdzgh4BAQQBIzMTAQ8FCwsODAIYDgICFBgNJIgeBgyuU5JOgSOOVIETA6R6gV6DEw X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="4862761" Received: from 206-248-162-253.dsl.teksavvy.com (HELO pastel.home) ([206.248.162.253]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 13 Mar 2013 23:02:09 -0400 Received: by pastel.home (Postfix, from userid 20848) id B9F54678BC; Wed, 13 Mar 2013 23:02:10 -0400 (EDT) From: Stefan Monnier To: Richard Lowe Subject: Re: bug#13950: 24.2.93; auto-generated latin-ltx mappings make suboptimal glyph choices Message-ID: References: Date: Wed, 13 Mar 2013 23:02:10 -0400 In-Reply-To: (Richard Lowe's message of "Wed, 13 Mar 2013 18:37:10 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 13950-done Cc: 13950-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > After the change http://bzr.savannah.gnu.org/lh/emacs/emacs-24/revision/1= 07803: > * leim/quail/latin-ltx.el: Auto-generate some of the entries. > (latin-ltx--ascii-p): New function. > (latin-ltx--define-rules): New macro. > (define-rules): Use it. > Certain latin-ltx rules (those for diaeresis etc) are autogenerated > based on a pattern match of character names, this has the unfortunate > side-effect of sometimes making undesirable (at least to me) choices of > glyph. Indeed, there were some major problems there. I installed the patch below in the emacs-24 branch, which resolves those conflicts and also adds a few new rules, while we're at it. Thanks for pointing out the obvious (too bad that's after the 24.3 release, tho). Stefan =3D=3D=3D modified file 'leim/quail/latin-ltx.el' --- leim/quail/latin-ltx.el 2013-01-01 09:11:05 +0000 +++ leim/quail/latin-ltx.el 2013-03-14 02:53:01 +0000 @@ -43,6 +43,26 @@ t t nil nil nil nil nil nil nil t) =20 (eval-when-compile + (require 'cl-lib) + + (defconst latin-ltx--mark-map + '(("DOT BELOW" . "d") + ("DOT ABOVE" . ".") + ("OGONEK" . "k") + ("CEDILLA" . "c") + ("CARON" . "v") + ;; ("HOOK ABOVE" . ??) + ("MACRON" . "=3D") + ("BREVE" . "u") + ("TILDE" . "~") + ("GRAVE" . "`") + ("CIRCUMFLEX" . "^") + ("DIAERESIS" . "\"") + ("DOUBLE ACUTE" . "H") + ("ACUTE" . "'"))) + + (defconst latin-ltx--mark-re (regexp-opt (mapcar #'car latin-ltx--mark-m= ap))) + (defun latin-ltx--ascii-p (char) (and (characterp char) (< char 128))) =20 @@ -53,7 +73,8 @@ (pcase rule (`(,_ ,(pred characterp)) (push rule newrules)) ;; Normal quail = rule. (`(,seq ,re) - (let ((count 0)) + (let ((count 0) + (re (eval re t))) (dolist (pair (ucs-names)) (let ((name (car pair)) (char (cdr pair))) @@ -68,9 +89,27 @@ (push (list x char) newrules)) (setq count (1+ count)) (push (list keys char) newrules)))))) - ;(message "latin-ltx: %d mapping for %S" count re) + ;; (message "latin-ltx: %d mappings for %S" count re) )))) - `(quail-define-rules ,@(nreverse (delete-dups newrules)))))) + (setq newrules (delete-dups newrules)) + (let ((rules (copy-sequence newrules))) + (while rules + (let ((rule (pop rules))) + (when (assoc (car rule) rules) + (let ((conflicts (list (cadr rule))) + (tail rules) + c) + (while (setq c (assoc (car rule) tail)) + (push (cadr c) conflicts) + (setq tail (cdr (memq c tail))) + (setq rules (delq c rules))) + (message "Conflict for %S: %S" + (car rule) (apply #'string conflicts))))))) + (let ((inputs (mapcar #'car newrules))) + (setq inputs (delete-dups inputs)) + (message "latin-ltx: %d rules (+ %d conflicts)!" + (length inputs) (- (length newrules) (length inputs)))) + `(quail-define-rules ,@(nreverse newrules))))) =20 (latin-ltx--define-rules ("!`" ?=C2=A1) @@ -89,69 +128,35 @@ ("$^o$" ?=C2=BA) ("?`" ?=C2=BF) =20 - ("\\`" ?=CC=80) - ("\\`{}" ?`) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\`{%s}" c) (format "\\`%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH GRAVE") - - ("\\'" ?=CC=81) - ("\\'{}" ?=C2=B4) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\'{%s}" c) (format "\\'%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH ACUTE") - - ("\\^" ?=CC=82) - ("\\^{}" ?^) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\^{%s}" c) (format "\\^%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CIRCUMFLEX") - - ("\\~" ?=CC=83) - ("\\~{}" ?=CB=9C) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\~{%s}" c) (format "\\~%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH TILDE") - - ("\\\"" ?=CC=88) - ("\\\"{}" ?=C2=A8) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\\"{%s}" c) (format "\\\"%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DIAERESIS") - - ("\\k" ?=CC=A8) - ("\\k{}" ?=CB=9B) ((lambda (name char) - (let ((c (if (match-end 1) + (let* ((c (if (match-end 1) (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\k{%s}" c) ;; (format "\\k%s" c) - ))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH OGONEK") + (match-string 2 name))) + (mark1 (cdr (assoc (match-string 3 name) latin-ltx--mark-map))) + (mark2 (if (match-end 4) + (cdr (assoc (match-string 4 name) latin-ltx--mark-ma= p)))) + (marks (if mark2 (concat mark1 "\\" mark2) mark1))) + (cl-assert mark1) + (cons (format "\\%s{%s}" marks c) + ;; Exclude "d" because we use "\\dh" for something else. + (unless (member (or mark2 mark1) '("d"));; "k" + (list (format "\\%s%s" marks c)))))) + (concat "\\`LATIN \\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH \\(" + latin-ltx--mark-re "\\)\\(?: AND \\(" + latin-ltx--mark-re "\\)\\)?\\'")) + + ((lambda (name char) + (let* ((mark (cdr (assoc (match-string 1 name) latin-ltx--mark-map)))) + (cl-assert mark) + (list (format "\\%s" mark)))) + (concat "\\`COMBINING \\(" latin-ltx--mark-re "\\)\\(?: ACCENT\\)?\\'")) =20 - ("\\c" ?=CC=A7) - ("\\c{}" ?=C2=B8) ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\c{%s}" c) (format "\\c%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CEDILLA") + (unless (latin-ltx--ascii-p char) + (let* ((mark (cdr (assoc (match-string 1 name) latin-ltx--mark-map))= )) + (cl-assert mark) + (list (format "\\%s{}" mark))))) + (concat "\\`\\(?:SPACING \\)?\\(" latin-ltx--mark-re "\\)\\(?: ACCENT\\)= ?\\'")) =20 ("\\AA" ?=C3=85) ;; ("{\\AA}" ?=C3=85) ("\\AE" ?=C3=86) ;; ("{\\AE}" ?=C3=86) @@ -166,42 +171,6 @@ ("$\\div$" ?=C3=B7) ("\\div" ?=C3=B7) ("\\o" ?=C3=B8) ;; ("{\\o}" ?=C3=B8) =20 - ("\\=3D" ?=CC=84) - ("\\=3D{}" ?=C2=AF) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\=3D{%s}" c) (format "\\=3D%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH MACRON") - - ("\\u" ?=CC=86) - ("\\u{}" ?=CB=98) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\u{%s}" c) (format "\\u%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH BREVE") - - ("\\." ?=CC=87) - ("\\.{}" ?=CB=99) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\.{%s}" c) (format "\\.%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT ABOVE") - - ("\\v" ?=CC=8C) - ("\\v{}" ?=CB=87) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\v{%s}" c) (format "\\v%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH CARON") - ("\\~{\\i}" ?=C4=A9) ("\\=3D{\\i}" ?=C4=AB) ("\\u{\\i}" ?=C4=AD) @@ -214,12 +183,6 @@ =20 ("\\H" ?=CC=8B) ("\\H{}" ?=CB=9D) - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\H{%s}" c) (format "\\H%s" c)))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOUBLE ACUTE") ("\\U{o}" ?=C5=91) ("\\Uo" ?=C5=91) ;; FIXME: Was it just a typo? =20=20 ("\\OE" ?=C5=92) ;; ("{\\OE}" ?=C5=92) @@ -248,15 +211,11 @@ (string (if (match-end 2) ?^ ?_) basechar)))) "\\(.*\\)SU\\(?:B\\|\\(PER\\)\\)SCRIPT \\(.*\\)") =20 - ("^\\gamma" ?=CB=A0) - - ((lambda (name char) - (let* ((base (format "LATIN %s LETTER %s" - (match-string 1 name) (match-string 2 name))) - (basechar (cdr (assoc base (ucs-names))))) - (when (latin-ltx--ascii-p basechar) - (string ?^ basechar)))) - "MODIFIER LETTER \\(SMALL\\|CAPITAL\\) \\(.*\\)") + ((lambda (name _char) + (let* ((basename (match-string 2 name)) + (name (if (match-end 1) (capitalize basename) (downcase basenam= e)))) + (concat "^" (if (> (length name) 1) "\\") name))) + "\\`MODIFIER LETTER \\(?:SMALL\\|CAPITA\\(L\\)\\) \\([[:ascii:]]+\\)\\'") =20=20 ;; ((lambda (name char) (format "^%s" (downcase (match-string 1 name)))) ;; "\\`MODIFIER LETTER SMALL \\(.\\)\\'") @@ -268,22 +227,14 @@ =20 ("\\b" ?=CC=B1) =20 - ("\\d" ?=CC=A3) - ;; ("\\d{}" ?) ;; FIXME: can't find the DOT BELOW character. - ((lambda (name char) - (let ((c (if (match-end 1) - (downcase (match-string 2 name)) - (match-string 2 name)))) - (list (format "\\d{%s}" c) ;; (format "\\d%s" c) - ))) - "\\(?:CAPITAL\\|SMAL\\(L\\)\\) LETTER \\(.\\) WITH DOT BELOW") - ("\\rq" ?=E2=80=99) =20 ;; FIXME: Provides some useful entries (yen, euro, copyright, registered, ;; currency, minus, micro), but also a lot of dubious ones. ((lambda (name char) - (unless (latin-ltx--ascii-p char) + (unless (or (latin-ltx--ascii-p char) + ;; We prefer COMBINING LONG SOLIDUS OVERLAY for \not. + (member name '("NOT SIGN"))) (concat "\\" (downcase (match-string 1 name))))) "\\`\\([^- ]+\\) SIGN\\'") =20 @@ -373,7 +324,6 @@ ("\\circledcirc" ?=E2=8A=9A) ("\\circleddash" ?=E2=8A=9D) ("\\clubsuit" ?=E2=99=A3) - ("\\colon" ?:) ;FIXME: Conflict with "COLON SIGN"= =E2=82=A1. ("\\coloneq" ?=E2=89=94) ("\\complement" ?=E2=88=81) ("\\cong" ?=E2=89=85) @@ -396,7 +346,6 @@ ("\\ddots" ?=E2=8B=B1) ("\\diamond" ?=E2=8B=84) ("\\diamondsuit" ?=E2=99=A2) - ("\\digamma" ?=CF=9C) ("\\divideontimes" ?=E2=8B=87) ("\\doteq" ?=E2=89=90) ("\\doteqdot" ?=E2=89=91) From unknown Tue Aug 19 05:10:26 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 11 Apr 2013 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator