Thomashighbaugh / nvim-forge

My Personal Development Environment

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NeoVim Forge

My Winchester Mystery NeoVim Configuration, using lazy.nvim for plugin management and Lua as its configuration language. My Personal Development Environment (PDE) and the core tool used in cultivating my Personal Knowledge Base (PKB).

Warning This is my personal configuration, subject to experimentation and radical rewrites periodically, rebases or substantially modifications without prior warning and other things that may make this unstable for you to use as it is presented.

With this in mind, feel free to take from it as you please, use pieces of it or the whole thing as a basis for your own and you are more than welcome to submit pull requests if it so pleases you, that's why its on GitHub πŸ˜‰

Installation

To use this configuration, clone it into your ~/.config/nvim directory:

# Back up your old configuration if present
mv ~/.config/nim ~/.config/nvim.bak
# Now clone this one 
git clone https://github.com/Thomashighbaugh/nvim-forge ~/.config/nvim 

And that should be it, if you have the prerequisites installed it should run through the lazy.nvim installation process and handle setting up everything in the process from Treesitter grammars to Mason dependencies, it might just take a few minutes so be patient.

Configuration Structure

This configuration roughly follows that of LazyVim, with some minor changes that are mostly due to personal taste, which while arbitrary is much easier to quickly locate various things when they are arranged in the way one prefers and not an artificially imposed standard. The lion's share of the configuration exists within the lua/ subdirectory as is the convention of Lua-based NeoVim configurations.

Unlike many other highly customized NeoVim configurations, as well as most major configuration frameworks, the configuration is not nested within a subdirectory of the Lua subdirectory named after the author, plugin or configuration, I find no need to brand this configuration in a way that makes using its parts elsewhere highly onerous and introduces a needless source of potential errors for me to deal with instead of working on code like I intend to be.

Below is a representation of the structure of the configuration in tree format:

