merge commits behind from the base repository#1969
merge commits behind from the base repository#1969morfize wants to merge 8 commits intonvim-lua:masterfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR significantly expands the Neovim (kickstart.nvim-based) configuration by enabling additional kickstart plugins, importing custom.plugins, and adding many new plugin specs plus language/tooling configuration (LSP, linting, Treesitter, filetype plugins).
Changes:
- Reworked Neo-tree configuration and added related plugins (file operations + window picker).
- Expanded lint/LSP/tooling setup (markdown/mdx/haskell/typst, mason tool installs) and modified Treesitter initialization.
- Added many new
lua/custom/plugins/*.luaplugin specs plus severalafter/ftplugin/*language-specific keymaps.
Reviewed changes
Copilot reviewed 37 out of 37 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
lua/kickstart/plugins/neo-tree.lua |
Replaced the simple Neo-tree spec with a large config and added extra plugin specs in the same module. |
lua/kickstart/plugins/lint.lua |
Added mdx/haskell/typst lint mappings and customized markdownlint args. |
init.lua |
Enabled multiple kickstart plugins, imported custom.plugins, added LSP server configs/tools, pinned telescope tag, and changed Treesitter setup. |
lua/custom/plugins/init.lua |
Added global settings/keymaps/autocmds executed during plugin import. |
lua/custom/plugins/zk-nvim.lua |
Added zk note-taking plugin config. |
lua/custom/plugins/typst.lua |
Added Typst filetype plugin config. |
lua/custom/plugins/typst-preview.lua |
Added Typst preview plugin spec. |
lua/custom/plugins/typescript-tools.lua |
Added TypeScript tools plugin spec. |
lua/custom/plugins/tree-sitter-d2.lua |
Added D2 Treesitter parser plugin spec. |
lua/custom/plugins/toggleterm.lua |
Added ToggleTerm plugin spec. |
lua/custom/plugins/tiny-inline-diagnostic.lua |
Added inline diagnostics plugin config and disabled native virtual_text. |
lua/custom/plugins/snacks.lua |
Added snacks.nvim configuration with helper functions for key descriptions and dashboard mappings. |
lua/custom/plugins/rustaceanvim.lua |
Added rustaceanvim plugin spec. |
lua/custom/plugins/rose-pine.lua |
Added Rose Pine colorscheme plugin config. |
lua/custom/plugins/render-markdown.lua |
Added render-markdown plugin spec and config. |
lua/custom/plugins/peek.lua |
Added markdown preview plugin spec. |
lua/custom/plugins/opencode.lua |
Added opencode.nvim plugin config and keymaps. |
lua/custom/plugins/nvim-autopairs.lua |
Added nvim-autopairs plugin spec/config (custom). |
lua/custom/plugins/nightfox.lua |
Added Nightfox colorscheme plugin config. |
lua/custom/plugins/nerdy.lua |
Added nerdy.nvim plugin spec. |
lua/custom/plugins/mcp-hub.lua |
Added mcphub.nvim plugin config. |
lua/custom/plugins/lean.lua |
Added lean.nvim plugin spec/config. |
lua/custom/plugins/im-select.lua |
Added input-method switching plugin config. |
lua/custom/plugins/haskell-tools.lua |
Added haskell-tools.nvim plugin spec. |
lua/custom/plugins/github-nvim-theme.lua |
Added GitHub theme plugin config. |
lua/custom/plugins/d2-vim.lua |
Added d2-vim plugin config. |
lua/custom/plugins/copilot.lua |
Added copilot.lua plugin config. |
lua/custom/plugins/claudecode.lua |
Added claudecode.nvim plugin spec/config + keymaps. |
lua/custom/plugins/ccc.lua |
Added ccc.nvim plugin config. |
lua/custom/plugins/catpuccin.lua |
Added catppuccin theme plugin config. |
lua/custom/plugins/bufferline.lua |
Added bufferline.nvim plugin spec/config. |
lua/custom/plugins/bg.lua |
Added bg.nvim plugin spec. |
lua/custom/plugins/better-escape.lua |
Added better-escape.nvim plugin config. |
lua/custom/plugins/amp.lua |
Added amp.nvim plugin spec/config. |
after/ftplugin/rust.lua |
Added Rust-specific keymaps (rustaceanvim). |
after/ftplugin/markdown.lua |
Added zk-specific markdown keymaps for notebooks. |
after/ftplugin/haskell.lua |
Added (commented-out) haskell-tools keymap examples. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| custom = { | ||
| doing = { raw = '[d]', rendered = ' ', highlight = 'RenderMarkdownTodo', scope_highlight = nil }, | ||
| pending = { raw = '[p]', rendered = ' ', highlight = 'RenderMarkdownTodo', scope_highlight = nil }, | ||
| asking = { raw = '[a]', rendered = ' ', highlight = 'RenderMarkDownTodo', scope_highlight = nil }, |
There was a problem hiding this comment.
The highlight group name RenderMarkDownTodo uses a different capitalization than the other RenderMarkdown... groups in this file (RenderMarkdownTodo, etc.). If this is meant to reference the same highlight group, fix the casing so it doesn't point at a non-existent group.
| asking = { raw = '[a]', rendered = ' ', highlight = 'RenderMarkDownTodo', scope_highlight = nil }, | |
| asking = { raw = '[a]', rendered = ' ', highlight = 'RenderMarkdownTodo', scope_highlight = nil }, |
| -- capabilities = {}, | ||
| -- settings = {}, |
There was a problem hiding this comment.
In the rust_analyzer server config, setting cmd = {} and filetypes = {} overrides lspconfig defaults with empty lists, which will prevent the server from starting/attaching. Remove these keys (or set them to the real command/filetypes) so lspconfig can use its defaults.
| -- capabilities = {}, | |
| -- settings = {}, |
| 'zbirenbaum/copilot.lua', | ||
| enabled = true, | ||
| event = 'InsertEnter', | ||
| requires = { |
There was a problem hiding this comment.
requires is not a lazy.nvim plugin-spec key (lazy uses dependencies). With requires here, copilot-lsp.nvim likely won't be installed/loaded and nes.enabled (and other features) may not work. Rename requires to dependencies.
| requires = { | |
| dependencies = { |
| ---@module 'lazy' | ||
| ---@type LazySpec | ||
| return { | ||
| 'nvim-neo-tree/neo-tree.nvim', | ||
| version = '*', |
There was a problem hiding this comment.
This module now returns a list of plugin specs (outer table contains multiple tables). In Kickstart, require 'kickstart.plugins.neo-tree' is used as a single entry in lazy.setup, and other kickstart plugin modules return a single plugin spec table; returning a list here can cause lazy.nvim to treat it as one malformed spec (first element is a table, not a plugin string). Consider returning only the neo-tree spec and move the other two plugins into dependencies (or split them into their own kickstart plugin modules).
| local lint = require 'lint' | ||
| lint.linters_by_ft = { | ||
| markdown = { 'markdownlint' }, | ||
| mdx = { 'markdownlint' }, | ||
| haskell = { 'hlint' }, | ||
| typ = { 'tinymist' }, |
There was a problem hiding this comment.
lint.linters_by_ft uses the filetype key typ, but the Typst plugins added in this PR are configured for filetype typst (see lua/custom/plugins/typst*.lua). As-is, Typst buffers won't trigger linting. Align the filetype key with the actual Typst filetype you intend to use (and keep it consistent with the LSP config).
| workspace_folders = {}, | ||
| copilot_model = '', | ||
| root_dir = function() | ||
| return vim.fs.dirname(vim.fs.find('.git', { upward = true })[1]) |
There was a problem hiding this comment.
root_dir assumes vim.fs.find('.git', { upward = true })[1] always exists; outside a git repo this is nil and vim.fs.dirname(nil) will error. Add a fallback (e.g., return vim.loop.cwd() or nil) when no .git is found.
| return vim.fs.dirname(vim.fs.find('.git', { upward = true })[1]) | |
| local git_dir = vim.fs.find('.git', { upward = true })[1] | |
| if not git_dir then | |
| return vim.loop.cwd() | |
| end | |
| return vim.fs.dirname(git_dir) |
| enable = true, | ||
| ft = { 'd2', 'md' }, |
There was a problem hiding this comment.
lazy.nvim uses enabled (not enable) to toggle a plugin spec. With enable = true here, the field is ignored and may confuse future maintenance. Rename to enabled = true (or remove it, since true is the default).
| @@ -0,0 +1,22 @@ | |||
| return { | |||
| 'terrastruct/d2-vim', | |||
| enable = true, | |||
There was a problem hiding this comment.
lazy.nvim uses enabled (not enable) for plugin enable/disable. enable = true here is ignored and could lead to confusion about whether the plugin is active. Rename to enabled = true (or drop it).
| enable = true, | |
| enabled = true, |
| opts = { | ||
| notify_on_error = false, | ||
| format_on_save = function(bufnr) | ||
| -- Disable "format_on_save lsp_fallback" for languages that don't |
There was a problem hiding this comment.
tinymist is configured with filetypes = { 'typ' }, but Typst filetype elsewhere in this PR is typst (see lua/custom/plugins/typst*.lua) and linting also uses typ. This inconsistency will stop the LSP from attaching to Typst buffers. Use the correct filetype and keep it consistent across Typst plugins/lint/LSP.
| filetypes = { 'typst' }, |
| @@ -5,4 +5,124 @@ | |||
|
|
|||
| ---@module 'lazy' | |||
There was a problem hiding this comment.
vim.cmd 'language en_GB.UTF-8' can error on systems where that locale isn't installed, which would break startup. Consider guarding it (e.g., pcall) or making it conditional on vim.fn.has('multi_lang')/available locales.
| ---@module 'lazy' | |
| if vim.fn.has 'multi_lang' == 1 then | |
| pcall(vim.cmd, 'language en_GB.UTF-8') | |
| end |
|
mistakenly created. |
NOTE
Please verify that the
base repositoryabove has the intended destination!Github by default opens Pull Requests against the parent of a forked repository.
If this is your personal fork and you didn't intend to open a PR for contribution
to the original project then adjust the
base repositoryaccordingly.