# README ## Project structure - `init.lua`: root config file, commonly used to manage the vim global variables. - `lua/`: main code directory - `config/`: main config directory, it is required inside the `/init.lua`, therefore its name is arbitrary. - `init.lua`: module definition file, simply exports the rest - `lazy.lua`: initializes the `lazy.nvim` plugin manager - `lsp.lua`: initializes every language server defined, this can be deleted if you decide to use a plugin such as `lsp-zero`, `lsp-config` or anything as such. Note: `lsp-config` is a plugin that is not a plugin, it simply provides a common `/lsp/` definitions, pretty handy. - `autocmds.lua`: organization module to define `autocmds` (event handlers). - `remap.lua`: another organization module, this one is used to define key mappings. The name is arbitrary. - `plugins/`: main plugin directory, files inside will be automatically read and are only required to return (export) a table with the plugins list. - `opts/`: arbitrary name, just some plugin configs organized to avoid bloating the `plugins` files - `lsp/`: language server definitions ### Language servers This list is arbitrary and will depend on the current state of the lsp folder: - `# pacman -S lua-language-server bash-language-server typescript-language-server vscode-html-language-server vscode-css-language-server pyright-langserver gopls astro-ls jdtls rust-analyzer solargraph vue-language-server vscode-json-languageserver` - `$ yay -S jdtls ruby-solargraph` - `# npm i -g emmet-language-server emmet-ls @astrojs/language-server` ## Relevant docs - [LSP config](https://lsp-zero.netlify.app/blog/lsp-config-overview.html): the new nvim integration with LSP makes it unnecessary to rely on third party tools like `lsp-config` or `lsp-zero`.