init
This commit is contained in:
1
colorscheme.lua
Normal file
1
colorscheme.lua
Normal file
@@ -0,0 +1 @@
|
||||
return "astrobox"
|
||||
12
highlights/init.lua
Normal file
12
highlights/init.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
return function()
|
||||
-- Remove italic in documentation comments
|
||||
local docComment = vim.api.nvim_get_hl(0, { name = "Comment" })
|
||||
docComment.italic = false
|
||||
docComment.nocombine = true -- Don't merge missing attributes from inherited highlight group
|
||||
return {
|
||||
["@comment.doc"] = docComment,
|
||||
["@comment.documentation"] = docComment,
|
||||
["@lsp.mod.documentation"] = docComment,
|
||||
}
|
||||
end
|
||||
|
||||
6
lsp/formatting.lua
Normal file
6
lsp/formatting.lua
Normal file
@@ -0,0 +1,6 @@
|
||||
return {
|
||||
-- control auto formatting on save
|
||||
format_on_save = {
|
||||
enabled = false, -- enable or disable format on save globally
|
||||
},
|
||||
}
|
||||
19
mappings.lua
Normal file
19
mappings.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
return {
|
||||
n = {
|
||||
["<leader><leader>"] = {
|
||||
function()
|
||||
vim.cmd([[cclose]])
|
||||
vim.cmd([[pclose]])
|
||||
vim.fn.setreg('/', '')
|
||||
end,
|
||||
desc = "Clean up"
|
||||
}
|
||||
},
|
||||
t = {
|
||||
['<Esc>'] = [[<C-\><C-n>]],
|
||||
['<A-h>'] = [[<C-\><C-N><C-w>h]],
|
||||
['<A-j>'] = [[<C-\><C-N><C-w>j]],
|
||||
['<A-k>'] = [[<C-\><C-N><C-w>k]],
|
||||
['<A-l>'] = [[<C-\><C-N><C-w>l]],
|
||||
},
|
||||
}
|
||||
35
options.lua
Normal file
35
options.lua
Normal file
@@ -0,0 +1,35 @@
|
||||
return {
|
||||
opt = {
|
||||
-- laststatus = 2,
|
||||
background = "dark",
|
||||
clipboard = "",
|
||||
cmdheight = 1,
|
||||
expandtab = true,
|
||||
foldenable = true,
|
||||
foldlevelstart = 100,
|
||||
foldmethod = "syntax",
|
||||
foldnestmax = 150,
|
||||
grepprg = "rg --vimgrep",
|
||||
guifont = "VictorMono Nerd Font, Hack Nerd Font Mono:h10",
|
||||
listchars = { tab = '> ', extends = '>', precedes = '<', space = '·' },
|
||||
number = true,
|
||||
relativenumber = false,
|
||||
scrolloff = 0,
|
||||
shiftwidth = 4,
|
||||
signcolumn = "auto",
|
||||
spell = false,
|
||||
tabstop = 4,
|
||||
textwidth = 80,
|
||||
wrap = true,
|
||||
},
|
||||
g = {
|
||||
autoformat_enabled = false,
|
||||
autopairs_enabled = true,
|
||||
cmp_enabled = true,
|
||||
diagnostics_enabled = true,
|
||||
icons_enabled = true,
|
||||
inlay_hints_enabled = true,
|
||||
mapleader = " ",
|
||||
status_diagnostics_enabled = true,
|
||||
},
|
||||
}
|
||||
60
plugins/colors.lua
Normal file
60
plugins/colors.lua
Normal file
@@ -0,0 +1,60 @@
|
||||
local function int_lerp(a, b, c)
|
||||
return math.floor((1 - c) * a + c * b + 0.5)
|
||||
end
|
||||
|
||||
local function rgb_lerp(a, b, c)
|
||||
return {
|
||||
int_lerp(a[1], b[1], c),
|
||||
int_lerp(a[2], b[2], c),
|
||||
int_lerp(a[3], b[3], c),
|
||||
}
|
||||
end
|
||||
|
||||
local function hex_to_rgb(hex)
|
||||
local ret = {}
|
||||
for i = 2,6,2 do -- Skip '#'
|
||||
local s = hex:sub(i, i + 1)
|
||||
table.insert(ret, tonumber(s, 16))
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
local function rgb_to_hex(rgb)
|
||||
return string.format("#%x%x%x", unpack(rgb))
|
||||
end
|
||||
|
||||
local function hex_lerp(a, b, c)
|
||||
a = hex_to_rgb(a);
|
||||
b = hex_to_rgb(b);
|
||||
return rgb_to_hex(rgb_lerp(a, b, c))
|
||||
end
|
||||
|
||||
return {
|
||||
{
|
||||
"AstroNvim/astrotheme",
|
||||
optional = true,
|
||||
opts = {
|
||||
style = {
|
||||
simple_syntax_colors = true,
|
||||
inactive = false,
|
||||
},
|
||||
palettes = {
|
||||
astrobox = {},
|
||||
},
|
||||
highlights = {
|
||||
global = {
|
||||
modify_hl_groups = function(hl, c)
|
||||
hl.DiffAdd = { bg = hex_lerp(hl.DiffAdd.bg, c.ui.base, 0.8)}
|
||||
hl.DiffDelete = { bg = hex_lerp(hl.DiffDelete.bg, c.ui.base, 0.8)}
|
||||
hl.DiffChange = { bg = hex_lerp(c.ui.blue, c.ui.base, 0.8)}
|
||||
hl.DiffText = { bg = hex_lerp(hl.DiffText.bg, c.ui.base, 0.8)}
|
||||
end,
|
||||
},
|
||||
astrobox = {},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
url = "https://git.niverton.tk/niverton/Astrobox.git"
|
||||
},
|
||||
}
|
||||
29
plugins/community.lua
Normal file
29
plugins/community.lua
Normal file
@@ -0,0 +1,29 @@
|
||||
-- Filter by hostname
|
||||
local home = vim.fn.hostname() == "comanche"
|
||||
local work = not home
|
||||
|
||||
return {
|
||||
"AstroNvim/astrocommunity",
|
||||
|
||||
-- Language packs
|
||||
{ enabled = true, import = "astrocommunity.pack.cpp" },
|
||||
{ enabled = true, import = "astrocommunity.pack.lua" },
|
||||
{ enabled = true, import = "astrocommunity.pack.markdown" },
|
||||
-- { enabled = true, import = "astrocommunity.pack.rust" },
|
||||
{ enabled = home, import = "astrocommunity.pack.bash" },
|
||||
{ enabled = home, import = "astrocommunity.pack.html-css" },
|
||||
{ enabled = home, import = "astrocommunity.pack.java" },
|
||||
{ enabled = work, import = "astrocommunity.pack.cs" },
|
||||
{ enabled = work, import = "astrocommunity.pack.ps1" },
|
||||
-- { enable = home, import = "astrocommunity.pack.wgsl" }, -- WebGLShaderLanguage
|
||||
|
||||
-- DAP
|
||||
{ import = "astrocommunity.debugging.telescope-dap-nvim" },
|
||||
{ import = "astrocommunity.debugging.nvim-dap-virtual-text" },
|
||||
{ import = "astrocommunity.debugging.nvim-dap-repl-highlights" },
|
||||
|
||||
-- Others
|
||||
-- TODO usefull?
|
||||
{ import = "astrocommunity.debugging.nvim-bqf" },
|
||||
|
||||
}
|
||||
82
plugins/heirline.lua
Normal file
82
plugins/heirline.lua
Normal file
@@ -0,0 +1,82 @@
|
||||
return {
|
||||
"rebelot/heirline.nvim",
|
||||
opts = function(_, opts)
|
||||
local status = require "astronvim.utils.status"
|
||||
|
||||
opts.statusline = {
|
||||
hl = { fg = "fg", bg = "bg" },
|
||||
status.component.mode { mode_text = { hl = { bold = true }, padding = { left = 1, right = 1 } } },
|
||||
status.component.file_info {
|
||||
filetype = false,
|
||||
filename = {
|
||||
modify = ":~:."
|
||||
},
|
||||
file_modified = {}
|
||||
},
|
||||
status.component.diagnostics(),
|
||||
status.component.fill(),
|
||||
status.component.cmd_info(),
|
||||
status.component.fill(),
|
||||
status.component.lsp(),
|
||||
status.component.treesitter{ padding = { right = 1 } }, -- Extra space to separate from next component
|
||||
status.component.git_diff(),
|
||||
status.component.git_branch(),
|
||||
status.component.nav { scrollbar = false },
|
||||
}
|
||||
|
||||
local get_file_path = status.provider.filename {
|
||||
modify = ":~:.:h" -- Relative path and cut filename
|
||||
}
|
||||
-- Fix path separation on windows
|
||||
local path_func = get_file_path
|
||||
if vim.fn.has("win32") then
|
||||
path_func = function(self)
|
||||
local str = get_file_path(self)
|
||||
return string.gsub(str, "\\", "/")
|
||||
end
|
||||
end
|
||||
|
||||
opts.winbar = {
|
||||
init = function(self) self.bufnr = vim.api.nvim_get_current_buf() end,
|
||||
fallthrough = false,
|
||||
{
|
||||
condition = function() return not status.condition.is_active() end,
|
||||
{
|
||||
-- Set display priority to hide when component is too big to
|
||||
-- fit
|
||||
flexible = 1,
|
||||
status.component.separated_path {
|
||||
flexible = 2,
|
||||
max_depth = 5,
|
||||
path_func = path_func,
|
||||
},
|
||||
status.component.separated_path {
|
||||
flexible = 3,
|
||||
max_depth = 3,
|
||||
path_func = path_func,
|
||||
},
|
||||
status.component.separated_path {
|
||||
flexible = 4,
|
||||
max_depth = 1,
|
||||
path_func = path_func,
|
||||
},
|
||||
{
|
||||
-- Hide
|
||||
provider = ""
|
||||
}
|
||||
},
|
||||
status.component.file_info {
|
||||
file_icon = { hl = status.hl.file_icon "winbar", padding = { left = 0 } },
|
||||
file_modified = false,
|
||||
file_read_only = false,
|
||||
hl = status.hl.get_attributes("winbarnc", true),
|
||||
surround = false,
|
||||
update = "BufEnter",
|
||||
},
|
||||
},
|
||||
status.component.breadcrumbs(),
|
||||
}
|
||||
|
||||
return opts
|
||||
end,
|
||||
}
|
||||
16
plugins/init.lua
Normal file
16
plugins/init.lua
Normal file
@@ -0,0 +1,16 @@
|
||||
return {
|
||||
{ "echasnovski/mini.align", event = "User AstroFile", config = function() require("mini.align").setup {} end },
|
||||
{
|
||||
"serenevoid/kiwi.nvim",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
opts = {
|
||||
{ name = "main", path = "~/kiwi/main" },
|
||||
},
|
||||
keys = {
|
||||
{ "<leader>ww", ':lua require("kiwi").open_wiki_index()<cr>', desc = "Open Wiki index" },
|
||||
{ "<leader>t", ':lua require("kiwi").todo.toggle()<cr>', desc = "Toggle Markdown Task" },
|
||||
},
|
||||
lazy = true,
|
||||
},
|
||||
{ "tpope/vim-abolish", event = "User AstroFile" },
|
||||
}
|
||||
10
plugins/luasnip.lua
Normal file
10
plugins/luasnip.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
optional = true,
|
||||
config = function(plugin, opts)
|
||||
require "plugins.configs.luasnip"(plugin, opts)
|
||||
require("luasnip.loaders.from_vscode").lazy_load { paths = { "./lua/user/snippets" } }
|
||||
end,
|
||||
}
|
||||
}
|
||||
33
polish.lua
Normal file
33
polish.lua
Normal file
@@ -0,0 +1,33 @@
|
||||
return function()
|
||||
--[[
|
||||
local function treesitter_is_parser_installed(filetype)
|
||||
if not filetype then return false end
|
||||
|
||||
local ok, parsers = pcall(require, "nvim-treesitter.parsers")
|
||||
if not ok then return false end
|
||||
local name = parsers.filetype_to_parsername[filetype]
|
||||
return name and #vim.api.nvim_get_runtime_file("parser/" .. name .. ".so", false) > 0
|
||||
end
|
||||
|
||||
-- Set foldmethod to treesitter only on BufEnter if we do have a parser and we're not in diffmode
|
||||
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWinEnter' }, {
|
||||
group = vim.api.nvim_create_augroup('TS_FOLD_WORKAROUND', {}),
|
||||
callback = function()
|
||||
if vim.wo.diff then return end
|
||||
if treesitter_is_parser_installed(vim.bo.filetype) then
|
||||
vim.wo.foldmethod = 'expr'
|
||||
vim.wo.foldexpr = 'nvim_treesitter#foldexpr()'
|
||||
end
|
||||
end
|
||||
})
|
||||
--]]
|
||||
|
||||
-- TODO Move to filetype plugin?
|
||||
vim.api.nvim_create_autocmd("TermOpen", {
|
||||
group = vim.api.nvim_create_augroup("term", { clear = true }),
|
||||
callback = function()
|
||||
vim.wo.number = false
|
||||
vim.wo.spell = false
|
||||
end
|
||||
})
|
||||
end
|
||||
14
snippets/package.json
Normal file
14
snippets/package.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "user snippets",
|
||||
"engines": {
|
||||
"vscode": "^1.11.0"
|
||||
},
|
||||
"contributes": {
|
||||
"snippets": [
|
||||
{
|
||||
"language": "rust",
|
||||
"path": "./rust.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
43
snippets/rust.json
Normal file
43
snippets/rust.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"New Yew function component": {
|
||||
"prefix": "yewfc",
|
||||
"body": [
|
||||
"#[derive(PartialEq, Properties)]",
|
||||
"pub struct ${1:ComponentName}Props {}",
|
||||
"",
|
||||
"#[function_component]",
|
||||
"pub fn $1(props: &${1}Props) -> Html {",
|
||||
" let ${1}Props {} = props;",
|
||||
" html! {",
|
||||
" <${2:div}>$0</${2}>",
|
||||
" }",
|
||||
"}"
|
||||
],
|
||||
"description": "Create a minimal Yew function component"
|
||||
},
|
||||
"New Yew struct component": {
|
||||
"prefix": "yewsc",
|
||||
"body": [
|
||||
"pub struct ${1:ComponentName};",
|
||||
"",
|
||||
"pub enum ${1}Msg {",
|
||||
"}",
|
||||
"",
|
||||
"impl Component for ${1} {",
|
||||
" type Message = ${1}Msg;",
|
||||
" type Properties = ();",
|
||||
"",
|
||||
" fn create(ctx: &Context<Self>) -> Self {",
|
||||
" Self",
|
||||
" }",
|
||||
"",
|
||||
" fn view(&self, ctx: &Context<Self>) -> Html {",
|
||||
" html! {",
|
||||
" $0",
|
||||
" }",
|
||||
" }",
|
||||
"}"
|
||||
],
|
||||
"description": "Create a new Yew component with a message enum"
|
||||
}
|
||||
}
|
||||
12
updater.lua
Normal file
12
updater.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
return {
|
||||
remote = "origin",
|
||||
channel = "nightly",
|
||||
version = "latest",
|
||||
branch = "main",
|
||||
commit = nil,
|
||||
pin_plugins = nil,
|
||||
skip_prompts = false,
|
||||
show_changelog = true,
|
||||
auto_reload = false,
|
||||
auto_quit = false,
|
||||
}
|
||||
Reference in New Issue
Block a user