β”œβ”€β”€ ο…œ cheatsheet.txt
β”œβ”€β”€ ξ—Ώ doc
β”‚  └── ο…œ nvim-forge.txt
β”œβ”€β”€  Dockerfile
β”œβ”€β”€  init.lua
β”œβ”€β”€ ξ˜‹ lazy-lock.json
β”œβ”€β”€ ο€­ LICENSE
β”œβ”€β”€ ξ—Ώ lua
β”‚  β”œβ”€β”€ ξ—Ό config
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ cmp
β”‚  β”‚  β”‚  └──  dict.lua
β”‚  β”‚  β”œβ”€β”€  compile.lua
β”‚  β”‚  β”œβ”€β”€  dashboard.lua
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ hydra
β”‚  β”‚  β”‚  β”œβ”€β”€  hydra.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  spelling.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  telescope.lua
β”‚  β”‚  β”‚  └──  windows.lua
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ lsp
β”‚  β”‚  β”‚  β”œβ”€β”€  diagnostics.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  gitsigns.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  keymaps.lua
β”‚  β”‚  β”‚  └──  navic.lua
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ lualine
β”‚  β”‚  β”‚  β”œβ”€β”€  components.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  config.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  highlights.lua
β”‚  β”‚  β”‚  └──  init.lua
β”‚  β”‚  └── ξ—Ώ neo-tree
β”‚  β”‚     β”œβ”€β”€  init.lua
β”‚  β”‚     └── ξ—Ώ sources
β”‚  β”‚        └── ξ—Ώ filesystem
β”‚  β”‚           └──  components.lua
β”‚  β”œβ”€β”€ ξ—Ώ core
β”‚  β”‚  β”œβ”€β”€  autocmds.lua
β”‚  β”‚  β”œβ”€β”€  icons.lua
β”‚  β”‚  β”œβ”€β”€  keymaps.lua
β”‚  β”‚  β”œβ”€β”€  lazy.lua
β”‚  β”‚  β”œβ”€β”€  logo.lua
β”‚  β”‚  └──  options.lua
β”‚  β”œβ”€β”€ ξ—Ώ resources
β”‚  β”‚  β”œβ”€β”€  coding.lua
β”‚  β”‚  β”œβ”€β”€  colorscheme.lua
β”‚  β”‚  β”œβ”€β”€  editor.lua
β”‚  β”‚  β”œβ”€β”€  formatting.lua
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ lang
β”‚  β”‚  β”‚  β”œβ”€β”€  clangd.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  docker.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  java.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  json.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  markdown.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  nix.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  php.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  python.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  rust.lua
β”‚  β”‚  β”‚  └──  typescript.lua
β”‚  β”‚  β”œβ”€β”€  lsp.lua
β”‚  β”‚  β”œβ”€β”€  settings.lua
β”‚  β”‚  β”œβ”€β”€  tools.lua
β”‚  β”‚  β”œβ”€β”€  treesitter.lua
β”‚  β”‚  β”œβ”€β”€  ui.lua
β”‚  β”‚  └──  util.lua
β”‚  └──  util.lua
β”œβ”€β”€ ο’Š README.md -> .github/README.md
β”œβ”€β”€ ξ—Ώ snippets 
β”‚  β”œβ”€β”€  all.lua
β”‚  β”œβ”€β”€ ο…› java.snippets
β”‚  β”œβ”€β”€  markdown.lua
β”‚  β”œβ”€β”€  package.json
β”‚  β”œβ”€β”€ ξ—Ώ vscode
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ c.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ cpp.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ css.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ fennel.json
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ frameworks
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ ejs.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ flutter.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ jekyll.jsonβ”œβ”€β”€ ο…œ cheatsheet.txt
β”œβ”€β”€ ξ—Ώ doc
β”‚  └── ο…œ nvim-forge.txt
β”œβ”€β”€  Dockerfile
β”œβ”€β”€  init.lua
β”œβ”€β”€ ξ˜‹ lazy-lock.json
β”œβ”€β”€ ο€­ LICENSE
β”œβ”€β”€ ξ—Ώ lua
β”‚  β”œβ”€β”€ ξ—Ό config
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ cmp
β”‚  β”‚  β”‚  └──  dict.lua
β”‚  β”‚  β”œβ”€β”€  compile.lua
β”‚  β”‚  β”œβ”€β”€  dashboard.lua
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ hydra
β”‚  β”‚  β”‚  β”œβ”€β”€  hydra.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  spelling.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  telescope.lua
β”‚  β”‚  β”‚  └──  windows.lua
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ lsp
β”‚  β”‚  β”‚  β”œβ”€β”€  diagnostics.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  gitsigns.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  keymaps.lua
β”‚  β”‚  β”‚  └──  navic.lua
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ lualine
β”‚  β”‚  β”‚  β”œβ”€β”€  components.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  config.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  highlights.lua
β”‚  β”‚  β”‚  └──  init.lua
β”‚  β”‚  └── ξ—Ώ neo-tree
β”‚  β”‚     β”œβ”€β”€  init.lua
β”‚  β”‚     └── ξ—Ώ sources
β”‚  β”‚        └── ξ—Ώ filesystem
β”‚  β”‚           └──  components.lua
β”‚  β”œβ”€β”€ ξ—Ώ core
β”‚  β”‚  β”œβ”€β”€  autocmds.lua
β”‚  β”‚  β”œβ”€β”€  icons.lua
β”‚  β”‚  β”œβ”€β”€  keymaps.lua
β”‚  β”‚  β”œβ”€β”€  lazy.lua
β”‚  β”‚  β”œβ”€β”€  logo.lua
β”‚  β”‚  └──  options.lua
β”‚  β”œβ”€β”€ ξ—Ώ resources
β”‚  β”‚  β”œβ”€β”€  coding.lua
β”‚  β”‚  β”œβ”€β”€  colorscheme.lua
β”‚  β”‚  β”œβ”€β”€  editor.lua
β”‚  β”‚  β”œβ”€β”€  formatting.lua
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ lang
β”‚  β”‚  β”‚  β”œβ”€β”€  clangd.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  docker.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  java.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  json.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  markdown.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  nix.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  php.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  python.lua
β”‚  β”‚  β”‚  β”œβ”€β”€  rust.lua
β”‚  β”‚  β”‚  └──  typescript.lua
β”‚  β”‚  β”œβ”€β”€  lsp.lua
β”‚  β”‚  β”œβ”€β”€  settings.lua
β”‚  β”‚  β”œβ”€β”€  tools.lua
β”‚  β”‚  β”œβ”€β”€  treesitter.lua
β”‚  β”‚  β”œβ”€β”€  ui.lua
β”‚  β”‚  └──  util.lua
β”‚  └──  util.lua
β”œβ”€β”€ ο’Š README.md -> .github/README.md
β”œβ”€β”€ ξ—Ώ snippets
β”‚  β”œβ”€β”€  all.lua
β”‚  β”œβ”€β”€ ο…› java.snippets
β”‚  β”œβ”€β”€  markdown.lua
β”‚  β”œβ”€β”€  package.json
β”‚  β”œβ”€β”€ ξ—Ώ vscode
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ c.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ cpp.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ css.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ fennel.json
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ frameworks
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ ejs.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ flutter.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ jekyll.json
β”‚  β”‚  β”‚  └── ξ—Ώ vue
β”‚  β”‚  β”‚     β”œβ”€β”€ ξ˜‹ html.json
β”‚  β”‚  β”‚     β”œβ”€β”€ ξ˜‹ javascript.json
β”‚  β”‚  β”‚     β”œβ”€β”€ ξ˜‹ pug.json
β”‚  β”‚  β”‚     └── ξ˜‹ vue.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ gdscript.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ gitcommit.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ global.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ glsl.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ go.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ haskell.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ html.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ java.json
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ javascript
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ javascript.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ react-native-ts.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ react-native.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ react-ts.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ react.json
β”‚  β”‚  β”‚  └── ξ˜‹ typescript.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ kotlin.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ kubernetes.json
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ latex
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ latex-snippets.json
β”‚  β”‚  β”‚  └── ξ˜‹ vscode-latex-snippets.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ latex.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ lua.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ markdown.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ meson.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ norg.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ org.json
β”‚  β”‚  β”œβ”€β”€  package.json
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ python
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ base.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ comprehension.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ debug.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ python.json
β”‚  β”‚  β”‚  └── ξ˜‹ unittest.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ rust.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ scala.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ shell.json
β”‚  β”‚  └── ξ˜‹ sql.json
β”‚  └──  yaml.lua
β”œβ”€β”€ ξ—Ώ spell
β”‚  β”œβ”€β”€ ο…› en.dict
β”‚  β”œβ”€β”€ ο…› en.utf-8.add
β”‚  β”œβ”€β”€ ο…› en.utf-8.add.spl
β”‚  β”œβ”€β”€ ο…› es.dict
β”‚  β”œβ”€β”€ ο…› hi.dict
β”‚  └── ο’Š README.md
└── ξ˜• stylua.toml
β”‚  β”‚  β”‚  └── ξ—Ώ vue
β”‚  β”‚  β”‚     β”œβ”€β”€ ξ˜‹ html.json
β”‚  β”‚  β”‚     β”œβ”€β”€ ξ˜‹ javascript.json
β”‚  β”‚  β”‚     β”œβ”€β”€ ξ˜‹ pug.json
β”‚  β”‚  β”‚     └── ξ˜‹ vue.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ gdscript.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ gitcommit.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ global.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ glsl.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ go.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ haskell.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ html.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ java.json
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ javascript
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ javascript.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ react-native-ts.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ react-native.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ react-ts.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ react.json
β”‚  β”‚  β”‚  └── ξ˜‹ typescript.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ kotlin.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ kubernetes.json
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ latex
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ latex-snippets.json
β”‚  β”‚  β”‚  └── ξ˜‹ vscode-latex-snippets.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ latex.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ lua.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ markdown.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ meson.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ norg.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ org.json
β”‚  β”‚  β”œβ”€β”€  package.json
β”‚  β”‚  β”œβ”€β”€ ξ—Ώ python
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ base.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ comprehension.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ debug.json
β”‚  β”‚  β”‚  β”œβ”€β”€ ξ˜‹ python.json
β”‚  β”‚  β”‚  └── ξ˜‹ unittest.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ rust.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ scala.json
β”‚  β”‚  β”œβ”€β”€ ξ˜‹ shell.json
β”‚  β”‚  └── ξ˜‹ sql.json
β”‚  └──  yaml.lua
β”œβ”€β”€ ξ—Ώ spell
β”‚  β”œβ”€β”€ ο…› en.dict
β”‚  β”œβ”€β”€ ο…› en.utf-8.add
β”‚  β”œβ”€β”€ ο…› en.utf-8.add.spl
β”‚  β”œβ”€β”€ ο…› es.dict
β”‚  β”œβ”€β”€ ο…› hi.dict
β”‚  └── ο’Š README.md
└── ξ˜• stylua.toml

The lua/ subdirectory is where the majority of the configuration resides, with the core/ subdirectory containing the core configuration, config/ containing the configuration for plugins when a more substantial configuration is necessary for a plugin and resources/ containing the enumeration of and initial setup configurations for the various plugins used by the configuration and managed by lazy.nvim. Within the resources/ subdirectory is an additional lang/ subdirectory that contains the configuration for language servers and other language-specific configuration.

Inspiration

The following projects were instrumental in the crafting of this environment:

About

My Personal Development Environment

License:MIT License


Languages

Language:Lua 95.9%Language:Vim Snippet 3.0%Language:Dockerfile 1.1%