Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] keymap focus / cursor desync with ToggleTermSendCurrentLine and ToggleTermSendVisualLines #457

Open
1 task done
louis-vinchon opened this issue Jul 8, 2023 · 2 comments

Comments

@louis-vinchon
Copy link

louis-vinchon commented Jul 8, 2023

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

When opening a terminal with:

  • ToggleTermSendCurrentLine
  • ToggleTermSendVisualLines

The terminal opens but:

  • the cursor stays in the original window.
  • the "focus" moves to the terminal window.

Such as if I use hjkl my cursor moves inside the original window, but if I use a keymap that does "<cmd>q!<CR>" it closes the terminal window.

The above is what happens on the first iteration. On the second iteration, the terminal window opens, but the terminal buffer is inserted into my original "document" buffer window instead of its own.


Alternatively: when manually running :q

The first iteration goes as expected: the terminal opens, my cursor is still in the window, I type :q, my original window closes.

The second iteration however goes exactly as described above.

Expected Behavior

Repeated uses of the commands should open new terminal windows when needed, and the terminal windows should always go to those buffers.

It seems that even though the cursor doesn't switch windows, the keymap capture does, this should not happen.

Steps To Reproduce

Lazy lua module:

local function make_opts(_, opts)
  local custom_opts = {
    open_mapping = [[<C-\>]],
  }

  return vim.tbl_deep_extend(
    "force",
    opts,
    custom_opts
  )
end

local function make_keymaps()
  return {
    {
      "<leader>te",
      "<cmd>ToggleTermSendCurrentLine 8 <CR>",
      desc = "Execute current line in a terminal.",
    },
    {
      "<leader>te",
      "<cmd>ToggleTermSendVisualLines 8 <CR>",
      mode = "v",
      desc = "Execute selected lines in a terminal.",
    },
  }
end

return {
  "akinsho/toggleterm.nvim",
  lazy = false,
  keys = make_keymaps(),
  opts = make_opts,
}

Sample line to execute:

ls

Environment

  • OS:
    $ uname -a
    Linux arch 6.4.1-arch2-1 #1 SMP PREEMPT_DYNAMIC Tue, 04 Jul 2023 08:39:40 +0000 x86_64 GNU/Linux
  • neovim version:
    :version
    NVIM v0.9.1
    Build type: Release
    LuaJIT 2.1.0-beta3
    
  • Shell:
    $ zsh --version
    zsh 5.9 (x86_64-pc-linux-gnu)

Anything else?

No response

@louis-vinchon louis-vinchon changed the title [BUG] Odd focus / cursor behavior with ToggleTermSendCurrentLine and ToggleTermSendVisualLines [BUG] keymap focus / cursor desync with ToggleTermSendCurrentLine and ToggleTermSendVisualLines Jul 8, 2023
@akinsho
Copy link
Owner

akinsho commented Jul 10, 2023

@louis-vinchon the exact same comment I mentioned in the other issue applies here as well. This issues sounds quite strange though in a way that deviates from how neovim works at all tbh i.e. You can't really have focus in a different place from the cursor AFAIK. But in either case TLDR is PRs welcome but essentially I leave REPLish functionality to users willing to put in the work. It's either that or deprecating all of it to reduce this dimension of issues.

@jackyhevey
Copy link

jackyhevey commented Sep 22, 2023

map keys to lua

":lua vim.cmd [[ToggleTermSendVisualSelection ]] <cr>",

I don't know why, but it works

lazy.nvim config

{
    "akinsho/toggleterm.nvim",
    cmd = {
      "ToggleTermSendVisualSelection",
      "ToggleTermSendCurrentLine",
    },
    keys = {
      { "<leader>tc", "<cmd>ToggleTermSendCurrentLine<cr>", desc = "Send Current Line" },
      {
        mode = { "v" },
        "<leader>ts",
        ":lua vim.cmd [[ToggleTermSendVisualSelection ]] <cr>",
        desc = "Send Selection Lines",
        silent = true
      },
    }
 }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants