diff --git a/home/.config/nvim/.gitignore b/home/.config/nvim/.gitignore deleted file mode 100644 index cc5457a..0000000 --- a/home/.config/nvim/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -tt.* -.tests -doc/tags -debug -.repro -foo.* -*.log -data diff --git a/home/.config/nvim/.neoconf.json b/home/.config/nvim/.neoconf.json deleted file mode 100644 index aa1b504..0000000 --- a/home/.config/nvim/.neoconf.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "neodev": { - "library": { - "enabled": true, - "plugins": true - } - }, - "neoconf": { - "plugins": { - "sumneko_lua": { - "enabled": true - } - } - } -} diff --git a/home/.config/nvim/LICENSE b/home/.config/nvim/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/home/.config/nvim/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - 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/home/.config/nvim/README.md b/home/.config/nvim/README.md index 185280b..1a04f7f 100644 --- a/home/.config/nvim/README.md +++ b/home/.config/nvim/README.md @@ -1,4 +1,87 @@ -# 💤 LazyVim +# Short Intro -A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). -Refer to the [documentation](https://lazyvim.github.io/installation) to get started. +![Screenshot](./assets/nvim-screenshot.png) + +This is my NeoVim config (for version 0.7.2 and greater). + +## Features + +Here's a short list of features that this config offers (through the use of 3rd party plugins). + +* Autocompletion +* Highlighting +* Navigation + * Find definition/declaration/implementation... + * Find all references (of variables, methods, classes...) + * Jump cursor focus forward/backward in time + * Project tree view (NvimTree) + * Switch between tabs +* Searching + * Search by file name + * Search by file contents + * Search through NeoVim's help +* Refactoring (code actions) + * Rename (variable, method, class...) + * Automatically import + * Simplify code + * Infer type info +* Diagnostics + * Show errors/warnings/hints/info + * Diagnostic panel + * Integration with status line +* Git + * Highlight edited lines in number column + * Navigate between hunks (changes) + * Stage/unstage hunks + * Preview old code + * Status line integration +* Misc + * Special start page + * Indent guide lines + * Motions for surrounding characters (brackets, parentheses...) + * Easy commenting out code + * Pretty status line + * Default colorscheme + * Enabled mouse integration + * Keymappings for 10 finger typing on Slovene keyboard + +## Installation + +I will make the whole installation process more friendly in the future, +but for now just follow these steps. + +1. Download this repo +```bash +git clone git@github.com:optimizacija/neovim-config.git +``` +2. Put the contents of this repo where NeoVim can find them. On Linux this is most likely `$HOME/.config/nvim`. +3. Create a *data* folder. This is where NeoVim will search for its packages, including Packer. + - On Linux this is `$HOME/.local/share/nvim`. Otherwise check the output of `:lua print(vim.fn.stdpath('data'))`. +4. Open NeoVim and let it install Packer and all the dependencies (ignore the errors). +5. Open NeoVim again and wait for nvim-treesitter to install all of its dependencies (ignore the errors). + +If you're updating an existing config and you're facing some issues, +I would recommend that you remove the contents of *data* folder and retry the installation. (It has helped me in the past) + + +## Icons +Icons and other special characters are used all around the config to give NeoVim a prettier look. +However, your terminal will not display these icons correctly unless it uses the correct font. + +Install one of the icon fonts listed [here](https://www.nerdfonts.com/). Just follow their instructions for your specific OS. +After installation is complete, don't forget to configure your terminal to start using the new font. +Each terminal does this differently, so be sure to checkout [Arch Wiki](https://wiki.archlinux.org/) if you run into any troubles. + + +## TODOS + +I'm working on this config in my spare time, but lately other side projects are getting in the way. I'll try to update it when I can, but also feel free to contribute by submitting a PR with your changes. + +Minor: +- improve telescope functionality (support regex) + +Major: +- autoformat (prettier) + +Misc: +- open previously opened project files diff --git a/home/.config/nvim/assets/nvim-screenshot.png b/home/.config/nvim/assets/nvim-screenshot.png new file mode 100644 index 0000000..1a76b9e Binary files /dev/null and b/home/.config/nvim/assets/nvim-screenshot.png differ diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index 2514f9e..5b0ff8f 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -1,2 +1,6 @@ --- bootstrap lazy.nvim, LazyVim and your plugins -require("config.lazy") +require('basics') +require('globals') +require('keymappings') +require('plugins') +require('lsp-general') +require('post-plugin-basics') diff --git a/home/.config/nvim/init.vim b/home/.config/nvim/init.vim deleted file mode 120000 index 0213af4..0000000 --- a/home/.config/nvim/init.vim +++ /dev/null @@ -1 +0,0 @@ -/home/benk/.vimrc \ No newline at end of file diff --git a/home/.config/nvim/lazy-lock.json b/home/.config/nvim/lazy-lock.json deleted file mode 100644 index 74dd2de..0000000 --- a/home/.config/nvim/lazy-lock.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "LazyVim": { "branch": "main", "commit": "835f77f3bebf7b189b0a120ef5fabe6a654b046d" }, - "LuaSnip": { "branch": "master", "commit": "3181cef8a5c6a71f263a28e61651233d7a7afeb2" }, - "alpha-nvim": { "branch": "main", "commit": "21a0f2520ad3a7c32c0822f943368dc063a569fb" }, - "bufferline.nvim": { "branch": "main", "commit": "c7492a76ce8218e3335f027af44930576b561013" }, - "catppuccin": { "branch": "main", "commit": "6368edcd0b5e5cb5d9fb7cdee9d62cffe3e14f0e" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "59224771f91b86d1de12570b4070fe4ad7cd1eeb" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, - "dressing.nvim": { "branch": "master", "commit": "4436d6f41e2f6b8ada57588acd1a9f8b3d21453c" }, - "flit.nvim": { "branch": "main", "commit": "be110f9814a45788d10537fd59b3c76d956bb7ad" }, - "friendly-snippets": { "branch": "main", "commit": "046e4d3491baf664e0eef5231d28beb49333578b" }, - "gitsigns.nvim": { "branch": "main", "commit": "c52162b7b34a21bdc476425a4ab562c2f7bf1bb1" }, - "indent-blankline.nvim": { "branch": "master", "commit": "c4c203c3e8a595bc333abaf168fcb10c13ed5fb7" }, - "lazy.nvim": { "branch": "main", "commit": "9b208696e139a404d159963b975a5b90af38439b" }, - "leap.nvim": { "branch": "main", "commit": "ff4c3663e5a0a0ecbb3fffbc8318825def35d2aa" }, - "lualine.nvim": { "branch": "master", "commit": "0050b308552e45f7128f399886c86afefc3eb988" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "c29f9a9f9b01528ca6a44cd14814f5af20778f7a" }, - "mason.nvim": { "branch": "main", "commit": "e7303a1632c004ebd2dcd0be1aaa4354586c030b" }, - "mini.ai": { "branch": "main", "commit": "270d5b8eb61e4aeede7a8591fdc72db824b0cfd7" }, - "mini.bufremove": { "branch": "main", "commit": "f651349d730c17ecdbef5a91c590779fb307ee37" }, - "mini.comment": { "branch": "main", "commit": "137cf43aaaed41c733a8e0087fab6ee08bb45293" }, - "mini.indentscope": { "branch": "main", "commit": "3a517f11aa9d1434c4cdba1a807df4e5ca42d3ea" }, - "mini.pairs": { "branch": "main", "commit": "ead264c5fd846c06752b6f3e0edb1d806c888cf9" }, - "mini.surround": { "branch": "main", "commit": "194e3a1c550b2b90019d42b40e029bf6455f374b" }, - "neo-tree.nvim": { "branch": "v2.x", "commit": "8238865e1d9c61f1a260c290653f2c419503e0a9" }, - "neoconf.nvim": { "branch": "main", "commit": "7209d3a1a38597ae4ae1df0e77ed4413357b2f09" }, - "neodev.nvim": { "branch": "main", "commit": "6d98dde102821731cdaddd6a84891f45253cef08" }, - "noice.nvim": { "branch": "main", "commit": "20f47dcebd24c84650bb8ed57d8349cc53dffd3f" }, - "nui.nvim": { "branch": "main", "commit": "b99e6cb13dc51768abc1c4c8585045a0c0459ef1" }, - "null-ls.nvim": { "branch": "main", "commit": "18497120fa0db0a3b9e53870ac8f342be4bffb57" }, - "nvim-cmp": { "branch": "main", "commit": "11a95792a5be0f5a40bab5fc5b670e5b1399a939" }, - "nvim-lspconfig": { "branch": "master", "commit": "582842c158968a59ed5acf9439bc6eaf637f1839" }, - "nvim-navic": { "branch": "master", "commit": "7a2b823152fe4de65ee7925b0e32d26ed73bc57c" }, - "nvim-notify": { "branch": "master", "commit": "bdd647f61a05c9b8a57c83b78341a0690e9c29d7" }, - "nvim-spectre": { "branch": "master", "commit": "24275beae382e6bd0180b3064cf5729548641a02" }, - "nvim-treesitter": { "branch": "master", "commit": "ce6390393aaf250a6b0f513023899a342883d0df" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "71cee2f7b1211fe35918ce5fd0f626c48d9c1e3d" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "a0f89563ba36b3bacd62cf967b46beb4c2c29e52" }, - "nvim-web-devicons": { "branch": "master", "commit": "3548363849878ef895ce54edda02421279b419d8" }, - "persistence.nvim": { "branch": "main", "commit": "d8a3eda0e19b4d5f3180fc832c25baab1709f2a1" }, - "plenary.nvim": { "branch": "master", "commit": "1c7e3e6b0f4dd5a174fcea9fda8a4d7de593b826" }, - "telescope.nvim": { "branch": "master", "commit": "dce1156ca103b8222e4abbfc63f9c6887abf5ec6" }, - "todo-comments.nvim": { "branch": "main", "commit": "74c7d28cb50b0713c881ef69bcb6cdd77d8907d1" }, - "tokyonight.nvim": { "branch": "main", "commit": "affb21a81e6d7de073378eb86d02864c594104d9" }, - "trouble.nvim": { "branch": "main", "commit": "490f7fe6d227f4f7a64f00be8c7dcd7a508ed271" }, - "vim-illuminate": { "branch": "master", "commit": "4e1d43cdc39e35f495c7b39a78a349b4d5badad0" }, - "vim-repeat": { "branch": "master", "commit": "24afe922e6a05891756ecf331f39a1f6743d3d5a" }, - "vim-startuptime": { "branch": "master", "commit": "cb4c112b9e0f224236ee4eab6bf5153406b3f88b" }, - "which-key.nvim": { "branch": "main", "commit": "684e96c5e8477f1ee9b3f2e9a12d802fd12c5531" } -} \ No newline at end of file diff --git a/home/.config/nvim/lua/basics.lua b/home/.config/nvim/lua/basics.lua new file mode 100644 index 0000000..1c25cfe --- /dev/null +++ b/home/.config/nvim/lua/basics.lua @@ -0,0 +1,98 @@ +-- ################# Basic settings ################ -- + +-- ================= Holy leader key ================= -- + +vim.g.mapleader = ',' + + +-- ================= File management ================= -- + +-- swapfile has global & local config, eventhough help says otherwise +vim.o.swapfile = false -- can open already open files +vim.bo.swapfile = false +vim.o.backup = false +vim.o.writebackup = false +vim.o.autoread = true -- auto file change detection + +-- autocmds are currently not supported by nvim (0.5 nighlty) +vim.api.nvim_command([[ +" Triger `autoread` when files changes on disk +autocmd FocusGained,BufEnter,CursorHold,CursorHoldI * if mode() != 'c' | checktime | endif +" Notification after file change +autocmd FileChangedShellPost * + \ echohl WarningMsg | echo "File changed on disk. Buffer reloaded." | echohl None +]]) + + +-- ================= Scrolling ================= -- + +vim.o.scrolloff = 8 -- start scrolling when 8 lines away from margins + + +-- ================= Indentation ================= -- + +-- pay attention to 'vim.bo' (buffer local options) and 'vim.o' (global options) +-- see :help options.txt + +-- for some reason these values need to be set in both o and bo objects +-- eventhough these options are supposed to be local to buffer +vim.o.tabstop = 4 -- maximum width of tab character (measured in spaces) +vim.bo.tabstop = 4 +vim.o.shiftwidth = 4 -- size of indent (measured in spaces), should equal tabstop +vim.bo.shiftwidth = 4 +vim.o.softtabstop = 4 -- should be the same as the other two above +vim.bo.softtabstop = 4 +vim.o.expandtab = true -- expand tabs to spaces +vim.bo.expandtab = true -- expand tabs to spaces +vim.o.smartindent = true -- smart indenting on new line for C-like programs +vim.bo.smartindent = true +vim.o.autoindent = true -- copy the indentation from previous line +vim.bo.autoindent = true +vim.o.smarttab = true -- tab infront of a line inserts blanks based on shiftwidth + + +-- ================= Number column ================= -- + +vim.wo.number = true +vim.cmd [[ + augroup numbertoggle + autocmd! + autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu && mode() != "i" | set rnu | endif + autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif + augroup END +]] -- h/t https://jeffkreeftmeijer.com/vim-number/ + +-- ================= Search ================= -- + +vim.o.ignorecase = true -- Ignorecase when searching +vim.o.incsearch = true -- start searching on each keystroke +vim.o.smartcase = true -- ignore case when lowercase, match case when capital case is used +vim.o.hlsearch = true -- highlight the search results + + +-- ================= Performance ================= -- + +vim.o.lazyredraw = true -- useful for when executing macros. +vim.o.ttimeoutlen = 30 -- ms to wait for a key code seq to complete + + +-- ================= Misc ================= -- + +vim.wo.wrap = true -- wrap long text into multiple lines +vim.o.history = 10000 -- numbers of entries in history for ':' commands and search patterns (10000 = max) +vim.o.updatetime = 300 -- used for CursorHold event (for document highlighting detection) +vim.o.mouse = 'nv' -- allow mose in normal & visual mode + +-- better autocomplete behaviour +-- menuone - show popup menu also when there is only one match available +-- preview - show extra information about currently selected completion +-- noinsert - do not insert any text for match until the user selects it from the menu +vim.o.completeopt='menuone,preview,noinsert' + +-- allows hidden buffers +-- this means that a modified buffer doesn't need to be saved when changing +-- tabs/windows. +vim.o.hidden=true + +-- Copy paste between vim and everything else +vim.o.clipboard = "unnamedplus" diff --git a/home/.config/nvim/lua/config/autocmds.lua b/home/.config/nvim/lua/config/autocmds.lua deleted file mode 100644 index 27e9e06..0000000 --- a/home/.config/nvim/lua/config/autocmds.lua +++ /dev/null @@ -1,3 +0,0 @@ --- 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 diff --git a/home/.config/nvim/lua/config/keymaps.lua b/home/.config/nvim/lua/config/keymaps.lua deleted file mode 100644 index 2c134f7..0000000 --- a/home/.config/nvim/lua/config/keymaps.lua +++ /dev/null @@ -1,3 +0,0 @@ --- Keymaps are automatically loaded on the VeryLazy event --- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua --- Add any additional keymaps here diff --git a/home/.config/nvim/lua/config/lazy.lua b/home/.config/nvim/lua/config/lazy.lua deleted file mode 100644 index 891b190..0000000 --- a/home/.config/nvim/lua/config/lazy.lua +++ /dev/null @@ -1,46 +0,0 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.loop.fs_stat(lazypath) then - -- bootstrap lazy.nvim - -- stylua: ignore - vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath }) -end -vim.opt.rtp:prepend(vim.env.LAZY or lazypath) - -require("lazy").setup({ - spec = { - -- add LazyVim and import its plugins - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - -- import any extras modules here - -- { import = "lazyvim.plugins.extras.lang.typescript" }, - -- { import = "lazyvim.plugins.extras.lang.json" }, - -- { import = "lazyvim.plugins.extras.ui.mini-animate" }, - -- import/override with your plugins - { import = "plugins" }, - }, - defaults = { - -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. - -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. - lazy = false, - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = false, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - }, - install = { colorscheme = { "tokyonight", "habamax" } }, - checker = { enabled = true }, -- automatically check for plugin updates - performance = { - rtp = { - -- disable some rtp plugins - disabled_plugins = { - "gzip", - -- "matchit", - -- "matchparen", - -- "netrwPlugin", - "tarPlugin", - "tohtml", - "tutor", - "zipPlugin", - }, - }, - }, -}) diff --git a/home/.config/nvim/lua/config/options.lua b/home/.config/nvim/lua/config/options.lua deleted file mode 100644 index f8428e2..0000000 --- a/home/.config/nvim/lua/config/options.lua +++ /dev/null @@ -1,6 +0,0 @@ --- Options are automatically loaded before lazy.nvim startup --- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua --- Add any additional options here - -local opt = vim.opt -opt.shiftwidth = 4 -- Size of an indent diff --git a/home/.config/nvim/lua/globals.lua b/home/.config/nvim/lua/globals.lua new file mode 100644 index 0000000..60fadff --- /dev/null +++ b/home/.config/nvim/lua/globals.lua @@ -0,0 +1,2 @@ +DATA_PATH = vim.fn.stdpath('data') +CACHE_PATH = vim.fn.stdpath('cache') diff --git a/home/.config/nvim/lua/keymappings.lua b/home/.config/nvim/lua/keymappings.lua new file mode 100644 index 0000000..3023357 --- /dev/null +++ b/home/.config/nvim/lua/keymappings.lua @@ -0,0 +1,74 @@ +-- defaults +local opts = { noremap = true, silent = true } +-- TODO: disabled since trying out "clipboard = unnamedplus" option +-- copy +--vim.api.nvim_set_keymap('', '', '"+y', opts) +-- paste +--vim.api.nvim_set_keymap('', '', '"+p', opts) +-- cut +--vim.api.nvim_set_keymap('', '', '"+d', opts) +-- paste in insert mode +--vim.api.nvim_set_keymap('i', '', '"+pa', opts) + +-- make the cursor stay on the same character when leaving insert mode +vim.api.nvim_set_keymap('i', 'ć', 'l', opts) +vim.api.nvim_set_keymap('i', 'Ć', 'l', opts) + +-- fast scrolling +vim.api.nvim_set_keymap('n', '', '9j', opts) +vim.api.nvim_set_keymap('n', '', '9k', opts) +vim.api.nvim_set_keymap('v', '', '9j', opts) +vim.api.nvim_set_keymap('v', '', '9k', opts) + +-- stay in normal mode after inserting a new line +vim.api.nvim_set_keymap('', 'o', 'o ', opts) +vim.api.nvim_set_keymap('', 'O', 'O ', opts) + +-- mapping that opens .vimrc in a new tab for quick editing +vim.api.nvim_set_keymap('n', 'ev', 'tabe $MYVIMRC', opts) +-- mapping that sources the vimrc in the current filea doesn't work, should change all require calls to dofile +-- or clear all require cache and reimport +-- vim.api.nvim_set_keymap('n', 'sv', 'lua dofile(vim.fn.stdpath(\'config\')..\'/init.lua\')', { noremap = true, silent = false }) + +-- Mapping U to Redo. +vim.api.nvim_set_keymap('', 'U', '', opts) +vim.api.nvim_set_keymap('', '', '', opts) + +-- indent via Tab +vim.api.nvim_set_keymap('n', '', '>>_', opts) +vim.api.nvim_set_keymap('n', '', '<<_', opts) +vim.api.nvim_set_keymap('v', '', '>>_', opts) +vim.api.nvim_set_keymap('v', '', '<<_', opts) +vim.api.nvim_set_keymap('i', '', '\t', opts) +vim.api.nvim_set_keymap('i', '', '\b', opts) + +-- window movement +--vim.api.nvim_set_keymap('', 'j', 'h', opts) +--vim.api.nvim_set_keymap('', 'k', 'j', opts) +--vim.api.nvim_set_keymap('', 'l', 'k', opts) +--vim.api.nvim_set_keymap('', 'č', 'l', opts) + +-- opening terminal with shortcut +vim.api.nvim_set_keymap('', '', 'silent !$TERM &', opts) + +-- jumping back and forth +vim.api.nvim_set_keymap('', '', '', opts) +vim.api.nvim_set_keymap('', '', '', opts) + +-- LSP +vim.api.nvim_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) +vim.api.nvim_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) +vim.api.nvim_set_keymap('n', 'gt', 'lua vim.lsp.buf.type_definition()', opts) +vim.api.nvim_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) +vim.api.nvim_set_keymap('n', 'gf', 'lua vim.lsp.buf.references()', opts) +-- usages replaced by LspSaga plugin +-- vim.api.nvim_set_keymap('n', 'ga', 'lua vim.lsp.buf.code_action()', opts) -- eg. autoimport +-- vim.api.nvim_set_keymap('n', 'gn', 'lua vim.lsp.diagnostic.goto_next()', opts) +-- vim.api.nvim_set_keymap('n', 'gN', 'lua vim.lsp.diagnostic.goto_prev()', opts) +-- vim.api.nvim_set_keymap('n', 'h', 'lua vim.lsp.buf.hover()', opts) +-- vim.api.nvim_set_keymap('n', 'gr', 'lua vim.lsp.buf.rename()', opts) + +-- autocomplete +-- if autocomplete popup menu opens pressing enter will complete the first match +vim.api.nvim_set_keymap('i', '', 'v:lua.smart_tab()', {expr = true, noremap = true}) +vim.api.nvim_set_keymap('i', '', 'pumvisible() ? "a" : ""', {expr = true, noremap = true, silent = true}) diff --git a/home/.config/nvim/lua/lsp-general.lua b/home/.config/nvim/lua/lsp-general.lua new file mode 100644 index 0000000..64dc5e4 --- /dev/null +++ b/home/.config/nvim/lua/lsp-general.lua @@ -0,0 +1,74 @@ +local lsp_installer = require'nvim-lsp-installer' +local lsp_installer_servers = require'nvim-lsp-installer.servers' + +-- install LSP servers +local function installServer(name) + local ok, server = lsp_installer_servers.get_server(name) + if ok then + if not server:is_installed() then + server:install() + end + end +end + +local function installServers(names) + for _,name in pairs(names) do + installServer(name) + end +end + +-- find a list of available ones here: https://github.com/williamboman/nvim-lsp-installer +installServers({'angularls', 'bashls', 'dockerls', 'sumneko_lua', 'pyright', 'jsonls', 'cssls', 'tsserver'}) + +-- setup installed servers +lsp_installer.on_server_ready(function(server) + local opts = {} + + -- (optional) Customize the options passed to the server + -- if server.name == "tsserver" then + -- opts.root_dir = function() ... end + -- end + if server.name == 'sumneko_lua' then + opts = require'lsp-server-config.lua' + end + + -- This setup() function is exactly the same as lspconfig's setup function. + -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/ADVANCED_README.md + server:setup(opts) +end) + +-- diagnostic symbols +local signs = { Error = "", Warn = "", Hint = "", Info = ""} +for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) +end + +-- completion symbols +vim.lsp.protocol.CompletionItemKind = { + "  (Text) ", + "  (Method)", + "  (Function)", + "  (Constructor)", + " ﴲ (Field)", + "[] (Variable)", + "  (Class)", + " ﰮ (Interface)", + "  (Module)", + " 襁 (Property)", + "  (Unit)", + "  (Value)", + " 練 (Enum)", + "  (Keyword)", + "  (Snippet)", + "  (Color)", + "  (File)", + "  (Reference)", + "  (Folder)", + "  (EnumMember)", + " ﲀ (Constant)", + " ﳤ (Struct)", + "  (Event)", + "  (Operator)", + "  (TypeParameter)" +} diff --git a/home/.config/nvim/lua/lsp-server-config/lua.lua b/home/.config/nvim/lua/lsp-server-config/lua.lua new file mode 100644 index 0000000..ca99ab5 --- /dev/null +++ b/home/.config/nvim/lua/lsp-server-config/lua.lua @@ -0,0 +1,18 @@ +local opts = { + settings = { + Lua = { + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = { + [vim.fn.expand "$VIMRUNTIME/lua"] = true, + [vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true, + }, + maxPreload = 100000, + preloadFileSize = 10000, + }, + }, + }, +} +return opts diff --git a/home/.config/nvim/lua/plugin-config/barbar.lua b/home/.config/nvim/lua/plugin-config/barbar.lua new file mode 100644 index 0000000..95cf494 --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/barbar.lua @@ -0,0 +1,5 @@ +-- tab movement +local opts = {noremap = true, silent = true} +vim.api.nvim_set_keymap('', 'J', 'BufferPrevious', opts) +vim.api.nvim_set_keymap('', 'Č', 'BufferNext', opts) +vim.api.nvim_set_keymap('', 'X', 'BufferClose', opts) diff --git a/home/.config/nvim/lua/plugin-config/galaxyline.lua b/home/.config/nvim/lua/plugin-config/galaxyline.lua new file mode 100644 index 0000000..3ec9edf --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/galaxyline.lua @@ -0,0 +1,284 @@ +local gl = require('galaxyline') +local section = gl.section +local condition = require('galaxyline.condition') + +-- TODO: move to util - credit to kraftwerk28/dotfiles +local function u(code) + if type(code) == 'string' then code = tonumber('0x' .. code) end + local c = string.char + if code <= 0x7f then return c(code) end + local t = {} + if code <= 0x07ff then + t[1] = c(bit.bor(0xc0, bit.rshift(code, 6))) + t[2] = c(bit.bor(0x80, bit.band(code, 0x3f))) + elseif code <= 0xffff then + t[1] = c(bit.bor(0xe0, bit.rshift(code, 12))) + t[2] = c(bit.bor(0x80, bit.band(bit.rshift(code, 6), 0x3f))) + t[3] = c(bit.bor(0x80, bit.band(code, 0x3f))) + else + t[1] = c(bit.bor(0xf0, bit.rshift(code, 18))) + t[2] = c(bit.bor(0x80, bit.band(bit.rshift(code, 12), 0x3f))) + t[3] = c(bit.bor(0x80, bit.band(bit.rshift(code, 6), 0x3f))) + t[4] = c(bit.bor(0x80, bit.band(code, 0x3f))) + end + return table.concat(t) +end + +-- li - line icon +local li = { + -- block + b = '█', + -- bottom left + bl = u'e0b8', -- '', + -- bottom right + br = u'e0ba', -- '', + -- top left + tl = u'e0bc', -- '', + -- top right + tr = u'e0be' -- '', +} + +-- taken from LunarVim +local colors = { + bg = '#292D38', + yellow = '#FFEB68', + dark_yellow = '#D7BA7D', + cyan = '#4EC9B0', + green = '#608B4E', + light_green = '#B5CEA8', + string_orange = '#CE9178', + orange = '#FF8800', + purple = '#C586C0', + magenta = '#D16D9E', + grey = '#858585', + blue = '#569CD6', + vivid_blue = '#4FC1FF', + light_blue = '#9CDCFE', + red = '#D16969', + error_red = '#F44747', + info_yellow = '#FFCC66', + white = '#FFFFFF' +} + +-- list of windows for which short line will be used +-- short line is just a shorter status line. it's normally used in +-- places where it's not really needed/desired +gl.short_line_list = {'NvimTree', 'vista', 'dbui', 'packer'} + +-- first section to the left will be a colored block shape that will +-- tell in which mode we're in +section.left[1] = { + ViMode = { + provider = function() + -- define color for each mode + local mode_color = { + n = colors.blue, -- normal + i = colors.grey, -- insert + v = colors.purple, -- visual + [''] = colors.purple, -- visual block + V = colors.purple, -- visual line + c = colors.dark_yellow, -- command + no = colors.blue, -- normal ?? + s = colors.orange, -- select ?? + S = colors.orange, -- select line ?? + [''] = colors.orange, -- select block?? + ic = colors.yellow, + R = colors.red, -- Replace + Rv = colors.red, -- replace visual? + cv = colors.blue, -- command ?? + ce = colors.blue, -- command ?? + r = colors.cyan, -- ?? + rm = colors.cyan, -- ?? + ['r?'] = colors.cyan, + ['!'] = colors.blue, + t = colors.blue + } + -- set color with nvim command + vim.api.nvim_command('hi GalaxyViMode guifg=' .. mode_color[vim.fn.mode()]) + + -- returns the text that will be displayed in this section + return li.b..li.tl..' ' + end, + highlight = {colors.red, colors.bg} + } +} + +-- git branch icon +section.left[2] = { + GitIcon = { + -- main text + provider = function() + return ' ' + end, + -- enable only if vim is open in git workspace + condition = condition.check_git_workspace, + -- separator is the stuff after the main text + separator = ' ', + -- separator foreground & background color + separator_highlight = {'NONE', colors.bg}, + -- main text foreground & background color + highlight = {colors.orange, colors.bg} + } +} + +-- git branch name +section.left[3] = { + GitBranch = { + provider = 'GitBranch', + -- enable only if vim is open in git workspace + condition = condition.check_git_workspace, + separator = ' ', + separator_highlight = {'NONE', colors.bg}, + highlight = {colors.grey, colors.bg} + } +} + +-- git added files +section.left[4] = { + DiffAdd = { + provider = 'DiffAdd', + condition = condition.hide_in_width, + icon = '  ', + highlight = {colors.green, colors.bg} + } +} + +-- git modified files +section.left[5] = { + DiffModified = { + provider = 'DiffModified', + condition = condition.hide_in_width, + icon = ' 柳', + highlight = {colors.blue, colors.bg} + } +} + +-- git removed files +section.left[6] = { + DiffRemove = { + provider = 'DiffRemove', + condition = condition.hide_in_width, + icon = '  ', + highlight = {colors.red, colors.bg} + } +} + +-- diagnostics +section.right[1] = { + DiagnosticError = { + provider = 'DiagnosticError', + icon = '  ', + highlight = {colors.error_red, colors.bg} + } +} +section.right[2] = { + DiagnosticWarn = { + provider = 'DiagnosticWarn', + icon = '  ', + highlight = {colors.orange, colors.bg} + } +} +section.right[3] = { + DiagnosticHint = { + provider = 'DiagnosticHint', + icon = '  ', + highlight = {colors.vivid_blue, colors.bg} + } +} +section.right[4] = { + DiagnosticInfo = { + provider = 'DiagnosticInfo', + icon = '  ', + highlight = { + colors.info_yellow, + colors.bg + } + } +} + +-- cosmetics +section.right[5] = { + Space2 = { + provider = function() + return li.br..li.b + end, + separator = ' ', + separator_highlight = {'NONE', colors.bg}, + highlight = {colors.white, colors.bg} + } +} + +-- lsp info +section.right[7] = { + ShowLspClient = { + provider = 'GetLspClient', + condition = function() + local tbl = {['dashboard'] = true, [' '] = true} + if tbl[vim.bo.filetype] then return false end + return true + end, + separator = ' ', + separator_highlight = {colors.grey, colors.white}, + icon = ' ', + highlight = {colors.grey, colors.white} + } +} + +-- file type +section.right[8] = { + BufferType = { + provider = 'FileTypeName', + separator = li.b..li.tl..' ', + separator_highlight = {colors.white, colors.bg}, + highlight = {colors.grey, colors.bg} + } +} +section.right[9] = { + FileEncode = { + provider = 'FileEncode', + condition = condition.hide_in_width, + separator = ' ', + separator_highlight = {'NONE', colors.bg}, + highlight = {colors.grey, colors.bg} + } +} +-- cosmetics: right dash +section.right[10] = { + LastDash = { + provider = function() + return li.tr..li.b + end, + separator = ' ', + separator_highlight = {'NONE', colors.bg}, + highlight = {colors.white, colors.bg} + } +} + +-- short line settings +section.short_line_left[1] = { + BufferType = { + provider = 'FileTypeName', + separator = ' ', + separator_highlight = {'NONE', colors.bg}, + highlight = {colors.grey, colors.bg} + } +} +section.short_line_left[2] = { + SFileName = { + provider = 'SFileName', + condition = condition.buffer_not_empty, + highlight = { + colors.grey, + colors.bg + } + } +} +section.short_line_right[1] = { + BufferIcon = { + provider = 'BufferIcon', + highlight = { + colors.grey, + colors.bg + } + } +} diff --git a/home/.config/nvim/lua/plugin-config/gitsigns.lua b/home/.config/nvim/lua/plugin-config/gitsigns.lua new file mode 100644 index 0000000..a4accd5 --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/gitsigns.lua @@ -0,0 +1,56 @@ +require('gitsigns').setup { + keymaps = { + -- Default keymap options + noremap = tue, + buffer = true, + + ['n hn'] = { expr = true, "&diff ? 'hn' : 'lua require\"gitsigns\".next_hunk()'"}, + ['n hN'] = { expr = true, "&diff ? 'hN' : 'lua require\"gitsigns\".prev_hunk()'"}, + + ['n hs'] = 'lua require"gitsigns".stage_hunk()', + ['n hu'] = 'lua require"gitsigns".undo_stage_hunk()', + ['n hr'] = 'lua require"gitsigns".reset_hunk()', + ['n hR'] = 'lua require"gitsigns".reset_buffer()', + ['n hp'] = 'lua require"gitsigns".preview_hunk()', + ['n hb'] = 'lua require"gitsigns".blame_line()', + }, + signs = { + add = {hl = 'GitSignsAdd' , text = '│', numhl='GitSignsAddNr' , linehl='GitSignsAddLn'}, + change = {hl = 'GitSignsChange', text = '│', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'}, + delete = {hl = 'GitSignsDelete', text = '_', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn'}, + topdelete = {hl = 'GitSignsDelete', text = '‾', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn'}, + changedelete = {hl = 'GitSignsChange', text = '~', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'}, + }, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = false, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` + watch_gitdir = { + interval = 1000, + follow_files = true + }, + attach_to_untracked = true, + current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` + current_line_blame_opts = { + virt_text = true, + virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' + delay = 100, + ignore_whitespace = false, + }, + current_line_blame_formatter = ', - ', + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + max_file_length = 40000, + preview_config = { + -- Options passed to nvim_open_win + border = 'single', + style = 'minimal', + relative = 'cursor', + row = 0, + col = 1 + }, + yadm = { + enable = false + }, +} diff --git a/home/.config/nvim/lua/plugin-config/indent-guide-lines.lua b/home/.config/nvim/lua/plugin-config/indent-guide-lines.lua new file mode 100644 index 0000000..1815af0 --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/indent-guide-lines.lua @@ -0,0 +1,8 @@ +-- settings for both plugins: +-- 'lukas-reineke/indent-blankline.nvim' +-- 'Yggdroot/indentLine' + +vim.api.nvim_command("let g:indentLine_char = '⎸'") +vim.api.nvim_command("let g:indentLine_fileTypeExclude = ['text', 'markdown', 'help']") +vim.api.nvim_command("let g:indentLine_bufNameExclude = ['STARTIFY', 'NVIMTREE']") +vim.api.nvim_command("let g:indent_blankline_extra_indent_level = -1") diff --git a/home/.config/nvim/lua/plugin-config/lsp-colors.lua b/home/.config/nvim/lua/plugin-config/lsp-colors.lua new file mode 100644 index 0000000..949bfa3 --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/lsp-colors.lua @@ -0,0 +1,7 @@ +-- Lua +require('lsp-colors').setup({ + Error = '#F44747', + Warning = '#FF8800', + Hint = '#4FC1FF', + Information = '#FFCC66' +}) diff --git a/home/.config/nvim/lua/plugin-config/lsp-trouble.lua b/home/.config/nvim/lua/plugin-config/lsp-trouble.lua new file mode 100644 index 0000000..b75c421 --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/lsp-trouble.lua @@ -0,0 +1,40 @@ +local opts = {silent = true, noremap = true} +vim.api.nvim_set_keymap("n", "xx", "TroubleToggle", opts) +require('trouble').setup{ + position = "bottom", -- position of the list can be: bottom, top, left, right + icons = true, -- use devicons for filenames + mode = "document_diagnostics", -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist" + fold_open = "", -- icon used for open folds + fold_closed = "", -- icon used for closed folds + group = true, -- group results by file + padding = true, -- add an extra new line on top of the list + action_keys = { -- key mappings for actions in the trouble list + close = "q", -- close the list + cancel = {"ć", "Ć"}, -- cancel the preview and get back to your last window / buffer / cursor + refresh = "r", -- manually refresh + jump = {"", ""}, -- jump to the diagnostic or open / close folds + toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode + toggle_preview = "P", -- toggle auto_preview + hover = "H", -- opens a small popup with the full multiline message + preview = "p", -- preview the diagnostic location + close_folds = {"zM", "zm"}, -- close all folds + open_folds = {"zR", "zr"}, -- open all folds + toggle_fold = {"zA", "za"}, -- toggle fold of current file + previous = "l", -- preview item + next = "k" -- next item + }, + indent_lines = true, -- add an indent guide below the fold icons + auto_open = false, -- automatically open the list when you have diagnostics + auto_close = false, -- automatically close the list when you have no diagnostics + auto_preview = true, -- automatically preview the location of the diagnostic. to close preview and go back to last window + auto_fold = false, -- automatically fold a file trouble list at creation + signs = { + -- icons / text used for a diagnostic + error = "", + warning = "", + hint = "", + information = "", + other = "﫠" + }, + use_diagnostic_signs = true -- enabling this will use the signs defined in your lsp client +} diff --git a/home/.config/nvim/lua/plugin-config/lspsaga.lua b/home/.config/nvim/lua/plugin-config/lspsaga.lua new file mode 100644 index 0000000..6ef19af --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/lspsaga.lua @@ -0,0 +1,8 @@ +local opts = { noremap = true, silent = true } + +vim.api.nvim_set_keymap('n', 'ga', 'lua require("lspsaga.codeaction").code_action()', opts) -- eg. autoimport +vim.api.nvim_set_keymap('v', 'ga', ':lua require("lspsaga.codeaction").range_code_action()', opts) -- eg. autoimport +vim.api.nvim_set_keymap('n', 'h', 'lua require("lspsaga.hover").render_hover_doc()', opts) +vim.api.nvim_set_keymap('n', 'gr', 'lua require("lspsaga.rename").rename()', opts) +vim.api.nvim_set_keymap('n', 'gn', 'lua require"lspsaga.diagnostic".lsp_jump_diagnostic_prev()', opts) +vim.api.nvim_set_keymap('n', 'gN', 'lua require"lspsaga.diagnostic".lsp_jump_diagnostic_next()', opts) diff --git a/home/.config/nvim/lua/plugin-config/nvim-cmp.lua b/home/.config/nvim/lua/plugin-config/nvim-cmp.lua new file mode 100644 index 0000000..a53f140 --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/nvim-cmp.lua @@ -0,0 +1,58 @@ +-- TODO( fix +local cmp = require'cmp' +cmp.setup({ + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. + end, + }, + mapping = { + [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), + [''] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. + [''] = cmp.mapping({ + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }), + [''] = 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 = 'vsnip' }, -- For vsnip users. + }, { + { name = 'buffer' }, + }) +}) + +-- Set configuration for specific filetype. +cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it. + }, { + { name = 'buffer' }, + }) +}) + +-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline('/', { + sources = { + { name = 'buffer' } + } +}) + +-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline(':', { + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }) +}) + +-- Setup lspconfig. +-- local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) +-- Replace with each lsp server you've enabled. +-- require('lspconfig')[''].setup { +--capabilities = capabilities +-- } diff --git a/home/.config/nvim/lua/plugin-config/nvim-tree.lua b/home/.config/nvim/lua/plugin-config/nvim-tree.lua new file mode 100644 index 0000000..a8f4c5e --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/nvim-tree.lua @@ -0,0 +1,67 @@ +local opts = {silent = true, noremap = true} +vim.api.nvim_set_keymap('n', '', 'NvimTreeToggle', opts) +vim.api.nvim_set_keymap('n', 'r', 'NvimTreeRefresh', opts) +-- find the currently open file in tree +vim.api.nvim_set_keymap('n', 'n', 'NvimTreeFindFile', opts) + +local tree_cb = require'nvim-tree.config'.nvim_tree_callback +local list = { + { key = "", cb = tree_cb("tabnew") }, + { key = "", cb = tree_cb("edit") }, + { key = "o", cb = tree_cb("edit") }, + { key = "<2-LeftMouse>", cb = tree_cb("edit") }, + { key = "<2-RightMouse>", cb = tree_cb("cd") }, + { key = "", cb = tree_cb("preview") }, + { key = "R", cb = tree_cb("refresh") }, + { key = "a", cb = tree_cb("create") }, + { key = "d", cb = tree_cb("remove") }, + { key = "r", cb = tree_cb("rename") }, + { key = "x", cb = tree_cb("cut") }, + { key = "y", cb = tree_cb("copy") }, + { key = "p", cb = tree_cb("paste") }, + { key = "<", cb = tree_cb("dir_up") }, + { key = "q", cb = tree_cb("close") } +} + + +require'nvim-tree'.setup { + disable_netrw = true, + hijack_netrw = true, + open_on_setup = false, + ignore_ft_on_setup = {}, + open_on_tab = false, + hijack_cursor = false, + update_cwd = false, + diagnostics = { + enable = false, + icons = { + hint = "", + info = "", + warning = "", + error = "", + } + }, + update_focused_file = { + enable = false, + update_cwd = false, + ignore_list = {} + }, + system_open = { + cmd = nil, + args = {} + }, + filters = { + dotfiles = false, + custom = {} + }, + view = { + width = 30, + height = 30, + hide_root_folder = false, + side = 'left', + mappings = { + custom_only = false, + list = list, + } + } +} diff --git a/home/.config/nvim/lua/plugin-config/nvim-treesitter.lua b/home/.config/nvim/lua/plugin-config/nvim-treesitter.lua new file mode 100644 index 0000000..7b1ebfb --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/nvim-treesitter.lua @@ -0,0 +1,8 @@ +require'nvim-treesitter.configs'.setup { + -- will install treesitter for all available languages + ensure_installed = 'all', + ignore_install = {'haskell'}, -- broken + highlight = { + enable = true + } +} diff --git a/home/.config/nvim/lua/plugin-config/telescope.lua b/home/.config/nvim/lua/plugin-config/telescope.lua new file mode 100644 index 0000000..5878e81 --- /dev/null +++ b/home/.config/nvim/lua/plugin-config/telescope.lua @@ -0,0 +1,64 @@ +-- Find files using lua fuctions +local opts = { silent = true, noremap = true } +vim.api.nvim_set_keymap('n', 'ff', "lua require'telescope.builtin'.find_files()", {silent=false, noremap=true}) +vim.api.nvim_set_keymap('n', 'fg', "lua require'telescope.builtin'.live_grep()", opts) +vim.api.nvim_set_keymap('n', 'fb', "lua require'telescope.builtin'.buffers()", opts) +vim.api.nvim_set_keymap('n', 'fh', "lua require'telescope.builtin'.help_tags()", opts) + +local actions = require('telescope.actions') +require('telescope').setup { + defaults = { + -- program to use for searching with its arguments + find_command = {'rg', '--no-heading', '--with-filename', '--line-number', '--column', '--smart-case'}, + -- prompt_position = 'top', -- have prompt at the top (has no effect on vertical configuration) + prompt_prefix = ' ', -- symbol on prompt window + selection_caret = ' ', -- symbol on selected row in results window + entry_prefix = ' ', -- symbol on non-selected rows in results window + initial_mode = 'insert', -- start in insert mode + selection_strategy = 'reset', -- what happens to selection when list changes + sorting_strategy = 'ascending', -- start with most important search on top + layout_strategy = 'vertical', -- vertical layout + layout_config = { + vertical = { + mirror = true, -- windows should be in this order from top to bottom: search, results, preview + preview_height = 0.5 -- preview window takes 0.5 of the total window height + } + }, + file_sorter = require'telescope.sorters'.get_fuzzy_file, + file_ignore_patterns = {'node_modules/.*'}, -- never search in node_modules/ dir + generic_sorter = require'telescope.sorters'.get_generic_fuzzy_sorter, + display_path = true, + winblend = 0, -- window should not be transparent + border = {}, -- no border? + borderchars = {'─', '│', '─', '│', '╭', '╮', '╯', '╰'}, -- border chars + color_devicons = true, -- colorize used icons + use_less = true, -- less is bash program for preview file contents + set_env = {['COLORTERM'] = 'truecolor'}, -- use all the colors + file_previewer = require'telescope.previewers'.vim_buffer_cat.new, + grep_previewer = require'telescope.previewers'.vim_buffer_vimgrep.new, + qflist_previewer = require'telescope.previewers'.vim_buffer_qflist.new, + buffer_previewer_maker = require'telescope.previewers'.buffer_previewer_maker, + -- preview_cutoff = 120, + mappings = { + i = { + [''] = actions.move_selection_next, + [''] = actions.move_selection_previous, + [''] = actions.smart_send_to_qflist + actions.open_qflist, + -- ['ć'] = actions.close, + [''] = actions.select_default + actions.center, + }, + n = { + [''] = actions.move_selection_next, + [''] = actions.move_selection_previous, + [''] = actions.smart_send_to_qflist + actions.open_qflist, + ['ć'] = actions.close, + } + } + }, + extensions = { + fzy_native = { + override_generic_sorter = false, + override_file_sorter = true, + } + } +} diff --git a/home/.config/nvim/lua/plugins.lua b/home/.config/nvim/lua/plugins.lua new file mode 100644 index 0000000..52e7914 --- /dev/null +++ b/home/.config/nvim/lua/plugins.lua @@ -0,0 +1,127 @@ +local fn = vim.fn +local installPath = DATA_PATH..'/site/pack/packer/start/packer.nvim' + +-- install packer if it's not installed already +local packerBootstrap = nil +if fn.empty(fn.glob(installPath)) > 0 then + packerBootstrap = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', installPath}) + vim.cmd [[packadd packer.nvim]] +end + +local packer = require('packer').startup(function(use) + -- Packer should manage itself + use 'wbthomason/packer.nvim' + + -- colorscheme + use 'drewtempelmeyer/palenight.vim' + + -- git integration + use { + 'lewis6991/gitsigns.nvim', + requires = { + 'nvim-lua/plenary.nvim' + } + } + + -- surround vim + use 'tpope/vim-surround' + + -- nerd commenter + use 'scrooloose/nerdcommenter' + + -- status line + use 'glepnir/galaxyline.nvim' + + -- show recent files on empty nvim command + use 'mhinz/vim-startify' + + -- lsp config + use { + 'neovim/nvim-lspconfig', + 'williamboman/nvim-lsp-installer', + } + + -- for LSP autocompletion + use 'hrsh7th/cmp-nvim-lsp' + use 'hrsh7th/cmp-buffer' + use 'hrsh7th/cmp-path' + use 'hrsh7th/cmp-cmdline' + use 'hrsh7th/nvim-cmp' + + -- For vsnip users. + use 'hrsh7th/cmp-vsnip' + use 'hrsh7th/vim-vsnip' + + -- TODO: prettify telescope vim, make it use regex & shorten the window + -- telescope - searching / navigation + use { + 'nvim-telescope/telescope.nvim', + requires = { {'nvim-lua/plenary.nvim'} } + } + + -- better hotfix window (for showing and searching through results in telescope's find usages) + -- TODO: learn how to use? + use {"kevinhwang91/nvim-bqf"} + + -- better highlighting + use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate'} + + use { + 'kyazdani42/nvim-tree.lua', + requires = 'kyazdani42/nvim-web-devicons', + config = function() require'nvim-tree'.setup {} end + } + + -- which-key + use { + "folke/which-key.nvim", + config = function() + vim.o.timeout = true + vim.o.timeoutlen = 300 + require("which-key").setup { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + } + end + } + + -- prettier tabs + use 'romgrk/barbar.nvim' + + -- nice diagnostic pane on the bottom + use 'folke/lsp-trouble.nvim' + + -- support the missing lsp diagnostic colors + use 'folke/lsp-colors.nvim' + + -- better LSP UI (for code actions, rename etc.) + use 'tami5/lspsaga.nvim' + + -- show indentation levels + use 'lukas-reineke/indent-blankline.nvim' + + -- highlight variables under cursor + use 'RRethy/vim-illuminate' + + -- this will automatically install listed dependencies + -- only the first time NeoVim is opened, because that's when Packer gets installed + if packerBootstrap then + require('packer').sync() + end +end) + +-- plugin specific configs go here +require('plugin-config/nvim-cmp') +require('plugin-config/telescope') +require('plugin-config/nvim-tree') +require('plugin-config/nvim-treesitter') +require('plugin-config/barbar') +require('plugin-config/lsp-colors') +require('plugin-config/lsp-trouble') +require('plugin-config/lspsaga') +require('plugin-config/galaxyline') +require('plugin-config/gitsigns') +require('plugin-config/indent-guide-lines') + +return packer diff --git a/home/.config/nvim/lua/plugins/example.lua b/home/.config/nvim/lua/plugins/example.lua deleted file mode 100644 index b2ead9f..0000000 --- a/home/.config/nvim/lua/plugins/example.lua +++ /dev/null @@ -1,269 +0,0 @@ --- since this is just an example spec, don't actually load anything here and return an empty spec --- stylua: ignore -if true then return {} end - --- every spec file under config.plugins will be loaded automatically by lazy.nvim --- --- In your plugin files, you can: --- * add extra plugins --- * disable/enabled LazyVim plugins --- * override the configuration of LazyVim plugins -return { - -- add gruvbox - { "ellisonleao/gruvbox.nvim" }, - - -- Configure LazyVim to load gruvbox - { - "LazyVim/LazyVim", - opts = { - colorscheme = "gruvbox", - }, - }, - - -- change trouble config - { - "folke/trouble.nvim", - -- opts will be merged with the parent spec - opts = { use_diagnostic_signs = true }, - }, - - -- disable trouble - { "folke/trouble.nvim", enabled = false }, - - -- add symbols-outline - { - "simrat39/symbols-outline.nvim", - cmd = "SymbolsOutline", - keys = { { "cs", "SymbolsOutline", desc = "Symbols Outline" } }, - config = true, - }, - - -- override nvim-cmp and add cmp-emoji - { - "hrsh7th/nvim-cmp", - dependencies = { "hrsh7th/cmp-emoji" }, - ---@param opts cmp.ConfigSchema - opts = function(_, opts) - local cmp = require("cmp") - opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } })) - end, - }, - - -- change some telescope options and a keymap to browse plugin files - { - "nvim-telescope/telescope.nvim", - keys = { - -- add a keymap to browse plugin files - -- stylua: ignore - { - "fp", - function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, - desc = "Find Plugin File", - }, - }, - -- change some options - opts = { - defaults = { - layout_strategy = "horizontal", - layout_config = { prompt_position = "top" }, - sorting_strategy = "ascending", - winblend = 0, - }, - }, - }, - - -- add telescope-fzf-native - { - "telescope.nvim", - dependencies = { - "nvim-telescope/telescope-fzf-native.nvim", - build = "make", - config = function() - require("telescope").load_extension("fzf") - end, - }, - }, - - -- add pyright to lspconfig - { - "neovim/nvim-lspconfig", - ---@class PluginLspOpts - opts = { - ---@type lspconfig.options - servers = { - -- pyright will be automatically installed with mason and loaded with lspconfig - pyright = {}, - }, - }, - }, - - -- add tsserver and setup with typescript.nvim instead of lspconfig - { - "neovim/nvim-lspconfig", - dependencies = { - "jose-elias-alvarez/typescript.nvim", - init = function() - require("lazyvim.util").on_attach(function(_, buffer) - -- stylua: ignore - vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) - vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) - end) - end, - }, - ---@class PluginLspOpts - opts = { - ---@type lspconfig.options - servers = { - -- tsserver will be automatically installed with mason and loaded with lspconfig - tsserver = {}, - }, - -- you can do any additional lsp server setup here - -- return true if you don't want this server to be setup with lspconfig - ---@type table - setup = { - -- example to setup with typescript.nvim - tsserver = function(_, opts) - require("typescript").setup({ server = opts }) - return true - end, - -- Specify * to use this function as a fallback for any server - -- ["*"] = function(server, opts) end, - }, - }, - }, - - -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, - -- treesitter, mason and typescript.nvim. So instead of the above, you can use: - { import = "lazyvim.plugins.extras.lang.typescript" }, - - -- add more treesitter parsers - { - "nvim-treesitter/nvim-treesitter", - opts = { - ensure_installed = { - "bash", - "help", - "html", - "javascript", - "json", - "lua", - "markdown", - "markdown_inline", - "python", - "query", - "regex", - "tsx", - "typescript", - "vim", - "yaml", - }, - }, - }, - - -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above - -- would overwrite `ensure_installed` with the new value. - -- If you'd rather extend the default config, use the code below instead: - { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - vim.list_extend(opts.ensure_installed, { - -- add tsx and treesitter - ensure_installed = { - "tsx", - "typescript", - }, - }) - end, - }, - - -- the opts function can also be used to change the default opts: - { - "nvim-lualine/lualine.nvim", - event = "VeryLazy", - opts = function(_, opts) - table.insert(opts.sections.lualine_x, "😄") - end, - }, - - -- or you can return new options to override all the defaults - { - "nvim-lualine/lualine.nvim", - event = "VeryLazy", - opts = function() - return { - --[[add your custom lualine config here]] - } - end, - }, - - -- use mini.starter instead of alpha - { import = "lazyvim.plugins.extras.ui.mini-starter" }, - - -- add jsonls and schemastore ans setup treesitter for json, json5 and jsonc - { import = "lazyvim.plugins.extras.lang.json" }, - - -- add any tools you want to have installed below - { - "williamboman/mason.nvim", - opts = { - ensure_installed = { - "stylua", - "shellcheck", - "shfmt", - "flake8", - }, - }, - }, - - -- Use for completion and snippets (supertab) - -- first: disable default and behavior in LuaSnip - { - "L3MON4D3/LuaSnip", - keys = function() - return {} - end, - }, - -- then: setup supertab in cmp - { - "hrsh7th/nvim-cmp", - dependencies = { - "hrsh7th/cmp-emoji", - }, - ---@param opts cmp.ConfigSchema - opts = function(_, opts) - 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 luasnip = require("luasnip") - local cmp = require("cmp") - - opts.mapping = vim.tbl_extend("force", opts.mapping, { - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable() - -- they way you will only jump inside the snippet region - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - }) - end, - }, -} diff --git a/home/.config/nvim/lua/post-plugin-basics.lua b/home/.config/nvim/lua/post-plugin-basics.lua new file mode 100644 index 0000000..905e41c --- /dev/null +++ b/home/.config/nvim/lua/post-plugin-basics.lua @@ -0,0 +1,10 @@ +-- ################# Basic settings dependent on plugins ################ -- + +-- ================= Visualization ================= -- + +vim.o.termguicolors = true +vim.o.background = 'dark' +-- TODO: Catpuchino +vim.cmd('colorscheme palenight') +vim.api.nvim_command('let g:palenight_terminal_italics=1') + diff --git a/home/.config/nvim/plugin/packer_compiled.lua b/home/.config/nvim/plugin/packer_compiled.lua new file mode 100644 index 0000000..5e15e10 --- /dev/null +++ b/home/.config/nvim/plugin/packer_compiled.lua @@ -0,0 +1,239 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/benk/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/benk/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/benk/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/benk/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/benk/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["barbar.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/barbar.nvim", + url = "https://github.com/romgrk/barbar.nvim" + }, + ["cmp-buffer"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/cmp-buffer", + url = "https://github.com/hrsh7th/cmp-buffer" + }, + ["cmp-cmdline"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/cmp-cmdline", + url = "https://github.com/hrsh7th/cmp-cmdline" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-path"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + ["cmp-vsnip"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/cmp-vsnip", + url = "https://github.com/hrsh7th/cmp-vsnip" + }, + ["galaxyline.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/galaxyline.nvim", + url = "https://github.com/glepnir/galaxyline.nvim" + }, + ["gitsigns.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/gitsigns.nvim", + url = "https://github.com/lewis6991/gitsigns.nvim" + }, + ["indent-blankline.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim", + url = "https://github.com/lukas-reineke/indent-blankline.nvim" + }, + ["lsp-colors.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/lsp-colors.nvim", + url = "https://github.com/folke/lsp-colors.nvim" + }, + ["lsp-trouble.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/lsp-trouble.nvim", + url = "https://github.com/folke/lsp-trouble.nvim" + }, + ["lspsaga.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/lspsaga.nvim", + url = "https://github.com/tami5/lspsaga.nvim" + }, + nerdcommenter = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/nerdcommenter", + url = "https://github.com/scrooloose/nerdcommenter" + }, + ["nvim-bqf"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/nvim-bqf", + url = "https://github.com/kevinhwang91/nvim-bqf" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lsp-installer"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/nvim-lsp-installer", + url = "https://github.com/williamboman/nvim-lsp-installer" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-tree.lua"] = { + config = { "\27LJ\2\n;\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\14nvim-tree\frequire\0" }, + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/nvim-tree.lua", + url = "https://github.com/kyazdani42/nvim-tree.lua" + }, + ["nvim-treesitter"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-web-devicons"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", + url = "https://github.com/kyazdani42/nvim-web-devicons" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["palenight.vim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/palenight.vim", + url = "https://github.com/drewtempelmeyer/palenight.vim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["telescope.nvim"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + ["vim-illuminate"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/vim-illuminate", + url = "https://github.com/RRethy/vim-illuminate" + }, + ["vim-startify"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/vim-startify", + url = "https://github.com/mhinz/vim-startify" + }, + ["vim-surround"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/vim-surround", + url = "https://github.com/tpope/vim-surround" + }, + ["vim-vsnip"] = { + loaded = true, + path = "/home/benk/.local/share/nvim/site/pack/packer/start/vim-vsnip", + url = "https://github.com/hrsh7th/vim-vsnip" + } +} + +time([[Defining packer_plugins]], false) +-- Config for: nvim-tree.lua +time([[Config for nvim-tree.lua]], true) +try_loadstring("\27LJ\2\n;\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\14nvim-tree\frequire\0", "config", "nvim-tree.lua") +time([[Config for nvim-tree.lua]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/home/.config/nvim/stylua.toml b/home/.config/nvim/stylua.toml deleted file mode 100644 index 5d6c50d..0000000 --- a/home/.config/nvim/stylua.toml +++ /dev/null @@ -1,3 +0,0 @@ -indent_type = "Spaces" -indent_width = 2 -column_width = 120 \ No newline at end of file