diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..c7822f7 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,15 @@ +# New Spec + +For new LSP, add in `lua/modules/language-specs.lua` at `lsp = `. +Name should match the mason registry one at: `https://github.com/mason-org/mason-registry/tree/main/packages` + +1. Run `nvim --headless +InstallAll +qa` (it invalidates cache automatically) +2. Run ` nvim --headless +FetchLspConfigs +qa` -> It will download the nvim-lspconfig variant in `lsp/` + +You may need to run: `pkill prettierd` (as it is running in background) + +# Other commands + +``` +nvim --headless +Sync +qa # For packages/plugins +``` diff --git a/docs/docs.md b/docs/docs.md index a6a6ddd..2349160 100644 --- a/docs/docs.md +++ b/docs/docs.md @@ -1,13 +1,3 @@ -TODO: -- wrap up invero theme in separate repo and proper colors? - - check plugins logins - - cache / create final result -- simplify coding: ts, lsp, lint, format (check other repos) - - how to download parsers and plugins alternative -- telescope alternative -- keymaps -- wrap up everything - ```lua --[[ Neovim Lua config: ways to set things @@ -31,121 +21,125 @@ TODO: ## check macos fileS: https://github.com/dsully/dotfiles/blob/main/.data/macos-defaults/globals.yaml # Used pacakges: -- rockspaces Metadata files describing how to build and install a Lua package. -- luarocks Package manager for Lua modules. (optional) -- tree-sitter Parser generator. Not needed except for using CLI. (optional) -- fd-find (fd) Alternative to `find`. (optional) -- ripgrep (rg) Line-oriented search tool. (recommended) +- rockspaces Metadata files describing how to build and install a Lua package. +- luarocks Package manager for Lua modules. (optional) +- tree-sitter Parser generator. Not needed except for using CLI. (optional) -- git Revision control system. (requirement) -- lazygit Terminal UI for git commands. (optional) +- fd-find (fd) Alternative to `find`. (optional) +- ripgrep (rg) Line-oriented search tool. (recommended) -- fzf Command-line fuzzy finder. -- bat "cat" but with colors -- curl Command-line for transferring data specified with URL syntax. -- wget Utility for downloading files from the Web. -- make -- cc Collection of compilers. -- build-essential Meta-package that installs standard C/C++ libraries and headers. - These are needed to compile tree-sitter parsers. Run only on the first time. - cc (gcc, clang) C compiler. Usually it points to `clang` (on macos) or `gcc` (on linux). - g++ C++ compiler. - make Build automation tool from source code. +- git Revision control system. (requirement) +- lazygit Terminal UI for git commands. (optional) -- unzip Extraction utility for archives compressed in .zip. -- ca-certificates Provides a set of trusted Certificate Authority (CA) certificates. -- openssh-client Tools for connecting to remote servers securely over SSH. -- libssl-dev Development libraries and headers for OpenSSL. +- fzf Command-line fuzzy finder. +- bat "cat" but with colors +- curl Command-line for transferring data specified with URL syntax. +- wget Utility for downloading files from the Web. +- make +- cc Collection of compilers. +- build-essential Meta-package that installs standard C/C++ libraries and headers. + These are needed to compile tree-sitter parsers. Run only on the first time. + cc (gcc, clang) C compiler. Usually it points to `clang` (on macos) or `gcc` (on linux). + g++ C++ compiler. + make Build automation tool from source code. + +- unzip Extraction utility for archives compressed in .zip. +- ca-certificates Provides a set of trusted Certificate Authority (CA) certificates. +- openssh-client Tools for connecting to remote servers securely over SSH. +- libssl-dev Development libraries and headers for OpenSSL. - sudo - tree - jq - man-db - python3 -- volta Node manager +- volta Node manager - ncurses ncurses-dev ncurses-libs ncurses-terminfo \ - check: https://github.com/glepnir/nvim/blob/main/Dockerfile - # Currently installed + - plenary.nvim - lazy.nvim - nvim-treesitter - neovim/nvim-lspconfig - - williamboman/mason.nvim - - williamboman/mason-lspconfig.nvim - - j-hui/fidget.nvim - - hrsh7th/cmp-nvim-lsp - - b0o/schemastore.nvim + - williamboman/mason.nvim + - williamboman/mason-lspconfig.nvim + - j-hui/fidget.nvim + - hrsh7th/cmp-nvim-lsp + - b0o/schemastore.nvim - windwp/nvim-ts-autotag # auto close,rename tags - nvim-autopairs # auto pair chars - stevearc/conform.nvim # formatter - nvim-cmp # completion - - cmp-path - - cmp-nvim-lsp + - cmp-path + - cmp-nvim-lsp - nvim-tree.lua # file explorer - telescope.nvim - - telescope-fzf-native.nvim - - telescope-ui-select.nvim - - plenary.nvim + - telescope-fzf-native.nvim + - telescope-ui-select.nvim + - plenary.nvim - harpoon # tags - # Notes: + - in lsp change tsserver to vtsls # New package definition + - Plugin and Package managers - - folke/lazy.nvim - - mason-org/mason.nvim + - folke/lazy.nvim + - mason-org/mason.nvim - TS - - nvim-treesitter - - nvim-treesitter-textobjects + - nvim-treesitter + - nvim-treesitter-textobjects - LSP - - neovim/nvim-lspconfig - -- nvim-ts-autotag tag elements (``) -- windwp/nvim-autopairs auto pairs -- blink.cmp autocompletion -- stevearc/conform.nvim autoformat -- mini.ai `a/i` motions + - neovim/nvim-lspconfig +- nvim-ts-autotag tag elements (``) +- windwp/nvim-autopairs auto pairs +- blink.cmp autocompletion +- stevearc/conform.nvim autoformat +- mini.ai `a/i` motions - mini.pairs - mini.surround - mfussenegger/nvim-lint - nvim-lspconfig - fzf-lua (replace telescope) - ? indent guides - - lukas-reineke/indent-blankline.nvim - - snacks.indent - - mini.indentscope - + - lukas-reineke/indent-blankline.nvim + - snacks.indent + - mini.indentscope + ## Deps: + - SchemaStore.nvim - mason-lspconfig.nvim - mason.nvim ## Maybe: -- folke/ts-comments.nvim better comments -- grug-far.nvim find and replace -- markdown-preview.nvim side by side md (disabled in folke) -- toppair/peek.nvim another markdown preview? -- render-markdown.nvim inline viewer + +- folke/ts-comments.nvim better comments +- grug-far.nvim find and replace +- markdown-preview.nvim side by side md (disabled in folke) +- toppair/peek.nvim another markdown preview? +- render-markdown.nvim inline viewer - markview.nvim - diffview.nvim -- octo.nvim edit and review GH issues and pr -- yanky.nvim better yank+put. has history -- inc-rename.nvim LSP renaming with visual feedback -- mini.basics defaults options -- mini.test run tests under cursor -- mini.diff inline diff -- mini.hipatters hilight patters and hex colors -- mini.move move chunks (like vscode) +- octo.nvim edit and review GH issues and pr +- yanky.nvim better yank+put. has history +- inc-rename.nvim LSP renaming with visual feedback +- mini.basics defaults options +- mini.test run tests under cursor +- mini.diff inline diff +- mini.hipatters hilight patters and hex colors +- mini.move move chunks (like vscode) - undo tree (find a plugin) ## AI help + - jackMort/ChatGPT.nvim - MunifTanjim/nui.nvim (dep) - nvim-lua/plenary.nvim (dep) @@ -155,6 +149,7 @@ TODO: - milanglacier/minuet-ai.nvim (folke) ## Options + ``` opt.backup = true @@ -178,6 +173,7 @@ vim.keymap.set("n", "", "ciw") ``` folke cmd + ```lua -- show cursor line only in active window vim.api.nvim_create_autocmd({ "InsertLeave", "WinEnter" }, { @@ -210,6 +206,7 @@ vim.api.nvim_create_autocmd("BufWritePre", { ``` Enable folding with TS: + ``` vim.opt.foldmethod = "expr" vim.opt.foldexpr = "nvim_treesitter#foldexpr()" diff --git a/lua/modules/language-specs.lua b/lua/modules/language-specs.lua index 5aa31b5..54d2f14 100644 --- a/lua/modules/language-specs.lua +++ b/lua/modules/language-specs.lua @@ -2,22 +2,28 @@ local M = {} function M.get() return { - { ts = { 'yaml', 'toml', 'sql', 'diff', 'dockerfile', 'gitcommit', 'gitignore' } }, - { ts = { 'c', 'cpp', 'go', 'rust', 'python' } }, + { + ft = 'yaml', + ts = 'yaml', + lsp = 'yaml-language-server', + format = { 'prettierd', 'prettier' }, + }, + { ts = { 'yaml', 'toml', 'sql', 'diff', 'dockerfile', 'gitcommit', 'gitignore' } }, + { ts = { 'c', 'cpp', 'go', 'rust', 'python' } }, - { ft = 'markdown', ts = { 'markdown', 'markdown_inline' }, format = 'prettier' }, - { ft = 'bash', lsp = 'bash-language-server', lint = 'shellcheck', format = 'shfmt' }, - { ft = 'lua', lsp = 'lua-language-server', lint = 'luacheck', format = 'stylua' }, - { ft = { 'json', 'jsonc' }, lsp = 'json-lsp' }, - { ft = 'html', lsp = 'html-lsp' }, - { ft = 'css', lsp = { 'css-lsp', 'tailwindcss-language-server' } }, - { - ft = { 'javascript', 'typescript', 'javascriptreact', 'typescriptreact' }, - ts = { 'javascript', 'typescript', 'tsx' }, - lsp = { 'vtsls', 'eslint-lsp' }, - format = { 'prettierd', 'prettier' }, - }, -} + { ft = 'markdown', ts = { 'markdown', 'markdown_inline' }, format = 'prettier' }, + { ft = 'bash', lsp = 'bash-language-server', lint = 'shellcheck', format = 'shfmt' }, + { ft = 'lua', lsp = 'lua-language-server', lint = 'luacheck', format = 'stylua' }, + { ft = { 'json', 'jsonc' }, lsp = 'json-lsp' }, + { ft = 'html', lsp = 'html-lsp' }, + { ft = 'css', lsp = { 'css-lsp', 'tailwindcss-language-server' } }, + { + ft = { 'javascript', 'typescript', 'javascriptreact', 'typescriptreact' }, + ts = { 'javascript', 'typescript', 'tsx' }, + lsp = { 'vtsls', 'eslint-lsp' }, + format = { 'prettierd', 'prettier' }, + }, + } end return M diff --git a/lua/setup/init.lua b/lua/setup/init.lua index 0753014..545b326 100644 --- a/lua/setup/init.lua +++ b/lua/setup/init.lua @@ -73,7 +73,8 @@ vim.api.nvim_create_user_command('Sync', function() end, {}) vim.api.nvim_create_user_command('FetchLspConfigs', function() - local base_url = 'https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/lsp/' + -- local base_url = 'https://raw.githubusercontent.com/neovim/nvim-lspconfig/master/lsp/' + local base_url = 'https://raw.githubusercontent.com/neovim/nvim-lspconfig/refs/heads/master/lsp/' local lm = require('plugins.language-manager') lm.invalidate_cache()