abdellatif-temsamani/adev.nvim

github github
preconfigured-configuration
stars 2
issues 2
subscribers 0
forks 0
CREATED

UPDATED


Personal Statement

I stand in solidarity with the Palestinian people and support their fundamental human rights. I oppose ongoing violence, occupation, and human rights violations, and I call for justice, dignity, and freedom for all.

Adev.nvim 🚀

The over-engineered Neovim distribution for developers who want everything

Version

Adev.nvim is a feature-rich Neovim configuration that provides a complete development environment out of the box. Built with modern Neovim features and carefully selected plugins, it offers blazing-fast performance while maintaining extensive functionality.

✨ Features

  • Modern Plugin Management: lazy.nvim with lazy loading for optimal performance
  • AI Integration: Configurable AI assistant (AugmentCode, Supermaven, etc.)
  • Language Support: LSP servers for multiple languages (Python, Rust, Go, JavaScript, etc.)
  • Completion Engine: Blink.cmp with multiple sources and custom configurations
  • Git Integration: Git signs, lazygit integration, and GitHub CLI support
  • UI Enhancements: Catppuccin themes, custom borders, notifications, and onboarding
  • Code Quality: Formatting with none-ls, linting, and code generation with Neogen
  • File Management: Telescope for fuzzy finding, snacks for file exploration
  • Development Tools: Laravel support, Rust crates, Java JDTLS, and more
  • Feature Flags: Experimental features can be enabled/disabled via flags
    • experimental_adev_files: Enable new adev-files file management system

🚀 Quick Start

Prerequisites

Required

  • Neovim >= 0.11.0 (verified by health checks)
  • Git (for plugin management and updates)
  • make (build automation tool)
  • unzip (archive extraction utility)

Essential Tools

  • ripgrep (for telescope live grep and file searching)
  • Nerd Font (for icons and UI elements)

Optional but Recommended

  • fd (faster file finding alternative to find)
  • lazygit (terminal UI for git operations)
  • gh (GitHub CLI for GitHub integration)
  • bat (better cat with syntax highlighting)

Language-Specific Tools (optional)

  • Node.js & npm (for JavaScript/TypeScript LSP servers)
  • Python (for Python LSP servers and tools)
  • Rust & Cargo (for rust-analyzer and Rust-based tools)
  • Go (for gopls and Go development tools)

Installation

  1. Backup your existing config (if any):

    mv ~/.config/nvim ~/.config/nvim.backup
    
  2. Clone Adev.nvim:

    git clone https://github.com/abdellatif-temsamani/adev.nvim ~/.config/nvim
    
  3. Start Neovim (auto-configuration for new users):

    nvim
    

    For new users: Adev.nvim will automatically detect that you're new and generate the necessary configuration files (init.lua and lua/adev/init-opts.lua) with default settings. It will then restart Neovim to apply the configuration.

    For advanced users: If you want to customize before first run, you can manually create the config:

    nvim ~/.config/nvim/lua/adev/init.lua
    

    Then write your custom setup:

    require("adev").setup {
        -- Your custom options here
        -- See :help adev-setup for full options
    }
    

Configuration

Adev.nvim is highly configurable. For new users, configuration files are auto-generated with defaults. You can customize by editing the generated init-opts.lua file or by passing options to the setup function:

Auto-generated Config (New Users)

After first run, edit ~/.config/nvim/lua/adev/init-opts.lua to customize settings:

-- Auto-generated by adev configuration
return {
     git = "git",
     mapleader = " ",
     auto_update_check = true,
     colorscheme = "catppuccin",
     catppuccin = {
         enable = true,
         flavour = "mocha",
         transparent = false,
     },
     ui = {
         border = "single",
     },
     lazy = {
         lazy_loading = true,
         auto_update_check = true,
         plugin_version = nil,
     },
     lsp = {
         enable = true,
         servers = nil,
     },
     ai_assistant = {
         enabled = false,
         plugin = "augmentcode/augment.vim",
         command = "Augment",
         opts = nil,
     },
     -- Modify any options here
}

Manual Setup (Advanced Users)

For custom configurations before first run:

require("adev").setup {
     -- Git executable path (default: "git")
     git = "git",

     -- Leader key (default: " ")
     mapleader = " ",

     -- Auto update check (default: true)
     auto_update_check = true,

     -- Colorscheme (default: "catppuccin")
     colorscheme = "catppuccin",

     -- Catppuccin theme settings
     catppuccin = {
         enable = true,
         flavour = "mocha",
         transparent = false,
     },

     -- UI options
     ui = {
         border = "single",
     },

     -- Lazy.nvim settings
     lazy = {
         lazy_loading = true,
         auto_update_check = true,
         plugin_version = nil,
     },

     -- LSP configuration
     lsp = {
         enable = true,
         servers = nil, -- nil uses all available servers
     },

     -- AI assistant (default: false)
     ai_assistant = {
         enabled = false,
         plugin = "augmentcode/augment.vim",
         command = "Augment",
         opts = nil,
     },

     -- And many more options...
}

For a complete list of configuration options, see :help adev-setup or check the defaults.lua file.

🚩 Feature Flags

Adev includes an experimental feature flags system to enable/disable features:

  • experimental_adev_files: Enable the new adev-files file management system

To enable experimental features, run :ADConfig to edit your init-opts.lua and add:

