-- Autocmds are automatically loaded on the VeryLazy event -- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua -- Add any additional autocmds here local lsp = require('lsp-zero').preset({}) lsp.on_attach(function(client, bufnr) lsp.default_keymaps({ buffer = bufnr }) end) -- When you don't have mason.nvim installed -- You'll need to list the servers installed in your system lsp.setup_servers({ 'tsserver', 'eslint', 'hls', 'pyright', 'nil_ls', 'volar', 'cssls', 'html', 'jsonls', 'diagnosticls', 'lua_ls', 'marksman', 'purescriptls', 'tailwindcss', 'bashls' }) -- (Optional) Configure lua language server for neovim require('lspconfig').lua_ls.setup(lsp.nvim_lua_ls()) lsp.setup() local cmp = require 'cmp' cmp.setup { snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end, }, sources = { { name = 'nvim_lsp' }, { name = 'luasnip' }, -- other sources... }, -- other configurations... } vim.cmd [[ au BufRead,BufNewFile *.purs set filetype=purescript ]] local luasnip = require 'luasnip' cmp.setup { -- other configurations... mapping = { [''] = cmp.mapping(function(fallback) if vim.fn.pumvisible() == 1 then vim.fn.feedkeys(vim.api.nvim_replace_termcodes('', true, true, true), 'n') elseif luasnip.expand_or_jumpable() then vim.fn.feedkeys(vim.api.nvim_replace_termcodes('luasnip-expand-or-jump', true, true, true), '') else fallback() end end, { 'i', 's' }), [''] = cmp.mapping(function(fallback) if vim.fn.pumvisible() == 1 then vim.fn.feedkeys(vim.api.nvim_replace_termcodes('', true, true, true), 'n') elseif luasnip.jumpable(-1) then vim.fn.feedkeys(vim.api.nvim_replace_termcodes('luasnip-jump-prev', true, true, true), '') else fallback() end end, { 'i', 's' }), }, }