• Stars
    star
    265
  • Rank 153,857 (Top 4 %)
  • Language
    Lua
  • License
    Apache License 2.0
  • Created over 1 year ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Neovim plugin that adds support for file operations using built-in LSP

nvim-lsp-file-operations

nvim-lsp-file-operations is a Neovim plugin that adds support for file operations using built-in LSP support. This plugin works by subscribing to events emitted by nvim-tree and neo-tree. But other integrations are possible.

Features

WillRename requests supported in couple lsp-servers and allows to automagically apply some refactorings while you moving files around. Currently tested with metals, rust-analyzer and typescript-language-server

scala.refactoring.example.mp4

If you have usecases for any other operations please open an issue.

Installation

Using packer.nvim

For Nvim-tree Users

use {
  'antosha417/nvim-lsp-file-operations',
  requires = {
    "nvim-lua/plenary.nvim",
    "nvim-tree/nvim-tree.lua",
  }
}

For Neo-tree Users

use {
  'antosha417/nvim-lsp-file-operations',
  requires = {
    "nvim-lua/plenary.nvim",
    "nvim-neo-tree/neo-tree.nvim",
  }
}

Using lazy.nvim

Note that the config function will let you skip the setup step.

For Nvim-tree Users

return {
  {
    "antosha417/nvim-lsp-file-operations",
    dependencies = {
      "nvim-lua/plenary.nvim",
      "nvim-tree/nvim-tree.lua",
    },
    config = function()
      require("lsp-file-operations").setup()
    end,
  },
}

For Neo-tree Users

return {
  {
    "antosha417/nvim-lsp-file-operations",
    dependencies = {
      "nvim-lua/plenary.nvim",
      "nvim-neo-tree/neo-tree.nvim",
    },
    config = function()
      require("lsp-file-operations").setup()
    end,
  },
}

Please note that the order that the plugins load in is important, neo-tree must load before nvim-lsp-file-operations for it to work, so nvim-lsp-file-operations depends on neo-tree and not the other way around.

Setup

require("lsp-file-operations").setup()

This is equivalent to:

require("lsp-file-operations").setup {
  -- used to see debug logs in file `vim.fn.stdpath("cache") .. lsp-file-operations.log`
  debug = false,
  -- how long to wait (in milliseconds) for file rename information before cancelling
  timeout_ms = 10000,
}

Contributing

PRs are always welcome.