From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alexandre Garreau Newsgroups: gmane.emacs.devel Subject: Highlighting cursor for char before Date: Mon, 18 Oct 2021 14:36:30 +0200 Message-ID: <1844951.jBraE47yQ0@galex-713.eu> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28805"; mail-complaints-to="usenet@ciao.gmane.io" To: Emacs-Devel devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Oct 18 14:40:20 2021 Return-path: Envelope-to: ged-emacs-devel@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 1mcRwC-0007MX-Ll for ged-emacs-devel@m.gmane-mx.org; Mon, 18 Oct 2021 14:40:20 +0200 Original-Received: from localhost ([::1]:53562 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mcRwB-0003vg-Oa for ged-emacs-devel@m.gmane-mx.org; Mon, 18 Oct 2021 08:40:19 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33740) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mcRsj-00013B-Id for emacs-devel@gnu.org; Mon, 18 Oct 2021 08:36:46 -0400 Original-Received: from portable.galex-713.eu ([2a00:5884:8305::1]:49030 helo=galex-713.eu) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mcRsh-0005bA-Gs for emacs-devel@gnu.org; Mon, 18 Oct 2021 08:36:45 -0400 Original-Received: from gal by galex-713.eu with local (Exim 4.92) (envelope-from ) id 1mcRsV-0002Lq-EW for emacs-devel@gnu.org; Mon, 18 Oct 2021 14:36:31 +0200 Received-SPF: pass client-ip=2a00:5884:8305::1; envelope-from=galex-713@galex-713.eu; helo=galex-713.eu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:277273 Archived-At: Hello, TL;DR: I know we can make the cursor so thin it becomes a bar like in=20 other apps, instead of highlighted following char=E2=80=A6 but how to make = it=20 highlight the *previous* char? is there a way? that would be more logical=20 and less confusing, especially when switching between ltr and rtl Context: by default, emacs cursor highlights a character, instead of being= =20 a small vertical trait like in most applications today. This is handy in=20 overwrite mode, and logical as per the usage of the =E2=80=9Csuppr=E2=80=9D= key, but=20 people hardly use these nowadays=E2=80=A6 On the opposite, and pretty coun= ter- intuitively, the standard DEL command deletes the character *before* the=20 one highlighted. Furthermore, many unicode characters, character modifiers= =20 (hence the way to insert them) modify the character *before* them, which=20 induce an even greater confusion: when for instance adding a diacritic=20 this way, it will be added *not* on the character highlighted, but the one= =20 *before*. Normally, anybody experienced with computers, hence anybody here, would=20 not notice it, it would become =E2=80=9Cinfraordinary=E2=80=9D because we= =E2=80=99re used to our=20 ways of deleting chars, and seldom use separated diacritics (in my current= =20 main language, french, we have one key per modified letter, hence we don=E2= =80=99t=20 care, but for instance in italian, spanish and russian sometimes you want=20 to mark tonic accent) in english and many languages=E2=80=A6 and because o= f that,=20 the fact you modify what=E2=80=99s =E2=80=9Cbefore=E2=80=9D the highlighted= character is unnoticed=20 and goes smoothly. What I have just noticed, is that the true semantic notion of =E2=80=9Cbefo= re=E2=80=9D=20 (that is correctly maintained in emacs common keybindings) is=20 ergonomically a confusing notion once you write texts in both ltr and rtl=20 languages. There, your brain may have used to learn that you modify the=20 left character, compared to the highlighted character, while of course it=20 doesn=E2=80=99t: it keeps modifying the previous one, that is not even the= =20 highlighted character but the right one (that is, the wrong one: sorry for= =20 the confusion, I used =E2=80=9Cright=E2=80=9D meaning direction, not expect= edness (damn=20 english for confusing notions, and yay for it for having the word=20 =E2=80=9Cexpectedness=E2=80=9D)). So that traditional way of highlighting cursor is already bogus and=20 counterintuitive per se, but in certain context it becomes confusing and=20 hard. I=E2=80=99m not necessarily asking to change the default right now=20 (although a solid thin trait would look more logical, appealing and=20 familiar (that=E2=80=99s only one point among others) and less confusing to= many,=20 especially new users, without being incompatibly contradictory/confusion=20 wrt the tradition), but how to reverse that? I=E2=80=99d like very much to = do it,=20 I=E2=80=99ve got acquainted to that highlighting block but I=E2=80=99d like= something=20 logical, not legacy (I never use overwrite mode, except with artist-mode=20 (but that could be conditionally tweaked)). A suggestion I propose that cursor-type may be equal to (box . -1) or=20 (hollow . -1), or another variable such as cursor- PS: sorry for verbosity, I really wanted to make all the points, but I=20 feel that wasn=E2=80=99t optimal. As always, I hope the fact it=E2=80=99s = far faster to=20 read than write will compensate=E2=80=A6 :/ PPS: I was unsure whether to post here or on help-gnu-emacs, but since I=20 found nothing=E2=80=A6 I start thinking that there=E2=80=99s nothing implem= ented for that=E2=80=A6