Skip to content

Commit 6e195f4

Browse files
committed
Add PyreplToggle command, thanks @marty-oehme for idea
1 parent d47d360 commit 6e195f4

4 files changed

Lines changed: 27 additions & 0 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ pyrepl.setup({
4949
vim.keymap.set("n", "<leader>jo", pyrepl.open_repl)
5050
vim.keymap.set("n", "<leader>jh", pyrepl.hide_repl)
5151
vim.keymap.set("n", "<leader>jc", pyrepl.close_repl)
52+
vim.keymap.set("n", "<leader>jt", pyrepl.toggle_repl)
5253
vim.keymap.set("n", "<leader>ji", pyrepl.open_image_history)
5354
vim.keymap.set({ "n", "t" }, "<C-j>", pyrepl.toggle_repl_focus)
5455

@@ -201,6 +202,7 @@ Commands:
201202
- `:PyreplOpen` - select a kernel and open the REPL;
202203
- `:PyreplHide` - hide the REPL window (kernel stays alive);
203204
- `:PyreplClose` - close the REPL and shut down the kernel;
205+
- `:PyreplToggle` - toggle REPL between hidden and opened state;
204206
- `:PyreplToggleFocus` - focus REPL in terminal mode or switch back to previous window;
205207
- `:PyreplSendVisual` - send the last visual selection;
206208
- `:PyreplSendBuffer` - send the entire buffer;
@@ -225,6 +227,7 @@ require("pyrepl").setup(opts)
225227
require("pyrepl").open_repl()
226228
require("pyrepl").hide_repl()
227229
require("pyrepl").close_repl()
230+
require("pyrepl").toggle_repl()
228231
require("pyrepl").toggle_repl_focus()
229232
require("pyrepl").send_visual()
230233
require("pyrepl").send_buffer()

doc/pyrepl.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ Minimal `vim.pack` setup with the default config and example keymaps:
6262
vim.keymap.set("n", "<leader>jo", pyrepl.open_repl)
6363
vim.keymap.set("n", "<leader>jh", pyrepl.hide_repl)
6464
vim.keymap.set("n", "<leader>jc", pyrepl.close_repl)
65+
vim.keymap.set("n", "<leader>jt", pyrepl.toggle_repl)
6566
vim.keymap.set("n", "<leader>ji", pyrepl.open_image_history)
6667
vim.keymap.set({ "n", "t" }, "<C-j>", pyrepl.toggle_repl_focus)
6768
@@ -101,6 +102,9 @@ COMMANDS *pyrepl-commands
101102
:PyreplClose *PyreplClose*
102103
Close the REPL and shut down the kernel.
103104

105+
:PyreplToggle *PyreplToggle*
106+
Toggle REPL between hidden and opened state.
107+
104108
:PyreplToggleFocus *PyreplToggleFocus*
105109
Focus the REPL in terminal mode, or switch back to the previous window.
106110

@@ -153,6 +157,9 @@ require("pyrepl").hide_repl() *pyrepl.hide_rep
153157
require("pyrepl").close_repl() *pyrepl.close_repl*
154158
Same as |PyreplClose|. Closes the REPL and shuts down the kernel.
155159

160+
require("pyrepl").toggle_repl() *pyrepl.toggle_repl*
161+
Same as |PyreplToggle|. Toggles the REPL window.
162+
156163
require("pyrepl").toggle_repl_focus() *pyrepl.toggle_repl_focus*
157164
Same as |PyreplToggleFocus|. Focus the REPL in terminal mode, or switch
158165
back to the previous window.

lua/pyrepl/core.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,15 @@ function M.close_repl()
224224
state = nil
225225
end
226226

227+
---Toggle REPL window.
228+
function M.toggle_repl()
229+
if state and state.win and vim.api.nvim_win_is_valid(state.win) then
230+
M.hide_repl()
231+
else
232+
M.open_repl()
233+
end
234+
end
235+
227236
---Get terminal job chan if REPL active, return nil otherwise.
228237
---@return integer|nil
229238
function M.get_chan()

lua/pyrepl/init.lua

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ function M.close_repl()
2121
core.close_repl()
2222
end
2323

24+
function M.toggle_repl()
25+
core.toggle_repl()
26+
end
27+
2428
function M.toggle_repl_focus()
2529
core.toggle_repl_focus()
2630
end
@@ -104,6 +108,10 @@ function M.setup(opts)
104108
M.close_repl()
105109
end, { nargs = 0 })
106110

111+
vim.api.nvim_create_user_command("PyreplToggle", function()
112+
M.toggle_repl()
113+
end, { nargs = 0 })
114+
107115
vim.api.nvim_create_user_command("PyreplToggleFocus", function()
108116
M.toggle_repl_focus()
109117
end, { nargs = 0 })

0 commit comments

Comments
 (0)