mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 12:29:19 -08:00
357 lines
9.6 KiB
Lua
357 lines
9.6 KiB
Lua
-----------------------------------------------------------
|
||
-- Variables
|
||
-----------------------------------------------------------
|
||
local g = vim.g -- Global variables
|
||
local opt = vim.opt -- Set options (global/buffer/windows-scoped)
|
||
local wo = vim.wo -- Window local variables
|
||
local api = vim.api -- Lua API
|
||
|
||
-----------------------------------------------------------
|
||
-- Nix Fuckery
|
||
-----------------------------------------------------------
|
||
opt.packpath:prepend{"@packDir@"}
|
||
opt.runtimepath:prepend{"@packDir@"}
|
||
|
||
-----------------------------------------------------------
|
||
-- Base16
|
||
-----------------------------------------------------------
|
||
vim.g.base16colorspace = 256
|
||
vim.g.base16background = "@defaultSchemeName@"
|
||
g.base16_shell_path = "@base16ShellPath@"
|
||
vim.cmd("colorscheme base16-@defaultSchemeSlug@")
|
||
g.colors_name = "@defaultSchemeSlug@"
|
||
|
||
local base16 = {
|
||
base00 = "@base00@",
|
||
base01 = "@base01@",
|
||
base02 = "@base02@",
|
||
base03 = "@base03@",
|
||
base04 = "@base04@",
|
||
base05 = "@base05@",
|
||
base06 = "@base06@",
|
||
base07 = "@base07@",
|
||
base08 = "@base08@",
|
||
base09 = "@base09@",
|
||
base0A = "@base0A@",
|
||
base0B = "@base0B@",
|
||
base0C = "@base0C@",
|
||
base0D = "@base0D@",
|
||
base0E = "@base0E@",
|
||
base0F = "@base0F@"
|
||
}
|
||
|
||
api.nvim_create_autocmd("vimenter", {
|
||
command = "highlight Normal guibg=NONE ctermbg=NONE"
|
||
})
|
||
api.nvim_create_autocmd("SourcePost", {
|
||
command = "highlight Normal ctermbg=NONE guibg=NONE | " ..
|
||
"highlight LineNr ctermbg=NONE guibg=NONE | " ..
|
||
"highlight SignColumn ctermbg=NONE guibg=NONE"
|
||
})
|
||
|
||
|
||
-----------------------------------------------------------
|
||
-- General
|
||
-----------------------------------------------------------
|
||
opt.mouse = 'a' -- Enable mouse support
|
||
opt.clipboard = 'unnamedplus' -- Copy/paste to system clipboard
|
||
opt.completeopt = 'longest,menuone' -- Autocomplete options
|
||
opt.backup = false -- Disable backup
|
||
opt.writebackup = false -- Disable backup
|
||
opt.ttimeoutlen = 100 -- Mapping timeout
|
||
|
||
-----------------------------------------------------------
|
||
-- Neovim UI
|
||
-----------------------------------------------------------
|
||
opt.number = true -- Show line number
|
||
opt.relativenumber = true -- Relative line numbers
|
||
opt.showmatch = true -- Highlight matching parenthesis
|
||
opt.foldmethod = 'marker' -- Enable folding (default 'foldmarker')
|
||
opt.colorcolumn = '80' -- Line length marker at 80 columns
|
||
opt.splitright = true -- Vertical split to the right
|
||
opt.splitbelow = true -- Horizontal split to the bottom
|
||
opt.ignorecase = true -- Ignore case letters when search
|
||
opt.smartcase = true -- Ignore lowercase for the whole pattern
|
||
opt.wrap = true -- Wrap on word boundary
|
||
opt.linebreak = true -- Wrap on word boundary
|
||
opt.showbreak = " ↳" -- Character to use to display word boundary
|
||
opt.termguicolors = false -- Enable 24-bit RGB colors
|
||
opt.laststatus = 3 -- Set global statusline
|
||
opt.cursorline = true -- Highlight cursor screenline
|
||
opt.cmdheight = 1 -- Command entry line height
|
||
opt.hlsearch = true -- Highlight matches with last search pattern
|
||
|
||
-----------------------------------------------------------
|
||
-- Tabs, indent
|
||
-----------------------------------------------------------
|
||
opt.expandtab = false -- Use spaces instead of tabs
|
||
opt.shiftwidth = 2 -- Shift 2 spaces when tab
|
||
opt.tabstop = 2 -- 1 tab == 2 spaces
|
||
opt.smartindent = true -- Autoindent new lines
|
||
opt.list = true -- List chars
|
||
opt.listchars = {
|
||
tab = '» ',
|
||
extends = '›',
|
||
precedes= '‹',
|
||
nbsp = '·',
|
||
trail = '✖'
|
||
}
|
||
|
||
-----------------------------------------------------------
|
||
-- Memory, CPU
|
||
-----------------------------------------------------------
|
||
opt.hidden = true -- Enable background buffers
|
||
opt.history = 100 -- Remember N lines in history
|
||
opt.lazyredraw = true -- Faster scrolling
|
||
opt.synmaxcol = 240 -- Max column for syntax highlight
|
||
opt.updatetime = 700 -- ms to wait for trigger an event
|
||
|
||
-----------------------------------------------------------
|
||
-- Plugins
|
||
-----------------------------------------------------------
|
||
|
||
-- Remove perl
|
||
g.loaded_perl_provider = 0
|
||
|
||
-- Hexokinaise
|
||
g.Hexokinase_highlighters = {'virtual'}
|
||
g.Hexokinase_optInPatterns = {
|
||
'full_hex',
|
||
'rgb',
|
||
'rgba',
|
||
'hsl',
|
||
'hsla',
|
||
'colour_names'
|
||
}
|
||
|
||
-- Lastplace
|
||
g.lastplace_ignore = 'gitcommit,gitrebase,svn,hgcommit'
|
||
|
||
-----------------------------------------------------------
|
||
-- Startup
|
||
-----------------------------------------------------------
|
||
|
||
-- Disable builtins plugins
|
||
local disabled_built_ins = {
|
||
"netrw",
|
||
"netrwPlugin",
|
||
"netrwSettings",
|
||
"netrwFileHandlers",
|
||
"gzip",
|
||
"zip",
|
||
"zipPlugin",
|
||
"tar",
|
||
"tarPlugin",
|
||
"getscript",
|
||
"getscriptPlugin",
|
||
"vimball",
|
||
"vimballPlugin",
|
||
"2html_plugin",
|
||
"logipat",
|
||
"rrhelper",
|
||
"spellfile_plugin",
|
||
"matchit"
|
||
}
|
||
|
||
for _, plugin in pairs(disabled_built_ins) do
|
||
g["loaded_" .. plugin] = 1
|
||
end
|
||
|
||
-----------------------------------------------------------
|
||
-- Plugins
|
||
-----------------------------------------------------------
|
||
|
||
-- lualine
|
||
require('lualine').setup{}
|
||
|
||
-- nvim-cmp
|
||
local cmp = require('cmp')
|
||
|
||
cmp.setup({
|
||
snippet = {
|
||
expand = function(args)
|
||
vim.fn["vsnip#anonymous"](args.body)
|
||
end,
|
||
},
|
||
mapping = {
|
||
['<C-y>'] = cmp.mapping.confirm({ select = true }),
|
||
},
|
||
sources = {
|
||
{ name = 'neorg' },
|
||
}
|
||
})
|
||
|
||
-- lspconfig
|
||
require('lspconfig').terraformls.setup{}
|
||
|
||
api.nvim_create_autocmd('BufWritePre', {
|
||
pattern = '*.tf',
|
||
command = 'lua vim.lsp.buf.formatting_sync()'
|
||
})
|
||
|
||
-- neorg
|
||
require('neorg').setup {
|
||
-- Tell Neorg what modules to load
|
||
load = {
|
||
['core.defaults'] = {}, -- Load all the default modules
|
||
['core.norg.concealer'] = {}, -- Allows for use of icons
|
||
['core.norg.dirman'] = { -- Manage your directories with Neorg
|
||
config = {
|
||
engine = 'nvim-cmp',
|
||
workspaces = {
|
||
home = '~/neorg'
|
||
}
|
||
}
|
||
}
|
||
},
|
||
}
|
||
|
||
-- telescope
|
||
local telescope = require('telescope.builtin')
|
||
|
||
vim.keymap.set("n", "<leader>ff", function()
|
||
telescope.find_files()
|
||
end, { silent = true })
|
||
|
||
vim.keymap.set("n", "<leader>fg", function()
|
||
telescope.live_grep()
|
||
end, { silent = true })
|
||
|
||
vim.keymap.set("n", "<leader>fb", function()
|
||
telescope.buffers()
|
||
end, { silent = true })
|
||
|
||
vim.keymap.set("n", "<leader>fh", function()
|
||
telescope.help_tags()
|
||
end, { silent = true })
|
||
|
||
-- treesitter
|
||
require('nvim-treesitter.configs').setup {
|
||
-- A list of parser names, or "all"
|
||
ensure_installed = {
|
||
"c",
|
||
"lua",
|
||
"rust",
|
||
"bash",
|
||
"css",
|
||
"dockerfile",
|
||
"go",
|
||
"hcl",
|
||
"html",
|
||
"javascript",
|
||
"markdown",
|
||
"nix",
|
||
"norg",
|
||
"python",
|
||
"regex",
|
||
"scss",
|
||
},
|
||
|
||
sync_install = false,
|
||
auto_install = false,
|
||
ignore_install = {},
|
||
|
||
highlight = {
|
||
enable = true,
|
||
additional_vim_regex_highlighting = false,
|
||
},
|
||
indent = {
|
||
enable = true,
|
||
},
|
||
rainbow = {
|
||
enable = true,
|
||
extended_mode = true
|
||
},
|
||
}
|
||
|
||
-- twilight
|
||
require("twilight").setup {
|
||
dimming = {
|
||
alpha = 0.5,
|
||
},
|
||
context = 10,
|
||
expand = {
|
||
"function",
|
||
"method",
|
||
"table",
|
||
"if_statement",
|
||
},
|
||
}
|
||
|
||
-- bufferline
|
||
require('bufferline').setup {
|
||
options = {
|
||
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
||
numbers = "ordinal",
|
||
close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
||
right_mouse_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
|
||
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
|
||
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
|
||
indicator_icon = '▎',
|
||
buffer_close_icon = '',
|
||
modified_icon = '●',
|
||
close_icon = '',
|
||
left_trunc_marker = '',
|
||
right_trunc_marker = '',
|
||
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
|
||
-- remove extension from markdown files for example
|
||
if buf.name:match('%.md') then
|
||
return vim.fn.fnamemodify(buf.name, ':t:r')
|
||
end
|
||
end,
|
||
max_name_length = 18,
|
||
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
|
||
tab_size = 18,
|
||
diagnostics = "nvim_lsp",
|
||
diagnostics_update_in_insert = false,
|
||
color_icons = true,
|
||
show_buffer_icons = true, -- disable filetype icons for buffers
|
||
show_buffer_close_icons = true,
|
||
show_close_icon = false,
|
||
show_tab_indicators = true,
|
||
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
|
||
separator_style = "slant",
|
||
always_show_bufferline = true,
|
||
}
|
||
}
|
||
|
||
local barColor = base16.base00;
|
||
|
||
local highlightItems = {
|
||
BufferLineFill = "bg",
|
||
BufferLineBackground = "bg",
|
||
BufferLineSeparator = "fg",
|
||
BufferLineSeparatorSelected = "fg",
|
||
BufferLineSeparatorVisible = "fg",
|
||
}
|
||
|
||
local commandString = ""
|
||
|
||
for item, ground in pairs(highlightItems) do
|
||
commandString = "highlight " .. item .. " cterm" .. ground .. "=" .. barColor .. " | " .. commandString
|
||
end
|
||
|
||
api.nvim_create_autocmd("ColorScheme", {
|
||
command = commandString;
|
||
})
|
||
|
||
-- hop
|
||
local hop = require('hop')
|
||
local directions = require("hop.hint").HintDirection
|
||
hop.setup()
|
||
|
||
vim.keymap.set("", "t", function()
|
||
hop.hint_words()
|
||
end, {})
|
||
|
||
vim.keymap.set("", "T", function()
|
||
hop.hint_lines_skip_whitespace()
|
||
end, {remap=true})
|
||
|
||
vim.keymap.set("", "f", function()
|
||
hop.hint_char1({ direction = directions.AFTER_CURSOR, current_line_only = true })
|
||
end, {remap=true})
|
||
|
||
vim.keymap.set("", "F", function()
|
||
hop.hint_char1({ direction = directions.BEFORE_CURSOR, current_line_only = true })
|
||
end, {remap=true})
|