From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Newsgroups: gmane.emacs.devel Subject: Re: BIKESHED: completion faces Date: Tue, 5 Nov 2019 19:16:00 +0000 Message-ID: References: <4c5631d4-9dfd-04c6-c573-b83c67fcc2fa@yandex.ru> <87pni7p83l.fsf@gmail.com> <83h83ignrz.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ed5d3005969e43b0" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="169091"; mail-complaints-to="usenet@blaine.gmane.org" Cc: emacs-devel , Stefan Monnier , Dmitry Gutov To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Nov 05 20:16:30 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iS4JZ-000hqY-L8 for ged-emacs-devel@m.gmane.org; Tue, 05 Nov 2019 20:16:29 +0100 Original-Received: from localhost ([::1]:47760 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iS4JW-0005kl-Ld for ged-emacs-devel@m.gmane.org; Tue, 05 Nov 2019 14:16:28 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37377) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iS4JM-0005i4-TS for emacs-devel@gnu.org; Tue, 05 Nov 2019 14:16:18 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iS4JL-0007T5-MO for emacs-devel@gnu.org; Tue, 05 Nov 2019 14:16:16 -0500 Original-Received: from mail-il1-x131.google.com ([2607:f8b0:4864:20::131]:34729) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iS4JJ-0007Ri-Im; Tue, 05 Nov 2019 14:16:13 -0500 Original-Received: by mail-il1-x131.google.com with SMTP id p6so6567946ilp.1; Tue, 05 Nov 2019 11:16:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=tarsdX/XG9xLvPh/3d8qqQ/3XKNjQuJZ196qIbR1i4k=; b=J0oMjzScZjoM5+DKkMEf8O1RUCxbC3rj+fW12Q07+Uwa/oF84v+OEtZjSd5OQXNIXx hjEOAHKgZ+ubQ9ncVJ6588p4ON6tbCa+6by4COVgSSl1CYRs2OISS45w5YR8H+DMvlFV 63zphGhwp7NoO/H18Ng/FLJpCurwKOJuBjeCMd97s3D3RnpXweFTNvEUDDZBoW2NbVv0 7ea4iKpF6/MVEwVIvFzGk9U7X0+vvWvDrrrjvQ41X95k7SBUnvl55g7q6uOe3pHPJXkZ G8gR89syp7/jTvH18oFkWioKiILUkctaEu8VqpYAwtGQZ6s/ukclZAzkpAgtIMc93nm6 wk1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=tarsdX/XG9xLvPh/3d8qqQ/3XKNjQuJZ196qIbR1i4k=; b=WfDlpagNR8Zh3SIIPHpvEgga+5N96oOriNCauK9auxlg1mZhkYjaYb46i92gqXm52I RgwjCvQDw/B8r9G+s723V7n1KpAOERwpqrtDzfRgotlvc09cOpM84f6nCvY4Y9awX2f3 2zWKZlLUkmN9NiJxPKFLer5l+y4F+XIukSMT8jJsOl2OPu8N4OIruocfv5edmeRrUSfF /xuxGxyfs/86J1tXkeZjXXGAy3Eu5+v0Em4ymmSVIJ5NphkqGY9/liL/g4Hlt3G18kBj mWymhTKGvWDyZYSwvlItl2CiTBC9rsdLE8maC87+bi1dLdjBfQXTZBfcOcA3GfQgAsQY CY2g== X-Gm-Message-State: APjAAAUFda10rFJP5+vdFISwYuoWl1qCokpGLJPPWrBaxQPWCDNFFR8S 8rXMQPW+cZix982x4hv9K+gIOTllOqrkau2p7Mabhw== X-Google-Smtp-Source: APXvYqwTapmmGFTCK2OkNYn4gtUsS5DUahx6KsHaT1xqks8pIuDl9U+BaxzxbGZ/2t86HdHxCcxQZNpAv44VVqYWIfU= X-Received: by 2002:a92:8748:: with SMTP id d8mr8721411ilm.125.1572981372164; Tue, 05 Nov 2019 11:16:12 -0800 (PST) In-Reply-To: <83h83ignrz.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::131 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:241815 Archived-At: --000000000000ed5d3005969e43b0 Content-Type: multipart/alternative; boundary="000000000000ed5d2c05969e43ae" --000000000000ed5d2c05969e43ae Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Nov 5, 2019 at 6:51 PM Eli Zaretskii wrote: > The purpose of completion-first-difference is to help the user decide > what to type next. Indeed it does that. But there are equally efficient other ways to do the same, in my opinion. One of them is to highlight the preceding character. You can experiment by switching the values of the "common" and "first-difference" faces. Do you think you've lost that help? > What is the purpose of highlighting other parts of > the candidates? For a matching style such as flex or substring (as you would find in many other editors) it's important to visually explain users to users why certain strings that don't start with the pattern they entered are being shown on the screen. I attach an image. > (If there is no useful purpose, then we might as well > do nothing and leave completion-first-difference the only important > highlighting in all kinds of completion.) completion-first-difference is at the very least a misnomer for other types of completion, because with flex there can be infinitely many "first" differences. Jo=C3=A3o --000000000000ed5d2c05969e43ae Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Tue, Nov 5, 2019 at 6:51 PM Eli Zaretskii <eliz@gnu.org> wrote:
> The purpose of= completion-first-difference is to help the user decide
> what t= o type next.=C2=A0

Indeed it does that. But t= here are equally efficient other ways to do the
same, in my opini= on.=C2=A0 One of them is to highlight the preceding
characte= r.=C2=A0 You can experiment by switching the values of the "common&quo= t;
and "first-difference" faces. Do you think you'v= e lost that help?

> What is the purpose of = highlighting other parts of
> the candidates?
<= br>
For a matching style such as flex or substring (as you would = find in
many other editors) it's important to visually e= xplain users to users
why certain strings that don't start wi= th the pattern they entered
are being shown on the screen.= =C2=A0 I attach an image.

>=C2=A0 (If there= is no useful purpose, then we might as well
> do nothing and leave= completion-first-difference the only important
> highlighting i= n all kinds of completion.)

completion-first-diffe= rence is at the very least a misnomer for
other types of completi= on, because with flex there can be infinitely
many "fir= st" differences.=C2=A0

Jo=C3=A3o
--000000000000ed5d2c05969e43ae-- --000000000000ed5d3005969e43b0 Content-Type: image/jpeg; name="index.jpg" Content-Disposition: attachment; filename="index.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k2m8ceaq0 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 OKKKKD//2Q== --000000000000ed5d3005969e43b0--