return {
    flags = {
        experimental_adev_files = true,
    },
}

For detailed documentation on all setup options and advanced configuration, see :help adev.

🛠️ Commands

Adev.nvim provides several custom commands to enhance your workflow:

  • :ADUpdate - Update Adev configuration via git pull
  • :ADConfig - Edit Adev configuration file
  • :ADUpdateCheck - Check for available updates without updating
  • :ADChangelog - View the changelog for current or specified version
  • :ADVersions - List available versions from git tags
  • :Lazy profile - Analyze plugin loading times
  • :Lazy sync - Update all plugins
  • :Mason - Manage LSP servers and tools
  • :Telescope - Fuzzy find files, buffers, and more

📁 Project Structure

~/.config/nvim/
├── CHANGELOG.md              -- Change history
├── cliff.toml                -- Git-cliff configuration
├── CODE_OF_CONDUCT.md        -- Code of conduct
├── CONTRIBUTING.md           -- Contributing guidelines
├── LICENSE                   -- License file
├── README.md                 -- Project README
├── TODO.md                   -- TODO list
├── init.lua                  -- Auto-generated entry point
├── lazy-lock.json            -- Plugin lockfile
├── doc/                      -- Documentation
│   ├── adev.txt              -- This documentation
│   └── tags                  -- Help tags
├── images/                   -- Images and assets
│   └── startuptime.png       -- Performance benchmark
├── lua/adev/                 -- Main configuration modules
│   ├── init.lua              -- Main module
│   ├── init-opts.lua         -- Auto-generated configuration options (included in .gitignore)
│   ├── commands.lua          -- Custom commands
│   ├── changelog.lua         -- Changelog command
│   ├── defaults.lua          -- Default configuration
│   ├── lazy.lua              -- Plugin manager setup
│   ├── lsp.lua               -- LSP configuration
│   ├── onboarding/           -- Auto configuration generation
│   │   └── init.lua          -- Onboarding system
│   ├── update_manager/       -- Update management
│   │   ├── check_update.lua  -- Update checking
│   │   ├── init.lua          -- Update manager
│   │   └── update.lua        -- Update functionality
│   ├── utils/                -- Utility functions
│   │   ├── init.lua          -- Utility functions
│   │   └── events.lua        -- Event definitions
│   ├── config/               -- Configuration files
│   │   ├── lspconfig.lua     -- LSP client configs
│   │   ├── mini.lua          -- Mini.nvim configuration
│   │   └── none-ls/          -- None-ls configurations
│   │       ├── init.lua      -- Main none-ls setup
│   │       ├── deno_fmt.lua  -- Deno formatter
│   │       └── dgformat.lua  -- DG formatter
│   ├── custom-plugins/       -- User custom plugins directory
│   │   └── example.lua       -- Example custom plugin
│   ├── types/                -- Type definitions
│   │   ├── adev.lua          -- Adev type annotations
│   │   ├── flags.lua         -- Feature flags definitions
│   │   └── init.lua          -- Type system initialization
│   ├── ui/                   -- UI configuration
│   │   └── init.lua          -- UI setup and theming
│   └── plugins/              -- Plugin specifications (24 files)
│       ├── ai.lua            -- AI assistant integration
│       ├── blink.lua         -- Completion engine
│       ├── cloak.lua         -- Environment variable concealing
│       ├── color-highlight.lua -- Color highlighting
│       ├── comment.lua       -- Smart commenting
│       ├── crates.lua        -- Rust crate management
│       ├── git-signs.lua     -- Git integration
│       ├── jdtls.lua         -- Java development tools
│       ├── laravel.lua       -- Laravel development tools
│       ├── lazydev.lua       -- Lua development enhancements
│       ├── lspconfig.lua     -- LSP configurations
│       ├── lualine.lua       -- Statusline
│       ├── luasnip.lua       -- Snippet engine
│       ├── mason.lua         -- LSP/tool installer
│       ├── mini.lua          -- Various mini plugins
│       ├── neogen.lua        -- Code generation
│       ├── noice.lua         -- Enhanced UI
│       ├── none-ls.lua       -- Formatting and linting
│       ├── octo.lua          -- GitHub integration
│       ├── snacks.lua        -- Modern UI components
│       ├── telescope.lua     -- Fuzzy finder
│       ├── theme.lua         -- Catppuccin theme
│       ├── todo-comments.lua -- TODO highlighting
│       └── treesitter.lua    -- Syntax highlighting
├── plugin/                   -- Core Neovim settings
│   ├── autocmd.lua           -- Autocommands (53 lines)
│   ├── keymaps.lua           -- Key mappings (151 lines)
│   └── options.lua           -- Vim options (65 lines)
└── queries/                  -- Custom queries
    └── lua/                  -- Lua-specific queries
        └── highlights.scm    -- Lua syntax highlighting

📊 Performance

Startup Time

Startup time measured on a typical development machine.

🤝 Contributing

While pull requests are rarely accepted to maintain consistency, contributions are welcome in other forms:

  • Bug Reports: Open issues for bugs you encounter
  • Feature Requests: Suggest new features or improvements
  • Documentation: Help improve documentation and guides
  • Fork and Customize: Create your own version with modifications

See CONTRIBUTING.md for detailed guidelines.

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

Happy coding with Adev.nvim! 🚀

"The over-engineered Neovim distribution for developers who want everything"