Package: emacs;
Reported by: ERIC Frederickson <ericfrederickson68 <at> gmail.com>
Date: Thu, 18 Sep 2025 01:43:02 UTC
Severity: normal
Tags: patch
To reply to this bug, email your comments to 79463 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#79463
; Package emacs
.
(Thu, 18 Sep 2025 01:43:02 GMT) Full text and rfc822 format available.ERIC Frederickson <ericfrederickson68 <at> gmail.com>
:bug-gnu-emacs <at> gnu.org
.
(Thu, 18 Sep 2025 01:43:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: ERIC Frederickson <ericfrederickson68 <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Cc: per <at> bothner.com, dann <at> ics.uci.edu Subject: [PATCH] term: Add 'term-other-window' command Date: Wed, 17 Sep 2025 20:41:50 -0500
[Message part 1 (text/plain, inline)]
Hello everyone, The patch attached to this message adds a command to lisp/term.el called 'term-other-window', which is a sibling command to 'term' but which opens the *terminal* buffer in another window. I think that the functionality of having a terminal emulator pop to another window can be extremely useful to those who use a terminal emulator within their text editor, and would hence be a great thing to ship with Emacs's built-in 'term' package. Additionally, I think that this addition would be especially useful to people coming to Emacs from other text/code editing environments such as VS Code, wherein the "pop-up terminal" / "split terminal" workflow is very widely used and is seen as standard. If this patch is well received, I'd like to follow it up by sending an RFC patch to emacs-devel <at> gnu.org proposing to bind this new command to "C-x 4 t", as I think that having 'term-other-window' bound to a key by default would make pop-up terminal users feel very comfortable on an out-of-the-box Emacs installation. Note: I'm currently waiting on a response for my FSF copyright assignment, so if someone would like to install this patch, please ask me to confirm that my assignment has been completed before installing. Thank you, -- Eric Frederickson https://emfred.com
[0001-Add-term-other-window-command.patch (application/octet-stream, attachment)]
bug-gnu-emacs <at> gnu.org
:bug#79463
; Package emacs
.
(Thu, 18 Sep 2025 05:36:02 GMT) Full text and rfc822 format available.Message #8 received at 79463 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: ERIC Frederickson <ericfrederickson68 <at> gmail.com> Cc: dann <at> ics.uci.edu, per <at> bothner.com, 79463 <at> debbugs.gnu.org Subject: Re: bug#79463: [PATCH] term: Add 'term-other-window' command Date: Thu, 18 Sep 2025 08:35:20 +0300
> Cc: per <at> bothner.com, dann <at> ics.uci.edu > From: ERIC Frederickson <ericfrederickson68 <at> gmail.com> > Date: Wed, 17 Sep 2025 20:41:50 -0500 > > The patch attached to this message adds a command to lisp/term.el called > 'term-other-window', which is a sibling command to 'term' but which > opens the *terminal* buffer in another window. Thanks. > I think that the functionality of having a terminal emulator pop to > another window can be extremely useful to those who use a terminal > emulator within their text editor, and would hence be a great thing to > ship with Emacs's built-in 'term' package. Additionally, I think that > this addition would be especially useful to people coming to Emacs from > other text/code editing environments such as VS Code, wherein the > "pop-up terminal" / "split terminal" workflow is very widely used and is > seen as standard. It's a no-brainer to have a command that does something we already do, but in another window. However, please note that Emacs 31 is already capable to do this generically with many/most commands, by using the "C-x 4 4" prefix. Thus, "C-x 4 4 M-x term RET" already does what you want, and I'm therefore wondering whether we need a new command for this, let alone a new keybinding "C-x 4 t". I'm writing some comments below, both for the case we decide to accept this patch nonetheless, and for making you aware of our conventions for your future contributions. > +*** New command 'term-other-window'. > +This command is like 'term', but opens the resulting Term mode buffer in > +another window. With the addition of this command, Emacs now gives users > +an out-of-the-box way to use the common "pop-up terminal" workflow that > +many users may be expecting, especially if they're coming from other > +popular text editing environments in which this workflow is standard. Our conventions are to leave two spaces between sentences. Also, the second sentence seems to be unnecessary, because NEWS doesn't have to advertise new features, as long as the functionality is clear. > +;;;###autoload > +(defun term-other-window (program) > + "Start a terminal-emulator in a new buffer, in another window. > +The buffer is in Term mode; see `term-mode' for the > +commands to use in that buffer. > + > +\\<term-raw-map>Type \\[other-window] to switch back to another window, > +or \\[switch-to-buffer] to switch to another buffer." > + (interactive (list (read-shell-command "Run program in other window: " > + (or explicit-shell-file-name > + (getenv "ESHELL") > + shell-file-name)))) > + (let ((prog (split-string-shell-command program))) > + (set-buffer (apply #'make-term "terminal" (car prog) nil (cdr prog)))) > + (term-char-mode) > + (pop-to-buffer "*terminal*")) Since this is almost an exact copy of 'term', maybe making them both use the same subroutine with most of the body would be slightly better. E.g., what if someone wants to add term-other-frame?
bug-gnu-emacs <at> gnu.org
:bug#79463
; Package emacs
.
(Thu, 18 Sep 2025 18:10:03 GMT) Full text and rfc822 format available.Message #11 received at 79463 <at> debbugs.gnu.org (full text, mbox):
From: ERIC Frederickson <ericfrederickson68 <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: dann <at> ics.uci.edu, per <at> bothner.com, 79463 <at> debbugs.gnu.org Subject: Re: bug#79463: [PATCH] term: Add 'term-other-window' command Date: Thu, 18 Sep 2025 13:09:21 -0500
>> I think that the functionality of having a terminal emulator pop to >> another window can be extremely useful to those who use a terminal >> emulator within their text editor, and would hence be a great thing to >> ship with Emacs's built-in 'term' package. Additionally, I think that >> this addition would be especially useful to people coming to Emacs from >> other text/code editing environments such as VS Code, wherein the >> "pop-up terminal" / "split terminal" workflow is very widely used and is >> seen as standard. > It's a no-brainer to have a command that does something we already do, > but in another window. However, please note that Emacs 31 is already > capable to do this generically with many/most commands, by using the > "C-x 4 4" prefix. Thus, "C-x 4 4 M-x term RET" already does what you > want, and I'm therefore wondering whether we need a new command for > this, let alone a new keybinding "C-x 4 t". Yes; the "C-x 4 4 M-x term RET" solution is something I found while exploring the 'term-other-window' idea, and it led me to question whether a new command like 'term-other-window' was necessary. I came to the conclusion that the existence of a stand-alone 'term-other-window' command would still be beneficial, because it would enable users to bind the "Term mode buffer in another window" behavior to a key without needing to write a custom command to bind the key to. I think it'd be nice if they could make a binding for this behavior via "M-x global-set-key RET" for example, especially since this is a behavior that I've seen to be widely used among programmers. I'd be worried about a situation where a user thinks: "I like what 'C-x 4 4 M-x term RET' does, and would like to bind that to a more convenient key", and then can't find a way to do so. Of course, this argument could apply to any command that someone might want to run after "C-x 4 4", and clearly we should not add a '*-other-window' variant for any command '*' for which it may be wanted. However, I feel it's a justified addition to the 'term' package specifically because the "terminal emulator in another window" behavior is a common pattern of interaction for terminal emulator users, and making it more discoverable and more easily bindable via adding a command like 'term-other-window' seems to make 'term' more friendly. > I'm writing some comments below, both for the case we decide to accept > this patch nonetheless, and for making you aware of our conventions > for your future contributions. Awesome, thank you very much for providing this feedback. >> +*** New command 'term-other-window'. >> +This command is like 'term', but opens the resulting Term mode buffer in >> +another window. With the addition of this command, Emacs now gives users >> +an out-of-the-box way to use the common "pop-up terminal" workflow that >> +many users may be expecting, especially if they're coming from other >> +popular text editing environments in which this workflow is standard. > Our conventions are to leave two spaces between sentences. Adopted. > Also, the second sentence seems to be unnecessary, because NEWS > doesn't have to advertise new features, as long as the functionality > is clear. Understood. >> +;;;###autoload >> +(defun term-other-window (program) >> + "Start a terminal-emulator in a new buffer, in another window. >> +The buffer is in Term mode; see `term-mode' for the >> +commands to use in that buffer. >> + >> +\\<term-raw-map>Type \\[other-window] to switch back to another window, >> +or \\[switch-to-buffer] to switch to another buffer." >> + (interactive (list (read-shell-command "Run program in other window: " >> + (or explicit-shell-file-name >> + (getenv "ESHELL") >> + shell-file-name)))) >> + (let ((prog (split-string-shell-command program))) >> + (set-buffer (apply #'make-term "terminal" (car prog) nil (cdr prog)))) >> + (term-char-mode) >> + (pop-to-buffer "*terminal*")) > Since this is almost an exact copy of 'term', maybe making them both > use the same subroutine with most of the body would be slightly > better. E.g., what if someone wants to add term-other-frame? Agreed; will do. I'll take some time to think about the best way to proceed here, and I hope to send an improved patch within a few days. I'll assume that it would be best to send this updated patch to this same thread, unless I hear otherwise. Thanks everyone, And thanks again Eli for your comments, -- Eric Frederickson On Thu, Sep 18, 2025 at 12:35 AM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > Cc: per <at> bothner.com, dann <at> ics.uci.edu > > From: ERIC Frederickson <ericfrederickson68 <at> gmail.com> > > Date: Wed, 17 Sep 2025 20:41:50 -0500 > > > > The patch attached to this message adds a command to lisp/term.el called > > 'term-other-window', which is a sibling command to 'term' but which > > opens the *terminal* buffer in another window. > > Thanks. > > > I think that the functionality of having a terminal emulator pop to > > another window can be extremely useful to those who use a terminal > > emulator within their text editor, and would hence be a great thing to > > ship with Emacs's built-in 'term' package. Additionally, I think that > > this addition would be especially useful to people coming to Emacs from > > other text/code editing environments such as VS Code, wherein the > > "pop-up terminal" / "split terminal" workflow is very widely used and is > > seen as standard. > > It's a no-brainer to have a command that does something we already do, > but in another window. However, please note that Emacs 31 is already > capable to do this generically with many/most commands, by using the > "C-x 4 4" prefix. Thus, "C-x 4 4 M-x term RET" already does what you > want, and I'm therefore wondering whether we need a new command for > this, let alone a new keybinding "C-x 4 t". > > I'm writing some comments below, both for the case we decide to accept > this patch nonetheless, and for making you aware of our conventions > for your future contributions. > > > +*** New command 'term-other-window'. > > +This command is like 'term', but opens the resulting Term mode buffer in > > +another window. With the addition of this command, Emacs now gives users > > +an out-of-the-box way to use the common "pop-up terminal" workflow that > > +many users may be expecting, especially if they're coming from other > > +popular text editing environments in which this workflow is standard. > > Our conventions are to leave two spaces between sentences. Also, the > second sentence seems to be unnecessary, because NEWS doesn't have to > advertise new features, as long as the functionality is clear. > > > +;;;###autoload > > +(defun term-other-window (program) > > + "Start a terminal-emulator in a new buffer, in another window. > > +The buffer is in Term mode; see `term-mode' for the > > +commands to use in that buffer. > > + > > +\\<term-raw-map>Type \\[other-window] to switch back to another window, > > +or \\[switch-to-buffer] to switch to another buffer." > > + (interactive (list (read-shell-command "Run program in other window: " > > + (or explicit-shell-file-name > > + (getenv "ESHELL") > > + shell-file-name)))) > > + (let ((prog (split-string-shell-command program))) > > + (set-buffer (apply #'make-term "terminal" (car prog) nil (cdr prog)))) > > + (term-char-mode) > > + (pop-to-buffer "*terminal*")) > > Since this is almost an exact copy of 'term', maybe making them both > use the same subroutine with most of the body would be slightly > better. E.g., what if someone wants to add term-other-frame?
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.