From unknown Fri Jun 20 07:14:50 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#38485 <38485@debbugs.gnu.org> To: bug#38485 <38485@debbugs.gnu.org> Subject: Status: Customizing glyph widths Reply-To: bug#38485 <38485@debbugs.gnu.org> Date: Fri, 20 Jun 2025 14:14:50 +0000 retitle 38485 Customizing glyph widths reassign 38485 emacs submitter 38485 Cl=C3=A9ment Pit-Claudel severity 38485 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 03 23:23:05 2019 Received: (at submit) by debbugs.gnu.org; 4 Dec 2019 04:23:05 +0000 Received: from localhost ([127.0.0.1]:41340 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icMBs-0000sJ-KS for submit@debbugs.gnu.org; Tue, 03 Dec 2019 23:23:05 -0500 Received: from lists.gnu.org ([209.51.188.17]:43095) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icMBr-0000s9-OV for submit@debbugs.gnu.org; Tue, 03 Dec 2019 23:23:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:41687) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1icMBl-00019G-Of for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2019 23:23:02 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1icMBb-0003fN-0r for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2019 23:22:50 -0500 Received: from mail-qk1-x730.google.com ([2607:f8b0:4864:20::730]:33800) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1icMBa-00036o-Pj for bug-gnu-emacs@gnu.org; Tue, 03 Dec 2019 23:22:46 -0500 Received: by mail-qk1-x730.google.com with SMTP id d202so5938603qkb.1 for ; Tue, 03 Dec 2019 20:22:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version :content-language:content-transfer-encoding; bh=fsFnPyzpGu0V2QMoNmeEc21B5gVmYdojvGJY/sobtqk=; b=Z+oFUdUxjUeY1q0KUpizEDp5L2Q1q+3sKOPLPlijAg1cYiOdZ5HVkkKx2I0xD8u2p1 f+5eUI6cYVI2LBAohe7QPm0MFv4062yr3j3DSRr19DLmA3A4vkbRHp8mTpqJP0MFyPkz 9Nso6OWMHoA5QOX0vLbkGFvr69xftL3awwTzM2oUGn2p1x4hctF133MYlMR5b0nS07Vy Mf8f9CbEnhml7noB3oEeacjNlRHExpAjZWMor/u3UxwgHRlTxS4GGH8yFeQmDRfwhL82 oL8580VkUD5gOyO+Sj79gOXUBRndqoaL9W/opNx/DHsk+c65w88Hprcq5ID04vuwgAPf mAlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=fsFnPyzpGu0V2QMoNmeEc21B5gVmYdojvGJY/sobtqk=; b=Ujwer9/NsaiWKcdWtAsAaXuWTlOyUUkGWw2m0P7NMisp4OT8qi77IRDwnL3qVL3ZMI sWlWgnop9bg+N72l/7A8DscO4fx7EDviaydaI0RQNJtFYhj67I3L1kVzzsQ2/VHfPFLx KuWepHYOqVjMBtvAF9doDTQ8y82NoRdL85qdQjyg/SqoBofNGZ9fGFbml5dIBn+rjzMy AY++Melrt6mAKwAsGH2/bek34Nnbtwfm9iMXHzfKzIJ74oE++zaWTtYr3FPT9Qd+RHAH c84Tzz4xP39VS/bWB0dAiBRTzbuYifHGXxXaI4pPqv5d+BKbzxkmx9oSKfWtcCSnvKTT qzUA== X-Gm-Message-State: APjAAAVyLbO6Xi94Z8Z7weTCHn/4t3YjBrKdWRbUAtALveI1mPTCTlJ7 hnDzq8t3mMLEK2zazWolrbucS17q X-Google-Smtp-Source: APXvYqxnWWtfH67yizYG+cv2jPp0E2+kd+7c+S+CFCQAbXn1T7us1wRUezO8V4Y2yDn4+g6BWf83FQ== X-Received: by 2002:ae9:c10e:: with SMTP id z14mr930236qki.253.1575433357161; Tue, 03 Dec 2019 20:22:37 -0800 (PST) Received: from ?IPv6:2601:184:4180:66e7:c1ed:a694:851c:6c56? ([2601:184:4180:66e7:c1ed:a694:851c:6c56]) by smtp.googlemail.com with ESMTPSA id q35sm3199898qta.19.2019.12.03.20.22.35 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Dec 2019 20:22:36 -0800 (PST) To: bug-gnu-emacs From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Subject: Customizing glyph widths Message-ID: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> Date: Tue, 3 Dec 2019 23:22:35 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::730 X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Hi all, As recently discussed on emacs-devel (), it would be great to have a way to customize the way Emacs glyph widths. Here are the concrete use cases that I know of: * Ensuring that glyphs from variable-pitch fonts line up with monospace text. A common problem with prettify-symbols-mode is that the current programming font doesn't have all necessary symbols, so they get picked from a different (possibly non-monospace) font with a different character width, which breaks alignment. My current solution to this is to edit my font files directly (https://github.com/cpitclaudel/monospacifier). * Ensuring that wide characters, such as fullwidth CJK characters, properly line up with surrounding monospace text, my making them occupy the width of two spaces of the default font, rather than their own width (two spaces of their own font). One way to get the latter to work is to use composition to center each character over two spaces, but this is slow, inefficient, and it doesn't handle the former case where we sometimes want Emacs to fit a wider character into a narrower space. Interestingly, both of these cases are handled quite nicely in emacs -nw, because there the display is purely grid-like. I would like to have a way to do such grid-like display in graphical Emacs sessions as well, where each character occupies an exact multiple of the base character width, regardless of which font it comes from. As I wrote on emacs-devel "Deciding what this multiple should be for each character could be done in various ways; for my purposes (and for OP's case as well, I think), it would be enough to use one cell for halfwidth characters, two for fullwidth characters, and add a few exceptions for things like TAB and zero-width spaces (I'm using the terms fullwidth and halfwidth in the sense of https://www.unicode.org/reports/tr11/)." For my use case, it would be enough to have this available as a minor mode, but Yuan Fu mentioned the following on emacs-devel: "I’d like to see it as a face attribute instead of a mode. (Because I want to align my org table). Maybe there could be a face attribute (:grid WIDTH) that instructs the display engine to pad each glyph to have width that is a multiple of WIDTH in pixel, and if WIDTH is t, default to “base character width”? I remembered that ‘window-width’ gives width in char widths and had a look at its source. It knows the character width from FRAME_COLUMN_WIDTH; the comment says the value currently equals to the average width of the default font of the frame. I think this value can be used as the “base character width”." Now that I think of it, though, I could see the use for a text property. For example, prettify-symbols-mode could have an option to make each n-characters prettification n-characters wide, so that composing ~~> into ⟿ would produce a wide arrow occupying the exact same amount of space as the original uncomposed characters. One last note: one common complaint at the moment about prettify-symbols-mode is that it breaks indentation: if I prettify -> into →, the latter is one-character wide and thus any subsequent line that lines up with the → is one-character too far to the left when viewed without compositions (e.g. in a web browser). It would be wonderful if → could be centered into a two-spaced-wide cell and could count as occupying two columns (like TAB counts as occupying tab-width columns). Cheers, Clément. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 10:52:27 2019 Received: (at 38485) by debbugs.gnu.org; 4 Dec 2019 15:52:28 +0000 Received: from localhost ([127.0.0.1]:42509 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icWx1-0004hE-Jc for submit@debbugs.gnu.org; Wed, 04 Dec 2019 10:52:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47837) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icWwz-0004h0-MT for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 10:52:26 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:49736) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icWwu-0002t5-Ec; Wed, 04 Dec 2019 10:52:20 -0500 Received: from [176.228.60.248] (port=2571 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icWwt-0002lU-1T; Wed, 04 Dec 2019 10:52:20 -0500 Date: Wed, 04 Dec 2019 17:52:12 +0200 Message-Id: <83y2vshyvn.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel , Yuan Fu In-reply-to: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Tue, 3 Dec 2019 23:22:35 -0500) Subject: Re: bug#38485: Customizing glyph widths References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Clément Pit-Claudel > Date: Tue, 3 Dec 2019 23:22:35 -0500 > > Interestingly, both of these cases are handled quite nicely in emacs -nw, because there the display is purely grid-like. FTR, I'd like to clarify that Emacs doesn't "handle" the -nw case in any way, it's taken care for us of by the terminal itself. Assuming that the terminal has the same notion of character width as Emacs does, that is; if they use different tables, the characters will not align. > For my use case, it would be enough to have this available as a minor mode, but Yuan Fu mentioned the following on emacs-devel: "I’d like to see it as a face attribute instead of a mode. (Because I want to align my org table). Maybe there could be a face attribute (:grid WIDTH) that instructs the display engine to pad each glyph to have width that is a multiple of WIDTH in pixel, and if WIDTH is t, default to “base character width”? I remembered that ‘window-width’ gives width in char widths and had a look at its source. It knows the character width from FRAME_COLUMN_WIDTH; the comment says the value currently equals to the average width of the default font of the frame. I think this value can be used as the “base character width”." I don't think I understand the rationale for using a face. It sounds like a subset of the general case, and why would someone want this alignment only for one special face? Using a face also means that the same characters from a larger font will not be aligned. > Now that I think of it, though, I could see the use for a text property. For example, prettify-symbols-mode could have an option to make each n-characters prettification n-characters wide, so that composing ~~> into ⟿ would produce a wide arrow occupying the exact same amount of space as the original uncomposed characters. So what kind of text property would that be, and where and how will it come into play in the above scenario? Thanks. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 11:57:22 2019 Received: (at 38485) by debbugs.gnu.org; 4 Dec 2019 16:57:22 +0000 Received: from localhost ([127.0.0.1]:42573 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icXxq-0008GV-7J for submit@debbugs.gnu.org; Wed, 04 Dec 2019 11:57:22 -0500 Received: from mail-qk1-f175.google.com ([209.85.222.175]:34298) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icXxo-0008GG-LO for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 11:57:21 -0500 Received: by mail-qk1-f175.google.com with SMTP id d202so596403qkb.1 for <38485@debbugs.gnu.org>; Wed, 04 Dec 2019 08:57:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=3ty9XnrePs9k2Z/EDy+42Qxr8YJ6G8P49L9NVmN+Rck=; b=MA2/31lggM7cn9HPTgd4BzlHk+lOPOlR0AlnxVUIvai5EEVRWC1/MMzVfllvMY4/qe G4QPsHF8CxMsBQ37gVgMTSgPcLr9stdYFsxNw2FniQ6dSYSINgf3nOWadmRr+aPxhHTZ TU4lU1w38qk7IzULuXCb3uLJmsP5J27ix7110S8Mk2jXrI+HI09zBJYeSWBDm/zqC9Vm PHyNJ+eNt9NOMtMkFNJiFOpA1XkeUfStalZVCeuUiWfO4v+aGxbxvl66kJlSH7XUvX56 9HyCWr2bcYS/HW7hH6Y4ZMzwKIiZk6o4BdOWqeBeqbTeBvQ+0U5ZFjdm3brDSHj/h7Lt MugA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=3ty9XnrePs9k2Z/EDy+42Qxr8YJ6G8P49L9NVmN+Rck=; b=ToZZ/F0e2aKFbdYEtvpBgiBUdyY1/7vbUFKvCcapjmQ/K1/sltA7DqJLyea4le8+4J 22ClHT38Q4p9NZlTD8Kb2Ls2VbfKEK0/a7n2qXvvsjGjBfxk7DOyc2QK/f6frEYnYOH6 VRbyACaEZc2c63RK+luySVI1Axy1w8MjdKYbp9bvtinDVAR3dlFq2YJYLQk3BbuEPSr3 PDhl152YKaA0KRQwz48FQCK/hbg7gtqiIOTgKQ0r17DAJCmn/3giJDDqlhpe8XlGsgUT M5mjfwO53ufELSqe/1KVaEWL334CN6qvO+npBOZBMB6jqH7vVCA6CoC2H7E6YrC94Ian XJUQ== X-Gm-Message-State: APjAAAVjiLc7b3G/isZcSfucmqFnGW923KOf5CT/t3NMfuWarbtml61e Wmgj79+XOXMvgbyO6FOIzcsewLpf X-Google-Smtp-Source: APXvYqy2NjZfsocBiXBzW1RvQnA5++57qrtqNuVvUclIlO2nxg71Yk6OmHI08+kaGiDu9mSzgNVpbA== X-Received: by 2002:a05:620a:228:: with SMTP id u8mr4064576qkm.88.1575478633693; Wed, 04 Dec 2019 08:57:13 -0800 (PST) Received: from ?IPv6:2603:400a:0:82c:fff1:4e82:4e43:cc9e? ([2603:400a:0:82c:fff1:4e82:4e43:cc9e]) by smtp.googlemail.com with ESMTPSA id y10sm3786530qky.6.2019.12.04.08.57.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Dec 2019 08:57:13 -0800 (PST) Subject: Re: bug#38485: Customizing glyph widths To: Eli Zaretskii , Yuan Fu References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> Date: Wed, 4 Dec 2019 11:57:12 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <83y2vshyvn.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38485 Cc: 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-04 10:52, Eli Zaretskii wrote: > >> Now that I think of it, though, I could see the use for a text property. For example, prettify-symbols-mode could have an option to make each n-characters prettification n-characters wide, so that composing ~~> into ⟿ would produce a wide arrow occupying the exact same amount of space as the original uncomposed characters. > > So what kind of text property would that be, and where and how will it > come into play in the above scenario? I'm thinking something like `:display-width 3' or maybe `display-width "~~>"' (the former would mean "as wide as three spaces in the default font"; the later, "as wide as `~~>' in the default font"). These properties would be applied by prettify-symbols-mode in addition to composition. An interesting related feature is the ability to move the cursor inside composed characters. For example, when composing -> into →, assuming a font such as Fira code with a two-characters wide → symbol, it would be nice to be able to position the point in the middle of the composed symbol. I often have this problem in Emacs with ||; I compose it into ‖, but I sometimes want to type |a|, and in those cases I tend to type || then press left and type a, but this doesn't work when || has been composed into ‖. Other editors have this feature, but I'm not sure how they handle the distinction between a composition that shouldn't be "separable" (such as é = e + ') and one that should be (such as ↝ = ~ + >). Clément. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 12:05:33 2019 Received: (at 38485) by debbugs.gnu.org; 4 Dec 2019 17:05:33 +0000 Received: from localhost ([127.0.0.1]:42588 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icY5k-0008Ur-My for submit@debbugs.gnu.org; Wed, 04 Dec 2019 12:05:32 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34221) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icY5h-0008Uc-PE for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 12:05:30 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:50732) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icY5c-0005FU-MV; Wed, 04 Dec 2019 12:05:24 -0500 Received: from [176.228.60.248] (port=3248 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icY5Z-0000w2-Ja; Wed, 04 Dec 2019 12:05:23 -0500 Date: Wed, 04 Dec 2019 19:05:14 +0200 Message-Id: <83sgm0hvhx.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Wed, 4 Dec 2019 11:57:12 -0500) Subject: Re: bug#38485: Customizing glyph widths References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 38485@debbugs.gnu.org > From: Clément Pit-Claudel > Date: Wed, 4 Dec 2019 11:57:12 -0500 > > On 2019-12-04 10:52, Eli Zaretskii wrote: > > > >> Now that I think of it, though, I could see the use for a text property. For example, prettify-symbols-mode could have an option to make each n-characters prettification n-characters wide, so that composing ~~> into ⟿ would produce a wide arrow occupying the exact same amount of space as the original uncomposed characters. > > > > So what kind of text property would that be, and where and how will it > > come into play in the above scenario? > > I'm thinking something like `:display-width 3' or maybe `display-width "~~>"' (the former would mean "as wide as three spaces in the default font"; the later, "as wide as `~~>' in the default font"). > These properties would be applied by prettify-symbols-mode in addition to composition. I don't understand why would prettify-symbols-mode want to do this via a text property, instead of via a buffer-local variable. > An interesting related feature is the ability to move the cursor inside composed characters. For example, when composing -> into →, assuming a font such as Fira code with a two-characters wide → symbol, it would be nice to be able to position the point in the middle of the composed symbol. I often have this problem in Emacs with ||; I compose it into ‖, but I sometimes want to type |a|, and in those cases I tend to type || then press left and type a, but this doesn't work when || has been composed into ‖. > Other editors have this feature, but I'm not sure how they handle the distinction between a composition that shouldn't be "separable" (such as é = e + ') and one that should be (such as ↝ = ~ + >). This is an unrelated feature. We currently allow DEL to delete one characters even if it's composed with adjacent characters, but we don't allow moving inside the composition. (You can always toggle-auto-composition, though.) From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 13:14:29 2019 Received: (at 38485) by debbugs.gnu.org; 4 Dec 2019 18:14:29 +0000 Received: from localhost ([127.0.0.1]:42667 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icZAT-0007Xt-12 for submit@debbugs.gnu.org; Wed, 04 Dec 2019 13:14:29 -0500 Received: from mail-qt1-f178.google.com ([209.85.160.178]:34912) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icZAR-0007Xb-11 for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 13:14:27 -0500 Received: by mail-qt1-f178.google.com with SMTP id s8so734416qte.2 for <38485@debbugs.gnu.org>; Wed, 04 Dec 2019 10:14:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=o97T2VROLqjDVHon2RmvccZeETp+JwGaS9RAooR3i6U=; b=detrDjuJmrGk4eDt84AjWhZ3iNfHkOH34LAgNLKuoz4+Ajl7PU8WGTxzjWKf6OZnxn Kai4mH8BhSViPZ8GhrKUdoSZZeIOc+zgWOiSX4EDTjeOufUzxCPI9+SD4OxDKx/NL9Ep E8gfJYl4P3YtpRklH/WuZ9Vfxpu7RmYwOHhQkAWcC+Ih7ZRjS97Q/Kt3qsXGXmc80afo Tlb+rYm7OZGavEFEtyXKLNM6XU3OLWiZT2pUC0ACc+aaLSqM9/HOGpgJEXYkuPPUUjAd 3/7OZrifxhCdweSJ010eHPkv9Ua411dYftanWdLwro9irC5xfMx4zUdmwsGqlNgfujdc Db8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=o97T2VROLqjDVHon2RmvccZeETp+JwGaS9RAooR3i6U=; b=e5HhQtLp+TXfI1Be31+sn2OPN37hSDESpyeurHo+PecPJkGCN5gY8aRNrp+FzGcR55 xi31wSNYrh12R255Q6r62dyUyqKDdgGkK/JVRbbd5HQcCxJLbQGwntuMFmkC+R0YC24W rDwuFLGVAG9079DJzrK/w6qUHs46UJy30Y39fmFnVhgp4qF3PiNwfbtxpk6iNt670igp hpT5s9wivfYG+4cpH+tFS4kbjHVN7xJRo5ec15ud/qhf0AmExfpyWqPPeJoPSGYjxf/T nB6dPv6wKfT1VqV8UaIK7WBbczLyK+86B+Elo0AQDRHbDvBoyMOYai8ypDIaMYLNfq9K OtqQ== X-Gm-Message-State: APjAAAVaGUOj9PYUNjERRO4HMkXLekHDJj3Xh6ieXLdq9NIXEi6AmWk3 sMP8t5rxEqJxMhj5KOJw07sXgWtU X-Google-Smtp-Source: APXvYqxReUpM8H52Bln0cwvsHvBVLMNvSb6uqcknuOKyxWa2U63wFu1jKMbxjRh527irJktyqWdL4A== X-Received: by 2002:ac8:b81:: with SMTP id h1mr4039782qti.139.1575483261432; Wed, 04 Dec 2019 10:14:21 -0800 (PST) Received: from ?IPv6:2603:400a:0:82c:fff1:4e82:4e43:cc9e? ([2603:400a:0:82c:fff1:4e82:4e43:cc9e]) by smtp.googlemail.com with ESMTPSA id j7sm3957409qkd.46.2019.12.04.10.14.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Dec 2019 10:14:20 -0800 (PST) Subject: Re: bug#38485: Customizing glyph widths To: Eli Zaretskii References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> Date: Wed, 4 Dec 2019 13:14:19 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <83sgm0hvhx.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-04 12:05, Eli Zaretskii wrote: >> Cc: 38485@debbugs.gnu.org >> From: Clément Pit-Claudel >> Date: Wed, 4 Dec 2019 11:57:12 -0500 >> >> On 2019-12-04 10:52, Eli Zaretskii wrote: >>> >>>> Now that I think of it, though, I could see the use for a text property. For example, prettify-symbols-mode could have an option to make each n-characters prettification n-characters wide, so that composing ~~> into ⟿ would produce a wide arrow occupying the exact same amount of space as the original uncomposed characters. >>> >>> So what kind of text property would that be, and where and how will it >>> come into play in the above scenario? >> >> I'm thinking something like `:display-width 3' or maybe `display-width "~~>"' (the former would mean "as wide as three spaces in the default font"; the later, "as wide as `~~>' in the default font"). >> These properties would be applied by prettify-symbols-mode in addition to composition. > > I don't understand why would prettify-symbols-mode want to do this via > a text property, instead of via a buffer-local variable. Would this buffer-local variable be an alist mapping each character to the desired width? If so, this could cause issues with alignment. Consider the following: (fun x => 1 + x + x) This currently gets prettified like this: (fun x ⇒ 1 + x + x) and then reindenting yields this: (fun x ⇒ 1 + x + x) which looks wrong when viewed outside of Emacs: (fun x => 1 + x + x) If prettify-symbols could tell Emacs to center ⇒ into a two-spaces-wide stretch, things would indent and look good in both cases. This is how fonts like Fira code handle the alignment problem (the ⇒ ligature in Fira code is two-characters wide). However, consider this instead: (fun x ⇒ 1 + x + x) In this example the user worte an actual '⇒' in the buffer. In that case, it shouldn't be widened to two characters, otherwise indentation will look broken. >> An interesting related feature is the ability to move the cursor inside composed characters. For example, when composing -> into →, assuming a font such as Fira code with a two-characters wide → symbol, it would be nice to be able to position the point in the middle of the composed symbol. I often have this problem in Emacs with ||; I compose it into ‖, but I sometimes want to type |a|, and in those cases I tend to type || then press left and type a, but this doesn't work when || has been composed into ‖. >> Other editors have this feature, but I'm not sure how they handle the distinction between a composition that shouldn't be "separable" (such as é = e + ') and one that should be (such as ↝ = ~ + >). > > This is an unrelated feature. We currently allow DEL to delete one > characters even if it's composed with adjacent characters, but we > don't allow moving inside the composition. (You can always > toggle-auto-composition, though.) Should I open a separate request? I get the sense that it won't make much sense until we implement this one (if we do), so maybe I'll wait. Clément. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 13:45:43 2019 Received: (at 38485) by debbugs.gnu.org; 4 Dec 2019 18:45:43 +0000 Received: from localhost ([127.0.0.1]:42680 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icZeh-0008Se-6h for submit@debbugs.gnu.org; Wed, 04 Dec 2019 13:45:43 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38789) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icZef-0008SF-9L for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 13:45:41 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:52866) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icZeY-0007g9-Dj; Wed, 04 Dec 2019 13:45:35 -0500 Received: from [176.228.60.248] (port=1429 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icZeX-0003ch-Sh; Wed, 04 Dec 2019 13:45:34 -0500 Date: Wed, 04 Dec 2019 20:45:27 +0200 Message-Id: <83r21khquw.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Wed, 4 Dec 2019 13:14:19 -0500) Subject: Re: bug#38485: Customizing glyph widths References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: casouri@gmail.com, 38485@debbugs.gnu.org > From: Clément Pit-Claudel > Date: Wed, 4 Dec 2019 13:14:19 -0500 > > >> I'm thinking something like `:display-width 3' or maybe `display-width "~~>"' (the former would mean "as wide as three spaces in the default font"; the later, "as wide as `~~>' in the default font"). > >> These properties would be applied by prettify-symbols-mode in addition to composition. > > > > I don't understand why would prettify-symbols-mode want to do this via > > a text property, instead of via a buffer-local variable. > > Would this buffer-local variable be an alist mapping each character to the desired width? No, it will simply make each prettified symbol take up the same width as the original characters of the symbol that were composed. Isn't that what everyone would want, and want for _all_ prettified symbols? > However, consider this instead: > > (fun x ⇒ 1 + > x + x) > > In this example the user worte an actual '⇒' in the buffer. In that case, it shouldn't be widened to two characters, otherwise indentation will look broken. I was talking about a variable that affects only results of character compositions, so it won't affect a literal ⇒. And another variable will affect characters whose glyphs' width is different from an integral multiple of the frame's default character's width. > >> An interesting related feature is the ability to move the cursor inside composed characters. For example, when composing -> into →, assuming a font such as Fira code with a two-characters wide → symbol, it would be nice to be able to position the point in the middle of the composed symbol. I often have this problem in Emacs with ||; I compose it into ‖, but I sometimes want to type |a|, and in those cases I tend to type || then press left and type a, but this doesn't work when || has been composed into ‖. > >> Other editors have this feature, but I'm not sure how they handle the distinction between a composition that shouldn't be "separable" (such as é = e + ') and one that should be (such as ↝ = ~ + >). > > > > This is an unrelated feature. We currently allow DEL to delete one > > characters even if it's composed with adjacent characters, but we > > don't allow moving inside the composition. (You can always > > toggle-auto-composition, though.) > > Should I open a separate request? Feel free. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 15:53:53 2019 Received: (at 38485) by debbugs.gnu.org; 4 Dec 2019 20:53:53 +0000 Received: from localhost ([127.0.0.1]:42730 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icbei-0004eL-TT for submit@debbugs.gnu.org; Wed, 04 Dec 2019 15:53:53 -0500 Received: from mail-qk1-f174.google.com ([209.85.222.174]:37478) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icbei-0004dt-25 for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 15:53:52 -0500 Received: by mail-qk1-f174.google.com with SMTP id m188so1330238qkc.4 for <38485@debbugs.gnu.org>; Wed, 04 Dec 2019 12:53:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=l8FW0LTzT0zLtLZyAW/ddv7XqPBOJBOprxow/89CDgE=; b=OoHcFMI1bXigkDnnkKV8PULujkMBawE4tKF/Q2DW5pUW8TQ32TPpP2uTJJ4lE8wuqk p6lGOf91A7tTPhXeArGeZFgaZSTlhZpLKQYSWodBDgANg+qpBYALsjGCVwtEbauKofc1 m0NFLiVsaPDLC1Xon+7H5aFAKowalwxRFNp+w3M3fORkW1lJ/ABFlOUyGYaJM8OQhkIA W83Frj91l2Bg0+uTZ1dWpjFvf3Ea3AzHJ/Q08QF55QQlkkibBqnG05Oo1Q77Ja23M9Ny XczqYYNTfWPO3j5Ls83BCeFUgd7F2S+s3+T/GKvPglcgcmWJzBak6+GYyKis1NxDR4XG +y7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=l8FW0LTzT0zLtLZyAW/ddv7XqPBOJBOprxow/89CDgE=; b=Z+yxjIrv6DZGURErILSBVqNccBL52R52Iyp02dYLQV/ACGz2yn3OR5Pezm9vTTJKJ7 OOqATGrYcp4iKiXaVK5qHWCZi6KjtdIFr4LKaTVnhu/Qc1ZS4yG9vLAs7dMv5xK03Smf ipwdBvaX75m5PI1fHmxfQYgqaDmSzyitWwMQs5CVpaf8Iu87N9cIbkIuLSCW4j9mZgaW LyJe29vUUiDJCU9r4WHWqHTxxY3vHXCP5dk692ILrYgrp7p0bchkh0vpkpposjgxqGPn LtmmfOooW/+yd8mnc7BlmaK/q7bbOrK9oMXpSCgR4u9Vp92Wj3m9SnDIzf53VAGjhYG5 4geg== X-Gm-Message-State: APjAAAV5OFc+UsO2sbb9k+l1oLKSA5t56ckRVcjOYOYr2+y9/XFcEQBW pooKhhYipn098afBd1NXitJ3WCbW X-Google-Smtp-Source: APXvYqzHqSQOYxEKHQPYB3BRQQNww4nToI9OHZkEJbn1xwRz5RAjxZUfC8CH5OmRDZbRBHOl37AtcQ== X-Received: by 2002:a37:4bd1:: with SMTP id y200mr5303157qka.452.1575492825345; Wed, 04 Dec 2019 12:53:45 -0800 (PST) Received: from ?IPv6:2603:400a:0:82c:fff1:4e82:4e43:cc9e? ([2603:400a:0:82c:fff1:4e82:4e43:cc9e]) by smtp.googlemail.com with ESMTPSA id f2sm4439194qtm.55.2019.12.04.12.53.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Dec 2019 12:53:44 -0800 (PST) Subject: Re: bug#38485: Customizing glyph widths To: Eli Zaretskii References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> Date: Wed, 4 Dec 2019 15:53:43 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <83r21khquw.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-04 13:45, Eli Zaretskii wrote: >> Cc: casouri@gmail.com, 38485@debbugs.gnu.org >> From: Clément Pit-Claudel >> Date: Wed, 4 Dec 2019 13:14:19 -0500 >> >>>> I'm thinking something like `:display-width 3' or maybe `display-width "~~>"' (the former would mean "as wide as three spaces in the default font"; the later, "as wide as `~~>' in the default font"). >>>> These properties would be applied by prettify-symbols-mode in addition to composition. >>> >>> I don't understand why would prettify-symbols-mode want to do this via >>> a text property, instead of via a buffer-local variable. >> >> Would this buffer-local variable be an alist mapping each character to the desired width? > > No, it will simply make each prettified symbol take up the same width > as the original characters of the symbol that were composed. Isn't > that what everyone would want, and want for _all_ prettified symbols? Probably not. In proof-general, we display 'forall' as ∀ and 'exists' as ∃. In my own configuration I also change "Qed" to ■ "Defined" to □, and "Admitted" to 😱. These shouldn't be widened, I think — especially not the last ones (there is a case to be made for widening forall, since otherwise we might get indentation issues, but in Coq Qed, Defined and Admitted don't introduce indentation changes, so it's safe not to widen them. Clément. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 15:56:06 2019 Received: (at 38485) by debbugs.gnu.org; 4 Dec 2019 20:56:06 +0000 Received: from localhost ([127.0.0.1]:42735 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icbgd-0004j5-Af for submit@debbugs.gnu.org; Wed, 04 Dec 2019 15:56:06 -0500 Received: from mail-qk1-f175.google.com ([209.85.222.175]:33524) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icbga-0004ib-RP for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 15:55:49 -0500 Received: by mail-qk1-f175.google.com with SMTP id c124so1364836qkg.0 for <38485@debbugs.gnu.org>; Wed, 04 Dec 2019 12:55:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=uijUwvmcY8HzlX1XVw8IJShVwABG+Lzngemka8brSf0=; b=ebAZHn/BO0IbzfgS0rBcrmDK+XSlKKXa35VrDX+ACUXfdBui0V1mhMkrAZGxu2xARO AHckdZjit5h8+uZhPkQSquq7s1G+iM9bS27MojYzqxubh09VLsyjiVGQwPssT/Mrm2aP PiBMypRwi49Zz593fW4SSCezBKRmfQFUworXysDN1jC9rnf7ipj6Li8t0U22Q1GsHr5c ySLS+a6B53vswgocuvOLkSr0pSDcKfcjZxuiB3R48gDRG5baTagGUUxPqES56MqAkGCz JMY9L0BRrUe/6SvDHe5S5j1hIvgRx608TMYXEtH2COJ94mrYCJ5Ta4lEZmlyoHuIV88F rraQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=uijUwvmcY8HzlX1XVw8IJShVwABG+Lzngemka8brSf0=; b=slfJlLlFMA1suC07Q0K31kRiPGuVYLegvwEM6+4BNKdHSQyeClWBjh9X70xHu7vmMT +OsGUYoUHA65qDvXaX5hzfTBWZsVn+fzkonmO5B9kEuk1LSmoZOLdUptK+kkXU2nHjnU 3PE8PoQ4Wt2VHc4Rv4DrGagLdd/L3Qms1K6vHiTnoglptbsksqBuIF9WLnTYkKgsaeDL s6MW9WZh+NOLDfWtIQynfPGt0PUD1o6mqvspYsxk7QCRhPQuWCq4/UtSgIMmOJZ8a+ml YfpxSVYCbsmQl4zWrTCNNL3eY765JZpErpMElNAVlJo6GWOZD3Yx5uRQnROxCYD71Bjz IK3Q== X-Gm-Message-State: APjAAAX3d+WTc1jX7mtWADLOLH+GSxEQCpd6/4j+fAyPNAmBepitz5XI 2mhJlp+EoiuWHvuMwlW8M89ftOM9 X-Google-Smtp-Source: APXvYqwTiVj8G18fFd2SpRTByyT9fwJMSfwjKvpLmWA54v/3RUTrHI5IvSvcB5vBTfWnd2qYBq2gxg== X-Received: by 2002:ae9:e714:: with SMTP id m20mr5036187qka.403.1575492940232; Wed, 04 Dec 2019 12:55:40 -0800 (PST) Received: from ?IPv6:2603:400a:0:82c:fff1:4e82:4e43:cc9e? ([2603:400a:0:82c:fff1:4e82:4e43:cc9e]) by smtp.googlemail.com with ESMTPSA id z64sm4314561qtc.4.2019.12.04.12.55.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 04 Dec 2019 12:55:39 -0800 (PST) Subject: Re: bug#38485: Customizing glyph widths To: Eli Zaretskii References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Wed, 4 Dec 2019 15:55:38 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <83r21khquw.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-04 13:45, Eli Zaretskii wrote: >> Cc: casouri@gmail.com, 38485@debbugs.gnu.org >> From: Clément Pit-Claudel >> Date: Wed, 4 Dec 2019 13:14:19 -0500 >> >>>> I'm thinking something like `:display-width 3' or maybe `display-width "~~>"' (the former would mean "as wide as three spaces in the default font"; the later, "as wide as `~~>' in the default font"). >>>> These properties would be applied by prettify-symbols-mode in addition to composition. >>> >>> I don't understand why would prettify-symbols-mode want to do this via >>> a text property, instead of via a buffer-local variable. >> >> Would this buffer-local variable be an alist mapping each character to the desired width? > > No, it will simply make each prettified symbol take up the same width > as the original characters of the symbol that were composed. Isn't > that what everyone would want, and want for _all_ prettified symbols? Another example: the nameless-mode pacakge uses prettification to display the name of the current file as :, so that in foo-bar.el the symbol foo-bar-xyz displays as :xyz (with a different color for the colon) to shorten lines and improve readability. Widening this ':' would defeat the purpose of that package. Clément. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 22:34:23 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 03:34:23 +0000 Received: from localhost ([127.0.0.1]:42876 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ichuI-0000WY-Hg for submit@debbugs.gnu.org; Wed, 04 Dec 2019 22:34:22 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49126) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ichuH-0000WI-LT for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 22:34:21 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33917) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ichuA-0000Xo-JS; Wed, 04 Dec 2019 22:34:15 -0500 Received: from [176.228.60.248] (port=1572 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ichuA-0007LW-2m; Wed, 04 Dec 2019 22:34:14 -0500 Date: Thu, 05 Dec 2019 05:34:10 +0200 Message-Id: <83o8wnigy5.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Wed, 4 Dec 2019 15:53:43 -0500) Subject: Re: bug#38485: Customizing glyph widths References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: casouri@gmail.com, 38485@debbugs.gnu.org > From: Clément Pit-Claudel > Date: Wed, 4 Dec 2019 15:53:43 -0500 > > > No, it will simply make each prettified symbol take up the same width > > as the original characters of the symbol that were composed. Isn't > > that what everyone would want, and want for _all_ prettified symbols? > > Probably not. In proof-general, we display 'forall' as ∀ and 'exists' as ∃. In my own configuration I also change "Qed" to ■ "Defined" to □, and "Admitted" to 😱. These shouldn't be widened, I think — especially not the last ones (there is a case to be made for widening forall, since otherwise we might get indentation issues, but in Coq Qed, Defined and Admitted don't introduce indentation changes, so it's safe not to widen them. Are you saying that we _can_ not widen them, or are you saying that we _must_not_ widen them? If the latter, can you explain why not? From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 22:36:39 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 03:36:39 +0000 Received: from localhost ([127.0.0.1]:42886 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ichwV-0000aQ-Hd for submit@debbugs.gnu.org; Wed, 04 Dec 2019 22:36:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39005) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ichwT-0000aE-Ar for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 22:36:38 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33945) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ichwO-0005g9-2n; Wed, 04 Dec 2019 22:36:32 -0500 Received: from [176.228.60.248] (port=1710 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1ichwN-0007Xu-JI; Wed, 04 Dec 2019 22:36:31 -0500 Date: Thu, 05 Dec 2019 05:36:27 +0200 Message-Id: <83muc7iguc.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Wed, 4 Dec 2019 15:55:38 -0500) Subject: Re: bug#38485: Customizing glyph widths References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: casouri@gmail.com, 38485@debbugs.gnu.org > From: Clément Pit-Claudel > Date: Wed, 4 Dec 2019 15:55:38 -0500 > > Another example: the nameless-mode pacakge uses prettification to display the name of the current file as :, so that in foo-bar.el the symbol foo-bar-xyz displays as :xyz (with a different color for the colon) to shorten lines and improve readability. Widening this ':' would defeat the purpose of that package. That's why I suggest a buffer-local variable. This package should not set it, then. And anyway, trying to lump too many conflicting requirements is likely to have only one result: that this will never get implemented. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 04 22:57:11 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 03:57:11 +0000 Received: from localhost ([127.0.0.1]:42903 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iciGM-000167-WA for submit@debbugs.gnu.org; Wed, 04 Dec 2019 22:57:11 -0500 Received: from mail-qk1-f173.google.com ([209.85.222.173]:37073) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iciGL-00015s-5S for 38485@debbugs.gnu.org; Wed, 04 Dec 2019 22:57:09 -0500 Received: by mail-qk1-f173.google.com with SMTP id m188so2184127qkc.4 for <38485@debbugs.gnu.org>; Wed, 04 Dec 2019 19:57:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=DCZOEJRTt2RBXGACFS/KVkXHVyJo2DurrgAHDz9OYE4=; b=ghv3EWkNYdwYdMxKgIZrfRufaFPbpOJzTgKsK0te67bf0xTQwqj8k1b2akSyQ69xyI XAYrY/g1h4UId6ENW72x7WAIcO67xD8bRPYrxPgAgZa8bCMmXRaY9xbbLF/yBNOBlV6m x8XfCp2JDUDImaEJBEm1uTKzx1DszF+UMWgRYeUui9BER0YTllIdGbtAM5rfCgaq98n7 TnVUhquJbXZ1+awp9U9f3jbIrYuIBREhnAOKruC9GVm6DyQXLgbT38YfH35XTLPzwjo/ FRsQ6dUZXJUNWIg84GNwKKTqgwGAScCzIZx20pW1hiz/Mqf6vBzJH8kwGX+q+o7gTjiM Gp4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=DCZOEJRTt2RBXGACFS/KVkXHVyJo2DurrgAHDz9OYE4=; b=KRL/jMfaKq8vWyVlNJWj4d2+ODhYh7cyMkh0QjSR6/EdigjHeyo21mJcpNpLx/bsTt L4O250D5xySUuZcCwJ5eaXzcg95zD/pAXlklUxmWnUDcca/8NDuFc7EcL1+sftjQ3JKr kqaKYd7IEwMCH4B6+CLN31pjpvp1UoHV5koLrA3kOLhMd9MguvmzywnRQeyfDubO9iO8 a+5KjhMD72JDFLl9DgfALpzWVBpmr7IGVtit2IE4O9NwpcqUiRT4YOgFr+R4/YP1DCjZ GuZakp8Nhym/oicB6ChM/srTZ1oMv1S205yIObrLaGG+Gela61C2NvDHk6+0gdhZgsxx LSiQ== X-Gm-Message-State: APjAAAXM1bkUlGJbGB6gbKlR2e2xSZhTTl5YHBZUWOUTt+l3KYoIpW6T ZR+lcDDkLqV/ZGE4SVtUjrY= X-Google-Smtp-Source: APXvYqxMhcN9N8ZldVbkyNSMEki/3tITOovbJIA78k+VbwVt5pmxep2Kj8ktuhdSMMNo0NFYfTyjvg== X-Received: by 2002:a37:a98e:: with SMTP id s136mr6526446qke.4.1575518223448; Wed, 04 Dec 2019 19:57:03 -0800 (PST) Received: from [192.168.1.5] (c-71-207-8-160.hsd1.pa.comcast.net. [71.207.8.160]) by smtp.gmail.com with ESMTPSA id q35sm4899739qta.19.2019.12.04.19.57.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Dec 2019 19:57:03 -0800 (PST) From: Yuan Fu Message-Id: <4269B11E-D251-4B67-A116-2C77874453E5@gmail.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_EFADCEBC-BB15-4CA0-8C3A-BB1A9EAD7B31" Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3601.0.10\)) Subject: Re: bug#38485: Customizing glyph widths Date: Wed, 4 Dec 2019 22:57:01 -0500 In-Reply-To: <83y2vshyvn.fsf@gnu.org> To: Eli Zaretskii References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> X-Mailer: Apple Mail (2.3601.0.10) X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38485 Cc: =?utf-8?Q?Cl=C3=A9ment_Pit-Claudel?= , 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --Apple-Mail=_EFADCEBC-BB15-4CA0-8C3A-BB1A9EAD7B31 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > I don't think I understand the rationale for using a face. It sounds > like a subset of the general case, and why would someone want this > alignment only for one special face? What Cl=C3=A9ment want and what I want are not quite similar. For my = purpose, I want my text tables in org mode to be aligned even there is = Chinese characters in it. For example, with out alignment (in GUI): With alignment (in terminal): However, I generally use variable-pitch everywhere else in a Org file. = Because variable-pitch are generally prettier. > Using a face also means that the same characters from a larger font > will not be aligned. For me personally, that=E2=80=99s ok. I can just use a smaller font. But again, I just want to know if such a feature exists or is easily = hackable. If not, I can live without it. Cl=C3=A9ment=E2=80=99s idea = seems doable, though. You just need a local variable that maps glyph=E2=80= =99s unicode to the intended width, if I understand him correctly. Yuan --Apple-Mail=_EFADCEBC-BB15-4CA0-8C3A-BB1A9EAD7B31 Content-Type: multipart/related; type="text/html"; boundary="Apple-Mail=_03C5A055-93BB-422A-ABBF-34929E5459F2" --Apple-Mail=_03C5A055-93BB-422A-ABBF-34929E5459F2 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

I don't think I understand the rationale for using a face. =  It sounds
like a subset of the general case, and why would someone want = this
alignment only for one special face?

What = Cl=C3=A9ment want and what I want are not quite similar. For my purpose, = I want my text tables in org mode to be aligned even there is Chinese = characters in it. For example, with out alignment (in = GUI):

With alignment (in terminal):

However, I generally use variable-pitch everywhere = else in a Org file. Because variable-pitch are generally = prettier.

Using a face also means that the same characters from a = larger font
will not be aligned.

For me personally, that=E2=80=99s ok. I can just use a = smaller font.


But again, I just want to know if such = a feature exists or is easily hackable. If not, I can live without it. = Cl=C3=A9ment=E2=80=99s idea seems doable, though. You just need a local = variable that maps glyph=E2=80=99s unicode to the intended width, if I = understand him correctly.

Yuan

= --Apple-Mail=_03C5A055-93BB-422A-ABBF-34929E5459F2 Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="Screen Shot 2019-12-04 at 10.17.47 PM.png" Content-Type: image/png; x-unix-mode=0644; name="Screen Shot 2019-12-04 at 10.17.47 PM.png" Content-Id: <199EFE71-62DE-4AC9-8F75-D20E1115B021> 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 /Xr70/avHBwdUh2+cmh2eORo4shzLHFscLztRHcKdip0qnO64kx0ZjvnOW9yvuiCuni7iF1qXC64 oq4+rhLXTa6dYwhj/MZIx9SNue5Gc+O4Fbs1uN0byxwbM7Z0bPPYJ+PsxqWPWzXu9LgP7t7u+e7b 3W95GHpM9Cj1aPV45uniKfCs8bziRfeK8Fro1eL1dLzreNH4zeNveDO8J3l/5d3m/d7H10fu0+jT 62vnm+lb63udbcSOZy9jn/Ej+IX6LfQ75PfG38e/yH+f/18BbgF5AbsDHk1wnCCasH1Cd6BNID9w a2BXECsoM+iboK5g62B+cF3w/RDbEGHIjpCHHGdOLmcP50moe6g89EDoK64/dz73WBgWFhlWEdYR bhieHL4x/G6ETURORENEf6R35NzIY1GEqOioVVHXeRY8Aa+e1z/Rd+L8iSejadGJ0Ruj78e4xMhj WiehkyZOWjPpdqx9rDS2OQ7E8eLWxN2Jd4wvjP9pMnFy/OSayQ8SPBLmJZxOZCTOSNyd+DIpNGlF 0q1kp2RlcluKXkpGSn3Kq9Sw1NWpXVPGTZk/5XyaWZokrSWdlJ6SviN9YGr41HVTezK8M8ozrk1z nDZ72tnpZtPzpx+eoTeDP2N/JiEzNXN35jt+HL+OP5DFy6rN6hdwBesFj4UhwrXCXlGgaLXoYXZg 9ursRzmBOWtyesXB4ipxn4Qr2Sh5mhuVuyX3VV5c3s68ofzU/L0F5ILMgoNSQ2me9ORMy5mzZ3bK XGXlsq5C/8J1hf3yaPkOBaKYpmgpMoIb9nalk/JL5b3ioOKa4tezUmbtn20wWzq7fY7LnKVzHpZE lHw7F58rmNs2z3re4nn35nPmb12ALMha0LbQdmHZwp5FkYt2LaYuzlv8S6l76erSF1+kftFaZlG2 qKz7y8gvG8p1y+Xl178K+GrLEnyJZEnHUq+lG5Z+qBBWnKt0r6yqfLdMsOzc1x5fV389tDx7eccK nxWbVxJXSldeWxW8atdqg9Ulq7vXTFrTtJa1tmLti3Uz1p2tGl+1ZT11vXJ9V3VMdcsGuw0rN7zb KN54tSa0Zm+tee3S2lebhJsubQ7Z3LjFYkvllrffSL65sTVya1OdQ13VNuK24m0PtqdsP/0t+9v6 HWY7Kne83ynd2bUrYdfJet/6+t3mu1c0oA3Kht49GXsufhf2XUujW+PWvcy9ld+D75Xf//FD5g/X 9kXva9vP3t/4o/2PtQcYByqakKY5Tf3N4uaulrSWzoMTD7a1BrQe+GnsTzsPWR+qOWx8eMUR6pGy I0NHS44OHJMd6zuec7y7bUbbrRNTTlw5Oflkx6noU2d+jvj5xGnO6aNnAs8cOut/9uA59rnm8z7n m9q92w/84v3LgQ6fjqYLvhdaLvpdbO2c0HnkUvCl45fDLv98hXfl/NXYq53Xkq/duJ5xveuG8Maj m/k3n/5a/OvgrUW3Cbcr7ujfqbprfrfuN+ff9nb5dB2+F3av/X7i/Vvdgu7Hvyt+f9dT9oD+oOqh 1cP6R56PDvVG9F78Y+ofPY9ljwf7yv80+LP2idOTH/8K+au9f0p/z1P506Fny56bPt/5YvyLtoH4 gbsvC14Ovqp4bfp61xv2m9NvU98+HJz1jvSu+r3z+9YP0R9uDxUMDcn4cr56K4DBhmZnA/BsJwD0 NLh3uAiPCVM15zy1IJqzqZrAf2LNWVAtPgDsDAEgeREAMXCPshk2e8g0eFdt1ZNCAOrlNdK0osj2 8tT4osETD+H10NBzCwBIrQC8lw8NDW4aGnq/HQZ7E4BjhZrzpUqI8GzwjbOKOtqp4HP5Fz9lffnV Gb6HAAAAimVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAA h2kABAAAAAEAAABOAAAAAAAAAJAAAAABAAAAkAAAAAEAA5KGAAcAAAASAAAAeKACAAQAAAABAAAB CKADAAQAAAABAAAAaAAAAABBU0NJSQAAAFNjcmVlbnNob3SFzfusAAAACXBIWXMAABYlAAAWJQFJ UiTwAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9i ZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpy ZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8 cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRw Oi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lv bj4yNjQ8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5T Y3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNp b24+MTA0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAg IDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CijfVYkAAAAcaURPVAAAAAIAAAAAAAAANAAAACgAAAA0 AAAANAAADXXDSk87AAANQUlEQVR4AexdeXxN1xb+EFNR2lKpeXyG0iotNRRFJ0VQPKSIKaZozI+a IoYIUpIIEUNRoUpQQ5RKQ001F32/lj5KRIQYSxIJibfXfu9cdzgnuTfJPblJ1v4j5+x572/t8529 11rnJl9ycvIzcGAEGAFGQAWBfEwQKqhwEiPACEgEmCB4ITACjIAmAkwQmtBwBiPACDBB8BpgBBgB TQSYIDSh4QxGgBFgguA1wAgwApoIMEFoQsMZjAAjwATBa4ARYAQ0EWCC0ISGMxgBRoAJgtcAI8AI aCLABKEJDWcwAowAEwSvAUaAEdBEgAlCExrOYAQYASYIXgOMACOgiQAThCY0nMEIMAJMELwGGAFG QBMB3QhiafBKHDt2AstDAlGwYEHNAXGGYyKQ3fLznbcQhQsXwnstmqFRo7cyDdLvf1zA8eOn0P6T D1GmTOlMt6d3A3rJQzeC8JoxBz9F/owf93wvBF1Ybzy5v0wikN3y+7h9V7z4YgmEBPujVKlSmZwN kJKSAh/frxAp1qRbP1f0+bxnptvUswG95MEEoadUc3Bfei1ILYiIICpXqoBlwQFaRWxOJ5IYNWYi zp49j5EeQ9C9Wxeb28iuCnrJgwnCRgk/ePA31qxdj/iEeBQoUACfu/ZEudecrW7l5q04rF//HR4n PTbUoXb6iHZes6EdQ2WdbvRakFrTsQdBUF9xcbfRy7U/SpYsibBN6yy6v3fvvtxtlC79ikVedibo JY9cRxB79uxDhQrl8frrdewiv2PHT2L8hCmGtmfPmibPxYaEdG5+EOOb47PAotSsmVPR8r3mFumO kmDvBbkoYAneqP863m7UUHXKXbu5okrlSvjKz8ciP/HxY0ycNA0fftAWvXp2s8hPLyFUEPYLLxRF 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 --Apple-Mail=_03C5A055-93BB-422A-ABBF-34929E5459F2 Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="Screen Shot 2019-12-04 at 10.18.37 PM.png" Content-Type: image/png; x-unix-mode=0644; name="Screen Shot 2019-12-04 at 10.18.37 PM.png" Content-Id: <7A7B9EC7-EF78-4903-AF73-9A2BB810470E> iVBORw0KGgoAAAANSUhEUgAAATwAAABmCAYAAABWZy0jAAAMTmlDQ1BJQ0MgUHJvZmlsZQAASImV lwdcU1cXwO8bmSSsQARkhL1EGQIBZISwIgjIFEQlJIGEEUNCUHFTShWsW0RBrWhVxGKrFZA6Ueui KG7rKEpRqdTiwIXKdzNAa7/x+87vd9/759xzzz3n5L737gVAr5Yvk+Wj+gAUSIvkCZGhrClp6SxS N9ABBGAMDACBL1DIOPHxMQDK8P3v8vIaQFT3y24qX//s/69iIBQpBAAg8ZCzhApBAeQfAcBLBTJ5 EQBENtTbziqSqTgDspEcBghZpuIcDZepOEvD1WqbpAQu5D0AkGl8vjwHAN0WqGcVC3KgH90bkN2l QokUAD0y5CCBmC+EHAV5TEHBTBVDO+CU9YmfnL/5zBrxyefnjLAmF7WQwyQKWT5/zv9Zjv8tBfnK 4TkcYKOJ5VEJqpxh3W7kzYxWMQ1ynzQrNg6yIeTXEqHaHjJKFSujkjX2qLlAwYU1A0zI7kJ+WDRk c8gR0vzYGK0+K1sSwYMMVwg6W1LES9KOXSJShCdqfdbKZybEDXO2nMvRjm3ky9XzquxPKvOSOVr/ N8Qi3rD/FyXipFTIVAAwarEkJRayLmQjRV5itMYGsykRc2OHbeTKBFX8dpDZImlkqMY/lpEtj0jQ 2ssKFMP5YuViCS9Wy9VF4qQoTX2w3QK+On4TyE0iKSd52I9IMSVmOBehKCxckzvWIZIma/PF7sqK QhO0Y/tl+fFae5wsyo9U6W0gmymKE7Vj8QlFcEFq/OMxsqL4JE2ceGYuf2K8Jh68GMQALggDLKCE LQvMBLlA0tHX3Ad/aXoiAB/IQQ4QATetZnhEqrpHCq+JoAT8CUkEFCPjQtW9IlAM9e9HtJqrG8hW 9xarR+SBB5ALQDTIh7+V6lHSkdlSwO9QI/nH7AIYaz5sqr5/6jhQE6PVKIf9svSGLYnhxDBiFDGC 6Iyb4UF4AB4DryGweeJs3G842o/2hAeETsJ9wlVCF+HmDEmp/LNYJoEu6D9Cm3HWpxnjDtCnNx6K B0Lv0DPOxM2AGz4ezsPBg+HM3lDL1catyp31b/IcyeCTmmvtKO4UlDKKEkJx+nykrouu94gXVUU/ rY8m1qyRqnJHej6fn/tJnYXwHv25JbYE24+dxo5jZ7FDWDNgYUexFqwdO6zikTX0u3oNDc+WoI4n D/qR/GM+vnZOVSUV7g3uve7vtH2gSDRb9X4E3JmyOXJJjriIxYFvfhGLJxWMHcPydPfwA0D1HdG8 pp4z1d8HhHnuo67wGAB+FVCZ81HHtwXg4AMAGC8/6myfwcdjJQCHLwqU8mKNDlddCPBtoAefKFNg CWyBE8zIE/iAABACwsFEEAeSQBqYDusshutZDmaBeWAxKAeVYCVYBzaCLWAb2AW+A/tAMzgEjoOf wXlwEVwFt+D66QGPQT94CQYRBCEhdISBmCJWiD3iingibCQICUdikAQkDclEchApokTmIV8glchq ZCOyFalHfkAOIseRs0gnchO5h/Qiz5C3KIbSUCPUAnVAx6FslINGo0noNDQHLURL0DJ0OVqN1qF7 0Cb0OHoevYp2oY/RAQxgOhgTs8bcMDbGxeKwdCwbk2MLsAqsCqvDGrFW+E9fxrqwPuwNTsQZOAt3 g2s4Ck/GBXghvgBfhm/Ed+FN+En8Mn4P78c/EOgEc4IrwZ/AI0wh5BBmEcoJVYQdhAOEU/Bp6iG8 JBKJTKIj0Rc+jWnEXOJc4jLiJuJe4jFiJ7GbOEAikUxJrqRAUhyJTyoilZM2kPaQjpIukXpIr8k6 ZCuyJzmCnE6WkkvJVeTd5CPkS+SH5EGKPsWe4k+JowgpcygrKNsprZQLlB7KINWA6kgNpCZRc6mL qdXURuop6m3qcx0dHRsdP53JOhKdRTrVOt/rnNG5p/OGZkhzoXFpGTQlbTltJ+0Y7SbtOZ1Od6CH 0NPpRfTl9Hr6Cfpd+mtdhu5YXZ6uUHehbo1uk+4l3Sd6FD17PY7edL0SvSq9/XoX9Pr0KfoO+lx9 vv4C/Rr9g/rX9QcMGAYeBnEGBQbLDHYbnDV4ZEgydDAMNxQalhluMzxh2M3AGLYMLkPA+IKxnXGK 0WNENHI04hnlGlUafWfUYdRvbGg83jjFeLZxjfFh4y4mxnRg8pj5zBXMfcxrzLejLEZxRolGLR3V OOrSqFcmo01CTEQmFSZ7Ta6avDVlmYab5pmuMm02vWOGm7mYTTabZbbZ7JRZ32ij0QGjBaMrRu8b /as5au5inmA+13ybebv5gIWlRaSFzGKDxQmLPkumZYhlruVayyOWvVYMqyAridVaq6NWf7CMWRxW PquadZLVb21uHWWttN5q3WE9aONok2xTarPX5o4t1ZZtm2271rbNtt/Oym6S3Ty7Brtf7Sn2bHux /Xr70/avHBwdUh2+cmh2eORo4shzLHFscLztRHcKdip0qnO64kx0ZjvnOW9yvuiCuni7iF1qXC64 oq4+rhLXTa6dYwhj/MZIx9SNue5Gc+O4Fbs1uN0byxwbM7Z0bPPYJ+PsxqWPWzXu9LgP7t7u+e7b 3W95GHpM9Cj1aPV45uniKfCs8bziRfeK8Fro1eL1dLzreNH4zeNveDO8J3l/5d3m/d7H10fu0+jT 62vnm+lb63udbcSOZy9jn/Ej+IX6LfQ75PfG38e/yH+f/18BbgF5AbsDHk1wnCCasH1Cd6BNID9w a2BXECsoM+iboK5g62B+cF3w/RDbEGHIjpCHHGdOLmcP50moe6g89EDoK64/dz73WBgWFhlWEdYR bhieHL4x/G6ETURORENEf6R35NzIY1GEqOioVVHXeRY8Aa+e1z/Rd+L8iSejadGJ0Ruj78e4xMhj WiehkyZOWjPpdqx9rDS2OQ7E8eLWxN2Jd4wvjP9pMnFy/OSayQ8SPBLmJZxOZCTOSNyd+DIpNGlF 0q1kp2RlcluKXkpGSn3Kq9Sw1NWpXVPGTZk/5XyaWZokrSWdlJ6SviN9YGr41HVTezK8M8ozrk1z nDZ72tnpZtPzpx+eoTeDP2N/JiEzNXN35jt+HL+OP5DFy6rN6hdwBesFj4UhwrXCXlGgaLXoYXZg 9ursRzmBOWtyesXB4ipxn4Qr2Sh5mhuVuyX3VV5c3s68ofzU/L0F5ILMgoNSQ2me9ORMy5mzZ3bK XGXlsq5C/8J1hf3yaPkOBaKYpmgpMoIb9nalk/JL5b3ioOKa4tezUmbtn20wWzq7fY7LnKVzHpZE lHw7F58rmNs2z3re4nn35nPmb12ALMha0LbQdmHZwp5FkYt2LaYuzlv8S6l76erSF1+kftFaZlG2 qKz7y8gvG8p1y+Xl178K+GrLEnyJZEnHUq+lG5Z+qBBWnKt0r6yqfLdMsOzc1x5fV389tDx7eccK nxWbVxJXSldeWxW8atdqg9Ulq7vXTFrTtJa1tmLti3Uz1p2tGl+1ZT11vXJ9V3VMdcsGuw0rN7zb KN54tSa0Zm+tee3S2lebhJsubQ7Z3LjFYkvllrffSL65sTVya1OdQ13VNuK24m0PtqdsP/0t+9v6 HWY7Kne83ynd2bUrYdfJet/6+t3mu1c0oA3Kht49GXsufhf2XUujW+PWvcy9ld+D75Xf//FD5g/X 9kXva9vP3t/4o/2PtQcYByqakKY5Tf3N4uaulrSWzoMTD7a1BrQe+GnsTzsPWR+qOWx8eMUR6pGy I0NHS44OHJMd6zuec7y7bUbbrRNTTlw5Oflkx6noU2d+jvj5xGnO6aNnAs8cOut/9uA59rnm8z7n m9q92w/84v3LgQ6fjqYLvhdaLvpdbO2c0HnkUvCl45fDLv98hXfl/NXYq53Xkq/duJ5xveuG8Maj m/k3n/5a/OvgrUW3Cbcr7ujfqbprfrfuN+ff9nb5dB2+F3av/X7i/Vvdgu7Hvyt+f9dT9oD+oOqh 1cP6R56PDvVG9F78Y+ofPY9ljwf7yv80+LP2idOTH/8K+au9f0p/z1P506Fny56bPt/5YvyLtoH4 gbsvC14Ovqp4bfp61xv2m9NvU98+HJz1jvSu+r3z+9YP0R9uDxUMDcn4cr56K4DBhmZnA/BsJwD0 NLh3uAiPCVM15zy1IJqzqZrAf2LNWVAtPgDsDAEgeREAMXCPshk2e8g0eFdt1ZNCAOrlNdK0osj2 8tT4osETD+H10NBzCwBIrQC8lw8NDW4aGnq/HQZ7E4BjhZrzpUqI8GzwjbOKOtqp4HP5Fz9lffnV Gb6HAAAAimVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAA h2kABAAAAAEAAABOAAAAAAAAAJAAAAABAAAAkAAAAAEAA5KGAAcAAAASAAAAeKACAAQAAAABAAAB PKADAAQAAAABAAAAZgAAAABBU0NJSQAAAFNjcmVlbnNob3QwKlWPAAAACXBIWXMAABYlAAAWJQFJ UiTwAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9i ZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpy ZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8 cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRw Oi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lv bj4zMTY8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5T Y3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNp b24+MTAyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAg IDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CrA1mMwAAAAcaURPVAAAAAIAAAAAAAAAMwAAACgAAAAz AAAAMwAADbTZ+nCPAAANgElEQVR4AexdD4wU1Rn/ZnZPxIqCFmux6EmspRj+FIzYpELPU6GxZ7TQ CrGgJ1AM4SCgKJyB5kApAvWCbS+AJAdY4NqCVTDhaLiiVxKgFUUMQiilVyygd8oRlnInNzvT7+3M 3Lydndndmd2dnWG+SfZ25s2b9773+779zXvf9947QcED6CAECAFCIAQICER4IdAyNZEQIAQSCBDh kSEQAoRAaBAgwguNqqmhhAAhQIRHNkAIEAKhQYAILzSqpoYSAoQAER7ZACFACIQGASK80KiaGkoI EAJEeGQDhAAhEBoEiPBCo2pqKCFACBDhkQ0QAoRAaBAgwguNqqmhhAAhQIRHNkAIEAKhQYAILzSq poYSAoQAER7ZACFACIQGASK80KiaGkoIEAJEeGQDhAAhEBoEiPBCo2pqKCFACBDhkQ0QAoRAaBAg wguNqqmhhAAhQIRHNhB4BKTzCjQfVP81S7+hIgz8urdNOrZfhkulIgy/2dt6qTbnCDgmvM5PZVjx hmpc90yMwJjbnVdKTwQXAT/qP/ZRHG6drdpk9coozLvbG3xj/5Rh1DQZWlh1/QQ4vjkCfb2pumi1 +FH/TsBwTHi8cdWsisKsoU6qC17e9s8UuNClyv2N/gJc7bAJndj7+DwGUFJiehDL7CoR4LaA9Qr8 qP/YJ0h4M1TC89om9/5Wgoqtqm4ffzYCqysEk6KvrEs/6t8Jws4Jr4jG5aRh+cr72iMS/PKCWlrj O1EYea2zkj94XYLyTTbPXCfAye0R6GNz24/JxSQXOzyKK5MCKx6Jw9KEjQjQ3BiBwU7finYN82F6 cbHOHZBAEd6/GuNQswfgmg6AB6siMO7buQOQqYT1UyWYc0LN1YSENzyfhHeHAKfWRaBXJiF8dL8Y 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 m0sBQu8CtAAAAABJRU5ErkJggg== --Apple-Mail=_03C5A055-93BB-422A-ABBF-34929E5459F2-- --Apple-Mail=_EFADCEBC-BB15-4CA0-8C3A-BB1A9EAD7B31-- From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 05 09:26:22 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 14:26:22 +0000 Received: from localhost ([127.0.0.1]:43383 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ics5G-0007tj-D9 for submit@debbugs.gnu.org; Thu, 05 Dec 2019 09:26:22 -0500 Received: from mail-qt1-f173.google.com ([209.85.160.173]:34047) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ics5D-0007tU-Qz for 38485@debbugs.gnu.org; Thu, 05 Dec 2019 09:26:20 -0500 Received: by mail-qt1-f173.google.com with SMTP id 5so3720000qtz.1 for <38485@debbugs.gnu.org>; Thu, 05 Dec 2019 06:26:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=oMlViuFFEfAN5i49eXjKKVL9Ewd7AowWy7WGgUOh23g=; b=EcxBeapgoPD6JAGbU00egsjXuGkwA3JlnfcLNuJQuIUU4FICB6SQEvINQwYlIxQJbj UI8iBcTC4T1vEbttOuNSWtgcHDwRG5XYGuK3WcJKB/NffTFMbN/ZjONGIbpoxNHkXou/ z7um3xcVy9vLz2owJZAJ7DHKU6BsI7ev/NBZ2DrCNLcf7HOyyj4I9aZyLBgOJWcwoGMI eQ0SBynfFUcw7SjX/WlvZN7a2g1X7TlYCLW7R4mQfwQKMXbmfhR7IPSC+QaV4s62f1UJ kaPF+tPB9H/MNrx3FlNzX/DGQjaloQHD+Ap9nA33V0RmY0e7V4Wct2JBKqDdf7rWksUG BuTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=oMlViuFFEfAN5i49eXjKKVL9Ewd7AowWy7WGgUOh23g=; b=F+JAnsHtfNPU2xQ2lYGaWpdBD2uGBQuucfy5RfOjHmd20cQMLTDyY7vwZmkIDT6ya4 j3qTxhJcgrdb+bcUZ5t8FTEAKLWckL1XY1T2BNeEmPgDcnowyeIjE20EtqR8+rz+Iktz +qCBr3mJ1illFt0CiS5Lz/tYHinzxMnE1VPSafzP75a79eZeuY1OE7Se7DI3hFQqE1Bc 2XlXzztXEP9FO+vuJT36+bNXIvtqc8QbV6/kaOMrgjvmAvpOgwDePCdKRG/CrhtfT3YW ba+4XQpiDSbAYB/t3MJppwWOyJqTQXdTCz+TDDVQNAZ1cjVmidbXl8BJMyOULxl8PeYw /Dgw== X-Gm-Message-State: APjAAAXMqpWZtAfkDUdnGDs9JZlnX9Oebvj0GpUfvQm18NXXde9gCZXd H+FlHlKB7ckR6CLOjAKUCwz82u1u X-Google-Smtp-Source: APXvYqyYHZWMt04Zxwcxc/0VbzD0pwrmO0N+QQJHLaibyD9KKcM/3Xib/hzjD9Kk7WX6h/7M661V/g== X-Received: by 2002:ac8:195d:: with SMTP id g29mr7836327qtk.65.1575555974140; Thu, 05 Dec 2019 06:26:14 -0800 (PST) Received: from ?IPv6:2603:400a:0:82c:fff1:4e82:4e43:cc9e? ([2603:400a:0:82c:fff1:4e82:4e43:cc9e]) by smtp.googlemail.com with ESMTPSA id t15sm4934377qkt.30.2019.12.05.06.26.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Dec 2019 06:26:13 -0800 (PST) Subject: Re: bug#38485: Customizing glyph widths To: Eli Zaretskii References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Thu, 5 Dec 2019 09:26:12 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <83o8wnigy5.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-04 22:34, Eli Zaretskii wrote: >> Cc: casouri@gmail.com, 38485@debbugs.gnu.org >> From: Clément Pit-Claudel >> Date: Wed, 4 Dec 2019 15:53:43 -0500 >> >>> No, it will simply make each prettified symbol take up the same width >>> as the original characters of the symbol that were composed. Isn't >>> that what everyone would want, and want for _all_ prettified symbols? >> >> Probably not. In proof-general, we display 'forall' as ∀ and 'exists' as ∃. In my own configuration I also change "Qed" to ■ "Defined" to □, and "Admitted" to 😱. These shouldn't be widened, I think — especially not the last ones (there is a case to be made for widening forall, since otherwise we might get indentation issues, but in Coq Qed, Defined and Admitted don't introduce indentation changes, so it's safe not to widen them. > > Are you saying that we _can_ not widen them, or are you saying that we > _must_not_ widen them? If the latter, can you explain why not? That we must not. I set up these prettifications specifically to make the characters narrower and reduce visual clutter; widening them would defeat that purpose. I commonly write things like this: Lemma lcomm: forall x y, x ~+~ y <-> y ~+~ x. Proof. induction x; cbn; try rewrite IHx; reflexivity. Defined. with prettification, it looks like this: Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. ∵. induction x; cbn; try rewrite IHx; reflexivity. □. What I really want is this: Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. ∵. induction x; cbn; try rewrite IHx; reflexivity. □. but not this: Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. ∵ . induction x; cbn; try rewrite IHx; reflexivity. □ . Clément. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 05 09:29:43 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 14:29:43 +0000 Received: from localhost ([127.0.0.1]:43388 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ics8U-0007xo-VO for submit@debbugs.gnu.org; Thu, 05 Dec 2019 09:29:43 -0500 Received: from mail-qk1-f181.google.com ([209.85.222.181]:36226) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ics8T-0007xb-Fx for 38485@debbugs.gnu.org; Thu, 05 Dec 2019 09:29:41 -0500 Received: by mail-qk1-f181.google.com with SMTP id v19so3486791qkv.3 for <38485@debbugs.gnu.org>; Thu, 05 Dec 2019 06:29:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=jVM7GgoM52BbZ5C8o/34e6U9MNvGlamFrRZXBhGWULQ=; b=cm2mTyAVjp/OiK9EbgiR/vnqz8NogZ7PiNnndFp/RcyKiYGpY6LEHp2NN/zfh1MxTb 8JYbqNjeqtVts3emMJfBctNbySdw5Zz/FkND0KDG8w8yZ0xa67uUQri/BzPuQV8kvolK kyQ4ggnF7Y1p6rf7kpnj99RrsX2QZ+OmAnujWCpQTAheA0CTbMpno8np6DQIDE/K0syn f6JpqGYSqbdgnFgMBDKS6y/QU8LqxUTFfEX9VbbBxAyuytl91yrqRwr8d3+xmdFj4yo6 o2xSatXAMiGbF8CQPc8GRT0O2ppj33eeUH4AoWlIGxkbpb0oFjMWcuWkobq41fFL7FhG 1qiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=jVM7GgoM52BbZ5C8o/34e6U9MNvGlamFrRZXBhGWULQ=; b=COb8Zn072FHFw03urZkV6UlQL9WZbk8pV8PZWFJvaeo/xj3H/6TtnJZvvCaLBC0d3r XU/K8Hw3nLNq4VeuL7OfjOjm+1eolT9q7mGRumaGW3VMAdngwo1gl/ZwyUNisoBZoaRk y4x5LF2tf+ZGx2vdJpMXKPEVcv3+HiETP8kmGWCKYLuHdAB3UfjZh74TJVVKQSxVh6h0 F6bmXJkV8/pBBVFBYxXB/pF8D7qQ3YpCN3KZsC8yQo1FezpvSRYDgpZiE01yFZxKycOd auUf5PS7AcRMHImX1kvc3zqUHHkl4Oz7uSXIUsx4habKO2NHHakRY/tBMFtdA/iCYdf6 xSJg== X-Gm-Message-State: APjAAAXtenD1Hm8l1IR8xWd9B67H3kGo9uMyDPCLSmMhMnafEQJRP334 00hULEz1v/1ed89lKQuNwlPCKGcT X-Google-Smtp-Source: APXvYqzbG3jSOAU2iygKvx30YgEMW9+nA/cn/XaJPgqSFRmu+o3Zfgz3LtbCHm+nz8nwEAv0oj03Vw== X-Received: by 2002:a05:620a:94f:: with SMTP id w15mr8677372qkw.63.1575556175881; Thu, 05 Dec 2019 06:29:35 -0800 (PST) Received: from ?IPv6:2603:400a:0:82c:fff1:4e82:4e43:cc9e? ([2603:400a:0:82c:fff1:4e82:4e43:cc9e]) by smtp.googlemail.com with ESMTPSA id a66sm4880831qkb.27.2019.12.05.06.29.35 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Dec 2019 06:29:35 -0800 (PST) Subject: Re: bug#38485: Customizing glyph widths To: Eli Zaretskii References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <83muc7iguc.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Thu, 5 Dec 2019 09:29:34 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <83muc7iguc.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-04 22:36, Eli Zaretskii wrote: >> Cc: casouri@gmail.com, 38485@debbugs.gnu.org >> From: Clément Pit-Claudel >> Date: Wed, 4 Dec 2019 15:55:38 -0500 >> >> Another example: the nameless-mode pacakge uses prettification to display the name of the current file as :, so that in foo-bar.el the symbol foo-bar-xyz displays as :xyz (with a different color for the colon) to shorten lines and improve readability. Widening this ':' would defeat the purpose of that package. > > That's why I suggest a buffer-local variable. This package should not > set it, then. But you could mix this package with other prettifications, and want the widening behavior for these prettifications but not the nameless-mode ones. Here's another example: When I write (lambda x (+ x x)) in Elisp and it gets abbreviated to (λ x (+ x x)), I wouldn't want it to be changed to (λ x (+ x x)). But if I write this: (-> lst sort nreverse) Then I do want it to be prettified to (→ lst sort nreverse) and not to (→ lst sort nreverse) Clément. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 05 10:19:30 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 15:19:30 +0000 Received: from localhost ([127.0.0.1]:45031 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icsuf-0001BC-Ng for submit@debbugs.gnu.org; Thu, 05 Dec 2019 10:19:29 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34890) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icsud-0001Ay-U1 for 38485@debbugs.gnu.org; Thu, 05 Dec 2019 10:19:28 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:41243) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icsuY-00028p-Np; Thu, 05 Dec 2019 10:19:22 -0500 Received: from [176.228.60.248] (port=4488 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icsuX-0001EH-Iv; Thu, 05 Dec 2019 10:19:22 -0500 Date: Thu, 05 Dec 2019 17:19:19 +0200 Message-Id: <83a786iyvc.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Thu, 5 Dec 2019 09:26:12 -0500) Subject: Re: bug#38485: Customizing glyph widths References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: casouri@gmail.com, 38485@debbugs.gnu.org > From: Clément Pit-Claudel > Date: Thu, 5 Dec 2019 09:26:12 -0500 > > > Are you saying that we _can_ not widen them, or are you saying that we > > _must_not_ widen them? If the latter, can you explain why not? > > That we must not. I set up these prettifications specifically to make the characters narrower and reduce visual clutter; widening them would defeat that purpose. So in this case the alignment considerations are thrown out the window? > I commonly write things like this: > > Lemma lcomm: forall x y, x ~+~ y <-> y ~+~ x. > Proof. induction x; cbn; try rewrite IHx; reflexivity. Defined. > > with prettification, it looks like this: > > Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. > ∵. induction x; cbn; try rewrite IHx; reflexivity. □. > > What I really want is this: > > Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. > ∵. induction x; cbn; try rewrite IHx; reflexivity. □. > > but not this: > > Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. > ∵ . induction x; cbn; try rewrite IHx; reflexivity. □ . Why is "Proof" treated differently from the other symbols? How would the user know which one is which? From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 05 14:51:03 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 19:51:03 +0000 Received: from localhost ([127.0.0.1]:45235 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icx9T-0002KI-7Q for submit@debbugs.gnu.org; Thu, 05 Dec 2019 14:51:03 -0500 Received: from mail-qv1-f52.google.com ([209.85.219.52]:40979) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icx9R-0002Jm-J6 for 38485@debbugs.gnu.org; Thu, 05 Dec 2019 14:51:02 -0500 Received: by mail-qv1-f52.google.com with SMTP id b18so1761979qvo.8 for <38485@debbugs.gnu.org>; Thu, 05 Dec 2019 11:51:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=p6fXN/zS/zND2SpdY9qTubGL39E++nU1YObZB7P105c=; b=tvhpwQ/HCMQbkTsXfXpzJ4ntpnDuORqaujpxokDsxWMpAD4Fx75GpgVjgYKkIoc5iA qPLdnezHASft31slbw8H027jeAggdFoBaovvltOZc8kOmx+PFGxavN6sUz75s0UBFn22 RfmFpscI0NGgqrGELpmPXAsq7yjF7Fl90bcQe7F09aeMP9abcarpreAG04EnoRGcAfdT fj946ptyaukCnvjKmkwLI4WAE3CuWF8BybTHl/005WsfINyH2MZaWsshr9PARfRV1BNU 6FzxOCn9jLgARwQmtaY9LVQQFEhAvylvNFqkti2qsxT/O21cKzPrGb+KSfCUReer47Am qHOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=p6fXN/zS/zND2SpdY9qTubGL39E++nU1YObZB7P105c=; b=XpGcHTz8bprGcCsLXA5km7Ifi8ahhDiudgH2ZL5UueQaNYLp23o9OD9GYqbOw9cV/j oMfuM1pnYHjW5GIeQwPDlFNshvY7NxKsYgaeGJZYcKM3eTXx6ysqxKorgJHeOqbqltYa KlI5dDOwSNWwHQ43CJXH+ZJu0YK7zR/mwt7fB8VKMWtE7Fuw/PMxWrI6TaGI+mDHwJlV WUGOlCFV4Sq+gWodF6UaHqK+5ZSFYimDjZQIi9IWNjz/N7BN1UKDGOPYezCXkKY+kKtT 1d5O7F86IXHokn3V7YHPJioHsJdr/T1UVokO2UtaE/EY/x31TmLdk5+B8Q/pn1Bj9iYc wEJw== X-Gm-Message-State: APjAAAUFmYVGSPQsYEomcmBbsN3QfGt8aF79BQHaD+3N+c8V6UG6Ss4m V2SUGS2VCf+hkwQVSKNDcA344yW9 X-Google-Smtp-Source: APXvYqxXu924vXuBkXrwgTTVl7dniQe4re2mbttw3eCNEYRmX7X56IZkPPHy72YvocjFuCctY2f0SA== X-Received: by 2002:ad4:4949:: with SMTP id o9mr8916596qvy.189.1575575455871; Thu, 05 Dec 2019 11:50:55 -0800 (PST) Received: from ?IPv6:2603:400a:0:82c:fff1:4e82:4e43:cc9e? ([2603:400a:0:82c:fff1:4e82:4e43:cc9e]) by smtp.googlemail.com with ESMTPSA id l7sm5758058qtf.84.2019.12.05.11.50.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Dec 2019 11:50:55 -0800 (PST) Subject: Re: bug#38485: Customizing glyph widths To: Eli Zaretskii References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> <83a786iyvc.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: <5b3d638e-5913-2c3d-dba1-0c3f387a7ff2@gmail.com> Date: Thu, 5 Dec 2019 14:50:54 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <83a786iyvc.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-05 10:19, Eli Zaretskii wrote: >> Cc: casouri@gmail.com, 38485@debbugs.gnu.org >> From: Clément Pit-Claudel >> Date: Thu, 5 Dec 2019 09:26:12 -0500 >> >>> Are you saying that we _can_ not widen them, or are you saying that we >>> _must_not_ widen them? If the latter, can you explain why not? >> >> That we must not. I set up these prettifications specifically to make the characters narrower and reduce visual clutter; widening them would defeat that purpose. > > So in this case the alignment considerations are thrown out the > window? Yes; for 'forall' it's debatable, but for Qed, Defined and Admitted it's safe to not widen them, because they don't introduce indentation points. >> I commonly write things like this: >> >> Lemma lcomm: forall x y, x ~+~ y <-> y ~+~ x. >> Proof. induction x; cbn; try rewrite IHx; reflexivity. Defined. >> >> with prettification, it looks like this: >> >> Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. >> ∵. induction x; cbn; try rewrite IHx; reflexivity. □. >> >> What I really want is this: >> >> Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. >> ∵. induction x; cbn; try rewrite IHx; reflexivity. □. >> >> but not this: >> >> Lemma lcomm: ∀ x y, x ⨤ y ↔ y ⨤ x. >> ∵ . induction x; cbn; try rewrite IHx; reflexivity. □ . > > Why is "Proof" treated differently from the other symbols? How would > the user know which one is which? Sorry, I think I don't understand the question :/ From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 05 15:06:46 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 20:06:46 +0000 Received: from localhost ([127.0.0.1]:45266 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icxOg-0002mq-Ki for submit@debbugs.gnu.org; Thu, 05 Dec 2019 15:06:46 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43393) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icxOf-0002me-Jv for 38485@debbugs.gnu.org; Thu, 05 Dec 2019 15:06:45 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:46474) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1icxOa-0005b2-8t; Thu, 05 Dec 2019 15:06:40 -0500 Received: from [176.228.60.248] (port=2266 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1icxOW-0002Cc-VS; Thu, 05 Dec 2019 15:06:37 -0500 Date: Thu, 05 Dec 2019 22:06:34 +0200 Message-Id: <83o8wmh705.fsf@gnu.org> From: Eli Zaretskii To: =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel In-reply-to: <5b3d638e-5913-2c3d-dba1-0c3f387a7ff2@gmail.com> (message from =?utf-8?Q?Cl=C3=A9ment?= Pit-Claudel on Thu, 5 Dec 2019 14:50:54 -0500) Subject: Re: bug#38485: Customizing glyph widths References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> <83a786iyvc.fsf@gnu.org> <5b3d638e-5913-2c3d-dba1-0c3f387a7ff2@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: casouri@gmail.com, 38485@debbugs.gnu.org > From: Clément Pit-Claudel > Date: Thu, 5 Dec 2019 14:50:54 -0500 > > > Why is "Proof" treated differently from the other symbols? How would > > the user know which one is which? > > Sorry, I think I don't understand the question :/ Which part? You have shown an example where some prettified symbols are treated differently than others, with respect to their width on display. I'm asking why the difference, and how will users know when to ask one behavior and when the other. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 05 15:53:10 2019 Received: (at 38485) by debbugs.gnu.org; 5 Dec 2019 20:53:10 +0000 Received: from localhost ([127.0.0.1]:45360 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icy7Z-000812-Ss for submit@debbugs.gnu.org; Thu, 05 Dec 2019 15:53:10 -0500 Received: from mail-qk1-f177.google.com ([209.85.222.177]:34544) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1icy7Y-00080k-50 for 38485@debbugs.gnu.org; Thu, 05 Dec 2019 15:53:08 -0500 Received: by mail-qk1-f177.google.com with SMTP id d202so4603273qkb.1 for <38485@debbugs.gnu.org>; Thu, 05 Dec 2019 12:53:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=b0tZjrmZkgYy+02FBQKVZWrpHKCClxr7Nv8LbkTJH6I=; b=SZEoP8MMn/Jy3ZbHIvph97elzJdNQqD5crGSPXsKowp9xvlQSJG+UiD5Ny32tqXJgw Kqf/rqH/OOgxJXRJVYUM1euDpsQZhooa+NEo0M6WlCMCWEwW+drEYg3gmLkTaL7qArdW ZxGLOcxH8+P+amLAbzHdH2NvaZscBnqgCKIGHZcwwW5BATpdBM4rYoYf7L/CBLCZvcNN YRWAoT0AHlP5Mc167qOiLV5xd5wZ7HmkhSRnWJWmCtydw359n28PBlFMLjiSlK38nnFT S3M4CrRyPhSXQZ54s5U31D4LQ7e0cL36QUg6nbaxAttl4xOL+UJZNGi3Z/ZGgwiZLMR3 lZgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=b0tZjrmZkgYy+02FBQKVZWrpHKCClxr7Nv8LbkTJH6I=; b=W54qHFSh6dsXK+l/yjvIqNIL2deks2/GI99o8lvzMb0Twk5iG6467QRsM6Ss5MLHg6 INyuDp2iJ1Zd/Mk1B0T9wnroFtIZdwFkXtiucPuNwJ6sp/Pp/OKrW/RrLbN1tncrteEp SETlZZ3EjnmxNnta+OdOCOZ+W4MqzDcB1JWWaAYiyH8MVzPyH3F88Ihy/jzsX/tRF8En /Pb0SzOPkWy07xnnHqG9q1R7RYEjf9sh3ItNwalN/pHWW16ZELTnp0dEVzHhk4Adesp+ wr9jZsOuHjmDXeY2fBRDdY3n43tgnt8uTuzV2yjBDC36iOfa4uKRx1tIgKElh+Lv+XD6 TfmQ== X-Gm-Message-State: APjAAAUbjClBt3XSthQKGKpQcB8r0XfRQqURF9zC6P1At0ESXaBiDyP5 Jihq58iCQMhxtIWdUvud8XLk6G25 X-Google-Smtp-Source: APXvYqxLKFRlmAJbUMhRHupx3MRqMx5E05I+nx77rilvTHpbSoG/Dp6EQ0kVvYFEOLHSXeSVb8SmkQ== X-Received: by 2002:a37:61c6:: with SMTP id v189mr10045375qkb.158.1575579182447; Thu, 05 Dec 2019 12:53:02 -0800 (PST) Received: from ?IPv6:2603:400a:0:82c:fff1:4e82:4e43:cc9e? ([2603:400a:0:82c:fff1:4e82:4e43:cc9e]) by smtp.googlemail.com with ESMTPSA id q126sm5311354qkd.21.2019.12.05.12.53.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Dec 2019 12:53:01 -0800 (PST) Subject: Re: bug#38485: Customizing glyph widths To: Eli Zaretskii References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> <83a786iyvc.fsf@gnu.org> <5b3d638e-5913-2c3d-dba1-0c3f387a7ff2@gmail.com> <83o8wmh705.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Thu, 5 Dec 2019 15:53:00 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <83o8wmh705.fsf@gnu.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 38485 Cc: casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-05 15:06, Eli Zaretskii wrote: >> Cc: casouri@gmail.com, 38485@debbugs.gnu.org >> From: Clément Pit-Claudel >> Date: Thu, 5 Dec 2019 14:50:54 -0500 >> >>> Why is "Proof" treated differently from the other symbols? How would >>> the user know which one is which? >> >> Sorry, I think I don't understand the question :/ > > Which part? > > You have shown an example where some prettified symbols are treated > differently than others, with respect to their width on display. I'm > asking why the difference, and how will users know when to ask one > behavior and when the other. Thanks, it's clear now. This is something I'd like to be able to customize for each symbol. That is, I'd like to be able to say that "forall" should be prettified as "∀", taking one character, and that "~+~" should be prettified as "⨤", taking three characters. In Elisp, I'd like to say that prettifications from nameless-mode shouldn't be widened, nor lambda. I expect which behavior to pick will be a matter of preference. What I do currently in my Emacs is to narrow all characters to one character, by recompiling various fonts to have the right width, but that isn't pleasant. From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 05 23:15:37 2019 Received: (at 38485) by debbugs.gnu.org; 6 Dec 2019 04:15:37 +0000 Received: from localhost ([127.0.0.1]:45515 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1id51k-0005XS-T9 for submit@debbugs.gnu.org; Thu, 05 Dec 2019 23:15:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:43178) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1id51i-0005Wj-Vd for 38485@debbugs.gnu.org; Thu, 05 Dec 2019 23:15:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53525) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1id51d-0007K8-JW; Thu, 05 Dec 2019 23:15:29 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1id51b-0007ht-QX; Thu, 05 Dec 2019 23:15:28 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: =?iso-8859-1?Q?Cl=C3=A9ment?= Pit-Claudel In-Reply-To: (message from =?iso-8859-1?Q?Cl=C3=A9ment?= Pit-Claudel on Thu, 5 Dec 2019 15:53:00 -0500) Subject: "prettified" symbols References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> <83a786iyvc.fsf@gnu.org> <5b3d638e-5913-2c3d-dba1-0c3f387a7ff2@gmail.com> <83o8wmh705.fsf@gnu.org> Message-Id: Date: Thu, 05 Dec 2019 23:15:27 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: eliz@gnu.org, casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: rms@gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Would someone please send me a 10-line general explanation of what the "prettified" symbols feature does, or would do? In what modes or contexts would this operate, by default? -- Dr Richard Stallman Founder, Free Software Foundation (https://gnu.org, https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org) From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 06 00:51:36 2019 Received: (at 38485) by debbugs.gnu.org; 6 Dec 2019 05:51:36 +0000 Received: from localhost ([127.0.0.1]:45536 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1id6Wd-00016I-OQ for submit@debbugs.gnu.org; Fri, 06 Dec 2019 00:51:36 -0500 Received: from mail-qk1-f177.google.com ([209.85.222.177]:39634) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1id6Wb-00015s-He for 38485@debbugs.gnu.org; Fri, 06 Dec 2019 00:51:34 -0500 Received: by mail-qk1-f177.google.com with SMTP id d124so5555433qke.6 for <38485@debbugs.gnu.org>; Thu, 05 Dec 2019 21:51:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=IU9WpfEPyRWXPWyNme8NxGz7/UQbZiYN1dZXl1PTR50=; b=LCjRK+b1IGNvncU1yhiRyQFPekeAyX4D2Uy7Yor8v/i/2zXO0WCPKKZORfaXR2D037 C8QRTOQHKu5SmV3v6v5xlrKMf9q7Dy7rGXms2P5XeMJD/Bm3UYpSCeMDpJ7gUf/+b3JN MSfRpcYay1aUxM1i0QzJ10ZBrjM92YdleYCLwmL370rU0qgBR9KdrRnEOG+/k0X7uvcv SnfmgWJnNQwgl/gSSHGjVrm3utp2CXCV28wDggl+R6AxcouA1W4ntqd69wNXZXwYe8BY 5bVGfs+eZJ8tK5xy816H6mVetq2HtPTq4trc8mO14xui5Z5lGsdJMlbK4AZ0PM4YNe2G oQQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=IU9WpfEPyRWXPWyNme8NxGz7/UQbZiYN1dZXl1PTR50=; b=tEGK3RcmcSSFrd1BwSe0w67yCLTC1AiRjyrVjMZXwjZB5etBcynr3zjvynVnDRtsJu kcsZ+vJ4tsn9VDA+8ap94Wl2CfyOD3rJrKm3PUsa0A/ZhERJuoxVmuVWoj0gUiWMat8o aCBYoNgCIn5kEA+I5KIZp1di0oPD72dTjH2lDeNwE95uisx80JanyikfPgjZTmUFL/75 lI+N9VO2hMz70gJFnIeSRnw1AlrBuSZqDwd+uS6gAdGb6FrmQ9MZOEkwIgiXAQDTGpiz uIHVGdyi9MAYVuCULtK9m7Lo9tG4vGH5JhcI8axnmy0Qxz3IVVhs57w2EJzeaAsrxQ/L QJYw== X-Gm-Message-State: APjAAAUPhl9yQ0FiH5T1HfTnofdGLtxq8zjxCEr7TqSjBw01OBObBNwq xynoH/3DxcjfGOHOLQi8SBKzIzUi X-Google-Smtp-Source: APXvYqxsyhKhWAjNnVhg9IAbDmCX4LPk/yFI3k8LX3cwzwDl3cf7yhs5Lskb9tMdWwcfJdp6R58DZA== X-Received: by 2002:a37:b842:: with SMTP id i63mr12146961qkf.451.1575611487748; Thu, 05 Dec 2019 21:51:27 -0800 (PST) Received: from ?IPv6:2601:184:4180:66e7:c1ed:a694:851c:6c56? ([2601:184:4180:66e7:c1ed:a694:851c:6c56]) by smtp.googlemail.com with ESMTPSA id z4sm5571867qkz.62.2019.12.05.21.51.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Dec 2019 21:51:27 -0800 (PST) Subject: Re: "prettified" symbols To: rms@gnu.org References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> <83a786iyvc.fsf@gnu.org> <5b3d638e-5913-2c3d-dba1-0c3f387a7ff2@gmail.com> <83o8wmh705.fsf@gnu.org> From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Message-ID: Date: Fri, 6 Dec 2019 00:51:25 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 38485 Cc: eliz@gnu.org, casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On 2019-12-05 23:15, Richard Stallman wrote: > Would someone please send me a 10-line general explanation of > what the "prettified" symbols feature does, or would do?> > In what modes or contexts would this operate, by default? Happy to oblige :) prettified-symbols-mode is a minor mode that appeared around Emacs 24.5 or so, a few years ago. It lets users instruct Emacs to change the way certain words or symbols are displayed, to make the contents of the buffer more visually appealing or easier to read. It doesn't change the actual contents of the buffer, nor what gets saved to disk. For example, consider the following bits of C and C++ code: pstr->wcs[idx] != WEOF || pstr->valid_len == idx + 1 std::cout << (x >= 0); If I set prettify-symbols-alist to the following value: (setq-local prettify-symbols-alist '(("->" . ?→) ("!=" . ?≠) ("==" . ?≡) (">=" . ?≥) ("||" . ?‖) ("::" . ?∷) ("<<" . ?≪))) then Emacs will display these snippets thus: pstr→wcs[idx] ≠ WEOF ‖ pstr→valid_len ≡ idx + 1 std∷cout ≪ (x ≥ 0); I don't think this feature is enabled by default in any mode that ships with Emacs, but it is in some third-party packages. It is particularly popular for users of math-oriented programming languages; for example, this is the value of prettify-symbols-alist in fstar-mode: '(("exists" . ?∃) ("forall" . ?∀) ("fun" . ?λ) ("nat" . ?ℕ) ("int" . ?ℤ) ("True" . ?⊤) ("False" . ?⊥) ("*" . ?×) (":=" . ?≔) ("::" . ?⸬) ("<=" . ?≤) (">=" . ?≥) ("<>" . ?≠) ("/\\" . ?∧) ("\\/" . ?∨) ("~" . ?¬) ("||" . ?‖) ("<==>" . ?⟺) ("==>" . ?⟹) ;; ("<==" . ?⟸) ("->" . ?→) ("~>" . ?↝) ("=>" . ?⇒) ("<-" . ?←) ("<--" . ?⟵) ("-->" . ?⟶) ("<<" . ?≪) ("<|" . ?◃) ("|>" . ?▹) ("'a" . ?α) ("'b" . ?β) ("'c" . ?γ) ("'d" . ?δ) ("'e" . ?ε) ("'f" . ?φ) ("'g" . ?χ) ("'h" . ?η) ("'i" . ?ι) ("'k" . ?κ) ("'m" . ?μ) ("'n" . ?ν) ("'p" . ?π) ("'q" . ?θ) ("'r" . ?ρ) ("'s" . ?σ) ("'t" . ?τ) ("'u" . ?ψ) ("'w" . ?ω) ("'x" . ?ξ) ("'z" . ?ζ)) You should try it :) It's packaged with Emacs, and it's a really neat feature. Clément. From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 06 11:15:37 2019 Received: (at 38485) by debbugs.gnu.org; 6 Dec 2019 16:15:37 +0000 Received: from localhost ([127.0.0.1]:46912 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1idGGX-000519-MD for submit@debbugs.gnu.org; Fri, 06 Dec 2019 11:15:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56953) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1idGGW-00050o-Fo for 38485@debbugs.gnu.org; Fri, 06 Dec 2019 11:15:36 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43199) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1idGGN-0002cH-C4; Fri, 06 Dec 2019 11:15:27 -0500 Received: from [176.228.60.248] (port=1600 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1id8Vl-0007dt-Hj; Fri, 06 Dec 2019 02:58:49 -0500 Date: Fri, 06 Dec 2019 09:58:48 +0200 Message-Id: <83h82dholj.fsf@gnu.org> From: Eli Zaretskii To: rms@gnu.org In-reply-to: (message from Richard Stallman on Thu, 05 Dec 2019 23:15:27 -0500) Subject: Re: "prettified" symbols References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> <83a786iyvc.fsf@gnu.org> <5b3d638e-5913-2c3d-dba1-0c3f387a7ff2@gmail.com> <83o8wmh705.fsf@gnu.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: cpitclaudel@gmail.com, casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Richard Stallman > Cc: eliz@gnu.org, casouri@gmail.com, 38485@debbugs.gnu.org > Date: Thu, 05 Dec 2019 23:15:27 -0500 > > Would someone please send me a 10-line general explanation of > what the "prettified" symbols feature does, or would do? It displays symbol names in programming languages as pretty symbols. For example, "lambda" in Lisp can be displayed as λ. This uses static character composition to do its job. I suggest to look at the code, it's quite short and simple. Start around line 200 in prog-mode.el, where prettify-symbols-mode is defined. > In what modes or contexts would this operate, by default? By default, this mode is turned off. You need to turn it on, and it is currently written to work with programming-language major modes. From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 06 23:43:04 2019 Received: (at 38485) by debbugs.gnu.org; 7 Dec 2019 04:43:04 +0000 Received: from localhost ([127.0.0.1]:47254 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1idRvs-0005pX-Du for submit@debbugs.gnu.org; Fri, 06 Dec 2019 23:43:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58771) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1idRvr-0005p3-BY for 38485@debbugs.gnu.org; Fri, 06 Dec 2019 23:43:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:56922) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1idRvm-0004EI-2U; Fri, 06 Dec 2019 23:42:58 -0500 Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1idRvj-0002qk-9e; Fri, 06 Dec 2019 23:42:55 -0500 Content-Type: text/plain; charset=Utf-8 From: Richard Stallman To: Eli Zaretskii In-Reply-To: <83h82dholj.fsf@gnu.org> (message from Eli Zaretskii on Fri, 06 Dec 2019 09:58:48 +0200) Subject: Re: "prettified" symbols References: <3183ba6c-6aea-fa25-bb32-7e5ff7c04ad6@gmail.com> <83y2vshyvn.fsf@gnu.org> <478afae1-0080-c825-5a53-1bc8e897a1cc@gmail.com> <83sgm0hvhx.fsf@gnu.org> <4e6c87d3-21c0-1820-96f2-62bb0dd7c925@gmail.com> <83r21khquw.fsf@gnu.org> <32a6f122-f21a-4522-21d6-0ae0a17b6bee@gmail.com> <83o8wnigy5.fsf@gnu.org> <83a786iyvc.fsf@gnu.org> <5b3d638e-5913-2c3d-dba1-0c3f387a7ff2@gmail.com> <83o8wmh705.fsf@gnu.org> <83h82dholj.fsf@gnu.org> Message-Id: Date: Fri, 06 Dec 2019 23:42:55 -0500 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 38485 Cc: cpitclaudel@gmail.com, casouri@gmail.com, 38485@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: rms@gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > It displays symbol names in programming languages as pretty symbols. > For example, "lambda" in Lisp can be displayed as λ. This uses static > character composition to do its job. It sounds like something that might perhaps help with reading a program, but wouldn't it make editing confusing? 'lambda' is 6 characters; making it appear as one character has to mess something up. As long as it is disabled by default, I don't see a problem in having the feature. -- Dr Richard Stallman Founder, Free Software Foundation (https://gnu.org, https://fsf.org) Internet Hall-of-Famer (https://internethalloffame.org)