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

Pasting via the right-click menu inserts junk #1317

Closed
3 tasks done
yinghaoyu opened this issue Jul 1, 2024 · 21 comments
Closed
3 tasks done

Pasting via the right-click menu inserts junk #1317

yinghaoyu opened this issue Jul 1, 2024 · 21 comments
Labels
bug Something isn't working has:repro This issue contains reproducing steps ui General user interface related issues upstream Upstream (neovim/plugin) issues

Comments

@yinghaoyu
Copy link

yinghaoyu commented Jul 1, 2024

Version confirmation

  • Confirm

Following prerequisites

  • Confirm

Not a user config issue

  • Confirm

Neovim version

NVIM v0.10.0

Operating system/version

wsl-ubuntu20.04

Terminal name/version

windows terminal

$TERM environment variable

No response

Branch info

main (Default/Latest)

Fetch Preferences

SSH (use_ssh = true)

How to reproduce the issue

Using your mouse to select the text and copy it, then you can see re("scrollview").handle_mouse("left", true) pasted.

Expected behavior

No extra operation

Actual behavior

No response

Additional information

No response

@yinghaoyu yinghaoyu added the bug Something isn't working label Jul 1, 2024
@ayamir
Copy link
Owner

ayamir commented Jul 1, 2024

Can't repro for me.

2024-07-01-23-52-35.mp4

@yinghaoyu
Copy link
Author

yinghaoyu commented Jul 2, 2024

image
Using copy by your right key.

@yinghaoyu
Copy link
Author

image
After I clicked copy.

@ayamir
Copy link
Owner

ayamir commented Jul 2, 2024

Really can't repro

2024-07-02-21-57-59.mp4

@CharlesChiuGit
Copy link
Collaborator

i'm not sure if i hit the similar issue, but i also encounter some weird "copy-pasting" when ssh to remote nvim via windows too.
maybe wsl is sort of like a remote machine?

