-- :vi ft=lua local fn = vim.fn local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" local packer_bootstrap if fn.empty(fn.glob(install_path)) > 0 then packer_bootstrap = fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path, }) end vim.api.nvim_set_option("mouse", "a") vim.api.nvim_command("set number relativenumber") -- Comment the following lines to disable whitespace characters vim.opt.list = true vim.opt.listchars:append("space:⋅") vim.opt.listchars:append("eol:↴") vim.opt.listchars:append("tab:-->") -- VSCode like moving lines up and down with alt+{j,k} vim.api.nvim_command("nnoremap :m .+1==") vim.api.nvim_command("nnoremap :m .-2==") vim.api.nvim_command("inoremap :m .+1==gi") vim.api.nvim_command("inoremap :m .-2==gi") vim.api.nvim_command("vnoremap :m '>+1gv=gv") vim.api.nvim_command("vnoremap :m '<-2gv=gv") return require("packer").startup(function(use) -- Package manager use { "https://github.com/wbthomason/packer.nvim" } use { "https://github.com/vladdoster/remember.nvim" } use { "https://github.com/filipdutescu/renamer.nvim", branch = "master", requires = { { "https://github.com/nvim-lua/plenary.nvim" } }, config = function() vim.api.nvim_set_keymap("i", "", "lua require(\"renamer\").rename()", { noremap = true, silent = true }) vim.api.nvim_set_keymap("n", "rn", "lua require(\"renamer\").rename()", { noremap = true, silent = true }) vim.api.nvim_set_keymap("v", "rn", "lua require(\"renamer\").rename()", { noremap = true, silent = true }) end, } -- File tree use { "https://github.com/kyazdani42/nvim-tree.lua", requires = { "https://github.com/kyazdani42/nvim-web-devicons", -- optional, for file icon }, cmd = { "NvimTreeToggle" }, setup = function() vim.api.nvim_set_keymap("n", "", ":NvimTreeToggle", { noremap = true, silent = true }) end, config = function() require"nvim-tree".setup { auto_reload_on_write = true, update_cwd = true, view = { width = 30, height = 30, hide_root_folder = false, side = "left", preserve_window_proportions = false, number = true, relativenumber = true, signcolumn = "yes", }, renderer = { indent_markers = { enable = true } }, diagnostics = { enable = true, show_on_dirs = true, icons = { hint = "", info = "", warning = "", error = "" }, }, } end, -- tag = "nightly" -- optional, updated every week. (see issue #1193) } use { "https://github.com/nvim-telescope/telescope.nvim", cmd = { "Telescope" }, requires = { { "https://github.com/nvim-lua/plenary.nvim" } }, setup = function() vim.api.nvim_set_keymap("n", "", ":Telescope find_files", { noremap = true, silent = true }) vim.api.nvim_set_keymap("n", "", ":Telescope buffers", { noremap = true, silent = true }) end, } use { "https://github.com/akinsho/bufferline.nvim", config = function() require("bufferline").setup { diagnostics = "nvim_lsp" } end, } use { "https://github.com/nvim-lualine/lualine.nvim", requires = { "https://github.com/kyazdani42/nvim-web-devicons", opt = true }, config = function() -- local tabline = require("tabline") require("lualine").setup { options = { icons_enabled = true, theme = "auto", component_separators = { left = "", right = "" }, section_separators = { left = "", right = "" }, disabled_filetypes = {}, always_divide_middle = true, globalstatus = false, }, sections = { lualine_a = { "mode" }, lualine_b = { "branch", "diff", "diagnostics" }, lualine_c = { "filename" }, lualine_x = { "encoding", "fileformat", "filetype" }, lualine_y = { "progress" }, lualine_z = { "location" }, }, inactive_sections = { lualine_a = {}, lualine_b = {}, lualine_c = { "filename" }, lualine_x = { "location" }, lualine_y = {}, lualine_z = {}, }, extensions = {}, } end, } use { "https://github.com/karb94/neoscroll.nvim", config = function() require("neoscroll").setup() end, } use { "https://github.com/lukas-reineke/indent-blankline.nvim", setup = function() vim.api.nvim_set_option("termguicolors", true) end, config = function() vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]] vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]] require("indent_blankline").setup { show_end_of_line = true, space_char_blankline = " ", char_highlight_list = { "IndentBlanklineIndent1", "IndentBlanklineIndent2", "IndentBlanklineIndent3", "IndentBlanklineIndent4", "IndentBlanklineIndent5", "IndentBlanklineIndent6", }, } end, } use { "https://github.com/nvim-treesitter/nvim-treesitter", config = function() require"nvim-treesitter.configs".setup { -- A list of parser names, or "all" ensure_installed = { "javascript", "lua", "rust" }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = false, -- List of parsers to ignore installing (for "all") -- ignore_install = {}, highlight = { -- `false` will disable the whole extension enable = true, -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is -- the name of the parser) -- list of language that will be disabled -- disable = { "c", "rust" }, -- Setting this to true will run `:h syntax` and tree-sitter at the same time. -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). -- Using this option may slow down your editor, and you may see some duplicate highlights. -- Instead of true it can also be a list of languages additional_vim_regex_highlighting = false, }, } end, } use { "https://github.com/norcalli/nvim-colorizer.lua", config = function () require('colorizer').setup() end } use { "https://github.com/google/vim-coverage", requires = "https://github.com/google/vim-maktaba", } use { "https://github.com/prettier/vim-prettier", cmd = { "Prettier" } } use { "https://github.com/editorconfig/editorconfig-vim" } use { requires = "https://github.com/neovim/nvim-lspconfig", "https://github.com/williamboman/nvim-lsp-installer", config = function() local lsp_installer = require("nvim-lsp-installer") lsp_installer.on_server_ready(function(server) local opts = {} if server.name == "denols" then opts.root_dir = vim.loop.cwd end server:setup(opts) vim.cmd [[ do User LspAttachBuffers ]] end) end, } use { "https://github.com/nathom/filetype.nvim", setup = function() vim.g.did_load_filetypes = 1 end, } use { "https://github.com/dracula/vim", config = function() vim.api.nvim_command("colorscheme dracula") end, } use { "https://github.com/lukas-reineke/lsp-format.nvim", config = function() require"lsp-format".setup { typescript = { tab_width = 4 }, yaml = { tab_width = 2 }, } end, } use { "https://github.com/github/copilot.vim" } use { disable = true, "https://github.com/ms-jpq/coq_nvim", requires = { "https://github.com/ms-jpq/coq.artifacts", "https://github.com/ms-jpq/coq.thirdparty", }, config = function() vim.g.coq_settings = { auto_start = "shut-up", clients = { tabnine = { enabled = true } }, } require("coq") end, } -- Automatically set up your configuration after cloning packer.nvim -- Put this at the end after all plugins if packer_bootstrap then require("packer").sync() end end)