from-scratch rewrite #1
							
								
								
									
										3
									
								
								nvim/.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								nvim/.editorconfig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
[*]
 | 
			
		||||
indent_size=2
 | 
			
		||||
indent_style=space
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "neodev": {
 | 
			
		||||
    "library": {
 | 
			
		||||
      "enabled": true,
 | 
			
		||||
      "plugins": true
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "neoconf": {
 | 
			
		||||
    "plugins": {
 | 
			
		||||
      "lua_ls": {
 | 
			
		||||
        "enabled": true
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										201
									
								
								nvim/LICENSE
									
									
									
									
									
								
							
							
						
						
									
										201
									
								
								nvim/LICENSE
									
									
									
									
									
								
							@@ -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.
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
# 💤 LazyVim
 | 
			
		||||
 | 
			
		||||
A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
 | 
			
		||||
Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
 | 
			
		||||
@@ -1,2 +1,3 @@
 | 
			
		||||
-- bootstrap lazy.nvim, LazyVim and your plugins
 | 
			
		||||
require("config.lazy")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,56 +1,46 @@
 | 
			
		||||
{
 | 
			
		||||
  "LazyVim": { "branch": "main", "commit": "3f034d0a7f58031123300309f2efd3bb0356ee21" },
 | 
			
		||||
  "SchemaStore.nvim": { "branch": "main", "commit": "d521e71f9d5ac1c29a7653528d4e5c66ffe229c5" },
 | 
			
		||||
  "blink.cmp": { "branch": "main", "commit": "4f38ce99a472932d5776337f08f7a8180f1f571a" },
 | 
			
		||||
  "blink.cmp": { "branch": "main", "commit": "9bcb14b43852a6f2bfd5ac9ef29cb5cf09b1b39b" },
 | 
			
		||||
  "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
 | 
			
		||||
  "catppuccin": { "branch": "main", "commit": "b7bbdf93b42866f166af98d39a2563eedb7cabac" },
 | 
			
		||||
  "conform.nvim": { "branch": "master", "commit": "372fc521f8421b7830ea6db4d6ea3bae1c77548c" },
 | 
			
		||||
  "crates.nvim": { "branch": "main", "commit": "2c8f4fab02e3e9ea42c6ad9b547e4207a914a397" },
 | 
			
		||||
  "conform.nvim": { "branch": "master", "commit": "8132ec733eed3bf415b97b76797ca41b59f51d7d" },
 | 
			
		||||
  "fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
 | 
			
		||||
  "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
 | 
			
		||||
  "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
 | 
			
		||||
  "fzf-lua": { "branch": "main", "commit": "b11467c3fbfe48e4a815e4909f5c4e5b413ce6d0" },
 | 
			
		||||
  "gitsigns.nvim": { "branch": "main", "commit": "1796c7cedfe7e5dd20096c5d7b8b753d8f8d22eb" },
 | 
			
		||||
  "grug-far.nvim": { "branch": "main", "commit": "6ff8a205a29db3a9b08e5debe09452b4d6fd6591" },
 | 
			
		||||
  "fzf-lua": { "branch": "main", "commit": "05eaee319fcf2f5a0d378c2848641858c8b8962e" },
 | 
			
		||||
  "git-blame.nvim": { "branch": "master", "commit": "8503b199edf9a666fe7b1a989cf14e3c26b2eb03" },
 | 
			
		||||
  "gitsigns.nvim": { "branch": "main", "commit": "88205953bd748322b49b26e1dfb0389932520dc9" },
 | 
			
		||||
  "json-to-types.nvim": { "branch": "main", "commit": "e8dcc6ac710c59fcac354255a835f72916171ba8" },
 | 
			
		||||
  "kanagawa.nvim": { "branch": "master", "commit": "debe91547d7fb1eef34ce26a5106f277fbfdd109" },
 | 
			
		||||
  "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
 | 
			
		||||
  "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
 | 
			
		||||
  "lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" },
 | 
			
		||||
  "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
 | 
			
		||||
  "mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" },
 | 
			
		||||
  "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
 | 
			
		||||
  "mini.ai": { "branch": "main", "commit": "e139eb1101beb0250fea322f8c07a42f0f175688" },
 | 
			
		||||
  "mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" },
 | 
			
		||||
  "mini.pairs": { "branch": "main", "commit": "69864a2efb36c030877421634487fd90db1e4298" },
 | 
			
		||||
  "mini.surround": { "branch": "main", "commit": "5aab42fcdcf31fa010f012771eda5631c077840a" },
 | 
			
		||||
  "neo-tree.nvim": { "branch": "main", "commit": "71bfdeddc90225e281ce34c378dc1b5914f5018d" },
 | 
			
		||||
  "neotest": { "branch": "master", "commit": "6267dcd577aa519c828d2526b05844770d3a2c6a" },
 | 
			
		||||
  "neotest-jest": { "branch": "main", "commit": "514fd4eae7da15fd409133086bb8e029b65ac43f" },
 | 
			
		||||
  "neotest-rust": { "branch": "main", "commit": "e1cb22ecf0341fb894ef2ebde344389fe6e6fc8e" },
 | 
			
		||||
  "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
 | 
			
		||||
  "none-ls.nvim": { "branch": "main", "commit": "a49f5a79cdb76e0dc1a98899c8598f4db014c5e7" },
 | 
			
		||||
  "nui.nvim": { "branch": "main", "commit": "8d5b0b568517935d3c84f257f272ef004d9f5a59" },
 | 
			
		||||
  "nvim-dap": { "branch": "master", "commit": "8df427aeba0a06c6577dc3ab82de3076964e3b8d" },
 | 
			
		||||
  "mason-lspconfig.nvim": { "branch": "main", "commit": "f54e3c11fc9ebfcfc27e696182b0295b071d0811" },
 | 
			
		||||
  "mason-tool-installer.nvim": { "branch": "main", "commit": "93a9ff9b34c91c0cb0f7de8d5f7e4abce51d8903" },
 | 
			
		||||
  "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
 | 
			
		||||
  "mini.icons": { "branch": "main", "commit": "94848dad1589a199f876539bd79befb0c5e3abf0" },
 | 
			
		||||
  "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" },
 | 
			
		||||
  "mini.statusline": { "branch": "main", "commit": "452d27d764720cddcb9909b786598bb9e80c1ce8" },
 | 
			
		||||
  "neo-tree.nvim": { "branch": "v3.x", "commit": "f481de16a0eb59c985abac8985e3f2e2f75b4875" },
 | 
			
		||||
  "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
 | 
			
		||||
  "nvim-dap": { "branch": "master", "commit": "2edd6375692d9ac1053d50acfe415c1eb2ba92d0" },
 | 
			
		||||
  "nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
 | 
			
		||||
  "nvim-dap-virtual-text": { "branch": "master", "commit": "df66808cd78b5a97576bbaeee95ed5ca385a9750" },
 | 
			
		||||
  "nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" },
 | 
			
		||||
  "nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" },
 | 
			
		||||
  "nvim-lspconfig": { "branch": "master", "commit": "46434074f188e6bfccf9d9153dd8be6b1381498b" },
 | 
			
		||||
  "nvim-navic": { "branch": "master", "commit": "d0a8c17c4dc721b00bc2ac305c6ffbb036beeb74" },
 | 
			
		||||
  "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
 | 
			
		||||
  "nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" },
 | 
			
		||||
  "nvim-lspconfig": { "branch": "master", "commit": "314b35335cc84bc2a085c84c69da955ba22da163" },
 | 
			
		||||
  "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
 | 
			
		||||
  "nvim-treesitter": { "branch": "master", "commit": "94ea4f436d2b59c80f02e293466c374584f03b8c" },
 | 
			
		||||
  "nvim-treesitter-textobjects": { "branch": "master", "commit": "ed373482db797bbf71bdff37a15c7555a84dce47" },
 | 
			
		||||
  "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
 | 
			
		||||
  "one-small-step-for-vimkind": { "branch": "main", "commit": "f11704f46b97297cce48a390f6a5eea469908fda" },
 | 
			
		||||
  "outline.nvim": { "branch": "main", "commit": "321f89ef79f168a78685f70d70c52d0e7b563abb" },
 | 
			
		||||
  "persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" },
 | 
			
		||||
  "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
 | 
			
		||||
  "nvim-treesitter-context": { "branch": "master", "commit": "1a1a7c5d6d75cb49bf64049dafab15ebe294a79f" },
 | 
			
		||||
  "nvim-treesitter-textobjects": { "branch": "master", "commit": "89ebe73cd2836db80a22d9748999ace0241917a5" },
 | 
			
		||||
  "nvim-vtsls": { "branch": "main", "commit": "60b493e641d3674c030c660cabe7a2a3f7a914be" },
 | 
			
		||||
  "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
 | 
			
		||||
  "nvim-window-picker": { "branch": "main", "commit": "6382540b2ae5de6c793d4aa2e3fe6dbb518505ec" },
 | 
			
		||||
  "oil.nvim": { "branch": "master", "commit": "08c2bce8b00fd780fb7999dbffdf7cd174e896fb" },
 | 
			
		||||
  "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
 | 
			
		||||
  "rustaceanvim": { "branch": "master", "commit": "3f2b7a94b7fa3c0f301dfa9644c94b543000efc2" },
 | 
			
		||||
  "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
 | 
			
		||||
  "rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" },
 | 
			
		||||
  "rustaceanvim": { "branch": "master", "commit": "b554761a920d807c3a7e8388d0dd34205ae4fd0d" },
 | 
			
		||||
  "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
 | 
			
		||||
  "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
 | 
			
		||||
  "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
 | 
			
		||||
  "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" },
 | 
			
		||||
  "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
 | 
			
		||||
  "ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" },
 | 
			
		||||
  "vim-fugitive": { "branch": "master", "commit": "4a745ea72fa93bb15dd077109afbb3d1809383f2" },
 | 
			
		||||
  "vim-illuminate": { "branch": "master", "commit": "fbc16dee336d8cc0d3d2382ea4a53f4a29725abf" },
 | 
			
		||||
  "vim-helm": { "branch": "master", "commit": "cc5ac22444332381f38084a6c7f023c25eef6201" },
 | 
			
		||||
  "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
 | 
			
		||||
  "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,19 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  "extras": [
 | 
			
		||||
    "lazyvim.plugins.extras.editor.illuminate",
 | 
			
		||||
    "lazyvim.plugins.extras.editor.navic",
 | 
			
		||||
    "lazyvim.plugins.extras.editor.outline",
 | 
			
		||||
    "lazyvim.plugins.extras.lang.json",
 | 
			
		||||
    "lazyvim.plugins.extras.dap.nlua",
 | 
			
		||||
    "lazyvim.plugins.extras.lang.rust",
 | 
			
		||||
    "lazyvim.plugins.extras.lang.typescript",
 | 
			
		||||
    "lazyvim.plugins.extras.linting.eslint",
 | 
			
		||||
    "lazyvim.plugins.extras.lsp.none-ls",
 | 
			
		||||
    "lazyvim.plugins.extras.test.core"
 | 
			
		||||
  ],
 | 
			
		||||
  "install_version": 7,
 | 
			
		||||
  "news": {
 | 
			
		||||
    "NEWS.md": "10960"
 | 
			
		||||
  },
 | 
			
		||||
  "version": 8
 | 
			
		||||
}
 | 
			
		||||