the "copy-pasting" issue i mentioned above is that remote nvim will paste whatever in the latest registry when i ssh to it on windows.( but this issue never happened on macos

@Jint-lzxy Jint-lzxy changed the title Mouse Bug Pasting via the right-click menu inserts junk Jul 3, 2024
@Jint-lzxy
Copy link
Collaborator

I can reproduce this on my setup. I'll try a minimal setup later to see if the issue is still there.

@Jint-lzxy
Copy link
Collaborator

the "copy-pasting" issue i mentioned above is that remote nvim will paste whatever in the latest registry when i ssh to it on windows.( but this issue never happened on macos

@CharlesChiuGit What do u mean by the "latest registry"? r u referring to the * register?

@CharlesChiuGit
Copy link
Collaborator

CharlesChiuGit commented Jul 3, 2024

ys, the bulit-in register in nvim

sorry! typo lol

@yinghaoyu
Copy link
Author

I can reproduce this on my setup. I'll try a minimal setup later to see if the issue is still there.

Native nvim does not have this problem.

@Jint-lzxy
Copy link
Collaborator

I think I've tracked down the cause. @yinghaoyu Can u please confirm if the following minimal init.lua causes this issue?

local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
	vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
	vim.fn.system({
		"git",
		"clone",
		"--filter=blob:none",
		"--single-branch",
		"https://github.com/folke/lazy.nvim.git",
		lazypath,
	})
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
require("lazy").setup({ "dstein64/nvim-scrollview" }, {
	root = root .. "/plugins",
})

-- add anything else here
vim.g.mapleader = " "
vim.api.nvim_set_keymap("n", "<leader>r", "<Cmd>noh<CR>", {})

Use nvim -u init.lua <file> to test this config with the file where you found the issue.

@Jint-lzxy Jint-lzxy added has:repro This issue contains reproducing steps upstream Upstream (neovim/plugin) issues ui General user interface related issues and removed platform:windows labels Jul 3, 2024
@Jint-lzxy
Copy link
Collaborator

Jint-lzxy commented Jul 3, 2024

ys, the bulit-in register in nvim

@CharlesChiuGit Nah u might wanna switch ur clipboard provider for remote sessions as Windows Terminal really sucks with escape codes lol

@CharlesChiuGit
Copy link
Collaborator

as Windows Terminal really sucks with escape codes lol

i used wezterm on windows and encountered this issue lol
my "auto-pasting" issue won't happen when i connect to remote machine and use nvim XXX --clean

@Jint-lzxy
Copy link
Collaborator

i used wezterm on windows and encountered this issue lol

Hmm I think detailed help logs could be super helpful here. It can be caused by just about anything in our config :( I figured out what's going on here by checking the logs and saw that r (with a space) was mistakenly processed as user input. Afterwards the entire scrollview stuff ended up getting entered as if the user typed it themselves lol

@Jint-lzxy
Copy link
Collaborator

I'm gonna report this upstream first lol as I don't think this is an issue with our config.

@Jint-lzxy
Copy link
Collaborator

Should be fixed by dstein64/nvim-scrollview@30ca6e1.

@yinghaoyu
Copy link
Author

So quickly like a bat out of hell, Hahaha.

@CharlesChiuGit
Copy link
Collaborator

CharlesChiuGit commented Jul 4, 2024

@Jint-lzxy

I figured out what's going on here by checking the logs and saw that r (with a space) was mistakenly processed as user input

could u give me some tips on finding the related log files or how to locate the user input? tks in advanced!

@Jint-lzxy
Copy link
Collaborator

could u give me some tips on finding the related log files or how to locate the user input? tks in advanced!

Sure! Generally, the pattern is:

nvim -V[log-level][log-file] [...]

where log-level can be one of the following:

0   -- don't display any messages
1   -- display when viminfo file is read or written
2   -- display sourced files
5   -- display every searched tag-file
8   -- display files that trigger autocommands
9   -- display every triggered autocommand
12  -- display every executed function
13  -- report every thrown, caught, finished, or discarded exception
14  -- display anything pending in a :finally clause
15  -- display every executed ex-command

I would recommend 15 anyway as changes to the register(s) are only recorded at this level and beyond. For example, the following command would store the logs in log.txt under the current directory with log level 10:

nvim -V10log.txt [...]

But locating the exact spot in the log file where the error occurred is much trickier lol my approach for getting an approximation is by:

  1. Clearing the log file just before u r about to do something buggy. On BSD-flavored systems, u could do:
truncate -c -s 0 [log-file]
  1. Try to determine the approximate location by searching for the plugin's name, the provider's name, or the name of the component that handles this type of operation. For instance, I located the exact position of this issue in the log by searching for clipboard.vim, as this is where clipboard handling is processed.
  2. Now search for the name of the VimL function call that is most likely used to handle this issue (since those vim.fn.* calls are essentially logged as VimL statements). u can look it up in the manual by searching for something like register in :h functions-list.
  3. If that doesn't help either, then read through the logs! u'll definitely find something useful, as it usually doesn't span a very large space. For sourced Lua files, search for them on Google if necessary to check exactly which line of Lua code is being executed.

Now that u probably have some information about the issue, go ahead and use a minimal config to test it! Hope this helps lol

@CharlesChiuGit
Copy link
Collaborator

i think there might be something wrong with my terminal/shell/ssh setting.
When i use some ssh manager tools like termius, none of above "auto-pasting" issue happened.( and somehow it even feels snappier comparing to bare ssh on windows!)
i'll try to lacate what could cause the issue on my windows machine, since the log file looks perfectly normal when applying your suggestions.
tks for your help! @Jint-lzxy , at least i can narrow the issue to my windows env lol 🤣

@CharlesChiuGit
Copy link
Collaborator

CharlesChiuGit commented Jul 6, 2024

well... i sorta avoid above issue... sorta... lol
i found out that the "auto-pasting" happened while ssh to remote machine via "pwsh/windows powershell/cmd", but no on "git-bash".
so i basically just switch to "git-bash" as my default shell on wezterm and other terminals on windows. looool


while solving this issue, i also found out an interesting thing, which is to use zsh nativly on windows w/o installing any extra things! well, if u install git first lol
here's the link on how to setup zsh on windows.
圖片

@Jint-lzxy
Copy link
Collaborator

When i use some ssh manager tools like termius, none of above "auto-pasting" issue happened.( and somehow it even feels snappier comparing to bare ssh on windows!)

Nah I really think this is related to how escape sequences are handled on Windows lol As long as the same set of APIs is used, the result should be the same regardless of the terminal. Check out this KB Article.

i'll try to lacate what could cause the issue on my windows machine, since the log file looks perfectly normal when applying your suggestions.

... and be sure to report back here if u find something worth sharing!

i found out that the "auto-pasting" happened while ssh to remote machine via "pwsh/windows powershell/cmd", but not on "git-bash".

Hmm was it bc of some environment thingy? This really sounds like a mismatch between the TERM environment variable and the database lol

btw, u could also check out this SO answer that gives a concise overview of the shells on Windows. Along those lines, I also think installing a UNIX layer (at least a POSIX-compliant one) on Windows is extremely important as it really makes development a lot easier lmao

while solving this issue, i also found out an interesting thing, which is to use zsh nativly on windows w/o install any extra things! well, if u install git first lol

lol this sounds so coooooool!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working has:repro This issue contains reproducing steps ui General user interface related issues upstream Upstream (neovim/plugin) issues
Projects
None yet
Development

No branches or pull requests

4 participants