From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#47712: 27.1; Provide `string-display-width` function, which takes properties into account, `substring-width` Date: Mon, 12 Apr 2021 16:21:15 +0300 Message-ID: <83im4r3agk.fsf@gnu.org> References: <642c8a37-31c7-2723-12af-06cd7f120c2f@daniel-mendler.de> <83r1jg2q72.fsf@gnu.org> <83lf9n3d7x.fsf@gnu.org> <1c8f7066-3da2-d960-11e7-a42f567432bd@daniel-mendler.de> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13158"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 47712@debbugs.gnu.org To: Daniel Mendler Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Apr 12 15:23:04 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lVwWu-00034z-9x for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 12 Apr 2021 15:23:04 +0200 Original-Received: from localhost ([::1]:46618 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lVwWt-0003D9-CO for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 12 Apr 2021 09:23:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52550) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lVwVu-0002dh-PR for bug-gnu-emacs@gnu.org; Mon, 12 Apr 2021 09:22:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:45321) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lVwVu-00077s-Hl for bug-gnu-emacs@gnu.org; Mon, 12 Apr 2021 09:22:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lVwVu-00077N-Di for bug-gnu-emacs@gnu.org; Mon, 12 Apr 2021 09:22:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 12 Apr 2021 13:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 47712 X-GNU-PR-Package: emacs Original-Received: via spool by 47712-submit@debbugs.gnu.org id=B47712.161823370327331 (code B ref 47712); Mon, 12 Apr 2021 13:22:02 +0000 Original-Received: (at 47712) by debbugs.gnu.org; 12 Apr 2021 13:21:43 +0000 Original-Received: from localhost ([127.0.0.1]:56867 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lVwVb-00076k-EZ for submit@debbugs.gnu.org; Mon, 12 Apr 2021 09:21:43 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:39822) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lVwVZ-00076W-Id for 47712@debbugs.gnu.org; Mon, 12 Apr 2021 09:21:42 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:54264) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lVwVT-0006rl-IE; Mon, 12 Apr 2021 09:21:35 -0400 Original-Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2755 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1lVwVQ-0003wt-BM; Mon, 12 Apr 2021 09:21:33 -0400 In-Reply-To: <1c8f7066-3da2-d960-11e7-a42f567432bd@daniel-mendler.de> (message from Daniel Mendler on Mon, 12 Apr 2021 14:50:25 +0200) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:203897 Archived-At: > Cc: 47712@debbugs.gnu.org > From: Daniel Mendler > Date: Mon, 12 Apr 2021 14:50:25 +0200 > > On 4/12/21 2:21 PM, Eli Zaretskii wrote: > > That is easy to work around, right? Just insert the string into a > > temporary buffer and say with-current-buffer (and/or > > with-selected-window, if needed). > > I have not tested this but I suspect this to be slow for a few thousand > strings. Can we please see both methods benchmarked? I'd also like to understand better in which situation you need to do this with thousands of strings in one go. In any case, I presume that running your code on thousands of strings also takes some time, let alone conses many strings. > > In general, calculating a string's width out of display context is > > meaningless in Emacs. More about that below. > > I know about the context dependence. But there is the `string-width` > function which is also computed in the current context. I am only asking > for an improved version of already existing functionality. My most > minimal feature request is just a function `substring-width`. string-width is from my POV a historical accident. The accident happened long ago enough to preclude deleting it, but I'd like to limit its use as much as possible. I certainly would like to avoid extending it or making it support more features (it currently supports only composed characters). > However if you attack `string-width` for not computing something > correct, then one may want to consider deprecating `string-width` > altogether or at least make it clear in the documentation that this > function should not be used and something else based on the window > function should be used instead. I'm fine with doing that, of course.