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

Code action keybinding isn't available in visual mode #1060

Closed
bayramkzk opened this issue Jul 28, 2024 · 3 comments
Closed

Code action keybinding isn't available in visual mode #1060

bayramkzk opened this issue Jul 28, 2024 · 3 comments

Comments

@bayramkzk
Copy link
Contributor

bayramkzk commented Jul 28, 2024

Describe the bug

Code action keybinding vim.lsp.buf.code_action is not available in visual mode. This prevents using refactoring functionality such as "extract selected code into function". Is this intentional? If it is not, I can quickly send a PR. I searched for this on the issues and pull requests but couldn't find anything matching.

To Reproduce

  1. Select any code block in visual mode in a buffer with an LSP client running
  2. Use default keybinding <leader>ca for code action
  3. Selected code is deleted and mode is set to insert mode

Desktop

  • OS: Linux
  • Terminal: Alacritty

Neovim Version

NVIM v0.10.0
Build type: RelWithDebInfo
LuaJIT 2.1.1713773202
Run "nvim -V1 -v" for more info
@iton0
Copy link
Contributor

iton0 commented Jul 29, 2024

Yeah make a PR for this

@VlaDexa
Copy link
Contributor

VlaDexa commented Jul 29, 2024

3. Selected code is deleted and mode is set to insert mode

That's the default behavior of c keybind.

Refactoring actions are a bit broken in nvim as of my test, they don't remove the selection and don't offer an automatic way to change function name when you extract into a function. If you seek a bit more proper support I recommend looking into refactoring.nvim.

@bayramkzk
Copy link
Contributor Author

That's the default behavior of c keybind.

Yeah I am aware of this as it is one of the essential keybindings of Vim/Neovim. I just wanted to write the steps in detail.

Refactoring actions are a bit broken in nvim as of my test, they don't remove the selection and don't offer an automatic way to change function name when you extract into a function. If you seek a bit more proper support I recommend looking into refactoring.nvim.

I already tried that but my experience was actually simply better without refactoring.nvim. After realizing default kickstart.nvim config doesn't allow running code actions in visual mode, I tried setting up refactoring.nvim on a freshly cloned, up-to-date kickstart.nvim config. However, I encountered buggy behavior and straight up crashes during selection of refactors and afterwards, making it overall unstable for me. Instead of spending time on investigating the crashes caused by this extra plugin, I just simply removed it and updated kickstart.nvim's default code action keybinding to work in visual mode. This simply worked flawlessly, providing the typical refactoring experience VSCode offered, at least for the Go project I tested it on, without installing yet another plugin. Also, I haven't experienced the issue you mentioned about selection removal and I don't mind renaming the newly created extracted function.

