From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Additional cleanup around xterm-mouse Date: Thu, 03 Dec 2020 09:45:13 -0500 Message-ID: References: <83o8jupnqd.fsf@gnu.org> <838savys2v.fsf@gnu.org> <3e3933d8ec1d5d3f6809385a8ac5f447@finder.org> <83mtz1moa5.fsf@gnu.org> <0ea60a4f2a7fb0698f84ac5957cafef3@finder.org> <83mtyxgzck.fsf@gnu.org> <2eac7957a7c20af3517a3ad0862a5b39@finder.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="24232"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Eli Zaretskii , "Jared Finder via \"Emacs development discussions.\"" To: Jared Finder Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Dec 03 15:46:11 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 1kkps2-0006CC-CV for ged-emacs-devel@m.gmane-mx.org; Thu, 03 Dec 2020 15:46:10 +0100 Original-Received: from localhost ([::1]:57436 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kkps1-0007N1-CJ for ged-emacs-devel@m.gmane-mx.org; Thu, 03 Dec 2020 09:46:09 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:41858) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kkprI-0006pm-17 for emacs-devel@gnu.org; Thu, 03 Dec 2020 09:45:24 -0500 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:52037) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kkprD-0004TJ-In; Thu, 03 Dec 2020 09:45:22 -0500 Original-Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 5EBA744098A; Thu, 3 Dec 2020 09:45:16 -0500 (EST) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id A60F8440778; Thu, 3 Dec 2020 09:45:14 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1607006714; bh=NmILkB75r4UD+y5vWwumTbkcQehw9OJHq/f1OqlKt1w=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=Q8sJ4yhIwuCK2PFaY4YPKVt7iTV6A6SuqGnkPnzRwwxYPwSblYT8KF1eMj+NFZ7Nk Im3oPxhDOOvjhxljzsd/Y9HZTX0kL1RfnqcaZh4TQCMQnAi2aiXZ4uYQPz1u7ncMjr ZRIDiGmtp5T2TKso92lpkiQ+5Ro3l56Z8EczExJP6ZZFy/FrmAl5jTCGOZLkNbcgvX FcVADW/WozQbhnIVi2RYnLwBAqf1WeN09sjeJfJXmbs6hbeaDB7FJVIpvnuVspaXMq BWTN6Gqv6fxTtAx0hItl5UG9yDtebEoEJ13VG4iCsRmLLAQgVvHCar0hvm3tF/HSiE dBFWR7sBSBgkA== Original-Received: from alfajor (69-165-136-52.dsl.teksavvy.com [69.165.136.52]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 465181201BD; Thu, 3 Dec 2020 09:45:14 -0500 (EST) In-Reply-To: (Jared Finder's message of "Wed, 02 Dec 2020 21:46:53 -0800") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=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:260218 Archived-At: Jared Finder [2020-12-02 21:46:53] wrote: > On 2020-12-02 8:53 am, Stefan Monnier wrote: >>> Subject: [PATCH] Make libraries work with xterm-mouse-mode. >> Could you explain (at least in the code, and ideally here as well) why >> we need this new `all-mouse-events` behavior? > > I updated the function locally to look like as follows. Let me know if you > have further questions. > > (defun read-potential-mouse-event () > "Read an event that might be a mouse event. > > This function exists for backward compatibility in code packaged > with Emacs. Do not call it directly in your own packages." > ;; `xterm-mouse-mode' events must go through `read-key' as they > ;; are decoded via `input-decode-map'. > (if xterm-mouse-mode > (read-key nil > ;; Normally `read-key' discards all mouse button > ;; down events. However, we want them here. > t) > (read-event))) That doesn't say what this function should do with non-mouse events, so it makes it hard to decide what its behavior should be. OK, so what you specifically need is for down events not to be dropped, right? >> `function-key-map` has very similar effects (and to a large extent, the >> downgrading of mouse-down events controlled by `all-mouse-events` could >> (I'd even say should) be implemented in `function-key-map` rather than >> via the current ad-hoc code in read-key-sequence), so I'm not very >> comfortable with treating these mouse-event-rewritings differently from >> other rewritings. > Just a few comments: > Wouldn't that require binding 2^6 * 3 * 3 * 5 = 2880 events in > function-key-map? Yes, but that's only because of the limited form available in keymaps. To make it practical, we'd need to add "computed keymaps". This is a long-standing desire of mine, which would be useful in various circumstances (and should make it possible to remove a lot of ad-hoc rewritings in read_key_sequence). > And such behavior would want a special variable (as the code is currently in > my patch) to disable it to avoid copying all of function-key-map in > read-key. So I think it is fully independent of my current patch. Yes. My point is just that a functionally "don't discard mouse-events" is weird in a function which is not specifically about mouse events. It naturally leads to "don't down case events", "don't remap `tab` to TAB", etc... There has to be a more general underlying principle. Maybe we could (re)use the DONT-DOWNCASE-LAST arg of `read-key-sequence` for that? This would mean no change in `read-key` but a change in `read-key-sequence` instead (and hence further-reaching consequences). Or maybe an option to `read-key` to disable all function-key-map-like remappings (i.e. remappings which are only applied if there's no binding for that key-sequence)? Stefan