#cargo-command #neovim #nvim #execute #plugin

cargo-nvim

A Neovim plugin for Rust Cargo commands

1 unstable release

new 0.1.0 Jan 18, 2025

#301 in Cargo plugins

Download history 61/week @ 2025-01-13

61 downloads per month

MIT license

1.5MB
790 lines

๐Ÿš€ cargo.nvim

Rust CI Lua CI


๐Ÿ“ฆ A Neovim plugin that provides seamless integration with Rust's Cargo commands. Execute Cargo commands directly from Neovim with a floating window interface.

โœจ Features

  • ๐Ÿ”ง Execute Cargo commands directly from Neovim
  • ๐ŸชŸ Real-time output in floating windows
  • ๐ŸŽจ Syntax highlighting for Cargo output
  • โšก Asynchronous command execution
  • ๐Ÿ”„ Auto-closing windows on command completion
  • โŒจ๏ธ Easy keyboard shortcuts for window management

contents

๐Ÿ“ฅ Installation

Using lazy.nvim

{
  "nwiizo/cargo.nvim",
  build = "cargo build --release",
  config = function()
    require("cargo").setup({
      float_window = true,
      window_width = 0.8,
      window_height = 0.8,
      border = "rounded",
      auto_close = true,
      close_timeout = 5000,
    })
  end,
  ft = { "rust" },
  cmd = {
    "CargoBench",
    "CargoBuild", 
    "CargoClean",
    "CargoDoc",
    "CargoNew",
    "CargoRun",
    "CargoTest",
    "CargoUpdate"
  }
}

Using packer.nvim

use {
  "nwiizo/cargo.nvim",
  run = "cargo build --release",
  config = function()
    require("cargo").setup({
      float_window = true,
      window_width = 0.8,
      window_height = 0.8,
      border = "rounded",
      auto_close = true,
      close_timeout = 5000,
    })
  end,
}

๐Ÿ“‹ Requirements

  • ๐Ÿ’ป Neovim >= 0.9.0
  • ๐Ÿฆ€ Rust and Cargo installed on your system

๐Ÿ› ๏ธ Available Commands

  • ๐Ÿ“Š :CargoBench - Run benchmarks
  • ๐Ÿ—๏ธ :CargoBuild - Build the project
  • ๐Ÿงน :CargoClean - Remove generated artifacts
  • ๐Ÿ“š :CargoDoc - Generate project documentation
  • โœจ :CargoNew - Create a new Cargo project
  • โ–ถ๏ธ :CargoRun - Run the project
  • ๐Ÿงช :CargoTest - Run tests
  • ๐Ÿ”„ :CargoUpdate - Update dependencies

โš™๏ธ Configuration

You can customize cargo.nvim by passing options to the setup function:

require("cargo").setup({
  -- Window settings
  float_window = true,          -- Use floating window
  window_width = 0.8,           -- Window width (80% of editor width)
  window_height = 0.8,          -- Window height (80% of editor height)
  border = "rounded",           -- Border style ("none", "single", "double", "rounded")
  
  -- Auto-close settings
  auto_close = true,            -- Auto close window on success
  close_timeout = 5000,         -- Close window after 5000ms
  
  -- Command settings 
  commands = {
    bench = { nargs = "*" },    -- Command arguments configuration
    build = { nargs = "*" },
    clean = { nargs = "*" },
    doc = { nargs = "*" },
    new = { nargs = 1 },
    run = { nargs = "*" },
    test = { nargs = "*" },
    update = { nargs = "*" },
  }
})

โŒจ๏ธ Key Mappings

In the floating window:

  • q or <Esc> - Close the window
  • <C-c> - Cancel the running command and close the window

๐Ÿ‘ฅ Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. ๐Ÿด Fork the repository
  2. ๐ŸŒฟ Create a feature branch
  3. โœ๏ธ Commit your changes
  4. ๐Ÿš€ Push to the branch
  5. ๐Ÿ“ซ Open a Pull Request

๐Ÿ“œ License

MIT License - see the LICENSE file for details.

๐Ÿ’ Acknowledgements

This plugin is inspired by various Neovim plugins and the Rust community.

Dependencies

~8โ€“21MB
~290K SLoC