From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: Info-mode patch Date: Tue, 27 Jun 2023 09:32:25 +0300 Organization: LINKOV.NET Message-ID: <86wmzpqva6.fsf@mail.linkov.net> References: <86fs6ertto.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="37420"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) Cc: emacs-devel@gnu.org To: Arthur Miller Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jun 27 08:34:18 2023 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 1qE2HI-0009an-He for ged-emacs-devel@m.gmane-mx.org; Tue, 27 Jun 2023 08:34:16 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qE2Gc-0001a5-TG; Tue, 27 Jun 2023 02:33:34 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qE2Gb-0001Zs-6R for emacs-devel@gnu.org; Tue, 27 Jun 2023 02:33:33 -0400 Original-Received: from relay6-d.mail.gandi.net ([217.70.183.198]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qE2GZ-0004lU-EM for emacs-devel@gnu.org; Tue, 27 Jun 2023 02:33:32 -0400 X-GND-Sasl: juri@linkov.net X-GND-Sasl: juri@linkov.net Original-Received: by mail.gandi.net (Postfix) with ESMTPSA id 05287C0007; Tue, 27 Jun 2023 06:33:26 +0000 (UTC) In-Reply-To: (Arthur Miller's message of "Mon, 26 Jun 2023 22:17:26 +0200") Received-SPF: pass client-ip=217.70.183.198; envelope-from=juri@linkov.net; helo=relay6-d.mail.gandi.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:307251 Archived-At: > Also I didn't wanted to change API. Not that I believe that there are many 3rd > party packages for Info and Help modes, and that people actually customize > those, but anyway. Wrappers would be a new API, which all require at least some > documentation etc. Actually adding new arguments to existing functions counts as changing API. Whereas not changing existing functions means keeping the current API unchanged. Since you need to bind commands to new keys anyway, there is no difference whether you bind old commands or new other-window commands. > Can you control on which frame the input goes when prompted by original > function with a wrapper approach? I changed quite few prompts a wrapped stuff > with both with-current-buffer, and with-selected-frame to achive that. I don't > think I could do that if I wrapped stuff. But what do I know, perhaps there is > some way? I see that you added with-selected-frame to Info-index. But it seems this is not enough because with-selected-frame still fails to switch focus to another frame. You need also to use select-frame-set-input-focus. Since neither with-selected-window nor with-selected-frame can switch focus, we could add a new macro like #+begin_src emacs-lisp (defmacro with-selected-window-frame (window &rest body) `(let ((frame (window-frame ,window))) (unless (eq frame (selected-frame)) (select-frame frame 'norecord) (select-frame-set-input-focus frame 'norecord)) (with-selected-window ,window ,@body))) #+end_src Then everything works nicely with #+begin_src emacs-lisp (defun Info-index-other-window (topic) (interactive (with-selected-window-frame (info-window) (eval (cadr (interactive-form 'Info-index))))) (with-selected-window-frame (info-window) (Info-index topic))) #+end_src