From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jared Finder via "Emacs development discussions." Newsgroups: gmane.emacs.devel Subject: Re: mouse-face and help echo support for xterm mouse Date: Tue, 03 Nov 2020 22:54:32 -0800 Message-ID: <3e7e0f6d1e272d03913e97254b2eabff@finder.org> References: <31ff05295c806c4596c54fdcc8994a5f@finder.org> Reply-To: Jared Finder Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_38aff4174ef1d57881a7a39baf632454" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18225"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Roundcube Webmail/1.3.15 Cc: "Jared Finder via \"Emacs development discussions.\"" To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Nov 04 07:55:51 2020 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 1kaChz-0004aZ-40 for ged-emacs-devel@m.gmane-mx.org; Wed, 04 Nov 2020 07:55:51 +0100 Original-Received: from localhost ([::1]:52346 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kaChw-0004Pp-Lv for ged-emacs-devel@m.gmane-mx.org; Wed, 04 Nov 2020 01:55:48 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52186) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kaCgo-0003zf-R1 for emacs-devel@gnu.org; Wed, 04 Nov 2020 01:54:38 -0500 Original-Received: from greenhill.hpalace.com ([192.155.80.58]:39784) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kaCgm-0003Fr-Iw for emacs-devel@gnu.org; Wed, 04 Nov 2020 01:54:38 -0500 Original-Received: from mail.finder.org (greenhill.hpalace.com [IPv6:2600:3c01::f03c:91ff:fe73:2daa]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 6AFE09D6; Wed, 4 Nov 2020 06:54:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=finder.org; s=2018; t=1604472873; bh=re9A2/82uQBeoYPsaWHerC+/io6CWgY/yoZTOdwfYk4=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=0pZfvVTBoLdO/g8QhHOJa2y1kvzfkekkvjgUVyvEMVJ2ssTjohFyk9q3OYLZgyqiA VdsFosPDwOfX3tZ5HJ3yEg+KR6Lvyo/IfTSgoWFImhmmhaTHoQvM+rNMtlE/WSRDLn 32tCamuTooP5VpAem5h7DIh87rxQfjFwFLFFgGPwLR1dLsGFH1m1FGHQ4k3AZecshw ENiUdicl7HN+AAmvkMbuYqSe7ZbE1bGVBHlKsUmjXnap/gmqKo+gdq0fU+Xk2GyiTu x1/yPeEVMWiCrTmUikk3YOqUKbMNcwb42zvznt8sQxVtFkMVblRQov0pq4ycQiofBX +Dttsa8tIye4g== In-Reply-To: <31ff05295c806c4596c54fdcc8994a5f@finder.org> X-Sender: jared@finder.org Received-SPF: pass client-ip=192.155.80.58; envelope-from=jared@finder.org; helo=greenhill.hpalace.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/04 01:54:33 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: 12 X-Spam_score: 1.2 X-Spam_bar: + X-Spam_report: (1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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:258667 Archived-At: --=_38aff4174ef1d57881a7a39baf632454 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2020-11-01 7:56 am, Jared Finder wrote: > On 2020-11-01 5:39 am, Stefan Monnier wrote: >> Hi Jared, >> >> I really like this new feature but have just one comment/question? >> >>> + previous_help_echo_string = help_echo_string; >>> + help_echo_string = Qnil; >>> + >>> + note_mouse_highlight(XFRAME(frame), XFIXNUM (mouse_x), XFIXNUM >>> (mouse_y)); >>> + >>> + if (!NILP (help_echo_string) >>> + || !NILP (previous_help_echo_string)) >>> + { >>> + gen_help_event (help_echo_string, frame, help_echo_window, >>> + help_echo_object, help_echo_pos); >>> + } >> >> I see this exact same code in other C files. >> Could we move it to a file where we can share it instead of having >> N copies? > > I completely agree, not just for this code but also for mouse handling > in general. I think there should be a shared mouse interface with > individual C functions for each type of mouse event: mouse move, mouse > click, etc. Translating OS-specific events to this shared > functionality would continue to be OS-specific, but the actual > handling of these events, such as this logic, would be fully shared. > For example, this would unify the different codepaths between TTY > menus for GPM, xterm-mouse, and NT Emacs. > > I would be happy to help with this next. However I need some help. I > can only locally build and test for Linux terminal with xterm-mouse or > GPM handling the mouse. Is there someone who can help for other > platforms? And should the GUI platforms be included as well? (I > suspect yes is the right answer.) Toward proving that the code could be shared, I refactored the GPM mouse logic so that it was clearly apparent how to share it with handle-lisp-mouse-motion. That patch is attached. I'd like to make sure this looks like an appropriate change to make. If so, I will finish up the patch. Two specific questions: 1. To enable sharing logic, I need to encode a handful of assumptions that I believe are true today (example: no need to handle quit-char in GPM handling). Do these assumptions look reasonable? 2. In what file should such a shared function go? My initial thought is a new file "mouse.c" as it would hold shared mouse logic. -- MJF --=_38aff4174ef1d57881a7a39baf632454 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-WIP-Simplifying-the-code-in-handle_one_term_event.patch Content-Disposition: attachment; filename=0001-WIP-Simplifying-the-code-in-handle_one_term_event.patch; size=4872 RnJvbSAxODY5ODNiYWY2ZDMxNmFlZWY5NjRjNWU4NDQ4NWJiODk2NGViODkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IFR1ZSwgMyBOb3YgMjAyMCAyMjoxNTozNiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIFdJUDogU2lt cGxpZnlpbmcgdGhlIGNvZGUgaW4gaGFuZGxlX29uZV90ZXJtX2V2ZW50LgoKU2ltcGxpZnlpbmcg dGhpbmdzIHNvIHRoYXQgdGhlIG1vdXNlIG1vdmVtZW50IGNvZGUgbG9va3Mgc2ltaWxhciB0bwpo YW5kbGUtbGlzcC1tb3VzZS1tb3Rpb24uICBTcGVjaWZpY2FsbHk6CgoxKSBSZW1vdmluZyBob2xk X3F1aXQgZnJvbSBoYW5kbGVfb25lX3Rlcm1fZXZlbnQuICBHUE0gb25seSBldmVyCnJlcG9ydHMg Y2xpY2sgZXZlbnRzIG9yIG1vdmUgZXZlbnRzLCBzbyBubyBuZWVkIHRvIGhvbGQgcXVpdCBldmVu dHMKdW50aWwgbGF0ZXIuCgoyKSBkb19oZWxwIGlzIG9ubHkgZXZlciBzZXQgZm9yIG1vdXNlIG1v dmVtZW50IGV2ZW50cywgc28gZGlyZWN0bHkKaW5saW5lIHRoYXQgYnJhbmNoLgoKMykgZiBpcyBn dWFyYW50ZWVkIHRvIGJlIG5vbi1udWxsLCBzbyByZW1vdmUgYnJhbmNoZXMgdGhhdCBjaGVjay4K CjQpIGllIGlzIG9ubHkgZXZlciBzZXQgdG8gR1BNX0NMSUNLX0VWRU5ULCBzbyBkaXJlY3RseSBp bmxpbmUgdGhhdApicmFuY2guCi0tLQogc3JjL2tleWJvYXJkLmMgIHwgIDggKy0tLS0tLS0KIHNy Yy90ZXJtLmMgICAgICB8IDUzICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIHNyYy90ZXJtaG9va3MuaCB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDIz IGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9rZXlib2Fy ZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggNDAzZjU4MzY4OS4uNTk4ZTg2ZTJhNSAxMDA2NDQK LS0tIGEvc3JjL2tleWJvYXJkLmMKKysrIGIvc3JjL2tleWJvYXJkLmMKQEAgLTcwMjUsMTIgKzcw MjUsOCBAQCB0dHlfcmVhZF9hdmFpbF9pbnB1dCAoc3RydWN0IHRlcm1pbmFsICp0ZXJtaW5hbCwK ICAgaWYgKGdwbV90dHkgPT0gdHR5KQogICB7CiAgICAgICBHcG1fRXZlbnQgZXZlbnQ7Ci0gICAg ICBzdHJ1Y3QgaW5wdXRfZXZlbnQgZ3BtX2hvbGRfcXVpdDsKICAgICAgIGludCBncG0sIGZkID0g Z3BtX2ZkOwogCi0gICAgICBFVkVOVF9JTklUIChncG1faG9sZF9xdWl0KTsKLSAgICAgIGdwbV9o b2xkX3F1aXQua2luZCA9IE5PX0VWRU5UOwotCiAgICAgICAvKiBncG09PTEgaWYgZXZlbnQgcmVj ZWl2ZWQuCiAgICAgICAgICBncG09PTAgaWYgdGhlIEdQTSBkYWVtb24gaGFzIGNsb3NlZCB0aGUg Y29ubmVjdGlvbiwgaW4gd2hpY2ggY2FzZQogICAgICAgICAgICAgICAgIEdwbV9HZXRFdmVudCBj bG9zZXMgZ3BtX2ZkIGFuZCBjbGVhcnMgaXQgdG8gLTEsIHdoaWNoIGlzIHdoeQpAQCAtNzAzOCwx MyArNzAzNCwxMSBAQCB0dHlfcmVhZF9hdmFpbF9pbnB1dCAoc3RydWN0IHRlcm1pbmFsICp0ZXJt aW5hbCwKIAkJc2VsZWN0IG1hc2tzLgogICAgICAgICAgZ3BtPT0tMSBpZiBhIHByb3RvY29sIGVy cm9yIG9yIEVXT1VMREJMT0NLOyB0aGUgbGF0dGVyIGlzIG5vcm1hbC4gICovCiAgICAgICB3aGls ZSAoZ3BtID0gR3BtX0dldEV2ZW50ICgmZXZlbnQpLCBncG0gPT0gMSkgewotCSAgbnJlYWQgKz0g aGFuZGxlX29uZV90ZXJtX2V2ZW50ICh0dHksICZldmVudCwgJmdwbV9ob2xkX3F1aXQpOworCSAg bnJlYWQgKz0gaGFuZGxlX29uZV90ZXJtX2V2ZW50ICh0dHksICZldmVudCk7CiAgICAgICB9CiAg ICAgICBpZiAoZ3BtID09IDApCiAJLyogUHJlc3VtYWJseSB0aGUgR1BNIGRhZW1vbiBoYXMgY2xv c2VkIHRoZSBjb25uZWN0aW9uLiAgKi8KIAljbG9zZV9ncG0gKGZkKTsKLSAgICAgIGlmIChncG1f aG9sZF9xdWl0LmtpbmQgIT0gTk9fRVZFTlQpCi0JICBrYmRfYnVmZmVyX3N0b3JlX2V2ZW50ICgm Z3BtX2hvbGRfcXVpdCk7CiAgICAgICBpZiAobnJlYWQpCiAJICByZXR1cm4gbnJlYWQ7CiAgIH0K ZGlmZiAtLWdpdCBhL3NyYy90ZXJtLmMgYi9zcmMvdGVybS5jCmluZGV4IGI2ZmE5M2JiNjIuLmY0 MGNhZTRlZmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMKKysrIGIvc3JjL3Rlcm0uYwpAQCAtMjU1 MCwxOCArMjU1MCwxMSBAQCB0ZXJtX21vdXNlX2NsaWNrIChzdHJ1Y3QgaW5wdXRfZXZlbnQgKnJl c3VsdCwgR3BtX0V2ZW50ICpldmVudCwKIH0KIAogaW50Ci1oYW5kbGVfb25lX3Rlcm1fZXZlbnQg KHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIEdwbV9FdmVudCAqZXZlbnQsCi0JCSAgICAg ICBzdHJ1Y3QgaW5wdXRfZXZlbnQgKmhvbGRfcXVpdCkKK2hhbmRsZV9vbmVfdGVybV9ldmVudCAo c3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgR3BtX0V2ZW50ICpldmVudCkKIHsKICAgc3Ry dWN0IGZyYW1lICpmID0gWEZSQU1FICh0dHktPnRvcF9mcmFtZSk7Ci0gIHN0cnVjdCBpbnB1dF9l dmVudCBpZTsKLSAgYm9vbCBkb19oZWxwID0gMDsKICAgaW50IGNvdW50ID0gMDsKIAotICBFVkVO VF9JTklUIChpZSk7Ci0gIGllLmtpbmQgPSBOT19FVkVOVDsKLSAgaWUuYXJnID0gUW5pbDsKLQog ICBpZiAoZXZlbnQtPnR5cGUgJiAoR1BNX01PVkUgfCBHUE1fRFJBRykpIHsKICAgICBwcmV2aW91 c19oZWxwX2VjaG9fc3RyaW5nID0gaGVscF9lY2hvX3N0cmluZzsKICAgICBoZWxwX2VjaG9fc3Ry aW5nID0gUW5pbDsKQEAgLTI1NzUsMTEgKzI1NjgsMjIgQEAgaGFuZGxlX29uZV90ZXJtX2V2ZW50 IChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBHcG1fRXZlbnQgKmV2ZW50LAogICAgICAg IGhhcyBjaGFuZ2VkLCBnZW5lcmF0ZSBhIEhFTFBfRVZFTlQuICAqLwogICAgIGlmICghTklMUCAo aGVscF9lY2hvX3N0cmluZykKIAl8fCAhTklMUCAocHJldmlvdXNfaGVscF9lY2hvX3N0cmluZykp Ci0gICAgICBkb19oZWxwID0gMTsKKyAgICAgIHsKKyAgICAgICAgTGlzcF9PYmplY3QgZnJhbWU7 CiAKLSAgICBnb3RvIGRvbmU7CisgICAgICAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOworICAgICAg ICBnZW5faGVscF9ldmVudCAoaGVscF9lY2hvX3N0cmluZywgZnJhbWUsIGhlbHBfZWNob193aW5k b3csCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX2VjaG9fb2JqZWN0LCBoZWxwX2VjaG9f cG9zKTsKKyAgICAgICAgY291bnQrKzsKKyAgICAgIH0KICAgfQogICBlbHNlIHsKKyAgICBzdHJ1 Y3QgaW5wdXRfZXZlbnQgaWU7CisKKyAgICBFVkVOVF9JTklUIChpZSk7CisgICAgaWUua2luZCA9 IE5PX0VWRU5UOworICAgIGllLmFyZyA9IFFuaWw7CisKICAgICBmLT5tb3VzZV9tb3ZlZCA9IDA7 CiAgICAgdGVybV9tb3VzZV9jbGljayAoJmllLCBldmVudCwgZik7CiAgICAgaWYgKHR0eV9oYW5k bGVfdGFiX2Jhcl9jbGljayAoZiwgZXZlbnQtPngsIGV2ZW50LT55LApAQCAtMjU5MCwyOSArMjU5 NCwxNCBAQCBoYW5kbGVfb25lX3Rlcm1fZXZlbnQgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0 dHksIEdwbV9FdmVudCAqZXZlbnQsCiAgICAgICAgY291bnQgKz0gMjsKICAgICAgICByZXR1cm4g Y291bnQ7CiAgICAgICB9Ci0gIH0KIAotIGRvbmU6Ci0gIGlmIChpZS5raW5kICE9IE5PX0VWRU5U KQotICAgIHsKLSAgICAgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnRfaG9sZCAoJmllLCBob2xkX3F1 aXQpOwotICAgICAgY291bnQrKzsKLSAgICB9Ci0KLSAgaWYgKGRvX2hlbHAKLSAgICAgICYmICEo aG9sZF9xdWl0ICYmIGhvbGRfcXVpdC0+a2luZCAhPSBOT19FVkVOVCkpCi0gICAgewotICAgICAg TGlzcF9PYmplY3QgZnJhbWU7Ci0KLSAgICAgIGlmIChmKQotCVhTRVRGUkFNRSAoZnJhbWUsIGYp OwotICAgICAgZWxzZQotCWZyYW1lID0gUW5pbDsKLQotICAgICAgZ2VuX2hlbHBfZXZlbnQgKGhl bHBfZWNob19zdHJpbmcsIGZyYW1lLCBoZWxwX2VjaG9fd2luZG93LAotCQkgICAgICBoZWxwX2Vj aG9fb2JqZWN0LCBoZWxwX2VjaG9fcG9zKTsKLSAgICAgIGNvdW50Kys7Ci0gICAgfQorICAgIC8q IGllIGNhbiBvbmx5IGJlIG9mIHRoZSBldmVudCB0eXBlIEdQTV9DTElDS19FVkVOVC4sIGl0IGNv dWxkCisgICAgICAgbmV2ZXIgYmUgYSBxdWl0LWNoYXIga2V5c3Ryb2tlIGV2ZW50LiAgVGhlcmVm b3JlLCB0aGVyZSBpcyBubworICAgICAgIG5lZWQgdG8gcXVldWUgcXVpdCBldmVudHMuICAqLwor ICAgIGVhc3NlcnQgKGllLmtpbmQgPT0gR1BNX0NMSUNLX0VWRU5UKTsKKyAgICBrYmRfYnVmZmVy X3N0b3JlX2V2ZW50X2hvbGQgKCZpZSwgTlVMTCk7CisgICAgY291bnQrKzsKKyAgfQogCiAgIHJl dHVybiBjb3VudDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXJtaG9va3MuaCBiL3NyYy90ZXJtaG9v a3MuaAppbmRleCBkMThiNzUwYzNhLi42YWIwNmNlZmY5IDEwMDY0NAotLS0gYS9zcmMvdGVybWhv b2tzLmgKKysrIGIvc3JjL3Rlcm1ob29rcy5oCkBAIC0zNzAsNyArMzcwLDcgQEAgI2RlZmluZSBF VkVOVF9JTklUKGV2ZW50KSBtZW1zZXQgKCYoZXZlbnQpLCAwLCBzaXplb2YgKHN0cnVjdCBpbnB1 dF9ldmVudCkpCiAKICNpZmRlZiBIQVZFX0dQTQogI2luY2x1ZGUgPGdwbS5oPgotZXh0ZXJuIGlu dCBoYW5kbGVfb25lX3Rlcm1fZXZlbnQgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICosIEdwbV9F dmVudCAqLCBzdHJ1Y3QgaW5wdXRfZXZlbnQgKik7CitleHRlcm4gaW50IGhhbmRsZV9vbmVfdGVy bV9ldmVudCAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKiwgR3BtX0V2ZW50ICopOwogI2lmbmRl ZiBIQVZFX1dJTkRPV19TWVNURU0KIGV4dGVybiB2b2lkIHRlcm1fbW91c2VfbW92ZXRvIChpbnQs IGludCk7CiAjZW5kaWYKLS0gCjIuMjAuMQoK --=_38aff4174ef1d57881a7a39baf632454--