local paq = require "paq" { 'dense-analysis/ale', 'dracula/vim', 'ibhagwan/fzf-lua', 'kaarmu/typst.vim', 'lewis6991/gitsigns.nvim', 'lukas-reineke/indent-blankline.nvim', 'neovim/nvim-lspconfig', 'nmac427/guess-indent.nvim', 'nvim-lua/plenary.nvim', 'nvimtools/none-ls.nvim', 'stevearc/aerial.nvim', 'vim-airline/vim-airline', { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' }, 'gbprod/none-ls-shellcheck.nvim', "L3MON4D3/LuaSnip", "hrsh7th/cmp-buffer", "hrsh7th/cmp-cmdline", "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-nvim-lsp-signature-help", "hrsh7th/cmp-path", "hrsh7th/nvim-cmp", 'williamboman/mason-lspconfig.nvim', { 'williamboman/mason.nvim', build = ':MasonUpdate' }, } require("aerial").setup() require('guess-indent').setup() require("gitsigns").setup() require("ibl").setup() require("mason").setup() require("mason-lspconfig").setup() require("nvim-treesitter.configs").setup({highlight = {enable = true}}) local null_ls = require("null-ls") null_ls.setup({sources = { null_ls.builtins.formatting.phpcbf, null_ls.builtins.diagnostics.phpcs }}) require("null-ls").register(require("none-ls-shellcheck.diagnostics")) require("null-ls").register(require("none-ls-shellcheck.code_actions")) -- makes cmp tab functionality work as expected local has_words_before = function() unpack = unpack or table.unpack local line, col = unpack(vim.api.nvim_win_get_cursor(0)) return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil end local cmp = require("cmp") cmp.setup({ mapping = { [""] = cmp.mapping( function (fallback) if cmp.visible() then cmp.select_next_item() elseif has_words_before() then cmp.complete() else fallback() end end, {"i"}), [""] = cmp.mapping( cmp.mapping.select_prev_item(), {"i"}), [""] = cmp.mapping( cmp.mapping.confirm({select=true}), {"i"}), }, completion = { autocomplete = false }, snippet = { expand = function(args) require("luasnip").lsp_expand(args.body) end }, sources = cmp.config.sources( {{name = "nvim_lsp_signature_help"}}, {{name = "nvim_lsp"}}, {{name = "buffer"}}, {{name = "path"}} ) }) local capabilities = require('cmp_nvim_lsp').default_capabilities() require("lspconfig").clangd.setup{capabilities=capabilities} require("mason-lspconfig").setup_handlers { function (server_name) require("lspconfig")[server_name].setup {capabilities=capabilities} end } vim.opt.background = "dark" vim.opt.clipboard = "unnamedplus" vim.opt.colorcolumn = "85" vim.opt.mouse = "a" vim.opt.shiftwidth = 4 vim.opt.textwidth = 0 vim.opt.wrapmargin = 0 vim.opt.cursorline = true vim.opt.expandtab = true vim.opt.ignorecase = true vim.opt.linebreak = true vim.opt.number = true vim.opt.smartcase = true vim.opt.smartindent = true vim.opt.termguicolors = true vim.opt.wrap = false vim.keymap.set('', '', 'mzgg=G`z') vim.keymap.set('', 'r', '"_d') vim.g.mapleader = " " vim.keymap.set("n", "{", "AerialPrev", { buffer = bufnr }) vim.keymap.set("n", "}", "AerialNext", { buffer = bufnr }) vim.keymap.set('n', 'a', "AerialToggle!") vim.keymap.set('n', 'gd', function() vim.lsp.buf.definition() end) vim.keymap.set('n', 'gD', function() vim.lsp.buf.type_definition() end) vim.keymap.set('n', 'd', function() vim.lsp.buf.definition() end) vim.keymap.set('n', 'f', function() vim.lsp.buf.code_action() end) vim.keymap.set('n', 'h', function() vim.lsp.buf.hover() end) vim.keymap.set('n', 'r', function() vim.lsp.buf.rename() end) vim.keymap.set("n", "", require('fzf-lua').files) vim.keymap.set("n", "\\", require('fzf-lua').buffers) vim.keymap.set("n", "k", require('fzf-lua').builtin) vim.keymap.set("n", "l", require('fzf-lua').live_grep_glob) vim.keymap.set("n", "g", require('fzf-lua').grep_project) vim.cmd [[ colorscheme dracula command Q q! let b:ale_linters = {'c': [''], 'sh': [''], 'php': ['']} autocmd BufReadPost,FileReadPost *.bz3 call gzip#read("bzip3 -rd") ]]