diff --git a/README.md b/README.md index cd1475b..11a3077 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,61 @@ A pre-configured, performance-oriented Neovim setup designed to get you from zero to coding in minutes. Built for local developers who want a powerful IDE experience without the manual overhead of a 500-line `init.lua`. +## Get Started + +### Prerequisites +To ensure all plugins (LSP, Tree-sitter, and Telescope) function correctly, please install the following: + +* **Neovim** (v0.10+ recommended) +* **Git** (For cloning the repo and managing plugins) +* **Tree-sitter-cli** (For syntax highlighting) +* **Ripgrep** (Required for Telescope live grep) +* **Yazi** (Required for file expolorer) +* **Node & NPM** (Required for various LSP servers like `html` and `eslint`) +* **Go** (Required for certain internal tools) + +For the best results, we recommend you install and use the Ghostty terminal with the following configuration: + +```Ini, TOML +theme = Adwaita Dark +font-size = 18 +background-opacity = 0.85 +background-blur-radius = 20 +``` + +### Installation + +#### 1. Prepare Configuration Directory +Depending on whether you have an existing setup, follow the appropriate step below: + +**For a Fresh Install:** +If you have never configured Neovim, create the configuration folder: +```bash +mkdir ~/.config/nvim +``` + +**For an Existing Setup:** +If you have configured Neovim already, create a backup folder: +```bash +mv ~/.config/nvim ~/.config/nvim.bak +mkdir ~/.config/nvim +``` + +#### 2. Clone the Repository +Clone the Mzansi Vim configuration into your config folder: + +```bash +cd ~/.config/nvim +git clone https://git.mzansi-innovation-hub.co.za/yaso_meth/mzansi_vim.git . +``` + +#### 3. Initialize +Simply launch Neovim: + +```bash +nvim +``` + ## Key Features * **LSP & Auto-completion:** Powered by `mason.nvim` and `nvim-cmp`, featuring out-of-the-box support for Python, Lua, Docker, SQL, and more. @@ -116,6 +171,12 @@ The **Leader Key** is set to `Space`. | **List Devices** | `:FDevices` | Show a list of available physical/virtual devices. | | **Toggle Logs** | `:FLogs` | Open or close the Flutter Dev Log split. | | **Clear Logs** | `:FLogsClear` | Clear the current Flutter Dev Log buffer. | +| **Clean Project** | `:FClean` | Execute flutter clean in split terminal. | +| **Pub Get** | `:FPubGet` | Fetches project dependencies. | +| **Start DevTools** | `:FDevToolsStart` | Start the local Flutter DevTools server | +| **Open DevTools** | `:FDevToolsOpen` | Open Flutter DevTools in your default browser. | +| **Build Runner** | `:FBuild` | Execute dart run build_runner build in split terminal. | +| **Watch Runner** | `:FWatch` | Execute dart run build_runner watch in split terminal. | ### Copilot Code Completion | Action | Keybinding | Description | @@ -161,60 +222,42 @@ The **Leader Key** is set to `Space`. | **Confirm Completion**| `Enter` | Accept the current suggestion in the popup menu. | | **Scroll Docs** | `Ctrl + f / b` | Scroll up/down in the LSP documentation window. | -## Get Started +### Lazygit Navigation & Commands -### Prerequisites -To ensure all plugins (LSP, Tree-sitter, and Telescope) function correctly, please install the following: +| Action | Keybinding | Description | +| :--- | :--- | :--- | +| **Switch Panels** | `H` / `L` or `←` / `→` | Move between the left side panels (Status, Files, Branches, Commits, Stash). | +| **Navigate List** | `J` / `K` or `↑` / `↓` | Move up and down within a panel's list. | +| **Quit** | `q` | Close lazygit. | +| **Help Menu** | `?` | Open the contextual keybindings help menu. | -* **Neovim** (v0.10+ recommended) -* **Git** (For cloning the repo and managing plugins) -* **Tree-sitter-cli** (For syntax highlighting) -* **Ripgrep** (Required for Telescope live grep) -* **Yazi** (Required for file expolorer) -* **Node & NPM** (Required for various LSP servers like `html` and `eslint`) -* **Go** (Required for certain internal tools) +### Lazygit Files Panel -For the best results, we recommend you install and use the Ghostty terminal with the following configuration: +| Action | Keybinding | Description | +| :--- | :--- | :--- | +| **Stage / Unstage File** | `Space` | Toggle staging for the highlighted file. | +| **Stage All** | `a` | Stage or unstage all changes in the working directory. | +| **Commit Changes** | `c` | Open the commit message prompt. | +| **Discard Changes** | `d` | Open options to discard local changes to the file. | +| **Ignore File** | `i` | Add the highlighted file to `.gitignore`. | +| **Stash Changes** | `s` | Stash current changes. | -```Ini, TOML -theme = Adwaita Dark -font-size = 18 -background-opacity = 0.85 -background-blur-radius = 20 -``` +### Lazygit Branches Panel -### Installation +| Action | Keybinding | Description | +| :--- | :--- | :--- | +| **Checkout Branch** | `Space` | Switch to the highlighted branch. | +| **New Branch** | `n` | Create a new branch off the currently selected one. | +| **Delete Branch** | `d` | Delete the highlighted branch. | -#### 1. Prepare Configuration Directory -Depending on whether you have an existing setup, follow the appropriate step below: +### Lazygit Remotes, Push & Pull -**For a Fresh Install:** -If you have never configured Neovim, create the configuration folder: -```bash -mkdir ~/.config/nvim -``` +| Action | Keybinding | Description | +| :--- | :--- | :--- | +| **Pull** | `p` | Fetch and pull changes from the remote branch. | +| **Push** | `P` | Push current commits to the remote branch. | +| **Force Push** | `F` | Safe force push (`--force-with-lease`). | -**For an Existing Setup:** -If you have configured Neovim already, create a backup folder: -```bash -mv ~/.config/nvim ~/.config/nvim.bak -mkdir ~/.config/nvim -``` - -#### 2. Clone the Repository -Clone the Mzansi Vim configuration into your config folder: - -```bash -cd ~/.config/nvim -git clone https://git.mzansi-innovation-hub.co.za/yaso_meth/mzansi_vim.git . -``` - -#### 3. Initialize -Simply launch Neovim: - -```bash -nvim -``` ## Additional information diff --git a/lazy-lock.json b/lazy-lock.json index 9b2b724..2135922 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,7 +1,7 @@ { "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "LuaSnip": { "branch": "master", "commit": "0abc8f390b278c3b4aabc4c004ac8a088b65cf24" }, - "ansi.nvim": { "branch": "main", "commit": "95de464c315ecbe9d7ca3d9a203ef85def0cf6aa" }, + "ansi.nvim": { "branch": "main", "commit": "195b64c3da1c22c2e95648dcbdc6ed075d507064" }, "bigfile.nvim": { "branch": "main", "commit": "33eb067e3d7029ac77e081cfe7c45361887a311a" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" }, @@ -13,23 +13,23 @@ "flutter-tools.nvim": { "branch": "main", "commit": "7d1acfd139215e02d2784733af69a61aaebe06e8" }, "harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "lazygit.nvim": { "branch": "main", "commit": "a04ad0dbc725134edbee3a5eea29290976695357" }, "log-highlight.nvim": { "branch": "main", "commit": "b2e00cfd41ca94338265a595f3f3f423d9f9322e" }, "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "21c5b3ebeaa0412e28096bb0701434c51c1fbf76" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "47059d71b42d74b0a1e9f61c1d99d301039c3b5b" }, "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, "mini.ai": { "branch": "main", "commit": "d73c36349aa7b0bab5f77ad71701a1d42211a1df" }, "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nvim-autopairs": { "branch": "master", "commit": "7b9923abad60b903ece7c52940e1321d39eccc79" }, "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, - "nvim-lspconfig": { "branch": "master", "commit": "bfcc0171a43f22afa61d927ffe9fcb6cb85dc99e" }, + "nvim-lspconfig": { "branch": "master", "commit": "292f44408498103c47996ff5c18fd366293840d8" }, "nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" }, "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, - "nvim-web-devicons": { "branch": "master", "commit": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c" }, + "nvim-web-devicons": { "branch": "master", "commit": "dad71387de386a946b123079d0e53f23028f3abd" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "b25b749b9db64d375d782094e2b9dce53ad53a40" }, "telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" }, "tokyonight.nvim": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }, - "vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" }, - "yazi.nvim": { "branch": "main", "commit": "4b167eeafcf84cc78a9d9cd4b1f945533e0cc5b9" } + "yazi.nvim": { "branch": "main", "commit": "2314e0eb074996acc30183e3e9dfbfefd82f24aa" } } diff --git a/lua/plugins/oneliners.lua b/lua/plugins/auto_pairs.lua similarity index 62% rename from lua/plugins/oneliners.lua rename to lua/plugins/auto_pairs.lua index 58eda14..e2b6423 100644 --- a/lua/plugins/oneliners.lua +++ b/lua/plugins/auto_pairs.lua @@ -1,16 +1,4 @@ return { - { - -- Git Plugin - 'tpope/vim-fugitive', - }, - { - "numToStr/Comment.nvim", - config = function() - require("Comment").setup() - vim.keymap.set("n", "", "gcc", { remap = true, desc = "Toggle comment" }) - vim.keymap.set("v", "", "gc", { remap = true, desc = "Toggle comment" }) - end, - }, { 'windwp/nvim-autopairs', event = "InsertEnter", diff --git a/lua/plugins/big_files.lua b/lua/plugins/big_files.lua index deaa172..360794a 100644 --- a/lua/plugins/big_files.lua +++ b/lua/plugins/big_files.lua @@ -4,7 +4,7 @@ return { event = { "BufReadPre", "BufNewFile" }, opts = { -- Fallback size if the function doesn't intercept it - filesize = 2, + filesize = 1, -- Use a detection function to unconditionally catch generated files pattern = function(bufnr, _) local buf_name = vim.api.nvim_buf_get_name(bufnr) diff --git a/lua/plugins/comments.lua b/lua/plugins/comments.lua new file mode 100644 index 0000000..2816d89 --- /dev/null +++ b/lua/plugins/comments.lua @@ -0,0 +1,10 @@ +return { + { + "numToStr/Comment.nvim", + config = function() + require("Comment").setup() + vim.keymap.set("n", "", "gcc", { remap = true, desc = "Toggle comment" }) + vim.keymap.set("v", "", "gc", { remap = true, desc = "Toggle comment" }) + end, + }, +} diff --git a/lua/plugins/dashboard.lua b/lua/plugins/dashboard.lua index 0fc5ee8..2335abe 100644 --- a/lua/plugins/dashboard.lua +++ b/lua/plugins/dashboard.lua @@ -39,6 +39,7 @@ return { end }, { icon = "󱗘 ", desc = " Harpoon Search ", key = "fl", action = "Telescope harpoon marks" }, + { icon = " ", desc = " Lazy Git ", key = "lg", action = "LazyGit" }, { icon = "󰒲 ", desc = " Lazy Manager ", key = "z", action = "Lazy" }, { icon = "󰌵 ", desc = " Help Tags ", key = "fh", action = "Telescope help_tags" }, { icon = " ", desc = " Quit ", key = "q", action = "qa" }, diff --git a/lua/plugins/flutter.lua b/lua/plugins/flutter.lua index f2c5c57..d912dd2 100644 --- a/lua/plugins/flutter.lua +++ b/lua/plugins/flutter.lua @@ -92,8 +92,12 @@ return { user_command("FEmulators", "FlutterEmulators", {}) user_command("FLogs", "FlutterLogToggle", {}) user_command("FLogsClear", "FlutterLogClear", {}) + user_command("FPubGet", "FlutterPubGet", {}) + user_command("FDevToolsStart", "FlutterDevTools", {}) + user_command("FDevToolsOpen", "FlutterOpenDevTools", {}) user_command("FBuild", "split | term dart run build_runner build", {}) user_command("FWatch", "split | term dart run build_runner watch", {}) + user_command("FClean", "split | term flutter clean", {}) -- Target-specific Run Command user_command("FRunT", function(opts) vim.cmd("FlutterRun --web-port 1995 --target=" .. opts.args) diff --git a/lua/plugins/lazygit.lua b/lua/plugins/lazygit.lua new file mode 100644 index 0000000..97d42d9 --- /dev/null +++ b/lua/plugins/lazygit.lua @@ -0,0 +1,20 @@ +return { + "kdheepak/lazygit.nvim", + lazy = true, + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + -- optional for floating window border decoration + dependencies = { + "nvim-lua/plenary.nvim", + }, + -- setting the keybinding for LazyGit with 'keys' is recommended in + -- order to load the plugin when the command is run for the first time + keys = { + { "lg", "LazyGit", desc = "LazyGit" } + } +} diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 63f915b..62d45a0 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -129,7 +129,7 @@ return { { name = "luasnip", keyword_length = 2 }, { name = "buffer", - keyword_length = 3, + keyword_length = 2, -- Limit indexing to only the active visible buffer to stop lag on Enter option = { get_bufnrs = function()