@@ -1,13 +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
 | 
			
		||||
local function open_nvim_tree(data)
 | 
			
		||||
  local directory = vim.fn.isdirectory(data.file) == 1
 | 
			
		||||
  if not directory then
 | 
			
		||||
    return
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  vim.cmd.cd(data.file)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree })
 | 
			
		||||
							
								
								
									
										2
									
								
								nvim/lua/config/keymap.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								nvim/lua/config/keymap.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
vim.keymap.set("n", "-", "<cmd>Oil --float<cr>", {desc="Open Parent Dir in Oil"})
 | 
			
		||||
vim.keymap.set("n", "<leader>l", "<cmd>Lazy<cr>", {desc="Open Lazy"})
 | 
			
		||||
@@ -1,22 +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
 | 
			
		||||
 | 
			
		||||
local function map(mode, lhs, rhs, opts)
 | 
			
		||||
  local keys = require("lazy.core.handler").handlers.keys
 | 
			
		||||
  ---@cast keys LazyKeysHandler
 | 
			
		||||
  -- do not create the keymap if a lazy keys handler exists
 | 
			
		||||
  if not keys.active[keys.parse({ lhs, mode = mode }).id] then
 | 
			
		||||
    opts = opts or {}
 | 
			
		||||
    opts.silent = opts.silent ~= false
 | 
			
		||||
    if opts.remap and not vim.g.vscode then
 | 
			
		||||
      opts.remap = nil
 | 
			
		||||
    end
 | 
			
		||||
    vim.keymap.set(mode, lhs, rhs, opts)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
map("t", "<Esc><Esc>", [[<C-\><C-n>]], {})
 | 
			
		||||
-- map("", "tl", require("lsp_lines").toggle, { desc = "Toggle lsp_lines" })
 | 
			
		||||
map("n", "mgg", ":diffget //2<CR>", {})
 | 
			
		||||
map("n", "mgh", ":diffget //3<CR>", {})
 | 
			
		||||
@@ -1,47 +1,39 @@
 | 
			
		||||
-- Bootstrap lazy.nvim
 | 
			
		||||
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 })
 | 
			
		||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
 | 
			
		||||
	local lazyrepo = "https://github.com/folke/lazy.nvim.git"
 | 
			
		||||
	local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
 | 
			
		||||
	if vim.v.shell_error ~= 0 then
 | 
			
		||||
		vim.api.nvim_echo({
 | 
			
		||||
			{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
 | 
			
		||||
			{ out, "WarningMsg" },
 | 
			
		||||
			{ "\nPress any key to exit..." },
 | 
			
		||||
		}, true, {})
 | 
			
		||||
		vim.fn.getchar()
 | 
			
		||||
		os.exit(1)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
vim.opt.rtp:prepend(vim.env.LAZY or lazypath)
 | 
			
		||||
vim.opt.rtp:prepend(lazypath)
 | 
			
		||||
 | 
			
		||||
-- Make sure to setup `mapleader` and `maplocalleader` before
 | 
			
		||||
-- loading lazy.nvim so that mappings are correct.
 | 
			
		||||
-- This is also a good place to setup other settings (vim.opt)
 | 
			
		||||
vim.g.mapleader = " "
 | 
			
		||||
vim.g.maplocalleader = "\\"
 | 
			
		||||
 | 
			
		||||
require("config.options")
 | 
			
		||||
 | 
			
		||||
-- Setup lazy.nvim
 | 
			
		||||
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 = "lazyvim.plugins.extras.dap.core" },
 | 
			
		||||
		-- import 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",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
	-- Configure any other settings here. See the documentation for more details.
 | 
			
		||||
	-- colorscheme that will be used when installing plugins.
 | 
			
		||||
	install = { colorscheme = { "kanagawa" } },
 | 
			
		||||
	-- automatically check for plugin updates
 | 
			
		||||
	checker = { enabled = true },
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
require("config.keymap")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,136 @@
 | 
			
		||||
-- 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
 | 
			
		||||
--
 | 
			
		||||
vim.o.fillchars = 'eob: ,fold: ,foldopen:,foldsep: ,foldclose:'
 | 
			
		||||
vim.o.foldcolumn = '1'
 | 
			
		||||
vim.o.foldenable = true
 | 
			
		||||
vim.o.foldexpr = 'v:lua.vim.lsp.foldexpr()'
 | 
			
		||||
vim.o.foldlevel = 99
 | 
			
		||||
vim.o.foldlevelstart = 99
 | 
			
		||||
vim.o.foldmethod = 'expr'
 | 
			
		||||
 | 
			
		||||
vim.opt.langmap = "+]ü["
 | 
			
		||||
vim.keymap.set("n", "ü", "[", { remap = true })
 | 
			
		||||
 | 
			
		||||
vim.opt.expandtab = true
 | 
			
		||||
vim.opt.shiftwidth = 4
 | 
			
		||||
vim.opt.tabstop = 4
 | 
			
		||||
vim.opt.softtabstop = 4
 | 
			
		||||
 | 
			
		||||
vim.opt.smarttab = true
 | 
			
		||||
vim.opt.smartindent = true
 | 
			
		||||
vim.opt.autoindent = true
 | 
			
		||||
 | 
			
		||||
-- Set to true if you have a Nerd Font installed and selected in the terminal
 | 
			
		||||
vim.g.have_nerd_font = false
 | 
			
		||||
 | 
			
		||||
-- Make line numbers default
 | 
			
		||||
vim.opt.number = true
 | 
			
		||||
-- You can also add relative line numbers, to help with jumping.
 | 
			
		||||
--  Experiment for yourself to see if you like it!
 | 
			
		||||
vim.opt.relativenumber = true
 | 
			
		||||
 | 
			
		||||
-- Enable mouse mode, can be useful for resizing splits for example!
 | 
			
		||||
vim.opt.mouse = 'a'
 | 
			
		||||
 | 
			
		||||
-- Don't show the mode, since it's already in the status line
 | 
			
		||||
vim.opt.showmode = false
 | 
			
		||||
 | 
			
		||||
-- Sync clipboard between OS and Neovim.
 | 
			
		||||
--  Schedule the setting after `UiEnter` because it can increase startup-time.
 | 
			
		||||
--  Remove this option if you want your OS clipboard to remain independent.
 | 
			
		||||
--  See `:help 'clipboard'`
 | 
			
		||||
