@@ 0,0 1,14 @@
+require('plugins')
+require('lsp')
+
+vim.opt.number = true
+vim.opt.tabstop = 4
+vim.opt.shiftwidth = 4
+vim.opt.expandtab = false
+
+vim.keymap.set('n', '<leader>ff', '<cmd>Telescope find_files<cr>')
+vim.keymap.set('n', '<leader>fg', '<cmd>Telescope live_grep<cr>')
+vim.keymap.set('n', '<leader>be', '<cmd>Telescope buffers<cr>')
+vim.keymap.set('n', '<leader>fh', '<cmd>Telescope help_tags<cr>')
+
+vim.cmd [[colorscheme catppuccin]]
@@ 54,6 54,17 @@ local on_attach = function(client, bufnr)
-- end
end
+local status, lsp_installer = pcall(require, 'nvim-lsp-installer')
+if status then
+ lsp_installer.on_server_ready(function(server)
+ local opts = {
+ on_attach = on_attach;
+ }
+ -- Server-specific options can be added here; check "server.name"
+ server:setup(opts)
+ end)
+end
+
nvim_lsp.jdtls.setup{
cmd = { 'java-language-server', '--heap-max', '8G' };
init_options = {
@@ 105,7 116,12 @@ require('telescope').setup{
}
EOF
-nmap <Leader>ff <cmd>Telescope find_files<cr>
+if !empty(finddir('.git', '.;'))
+ nmap <Leader>ff <cmd>Telescope git_files<cr>
+else
+ nmap <Leader>ff <cmd>Telescope find_files<cr>
+endif
+
nmap <Leader>fg <cmd>Telescope live_grep<cr>
nmap <Leader>fb <cmd>Telescope buffers<cr>
nmap <Leader>fh <cmd>Telescope help_tags<cr>
@@ 0,0 1,84 @@
+local ok, lspconfig = pcall(require, 'lspconfig')
+if not ok then
+ return
+end
+
+local ok, lsp_installer = pcall(require, 'nvim-lsp-installer')
+if not ok then
+ return
+end
+
+-- Mappings.
+-- See `:help vim.diagnostic.*` for documentation on any of the below functions
+local opts = { noremap=true, silent=true }
+vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
+vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
+
+-- Use an on_attach function to only map the following keys
+-- after the language server attaches to the current buffer
+local on_attach = function(client, bufnr)
+ -- Enable completion triggered by <c-x><c-o>
+ vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
+
+ -- Mappings.
+ -- See `:help vim.lsp.*` for documentation on any of the below functions
+ local bufopts = { noremap=true, silent=true, buffer=bufnr }
+ vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
+ vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
+ vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
+ vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
+ vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
+ vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
+ vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
+ vim.keymap.set('n', '<space>wl', function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end, bufopts)
+ vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
+ vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
+ vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
+ vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
+ vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts)
+end
+
+local lsp_flags = {
+ -- This is the default in Nvim 0.7+
+ debounce_text_changes = 150,
+}
+
+lspconfig['rust_analyzer'].setup{
+ on_attach = on_attach,
+ flags = lsp_flags,
+ -- Server-specific settings...
+ settings = {
+ ["rust-analyzer"] = {}
+ }
+}
+
+lspconfig['sumneko_lua'].setup{
+ on_attach = on_attach,
+ flags = lsp_flags,
+ cmd = {vim.fn.stdpath('data')..'/lsp_servers/sumneko_lua/extension/server/bin/lua-language-server'},
+ settings = {
+ Lua = {
+ diagnostics = {
+ globals = {'vim'}
+ }
+ }
+ }
+}
+
+lspconfig['gopls'].setup{
+ on_attach = on_attach,
+ flags = lsp_flags,
+}
+
+lspconfig['zls'].setup{
+ on_attach = on_attach,
+ flags = lsp_flags,
+}
+
+lsp_installer.setup{
+ automatic_installation = true,
+}
@@ 0,0 1,18 @@
+-- Bootstrap packer
+local install_path = vim.fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
+if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
+ packer_bootstrap = vim.fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
+end
+
+return require('packer').startup(function(use)
+ use {
+ 'wbthomason/packer.nvim', -- Manage itself
+ 'neovim/nvim-lspconfig',
+ 'williamboman/nvim-lsp-installer',
+ }
+ use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' }
+ use { 'nvim-telescope/telescope.nvim', requires = { {'nvim-lua/plenary.nvim'} } }
+
+ -- Colorscheme
+ use { 'catppuccin/nvim', as = 'catppuccin' }
+end)