* bug#39687: 26.3; Add customize-variable option for not locking keyboards @ 2020-02-20 5:01 Logan Perkins 2020-02-21 8:23 ` Eli Zaretskii 0 siblings, 1 reply; 13+ messages in thread From: Logan Perkins @ 2020-02-20 5:01 UTC (permalink / raw) To: 39687 In GNU Emacs 26.3 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.11) of 2020-01-28 built on gentoo-server Windowing system distributor 'The X.Org Foundation', version 11.0.12005000 System Description: Gentoo Base System release 2.6 This is a feature request more than a bug report. When using the built-in server (either via `emacs --daemon` or `server-start`) + emacsclient, use of the minibuffer from one client completely blocks other clients (they can't even quit until the mini buffer finishes). This is governed by calls to `temporarily_switch_to_single_kboard(struct frame *f)` in `keyboard.c`. If I understand correctly, there are two reasons for locking other clients while the minibuffer is in use. First, the input for the minibuffer is stored in a single global variable; while enabling recursive minibuffers is possible, bottom line is there can only be *one* active mini buffer at a time. Locking secondary inputs reduces the potential for confusion with fighting over the minibuffer. Additionally, sometimes there is something which requires a user response (such as confirmation on killing a modified buffer), and resolving that is simpler if the state isn't changing in the background. On the other hand, even with a confirmation box open, a user can switch away from the minibuffer and continue changing state (potentially even opening a recursive minibuffer), so I don't think the second case is sufficient cause to disallow multi-keyboard mode when the minibuffer is in use. As for the first issue, I don't think the present behavior is clearly best, as it doesn't *ignore* secondary keyboard input, it *queues* it, executing it in one block when the minibuffer ends. This can cause unexpected issues for novice users. Also, the inability to even close the client (short of SIGTERMing it) is not ideal. I've gutted the `temporarily_switch_to_single_kboard(struct frame *f)` in `keyboard.c` on a test system, and successfully used it with multiple people sharing a single server instance (on a joint project), and it works reasonably well. I'd like to propose adding a customizeable variable in the `minibuffer` group which disables locking the other keyboards. Ideally, the other clients should get a "minibuffer in use" message in their minibuffers so users can see when someone is using the minibuffer. I am happy to work on this, and submit patches for it, but would appreciate some advice before I start. Is there some further reason to lock the keyboard that I haven't considered? I think it's better to use the customizeable variable to prevent the call to temporarily_switch_to_single_kboard, rather than have that function not do what it's name implies it does. Should I intercept all calls to it based on one new variable? Or should I split general minibuffer use from confirmation uses, and so on? (Looks like 3-4 different places it's called in the source). Should I make the behavior depend on some elisp function? I think that might be the easiest way to support the "minibuffer in use" message and the like, but I'm not sure what the downside would be. Is it a waste of time for me to submit patches related to this feature? If there's zero interest in adding this, or it would be less work for someone else to write it than review my patches, I won't waste your time sending them. Regards, Logan Perkins ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2020-02-20 5:01 bug#39687: 26.3; Add customize-variable option for not locking keyboards Logan Perkins @ 2020-02-21 8:23 ` Eli Zaretskii [not found] ` <32ea14fb-1ab8-186e-2534-4d3d2a56d6d8@lp-programming.com> 0 siblings, 1 reply; 13+ messages in thread From: Eli Zaretskii @ 2020-02-21 8:23 UTC (permalink / raw) To: Logan Perkins; +Cc: 39687 > From: Logan Perkins <logan@lp-programming.com> > Date: Wed, 19 Feb 2020 21:01:30 -0800 > > Is there some further reason to lock the keyboard that I haven't > considered? Can we back up a little, and discuss the use cases where the current behavior presents a limitation? Is quitting in the other clients the only one, or are there more? Also, are you implicitly saying that several persons work simultaneously vis-à-vis the same Emacs server? Because if not, I'm not sure I understand how simultaneous need to input from different clients could even happen. > Should I make the behavior depend on some elisp function? I think that > might be the easiest way to support the "minibuffer in use" message and > the like, but I'm not sure what the downside would be. > > Is it a waste of time for me to submit patches related to this feature? > If there's zero interest in adding this, or it would be less work for > someone else to write it than review my patches, I won't waste your time > sending them. Speaking for myself, I think the interest depends on the relevant use cases where the current behavior implies restrictions. Thus my questions above. In any case, we thank you for your interest in Emacs and look forward to seeing your contributions, but I suggest to start your legal paperwork rolling now, because changes you are talking about will probably be non-trivial in length, so we will need a copyright assignment from you in order to accept the changes. If you agree, I can send you the form to fill and the instructions to go with it. ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <32ea14fb-1ab8-186e-2534-4d3d2a56d6d8@lp-programming.com>]
* bug#39687: 26.3; Add customize-variable option for not locking keyboards [not found] ` <32ea14fb-1ab8-186e-2534-4d3d2a56d6d8@lp-programming.com> @ 2020-02-22 9:27 ` Eli Zaretskii 2020-02-22 18:00 ` Logan Perkins 2020-05-19 1:15 ` Logan Perkins 0 siblings, 2 replies; 13+ messages in thread From: Eli Zaretskii @ 2020-02-22 9:27 UTC (permalink / raw) To: Logan Perkins; +Cc: 39687 [Please keep the bug address on the CC list, so this whole discussion is recorded by the Emacs issue tracker.] > From: Logan Perkins <logan@lp-programming.com> > Date: Fri, 21 Feb 2020 10:37:39 -0800 > > On 2/21/20 12:23 AM, Eli Zaretskii wrote: > >> From: Logan Perkins <logan@lp-programming.com> > >> Date: Wed, 19 Feb 2020 21:01:30 -0800 > >> > >> Is there some further reason to lock the keyboard that I haven't > >> considered? > > > > Can we back up a little, and discuss the use cases where the current > > behavior presents a limitation? Is quitting in the other clients the > > only one, or are there more? > > Quitting in other clients is one, but fairly minor (C-z; kill %1 will > get you out of it). Switching clients generally is another minor case. > If you walk away with the minibuffer open by accident, and then try to > use a remote client (via SSH or similar) later, it's locked (you can > work around this by registering a SIGUSR handler to close the > minibuffer, but that's not ideal). These seem to be valid use cases, so I tend to agree we should have an easier way of breaking out of the minibuffer input in another client. > > Also, are you implicitly saying that several persons work > > simultaneously vis-à-vis the same Emacs server? Because if not, I'm > > not sure I understand how simultaneous need to input from different > > clients could even happen. > > That's exactly the use-case where it matters most. If you're familiar > with Ludum Dare and similar code-sprints, it's pretty common to > have multiple people working on the same files at the same time. Having > a shared editor makes it faster and easier to draw attention to exactly > where one person needs help. It's also great for teaching (when you > aren't physically in front of the same computer), or for onboarding new > team members. Screen (the terminal multiplexer) can be used to similar > effect, but the ability to simultaneously edit the *same* file is > specific to emacs. I don't understand what you expect Emacs to do in these use cases. If we process inputs from several clients as they arrive, we could produce results that are unexpected and even disastrous. For example, suppose we receive C-x from one client followed by C-u from another followed by C-s from the first one -- if we process these in the order they were received, the result will be none of what the two clients intended. Maybe you thought that our input code will process input in chunks of complete sequences, and thus avoid the above-mentioned disasters, but then (a) I think we will need a very thorough restructuring of the current code in keyboard.c, as it currently decides on this dynamically; and (b) you will still have the same problem if the user of one client types C-x and then pauses for some reason. So I'm afraid I don't see what kind of solution is sought for here, please clarify. > > In any case, we thank you for your interest in Emacs and look forward > > to seeing your contributions, but I suggest to start your legal > > paperwork rolling now, because changes you are talking about will > > probably be non-trivial in length, so we will need a copyright > > assignment from you in order to accept the changes. If you agree, I > > can send you the form to fill and the instructions to go with it. > > I have no problem assigning copyright for my work on FSF projects to the > FSF. I live in Eastern Washington, and am self employed, so getting > the paperwork done should be about as trivial as it can be. Thanks, I will send the form off-list. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2020-02-22 9:27 ` Eli Zaretskii @ 2020-02-22 18:00 ` Logan Perkins 2020-05-19 1:15 ` Logan Perkins 1 sibling, 0 replies; 13+ messages in thread From: Logan Perkins @ 2020-02-22 18:00 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39687 On 2/22/20 1:27 AM, Eli Zaretskii wrote: > [Please keep the bug address on the CC list, so this whole discussion > is recorded by the Emacs issue tracker.] Oops! I hit reply instead of reply-all, not sure why Thunderbird doesn't make that the default, but I'll be more mindful of that in the future. > >> From: Logan Perkins <logan@lp-programming.com> >> Date: Fri, 21 Feb 2020 10:37:39 -0800 >> >> On 2/21/20 12:23 AM, Eli Zaretskii wrote: >> >> From: Logan Perkins <logan@lp-programming.com> >> >> Date: Wed, 19 Feb 2020 21:01:30 -0800 >> >> >> >> Is there some further reason to lock the keyboard that I haven't >> >> considered? >> > >> > Can we back up a little, and discuss the use cases where the current >> > behavior presents a limitation? Is quitting in the other clients the >> > only one, or are there more? >> >> Quitting in other clients is one, but fairly minor (C-z; kill %1 will >> get you out of it). Switching clients generally is another minor case. >> If you walk away with the minibuffer open by accident, and then try to >> use a remote client (via SSH or similar) later, it's locked (you can >> work around this by registering a SIGUSR handler to close the >> minibuffer, but that's not ideal). > > These seem to be valid use cases, so I tend to agree we should have an > easier way of breaking out of the minibuffer input in another client. > >> > Also, are you implicitly saying that several persons work >> > simultaneously vis-�-vis the same Emacs server? Because if not, I'm >> > not sure I understand how simultaneous need to input from different >> > clients could even happen. >> >> That's exactly the use-case where it matters most. If you're familiar >> with Ludum Dare and similar code-sprints, it's pretty common to >> have multiple people working on the same files at the same time. Having >> a shared editor makes it faster and easier to draw attention to exactly >> where one person needs help. It's also great for teaching (when you >> aren't physically in front of the same computer), or for onboarding new >> team members. Screen (the terminal multiplexer) can be used to similar >> effect, but the ability to simultaneously edit the *same* file is >> specific to emacs. > > I don't understand what you expect Emacs to do in these use cases. If > we process inputs from several clients as they arrive, we could > produce results that are unexpected and even disastrous. For example, > suppose we receive C-x from one client followed by C-u from another > followed by C-s from the first one -- if we process these in the order > they were received, the result will be none of what the two clients > intended. > > Maybe you thought that our input code will process input in chunks of > complete sequences, and thus avoid the above-mentioned disasters, but > then (a) I think we will need a very thorough restructuring of the > current code in keyboard.c, as it currently decides on this > dynamically; and (b) you will still have the same problem if the user > of one client types C-x and then pauses for some reason. > > So I'm afraid I don't see what kind of solution is sought for here, > please clarify. So I've just done some more testing, with emacs 26.3-r1 (the latest stable version in Gentoo), and emacs 27.0.50_pre20191223, the latest snapshot, both compiled with and without the gutted switch_to_single_kboard... (I'll see about getting the latest development version from the repo probably this evening). Looks like keyboard handling got changed sometime between the two versions. I ran the following sequence in all 4 copies. 1. ./emacs -nw #on seat0 2. M-x start-server 3. ./emacsclient -t #on seat1 4. Switch both to the scratch buffer 5. Put each seat's cursor on its own line 6. On seat0, type abcde 7. On seat1, type 12345 8. On seat0, type C-x 9. On seat1, type u 10. On seat1, type C-x 11. On seat0, type C-c Note that this sequence doesn't try to put emacs into single keyboard mode, so the gutted function has no impact on the results. In emacs-26, step 9 inserts a literal u on seat1's line, step 11 closes emacs. Before step 11, both seat and seat1 display C-x as "breadcrumbs" in the minibuffer. In emacs-27, step 9 undoes seat0's last action (removes abcde), step 11 closes seat1's emacsclient. Obviously, the behaviour in emacs-27 precludes simultanuous input. I also think it's poor behavior, even if we don't unlock the keyboard when the minibuffer is in use, since someone walking away after hitting C-x (or some other partial command) and then connecting later will get unexpected (and probably unseen) results with their first keypress. I'll see if I can figure out which changes in keyboard.c account for the changed behavior, and what the reason for them was. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2020-02-22 9:27 ` Eli Zaretskii 2020-02-22 18:00 ` Logan Perkins @ 2020-05-19 1:15 ` Logan Perkins 2020-10-01 18:44 ` Lars Ingebrigtsen 2021-07-21 15:57 ` Lars Ingebrigtsen 1 sibling, 2 replies; 13+ messages in thread From: Logan Perkins @ 2020-05-19 1:15 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 39687 [-- Attachment #1: Type: text/plain, Size: 4097 bytes --] On 2/22/20 1:27 AM, Eli Zaretskii wrote: > > Also, are you implicitly saying that several persons work >> > simultaneously vis-à-vis the same Emacs server? Because if not, I'm >> > not sure I understand how simultaneous need to input from different >> > clients could even happen. >> >> That's exactly the use-case where it matters most. If you're familiar >> with Ludum Dare and similar code-sprints, it's pretty common to >> have multiple people working on the same files at the same time. Having >> a shared editor makes it faster and easier to draw attention to exactly >> where one person needs help. It's also great for teaching (when you >> aren't physically in front of the same computer), or for onboarding new >> team members. Screen (the terminal multiplexer) can be used to similar >> effect, but the ability to simultaneously edit the *same* file is >> specific to emacs. > I don't understand what you expect Emacs to do in these use cases. If > we process inputs from several clients as they arrive, we could > produce results that are unexpected and even disastrous. For example, > suppose we receive C-x from one client followed by C-u from another > followed by C-s from the first one -- if we process these in the order > they were received, the result will be none of what the two clients > intended. > > Maybe you thought that our input code will process input in chunks of > complete sequences, and thus avoid the above-mentioned disasters, but > then (a) I think we will need a very thorough restructuring of the > current code in keyboard.c, as it currently decides on this > dynamically; and (b) you will still have the same problem if the user > of one client types C-x and then pauses for some reason. > > So I'm afraid I don't see what kind of solution is sought for here, > please clarify. Alright, I finally had time to dig in to what commit broke the split input. The commit was e3cebbb839fc94f314659bf667c6790edebf4297, from 19 October 2019. It was to fix Bug#37782, and improve the fix for Bug#5095. Reverting that commit resolves the issue, but obviously reintroduces Bug#37782. I *think* I have a patch that still fixes the current behavior, and does not reintroduce those two bugs, I've included it below. Basically, the fix for Bug#5095 should only be applied if we are in the right context. If we're not, the if block above puts a Qswitch_frame at the head of the side queue and triggers replay_entire_sequence, so we just skip the second check. It'll get run again and catch the interruption on the next pass, but in the right context. diff --git a/src/keyboard.c b/src/keyboard.c index f9b9399d50..90ed1d3e9a 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -9599,17 +9599,23 @@ read_key_sequence (Lisp_Object *keybuf, Lisp_Object prompt, (interrupted_kboard, Fcons (make_lispy_switch_frame (frame), KVAR (interrupted_kboard, kbd_queue))); + mock_input = 0; + } + else + { + if (FIXNUMP (key) && XFIXNUM (key) != -2) + { + /* If interrupted while initializing terminal, we + need to replay the interrupting key. See + Bug#5095 and Bug#37782. */ + mock_input = 1; + keybuf[0] = key; + } + else + { + mock_input = 0; + } } - if (FIXNUMP (key) && XFIXNUM (key) != -2) - { - /* If interrupted while initializing terminal, we - need to replay the interrupting key. See - Bug#5095 and Bug#37782. */ - mock_input = 1; - keybuf[0] = key; - } - else - mock_input = 0; goto replay_entire_sequence; } } [-- Attachment #2: Type: text/html, Size: 4448 bytes --] ^ permalink raw reply related [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2020-05-19 1:15 ` Logan Perkins @ 2020-10-01 18:44 ` Lars Ingebrigtsen 2020-10-01 19:23 ` Eli Zaretskii 2021-07-21 15:57 ` Lars Ingebrigtsen 1 sibling, 1 reply; 13+ messages in thread From: Lars Ingebrigtsen @ 2020-10-01 18:44 UTC (permalink / raw) To: Logan Perkins; +Cc: 39687 Logan Perkins <logan@lp-programming.com> writes: > I *think* I have a patch that still fixes the current behavior, and > does not reintroduce those two bugs, I've included it below. > Basically, the fix for Bug#5095 should only be applied if we are in > the right context. If we're not, the if block above puts a > Qswitch_frame at the head of the side queue and triggers > replay_entire_sequence, so we just skip the second check. It'll get > run again and catch the interruption on the next pass, but in the > right context. Eli, did you have a chance to take a look at the proposed patch here? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2020-10-01 18:44 ` Lars Ingebrigtsen @ 2020-10-01 19:23 ` Eli Zaretskii 0 siblings, 0 replies; 13+ messages in thread From: Eli Zaretskii @ 2020-10-01 19:23 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: logan, 39687 > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: Eli Zaretskii <eliz@gnu.org>, 39687@debbugs.gnu.org > Date: Thu, 01 Oct 2020 20:44:30 +0200 > > Logan Perkins <logan@lp-programming.com> writes: > > > I *think* I have a patch that still fixes the current behavior, and > > does not reintroduce those two bugs, I've included it below. > > Basically, the fix for Bug#5095 should only be applied if we are in > > the right context. If we're not, the if block above puts a > > Qswitch_frame at the head of the side queue and triggers > > replay_entire_sequence, so we just skip the second check. It'll get > > run again and catch the interruption on the next pass, but in the > > right context. > > Eli, did you have a chance to take a look at the proposed patch here? I didn't feel that I understand the issue well enough, and this area is notorious for having all kinds of dark corners. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2020-05-19 1:15 ` Logan Perkins 2020-10-01 18:44 ` Lars Ingebrigtsen @ 2021-07-21 15:57 ` Lars Ingebrigtsen 2021-07-21 17:52 ` Logan Perkins 1 sibling, 1 reply; 13+ messages in thread From: Lars Ingebrigtsen @ 2021-07-21 15:57 UTC (permalink / raw) To: Logan Perkins; +Cc: 39687 Logan Perkins <logan@lp-programming.com> writes: > I *think* I have a patch that still fixes the current behavior, and > does not reintroduce those two bugs, I've included it below. > Basically, the fix for Bug#5095 should only be applied if we are in > the right context. If we're not, the if block above puts a > Qswitch_frame at the head of the side queue and triggers > replay_entire_sequence, so we just skip the second check. It'll get > run again and catch the interruption on the next pass, but in the > right context. I tried the various test cases, and the behaviour with your patch clearly seems better to me, so I've applied it to Emacs 28. But as Eli says, this is a ticklish area, so if this (re-)introduces other bugs, we'll have to revert. This change was small enough to apply without assigning copyright to the FSF, but for future patches you want to submit, it might make sense to get the paperwork started now, so that subsequent patches can be applied speedily. Would you be willing to sign such paperwork? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2021-07-21 15:57 ` Lars Ingebrigtsen @ 2021-07-21 17:52 ` Logan Perkins 2021-07-21 19:52 ` Eli Zaretskii 2021-07-21 22:08 ` Lars Ingebrigtsen 0 siblings, 2 replies; 13+ messages in thread From: Logan Perkins @ 2021-07-21 17:52 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: 39687 On Wed, 21 Jul 2021 08:57:44 -0700, Lars Ingebrigtsen wrote: > > Logan Perkins <logan@lp-programming.com> writes: > > > I *think* I have a patch that still fixes the current behavior, and > > does not reintroduce those two bugs, I've included it below. > > Basically, the fix for Bug#5095 should only be applied if we are in > > the right context. If we're not, the if block above puts a > > Qswitch_frame at the head of the side queue and triggers > > replay_entire_sequence, so we just skip the second check. It'll get > > run again and catch the interruption on the next pass, but in the > > right context. > > I tried the various test cases, and the behaviour with your patch > clearly seems better to me, so I've applied it to Emacs 28. I assume you only applied the patch I supplied, which improves the fix for Bug#5095, but does not address Bug#39687. Hopefully, with that sorted, we can discuss the issues around `temporarily_switch_to_single_kboard`. > > But as Eli says, this is a ticklish area, so if this (re-)introduces > other bugs, we'll have to revert. Fair enough. I am fairly confident that patch won't cause problems (but it might allow latent problems to surface). This is, indeed, a tricky area: it took the better part of 2 hours last year to "wrap my head around" the issue well enough to write the patch. If any other issues arise, I'm happy to address those. > > This change was small enough to apply without assigning copyright to the > FSF, but for future patches you want to submit, it might make sense to > get the paperwork started now, so that subsequent patches can be applied > speedily. Would you be willing to sign such paperwork? I submitted my assignment paperwork 18 May 2020, signed via GPG. Mr. Topham responded (on 4 Jun 2020) that he was having difficulty verifying the signature (possibly due to it being an EDDSA key?), and that he would try again. I have heard nothing since, but did not follow up as this thread was stalled, and last summer was a bit... intense. I still have the assignment document and can submit it again if that would help. Regards, Logan ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2021-07-21 17:52 ` Logan Perkins @ 2021-07-21 19:52 ` Eli Zaretskii 2021-07-21 22:08 ` Lars Ingebrigtsen 1 sibling, 0 replies; 13+ messages in thread From: Eli Zaretskii @ 2021-07-21 19:52 UTC (permalink / raw) To: Logan Perkins; +Cc: larsi, 39687 > Date: Wed, 21 Jul 2021 10:52:34 -0700 > From: Logan Perkins <logan@lp-programming.com> > Cc: Eli Zaretskii <eliz@gnu.org>, > 39687@debbugs.gnu.org > > > This change was small enough to apply without assigning copyright to the > > FSF, but for future patches you want to submit, it might make sense to > > get the paperwork started now, so that subsequent patches can be applied > > speedily. Would you be willing to sign such paperwork? > > I submitted my assignment paperwork 18 May 2020, signed via GPG. > Mr. Topham responded (on 4 Jun 2020) that he was having difficulty > verifying the signature (possibly due to it being an EDDSA key?), and > that he would try again. I have heard nothing since, but did not > follow up as this thread was stalled, and last summer was a > bit... intense. I still have the assignment document and can submit > it again if that would help. Please just ping the FSF copyright clerk with the above information. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2021-07-21 17:52 ` Logan Perkins 2021-07-21 19:52 ` Eli Zaretskii @ 2021-07-21 22:08 ` Lars Ingebrigtsen 2021-07-21 22:44 ` Logan Perkins 1 sibling, 1 reply; 13+ messages in thread From: Lars Ingebrigtsen @ 2021-07-21 22:08 UTC (permalink / raw) To: Logan Perkins; +Cc: 39687 Logan Perkins <logan@lp-programming.com> writes: > I assume you only applied the patch I supplied, which improves the fix > for Bug#5095, but does not address Bug#39687. Oh, sorry; I forgot what the bug report was really about. Now reopened. :-) > Hopefully, with that sorted, we can discuss the issues around > `temporarily_switch_to_single_kboard`. Yes. This is basically the same issue as in bug#9729, so I'll merge the two. And I think it'd be great to have this fixed. > I still have the assignment document and can submit > it again if that would help. That'd be good; or ask copyright-clerk@fsf.org what the status is. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2021-07-21 22:08 ` Lars Ingebrigtsen @ 2021-07-21 22:44 ` Logan Perkins 2021-07-22 12:05 ` Lars Ingebrigtsen 0 siblings, 1 reply; 13+ messages in thread From: Logan Perkins @ 2021-07-21 22:44 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: 39687 On Wed, 21 Jul 2021 15:08:45 -0700, Lars Ingebrigtsen wrote: > > Logan Perkins <logan@lp-programming.com> writes: > > Hopefully, with that sorted, we can discuss the issues around > > `temporarily_switch_to_single_kboard`. > > Yes. This is basically the same issue as in bug#9729, so I'll merge the > two. And I think it'd be great to have this fixed. Yes, it is the same as bug#9729, or at least the same underlying cause/problem. I missed that bug when I went looking to see if this was already supported, as that only mentions it being a problem in context of opening files. The underlying problem applies anytime the minibuffer is in use. Still, makes sense to merge them. I just read that bug report end-to-end. I *think* for part of its discussion they were running into the fix from bug#5095. While it is true that emacs (being single threaded) only reads from one virtual keyboard at a time, it is capable of switching between virtual keyboards and interleaving their input. Nor is it the case that only one minibuffer input is possible at a time. This is fundamentally how `enable-recursive-minibuffers` works, and each client has its own minibuffer even when that is `nil`. Anyway, the fix for this needs to be gated behind an option (at least initially), as it does cause some odd interactions with the minibuffer. (For example, when two clients both open a minibuffer, when the first client finishes with the minibuffer, the prompt vanishes on the second client, and the focus switches away, but the minibuffer remains open). I think these problems can be worked through, but until they are, we need people to opt-in to them. It's also worth noting that, without recursive minibuffers, the vanishing minibuffer issue doesn't occur, but one client gets a minibuffer in use message instead. > > > I still have the assignment document and can submit > > it again if that would help. > > That'd be good; or ask copyright-clerk@fsf.org what the status is. > I sent a message to that email an hour (ish) ago. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#39687: 26.3; Add customize-variable option for not locking keyboards 2021-07-21 22:44 ` Logan Perkins @ 2021-07-22 12:05 ` Lars Ingebrigtsen 0 siblings, 0 replies; 13+ messages in thread From: Lars Ingebrigtsen @ 2021-07-22 12:05 UTC (permalink / raw) To: Logan Perkins; +Cc: 39687 Logan Perkins <logan@lp-programming.com> writes: > Anyway, the fix for this needs to be gated behind an option (at least > initially), as it does cause some odd interactions with the > minibuffer. Yup. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2021-07-22 12:05 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-02-20 5:01 bug#39687: 26.3; Add customize-variable option for not locking keyboards Logan Perkins 2020-02-21 8:23 ` Eli Zaretskii [not found] ` <32ea14fb-1ab8-186e-2534-4d3d2a56d6d8@lp-programming.com> 2020-02-22 9:27 ` Eli Zaretskii 2020-02-22 18:00 ` Logan Perkins 2020-05-19 1:15 ` Logan Perkins 2020-10-01 18:44 ` Lars Ingebrigtsen 2020-10-01 19:23 ` Eli Zaretskii 2021-07-21 15:57 ` Lars Ingebrigtsen 2021-07-21 17:52 ` Logan Perkins 2021-07-21 19:52 ` Eli Zaretskii 2021-07-21 22:08 ` Lars Ingebrigtsen 2021-07-21 22:44 ` Logan Perkins 2021-07-22 12:05 ` Lars Ingebrigtsen
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).