Hopefully bootstraps correctly on a new system
This commit is contained in:
parent
89aac722fc
commit
1462720909
94
configs/nvim/after/plugin/bar.lua
Normal file
94
configs/nvim/after/plugin/bar.lua
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
-- Set barbar's options
|
||||||
|
require'bufferline'.setup {
|
||||||
|
-- Enable/disable animations
|
||||||
|
animation = true,
|
||||||
|
|
||||||
|
-- Enable/disable auto-hiding the tab bar when there is a single buffer
|
||||||
|
auto_hide = false,
|
||||||
|
|
||||||
|
-- Enable/disable current/total tabpages indicator (top right corner)
|
||||||
|
tabpages = true,
|
||||||
|
|
||||||
|
-- Enable/disable close button
|
||||||
|
closable = true,
|
||||||
|
|
||||||
|
-- Enables/disable clickable tabs
|
||||||
|
-- - left-click: go to buffer
|
||||||
|
-- - middle-click: delete buffer
|
||||||
|
clickable = true,
|
||||||
|
|
||||||
|
-- Enables / disables diagnostic symbols
|
||||||
|
diagnostics = {
|
||||||
|
-- you can use a list
|
||||||
|
{enabled = true, icon = 'ff'}, -- ERROR
|
||||||
|
{enabled = false}, -- WARN
|
||||||
|
{enabled = false}, -- INFO
|
||||||
|
{enabled = true}, -- HINT
|
||||||
|
|
||||||
|
-- OR `vim.diagnostic.severity`
|
||||||
|
[vim.diagnostic.severity.ERROR] = {enabled = true, icon = 'ff'},
|
||||||
|
[vim.diagnostic.severity.WARN] = {enabled = false},
|
||||||
|
[vim.diagnostic.severity.INFO] = {enabled = false},
|
||||||
|
[vim.diagnostic.severity.HINT] = {enabled = true},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Excludes buffers from the tabline
|
||||||
|
exclude_ft = {'javascript'},
|
||||||
|
exclude_name = {'package.json'},
|
||||||
|
|
||||||
|
-- Hide inactive buffers and file extensions. Other options are `alternate`, `current`, and `visible`.
|
||||||
|
-- hide = {extensions = true, inactive = true},
|
||||||
|
|
||||||
|
-- Disable highlighting alternate buffers
|
||||||
|
highlight_alternate = false,
|
||||||
|
|
||||||
|
-- Enable highlighting visible buffers
|
||||||
|
highlight_visible = true,
|
||||||
|
|
||||||
|
-- Enable/disable icons
|
||||||
|
-- if set to 'numbers', will show buffer index in the tabline
|
||||||
|
-- if set to 'both', will show buffer index and icons in the tabline
|
||||||
|
icons = false,
|
||||||
|
|
||||||
|
-- If set, the icon color will follow its corresponding buffer
|
||||||
|
-- highlight group. By default, the Buffer*Icon group is linked to the
|
||||||
|
-- Buffer* group (see Highlighting below). Otherwise, it will take its
|
||||||
|
-- default value as defined by devicons.
|
||||||
|
icon_custom_colors = false,
|
||||||
|
|
||||||
|
-- Configure icons on the bufferline.
|
||||||
|
icon_separator_active = '▎',
|
||||||
|
icon_separator_inactive = '▎',
|
||||||
|
icon_close_tab = '',
|
||||||
|
icon_close_tab_modified = '●',
|
||||||
|
icon_pinned = '車',
|
||||||
|
|
||||||
|
-- If true, new buffers will be inserted at the start/end of the list.
|
||||||
|
-- Default is to insert after current buffer.
|
||||||
|
insert_at_end = false,
|
||||||
|
insert_at_start = false,
|
||||||
|
|
||||||
|
-- Sets the maximum padding width with which to surround each tab
|
||||||
|
maximum_padding = 1,
|
||||||
|
|
||||||
|
-- Sets the minimum padding width with which to surround each tab
|
||||||
|
minimum_padding = 1,
|
||||||
|
|
||||||
|
-- Sets the maximum buffer name length.
|
||||||
|
maximum_length = 30,
|
||||||
|
|
||||||
|
-- If set, the letters for each buffer in buffer-pick mode will be
|
||||||
|
-- assigned based on their name. Otherwise or in case all letters are
|
||||||
|
-- already assigned, the behavior is to assign letters in order of
|
||||||
|
-- usability (see order below)
|
||||||
|
semantic_letters = true,
|
||||||
|
|
||||||
|
-- New buffer letters are assigned in this order. This order is
|
||||||
|
-- optimal for the qwerty keyboard layout but might need adjustement
|
||||||
|
-- for other layouts.
|
||||||
|
letters = 'asdfjkl;ghnmxcvbziowerutyqpASDFJKLGHNMXCVBZIOWERUTYQP',
|
||||||
|
|
||||||
|
-- Sets the name of unnamed buffers. By default format is "[Buffer X]"
|
||||||
|
-- where X is the buffer number. But only a static string is accepted here.
|
||||||
|
no_name_title = nil,
|
||||||
|
}
|
@ -1,446 +1,296 @@
|
|||||||
-- require('feline').setup()
|
---depends om https://github.com/feline-nvim/feline.nvim
|
||||||
|
local present, feline = pcall(require, "feline")
|
||||||
|
|
||||||
local fmt = string.format
|
if not present then
|
||||||
|
return
|
||||||
----------------------------------------------------------------------------------------------------
|
|
||||||
-- Colors
|
|
||||||
|
|
||||||
---Convert color number to hex string
|
|
||||||
---@param n number
|
|
||||||
---@return string
|
|
||||||
local hex = function(n)
|
|
||||||
if n then
|
|
||||||
return fmt("#%06x", n)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
---Parse `style` string into nvim_set_hl options
|
local theme = {
|
||||||
---@param style string
|
aqua = "#7AB0DF",
|
||||||
---@return table
|
bg = "#1C212A",
|
||||||
local function parse_style(style)
|
blue = "#5FB0FC",
|
||||||
if not style or style == "NONE" then
|
cyan = "#70C0BA",
|
||||||
return {}
|
darkred = "#FB7373",
|
||||||
end
|
fg = "#C7C7CA",
|
||||||
|
gray = "#222730",
|
||||||
local result = {}
|
green = "#79DCAA",
|
||||||
for token in string.gmatch(style, "([^,]+)") do
|
lime = "#54CED6",
|
||||||
result[token] = true
|
orange = "#FFD064",
|
||||||
end
|
pink = "#D997C8",
|
||||||
|
purple = "#C397D8",
|
||||||
return result
|
red = "#F87070",
|
||||||
end
|
yellow = "#FFE59E"
|
||||||
|
|
||||||
---Get highlight opts for a given highlight group name
|
|
||||||
---@param name string
|
|
||||||
---@return table
|
|
||||||
local function get_highlight(name)
|
|
||||||
local hl = vim.api.nvim_get_hl_by_name(name, true)
|
|
||||||
if hl.link then
|
|
||||||
return get_highlight(hl.link)
|
|
||||||
end
|
|
||||||
|
|
||||||
local result = parse_style(hl.style)
|
|
||||||
result.fg = hl.foreground and hex(hl.foreground)
|
|
||||||
result.bg = hl.background and hex(hl.background)
|
|
||||||
result.sp = hl.special and hex(hl.special)
|
|
||||||
|
|
||||||
return result
|
|
||||||
end
|
|
||||||
|
|
||||||
---Set highlight group from provided table
|
|
||||||
---@param groups table
|
|
||||||
local function set_highlights(groups)
|
|
||||||
for group, opts in pairs(groups) do
|
|
||||||
vim.api.nvim_set_hl(0, group, opts)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
---Generate a color palette from the current applied colorscheme
|
|
||||||
---@return table
|
|
||||||
local function generate_pallet_from_colorscheme()
|
|
||||||
-- stylua: ignore
|
|
||||||
local color_map = {
|
|
||||||
black = { index = 0, default = "#393b44" },
|
|
||||||
red = { index = 1, default = "#c94f6d" },
|
|
||||||
green = { index = 2, default = "#81b29a" },
|
|
||||||
yellow = { index = 3, default = "#dbc074" },
|
|
||||||
blue = { index = 4, default = "#719cd6" },
|
|
||||||
magenta = { index = 5, default = "#9d79d6" },
|
|
||||||
cyan = { index = 6, default = "#63cdcf" },
|
|
||||||
white = { index = 7, default = "#dfdfe0" },
|
|
||||||
}
|
|
||||||
|
|
||||||
local diagnostic_map = {
|
|
||||||
hint = { hl = "DiagnosticHint", default = color_map.green.default },
|
|
||||||
info = { hl = "DiagnosticInfo", default = color_map.blue.default },
|
|
||||||
warn = { hl = "DiagnosticWarn", default = color_map.yellow.default },
|
|
||||||
error = { hl = "DiagnosticError", default = color_map.red.default },
|
|
||||||
}
|
|
||||||
|
|
||||||
local pallet = {}
|
|
||||||
for name, value in pairs(color_map) do
|
|
||||||
local global_name = "terminal_color_" .. value.index
|
|
||||||
pallet[name] = vim.g[global_name] and vim.g[global_name] or value.default
|
|
||||||
end
|
|
||||||
|
|
||||||
for name, value in pairs(diagnostic_map) do
|
|
||||||
pallet[name] = get_highlight(value.hl).fg or value.default
|
|
||||||
end
|
|
||||||
|
|
||||||
pallet.sl = get_highlight("StatusLine")
|
|
||||||
pallet.sel = get_highlight("TabLineSel")
|
|
||||||
|
|
||||||
return pallet
|
|
||||||
end
|
|
||||||
|
|
||||||
---Generate user highlight groups based on the curent applied colorscheme
|
|
||||||
---
|
|
||||||
---NOTE: This is a global because I dont known where this file will be in your config
|
|
||||||
---and it is needed for the autocmd below
|
|
||||||
_G._generate_user_statusline_highlights = function()
|
|
||||||
local pal = generate_pallet_from_colorscheme()
|
|
||||||
|
|
||||||
-- stylua: ignore
|
|
||||||
local sl_colors = {
|
|
||||||
Black = { fg = pal.black, bg = pal.white },
|
|
||||||
Red = { fg = pal.red, bg = pal.sl.bg },
|
|
||||||
Green = { fg = pal.green, bg = pal.sl.bg },
|
|
||||||
Yellow = { fg = pal.yellow, bg = pal.sl.bg },
|
|
||||||
Blue = { fg = pal.blue, bg = pal.sl.bg },
|
|
||||||
Magenta = { fg = pal.magenta, bg = pal.sl.bg },
|
|
||||||
Cyan = { fg = pal.cyan, bg = pal.sl.bg },
|
|
||||||
White = { fg = pal.white, bg = pal.black },
|
|
||||||
}
|
|
||||||
|
|
||||||
local colors = {}
|
|
||||||
for name, value in pairs(sl_colors) do
|
|
||||||
colors["User" .. name] = { fg = value.fg, bg = value.bg, bold = true }
|
|
||||||
colors["UserRv" .. name] = { fg = value.bg, bg = value.fg, bold = true }
|
|
||||||
end
|
|
||||||
|
|
||||||
local status = vim.o.background == "dark" and { fg = pal.black, bg = pal.white } or { fg = pal.white, bg = pal.black }
|
|
||||||
|
|
||||||
local groups = {
|
|
||||||
-- statusline
|
|
||||||
UserSLHint = { fg = pal.sl.bg, bg = pal.hint, bold = true },
|
|
||||||
UserSLInfo = { fg = pal.sl.bg, bg = pal.info, bold = true },
|
|
||||||
UserSLWarn = { fg = pal.sl.bg, bg = pal.warn, bold = true },
|
|
||||||
UserSLError = { fg = pal.sl.bg, bg = pal.error, bold = true },
|
|
||||||
UserSLStatus = { fg = status.fg, bg = status.bg, bold = true },
|
|
||||||
|
|
||||||
UserSLFtHint = { fg = pal.sel.bg, bg = pal.hint },
|
|
||||||
UserSLHintInfo = { fg = pal.hint, bg = pal.info },
|
|
||||||
UserSLInfoWarn = { fg = pal.info, bg = pal.warn },
|
|
||||||
UserSLWarnError = { fg = pal.warn, bg = pal.error },
|
|
||||||
UserSLErrorStatus = { fg = pal.error, bg = status.bg },
|
|
||||||
UserSLStatusBg = { fg = status.bg, bg = pal.sl.bg },
|
|
||||||
|
|
||||||
UserSLAlt = pal.sel,
|
|
||||||
UserSLAltSep = { fg = pal.sl.bg, bg = pal.sel.bg },
|
|
||||||
UserSLGitBranch = { fg = pal.yellow, bg = pal.sl.bg },
|
|
||||||
}
|
|
||||||
|
|
||||||
set_highlights(vim.tbl_extend("force", colors, groups))
|
|
||||||
end
|
|
||||||
|
|
||||||
_generate_user_statusline_highlights()
|
|
||||||
|
|
||||||
vim.api.nvim_create_augroup("UserStatuslineHighlightGroups", { clear = true })
|
|
||||||
vim.api.nvim_create_autocmd({ "SessionLoadPost", "ColorScheme" }, {
|
|
||||||
callback = function()
|
|
||||||
_generate_user_statusline_highlights()
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------------------------------
|
|
||||||
-- Feline
|
|
||||||
|
|
||||||
local vi = {
|
|
||||||
-- Map vi mode to text name
|
|
||||||
text = {
|
|
||||||
n = "NORMAL",
|
|
||||||
no = "NORMAL",
|
|
||||||
i = "INSERT",
|
|
||||||
v = "VISUAL",
|
|
||||||
V = "V-LINE",
|
|
||||||
[""] = "V-BLOCK",
|
|
||||||
c = "COMMAND",
|
|
||||||
cv = "COMMAND",
|
|
||||||
ce = "COMMAND",
|
|
||||||
R = "REPLACE",
|
|
||||||
Rv = "REPLACE",
|
|
||||||
s = "SELECT",
|
|
||||||
S = "SELECT",
|
|
||||||
[""] = "SELECT",
|
|
||||||
t = "TERMINAL",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Maps vi mode to highlight group color defined above
|
|
||||||
colors = {
|
|
||||||
n = "UserRvCyan",
|
|
||||||
no = "UserRvCyan",
|
|
||||||
i = "UserSLStatus",
|
|
||||||
v = "UserRvMagenta",
|
|
||||||
V = "UserRvMagenta",
|
|
||||||
[""] = "UserRvMagenta",
|
|
||||||
R = "UserRvRed",
|
|
||||||
Rv = "UserRvRed",
|
|
||||||
r = "UserRvBlue",
|
|
||||||
rm = "UserRvBlue",
|
|
||||||
s = "UserRvMagenta",
|
|
||||||
S = "UserRvMagenta",
|
|
||||||
[""] = "FelnMagenta",
|
|
||||||
c = "UserRvYellow",
|
|
||||||
["!"] = "UserRvBlue",
|
|
||||||
t = "UserRvBlue",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Maps vi mode to seperator highlight goup defined above
|
|
||||||
sep = {
|
|
||||||
n = "UserCyan",
|
|
||||||
no = "UserCyan",
|
|
||||||
i = "UserSLStatusBg",
|
|
||||||
v = "UserMagenta",
|
|
||||||
V = "UserMagenta",
|
|
||||||
[""] = "UserMagenta",
|
|
||||||
R = "UserRed",
|
|
||||||
Rv = "UserRed",
|
|
||||||
r = "UserBlue",
|
|
||||||
rm = "UserBlue",
|
|
||||||
s = "UserMagenta",
|
|
||||||
S = "UserMagenta",
|
|
||||||
[""] = "FelnMagenta",
|
|
||||||
c = "UserYellow",
|
|
||||||
["!"] = "UserBlue",
|
|
||||||
t = "UserBlue",
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local icons = {
|
local mode_theme = {
|
||||||
locker = "", -- #f023
|
["NORMAL"] = theme.green,
|
||||||
page = "☰", -- 2630
|
["OP"] = theme.cyan,
|
||||||
line_number = "", -- e0a1
|
["INSERT"] = theme.aqua,
|
||||||
connected = "", -- f817
|
["VISUAL"] = theme.yellow,
|
||||||
dos = "", -- e70f
|
["LINES"] = theme.darkred,
|
||||||
unix = "", -- f17c
|
["BLOCK"] = theme.orange,
|
||||||
mac = "", -- f179
|
["REPLACE"] = theme.purple,
|
||||||
mathematical_L = "𝑳",
|
["V-REPLACE"] = theme.pink,
|
||||||
vertical_bar = "┃",
|
["ENTER"] = theme.pink,
|
||||||
vertical_bar_thin = "│",
|
["MORE"] = theme.pink,
|
||||||
left = "",
|
["SELECT"] = theme.darkred,
|
||||||
right = "",
|
["SHELL"] = theme.cyan,
|
||||||
block = "█",
|
["TERM"] = theme.lime,
|
||||||
left_filled = "",
|
["NONE"] = theme.gray,
|
||||||
right_filled = "",
|
["COMMAND"] = theme.blue,
|
||||||
slant_left = "",
|
|
||||||
slant_left_thin = "",
|
|
||||||
slant_right = "",
|
|
||||||
slant_right_thin = "",
|
|
||||||
slant_left_2 = "",
|
|
||||||
slant_left_2_thin = "",
|
|
||||||
slant_right_2 = "",
|
|
||||||
slant_right_2_thin = "",
|
|
||||||
left_rounded = "",
|
|
||||||
left_rounded_thin = "",
|
|
||||||
right_rounded = "",
|
|
||||||
right_rounded_thin = "",
|
|
||||||
circle = "●",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
---Get the number of diagnostic messages for the provided severity
|
local component = {}
|
||||||
---@param str string [ERROR | WARN | INFO | HINT]
|
|
||||||
---@return string
|
|
||||||
local function get_diag(str)
|
|
||||||
local diagnostics = vim.diagnostic.get(0, { severity = vim.diagnostic.severity[str] })
|
|
||||||
local count = #diagnostics
|
|
||||||
|
|
||||||
return (count > 0) and " " .. count .. " " or ""
|
component.vim_mode = {
|
||||||
end
|
|
||||||
|
|
||||||
---Get highlight group from vi mode
|
|
||||||
---@return string
|
|
||||||
local function vi_mode_hl()
|
|
||||||
return vi.colors[vim.fn.mode()] or "UserSLViBlack"
|
|
||||||
end
|
|
||||||
|
|
||||||
---Get sep highlight group from vi mode
|
|
||||||
local function vi_sep_hl()
|
|
||||||
return vi.sep[vim.fn.mode()] or "UserSLBlack"
|
|
||||||
end
|
|
||||||
|
|
||||||
---Get the path of the file relative to the cwd
|
|
||||||
---@return string
|
|
||||||
local function file_info()
|
|
||||||
local list = {}
|
|
||||||
if vim.bo.readonly then
|
|
||||||
table.insert(list, "🔒")
|
|
||||||
end
|
|
||||||
|
|
||||||
if vim.bo.modified then
|
|
||||||
table.insert(list, "●")
|
|
||||||
end
|
|
||||||
|
|
||||||
table.insert(list, vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), ":~:."))
|
|
||||||
|
|
||||||
return table.concat(list, " ")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Create a table that contians every status line commonent
|
|
||||||
local c = {
|
|
||||||
vimode = {
|
|
||||||
provider = function()
|
provider = function()
|
||||||
return fmt(" %s ", vi.text[vim.fn.mode()])
|
return vim.api.nvim_get_mode().mode:upper()
|
||||||
end,
|
end,
|
||||||
hl = vi_mode_hl,
|
hl = function()
|
||||||
right_sep = { str = " ", hl = vi_sep_hl },
|
return {
|
||||||
},
|
fg = "bg",
|
||||||
gitbranch = {
|
bg = require("feline.providers.vi_mode").get_mode_color(),
|
||||||
|
style = "bold",
|
||||||
|
name = "NeovimModeHLColor",
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
left_sep = "block",
|
||||||
|
right_sep = "block",
|
||||||
|
}
|
||||||
|
|
||||||
|
component.git_branch = {
|
||||||
provider = "git_branch",
|
provider = "git_branch",
|
||||||
icon = " ",
|
hl = {
|
||||||
hl = "UserSLGitBranch",
|
fg = "fg",
|
||||||
right_sep = { str = " ", hl = "UserSLGitBranch" },
|
bg = "bg",
|
||||||
enabled = function()
|
style = "bold",
|
||||||
return vim.b.gitsigns_status_dict ~= nil
|
|
||||||
end,
|
|
||||||
},
|
},
|
||||||
file_type = {
|
left_sep = "block",
|
||||||
provider = function()
|
right_sep = "",
|
||||||
return fmt(" %s ", vim.bo.filetype:upper())
|
}
|
||||||
end,
|
|
||||||
hl = "UserSLAlt",
|
component.git_add = {
|
||||||
|
provider = "git_diff_added",
|
||||||
|
hl = {
|
||||||
|
fg = "green",
|
||||||
|
bg = "bg",
|
||||||
},
|
},
|
||||||
fileinfo = {
|
left_sep = "",
|
||||||
provider = { name = "file_info", opts = { type = "relative" } },
|
right_sep = "",
|
||||||
hl = "UserSLAlt",
|
}
|
||||||
left_sep = { str = " ", hl = "UserSLAltSep" },
|
|
||||||
right_sep = { str = " ", hl = "UserSLAltSep" },
|
component.git_delete = {
|
||||||
|
provider = "git_diff_removed",
|
||||||
|
hl = {
|
||||||
|
fg = "red",
|
||||||
|
bg = "bg",
|
||||||
},
|
},
|
||||||
file_enc = {
|
left_sep = "",
|
||||||
provider = function()
|
right_sep = "",
|
||||||
local os = icons[vim.bo.fileformat] or ""
|
}
|
||||||
return fmt(" %s %s ", os, vim.bo.fileencoding)
|
|
||||||
end,
|
component.git_change = {
|
||||||
hl = "StatusLine",
|
provider = "git_diff_changed",
|
||||||
left_sep = { str = icons.left_filled, hl = "UserSLAltSep" },
|
hl = {
|
||||||
|
fg = "purple",
|
||||||
|
bg = "bg",
|
||||||
},
|
},
|
||||||
cur_position = {
|
left_sep = "",
|
||||||
provider = function()
|
right_sep = "",
|
||||||
-- TODO: What about 4+ diget line numbers?
|
}
|
||||||
return fmt(" %3d:%-2d ", unpack(vim.api.nvim_win_get_cursor(0)))
|
|
||||||
end,
|
component.separator = {
|
||||||
hl = vi_mode_hl,
|
|
||||||
left_sep = { str = icons.left_filled, hl = vi_sep_hl },
|
|
||||||
},
|
|
||||||
cur_percent = {
|
|
||||||
provider = function()
|
|
||||||
return " " .. require("feline.providers.cursor").line_percentage() .. " "
|
|
||||||
end,
|
|
||||||
hl = vi_mode_hl,
|
|
||||||
left_sep = { str = icons.left, hl = vi_mode_hl },
|
|
||||||
},
|
|
||||||
default = { -- needed to pass the parent StatusLine hl group to right hand side
|
|
||||||
provider = "",
|
provider = "",
|
||||||
hl = "StatusLine",
|
hl = {
|
||||||
},
|
fg = "bg",
|
||||||
lsp_status = {
|
bg = "bg",
|
||||||
provider = function()
|
|
||||||
return vim.tbl_count(vim.lsp.buf_get_clients(0)) == 0 and "" or " ◦ "
|
|
||||||
end,
|
|
||||||
hl = "UserSLStatus",
|
|
||||||
left_sep = { str = "", hl = "UserSLStatusBg", always_visible = true },
|
|
||||||
right_sep = { str = "", hl = "UserSLErrorStatus", always_visible = true },
|
|
||||||
},
|
|
||||||
lsp_error = {
|
|
||||||
provider = function()
|
|
||||||
return get_diag("ERROR")
|
|
||||||
end,
|
|
||||||
hl = "UserSLError",
|
|
||||||
right_sep = { str = "", hl = "UserSLWarnError", always_visible = true },
|
|
||||||
},
|
|
||||||
lsp_warn = {
|
|
||||||
provider = function()
|
|
||||||
return get_diag("WARN")
|
|
||||||
end,
|
|
||||||
hl = "UserSLWarn",
|
|
||||||
right_sep = { str = "", hl = "UserSLInfoWarn", always_visible = true },
|
|
||||||
},
|
|
||||||
lsp_info = {
|
|
||||||
provider = function()
|
|
||||||
return get_diag("INFO")
|
|
||||||
end,
|
|
||||||
hl = "UserSLInfo",
|
|
||||||
right_sep = { str = "", hl = "UserSLHintInfo", always_visible = true },
|
|
||||||
},
|
|
||||||
lsp_hint = {
|
|
||||||
provider = function()
|
|
||||||
return get_diag("HINT")
|
|
||||||
end,
|
|
||||||
hl = "UserSLHint",
|
|
||||||
right_sep = { str = "", hl = "UserSLFtHint", always_visible = true },
|
|
||||||
},
|
|
||||||
|
|
||||||
in_fileinfo = {
|
|
||||||
provider = "file_info",
|
|
||||||
hl = "StatusLine",
|
|
||||||
},
|
|
||||||
in_position = {
|
|
||||||
provider = "position",
|
|
||||||
hl = "StatusLine",
|
|
||||||
},
|
|
||||||
file_winbar = {
|
|
||||||
provider = file_info,
|
|
||||||
hl = "Comment",
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
local active = {
|
component.diagnostic_errors = {
|
||||||
{ -- left
|
provider = "diagnostic_errors",
|
||||||
c.vimode,
|
hl = {
|
||||||
c.gitbranch,
|
fg = "red",
|
||||||
c.fileinfo,
|
|
||||||
c.default, -- must be last
|
|
||||||
},
|
|
||||||
{ -- right
|
|
||||||
c.lsp_status,
|
|
||||||
c.lsp_error,
|
|
||||||
c.lsp_warn,
|
|
||||||
c.lsp_info,
|
|
||||||
c.lsp_hint,
|
|
||||||
c.file_type,
|
|
||||||
c.file_enc,
|
|
||||||
c.cur_position,
|
|
||||||
c.cur_percent,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
local inactive = {
|
component.diagnostic_warnings = {
|
||||||
{ c.in_fileinfo }, -- left
|
provider = "diagnostic_warnings",
|
||||||
{ c.in_position }, -- right
|
hl = {
|
||||||
|
fg = "yellow",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
require("feline").setup({
|
component.diagnostic_hints = {
|
||||||
components = { active = active, inactive = inactive },
|
provider = "diagnostic_hints",
|
||||||
highlight_reset_triggers = {},
|
hl = {
|
||||||
force_inactive = {
|
fg = "aqua",
|
||||||
filetypes = {
|
|
||||||
"NvimTree",
|
|
||||||
"packer",
|
|
||||||
"dap-repl",
|
|
||||||
"dapui_scopes",
|
|
||||||
"dapui_stacks",
|
|
||||||
"dapui_watches",
|
|
||||||
"dapui_repl",
|
|
||||||
"LspTrouble",
|
|
||||||
"qf",
|
|
||||||
"help",
|
|
||||||
},
|
},
|
||||||
buftypes = { "terminal" },
|
}
|
||||||
bufnames = {},
|
|
||||||
},
|
component.diagnostic_info = {
|
||||||
disable = {
|
provider = "diagnostic_info",
|
||||||
filetypes = {
|
}
|
||||||
"dashboard",
|
|
||||||
"startify",
|
component.lsp = {
|
||||||
|
provider = function()
|
||||||
|
if not rawget(vim, "lsp") then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
local progress = vim.lsp.util.get_progress_messages()[1]
|
||||||
|
if vim.o.columns < 120 then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
local clients = vim.lsp.get_active_clients({ bufnr = 0 })
|
||||||
|
if #clients ~= 0 then
|
||||||
|
if progress then
|
||||||
|
local spinners = {
|
||||||
|
"◜ ",
|
||||||
|
"◠ ",
|
||||||
|
"◝ ",
|
||||||
|
"◞ ",
|
||||||
|
"◡ ",
|
||||||
|
"◟ ",
|
||||||
|
}
|
||||||
|
local ms = vim.loop.hrtime() / 1000000
|
||||||
|
local frame = math.floor(ms / 120) % #spinners
|
||||||
|
local content = string.format("%%<%s", spinners[frame + 1])
|
||||||
|
return content or ""
|
||||||
|
else
|
||||||
|
return "לּ LSP"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ""
|
||||||
|
end,
|
||||||
|
hl = function()
|
||||||
|
local progress = vim.lsp.util.get_progress_messages()[1]
|
||||||
|
return {
|
||||||
|
fg = progress and "yellow" or "green",
|
||||||
|
bg = "gray",
|
||||||
|
style = "bold",
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
left_sep = "",
|
||||||
|
right_sep = "block",
|
||||||
|
}
|
||||||
|
|
||||||
|
component.file_type = {
|
||||||
|
provider = {
|
||||||
|
name = "file_type",
|
||||||
|
opts = {
|
||||||
|
filetype_icon = true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
hl = {
|
||||||
|
fg = "fg",
|
||||||
|
bg = "gray",
|
||||||
|
},
|
||||||
|
left_sep = "block",
|
||||||
|
right_sep = "block",
|
||||||
|
}
|
||||||
|
|
||||||
|
component.scroll_bar = {
|
||||||
|
provider = function()
|
||||||
|
local chars = {
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
" ",
|
||||||
|
}
|
||||||
|
local line_ratio = vim.api.nvim_win_get_cursor(0)[1] / vim.api.nvim_buf_line_count(0)
|
||||||
|
local position = math.floor(line_ratio * 100)
|
||||||
|
|
||||||
|
if position <= 5 then
|
||||||
|
position = " TOP"
|
||||||
|
elseif position >= 95 then
|
||||||
|
position = " BOT"
|
||||||
|
else
|
||||||
|
position = chars[math.floor(line_ratio * #chars)] .. position
|
||||||
|
end
|
||||||
|
return position
|
||||||
|
end,
|
||||||
|
hl = function()
|
||||||
|
local position = math.floor(vim.api.nvim_win_get_cursor(0)[1] / vim.api.nvim_buf_line_count(0) * 100)
|
||||||
|
local fg
|
||||||
|
local style
|
||||||
|
|
||||||
|
if position <= 5 then
|
||||||
|
fg = "aqua"
|
||||||
|
style = "bold"
|
||||||
|
elseif position >= 95 then
|
||||||
|
fg = "red"
|
||||||
|
style = "bold"
|
||||||
|
else
|
||||||
|
fg = "purple"
|
||||||
|
style = nil
|
||||||
|
end
|
||||||
|
return {
|
||||||
|
fg = fg,
|
||||||
|
style = "bold",
|
||||||
|
bg = "bg",
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
left_sep = "block",
|
||||||
|
right_sep = "block",
|
||||||
|
}
|
||||||
|
|
||||||
|
local left = {
|
||||||
|
component.vim_mode,
|
||||||
|
}
|
||||||
|
local middle = {}
|
||||||
|
local right = {
|
||||||
|
component.file_type,
|
||||||
|
component.lsp,
|
||||||
|
component.git_branch,
|
||||||
|
component.git_add,
|
||||||
|
component.git_delete,
|
||||||
|
component.git_change,
|
||||||
|
component.separator,
|
||||||
|
component.diagnostic_errors,
|
||||||
|
component.diagnostic_warnings,
|
||||||
|
component.diagnostic_info,
|
||||||
|
component.diagnostic_hints,
|
||||||
|
component.scroll_bar,
|
||||||
|
}
|
||||||
|
|
||||||
|
local components = {
|
||||||
|
active = {
|
||||||
|
left,
|
||||||
|
middle,
|
||||||
|
right,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
feline.setup({
|
||||||
|
components = components,
|
||||||
|
theme = theme,
|
||||||
|
vi_mode_colors = mode_theme,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
---vim:filetype=lua
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
local mark = require("harpoon.mark")
|
local mark = require("harpoon.mark")
|
||||||
local ui = require("harpoon.ui")
|
local ui = require("harpoon.ui")
|
||||||
|
local term = require("harpoon.term")
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>a", mark.add_file)
|
vim.keymap.set("n", "<leader>a", mark.add_file)
|
||||||
vim.keymap.set("n", "<C-e>", ui.toggle_quick_menu)
|
vim.keymap.set("n", "<C-e>", ui.toggle_quick_menu)
|
||||||
@ -9,3 +10,5 @@ vim.keymap.set("n", "<C-h>", function() ui.nav_file(1) end)
|
|||||||
vim.keymap.set("n", "<C-t>", function() ui.nav_file(2) end)
|
vim.keymap.set("n", "<C-t>", function() ui.nav_file(2) end)
|
||||||
vim.keymap.set("n", "<C-n>", function() ui.nav_file(3) end)
|
vim.keymap.set("n", "<C-n>", function() ui.nav_file(3) end)
|
||||||
vim.keymap.set("n", "<C-s>", function() ui.nav_file(4) end)
|
vim.keymap.set("n", "<C-s>", function() ui.nav_file(4) end)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>t", function() term.gotoTerminal(1) end)
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
require("jabuxas.remap")
|
require("jabuxas.remap")
|
||||||
require("jabuxas.set")
|
require("jabuxas.set")
|
||||||
require("jabuxas.bar")
|
require("jabuxas.bar")
|
||||||
|
require("jabuxas.packer")
|
||||||
|
@ -1,21 +1,26 @@
|
|||||||
-- This file can be loaded by calling `lua require('plugins')` from your init.vim
|
local ensure_packer = function()
|
||||||
|
local fn = vim.fn
|
||||||
|
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
|
||||||
|
if fn.empty(fn.glob(install_path)) > 0 then
|
||||||
|
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
|
||||||
|
vim.cmd [[packadd packer.nvim]]
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
-- Only required if you have packer configured as `opt`
|
local packer_bootstrap = ensure_packer()
|
||||||
vim.cmd [[packadd packer.nvim]]
|
|
||||||
|
|
||||||
return require('packer').startup(function(use)
|
return require('packer').startup(function(use)
|
||||||
-- Packer can manage itself
|
-- Packer can manage itself
|
||||||
use 'wbthomason/packer.nvim'
|
use 'wbthomason/packer.nvim'
|
||||||
|
|
||||||
-- Simple plugins can be specified as strings
|
-- Simple plugins can be specified as strings
|
||||||
use 'rstacruz/vim-closer'
|
use 'rstacruz/vim-closer'
|
||||||
|
|
||||||
use {
|
use {
|
||||||
'nvim-telescope/telescope.nvim', tag = '0.1.0',
|
'nvim-telescope/telescope.nvim', tag = '0.1.0',
|
||||||
-- or , branch = '0.1.x',
|
-- or , branch = '0.1.x',
|
||||||
requires = { {'nvim-lua/plenary.nvim'} }
|
requires = { {'nvim-lua/plenary.nvim'} }
|
||||||
}
|
}
|
||||||
|
|
||||||
use({
|
use({
|
||||||
'rose-pine/neovim',
|
'rose-pine/neovim',
|
||||||
as = 'rose-pine',
|
as = 'rose-pine',
|
||||||
@ -23,14 +28,11 @@ return require('packer').startup(function(use)
|
|||||||
vim.cmd('colorscheme rose-pine')
|
vim.cmd('colorscheme rose-pine')
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'})
|
use('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'})
|
||||||
|
|
||||||
use('nvim-treesitter/playground')
|
use('nvim-treesitter/playground')
|
||||||
use('theprimeagen/harpoon')
|
use('theprimeagen/harpoon')
|
||||||
use('mbbill/undotree')
|
use('mbbill/undotree')
|
||||||
use('tpope/vim-fugitive')
|
use('tpope/vim-fugitive')
|
||||||
|
|
||||||
use({
|
use({
|
||||||
"jose-elias-alvarez/null-ls.nvim",
|
"jose-elias-alvarez/null-ls.nvim",
|
||||||
config = function()
|
config = function()
|
||||||
@ -38,7 +40,6 @@ return require('packer').startup(function(use)
|
|||||||
end,
|
end,
|
||||||
requires = { "nvim-lua/plenary.nvim" },
|
requires = { "nvim-lua/plenary.nvim" },
|
||||||
})
|
})
|
||||||
|
|
||||||
use {
|
use {
|
||||||
'nvim-tree/nvim-tree.lua',
|
'nvim-tree/nvim-tree.lua',
|
||||||
requires = {
|
requires = {
|
||||||
@ -46,7 +47,6 @@ return require('packer').startup(function(use)
|
|||||||
},
|
},
|
||||||
tag = 'nightly' -- optional, updated every week. (see issue #1193)
|
tag = 'nightly' -- optional, updated every week. (see issue #1193)
|
||||||
}
|
}
|
||||||
|
|
||||||
use {
|
use {
|
||||||
'VonHeikemen/lsp-zero.nvim',
|
'VonHeikemen/lsp-zero.nvim',
|
||||||
requires = {
|
requires = {
|
||||||
@ -54,7 +54,6 @@ return require('packer').startup(function(use)
|
|||||||
{'neovim/nvim-lspconfig'},
|
{'neovim/nvim-lspconfig'},
|
||||||
{'williamboman/mason.nvim'},
|
{'williamboman/mason.nvim'},
|
||||||
{'williamboman/mason-lspconfig.nvim'},
|
{'williamboman/mason-lspconfig.nvim'},
|
||||||
|
|
||||||
-- Autocompletion
|
-- Autocompletion
|
||||||
{'hrsh7th/nvim-cmp'},
|
{'hrsh7th/nvim-cmp'},
|
||||||
{'hrsh7th/cmp-buffer'},
|
{'hrsh7th/cmp-buffer'},
|
||||||
@ -62,27 +61,42 @@ return require('packer').startup(function(use)
|
|||||||
{'saadparwaiz1/cmp_luasnip'},
|
{'saadparwaiz1/cmp_luasnip'},
|
||||||
{'hrsh7th/cmp-nvim-lsp'},
|
{'hrsh7th/cmp-nvim-lsp'},
|
||||||
{'hrsh7th/cmp-nvim-lua'},
|
{'hrsh7th/cmp-nvim-lua'},
|
||||||
|
|
||||||
-- Snippets
|
-- Snippets
|
||||||
{'L3MON4D3/LuaSnip'},
|
{'L3MON4D3/LuaSnip'},
|
||||||
-- Snippet Collection (Optional)
|
-- Snippet Collection (Optional)
|
||||||
{'rafamadriz/friendly-snippets'},
|
{'rafamadriz/friendly-snippets'},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
use {
|
use {
|
||||||
'numToStr/Comment.nvim',
|
'numToStr/Comment.nvim',
|
||||||
config = function()
|
config = function()
|
||||||
require('Comment').setup()
|
require('Comment').setup()
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
use 'nvim-tree/nvim-web-devicons'
|
use 'nvim-tree/nvim-web-devicons'
|
||||||
use {'romgrk/barbar.nvim', wants = 'nvim-web-devicons'}
|
use {'romgrk/barbar.nvim', wants = 'nvim-web-devicons'}
|
||||||
|
|
||||||
use 'feline-nvim/feline.nvim'
|
use 'feline-nvim/feline.nvim'
|
||||||
use 'xiyaowong/nvim-transparent'
|
use 'xiyaowong/nvim-transparent'
|
||||||
|
|
||||||
use 'windwp/nvim-autopairs'
|
use 'windwp/nvim-autopairs'
|
||||||
|
-- use({
|
||||||
|
-- 'nyoom-engineering/oxocarbon.nvim',
|
||||||
|
-- as = 'oxocarbon',
|
||||||
|
-- config = function()
|
||||||
|
-- vim.opt.background = "dark"
|
||||||
|
-- vim.cmd('colorscheme oxocarbon')
|
||||||
|
-- end
|
||||||
|
-- })
|
||||||
|
--
|
||||||
|
if packer_bootstrap then
|
||||||
|
require('packer').sync()
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
-- -- Automatically source and re-compile packer whenever you save this init.lua
|
||||||
|
-- local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true })
|
||||||
|
-- vim.api.nvim_create_autocmd('BufWritePost', {
|
||||||
|
-- command = 'source <afile> | silent! LspStop | silent! LspStart | PackerCompile',
|
||||||
|
-- group = packer_group,
|
||||||
|
-- pattern = vim.fn.expand '$MYVIMRC',
|
||||||
|
-- })
|
||||||
|
@ -31,3 +31,5 @@ vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz")
|
|||||||
|
|
||||||
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
|
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
|
||||||
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true })
|
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true })
|
||||||
|
|
||||||
|
vim.keymap.set("t", "<leader><Esc>", [[<C-\><C-n>]])
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
vim.opt.guicursor = ""
|
-- vim.opt.guicursor = ""
|
||||||
|
vim.opt.mouse = 'a'
|
||||||
|
|
||||||
vim.opt.nu = true
|
vim.opt.nu = true
|
||||||
vim.opt.relativenumber = true
|
vim.opt.relativenumber = true
|
||||||
@ -35,3 +36,7 @@ vim.g.mapleader = " "
|
|||||||
vim.g.loaded_netrw = 1
|
vim.g.loaded_netrw = 1
|
||||||
vim.g.loaded_netrwPlugin = 1
|
vim.g.loaded_netrwPlugin = 1
|
||||||
|
|
||||||
|
-- Case insensitive searching UNLESS /C or capital in search
|
||||||
|
vim.o.ignorecase = true
|
||||||
|
vim.o.completeopt = 'menuone,noselect'
|
||||||
|
vim.o.smartcase = true
|
||||||
|
Loading…
Reference in New Issue
Block a user