vim.schedule(function()
 | 
			
		||||
  vim.opt.clipboard = 'unnamedplus'
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
-- Enable break indent
 | 
			
		||||
vim.opt.breakindent = true
 | 
			
		||||
 | 
			
		||||
-- Save undo history
 | 
			
		||||
vim.opt.undofile = true
 | 
			
		||||
 | 
			
		||||
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
 | 
			
		||||
vim.opt.ignorecase = true
 | 
			
		||||
vim.opt.smartcase = true
 | 
			
		||||
 | 
			
		||||
-- Keep signcolumn on by default
 | 
			
		||||
vim.opt.signcolumn = 'yes'
 | 
			
		||||
 | 
			
		||||
-- Decrease update time
 | 
			
		||||
vim.opt.updatetime = 250
 | 
			
		||||
 | 
			
		||||
-- Decrease mapped sequence wait time
 | 
			
		||||
vim.opt.timeoutlen = 300
 | 
			
		||||
 | 
			
		||||
-- Configure how new splits should be opened
 | 
			
		||||
vim.opt.splitright = true
 | 
			
		||||
vim.opt.splitbelow = true
 | 
			
		||||
 | 
			
		||||
-- Sets how neovim will display certain whitespace characters in the editor.
 | 
			
		||||
--  See `:help 'list'`
 | 
			
		||||
--  and `:help 'listchars'`
 | 
			
		||||
vim.opt.list = true
 | 
			
		||||
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
 | 
			
		||||
 | 
			
		||||
-- Preview substitutions live, as you type!
 | 
			
		||||
vim.opt.inccommand = 'split'
 | 
			
		||||
 | 
			
		||||
-- Show which line your cursor is on
 | 
			
		||||
vim.opt.cursorline = true
 | 
			
		||||
vim.opt.cursorcolumn = false
 | 
			
		||||
 | 
			
		||||
-- Minimal number of screen lines to keep above and below the cursor.
 | 
			
		||||
vim.opt.scrolloff = 20
 | 
			
		||||
 | 
			
		||||
-- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`),
 | 
			
		||||
-- instead raise a dialog asking if you wish to save the current file(s)
 | 
			
		||||
-- See `:help 'confirm'`
 | 
			
		||||
vim.opt.confirm = true
 | 
			
		||||
 | 
			
		||||
vim.opt.title = true
 | 
			
		||||
 | 
			
		||||
vim.opt.conceallevel = 0
 | 
			
		||||
 | 
			
		||||
local opt = vim.opt
 | 
			
		||||
opt.scrolloff = 999
 | 
			
		||||
vim.diagnostic.config({ virtual_text = true })
 | 
			
		||||
opt.title = true
 | 
			
		||||
opt.conceallevel = 0
 | 
			
		||||
 | 
			
		||||
-- [[ Basic Keymaps ]]
 | 
			
		||||
--  See `:help vim.keymap.set()`
 | 
			
		||||
 | 
			
		||||
-- Clear highlights on search when pressing <Esc> in normal mode
 | 
			
		||||
--  See `:help hlsearch`
 | 
			
		||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
 | 
			
		||||
 | 
			
		||||
-- Diagnostic keymaps
 | 
			
		||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
 | 
			
		||||
 | 
			
		||||
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
 | 
			
		||||
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
 | 
			
		||||
-- is not what someone will guess without a bit more experience.
 | 
			
		||||
--
 | 
			
		||||
-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping
 | 
			
		||||
-- or just use <C-\><C-n> to exit terminal mode
 | 
			
		||||
vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })
 | 
			
		||||
 | 
			
		||||
-- TIP: Disable arrow keys in normal mode
 | 
			
		||||
-- vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>')
 | 
			
		||||
-- vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>')
 | 
			
		||||
-- vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>')
 | 
			
		||||
-- vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>')
 | 
			
		||||
 | 
			
		||||
-- Keybinds to make split navigation easier.
 | 
			
		||||
--  Use CTRL+<hjkl> to switch between windows
 | 
			
		||||
--
 | 
			
		||||
--  See `:help wincmd` for a list of all window commands
 | 
			
		||||
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
 | 
			
		||||
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
 | 
			
		||||
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
 | 
			
		||||
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
 | 
			
		||||
 | 
			
		||||
-- Highlight when yanking (copying) text
 | 
			
		||||
--  Try it with `yap` in normal mode
 | 
			
		||||
--  See `:help vim.highlight.on_yank()`
 | 
			
		||||
vim.api.nvim_create_autocmd('TextYankPost', {
 | 
			
		||||
  desc = 'Highlight when yanking (copying) text',
 | 
			
		||||
  group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
 | 
			
		||||
  callback = function()
 | 
			
		||||
    vim.highlight.on_yank()
 | 
			
		||||
  end,
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								nvim/lua/plugins/blink.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								nvim/lua/plugins/blink.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
return {
 | 
			
		||||
  "saghen/blink.cmp",
 | 
			
		||||
  -- optional: provides snippets for the snippet source
 | 
			
		||||
  dependencies = { "rafamadriz/friendly-snippets" },
 | 
			
		||||
 | 
			
		||||
  -- use a release tag to download pre-built binaries
 | 
			
		||||
  version = "1.*",
 | 
			
		||||
  -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
 | 
			
		||||
  -- build = 'cargo build --release',
 | 
			
		||||
  -- If you use nix, you can build from source using latest nightly rust with:
 | 
			
		||||
  -- build = 'nix run .#build-plugin',
 | 
			
		||||
 | 
			
		||||
  ---@module 'blink.cmp'
 | 
			
		||||
  ---@type blink.cmp.Config
 | 
			
		||||
  opts = {
 | 
			
		||||
    -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
 | 
			
		||||
    -- 'super-tab' for mappings similar to vscode (tab to accept)
 | 
			
		||||
    -- 'enter' for enter to accept
 | 
			
		||||
    -- 'none' for no mappings
 | 
			
		||||
    --
 | 
			
		||||
    -- All presets have the following mappings:
 | 
			
		||||
    -- C-space: Open menu or open docs if already open
 | 
			
		||||
    -- C-n/C-p or Up/Down: Select next/previous item
 | 
			
		||||
    -- C-e: Hide menu
 | 
			
		||||
    -- C-k: Toggle signature help (if signature.enabled = true)
 | 
			
		||||
    --
 | 
			
		||||
    -- See :h blink-cmp-config-keymap for defining your own keymap
 | 
			
		||||
    keymap = { preset = "super-tab" },
 | 
			
		||||
 | 
			
		||||
    appearance = {
 | 
			
		||||
      -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
 | 
			
		||||
      -- Adjusts spacing to ensure icons are aligned
 | 
			
		||||
      nerd_font_variant = "mono",
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    -- (Default) Only show the documentation popup when manually triggered
 | 
			
		||||
    completion = { documentation = { auto_show = true, auto_show_delay_ms = 500 } },
 | 
			
		||||
 | 
			
		||||
    -- Default list of enabled providers defined so that you can extend it
 | 
			
		||||
    -- elsewhere in your config, without redefining it, due to `opts_extend`
 | 
			
		||||
    sources = {
 | 
			
		||||
      default = { "lsp", "path", "snippets", "buffer" },
 | 
			
		||||
    },
 | 
			
		||||
    signature = { enabled = true },
 | 
			
		||||
 | 
			
		||||
    -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
 | 
			
		||||
    -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
 | 
			
		||||
    -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
 | 
			
		||||
    --
 | 
			
		||||
    -- See the fuzzy documentation for more information
 | 
			
		||||
    fuzzy = { implementation = "prefer_rust_with_warning" },
 | 
			
		||||
  },
 | 
			
		||||
  opts_extend = { "sources.default" },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								nvim/lua/plugins/bufferline.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								nvim/lua/plugins/bufferline.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
return {
 | 
			
		||||
  "akinsho/bufferline.nvim",
 | 
			
		||||
  event = "VeryLazy",
 | 
			
		||||
  keys = {
 | 
			
		||||
    { "<leader>bp", "<Cmd>BufferLineTogglePin<CR>",            desc = "Toggle Pin" },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>bo",
 | 
			
		||||
      function()
 | 
			
		||||
        Snacks.bufdelete.other()
 | 
			
		||||
      end,
 | 
			
		||||
      desc = "Delete other buffers",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>bd",
 | 
			
		||||
      function()
 | 
			
		||||
        Snacks.bufdelete()
 | 
			
		||||
      end,
 | 
			
		||||
      desc = "Delete current buffer",
 | 
			
		||||
    },
 | 
			
		||||
    { "<leader>bP", "<Cmd>BufferLineGroupClose ungrouped<CR>", desc = "Delete Non-Pinned Buffers" },
 | 
			
		||||
    { "<leader>br", "<Cmd>BufferLineCloseRight<CR>",           desc = "Delete Buffers to the Right" },
 | 
			
		||||
    { "<leader>bl", "<Cmd>BufferLineCloseLeft<CR>",            desc = "Delete Buffers to the Left" },
 | 
			
		||||
    { "<S-h>",      "<cmd>BufferLineCyclePrev<cr>",            desc = "Prev Buffer" },
 | 
			
		||||
    { "<S-l>",      "<cmd>BufferLineCycleNext<cr>",            desc = "Next Buffer" },
 | 
			
		||||
    { "[b",         "<cmd>BufferLineCyclePrev<cr>",            desc = "Prev Buffer" },
 | 
			
		||||
    { "]b",         "<cmd>BufferLineCycleNext<cr>",            desc = "Next Buffer" },
 | 
			
		||||
    { "[B",         "<cmd>BufferLineMovePrev<cr>",             desc = "Move buffer prev" },
 | 
			
		||||
    { "]B",         "<cmd>BufferLineMoveNext<cr>",             desc = "Move buffer next" },
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    options = {
 | 
			
		||||
      -- stylua: ignore
 | 
			
		||||
      close_command = function(n) Snacks.bufdelete(n) end,
 | 
			
		||||
      -- stylua: ignore
 | 
			
		||||
      right_mouse_command = function(n) Snacks.bufdelete(n) end,
 | 
			
		||||
      diagnostics = "nvim_lsp",
 | 
			
		||||
      always_show_bufferline = true,
 | 
			
		||||
      offsets = {
 | 
			
		||||
        {
 | 
			
		||||
          filetype = "neo-tree",
 | 
			
		||||
          text = "Neo-tree",
 | 
			
		||||
          highlight = "Directory",
 | 
			
		||||
          text_align = "left",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          filetype = "snacks_layout_box",
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  config = function(_, opts)
 | 
			
		||||
    require("bufferline").setup(opts)
 | 
			
		||||
    -- Fix bufferline when restoring a session
 | 
			
		||||
    vim.api.nvim_create_autocmd({ "BufAdd", "BufDelete" }, {
 | 
			
		||||
      callback = function()
 | 
			
		||||
        vim.schedule(function()
 | 
			
		||||
          pcall(nvim_bufferline)
 | 
			
		||||
        end)
 | 
			
		||||
      end,
 | 
			
		||||
    })
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  {
 | 
			
		||||
    "catppuccin/nvim",
 | 
			
		||||
    name = "catppuccin",
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "LazyVim/LazyVim",
 | 
			
		||||
    opts = {
 | 
			
		||||
      colorscheme = "catppuccin-latte",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										29
									
								
								nvim/lua/plugins/conform.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								nvim/lua/plugins/conform.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
return {
 | 
			
		||||
  "stevearc/conform.nvim",
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>cf",
 | 
			
		||||
      function()
 | 
			
		||||
        require("conform").format({ lsp_format = "fallback" })
 | 
			
		||||
      end,
 | 
			
		||||
      desc = "[C]ode [F]ormat",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    formatters_by_ft = {
 | 
			
		||||
      lua = { "stylua" },
 | 
			
		||||
      -- Conform will run multiple formatters sequentially
 | 
			
		||||
      python = { "isort", "black" },
 | 
			
		||||
      -- You can customize some of the format options for the filetype (:help conform.format)
 | 
			
		||||
      rust = { "rustfmt" },
 | 
			
		||||
      -- Conform will run the first available formatter
 | 
			
		||||
      javascript = { "eslint_d", "prettierd", "prettier", stop_after_first = true },
 | 
			
		||||
      typescript = { "eslint_d", "prettierd", "prettier", stop_after_first = true },
 | 
			
		||||
      format_on_save = {
 | 
			
		||||
        -- These options will be passed to conform.format()
 | 
			
		||||
        timeout_ms = 500,
 | 
			
		||||
        lsp_format = "fallback",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								nvim/lua/plugins/dap.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								nvim/lua/plugins/dap.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
return {
 | 
			
		||||
  "mfussenegger/nvim-dap",
 | 
			
		||||
  lazy = true,
 | 
			
		||||
  dependencies = {
 | 
			
		||||
    "rcarriga/nvim-dap-ui",
 | 
			
		||||
    "nvim-neotest/nvim-nio",
 | 
			
		||||
    "theHamsta/nvim-dap-virtual-text"
 | 
			
		||||
  },
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>db",
 | 
			
		||||
      function()
 | 
			
		||||
        require("dap").toggle_breakpoint()
 | 
			
		||||
      end,
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>dc",
 | 
			
		||||
      function()
 | 
			
		||||
        require("dap").continue()
 | 
			
		||||
      end,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  config = function()
 | 
			
		||||
    require("dapui").setup()
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-lspconfig",
 | 
			
		||||
  opts = {
 | 
			
		||||
    inlay_hints = { enabled = false },
 | 
			
		||||
    diagnostics = {
 | 
			
		||||
      virtual_text = true,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
@@ -1,266 +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 the "plugins" directory 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 = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", 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
 | 
			
		||||
      {
 | 
			
		||||
        "<leader>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", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
 | 
			
		||||
          vim.keymap.set("n", "<leader>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<string, fun(server:string, opts:_.lspconfig.options):boolean?>
 | 
			
		||||
      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",
 | 
			
		||||
        "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)
 | 
			
		||||
      -- add tsx and treesitter
 | 
			
		||||
      vim.list_extend(opts.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 packages, and 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 <tab> for completion and snippets (supertab)
 | 
			
		||||
  -- first: disable default <tab> and <s-tab> 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, {
 | 
			
		||||
        ["<Tab>"] = 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()
 | 
			
		||||
            -- this 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" }),
 | 
			
		||||
        ["<S-Tab>"] = 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,
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								nvim/lua/plugins/flash.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								nvim/lua/plugins/flash.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
return {
 | 
			
		||||
  "folke/flash.nvim",
 | 
			
		||||
  event = "VeryLazy",
 | 
			
		||||
  ---@type Flash.Config
 | 
			
		||||
  opts = {},
 | 
			
		||||
  -- stylua: ignore
 | 
			
		||||
  keys = {
 | 
			
		||||
    { "s",     mode = { "n", "x", "o" }, function() require("flash").jump() end,              desc = "Flash" },
 | 
			
		||||
    { "S",     mode = { "n", "x", "o" }, function() require("flash").treesitter() end,        desc = "Flash Treesitter" },
 | 
			
		||||
    { "r",     mode = "o",               function() require("flash").remote() end,            desc = "Remote Flash" },
 | 
			
		||||
    { "R",     mode = { "o", "x" },      function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
 | 
			
		||||
    { "<c-s>", mode = { "c" },           function() require("flash").toggle() end,            desc = "Toggle Flash Search" },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  "tpope/vim-fugitive",
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								nvim/lua/plugins/fzflua.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								nvim/lua/plugins/fzflua.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
return {
 | 
			
		||||
  "ibhagwan/fzf-lua",
 | 
			
		||||
  dependencies = { "echasnovski/mini.icons" },
 | 
			
		||||
  opts = {
 | 
			
		||||
    winopts={
 | 
			
		||||
      height = 0.85,
 | 
			
		||||
      width = 0.95,
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  keys = {
 | 
			
		||||
    { "<leader>ff", function() require('fzf-lua').files() end, desc="Find Files in current dir"},
 | 
			
		||||
    { "<leader>fb", function() require('fzf-lua').buffers() end, desc="Find open buffers"},
 | 
			
		||||
    { "<leader><leader>", function() require('fzf-lua').buffers() end, desc="Find open buffers"},
 | 
			
		||||
    { "<leader>fgf", function() require('fzf-lua').git_files() end, desc="Find git files"},
 | 
			
		||||
    { "<leader>fgb", function() require('fzf-lua').git_branches() end, desc="Find git branches"},
 | 
			
		||||
    { "<leader>fB", function() require('fzf-lua').builtin() end, desc="Find builtin finders"},
 | 
			
		||||
    { "<leader>fr", function() require('fzf-lua').resume() end, desc="Resume last search"},
 | 
			
		||||
    { "<leader>fG", function() require('fzf-lua').live_grep() end, desc="Grep files live"},
 | 
			
		||||
    { "<leader>fw", function() require('fzf-lua').grep_cword() end, desc="Grep current word"},
 | 
			
		||||
    { "<leader>fW", function() require('fzf-lua').grep_cWORD() end, desc="Grep current WORD"},
 | 
			
		||||
    { "<leader>/", function() require('fzf-lua').lgrep_curbuf() end, desc="Grep current buffer"},
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								nvim/lua/plugins/git-blame.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								nvim/lua/plugins/git-blame.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
return {
 | 
			
		||||
  "f-person/git-blame.nvim",
 | 
			
		||||
  -- load the plugin at startup
 | 
			
		||||
  event = "VeryLazy",
 | 
			
		||||
  -- Because of the keys part, you will be lazy loading this plugin.
 | 
			
		||||
  -- The plugin will only load once one of the keys is used.
 | 
			
		||||
  -- If you want to load the plugin at startup, add something like event = "VeryLazy",
 | 
			
		||||
  -- or lazy = false. One of both options will work.
 | 
			
		||||
  keys= {
 | 
			
		||||
 | 
			
		||||
    { "<leader>gb", "<Cmd>GitBlameToggle<CR>", desc = "Toggle Git Blame Line" },
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    -- your configuration comes here
 | 
			
		||||
    -- for example
 | 
			
		||||
    enabled = false, -- if you want to enable the plugin
 | 
			
		||||
    message_template = " <summary> • <date> • <author> • <<sha>>", -- template for the blame message, check the Message template section for more options
 | 
			
		||||
    date_format = "%Y-%m-%d", -- template for the date, check Date format section for more options
 | 
			
		||||
    virtual_text_column = 1, -- virtual text start column, check Start virtual text at column section for more options
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								nvim/lua/plugins/git-signs.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								nvim/lua/plugins/git-signs.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
return {
 | 
			
		||||
  "lewis6991/gitsigns.nvim",
 | 
			
		||||
  opts = {
 | 
			
		||||
    signs = {
 | 
			
		||||
      add = { text = "+" },
 | 
			
		||||
      change = { text = "~" },
 | 
			
		||||
      delete = { text = "_" },
 | 
			
		||||
      topdelete = { text = "‾" },
 | 
			
		||||
      changedelete = { text = "~" },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								nvim/lua/plugins/jsontotypes.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								nvim/lua/plugins/jsontotypes.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
return {
 | 
			
		||||
  "Redoxahmii/json-to-types.nvim",
 | 
			
		||||
  build = "sh install.sh npm", -- Replace `npm` with your preferred package manager (e.g., yarn, pnpm).
 | 
			
		||||
  ft = "json",
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>cU",
 | 
			
		||||
      "<CMD>ConvertJSONtoLang typescript<CR>",
 | 
			
		||||
      desc = "Convert JSON to TS",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>ct",
 | 
			
		||||
      "<CMD>ConvertJSONtoLangBuffer typescript<CR>",
 | 
			
		||||
      desc = "Convert JSON to TS Buffer",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								nvim/lua/plugins/kanagawa.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								nvim/lua/plugins/kanagawa.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
return {
 | 
			
		||||
  "rebelot/kanagawa.nvim", 
 | 
			
		||||
  config = function()
 | 
			
		||||
    require('kanagawa').setup({
 | 
			
		||||
      compile=true,
 | 
			
		||||
      transparent=true,
 | 
			
		||||
      background = {
 | 
			
		||||
        dark = "wave",
 | 
			
		||||
        light = "lotus"
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
    vim.cmd("colorscheme kanagawa");
 | 
			
		||||
  end,
 | 
			
		||||
  build = function()
 | 
			
		||||
    vim.cmd("KanagawaCompile");
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								nvim/lua/plugins/lazydev.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								nvim/lua/plugins/lazydev.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
return {
 | 
			
		||||
  -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
 | 
			
		||||
  -- used for completion, annotations and signatures of Neovim apis
 | 
			
		||||
  'folke/lazydev.nvim',
 | 
			
		||||
  ft = 'lua',
 | 
			
		||||
  opts = {
 | 
			
		||||
    library = {
 | 
			
		||||
      -- Load luvit types when the `vim.uv` word is found
 | 
			
		||||
      { path = '${3rd}/luv/library', words = { 'vim%.uv' } },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										272
									
								
								nvim/lua/plugins/lsp.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										272
									
								
								nvim/lua/plugins/lsp.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,272 @@
 | 
			
		||||
return {
 | 
			
		||||
  "neovim/nvim-lspconfig",
 | 
			
		||||
  dependencies = {
 | 
			
		||||
    { "williamboman/mason.nvim", opts = {} },
 | 
			
		||||
    "williamboman/mason-lspconfig.nvim",
 | 
			
		||||
    "WhoIsSethDaniel/mason-tool-installer.nvim",
 | 
			
		||||
    "yioneko/nvim-vtsls",
 | 
			
		||||
    opts = {
 | 
			
		||||
      settings = {
 | 
			
		||||
        typescript = {
 | 
			
		||||
          inlayHints = {
 | 
			
		||||
            parameterNames = { enabled = "literals" },
 | 
			
		||||
            parameterTypes = { enabled = true },
 | 
			
		||||
            variableTypes = { enabled = true },
 | 
			
		||||
            propertyDeclarationTypes = { enabled = true },
 | 
			
		||||
            functionLikeReturnTypes = { enabled = true },
 | 
			
		||||
            enumMemberValues = { enabled = true },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    { "j-hui/fidget.nvim",       opts = {} },
 | 
			
		||||
 | 
			
		||||
    "saghen/blink.cmp",
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    inlay_hints = { enabled = true },
 | 
			
		||||
    diagnostics = { virtual_text = true },
 | 
			
		||||
  },
 | 
			
		||||
  config = function()
 | 
			
		||||
    inlay_hints = { enabled = true }
 | 
			
		||||
    diagnostics = { virtual_text = true }
 | 
			
		||||
    vim.api.nvim_create_autocmd("LspAttach", {
 | 
			
		||||
      group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }),
 | 
			
		||||
      callback = function(event)
 | 
			
		||||
        local map = function(keys, func, desc, mode)
 | 
			
		||||
          mode = mode or "n"
 | 
			
		||||
          vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = "LSP: " .. desc })
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        -- Rename the variable under your cursor.
 | 
			
		||||
        map("<leader>cr", vim.lsp.buf.rename, "([C]ode) [R]ename")
 | 
			
		||||
 | 
			
		||||
        -- Execute a code action, usually your cursor needs to be on top of an error
 | 
			
		||||
        -- or a suggestion from your LSP for this to activate.
 | 
			
		||||
        map("<leader>ca", require("fzf-lua").lsp_code_actions, "[G]oto Code [A]ction", { "n", "x" })
 | 
			
		||||
        map("<leader>cd", vim.diagnostic.open_float, "[C]ode [D]iagnostics in float")
 | 
			
		||||
        map("<leader>gwd", require("fzf-lua").diagnostics_workspace, "[G]o [W]orkspace [D]iagnostics")
 | 
			
		||||
 | 
			
		||||
        -- Find references for the word under your cursor.
 | 
			
		||||
        map("gr", require("fzf-lua").lsp_references, "[G]oto [R]eferences")
 | 
			
		||||
 | 
			
		||||
        -- Jump to the implementation of the word under your cursor.
 | 
			
		||||
        map("<leader>gi", require("fzf-lua").lsp_implementations, "[G]oto [I]mplementation")
 | 
			
		||||
 | 
			
		||||
        -- Jump to the definition of the word under your cursor.
 | 
			
		||||
        --  This is where a variable was first declared, or where a function is defined, etc.
 | 
			
		||||
        --  To jump back, press <C-t>.
 | 
			
		||||
        map("gd", require("fzf-lua").lsp_definitions, "[G]oto [D]efinition")
 | 
			
		||||
 | 
			
		||||
        -- WARN: This is not Goto Definition, this is Goto Declaration.
 | 
			
		||||
        --  For example, in C this would take you to the header.
 | 
			
		||||
        map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
 | 
			
		||||
 | 
			
		||||
        -- Fuzzy find all the symbols in your current document.
 | 
			
		||||
        map("<leader>gO", require("fzf-lua").lsp_document_symbols, "Open Document Symbols")
 | 
			
		||||
 | 
			
		||||
        -- Fuzzy find all the symbols in your current workspace.
 | 
			
		||||
        map("<leader>gW", require("fzf-lua").lsp_live_workspace_symbols, "Open Workspace Symbols")
 | 
			
		||||
 | 
			
		||||
        -- Jump to the type of the word under your cursor.
 | 
			
		||||
        map("<leader>gT", require("fzf-lua").lsp_typedefs, "[G]oto [T]ype Definition")
 | 
			
		||||
 | 
			
		||||
        -- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)
 | 
			
		||||
        ---@param client vim.lsp.Client
 | 
			
		||||
        ---@param method vim.lsp.protocol.Method
 | 
			
		||||
        ---@param bufnr? integer some lsp support methods only in specific files
 | 
			
		||||
        ---@return boolean
 | 
			
		||||
        local function client_supports_method(client, method, bufnr)
 | 
			
		||||
          if vim.fn.has("nvim-0.11") == 1 then
 | 
			
		||||
            return client:supports_method(method, bufnr)
 | 
			
		||||
          else
 | 
			
		||||
            return client.supports_method(method, { bufnr = bufnr })
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        local client = vim.lsp.get_client_by_id(event.data.client_id)
 | 
			
		||||
        if
 | 
			
		||||
            client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf)
 | 
			
		||||
        then
 | 
			
		||||
          local highlight_augroup = vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false })
 | 
			
		||||
          vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
 | 
			
		||||
            buffer = event.buf,
 | 
			
		||||
            group = highlight_augroup,
 | 
			
		||||
            callback = vim.lsp.buf.document_highlight,
 | 
			
		||||
          })
 | 
			
		||||
 | 
			
		||||
          vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
 | 
			
		||||
            buffer = event.buf,
 | 
			
		||||
            group = highlight_augroup,
 | 
			
		||||
            callback = vim.lsp.buf.clear_references,
 | 
			
		||||
          })
 | 
			
		||||
 | 
			
		||||
          vim.api.nvim_create_autocmd("LspDetach", {
 | 
			
		||||
            group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }),
 | 
			
		||||
            callback = function(event2)
 | 
			
		||||
              vim.lsp.buf.clear_references()
 | 
			
		||||
              vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf })
 | 
			
		||||
            end,
 | 
			
		||||
          })
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then
 | 
			
		||||
          map("<leader>th", function()
 | 
			
		||||
            vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf }))
 | 
			
		||||
          end, "[T]oggle Inlay [H]ints")
 | 
			
		||||
        end
 | 
			
		||||
      end,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    -- Diagnostic Config
 | 
			
		||||
    -- See :help vim.diagnostic.Opts
 | 
			
		||||
    vim.diagnostic.config({
 | 
			
		||||
      severity_sort = true,
 | 
			
		||||
      float = { border = "rounded", source = "if_many" },
 | 
			
		||||
      underline = { severity = vim.diagnostic.severity.ERROR },
 | 
			
		||||
      signs = {
 | 
			
		||||
        text = {
 | 
			
		||||
          [vim.diagnostic.severity.ERROR] = " ",
 | 
			
		||||
          [vim.diagnostic.severity.WARN] = " ",
 | 
			
		||||
          [vim.diagnostic.severity.INFO] = " ",
 | 
			
		||||
          [vim.diagnostic.severity.HINT] = " ",
 | 
			
		||||
        },
 | 
			
		||||
      } or {},
 | 
			
		||||
      virtual_text = {
 | 
			
		||||
        source = "if_many",
 | 
			
		||||
        spacing = 2,
 | 
			
		||||
        format = function(diagnostic)
 | 
			
		||||
          local diagnostic_message = {
 | 
			
		||||
            [vim.diagnostic.severity.ERROR] = diagnostic.message,
 | 
			
		||||
            [vim.diagnostic.severity.WARN] = diagnostic.message,
 | 
			
		||||
            [vim.diagnostic.severity.INFO] = diagnostic.message,
 | 
			
		||||
            [vim.diagnostic.severity.HINT] = diagnostic.message,
 | 
			
		||||
          }
 | 
			
		||||
          return diagnostic_message[diagnostic.severity]
 | 
			
		||||
        end,
 | 
			
		||||
      },
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    -- LSP servers and clients are able to communicate to each other what features they support.
 | 
			
		||||
    --  By default, Neovim doesn't support everything that is in the LSP specification.
 | 
			
		||||
    --  When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
 | 
			
		||||
    --  So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
 | 
			
		||||
    local capabilities = require("blink.cmp").get_lsp_capabilities()
 | 
			
		||||
 | 
			
		||||
    -- Enable the following language servers
 | 
			
		||||
    --  Feel free to add/remove any LSPs that you want here. They will automatically be installed.
 | 
			
		||||
    --
 | 
			
		||||
    --  Add any additional override configuration in the following tables. Available keys are:
 | 
			
		||||
    --  - cmd (table): Override the default command used to start the server
 | 
			
		||||
    --  - filetypes (table): Override the default list of associated filetypes for the server
 | 
			
		||||
    --  - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
 | 
			
		||||
    --  - settings (table): Override the default settings passed when initializing the server.
 | 
			
		||||
    --        For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
 | 
			
		||||
    local servers = {
 | 
			
		||||
      -- clangd = {},
 | 
			
		||||
      -- gopls = {},
 | 
			
		||||
      -- pyright = {},
 | 
			
		||||
      -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
 | 
			
		||||
      --
 | 
			
		||||
      -- Some languages (like typescript) have entire language plugins that can be useful:
 | 
			
		||||
      --    https://github.com/pmizio/typescript-tools.nvim
 | 
			
		||||
      --
 | 
			
		||||
      -- But for many setups, the LSP (`ts_ls`) will work just fine
 | 
			
		||||
      -- ts_ls = {},
 | 
			
		||||
      --
 | 
			
		||||
 | 
			
		||||
      rust_analyzer = {},
 | 
			
		||||
      vtsls = {
 | 
			
		||||
        -- explicitly add default filetypes, so that we can extend
 | 
			
		||||
        -- them in related extras
 | 
			
		||||
        filetypes = {
 | 
			
		||||
          "javascript",
 | 
			
		||||
          "javascriptreact",
 | 
			
		||||
          "javascript.jsx",
 | 
			
		||||
          "typescript",
 | 
			
		||||
          "typescriptreact",
 | 
			
		||||
          "typescript.tsx",
 | 
			
		||||
        },
 | 
			
		||||
        settings = {
 | 
			
		||||
          typescript = {
 | 
			
		||||
            updateImportsOnFileMove = { enabled = "always" },
 | 
			
		||||
            inlayHints = {
 | 
			
		||||
              parameterNames = { enabled = "literals" },
 | 
			
		||||
              parameterTypes = { enabled = true },
 | 
			
		||||
              variableTypes = { enabled = true },
 | 
			
		||||
              propertyDeclarationTypes = { enabled = true },
 | 
			
		||||
              functionLikeReturnTypes = { enabled = true },
 | 
			
		||||
              enumMemberValues = { enabled = true },
 | 
			
		||||
            },
 | 
			
		||||
            suggest = {
 | 
			
		||||
              completeFunctionCalls = true,
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      bashls = {},
 | 
			
		||||
      prismals = {},
 | 
			
		||||
      gopls = {},
 | 
			
		||||
      jsonls = {},
 | 
			
		||||
      helm_ls = {},
 | 
			
		||||
      yamlls = function()
 | 
			
		||||
        vim.lsp.on_attach(function(client, buffer)
 | 
			
		||||
          if vim.bo[buffer].filetype == "helm" then
 | 
			
		||||
            vim.schedule(function()
 | 
			
		||||
              vim.cmd("LspStop ++force yamlls")
 | 
			
		||||
            end)
 | 
			
		||||
          end
 | 
			
		||||
        end)
 | 
			
		||||
      end,
 | 
			
		||||
      eslint = {
 | 
			
		||||
        vim.api.nvim_create_autocmd("BufWritePre", {
 | 
			
		||||
          callback = function()
 | 
			
		||||
            vim.lsp.buf.format()
 | 
			
		||||
          end,
 | 
			
		||||
        }),
 | 
			
		||||
      },
 | 
			
		||||
      lua_ls = {
 | 
			
		||||
        -- cmd = { ... },
 | 
			
		||||
        -- filetypes = { ... },
 | 
			
		||||
        -- capabilities = {},
 | 
			
		||||
        settings = {
 | 
			
		||||
          Lua = {
 | 
			
		||||
            completion = {
 | 
			
		||||
              callSnippet = "Replace",
 | 
			
		||||
            },
 | 
			
		||||
            -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
 | 
			
		||||
            -- diagnostics = { disable = { 'missing-fields' } },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    local ensure_installed = vim.tbl_keys(servers or {})
 | 
			
		||||
    vim.list_extend(ensure_installed, {
 | 
			
		||||
      "stylua", -- Used to format Lua code
 | 
			
		||||
      "prettierd",
 | 
			
		||||
      "codelldb",
 | 
			
		||||
      "gitlab_ci_ls",
 | 
			
		||||
      "js-debug-adapter",
 | 
			
		||||
      "shfmt",
 | 
			
		||||
    })
 | 
			
		||||
    require("mason-tool-installer").setup({ ensure_installed = ensure_installed })
 | 
			
		||||
 | 
			
		||||
    require("mason-lspconfig").setup({
 | 
			
		||||
      ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
 | 
			
		||||
      automatic_installation = false,
 | 
			
		||||
      automatic_enable = true,
 | 
			
		||||
      handlers = {
 | 
			
		||||
        function(server_name)
 | 
			
		||||
          local server = servers[server_name] or {}
 | 
			
		||||
          -- This handles overriding only values explicitly passed
 | 
			
		||||
          -- by the server configuration above. Useful when disabling
 | 
			
		||||
          -- certain features of an LSP (for example, turning off formatting for ts_ls)
 | 
			
		||||
          server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {})
 | 
			
		||||
          require("lspconfig")[server_name].setup(server)
 | 
			
		||||
        end,
 | 
			
		||||
      },
 | 
			
		||||
    })
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								nvim/lua/plugins/mini.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								nvim/lua/plugins/mini.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
return {
 | 
			
		||||
  "echasnovski/mini.nvim",
 | 
			
		||||
  version = "*",
 | 
			
		||||
  config = function()
 | 
			
		||||
    require("mini.pairs").setup({})
 | 
			
		||||
    require("mini.surround").setup({
 | 
			
		||||
      mappings = {
 | 
			
		||||
        add = "gza", -- Add surrounding in Normal and Visual modes
 | 
			
		||||
        delete = "gzd", -- Delete surrounding
 | 
			
		||||
        find = "gzf", -- Find surrounding (to the right)
 | 
			
		||||
        find_left = "gzF", -- Find surrounding (to the left)
 | 
			
		||||
        highlight = "gzh", -- Highlight surrounding
 | 
			
		||||
        replace = "gzr", -- Replace surrounding
 | 
			
		||||
        update_n_lines = "gzn", -- Update `n_lines`
 | 
			
		||||
 | 
			
		||||
        suffix_last = "l", -- Suffix to search with "prev" method
 | 
			
		||||
        suffix_next = "n", -- Suffix to search with "next" method
 | 
			
		||||
      },
 | 
			
		||||
    })
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  { "nvim-neotest/neotest-jest" },
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-neotest/neotest",
 | 
			
		||||
    opts = function(_, opts)
 | 
			
		||||
      table.insert(
 | 
			
		||||
        opts.adapters,
 | 
			
		||||
        require("neotest-jest")({
 | 
			
		||||
          jestCommand = "npm test --",
 | 
			
		||||
          jestConfig = "jest.config.js",
 | 
			
		||||
          env = { CI = true },
 | 
			
		||||
          cwd = function()
 | 
			
		||||
            return vim.fn.getcwd()
 | 
			
		||||
          end,
 | 
			
		||||
        })
 | 
			
		||||
      )
 | 
			
		||||
    end,
 | 
			
		||||
    keys = {
 | 
			
		||||
      {
 | 
			
		||||
        "<leader>tw",
 | 
			
		||||
        "<cmd>lua require('neotest').run.run({ jestCommand = 'jest --watch ' })<cr>",
 | 
			
		||||
        desc = "Jest Watch",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  { "rouge8/neotest-rust" },
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-neotest/neotest",
 | 
			
		||||
    opts = function(_, opts)
 | 
			
		||||
      table.insert(
 | 
			
		||||
        opts.adapters,
 | 
			
		||||
        require("neotest-rust")({
 | 
			
		||||
          args = { "--no-capture" },
 | 
			
		||||
        })
 | 
			
		||||
      )
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
@@ -1,15 +1,384 @@
 | 
			
		||||
return {
 | 
			
		||||
  {
 | 
			
		||||
    "antosha417/nvim-lsp-file-operations",
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      "nvim-lua/plenary.nvim",
 | 
			
		||||
      "nvim-neo-tree/neo-tree.nvim",
 | 
			
		||||
  opts = {
 | 
			
		||||
    require("neo-tree").setup({
 | 
			
		||||
      window = {
 | 
			
		||||
        mappings = {
 | 
			
		||||
          ["P"] = function(state)
 | 
			
		||||
            local node = state.tree:get_node()
 | 
			
		||||
            require("neo-tree.ui.renderer").focus_node(state, node:get_parent_id())
 | 
			
		||||
    },
 | 
			
		||||
    config = function()
 | 
			
		||||
      require("lsp-file-operations").setup()
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "nvim-neo-tree/neo-tree.nvim",
 | 
			
		||||
    branch = "v3.x",
 | 
			
		||||
    dependencies = {
 | 
			
		||||
      "nvim-lua/plenary.nvim",
 | 
			
		||||
      "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
 | 
			
		||||
      "MunifTanjim/nui.nvim",
 | 
			
		||||
      -- {"3rd/image.nvim", opts = {}}, -- Optional image support in preview window: See `# Preview Mode` for more information
 | 
			
		||||
      {
 | 
			
		||||
        "s1n7ax/nvim-window-picker", -- for open_with_window_picker keymaps
 | 
			
		||||
        version = "2.*",
 | 
			
		||||
        config = function()
 | 
			
		||||
          require("window-picker").setup({
 | 
			
		||||
            filter_rules = {
 | 
			
		||||
              include_current_win = false,
 | 
			
		||||
              autoselect_one = true,
 | 
			
		||||
              -- filter using buffer options
 | 
			
		||||
              bo = {
 | 
			
		||||
                -- if the file type is one of following, the window will be ignored
 | 
			
		||||
                filetype = { "neo-tree", "neo-tree-popup", "notify" },
 | 
			
		||||
                -- if the buffer type is one of following, the window will be ignored
 | 
			
		||||
                buftype = { "terminal", "quickfix" },
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
          })
 | 
			
		||||
        end,
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    }),
 | 
			
		||||
    lazy = false,
 | 
			
		||||
    -----Instead of using `config`, you can use `opts` instead, if you'd like:
 | 
			
		||||
    -----@module "neo-tree"
 | 
			
		||||
    -----@type neotree.Config
 | 
			
		||||
    --opts = {},
 | 
			
		||||
    config = function()
 | 
			
		||||
      -- If you want icons for diagnostic errors, you'll need to define them somewhere.
 | 
			
		||||
      -- In Neovim v0.10+, you can configure them in vim.diagnostic.config(), like:
 | 
			
		||||
      --
 | 
			
		||||
      vim.diagnostic.config({
 | 
			
		||||
        signs = {
 | 
			
		||||
          text = {
 | 
			
		||||
            [vim.diagnostic.severity.ERROR] = "",
 | 
			
		||||
            [vim.diagnostic.severity.WARN] = "",
 | 
			
		||||
            [vim.diagnostic.severity.INFO] = "",
 | 
			
		||||
            [vim.diagnostic.severity.HINT] = "",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      })
 | 
			
		||||
      --
 | 
			
		||||
      -- In older versions, you can define the signs manually:
 | 
			
		||||
      -- vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticSignError" })
 | 
			
		||||
      -- vim.fn.sign_define("DiagnosticSignWarn", { text = " ", texthl = "DiagnosticSignWarn" })
 | 
			
		||||
      -- vim.fn.sign_define("DiagnosticSignInfo", { text = " ", texthl = "DiagnosticSignInfo" })
 | 
			
		||||
      -- vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
 | 
			
		||||
 | 
			
		||||
      require("neo-tree").setup({
 | 
			
		||||
        close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab
 | 
			
		||||
        popup_border_style = "NC",    -- or "" to use 'winborder' on Neovim v0.11+
 | 
			
		||||
        enable_git_status = true,
 | 
			
		||||
        enable_diagnostics = true,
 | 
			
		||||
        open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes
 | 
			
		||||
        open_files_using_relative_paths = false,
 | 
			
		||||
        sort_case_insensitive = false,                                     -- used when sorting files and directories in the tree
 | 
			
		||||
        sort_function = nil,                                               -- use a custom function for sorting files and directories in the tree
 | 
			
		||||
        -- sort_function = function (a,b)
 | 
			
		||||
        --       if a.type == b.type then
 | 
			
		||||
        --           return a.path > b.path
 | 
			
		||||
        --       else
 | 
			
		||||
        --           return a.type > b.type
 | 
			
		||||
        --       end
 | 
			
		||||
        --   end , -- this sorts files and directories descendantly
 | 
			
		||||
        default_component_configs = {
 | 
			
		||||
          container = {
 | 
			
		||||
            enable_character_fade = true,
 | 
			
		||||
          },
 | 
			
		||||
          indent = {
 | 
			
		||||
            indent_size = 2,
 | 
			
		||||
            padding = 1, -- extra padding on left hand side
 | 
			
		||||
            -- indent guides
 | 
			
		||||
            with_markers = true,
 | 
			
		||||
            indent_marker = "│",
 | 
			
		||||
            last_indent_marker = "└",
 | 
			
		||||
            highlight = "NeoTreeIndentMarker",
 | 
			
		||||
            -- expander config, needed for nesting files
 | 
			
		||||
            with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders
 | 
			
		||||
            expander_collapsed = "",
 | 
			
		||||
            expander_expanded = "",
 | 
			
		||||
            expander_highlight = "NeoTreeExpander",
 | 
			
		||||
          },
 | 
			
		||||
          icon = {
 | 
			
		||||
            folder_closed = "",
 | 
			
		||||
            folder_open = "",
 | 
			
		||||
            folder_empty = "",
 | 
			
		||||
            provider = function(icon, node, state) -- default icon provider utilizes nvim-web-devicons if available
 | 
			
		||||
              if node.type == "file" or node.type == "terminal" then
 | 
			
		||||
                local success, web_devicons = pcall(require, "nvim-web-devicons")
 | 
			
		||||
                local name = node.type == "terminal" and "terminal" or node.name
 | 
			
		||||
                if success then
 | 
			
		||||
                  local devicon, hl = web_devicons.get_icon(name)
 | 
			
		||||
                  icon.text = devicon or icon.text
 | 
			
		||||
                  icon.highlight = hl or icon.highlight
 | 
			
		||||
                end
 | 
			
		||||
              end
 | 
			
		||||
            end,
 | 
			
		||||
            -- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there
 | 
			
		||||
            -- then these will never be used.
 | 
			
		||||
            default = "*",
 | 
			
		||||
            highlight = "NeoTreeFileIcon",
 | 
			
		||||
          },
 | 
			
		||||
          modified = {
 | 
			
		||||
            symbol = "[+]",
 | 
			
		||||
            highlight = "NeoTreeModified",
 | 
			
		||||
          },
 | 
			
		||||
          name = {
 | 
			
		||||
            trailing_slash = false,
 | 
			
		||||
            use_git_status_colors = true,
 | 
			
		||||
            highlight = "NeoTreeFileName",
 | 
			
		||||
          },
 | 
			
		||||
          git_status = {
 | 
			
		||||
            symbols = {
 | 
			
		||||
              -- Change type
 | 
			
		||||
              added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name
 | 
			
		||||
              modified = "", -- or "", but this is redundant info if you use git_status_colors on the name
 | 
			
		||||
              deleted = "✖", -- this can only be used in the git_status source
 | 
			
		||||
              renamed = "", -- this can only be used in the git_status source
 | 
			
		||||
              -- Status type
 | 
			
		||||
              untracked = "",
 | 
			
		||||
              ignored = "",
 | 
			
		||||
              unstaged = "",
 | 
			
		||||
              staged = "",
 | 
			
		||||
              conflict = "",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          -- If you don't want to use these columns, you can set `enabled = false` for each of them individually
 | 
			
		||||
          file_size = {
 | 
			
		||||
            enabled = true,
 | 
			
		||||
            width = 12,          -- width of the column
 | 
			
		||||
            required_width = 64, -- min width of window required to show this column
 | 
			
		||||
          },
 | 
			
		||||
          type = {
 | 
			
		||||
            enabled = true,
 | 
			
		||||
            width = 10,           -- width of the column
 | 
			
		||||
            required_width = 122, -- min width of window required to show this column
 | 
			
		||||
          },
 | 
			
		||||
          last_modified = {
 | 
			
		||||
            enabled = true,
 | 
			
		||||
            width = 20,          -- width of the column
 | 
			
		||||
            required_width = 88, -- min width of window required to show this column
 | 
			
		||||
          },
 | 
			
		||||
          created = {
 | 
			
		||||
            enabled = true,
 | 
			
		||||
            width = 20,           -- width of the column
 | 
			
		||||
            required_width = 110, -- min width of window required to show this column
 | 
			
		||||
          },
 | 
			
		||||
          symlink_target = {
 | 
			
		||||
            enabled = false,
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        -- A list of functions, each representing a global custom command
 | 
			
		||||
        -- that will be available in all sources (if not overridden in `opts[source_name].commands`)
 | 
			
		||||
        -- see `:h neo-tree-custom-commands-global`
 | 
			
		||||
        commands = {},
 | 
			
		||||
        window = {
 | 
			
		||||
          position = "left",
 | 
			
		||||
          width = 40,
 | 
			
		||||
          mapping_options = {
 | 
			
		||||
            noremap = true,
 | 
			
		||||
            nowait = true,
 | 
			
		||||
          },
 | 
			
		||||
          mappings = {
 | 
			
		||||
            ["<space>"] = {
 | 
			
		||||
              "toggle_node",
 | 
			
		||||
              nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use
 | 
			
		||||
            },
 | 
			
		||||
            ["<2-LeftMouse>"] = "open",
 | 
			
		||||
            ["<cr>"] = "open",
 | 
			
		||||
            ["<esc>"] = "cancel", -- close preview or floating neo-tree window
 | 
			
		||||
            ["P"] = { "toggle_preview", config = { use_float = true, use_image_nvim = true } },
 | 
			
		||||
            -- Read `# Preview Mode` for more information
 | 
			
		||||
            ["l"] = "focus_preview",
 | 
			
		||||
            ["S"] = "open_split",
 | 
			
		||||
            ["s"] = "open_vsplit",
 | 
			
		||||
            -- ["S"] = "split_with_window_picker",
 | 
			
		||||
            -- ["s"] = "vsplit_with_window_picker",
 | 
			
		||||
            ["t"] = "open_tabnew",
 | 
			
		||||
            -- ["<cr>"] = "open_drop",
 | 
			
		||||
            -- ["t"] = "open_tab_drop",
 | 
			
		||||
            ["w"] = "open_with_window_picker",
 | 
			
		||||
            --["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing
 | 
			
		||||
            ["C"] = "close_node",
 | 
			
		||||
            -- ['C'] = 'close_all_subnodes',
 | 
			
		||||
            ["z"] = "close_all_nodes",
 | 
			
		||||
            --["Z"] = "expand_all_nodes",
 | 
			
		||||
            --["Z"] = "expand_all_subnodes",
 | 
			
		||||
            ["a"] = {
 | 
			
		||||
              "add",
 | 
			
		||||
              -- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details
 | 
			
		||||
              -- some commands may take optional config options, see `:h neo-tree-mappings` for details
 | 
			
		||||
              config = {
 | 
			
		||||
                show_path = "none", -- "none", "relative", "absolute"
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
            ["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion.
 | 
			
		||||
            ["d"] = "delete",
 | 
			
		||||
            ["r"] = "rename",
 | 
			
		||||
            ["b"] = "rename_basename",
 | 
			
		||||
            ["y"] = "copy_to_clipboard",
 | 
			
		||||
            ["x"] = "cut_to_clipboard",
 | 
			
		||||
            ["p"] = "paste_from_clipboard",
 | 
			
		||||
            ["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add":
 | 
			
		||||
            -- ["c"] = {
 | 
			
		||||
            --  "copy",
 | 
			
		||||
            --  config = {
 | 
			
		||||
            --    show_path = "none" -- "none", "relative", "absolute"
 | 
			
		||||
            --  }
 | 
			
		||||
            --}
 | 
			
		||||
            ["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add".
 | 
			
		||||
            ["q"] = "close_window",
 | 
			
		||||
            ["R"] = "refresh",
 | 
			
		||||
            ["?"] = "show_help",
 | 
			
		||||
            ["<"] = "prev_source",
 | 
			
		||||
            [">"] = "next_source",
 | 
			
		||||
            ["i"] = "show_file_details",
 | 
			
		||||
            -- ["i"] = {
 | 
			
		||||
            --   "show_file_details",
 | 
			
		||||
            --   -- format strings of the timestamps shown for date created and last modified (see `:h os.date()`)
 | 
			
		||||
            --   -- both options accept a string or a function that takes in the date in seconds and returns a string to display
 | 
			
		||||
            --   -- config = {
 | 
			
		||||
            --   --   created_format = "%Y-%m-%d %I:%M %p",
 | 
			
		||||
            --   --   modified_format = "relative", -- equivalent to the line below
 | 
			
		||||
            --   --   modified_format = function(seconds) return require('neo-tree.utils').relative_date(seconds) end
 | 
			
		||||
            --   -- }
 | 
			
		||||
            -- },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        nesting_rules = {},
 | 
			
		||||
        filesystem = {
 | 
			
		||||
          filtered_items = {
 | 
			
		||||
            visible = false, -- when true, they will just be displayed differently than normal items
 | 
			
		||||
            hide_dotfiles = true,
 | 
			
		||||
            hide_gitignored = true,
 | 
			
		||||
            hide_hidden = true, -- only works on Windows for hidden files/directories
 | 
			
		||||
            hide_by_name = {
 | 
			
		||||
              --"node_modules"
 | 
			
		||||
            },
 | 
			
		||||
            hide_by_pattern = { -- uses glob style patterns
 | 
			
		||||
              --"*.meta",
 | 
			
		||||
              --"*/src/*/tsconfig.json",
 | 
			
		||||
            },
 | 
			
		||||
            always_show = { -- remains visible even if other settings would normally hide it
 | 
			
		||||
              --".gitignored",
 | 
			
		||||
            },
 | 
			
		||||
            always_show_by_pattern = { -- uses glob style patterns
 | 
			
		||||
              --".env*",
 | 
			
		||||
            },
 | 
			
		||||
            never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show
 | 
			
		||||
              --".DS_Store",
 | 
			
		||||
              --"thumbs.db"
 | 
			
		||||
            },
 | 
			
		||||
            never_show_by_pattern = { -- uses glob style patterns
 | 
			
		||||
              --".null-ls_*",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          follow_current_file = {
 | 
			
		||||
            enabled = true,                   -- This will find and focus the file in the active buffer every time
 | 
			
		||||
            --               -- the current file is changed while the tree is open.
 | 
			
		||||
            leave_dirs_open = true,           -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
 | 
			
		||||
          },
 | 
			
		||||
          group_empty_dirs = false,           -- when true, empty folders will be grouped together
 | 
			
		||||
          hijack_netrw_behavior = "disabled", -- netrw disabled, opening a directory opens neo-tree
 | 
			
		||||
          -- in whatever position is specified in window.position
 | 
			
		||||
          -- "open_current",  -- netrw disabled, opening a directory opens within the
 | 
			
		||||
          -- window like netrw would, regardless of window.position
 | 
			
		||||
          -- "disabled",    -- netrw left alone, neo-tree does not handle opening dirs
 | 
			
		||||
          use_libuv_file_watcher = true, -- This will use the OS level file watchers to detect changes
 | 
			
		||||
          -- instead of relying on nvim autocmd events.
 | 
			
		||||
          window = {
 | 
			
		||||
            mappings = {
 | 
			
		||||
              ["<bs>"] = "navigate_up",
 | 
			
		||||
              ["."] = "set_root",
 | 
			
		||||
              ["H"] = "toggle_hidden",
 | 
			
		||||
              ["/"] = "fuzzy_finder",
 | 
			
		||||
              ["D"] = "fuzzy_finder_directory",
 | 
			
		||||
              ["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm
 | 
			
		||||
              -- ["D"] = "fuzzy_sorter_directory",
 | 
			
		||||
              ["f"] = "filter_on_submit",
 | 
			
		||||
              ["<c-x>"] = "clear_filter",
 | 
			
		||||
              ["[g"] = "prev_git_modified",
 | 
			
		||||
              ["]g"] = "next_git_modified",
 | 
			
		||||
              ["o"] = {
 | 
			
		||||
                "show_help",
 | 
			
		||||
                nowait = false,
 | 
			
		||||
                config = { title = "Order by", prefix_key = "o" },
 | 
			
		||||
              },
 | 
			
		||||
              ["oc"] = { "order_by_created", nowait = false },
 | 
			
		||||
              ["od"] = { "order_by_diagnostics", nowait = false },
 | 
			
		||||
              ["og"] = { "order_by_git_status", nowait = false },
 | 
			
		||||
              ["om"] = { "order_by_modified", nowait = false },
 | 
			
		||||
              ["on"] = { "order_by_name", nowait = false },
 | 
			
		||||
              ["os"] = { "order_by_size", nowait = false },
 | 
			
		||||
              ["ot"] = { "order_by_type", nowait = false },
 | 
			
		||||
              -- ['<key>'] = function(state) ... end,
 | 
			
		||||
            },
 | 
			
		||||
            fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode
 | 
			
		||||
              ["<down>"] = "move_cursor_down",
 | 
			
		||||
              ["<C-n>"] = "move_cursor_down",
 | 
			
		||||
              ["<up>"] = "move_cursor_up",
 | 
			
		||||
              ["<C-p>"] = "move_cursor_up",
 | 
			
		||||
              ["<esc>"] = "close",
 | 
			
		||||
              -- ['<key>'] = function(state, scroll_padding) ... end,
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
 | 
			
		||||
          commands = {}, -- Add a custom command or override a global one using the same function name
 | 
			
		||||
        },
 | 
			
		||||
        buffers = {
 | 
			
		||||
          follow_current_file = {
 | 
			
		||||
            enabled = true,          -- This will find and focus the file in the active buffer every time
 | 
			
		||||
            --              -- the current file is changed while the tree is open.
 | 
			
		||||
            leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
 | 
			
		||||
          },
 | 
			
		||||
          group_empty_dirs = true,   -- when true, empty folders will be grouped together
 | 
			
		||||
          show_unloaded = true,
 | 
			
		||||
          window = {
 | 
			
		||||
            mappings = {
 | 
			
		||||
              ["d"] = "buffer_delete",
 | 
			
		||||
              ["bd"] = "buffer_delete",
 | 
			
		||||
              ["<bs>"] = "navigate_up",
 | 
			
		||||
              ["."] = "set_root",
 | 
			
		||||
              ["o"] = {
 | 
			
		||||
                "show_help",
 | 
			
		||||
                nowait = false,
 | 
			
		||||
                config = { title = "Order by", prefix_key = "o" },
 | 
			
		||||
              },
 | 
			
		||||
              ["oc"] = { "order_by_created", nowait = false },
 | 
			
		||||
              ["od"] = { "order_by_diagnostics", nowait = false },
 | 
			
		||||
              ["om"] = { "order_by_modified", nowait = false },
 | 
			
		||||
              ["on"] = { "order_by_name", nowait = false },
 | 
			
		||||
              ["os"] = { "order_by_size", nowait = false },
 | 
			
		||||
              ["ot"] = { "order_by_type", nowait = false },
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        git_status = {
 | 
			
		||||
          window = {
 | 
			
		||||
            position = "float",
 | 
			
		||||
            mappings = {
 | 
			
		||||
              ["A"] = "git_add_all",
 | 
			
		||||
              ["gu"] = "git_unstage_file",
 | 
			
		||||
              ["ga"] = "git_add_file",
 | 
			
		||||
              ["gr"] = "git_revert_file",
 | 
			
		||||
              ["gc"] = "git_commit",
 | 
			
		||||
              ["gp"] = "git_push",
 | 
			
		||||
              ["gg"] = "git_commit_and_push",
 | 
			
		||||
              ["o"] = {
 | 
			
		||||
                "show_help",
 | 
			
		||||
                nowait = false,
 | 
			
		||||
                config = { title = "Order by", prefix_key = "o" },
 | 
			
		||||
              },
 | 
			
		||||
              ["oc"] = { "order_by_created", nowait = false },
 | 
			
		||||
              ["od"] = { "order_by_diagnostics", nowait = false },
 | 
			
		||||
              ["om"] = { "order_by_modified", nowait = false },
 | 
			
		||||
              ["on"] = { "order_by_name", nowait = false },
 | 
			
		||||
              ["os"] = { "order_by_size", nowait = false },
 | 
			
		||||
              ["ot"] = { "order_by_type", nowait = false },
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
      vim.keymap.set("n", "<leader>e", "<Cmd>Neotree toggle<CR>")
 | 
			
		||||
    end,
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  "mxsdev/nvim-dap-vscode-js",
 | 
			
		||||
  opts = function()
 | 
			
		||||
    adapters = { "pwa-node", "pwa-chrome", "pwa-msedge", "node-terminal", "pwa-extensionHost" }
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								nvim/lua/plugins/nvim-treesitter-context.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								nvim/lua/plugins/nvim-treesitter-context.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-treesitter/nvim-treesitter-context",
 | 
			
		||||
  opts = { enabled = true },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								nvim/lua/plugins/nvim-treesitter-textobjects.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								nvim/lua/plugins/nvim-treesitter-textobjects.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-treesitter/nvim-treesitter-textobjects",
 | 
			
		||||
  dependencies = {
 | 
			
		||||
    "nvim-treesitter/nvim-treesitter"
 | 
			
		||||
  },
 | 
			
		||||
  init = function()
 | 
			
		||||
    require'nvim-treesitter.configs'.setup {
 | 
			
		||||
      textobjects = {
 | 
			
		||||
        select = {
 | 
			
		||||
          enable = true,
 | 
			
		||||
 | 
			
		||||
          -- Automatically jump forward to textobj, similar to targets.vim
 | 
			
		||||
          lookahead = true,
 | 
			
		||||
 | 
			
		||||
          keymaps = {
 | 
			
		||||
            -- You can use the capture groups defined in textobjects.scm
 | 
			
		||||
            ["af"] = "@function.outer",
 | 
			
		||||
            ["if"] = "@function.inner",
 | 
			
		||||
            ["ac"] = "@class.outer",
 | 
			
		||||
            ["bi"] = "@block.inner",
 | 
			
		||||
            -- You can optionally set descriptions to the mappings (used in the desc parameter of
 | 
			
		||||
            -- nvim_buf_set_keymap) which plugins like which-key display
 | 
			
		||||
            ["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" },
 | 
			
		||||
            -- You can also use captures from other query groups like `locals.scm`
 | 
			
		||||
            ["as"] = { query = "@local.scope", query_group = "locals", desc = "Select language scope" },
 | 
			
		||||
          },
 | 
			
		||||
          -- You can choose the select mode (default is charwise 'v')
 | 
			
		||||
          --
 | 
			
		||||
          -- Can also be a function which gets passed a table with the keys
 | 
			
		||||
          -- * query_string: eg '@function.inner'
 | 
			
		||||
          -- * method: eg 'v' or 'o'
 | 
			
		||||
          -- and should return the mode ('v', 'V', or '<c-v>') or a table
 | 
			
		||||
          -- mapping query_strings to modes.
 | 
			
		||||
          selection_modes = {
 | 
			
		||||
            ['@parameter.outer'] = 'v', -- charwise
 | 
			
		||||
            ['@function.outer'] = 'V', -- linewise
 | 
			
		||||
            ['@class.outer'] = '<c-v>', -- blockwise
 | 
			
		||||
          },
 | 
			
		||||
          -- If you set this to `true` (default is `false`) then any textobject is
 | 
			
		||||
          -- extended to include preceding or succeeding whitespace. Succeeding
 | 
			
		||||
          -- whitespace has priority in order to act similarly to eg the built-in
 | 
			
		||||
          -- `ap`.
 | 
			
		||||
          --
 | 
			
		||||
          -- Can also be a function which gets passed a table with the keys
 | 
			
		||||
          -- * query_string: eg '@function.inner'
 | 
			
		||||
          -- * selection_mode: eg 'v'
 | 
			
		||||
          -- and should return true or false
 | 
			
		||||
          include_surrounding_whitespace = true,
 | 
			
		||||
        },
 | 
			
		||||
        swap = {
 | 
			
		||||
          enable = true,
 | 
			
		||||
          swap_next = {
 | 
			
		||||
            ["<leader>a"] = "@parameter.inner",
 | 
			
		||||
          },
 | 
			
		||||
          swap_previous = {
 | 
			
		||||
            ["<leader>s"] = "@parameter.inner",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,23 @@
 | 
			
		||||
return {
 | 
			
		||||
  "nvim-treesitter/nvim-treesitter",
 | 
			
		||||
  opts = {
 | 
			
		||||
  build = ":TSUpdate",
 | 
			
		||||
  config = function ()
 | 
			
		||||
    local configs = require("nvim-treesitter.configs")
 | 
			
		||||
 | 
			
		||||
    configs.setup({
 | 
			
		||||
      ensure_installed = "all",
 | 
			
		||||
      sync_install = false,
 | 
			
		||||
      highlight = { enable = true },
 | 
			
		||||
      indent = { enable = true },
 | 
			
		||||
      incremental_selection = {
 | 
			
		||||
        enable = true,
 | 
			
		||||
        keymaps = {
 | 
			
		||||
          init_selection = "<Enter>",
 | 
			
		||||
          node_incremental = "<Enter>",
 | 
			
		||||
          scope_incremental = false,
 | 
			
		||||
          node_decremental = "<Backspace>"
 | 
			
		||||
        },
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
  end
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										25
									
								
								nvim/lua/plugins/oil.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								nvim/lua/plugins/oil.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
return {
 | 
			
		||||
  "stevearc/oil.nvim",
 | 
			
		||||
  ---@module 'oil'
 | 
			
		||||
  ---@type oil.SetupOpts
 | 
			
		||||
  opts = {
 | 
			
		||||
    columns = {
 | 
			
		||||
      "icon",
 | 
			
		||||
      "permissions",
 | 
			
		||||
      "size",
 | 
			
		||||
    },
 | 
			
		||||
    watch_for_changes = true,
 | 
			
		||||
    view_options = {
 | 
			
		||||
      -- Show files and directories that start with "."
 | 
			
		||||
      show_hidden = true,
 | 
			
		||||
    },
 | 
			
		||||
    float = {
 | 
			
		||||
      preview_split = "right",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  -- Optional dependencies
 | 
			
		||||
  dependencies = { { "echasnovski/mini.icons", opts = {} } },
 | 
			
		||||
  -- dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons
 | 
			
		||||
  -- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations.
 | 
			
		||||
  lazy = false,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								nvim/lua/plugins/projects.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								nvim/lua/plugins/projects.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
return {
 | 
			
		||||
  "ahmedkhalf/project.nvim",
 | 
			
		||||
  init = function()
 | 
			
		||||
    require("project_nvim").setup {
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								nvim/lua/plugins/rainbow.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								nvim/lua/plugins/rainbow.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
return {
 | 
			
		||||
  "HiPhish/rainbow-delimiters.nvim",
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								nvim/lua/plugins/rustacean.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								nvim/lua/plugins/rustacean.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
return {
 | 
			
		||||
  'mrcjkb/rustaceanvim',
 | 
			
		||||
  version = '^6', -- Recommended
 | 
			
		||||
  lazy = false, -- This plugin is already lazy
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								nvim/lua/plugins/sleuth-vim.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								nvim/lua/plugins/sleuth-vim.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
return {
 | 
			
		||||
	"tpope/vim-sleuth",
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								nvim/lua/plugins/snacks.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								nvim/lua/plugins/snacks.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
return {
 | 
			
		||||
  "folke/snacks.nvim",
 | 
			
		||||
  priority = 1000,
 | 
			
		||||
  lazy = false,
 | 
			
		||||
  ---@type snacks.Config
 | 
			
		||||
  opts = {
 | 
			
		||||
    -- your configuration comes here
 | 
			
		||||
    -- or leave it empty to use the default settings
 | 
			
		||||
    -- refer to the configuration section below
 | 
			
		||||
    animate = { enabled = true, easing = "cubic" },
 | 
			
		||||
    bigfile = { enabled = true },
 | 
			
		||||
    explorer = { enabled = true },
 | 
			
		||||
    indent = { enabled = true, animate = { enabled = false }, scope = { enabled = true }, chunk = { enabled = true } },
 | 
			
		||||
    input = { enabled = true },
 | 
			
		||||
    picker = { enabled = true },
 | 
			
		||||
    notifier = { enabled = true },
 | 
			
		||||
    quickfile = { enabled = true },
 | 
			
		||||
    scope = { enabled = true },
 | 
			
		||||
    scroll = { enabled = true },
 | 
			
		||||
    statuscolumn = { enabled = true },
 | 
			
		||||
    words = { enabled = true },
 | 
			
		||||
  },
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>gg",
 | 
			
		||||
      function()
 | 
			
		||||
        Snacks.lazygit()
 | 
			
		||||
      end,
 | 
			
		||||
      desc = "Lazygit",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  init = function()
 | 
			
		||||
    vim.api.nvim_create_autocmd("User", {
 | 
			
		||||
      pattern = "VeryLazy",
 | 
			
		||||
      callback = function()
 | 
			
		||||
        -- Setup some globals for debugging (lazy-loaded)
 | 
			
		||||
        _G.dd = function(...)
 | 
			
		||||
          Snacks.debug.inspect(...)
 | 
			
		||||
        end
 | 
			
		||||
        _G.bt = function()
 | 
			
		||||
          Snacks.debug.backtrace()
 | 
			
		||||
        end
 | 
			
		||||
        vim.print = _G.dd -- Override print to use snacks for `:=` command
 | 
			
		||||
 | 
			
		||||
        -- Create some toggle mappings
 | 
			
		||||
        Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
 | 
			
		||||
        Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
 | 
			
		||||
        Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL")
 | 
			
		||||
        Snacks.toggle.diagnostics():map("<leader>ud")
 | 
			
		||||
        Snacks.toggle.line_number():map("<leader>ul")
 | 
			
		||||
        Snacks.toggle
 | 
			
		||||
          .option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 })
 | 
			
		||||
          :map("<leader>uc")
 | 
			
		||||
        Snacks.toggle.treesitter():map("<leader>uT")
 | 
			
		||||
        Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("<leader>ub")
 | 
			
		||||
        Snacks.toggle.inlay_hints():map("<leader>uh")
 | 
			
		||||
        Snacks.toggle.indent():map("<leader>ug")
 | 
			
		||||
        Snacks.toggle.dim():map("<leader>uD")
 | 
			
		||||
      end,
 | 
			
		||||
    })
 | 
			
		||||
  end,
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								nvim/lua/plugins/statusline.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								nvim/lua/plugins/statusline.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
return {
 | 
			
		||||
	"echasnovski/mini.statusline",
 | 
			
		||||
	version = false,
 | 
			
		||||
	opts = {}
 | 
			
		||||
}
 | 
			
		||||
@@ -1,14 +0,0 @@
 | 
			
		||||
return {
 | 
			
		||||
  "echasnovski/mini.surround",
 | 
			
		||||
  opts = {
 | 
			
		||||
    mappings = {
 | 
			
		||||
      add = "gsa", -- Add surrounding in Normal and Visual modes
 | 
			
		||||
      delete = "gsd", -- Delete surrounding
 | 
			
		||||
      find = "gsf", -- Find surrounding (to the right)
 | 
			
		||||
      find_left = "gsF", -- Find surrounding (to the left)
 | 
			
		||||
      highlight = "gsh", -- Highlight surrounding
 | 
			
		||||
      replace = "gsr", -- Replace surrounding
 | 
			
		||||
      update_n_lines = "gsn", -- Update `n_lines`
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								nvim/lua/plugins/trouble.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								nvim/lua/plugins/trouble.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
return {
 | 
			
		||||
  "folke/trouble.nvim",
 | 
			
		||||
  init = function()
 | 
			
		||||
    local config = require("fzf-lua.config")
 | 
			
		||||
    local actions = require("trouble.sources.fzf").actions
 | 
			
		||||
    config.defaults.actions.files["ctrl-t"] = actions.open
 | 
			
		||||
  end,
 | 
			
		||||
  opts={},
 | 
			
		||||
  cmd = "Trouble",
 | 
			
		||||
  keys = {
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>xx",
 | 
			
		||||
      "<cmd>Trouble diagnostics toggle<cr>",
 | 
			
		||||
      desc = "Diagnostics (Trouble)",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>xX",
 | 
			
		||||
      "<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
 | 
			
		||||
      desc = "Buffer Diagnostics (Trouble)",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>cs",
 | 
			
		||||
      "<cmd>Trouble symbols toggle focus=false<cr>",
 | 
			
		||||
      desc = "Symbols (Trouble)",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>cl",
 | 
			
		||||
      "<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
 | 
			
		||||
      desc = "LSP Definitions / references / ... (Trouble)",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>xL",
 | 
			
		||||
      "<cmd>Trouble loclist toggle<cr>",
 | 
			
		||||
      desc = "Location List (Trouble)",
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "<leader>xQ",
 | 
			
		||||
      "<cmd>Trouble qflist toggle<cr>",
 | 
			
		||||
      desc = "Quickfix List (Trouble)",
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								nvim/lua/plugins/vim-helm.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								nvim/lua/plugins/vim-helm.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
return {
 | 
			
		||||
  'towolf/vim-helm'
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								nvim/lua/plugins/which-key.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								nvim/lua/plugins/which-key.lua
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
return {
 | 
			
		||||
	"folke/which-key.nvim",
 | 
			
		||||
	event = "VeryLazy",
 | 
			
		||||
	opts = {},
 | 
			
		||||
	keys = {
 | 
			
		||||
		{
 | 
			
		||||
			"<leader>?",
 | 
			
		||||
			function()
 | 
			
		||||
				require("which-key").show({global = false})
 | 
			
		||||
			end,
 | 
			
		||||
			desc = "Buffer local Keymaps (which-key)",
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
indent_type = "Spaces"
 | 
			
		||||
indent_width = 2
 | 
			
		||||
column_width = 120
 | 
			
		||||
		Reference in New Issue
	
	Block a user