bayramkzk added a commit to bayramkzk/kickstart.nvim that referenced this issue Jul 30, 2024
bayramkzk added a commit to bayramkzk/kickstart.nvim that referenced this issue Aug 24, 2024
bayramkzk added a commit to bayramkzk/kickstart.nvim that referenced this issue Aug 24, 2024
bayramkzk added a commit to bayramkzk/kickstart.nvim that referenced this issue Aug 24, 2024
bayramkzk added a commit to bayramkzk/kickstart.nvim that referenced this issue Aug 24, 2024
RunBackToYou added a commit to RunBackToYou/kickstart.nvim that referenced this issue Aug 25, 2024
Include visual mode in LSP code action keymap (nvim-lua#1060) (nvim-lua#1064)
benyamins pushed a commit to benyamins/kickstart.nvim that referenced this issue Aug 25, 2024
PMarinov1994 pushed a commit to PMarinov1994/kickstart.nvim that referenced this issue Aug 30, 2024
mckim1 pushed a commit to mckim1/kickstart.nvim that referenced this issue Aug 31, 2024
haroun added a commit to haroun/kickstart.nvim that referenced this issue Sep 2, 2024
* upstream/master: (55 commits)
  Fix the which-key spec issue caused by recent cleanup (nvim-lua#1113)
  cleanup: refactor which-key configuration for cleaner setup (nvim-lua#1102)
  fix: remove deprecated opt for conform.nvim (nvim-lua#1070)
  Fix: updated the windows installation commands (nvim-lua#1101)
  Enable silent option for default neo-tree plugin keybinding (nvim-lua#1108)
  Include visual mode in LSP code action keymap (nvim-lua#1060) (nvim-lua#1064)
  refactor: update treesitter and which-key config (nvim-lua#1068)
  Check for loop or uv for lazypath (nvim-lua#1095)
  Add note in README about lazy-lock.json (nvim-lua#1090)
  Update README.md (nvim-lua#1091)
  Add explicit dependency of nvim-lspconfig on cmp-nvim-lsp (nvim-lua#1042)
  Remove treesitter prefer_git option (nvim-lua#1061)
  performance: defer clipboard because xsel and pbcopy can be slow (nvim-lua#1049)
  refactor: remove lazydev and luvit-meta as lsp dependencies (nvim-lua#1047)
  Modify conform comments to prevent deprecation warning when used (nvim-lua#1057)
  Remove redundant hlsearch option (nvim-lua#1058)
  Update comment about the toggle inlay hints keymap (nvim-lua#1041)
  lint: fix lsp warning in `vim.lsp.inlay_hint.is_enabled` (nvim-lua#947)
  Update lazydev config to fix "Undefined field `fs_stat`" LSP error (nvim-lua#1040)
  Neovim 0.10 updates (nvim-lua#936)
  ...
m-murphy pushed a commit to m-murphy/kickstart.nvim that referenced this issue Sep 4, 2024
dsonghl pushed a commit to dsonghl/nvim-modular.nvim that referenced this issue Sep 5, 2024
marijnMeerveld pushed a commit to marijnMeerveld/kickstart.nvim that referenced this issue Sep 5, 2024
yulqen pushed a commit to yulqen/kickstart.nvim that referenced this issue Sep 9, 2024
abouthugo added a commit to abouthugo/kickstart.nvim that referenced this issue Sep 9, 2024
* Add nvim-nio as dependency for nvim-dap-ui (nvim-lua#774)

It's a dependency now

* Update README.md (nvim-lua#781)

The recommended step of forking the repo coming sequentially after the step instructing users to clone the current repo doesn't make sense.

This commit orders the install instructions in a manner that's more logical.

* README: wrap long lines (nvim-lua#784)

* fix nvim-lua#799 (nvim-lua#800)

Add `'luadoc'`, to the `ensure_installed` of `nvim-treesitter/nvim-treesitter`

* Add instructions to quit :lazy. Fixes nvim-lua#761

* Add a keymap space-f to format buffer using conform (nvim-lua#817)

This works also for visual range selection
Copied from conform recipe:
https://github.com/stevearc/conform.nvim/blob/master/doc/recipes.md

* Don't lazy load conform plugin (nvim-lua#818)

* README: move backup and paths from external deps to install section (nvim-lua#819)

* Add a pull request template (nvim-lua#825)

* Update README (nvim-lua#832)

* Arch, btw (nvim-lua#852)

* Arch, btw

* Add unzip

* Add unzip for Fedora and --needed arg for Arch

* Comment about nerd font selection. Fixes nvim-lua#853 (nvim-lua#854)

* Fix: nvim-lua#847 - add prefer_git to treesitter config (nvim-lua#856)

* Enable inlay hints for the supporting servers (nvim-lua#843)

* Move plugin examples from README to optional plugin files (nvim-lua#831)

* Move autopairs example from README to an optional plugin

* Move neo-tree example from README to an optional plugin

* Add gitsigns recommended keymaps as an optional plugin (nvim-lua#858)

* fix: restore Mason config timing for DAP startup (again) (nvim-lua#865)

* Update README.md (nvim-lua#860)

Attempted fix for nvim-lua#859, provide reasonable Debian install instructions -- comment on GitHub issue with refinement.

* Minor improvements of debian install instructions. Fixes nvim-lua#859 (nvim-lua#869)

* Add a commented out example of the classic complete keymaps. Fixes nvim-lua#866 (nvim-lua#868)

* Fix deprecation notice of inlay hints (nvim-lua#873)

* Fix highlight errors when lsp crash or stop (nvim-lua#864)

* Fix highlight errors when lsp crash or stop

It adds a check wether the client is still available before
highlighting.

If the client is not there anymore it returns `true` to unregister the
autocommand

This fix the
`method textDocument/documentHighlight is not supported by any of the servers registered for the current buffer`
errors when doing a LspRestart or the server crashes

* Delete the highlight autocommands in the LspDetatch event

* Only delete autocmds for the current buffer with the group name

* Simplify clearing the autocommands

---------

Co-authored-by: Francis Belanger <francis.belanger@ubisoft.com>

* fix: highlight group clear on each attach (nvim-lua#874)

* Update README.md (nvim-lua#875)

Line 102. Placed 'also' before the 'includes'.

"That includes also examples of adding popularly requested plugins." ---> "That also includes examples of adding popularly requested plugins."

* README: add clipboard tool dependency (nvim-lua#886)

Fixes: nvim-lua#884
Neovim requires an external tool for proper system clipboard integration.
Some systems install this already by default:
- on Fedora xsel is already installed by default
- on Windows using the choko install the win32yank is alredy installed
This is not installed by default on ubuntu or debian so adding that
to the dependencies list and to the install instructions snippets.

* Move LspDetach handler near kickstart-lsp-highlight group (nvim-lua#900)

Moved to make sure the kickstart-lsp-highlight group exists when
the LspDetach handler is invoked. The LspDetach handler is used
to clean up any lsp highlights that were enabled by CursorHold
if the LSP is stopped or crashed.

* Add diff to treesitter's ensure_installed languages (nvim-lua#908)

* fix: debug.lua (nvim-lua#918)

* Automatically set detached state as needed. (nvim-lua#925)

* Automatically set detached state as needed.

* Use vim.fn.has instead.

* Fix int vs bool.

* which-key v3 update (nvim-lua#1022)

* which-key v3 update

* remove unneeded brackets from which-key registration

* fix(lazy): added error handling for bootstrap (nvim-lua#1001)

* fix: add required parsers from nvim-treesitter

* Fix neo-tree keymap description (nvim-lua#932)

The lazy.nvim keys parameter does not need the `desc` to
be inside a table in the way that vim.keymap.set() does.
With this fix the keymap description will be properly
shown for example in telescope keymap search

* Remove redundant require (nvim-lua#959)

* Make debug lazy loadable (nvim-lua#978)

* Update README.md | %userprofile%\appdata\local -> %localappdata% (nvim-lua#963)

- Replace `%userprofile%\AppData\Local\nvim\` and `$env:USERPROFILE\AppData\Local\nvim` to `%localappdata%\nvim` and `$env:LOCALAPPDATA\nvim respectfully`

* Make conform.nvim be lazy-loadable again (nvim-lua#977)

The PR that disabled lazy loading (nvim-lua#818) was to fix plugin not being
loaded before write. This sets up lazy to load conform before write.

* Fix comment about mini.ai example (nvim-lua#985)

This example wasn't using `'` so this makes more sense

* Neovim 0.10 updates (nvim-lua#936)

* Neovim 0.10 updates

Provide the buffer for which to enable inlay hints

Co-authored-by: Matt Mirus <matt@mattmirus.com>

* refactor: replace vim.loop with vim.uv

* Upgrade folke/neodev (sunsetting) to folke/lazydev

* Update checkhealth for 0.10 release

---------

Co-authored-by: Matt Mirus <matt@mattmirus.com>
Co-authored-by: mrr11k <me+github@mrr11k.dev>
Co-authored-by: Seb Tomasini <sebt@qgates.com>

* Update lazydev config to fix "Undefined field `fs_stat`" LSP error (nvim-lua#1040)

7513ec8 switched from neodev to
lazydev, but in the process it introduced an LSP error in `init.lua`,
which degrades the desired "first timer" experience of kickstart.nvim.

This commit follows the configuration suggested in
https://github.com/folke/lazydev.nvim/tree/6184ebbbc8045d70077659b7d30c705a588dc62f#-installation
which resolves the LSP error.

* lint: fix lsp warning in `vim.lsp.inlay_hint.is_enabled` (nvim-lua#947)

* fix: lsp warning

* review suggestion

Co-authored-by: Tom Kuson <mail@tjkuson.me>

---------

Co-authored-by: Tom Kuson <mail@tjkuson.me>

* Update comment about the toggle inlay hints keymap (nvim-lua#1041)

* Remove redundant hlsearch option (nvim-lua#1058)

* Modify conform comments to prevent deprecation warning when used (nvim-lua#1057)

* refactor: remove lazydev and luvit-meta as lsp dependencies (nvim-lua#1047)

* performance: defer clipboard because xsel and pbcopy can be slow (nvim-lua#1049)

* Remove treesitter prefer_git option (nvim-lua#1061)

- It's not safe and can corrupt other git repos
- nvim-treesiter maintainers consider `prefer_git` as deprecated and no
  longer needed.

See nvim-treesitter PR for details: nvim-treesitter/nvim-treesitter#6959

* Add explicit dependency of nvim-lspconfig on cmp-nvim-lsp (nvim-lua#1042)

* Update README.md (nvim-lua#1091)

* Add note in README about lazy-lock.json (nvim-lua#1090)

* Check for loop or uv for lazypath (nvim-lua#1095)

* refactor: update treesitter and which-key config (nvim-lua#1068)

* Include visual mode in LSP code action keymap (nvim-lua#1060) (nvim-lua#1064)

* Enable silent option for default neo-tree plugin keybinding (nvim-lua#1108)

* Fix: updated the windows installation commands (nvim-lua#1101)

* Update README.md

* Update README.md

* Fix: updated the windows installation commands

* fix: remove deprecated opt for conform.nvim (nvim-lua#1070)

- changed lsp_fallback -> lsp_format
- updated format_on_save function to reflect change above

* cleanup: refactor which-key configuration for cleaner setup (nvim-lua#1102)

- Moved `which-key` configuration from inline `config` to `opts` for better organization.
- Updated the key mappings setup to use `spec` for defining existing key chains.
- Removed deprecated or unnecessary comments and code.

This change aligns with updated `which-key` configuration practices, improving readability and maintainability as recommended by @VlaDexa in nvim-lua#1068.

* Fix the which-key spec issue caused by recent cleanup (nvim-lua#1113)

The recent cleanup accidentally broke the leader key specs
because the spec block was in the wrong level of braces.
That resulted in which-key no longer showing the description
of the <leader> key chains such as [S]earch and others.

---------

Co-authored-by: José Miguel Sarasola <alosarjos@gmail.com>
Co-authored-by: E <2061889+bozoputer@users.noreply.github.com>
Co-authored-by: Damjan 9000 <damjan.9000@gmail.com>
Co-authored-by: Liu Qisheng <81770798+Saplyn@users.noreply.github.com>
Co-authored-by: Chris Patti <feoh@feoh.org>
Co-authored-by: Viet <51826956+hoangvietdo@users.noreply.github.com>
Co-authored-by: rdvm <git@rvm.dev>
Co-authored-by: Vladislav Grechannik <52157081+VlaDexa@users.noreply.github.com>
Co-authored-by: GameFuzzy <mail@gamefuzzy.dev>
Co-authored-by: Evan Carroll <me@evancarroll.com>
Co-authored-by: Francis Belanger <francis.belanger@gmail.com>
Co-authored-by: Francis Belanger <francis.belanger@ubisoft.com>
Co-authored-by: Adolfo Gante <adolfogante@gmail.com>
Co-authored-by: Richard Macklin <1863540+rmacklin@users.noreply.github.com>
Co-authored-by: Smig <89040888+smiggiddy@users.noreply.github.com>
Co-authored-by: Per Malmberg <PerMalmberg@users.noreply.github.com>
Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
Co-authored-by: TJ DeVries <devries.timothyj@gmail.com>
Co-authored-by: Tom Kuson <mail@tjkuson.me>
Co-authored-by: Artyom <84637383+MZhuvka@users.noreply.github.com>
Co-authored-by: Matt Mirus <matt@mattmirus.com>
Co-authored-by: mrr11k <me+github@mrr11k.dev>
Co-authored-by: Seb Tomasini <sebt@qgates.com>
Co-authored-by: srdtrk <59252793+srdtrk@users.noreply.github.com>
Co-authored-by: Arvin Verain <arvinverain@proton.me>
Co-authored-by: Brandon Clark <bwclark97@gmail.com>
Co-authored-by: Ihsan Tonuzi <115842560+iton0@users.noreply.github.com>
Co-authored-by: abeldekat <58370433+abeldekat@users.noreply.github.com>
Co-authored-by: jstrot <44594069+jstrot@users.noreply.github.com>
Co-authored-by: theoboldalex <44616505+theoboldalex@users.noreply.github.com>
Co-authored-by: Matt Gallagher <46973220+mattgallagher92@users.noreply.github.com>
Co-authored-by: Michael L. <m@lehenauer.com>
Co-authored-by: Bayram Kazik <48856944+bayramkzk@users.noreply.github.com>
Co-authored-by: Harshit Pant <97608579+pantharshit007@users.noreply.github.com>
codemedic added a commit to codemedic/kickstart.nvim that referenced this issue Sep 11, 2024
* master:
  feat: update references of tsserver to ts_ls (nvim-lua#1131)
  Fix the which-key spec issue caused by recent cleanup (nvim-lua#1113)
  cleanup: refactor which-key configuration for cleaner setup (nvim-lua#1102)
  fix: remove deprecated opt for conform.nvim (nvim-lua#1070)
  Fix: updated the windows installation commands (nvim-lua#1101)
  Enable silent option for default neo-tree plugin keybinding (nvim-lua#1108)
  Include visual mode in LSP code action keymap (nvim-lua#1060) (nvim-lua#1064)
  refactor: update treesitter and which-key config (nvim-lua#1068)
  Check for loop or uv for lazypath (nvim-lua#1095)
  Add note in README about lazy-lock.json (nvim-lua#1090)
  Update README.md (nvim-lua#1091)
khsoh pushed a commit to khsoh/kickstart.nvim that referenced this issue Sep 12, 2024
angerborn pushed a commit to angerborn/kickstart.nvim that referenced this issue Sep 12, 2024
kpollich pushed a commit to kpollich/kickstart.nvim that referenced this issue Sep 13, 2024
eng-alecrim pushed a commit to eng-alecrim/kickstart.nvim that referenced this issue Sep 16, 2024
alextilot pushed a commit to alextilot/kickstart.nvim that referenced this issue Sep 17, 2024
BaconIsAVeg pushed a commit to BaconIsAVeg/kickstart-modular.nvim that referenced this issue Sep 17, 2024
* upstream/master:
  feat: update references of tsserver to ts_ls (nvim-lua#1131)
  Fix the which-key spec issue caused by recent cleanup (nvim-lua#1113)
  cleanup: refactor which-key configuration for cleaner setup (nvim-lua#1102)
  fix: remove deprecated opt for conform.nvim (nvim-lua#1070)
  Fix: updated the windows installation commands (nvim-lua#1101)
  Enable silent option for default neo-tree plugin keybinding (nvim-lua#1108)
  Include visual mode in LSP code action keymap (nvim-lua#1060) (nvim-lua#1064)
  refactor: update treesitter and which-key config (nvim-lua#1068)
  Check for loop or uv for lazypath (nvim-lua#1095)
  Add note in README about lazy-lock.json (nvim-lua#1090)
  Update README.md (nvim-lua#1091)
mynever pushed a commit to mynever/kickstart.nvim that referenced this issue Sep 20, 2024
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