Initial commit
This commit is contained in:
29
README.md
Normal file
29
README.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Zakarya's Neovim Config
|
||||||
|
|
||||||
|
I decided to get into Neovim because I thought it would be funny, here is the result.
|
||||||
|
|
||||||
|
## To install:
|
||||||
|
|
||||||
|
For Unix-like systems (Linux, MacOS, etc.):
|
||||||
|
|
||||||
|
(Remember to back up any existing configuration)
|
||||||
|
```bash
|
||||||
|
cd ~/.config/nvim
|
||||||
|
|
||||||
|
git clone https://git.colormatic.org/zakarya/nvim-config.git .
|
||||||
|
```
|
||||||
|
|
||||||
|
For Windows:
|
||||||
|
Good luck.
|
||||||
|
|
||||||
|
For any other operating systems that I didn't mention:
|
||||||
|
Have fun.
|
||||||
|
|
||||||
|
This configuration uses lazy.nvim for package management and Mason for collecting LSPs.
|
||||||
|
|
||||||
|
It also has formatting, autocomplete, and the Gruvbox theme.
|
||||||
|
|
||||||
|
**Special actions:**
|
||||||
|
To activate the formatter, do `:Fmt`
|
||||||
|
To open the file explorer window, do `:Exp`
|
||||||
|
To enter the selected autocomplete selection, press `Tab`
|
41
init.lua
Normal file
41
init.lua
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
require("config.lazy")
|
||||||
|
|
||||||
|
|
||||||
|
-- Gruvbox theme
|
||||||
|
vim.o.background = "dark"
|
||||||
|
vim.cmd([[colorscheme gruvbox]])
|
||||||
|
|
||||||
|
|
||||||
|
-- Vim config
|
||||||
|
local opt = vim.opt
|
||||||
|
|
||||||
|
opt.expandtab = false
|
||||||
|
opt.cursorline = true
|
||||||
|
opt.tabstop = 3
|
||||||
|
opt.wrap = false
|
||||||
|
opt.number = true
|
||||||
|
opt.spell = true
|
||||||
|
opt.spelllang = "en_us" -- Change to your preferred language
|
||||||
|
|
||||||
|
|
||||||
|
-- Commands
|
||||||
|
vim.api.nvim_create_user_command("Exp", function()
|
||||||
|
Snacks.explorer.open()
|
||||||
|
end, { range = true })
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("Fmt", function(args)
|
||||||
|
local range = nil
|
||||||
|
if args.count ~= -1 then
|
||||||
|
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)
|
||||||
|
[1]
|
||||||
|
range = {
|
||||||
|
start = { args.line1, 0 },
|
||||||
|
["end"] = { args.line2, end_line:len() },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
require("conform").format({ async = true, lsp_format = "fallback", range = range })
|
||||||
|
end, { range = true })
|
||||||
|
|
||||||
|
|
||||||
|
-- Don't highlight Zakarya style multiline comments as an error
|
||||||
|
vim.cmd([[highlight link cCommentStartError cComment]])
|
15
lazy-lock.json
Normal file
15
lazy-lock.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"ale": { "branch": "master", "commit": "baaca9a5d7016c52466c3b4cd2d161b317d801ed" },
|
||||||
|
"blink.cmp": { "branch": "main", "commit": "cb5e346d9e0efa7a3eee7fd4da0b690c48d2a98e" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "6632e7d788a85bf8405ea0c812d343fc308b7b8c" },
|
||||||
|
"gruvbox.nvim": { "branch": "main", "commit": "a933d8666dad9363dc6908ae72cfc832299c2f59" },
|
||||||
|
"indentmini.nvim": { "branch": "main", "commit": "59c2be5387e3a3308bb43f07e7e39fde0628bd4d" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "86fe39534b7da729a1ac56c0466e76f2c663dc42" },
|
||||||
|
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
|
||||||
|
"nvim-cursorline": { "branch": "main", "commit": "804f0023692653b2b2368462d67d2a87056947f9" },
|
||||||
|
"nvim-treesitter": { "branch": "master", "commit": "684eeac91ed8e297685a97ef70031d19ac1de25a" },
|
||||||
|
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "c90dee4e930ab9f49fa6d77f289bff335b49e972" },
|
||||||
|
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }
|
||||||
|
}
|
35
lua/config/lazy.lua
Normal file
35
lua/config/lazy.lua
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
-- Bootstrap lazy.nvim
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
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(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 = "\\"
|
||||||
|
|
||||||
|
-- Setup lazy.nvim
|
||||||
|
require("lazy").setup({
|
||||||
|
spec = {
|
||||||
|
-- import your plugins
|
||||||
|
{ import = "plugins" },
|
||||||
|
},
|
||||||
|
-- Configure any other settings here. See the documentation for more details.
|
||||||
|
-- colorscheme that will be used when installing plugins.
|
||||||
|
install = { colorscheme = { "habamax" } },
|
||||||
|
-- automatically check for plugin updates
|
||||||
|
checker = { enabled = true },
|
||||||
|
})
|
22
lua/plugins/ale.lua
Normal file
22
lua/plugins/ale.lua
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"dense-analysis/ale",
|
||||||
|
config = function()
|
||||||
|
-- Make the Lua LS not freak out about the undefined globals
|
||||||
|
vim.g.ale_linters = {
|
||||||
|
lua = { 'sumneko_lua' },
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.g.ale_lua_sumneko_lua_executable = 'lua-language-server'
|
||||||
|
vim.g.ale_lua_sumneko_lua_options = {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = {
|
||||||
|
globals = { 'vim', 'Snacks' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
},
|
||||||
|
}
|
66
lua/plugins/blink.lua
Normal file
66
lua/plugins/blink.lua
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"saghen/blink.cmp",
|
||||||
|
|
||||||
|
-- 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 = {
|
||||||
|
-- set to "none" to disable the "default" preset
|
||||||
|
preset = "none",
|
||||||
|
|
||||||
|
["<Up>"] = { "select_prev", "fallback" },
|
||||||
|
["<Down>"] = { "select_next", "fallback" },
|
||||||
|
["<Tab>"] = { "accept", "fallback" },
|
||||||
|
|
||||||
|
-- disable a keymap from the preset
|
||||||
|
["<C-e>"] = {},
|
||||||
|
|
||||||
|
-- show with a list of providers
|
||||||
|
["<C-space>"] = { function(cmp) cmp.show({ providers = { "snippets" } }) end },
|
||||||
|
},
|
||||||
|
|
||||||
|
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 = false } },
|
||||||
|
|
||||||
|
-- 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", "buffer" },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- (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" }
|
||||||
|
}
|
||||||
|
}
|
14
lua/plugins/conform.lua
Normal file
14
lua/plugins/conform.lua
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"stevearc/conform.nvim",
|
||||||
|
|
||||||
|
opts = {},
|
||||||
|
config = function()
|
||||||
|
require("conform").setup({
|
||||||
|
formatters_by_ft = {
|
||||||
|
json = { "prettier" }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
19
lua/plugins/cursorline.lua
Normal file
19
lua/plugins/cursorline.lua
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"ya2s/nvim-cursorline",
|
||||||
|
config = function()
|
||||||
|
require("nvim-cursorline").setup({
|
||||||
|
cursorline = {
|
||||||
|
enable = true,
|
||||||
|
timeout = 0,
|
||||||
|
number = false,
|
||||||
|
},
|
||||||
|
cursorword = {
|
||||||
|
enable = true,
|
||||||
|
min_length = 3,
|
||||||
|
hl = { underline = true },
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
7
lua/plugins/gruvbox.lua
Normal file
7
lua/plugins/gruvbox.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"ellisonleao/gruvbox.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
config = true,
|
||||||
|
},
|
||||||
|
}
|
10
lua/plugins/indent.lua
Normal file
10
lua/plugins/indent.lua
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"nvimdev/indentmini.nvim",
|
||||||
|
config = function()
|
||||||
|
require("indentmini").setup()
|
||||||
|
|
||||||
|
vim.cmd.highlight("IndentLine guifg=#444444") -- Set indent line color
|
||||||
|
end
|
||||||
|
}
|
||||||
|
}
|
9
lua/plugins/lualine.lua
Normal file
9
lua/plugins/lualine.lua
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||||
|
config = function()
|
||||||
|
require("lualine").setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
8
lua/plugins/mason.lua
Normal file
8
lua/plugins/mason.lua
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
config = function()
|
||||||
|
require("mason").setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
21
lua/plugins/snacks.lua
Normal file
21
lua/plugins/snacks.lua
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
lazy = false,
|
||||||
|
opts = {
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
dashboard = { enabled = true },
|
||||||
|
explorer = { enabled = true },
|
||||||
|
indent = { 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 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
8
lua/plugins/treesitter.lua
Normal file
8
lua/plugins/treesitter.lua
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"windwp/nvim-ts-autotag"
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user