From a0d4284f53f90fb94430edb5309cee4bc0067e7e Mon Sep 17 00:00:00 2001 From: phajw Date: Thu, 25 Jan 2024 16:31:23 +0100 Subject: Add licence, enable silent formatters execution --- LICENCE | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 33 ++++++-- init.lua | 13 +--- lua/config/editor.lua | 137 ++++++++++----------------------- lua/config/lsp.lua | 108 ++++++++++++-------------- lua/config/packer.lua | 115 ++++++++++++++-------------- 6 files changed, 380 insertions(+), 230 deletions(-) create mode 100644 LICENCE diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..c8b2c25 --- /dev/null +++ b/LICENCE @@ -0,0 +1,204 @@ +Neovim is licensed under the terms of the Apache 2.0 license, except for +parts of Neovim that were contributed under the Vim license (see below). + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 08b4293..77b2080 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,35 @@ -# My Neovim Config +# Overview + ![nvim](https://user-images.githubusercontent.com/91333841/212791030-440472c6-1568-4754-9181-c47e69bc42d6.png) -### Introduction +### Installation + Run checkhealth in your Neovim + ```vim :checkhealth ``` -Make sure you analyzed the output properly: -- Your neovim must be >= 0.7.0 to run this config + +Make sure you analyzed the output properly: + +- Your neovim must be >= 0.7.0 to run this config - You need to setup [Packer](https://github.com/wbthomason/packer.nvim) + ```vim git clone --depth 1 https://github.com/wbthomason/packer.nvim\ ~/.local/share/nvim/site/pack/packer/start/packer.nvim ``` -- You should install global python provider + +- You should install global python provider + ```python pip install pynvim ``` -- You should install clipboard tool (I use xclip but you can use something diffrent) + +- You should install clipboard tool (I use xclip but you can use something diffrent) ### Installation + > Easy way You can just clone this repo to your .config folder @@ -27,18 +37,21 @@ You can just clone this repo to your .config folder ```bash git clone https://github.com/dsrcr/nvim ~/.config ``` + > Recommended way I use gnu-stow to manage my dotfiles, so I encourage you to use it too. -Use your package manage of choice to get stow, for example: +Use your package manage of choice to get stow, for example: ```bash paru -S stow ``` + Clone this repo to your prefered dir and use stow to symlink In order to do this you need an empty nvim directory in your .config folder + ```bash cd ~/.config mkdir nvim @@ -53,14 +66,20 @@ The last step is running this command in your neovim ```vim :PackerSync ``` + This command should pull everything you need In the next step you will encounter a lot of errors, but don't worry about it. Packer needs to pull specific plugins and then you need to install Treesitter's support for specific filetypes eg. lua, rust.... etc. + ```bash :TSUpdate ``` + ```bash :TSInstall ``` +### Further development + +This is the only text editor on my system, so I'll be adding updates as long as I find something better(not gonna happen soon) diff --git a/init.lua b/init.lua index 6d26278..45e6811 100644 --- a/init.lua +++ b/init.lua @@ -1,17 +1,8 @@ --- ________ _________ _____ .__ ____ --- \______ \ / _____/ ____ ____ ____ _/ ____\|__| / ___\ --- | | \ \_____ \ _/ ___\ / _ \ / \\ __\ | | / /_/ > --- | ` \ / \\ \___( <_> )| | \| | | | \___ / --- /_______ //_______ / \___ >\____/ |___| /|__| |__|/_____/ --- \/ \/ \/ \/ --- Starting point for my neovim setup --- https://github.com/dsrcr/nvim - --Open this file if you want to add new plugins require("config.packer") --- You can find here stuff related to lsp +-- Here you can find stuff related to lsp require("config.lsp") --- You can customize editor +-- And there goes editor customization require("config.editor") diff --git a/lua/config/editor.lua b/lua/config/editor.lua index 9594778..daff2ad 100644 --- a/lua/config/editor.lua +++ b/lua/config/editor.lua @@ -1,35 +1,30 @@ local js_based_languages = { "typescript", "javascript", "typescriptreact", "javascriptreact" } -local option = vim.opt; -local keymap = vim.keymap; +local option = vim.opt +local keymap = vim.keymap -local dap = require("dap") -local telescope = require('telescope.builtin'); -local autotag = require('nvim-ts-autotag').setup(); -local dap_vscode = require("dap-vscode-js").setup({ - debugger_path = "(runtimedir)/site/pack/packer/opt/vscode-js-debug", - adapters = { 'chrome', 'pwa-node', 'pwa-chrome', 'pwa-msedge', 'node-terminal', 'pwa-extensionHost', 'node', 'chrome' }, -}) +local telescope = require("telescope.builtin") +local autotag = require("nvim-ts-autotag").setup() --Basic Editor Setup -option.nu = true; -option.tabstop = 2; -option.softtabstop = 2; -option.shiftwidth = 2; -option.expandtab = true; -option.smartindent = true; -option.wrap = false; -option.swapfile = false; -option.hlsearch = false; -option.incsearch = true; -option.updatetime = 50; -option.laststatus = 0; -option.signcolumn = "number"; -option.autoindent = true; -option.clipboard = "unnamedplus"; -option.termguicolors = true; +option.nu = true +option.tabstop = 2 +option.softtabstop = 2 +option.shiftwidth = 2 +option.expandtab = true +option.smartindent = true +option.wrap = false +option.swapfile = false +option.hlsearch = false +option.incsearch = true +option.updatetime = 50 +option.laststatus = 0 +option.signcolumn = "number" +option.autoindent = true +option.clipboard = "unnamedplus" +option.termguicolors = true -- Setup Editor Theme -vim.cmd.colorscheme("darkblue") +vim.cmd.colorscheme("gruvbox") vim.cmd([[ highlight GitGutterAdd ctermbg=none highlight GitGutterAdd guibg=none @@ -39,92 +34,42 @@ highlight signcolumn ctermbg=none highlight signcolumn guibg=none ]]) + -- run specific commands after different file extensions vim.cmd([[ augroup RunPfOnSave autocmd! -autocmd BufWritePost *.js,*.ts,*.jsx,*json !prettier --write % +autocmd BufWritePost *.js,*.ts,*.jsx,*json,*.tsx,*.css,*.html,*.yaml,*.md silent! !prettier --write % autocmd BufWritePost *.tex :VimtexCompile -autocmd BufWritePost *.md :MarkdownPreview +autocmd BufWritePost *.md silent! :MarkdownPreview +autocmd BufWritePost *.php silent! !php-cs-fixer fix % augroup END ]]) -- Gui options vim.o.guifont = "Fira Code:h7" -vim.g.vimtex_view_method = 'zathura' -vim.g.vimtex_compiler_method = 'latexrun' -vim.g.gitgutter_set_sign_backgrounds = 1; -vim.fn.sign_define('DapBreakpoint',{ text ='🟥', texthl ='', linehl ='', numhl =''}) -vim.fn.sign_define('DapStopped',{ text ='▶️', texthl ='', linehl ='', numhl =''}) +vim.g.vimtex_view_method = "zathura" +vim.g.vimtex_compiler_method = "latexrun" +vim.g.gitgutter_set_sign_backgrounds = 1 --Keybinds -vim.g.mapleader = (" ") +vim.g.mapleader = " " keymap.set("n", "e", vim.cmd.Ex) -keymap.set('n', 'f', telescope.find_files, {}) -keymap.set('n', 'fg', telescope.live_grep, {}) -keymap.set('n', 'fb', telescope.buffers, {}) -keymap.set('n', 'fh', telescope.help_tags, {}) +keymap.set("n", "f", telescope.find_files, {}) +keymap.set("n", "fg", telescope.live_grep, {}) +keymap.set("n", "fb", telescope.buffers, {}) +keymap.set("n", "fh", telescope.help_tags, {}) keymap.set("n", "s", [[:%s/\<\>//gI]]) keymap.set("n", "a", "ggVG") keymap.set("v", "J", ":m '>+1gv=gv") keymap.set("v", "K", ":m '<-2gv=gv") --- Debugger keybinds -keymap.set('n', '', require 'dap'.continue) -keymap.set('n', '', require 'dap'.step_over) -keymap.set('n', '', require 'dap'.step_into) -keymap.set('n', '', require 'dap'.step_out) -keymap.set('n', 'b', require 'dap'.toggle_breakpoint) - -keymap.set('n', 'B', function() - require 'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: ')) -end) - -keymap.set('n', 'ui', require 'dapui'.toggle) -for _, language in ipairs(js_based_languages) do - require("dap").configurations[language] = { - { - type = "pwa-node", - request = "launch", - name = "Launch file", - program = "${file}", - cwd = "${workspaceFolder}", - }, - { - type = "pwa-node", - request = "attach", - name = "Attach", - processId = require 'dap.utils'.pick_process, - cwd = "${workspaceFolder}", - }, - { - type = "pwa-chrome", - request = "launch", - name = "Start Chrome with \"localhost\"", - url = "http://localhost:3000", - webRoot = "${workspaceFolder}", - userDataDir = "${workspaceFolder}/.vscode/vscode-chrome-debug-userdatadir" - } - } -end -require("dapui").setup() -local dap, dapui = require("dap"), require("dapui") -dap.listeners.after.event_initialized["dapui_config"] = function() - dapui.open({}) -end -dap.listeners.before.event_terminated["dapui_config"] = function() - dapui.close({}) -end -dap.listeners.before.event_exited["dapui_config"] = function() - dapui.close({}) -end - --Treesitter -require 'nvim-treesitter.configs'.setup { - ensure_installed = { "javascript", "typescript", "rust", "c", "lua", "vim" }, - sync_install = false, - auto_install = true, - highlight = { - enable = true, - } -} +require("nvim-treesitter.configs").setup({ + ensure_installed = { "javascript", "typescript", "rust", "c", "lua", "vim" }, + sync_install = false, + auto_install = true, + highlight = { + enable = true, + }, +}) diff --git a/lua/config/lsp.lua b/lua/config/lsp.lua index 3fdc2e0..fdcfe99 100644 --- a/lua/config/lsp.lua +++ b/lua/config/lsp.lua @@ -1,78 +1,64 @@ -- local lsp = require('lsp-zero') -local lsp_zero = require('lsp-zero') -local cmp = require('cmp') +local lsp_zero = require("lsp-zero") +local cmp = require("cmp") require("luasnip.loaders.from_vscode").lazy_load() -lsp_zero.preset('recommended') +lsp_zero.preset("recommended") lsp_zero.setup() -lsp_zero.on_attach(function(client, bufnr) - -- see :help lsp-zero-keybindings - -- to learn the available actions - lsp_zero.default_keymaps({buffer = bufnr}) +lsp_zero.on_attach(function(client_id, bufnr) + lsp_zero.default_keymaps({ buffer = bufnr }) end) -require('mason').setup({}) -require('mason-lspconfig').setup({ - -- Replace the language servers listed here - -- with the ones you want to install - ensure_installed = {'tsserver', 'rust_analyzer', 'eslint'}, - handlers = { - lsp_zero.default_setup, - }, +require("mason").setup({}) +require("mason-lspconfig").setup({ + ensure_installed = { "tsserver", "rust_analyzer", "eslint" }, + handlers = { + lsp_zero.default_setup, + }, }) - - ---require('tabnine').setup({ --- disable_auto_comment=true, --- accept_keymap="", --- dismiss_keymap = "", --- debounce_ms = 800, --- suggestion_color = {gui = "#808080", cterm = 244}, --- execlude_filetypes = {"TelescopePrompt"} ---}) - cmp.setup({ - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end, - }, - window = { - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - }, { - { name = 'buffer' }, - }) + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + window = {}, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + }, { + { name = "buffer" }, + }), }) function PrintDiagnostics(opts, bufnr, line_nr, client_id) - bufnr = bufnr or 0 - line_nr = line_nr or (vim.api.nvim_win_get_cursor(0)[1] - 1) - opts = opts or { ['lnum'] = line_nr } + bufnr = bufnr or 0 + line_nr = line_nr or (vim.api.nvim_win_get_cursor(0)[1] - 1) + opts = opts or { ["lnum"] = line_nr } - local line_diagnostics = vim.diagnostic.get(bufnr, opts) - if vim.tbl_isempty(line_diagnostics) then return end + local line_diagnostics = vim.diagnostic.get(bufnr, opts) + if vim.tbl_isempty(line_diagnostics) then + return + end - local diagnostic_message = "" - for i, diagnostic in ipairs(line_diagnostics) do - diagnostic_message = diagnostic_message .. string.format("%d: %s", i, diagnostic.message or "") - print(diagnostic_message) - if i ~= #line_diagnostics then - diagnostic_message = diagnostic_message .. "\n" - end - end - vim.api.nvim_echo({ { diagnostic_message, "Normal" } }, false, {}) + local diagnostic_message = "" + for i, diagnostic in ipairs(line_diagnostics) do + diagnostic_message = diagnostic_message .. string.format("%d: %s", i, diagnostic.message or "") + print(diagnostic_message) + if i ~= #line_diagnostics then + diagnostic_message = diagnostic_message .. "\n" + end + end + vim.api.nvim_echo({ { diagnostic_message, "Normal" } }, false, {}) end -vim.cmd [[ autocmd! CursorHold * lua PrintDiagnostics() ]] +vim.cmd([[ autocmd! CursorHold * lua PrintDiagnostics() ]]) diff --git a/lua/config/packer.lua b/lua/config/packer.lua index 887b330..36b9058 100644 --- a/lua/config/packer.lua +++ b/lua/config/packer.lua @@ -1,56 +1,61 @@ -vim.cmd [[packadd packer.nvim]] -return require('packer').startup(function(use) - use 'wbthomason/packer.nvim' - use 'nvim-treesitter/nvim-treesitter' - use 'neovim/nvim-lspconfig' - use 'lukas-reineke/indent-blankline.nvim' - use 'lervag/vimtex' - use 'morhetz/gruvbox' - use 'airblade/vim-gitgutter' - use 'jose-elias-alvarez/null-ls.nvim' - use 'windwp/nvim-ts-autotag' - use 'lunacookies/vim-colors-xcode' - use 'mfussenegger/nvim-dap' - use 'mxsdev/nvim-dap-vscode-js' - use { "rcarriga/nvim-dap-ui", requires = {"mfussenegger/nvim-dap"} } -use { - 'nvim-telescope/telescope.nvim', tag = '0.1.4', - requires = { {'nvim-lua/plenary.nvim'} } -} - use { - 'VonHeikemen/lsp-zero.nvim', - requires = { - { 'neovim/nvim-lspconfig' }, - { 'williamboman/mason.nvim' }, - { 'williamboman/mason-lspconfig.nvim' }, - { 'hrsh7th/nvim-cmp' }, - { 'hrsh7th/cmp-buffer' }, - { 'hrsh7th/cmp-path' }, - { 'saadparwaiz1/cmp_luasnip' }, - { 'hrsh7th/cmp-nvim-lsp' }, - { 'hrsh7th/cmp-nvim-lua' }, - { 'rafamadriz/friendly-snippets' }, - } - } - use({ - "L3MON4D3/LuaSnip", - tag = "v2.*", - run = "make install_jsregexp" - }) - use { - 'numToStr/Comment.nvim', - config = function() - require('Comment').setup() - end - } - use({ - "iamcco/markdown-preview.nvim", - run = "cd app && npm install", - setup = function() vim.g.mkdp_filetypes = { "markdown" } end, - ft = { "markdown" }, - }) - use { - "windwp/nvim-autopairs", - config = function() require("nvim-autopairs").setup {} end - } +vim.cmd([[packadd packer.nvim]]) +return require("packer").startup(function(use) + use("wbthomason/packer.nvim") + use("nvim-treesitter/nvim-treesitter") + use("neovim/nvim-lspconfig") + use("lukas-reineke/indent-blankline.nvim") + use("lervag/vimtex") + use("morhetz/gruvbox") + use("airblade/vim-gitgutter") + use("jose-elias-alvarez/null-ls.nvim") + use("windwp/nvim-ts-autotag") + use("lunacookies/vim-colors-xcode") + use("mfussenegger/nvim-dap") + use("mxsdev/nvim-dap-vscode-js") + use({ "rcarriga/nvim-dap-ui", requires = { "mfussenegger/nvim-dap" } }) + use({ + "nvim-telescope/telescope.nvim", + tag = "0.1.4", + requires = { { "nvim-lua/plenary.nvim" } }, + }) + use({ + "VonHeikemen/lsp-zero.nvim", + requires = { + { "neovim/nvim-lspconfig" }, + { "williamboman/mason.nvim" }, + { "williamboman/mason-lspconfig.nvim" }, + { "hrsh7th/nvim-cmp" }, + { "hrsh7th/cmp-buffer" }, + { "hrsh7th/cmp-path" }, + { "saadparwaiz1/cmp_luasnip" }, + { "hrsh7th/cmp-nvim-lsp" }, + { "hrsh7th/cmp-nvim-lua" }, + { "rafamadriz/friendly-snippets" }, + }, + }) + use({ + "L3MON4D3/LuaSnip", + tag = "v2.*", + run = "make install_jsregexp", + }) + use({ + "numToStr/Comment.nvim", + config = function() + require("Comment").setup() + end, + }) + use({ + "iamcco/markdown-preview.nvim", + run = "cd app && npm install", + setup = function() + vim.g.mkdp_filetypes = { "markdown" } + end, + ft = { "markdown" }, + }) + use({ + "windwp/nvim-autopairs", + config = function() + require("nvim-autopairs").setup({}) + end, + }) end) -- cgit v1.2.3