jackMort / ChatGPT.nvim

ChatGPT Neovim Plugin: Effortless Natural Language Generation with OpenAI's ChatGPT API
Apache License 2.0
3.56k stars 307 forks source link

Escape % to avoid "invalid capture index problem" when % in the input #410

Open ilan-schemoul opened 3 months ago

ilan-schemoul commented 3 months ago

Hey, If you select a line with a "%" for example " while (fscanf(src, "%30s ", str) == 1) " And try to run a ChatGPTRun command such as code_readbility_analysis you will have an error invalid capture index lua/chatgpt/flows/actions/chat/init.lua:52 The reason it happens is that when there is a % it is interpreted as a capture index by gsub but of course it is not intended. We need to escape those. The resulting code is value = value:gsub("%%", "%%%%") because inside a string the % themselve need to be escaped too. It it tested and fix the problem on my side.

PS : I had to close previous PR because I made commit from other PRs mistakenly

ilan-schemoul commented 3 months ago

@jackMort any feedback ? I also havee two other pendings PR so feel free to review those when you can too

devshoe commented 3 months ago

I am facing this issue as well, in Go it deletes % from formatted strings and gives me completely nonsense answers. Do you have a workaround?

devshoe commented 3 months ago

I just pulled your branch and used it and it's fixed :) Thanks so much, I hope this PR gets merged soon.