Linted all files

This commit is contained in:
Kristofers Solo 2022-08-01 08:26:03 +03:00
parent a7bec557b8
commit d68a56ae9a
37 changed files with 3225 additions and 3102 deletions

View File

@ -186,8 +186,8 @@ draw_bold_text_with_bright_colors: true
colors: colors:
# Default colors # Default colors
primary: primary:
background: "#1d1f21" background: '#1d1f21'
foreground: "#c5c8c6" foreground: '#c5c8c6'
# Bright and dim foreground colors # Bright and dim foreground colors
# #
@ -195,8 +195,8 @@ colors:
# present. If the bright foreground color is not set, or # present. If the bright foreground color is not set, or
# `draw_bold_text_with_bright_colors` is `false`, the normal foreground # `draw_bold_text_with_bright_colors` is `false`, the normal foreground
# color will be used. # color will be used.
dim_foreground: "#828482" dim_foreground: '#828482'
bright_foreground: "#eaeaea" bright_foreground: '#eaeaea'
# Cursor colors # Cursor colors
# #
@ -232,8 +232,8 @@ colors:
# background: '#000000' # background: '#000000'
bar: bar:
background: "#282828" background: '#282828'
foreground: "#EBEBE9" foreground: '#EBEBE9'
# Keyboard regex hints # Keyboard regex hints
hints: hints:
@ -242,16 +242,16 @@ colors:
# Allowed values are CellForeground/CellBackground, which reference the # Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff. # affected cell, or hexadecimal colors like #ff00ff.
start: start:
foreground: "#1d1f21" foreground: '#1d1f21'
background: "#e9ff5e" background: '#e9ff5e'
# All characters after the first one in the hint label # All characters after the first one in the hint label
# #
# Allowed values are CellForeground/CellBackground, which reference the # Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff. # affected cell, or hexadecimal colors like #ff00ff.
end: end:
foreground: "#e9ff5e" foreground: '#e9ff5e'
background: "#1d1f21" background: '#1d1f21'
# Line indicator # Line indicator
# #
@ -275,39 +275,39 @@ colors:
# Normal colors # Normal colors
normal: normal:
black: "#313539" black: '#313539'
red: "#b02626" red: '#b02626'
green: "#40a62f" green: '#40a62f'
yellow: "#f1e635" yellow: '#f1e635'
blue: "#314ad0" blue: '#314ad0'
magenta: "#b30ad0" magenta: '#b30ad0'
cyan: "#32d0fc" cyan: '#32d0fc'
white: "#acadb1" white: '#acadb1'
# Bright colors # Bright colors
bright: bright:
black: "#717174" black: '#717174'
red: "#b02626" red: '#b02626'
green: "#40a62f" green: '#40a62f'
yellow: "#f1e635" yellow: '#f1e635'
blue: "#314ad0" blue: '#314ad0'
magenta: "#b30ad0" magenta: '#b30ad0'
cyan: "#32d0fc" cyan: '#32d0fc'
white: "#acadb1" white: '#acadb1'
# Dim colors # Dim colors
# #
# If the dim colors are not set, they will be calculated automatically based # If the dim colors are not set, they will be calculated automatically based
# on the `normal` colors. # on the `normal` colors.
dim: dim:
black: "#676f78" black: '#676f78'
red: "#b55454" red: '#b55454'
green: "#78a670" green: '#78a670'
yellow: "#faf380" yellow: '#faf380'
blue: "#707fd0" blue: '#707fd0'
magenta: "#c583d0" magenta: '#c583d0'
cyan: "#8adaf1" cyan: '#8adaf1'
white: "#e0e3e7" white: '#e0e3e7'
# Indexed Colors # Indexed Colors
# #

File diff suppressed because it is too large Load Diff

View File

@ -31,103 +31,101 @@ local json = { _version = "0.1.2" }
local encode local encode
local escape_char_map = { local escape_char_map = {
["\\"] = "\\", ["\\"] = "\\",
["\""] = "\"", ['"'] = '"',
["\b"] = "b", ["\b"] = "b",
["\f"] = "f", ["\f"] = "f",
["\n"] = "n", ["\n"] = "n",
["\r"] = "r", ["\r"] = "r",
["\t"] = "t", ["\t"] = "t",
} }
local escape_char_map_inv = { ["/"] = "/" } local escape_char_map_inv = { ["/"] = "/" }
for k, v in pairs(escape_char_map) do for k, v in pairs(escape_char_map) do
escape_char_map_inv[v] = k escape_char_map_inv[v] = k
end end
local function escape_char(c) local function escape_char(c)
return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte())) return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte()))
end end
local function encode_nil(val) local function encode_nil(val)
return "null" return "null"
end end
local function encode_table(val, stack) local function encode_table(val, stack)
local res = {} local res = {}
stack = stack or {} stack = stack or {}
-- Circular reference? -- Circular reference?
if stack[val] then error("circular reference") end if stack[val] then
error("circular reference")
end
stack[val] = true stack[val] = true
if rawget(val, 1) ~= nil or next(val) == nil then if rawget(val, 1) ~= nil or next(val) == nil then
-- Treat as array -- check keys are valid and it is not sparse -- Treat as array -- check keys are valid and it is not sparse
local n = 0 local n = 0
for k in pairs(val) do for k in pairs(val) do
if type(k) ~= "number" then if type(k) ~= "number" then
error("invalid table: mixed or invalid key types") error("invalid table: mixed or invalid key types")
end end
n = n + 1 n = n + 1
end end
if n ~= #val then if n ~= #val then
error("invalid table: sparse array") error("invalid table: sparse array")
end end
-- Encode -- Encode
for i, v in ipairs(val) do for i, v in ipairs(val) do
table.insert(res, encode(v, stack)) table.insert(res, encode(v, stack))
end end
stack[val] = nil stack[val] = nil
return "[" .. table.concat(res, ",") .. "]" return "[" .. table.concat(res, ",") .. "]"
else
else -- Treat as an object
-- Treat as an object for k, v in pairs(val) do
for k, v in pairs(val) do if type(k) ~= "string" then
if type(k) ~= "string" then error("invalid table: mixed or invalid key types")
error("invalid table: mixed or invalid key types") end
end table.insert(res, encode(k, stack) .. ":" .. encode(v, stack))
table.insert(res, encode(k, stack) .. ":" .. encode(v, stack)) end
end stack[val] = nil
stack[val] = nil return "{" .. table.concat(res, ",") .. "}"
return "{" .. table.concat(res, ",") .. "}" end
end
end end
local function encode_string(val) local function encode_string(val)
return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
end end
local function encode_number(val) local function encode_number(val)
-- Check for NaN, -inf and inf -- Check for NaN, -inf and inf
if val ~= val or val <= -math.huge or val >= math.huge then if val ~= val or val <= -math.huge or val >= math.huge then
error("unexpected number value '" .. tostring(val) .. "'") error("unexpected number value '" .. tostring(val) .. "'")
end end
return string.format("%.14g", val) return string.format("%.14g", val)
end end
local type_func_map = { local type_func_map = {
["nil"] = encode_nil, ["nil"] = encode_nil,
["table"] = encode_table, ["table"] = encode_table,
["string"] = encode_string, ["string"] = encode_string,
["number"] = encode_number, ["number"] = encode_number,
["boolean"] = tostring, ["boolean"] = tostring,
} }
encode = function(val, stack) encode = function(val, stack)
local t = type(val) local t = type(val)
local f = type_func_map[t] local f = type_func_map[t]
if f then if f then
return f(val, stack) return f(val, stack)
end end
error("unexpected type '" .. t .. "'") error("unexpected type '" .. t .. "'")
end end
function json.encode(val) function json.encode(val)
return (encode(val)) return (encode(val))
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -137,236 +135,238 @@ end
local parse local parse
local function create_set(...) local function create_set(...)
local res = {} local res = {}
for i = 1, select("#", ...) do for i = 1, select("#", ...) do
res[select(i, ...)] = true res[select(i, ...)] = true
end end
return res return res
end end
local space_chars = create_set(" ", "\t", "\r", "\n") local space_chars = create_set(" ", "\t", "\r", "\n")
local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",") local delim_chars = create_set(" ", "\t", "\r", "\n", "]", "}", ",")
local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u") local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
local literals = create_set("true", "false", "null") local literals = create_set("true", "false", "null")
local literal_map = { local literal_map = {
["true"] = true, ["true"] = true,
["false"] = false, ["false"] = false,
["null"] = nil, ["null"] = nil,
} }
local function next_char(str, idx, set, negate) local function next_char(str, idx, set, negate)
for i = idx, #str do for i = idx, #str do
if set[str:sub(i, i)] ~= negate then if set[str:sub(i, i)] ~= negate then
return i return i
end end
end end
return #str + 1 return #str + 1
end end
local function decode_error(str, idx, msg) local function decode_error(str, idx, msg)
local line_count = 1 local line_count = 1
local col_count = 1 local col_count = 1
for i = 1, idx - 1 do for i = 1, idx - 1 do
col_count = col_count + 1 col_count = col_count + 1
if str:sub(i, i) == "\n" then if str:sub(i, i) == "\n" then
line_count = line_count + 1 line_count = line_count + 1
col_count = 1 col_count = 1
end end
end end
error(string.format("%s at line %d col %d", msg, line_count, col_count)) error(string.format("%s at line %d col %d", msg, line_count, col_count))
end end
local function codepoint_to_utf8(n) local function codepoint_to_utf8(n)
-- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
local f = math.floor local f = math.floor
if n <= 0x7f then if n <= 0x7f then
return string.char(n) return string.char(n)
elseif n <= 0x7ff then elseif n <= 0x7ff then
return string.char(f(n / 64) + 192, n % 64 + 128) return string.char(f(n / 64) + 192, n % 64 + 128)
elseif n <= 0xffff then elseif n <= 0xffff then
return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128) return string.char(f(n / 4096) + 224, f(n % 4096 / 64) + 128, n % 64 + 128)
elseif n <= 0x10ffff then elseif n <= 0x10ffff then
return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, f(n % 4096 / 64) + 128, n % 64 + 128)
f(n % 4096 / 64) + 128, n % 64 + 128) end
end error(string.format("invalid unicode codepoint '%x'", n))
error(string.format("invalid unicode codepoint '%x'", n))
end end
local function parse_unicode_escape(s) local function parse_unicode_escape(s)
local n1 = tonumber(s:sub(1, 4), 16) local n1 = tonumber(s:sub(1, 4), 16)
local n2 = tonumber(s:sub(7, 10), 16) local n2 = tonumber(s:sub(7, 10), 16)
-- Surrogate pair? -- Surrogate pair?
if n2 then if n2 then
return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
else else
return codepoint_to_utf8(n1) return codepoint_to_utf8(n1)
end end
end end
local function parse_string(str, i) local function parse_string(str, i)
local res = "" local res = ""
local j = i + 1 local j = i + 1
local k = j local k = j
while j <= #str do while j <= #str do
local x = str:byte(j) local x = str:byte(j)
if x < 32 then if x < 32 then
decode_error(str, j, "control character in string") decode_error(str, j, "control character in string")
elseif x == 92 then -- `\`: Escape
res = res .. str:sub(k, j - 1)
j = j + 1
local c = str:sub(j, j)
if c == "u" then
local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1)
or str:match("^%x%x%x%x", j + 1)
or decode_error(str, j - 1, "invalid unicode escape in string")
res = res .. parse_unicode_escape(hex)
j = j + #hex
else
if not escape_chars[c] then
decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string")
end
res = res .. escape_char_map_inv[c]
end
k = j + 1
elseif x == 34 then -- `"`: End of string
res = res .. str:sub(k, j - 1)
return res, j + 1
end
elseif x == 92 then -- `\`: Escape j = j + 1
res = res .. str:sub(k, j - 1) end
j = j + 1
local c = str:sub(j, j)
if c == "u" then
local hex = str:match("^[dD][89aAbB]%x%x\\u%x%x%x%x", j + 1)
or str:match("^%x%x%x%x", j + 1)
or decode_error(str, j - 1, "invalid unicode escape in string")
res = res .. parse_unicode_escape(hex)
j = j + #hex
else
if not escape_chars[c] then
decode_error(str, j - 1, "invalid escape char '" .. c .. "' in string")
end
res = res .. escape_char_map_inv[c]
end
k = j + 1
elseif x == 34 then -- `"`: End of string decode_error(str, i, "expected closing quote for string")
res = res .. str:sub(k, j - 1)
return res, j + 1
end
j = j + 1
end
decode_error(str, i, "expected closing quote for string")
end end
local function parse_number(str, i) local function parse_number(str, i)
local x = next_char(str, i, delim_chars) local x = next_char(str, i, delim_chars)
local s = str:sub(i, x - 1) local s = str:sub(i, x - 1)
local n = tonumber(s) local n = tonumber(s)
if not n then if not n then
decode_error(str, i, "invalid number '" .. s .. "'") decode_error(str, i, "invalid number '" .. s .. "'")
end end
return n, x return n, x
end end
local function parse_literal(str, i) local function parse_literal(str, i)
local x = next_char(str, i, delim_chars) local x = next_char(str, i, delim_chars)
local word = str:sub(i, x - 1) local word = str:sub(i, x - 1)
if not literals[word] then if not literals[word] then
decode_error(str, i, "invalid literal '" .. word .. "'") decode_error(str, i, "invalid literal '" .. word .. "'")
end end
return literal_map[word], x return literal_map[word], x
end end
local function parse_array(str, i) local function parse_array(str, i)
local res = {} local res = {}
local n = 1 local n = 1
i = i + 1 i = i + 1
while 1 do while 1 do
local x local x
i = next_char(str, i, space_chars, true) i = next_char(str, i, space_chars, true)
-- Empty / end of array? -- Empty / end of array?
if str:sub(i, i) == "]" then if str:sub(i, i) == "]" then
i = i + 1 i = i + 1
break break
end end
-- Read token -- Read token
x, i = parse(str, i) x, i = parse(str, i)
res[n] = x res[n] = x
n = n + 1 n = n + 1
-- Next token -- Next token
i = next_char(str, i, space_chars, true) i = next_char(str, i, space_chars, true)
local chr = str:sub(i, i) local chr = str:sub(i, i)
i = i + 1 i = i + 1
if chr == "]" then break end if chr == "]" then
if chr ~= "," then decode_error(str, i, "expected ']' or ','") end break
end end
return res, i if chr ~= "," then
decode_error(str, i, "expected ']' or ','")
end
end
return res, i
end end
local function parse_object(str, i) local function parse_object(str, i)
local res = {} local res = {}
i = i + 1 i = i + 1
while 1 do while 1 do
local key, val local key, val
i = next_char(str, i, space_chars, true) i = next_char(str, i, space_chars, true)
-- Empty / end of object? -- Empty / end of object?
if str:sub(i, i) == "}" then if str:sub(i, i) == "}" then
i = i + 1 i = i + 1
break break
end end
-- Read key -- Read key
if str:sub(i, i) ~= '"' then if str:sub(i, i) ~= '"' then
decode_error(str, i, "expected string for key") decode_error(str, i, "expected string for key")
end end
key, i = parse(str, i) key, i = parse(str, i)
-- Read ':' delimiter -- Read ':' delimiter
i = next_char(str, i, space_chars, true) i = next_char(str, i, space_chars, true)
if str:sub(i, i) ~= ":" then if str:sub(i, i) ~= ":" then
decode_error(str, i, "expected ':' after key") decode_error(str, i, "expected ':' after key")
end end
i = next_char(str, i + 1, space_chars, true) i = next_char(str, i + 1, space_chars, true)
-- Read value -- Read value
val, i = parse(str, i) val, i = parse(str, i)
-- Set -- Set
res[key] = val res[key] = val
-- Next token -- Next token
i = next_char(str, i, space_chars, true) i = next_char(str, i, space_chars, true)
local chr = str:sub(i, i) local chr = str:sub(i, i)
i = i + 1 i = i + 1
if chr == "}" then break end if chr == "}" then
if chr ~= "," then decode_error(str, i, "expected '}' or ','") end break
end end
return res, i if chr ~= "," then
decode_error(str, i, "expected '}' or ','")
end
end
return res, i
end end
local char_func_map = { local char_func_map = {
['"'] = parse_string, ['"'] = parse_string,
["0"] = parse_number, ["0"] = parse_number,
["1"] = parse_number, ["1"] = parse_number,
["2"] = parse_number, ["2"] = parse_number,
["3"] = parse_number, ["3"] = parse_number,
["4"] = parse_number, ["4"] = parse_number,
["5"] = parse_number, ["5"] = parse_number,
["6"] = parse_number, ["6"] = parse_number,
["7"] = parse_number, ["7"] = parse_number,
["8"] = parse_number, ["8"] = parse_number,
["9"] = parse_number, ["9"] = parse_number,
["-"] = parse_number, ["-"] = parse_number,
["t"] = parse_literal, ["t"] = parse_literal,
["f"] = parse_literal, ["f"] = parse_literal,
["n"] = parse_literal, ["n"] = parse_literal,
["["] = parse_array, ["["] = parse_array,
["{"] = parse_object, ["{"] = parse_object,
} }
parse = function(str, idx) parse = function(str, idx)
local chr = str:sub(idx, idx) local chr = str:sub(idx, idx)
local f = char_func_map[chr] local f = char_func_map[chr]
if f then if f then
return f(str, idx) return f(str, idx)
end end
decode_error(str, idx, "unexpected character '" .. chr .. "'") decode_error(str, idx, "unexpected character '" .. chr .. "'")
end end
function json.decode(str) function json.decode(str)
if type(str) ~= "string" then if type(str) ~= "string" then
error("expected argument of type string, got " .. type(str)) error("expected argument of type string, got " .. type(str))
end end
local res, idx = parse(str, next_char(str, 1, space_chars, true)) local res, idx = parse(str, next_char(str, 1, space_chars, true))
idx = next_char(str, idx, space_chars, true) idx = next_char(str, idx, space_chars, true)
if idx <= #str then if idx <= #str then
decode_error(str, idx, "trailing garbage") decode_error(str, idx, "trailing garbage")
end end
return res return res
end end
return json return json

View File

@ -13,24 +13,23 @@ local theme = {}
theme.font = "JetBrainsMono NF 8" theme.font = "JetBrainsMono NF 8"
theme.bg_normal = "#222222" theme.bg_normal = "#222222"
theme.bg_focus = "#333333" theme.bg_focus = "#333333"
theme.bg_urgent = "#ff0000" theme.bg_urgent = "#ff0000"
theme.bg_minimize = "#444444" theme.bg_minimize = "#444444"
theme.bg_systray = theme.bg_normal theme.bg_systray = theme.bg_normal
theme.fg_normal = "#aaaaaa" theme.fg_normal = "#aaaaaa"
theme.fg_focus = "#ffffff" theme.fg_focus = "#ffffff"
theme.fg_urgent = "#ffffff" theme.fg_urgent = "#ffffff"
theme.fg_minimize = "#ffffff" theme.fg_minimize = "#ffffff"
theme.useless_gap = dpi(4) theme.useless_gap = dpi(4)
theme.border_width = dpi(2) theme.border_width = dpi(2)
theme.border_normal = "#000000" theme.border_normal = "#000000"
theme.border_focus = "#f2f2f2" theme.border_focus = "#f2f2f2"
theme.border_marked = "#91231c" theme.border_marked = "#91231c"
-- There are other variable sets -- There are other variable sets
-- overriding the default one when -- overriding the default one when
-- defined, the sets are: -- defined, the sets are:
@ -46,12 +45,8 @@ theme.border_marked = "#91231c"
-- Generate taglist squares: -- Generate taglist squares:
local taglist_square_size = dpi(4) local taglist_square_size = dpi(4)
theme.taglist_squares_sel = theme_assets.taglist_squares_sel( theme.taglist_squares_sel = theme_assets.taglist_squares_sel(taglist_square_size, theme.fg_normal)
taglist_square_size, theme.fg_normal theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(taglist_square_size, theme.fg_normal)
)
theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
taglist_square_size, theme.fg_normal
)
-- Variables set for theming notifications: -- Variables set for theming notifications:
-- notification_font -- notification_font
@ -63,8 +58,8 @@ theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
-- menu_[bg|fg]_[normal|focus] -- menu_[bg|fg]_[normal|focus]
-- menu_[border_color|border_width] -- menu_[border_color|border_width]
theme.menu_submenu_icon = themes_path .. "default/submenu.png" theme.menu_submenu_icon = themes_path .. "default/submenu.png"
theme.menu_height = dpi(16) theme.menu_height = dpi(16)
theme.menu_width = dpi(100) theme.menu_width = dpi(100)
-- You can add as many variables as -- You can add as many variables as
-- you wish and access them by using -- you wish and access them by using
@ -73,55 +68,53 @@ theme.menu_width = dpi(100)
-- Define the image to load -- Define the image to load
theme.titlebar_close_button_normal = themes_path .. "default/titlebar/close_normal.png" theme.titlebar_close_button_normal = themes_path .. "default/titlebar/close_normal.png"
theme.titlebar_close_button_focus = themes_path .. "default/titlebar/close_focus.png" theme.titlebar_close_button_focus = themes_path .. "default/titlebar/close_focus.png"
theme.titlebar_minimize_button_normal = themes_path .. "default/titlebar/minimize_normal.png" theme.titlebar_minimize_button_normal = themes_path .. "default/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus = themes_path .. "default/titlebar/minimize_focus.png" theme.titlebar_minimize_button_focus = themes_path .. "default/titlebar/minimize_focus.png"
theme.titlebar_ontop_button_normal_inactive = themes_path .. "default/titlebar/ontop_normal_inactive.png" theme.titlebar_ontop_button_normal_inactive = themes_path .. "default/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive = themes_path .. "default/titlebar/ontop_focus_inactive.png" theme.titlebar_ontop_button_focus_inactive = themes_path .. "default/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_active = themes_path .. "default/titlebar/ontop_normal_active.png" theme.titlebar_ontop_button_normal_active = themes_path .. "default/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active = themes_path .. "default/titlebar/ontop_focus_active.png" theme.titlebar_ontop_button_focus_active = themes_path .. "default/titlebar/ontop_focus_active.png"
theme.titlebar_sticky_button_normal_inactive = themes_path .. "default/titlebar/sticky_normal_inactive.png" theme.titlebar_sticky_button_normal_inactive = themes_path .. "default/titlebar/sticky_normal_inactive.png"
theme.titlebar_sticky_button_focus_inactive = themes_path .. "default/titlebar/sticky_focus_inactive.png" theme.titlebar_sticky_button_focus_inactive = themes_path .. "default/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_active = themes_path .. "default/titlebar/sticky_normal_active.png" theme.titlebar_sticky_button_normal_active = themes_path .. "default/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_active = themes_path .. "default/titlebar/sticky_focus_active.png" theme.titlebar_sticky_button_focus_active = themes_path .. "default/titlebar/sticky_focus_active.png"
theme.titlebar_floating_button_normal_inactive = themes_path .. "default/titlebar/floating_normal_inactive.png" theme.titlebar_floating_button_normal_inactive = themes_path .. "default/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive = themes_path .. "default/titlebar/floating_focus_inactive.png" theme.titlebar_floating_button_focus_inactive = themes_path .. "default/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_active = themes_path .. "default/titlebar/floating_normal_active.png" theme.titlebar_floating_button_normal_active = themes_path .. "default/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active = themes_path .. "default/titlebar/floating_focus_active.png" theme.titlebar_floating_button_focus_active = themes_path .. "default/titlebar/floating_focus_active.png"
theme.titlebar_maximized_button_normal_inactive = themes_path .. "default/titlebar/maximized_normal_inactive.png" theme.titlebar_maximized_button_normal_inactive = themes_path .. "default/titlebar/maximized_normal_inactive.png"
theme.titlebar_maximized_button_focus_inactive = themes_path .. "default/titlebar/maximized_focus_inactive.png" theme.titlebar_maximized_button_focus_inactive = themes_path .. "default/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_active = themes_path .. "default/titlebar/maximized_normal_active.png" theme.titlebar_maximized_button_normal_active = themes_path .. "default/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_active = themes_path .. "default/titlebar/maximized_focus_active.png" theme.titlebar_maximized_button_focus_active = themes_path .. "default/titlebar/maximized_focus_active.png"
theme.wallpaper = "~/.local/share/wallpaper.png" theme.wallpaper = "~/.local/share/wallpaper.png"
-- You can use your own layout icons like this: -- You can use your own layout icons like this:
theme.layout_fairh = themes_path .. "default/layouts/fairhw.png" theme.layout_fairh = themes_path .. "default/layouts/fairhw.png"
theme.layout_fairv = themes_path .. "default/layouts/fairvw.png" theme.layout_fairv = themes_path .. "default/layouts/fairvw.png"
theme.layout_floating = themes_path .. "default/layouts/floatingw.png" theme.layout_floating = themes_path .. "default/layouts/floatingw.png"
theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png" theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png"
theme.layout_max = themes_path .. "default/layouts/maxw.png" theme.layout_max = themes_path .. "default/layouts/maxw.png"
theme.layout_fullscreen = themes_path .. "default/layouts/fullscreenw.png" theme.layout_fullscreen = themes_path .. "default/layouts/fullscreenw.png"
theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png" theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png" theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png"
theme.layout_tile = themes_path .. "default/layouts/tilew.png" theme.layout_tile = themes_path .. "default/layouts/tilew.png"
theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png" theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png"
theme.layout_spiral = themes_path .. "default/layouts/spiralw.png" theme.layout_spiral = themes_path .. "default/layouts/spiralw.png"
theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png" theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png"
theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png" theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png"
theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png" theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png"
theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png" theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png"
theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png" theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png"
-- Generate Awesome icon: -- Generate Awesome icon:
theme.awesome_icon = theme_assets.awesome_icon( theme.awesome_icon = theme_assets.awesome_icon(theme.menu_height, theme.bg_focus, theme.fg_focus)
theme.menu_height, theme.bg_focus, theme.fg_focus
)
-- Define the icon theme for application icons. If not set then the icons -- Define the icon theme for application icons. If not set then the icons
-- from /usr/share/icons and /usr/share/icons/hicolor will be used. -- from /usr/share/icons and /usr/share/icons/hicolor will be used.

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,22 @@
require ('user.options') require("user.options")
require ('user.keymaps') require("user.keymaps")
require ('user.plugins') require("user.plugins")
require ('user.colorscheme') require("user.colorscheme")
require ('user.cmp') require("user.cmp")
require ('user.lsp') require("user.lsp")
require ('user.telescope') require("user.telescope")
require ('user.treesitter') require("user.treesitter")
require ('user.autopairs') require("user.autopairs")
require ('user.comment') require("user.comment")
require ('user.gitsigns') require("user.gitsigns")
require ('user.nvim-tree') require("user.nvim-tree")
require ('user.bufferline') require("user.bufferline")
require ('user.lualine') require("user.lualine")
require ('user.toggleterm') require("user.toggleterm")
require ('user.project') require("user.project")
require ('user.impatient') require("user.impatient")
require ('user.indentline') require("user.indentline")
require ('user.alpha') require("user.alpha")
require ('user.whichkey') require("user.whichkey")
require ('user.autocommands') require("user.autocommands")
require("user.colorizer")

View File

@ -1,41 +1,41 @@
local status_ok, alpha = pcall(require, 'alpha') local status_ok, alpha = pcall(require, "alpha")
if not status_ok then if not status_ok then
return return
end end
local dashboard = require('alpha.themes.dashboard') local dashboard = require("alpha.themes.dashboard")
dashboard.section.header.val = { dashboard.section.header.val = {
[[ __ ]], [[ __ ]],
[[ ___ ___ ___ __ __ /\_\ ___ ___ ]], [[ ___ ___ ___ __ __ /\_\ ___ ___ ]],
[[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]], [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]],
[[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]], [[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]],
[[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]], [[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]],
[[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]], [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]],
} }
dashboard.section.buttons.val = { dashboard.section.buttons.val = {
dashboard.button('f', ' Find file', ':Telescope find_files <CR>'), dashboard.button("f", " Find file", ":Telescope find_files <CR>"),
dashboard.button('e', ' New file', ':ene <BAR> startinsert <CR>'), dashboard.button("e", " New file", ":ene <BAR> startinsert <CR>"),
dashboard.button('p', ' Find project', ':Telescope projects <CR>'), dashboard.button("p", " Find project", ":Telescope projects <CR>"),
dashboard.button('r', ' Recently used files', ':Telescope oldfiles <CR>'), dashboard.button("r", " Recently used files", ":Telescope oldfiles <CR>"),
dashboard.button('t', ' Find text', ':Telescope live_grep <CR>'), dashboard.button("t", " Find text", ":Telescope live_grep <CR>"),
dashboard.button('c', ' Configuration', ':e ~/.config/nvim/init.lua <CR>'), dashboard.button("c", " Configuration", ":e ~/.config/nvim/init.lua <CR>"),
dashboard.button('q', ' Quit Neovim', ':qa<CR>'), dashboard.button("q", " Quit Neovim", ":qa<CR>"),
} }
local function footer() local function footer()
-- NOTE: requires the fortune-mod package to work -- NOTE: requires the fortune-mod package to work
-- local handle = io.popen('fortune') -- local handle = io.popen('fortune')
-- local fortune = handle:read('*a') -- local fortune = handle:read('*a')
-- handle:close() -- handle:close()
-- return fortune -- return fortune
return 'chrisatmachine.com' return "chrisatmachine.com"
end end
dashboard.section.footer.val = footer() dashboard.section.footer.val = footer()
dashboard.section.footer.opts.hl = 'Type' dashboard.section.footer.opts.hl = "Type"
dashboard.section.header.opts.hl = 'Include' dashboard.section.header.opts.hl = "Include"
dashboard.section.buttons.opts.hl = 'Keyword' dashboard.section.buttons.opts.hl = "Keyword"
dashboard.opts.opts.noautocmd = true dashboard.opts.opts.noautocmd = true
-- vim.cmd([[autocmd User AlphaReady echo 'ready']]) -- vim.cmd([[autocmd User AlphaReady echo 'ready']])

View File

@ -1,10 +1,14 @@
vim.cmd [[ vim.cmd([[
augroup _general_settings augroup _general_settings
autocmd! autocmd!
autocmd FileType qf,help,man,lspinfo nnoremap <silent> <buffer> q :close<CR> autocmd FileType qf,help,man,lspinfo nnoremap <silent> <buffer> q :close<CR>
autocmd TextYankPost * silent!lua require('vim.highlight').on_yank({higroup = 'Visual', timeout = 200}) autocmd TextYankPost * silent!lua require('vim.highlight').on_yank({higroup = 'Visual', timeout = 200})
autocmd BufWinEnter * :set formatoptions-=cro autocmd BufWinEnter * :set formatoptions-=cro
autocmd FileType qf set nobuflisted autocmd FileType qf set nobuflisted
autocmd BufWritePre * %s/\s\+$//e
autocmd InsertEnter * norm zz
highlight CursorLine ctermbg=White cterm=bold guibg=#222222
highlight CursorColumn ctermbg=White cterm=bold guibg=#222222
augroup end augroup end
augroup _git augroup _git
@ -21,23 +25,23 @@ vim.cmd [[
augroup _auto_resize augroup _auto_resize
autocmd! autocmd!
autocmd VimResized * tabdo wincmd = autocmd VimResized * tabdo wincmd =
augroup end augroup end
augroup _alpha augroup _alpha
autocmd! autocmd!
autocmd User AlphaReady set showtabline=0 | autocmd BufUnload <buffer> set showtabline=2 autocmd User AlphaReady set showtabline=0 | autocmd BufUnload <buffer> set showtabline=2
augroup end augroup end
]]
-- Autoformat augroup _lsp
-- augroup _lsp autocmd!
-- autocmd! autocmd BufWritePre,InsertLeave * lua vim.lsp.buf.formatting()
-- autocmd BufWritePre * lua vim.lsp.buf.formatting() augroup end
-- augroup end
-- " Verticaly center document when entering insert mode augroup _run
-- autocmd InsertEnter * norm zz autocmd!
autocmd FileType python map <buffer> <C-b> <cmd>w<CR><cmd>exec '!python3' shellescape(@%, 1)<CR>
-- " Remove trailing whitespace on save autocmd FileType rust imap <buffer> <C-b> <esc><cmd>w<CR><cmd>exec '!cargo run'<CR>
-- autocmd BufWritePre * %s/\s\+$//e autocmd FileType rust map <buffer> <C-b> <cmd>w<CR><cmd>exec '!cargo run'<CR>
augroup end
]])

View File

@ -1,33 +1,33 @@
-- Setup nvim-cmp. -- Setup nvim-cmp.
local status_ok, npairs = pcall(require, 'nvim-autopairs') local status_ok, npairs = pcall(require, "nvim-autopairs")
if not status_ok then if not status_ok then
return return
end end
npairs.setup { npairs.setup({
check_ts = true, check_ts = true,
ts_config = { ts_config = {
lua = { 'string', 'source' }, lua = { "string", "source" },
javascript = { 'string', 'template_string' }, javascript = { "string", "template_string" },
java = false, java = false,
}, },
disable_filetype = { 'TelescopePrompt', 'spectre_panel' }, disable_filetype = { "TelescopePrompt", "spectre_panel" },
fast_wrap = { fast_wrap = {
map = '<M-e>', map = "<M-e>",
chars = { '{', '[', '(', "'", '"' }, chars = { "{", "[", "(", "'", '"' },
pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], '%s+', ''), pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""),
offset = 0, -- Offset from pattern match offset = 0, -- Offset from pattern match
end_key = '$', end_key = "$",
keys = 'qwertyuiopzxcvbnmasdfghjkl', keys = "qwertyuiopzxcvbnmasdfghjkl",
check_comma = true, check_comma = true,
highlight = 'PmenuSel', highlight = "PmenuSel",
highlight_grey = 'LineNr', highlight_grey = "LineNr",
}, },
} })
local cmp_autopairs = require 'nvim-autopairs.completion.cmp' local cmp_autopairs = require("nvim-autopairs.completion.cmp")
local cmp_status_ok, cmp = pcall(require, 'cmp') local cmp_status_ok, cmp = pcall(require, "cmp")
if not cmp_status_ok then if not cmp_status_ok then
return return
end end
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done { map_char = { tex = '' } }) cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done({ map_char = { tex = "" } }))

View File

@ -1,167 +1,167 @@
local status_ok, bufferline = pcall(require, 'bufferline') local status_ok, bufferline = pcall(require, "bufferline")
if not status_ok then if not status_ok then
return return
end end
bufferline.setup { bufferline.setup({
options = { options = {
numbers = 'none', -- | 'ordinal' | 'buffer_id' | 'both' | function({ ordinal, id, lower, raise }): string, numbers = "none", -- | 'ordinal' | 'buffer_id' | 'both' | function({ ordinal, id, lower, raise }): string,
close_command = 'Bdelete! %d', -- can be a string | function, see 'Mouse actions' 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' 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' 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' middle_mouse_command = nil, -- can be a string | function, see 'Mouse actions'
-- NOTE: this plugin is designed with this icon in mind, -- NOTE: this plugin is designed with this icon in mind,
-- and so changing this is NOT recommended, this is intended -- and so changing this is NOT recommended, this is intended
-- as an escape hatch for people who cannot bear it for whatever reason -- as an escape hatch for people who cannot bear it for whatever reason
indicator_icon = '', indicator_icon = "",
buffer_close_icon = '', buffer_close_icon = "",
-- buffer_close_icon = '', -- buffer_close_icon = '',
modified_icon = '', modified_icon = "",
close_icon = '', close_icon = "",
-- close_icon = '', -- close_icon = '',
left_trunc_marker = '', left_trunc_marker = "",
right_trunc_marker = '', right_trunc_marker = "",
--- name_formatter can be used to change the buffer's label in the bufferline. --- name_formatter can be used to change the buffer's label in the bufferline.
--- Please note some names can/will break the --- Please note some names can/will break the
--- bufferline so use this at your discretion knowing that it has --- bufferline so use this at your discretion knowing that it has
--- some limitations that will *NOT* be fixed. --- some limitations that will *NOT* be fixed.
-- name_formatter = function(buf) -- buf contains a 'name', 'path' and 'bufnr' -- name_formatter = function(buf) -- buf contains a 'name', 'path' and 'bufnr'
-- -- remove extension from markdown files for example -- -- remove extension from markdown files for example
-- if buf.name:match('%.md') then -- if buf.name:match('%.md') then
-- return vim.fn.fnamemodify(buf.name, ':t:r') -- return vim.fn.fnamemodify(buf.name, ':t:r')
-- end -- end
-- end, -- end,
max_name_length = 30, max_name_length = 30,
max_prefix_length = 30, -- prefix used when a buffer is de-duplicated max_prefix_length = 30, -- prefix used when a buffer is de-duplicated
tab_size = 21, tab_size = 21,
diagnostics = false, -- | 'nvim_lsp' | 'coc', diagnostics = false, -- | 'nvim_lsp' | 'coc',
diagnostics_update_in_insert = false, diagnostics_update_in_insert = false,
-- diagnostics_indicator = function(count, level, diagnostics_dict, context) -- diagnostics_indicator = function(count, level, diagnostics_dict, context)
-- return '('..count..')' -- return '('..count..')'
-- end, -- end,
-- NOTE: this will be called a lot so don't do any heavy processing here -- NOTE: this will be called a lot so don't do any heavy processing here
-- custom_filter = function(buf_number) -- custom_filter = function(buf_number)
-- -- filter out filetypes you don't want to see -- -- filter out filetypes you don't want to see
-- if vim.bo[buf_number].filetype ~= '<i-dont-want-to-see-this>' then -- if vim.bo[buf_number].filetype ~= '<i-dont-want-to-see-this>' then
-- return true -- return true
-- end -- end
-- -- filter out by buffer name -- -- filter out by buffer name
-- if vim.fn.bufname(buf_number) ~= '<buffer-name-I-dont-want>' then -- if vim.fn.bufname(buf_number) ~= '<buffer-name-I-dont-want>' then
-- return true -- return true
-- end -- end
-- -- filter out based on arbitrary rules -- -- filter out based on arbitrary rules
-- -- e.g. filter out vim wiki buffer from tabline in your work repo -- -- e.g. filter out vim wiki buffer from tabline in your work repo
-- if vim.fn.getcwd() == '<work-repo>' and vim.bo[buf_number].filetype ~= 'wiki' then -- if vim.fn.getcwd() == '<work-repo>' and vim.bo[buf_number].filetype ~= 'wiki' then
-- return true -- return true
-- end -- end
-- end, -- end,
offsets = { { filetype = 'NvimTree', text = '', padding = 1 } }, offsets = { { filetype = "NvimTree", text = "", padding = 1 } },
show_buffer_icons = true, show_buffer_icons = true,
show_buffer_close_icons = true, show_buffer_close_icons = true,
show_close_icon = true, show_close_icon = true,
show_tab_indicators = true, show_tab_indicators = true,
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
-- can also be a table containing 2 custom separators -- can also be a table containing 2 custom separators
-- [focused and unfocused]. eg: { '|', '|' } -- [focused and unfocused]. eg: { '|', '|' }
separator_style = 'thin', -- | 'thick' | 'thin' | { 'any', 'any' }, separator_style = "thin", -- | 'thick' | 'thin' | { 'any', 'any' },
enforce_regular_tabs = true, enforce_regular_tabs = true,
always_show_bufferline = true, always_show_bufferline = true,
-- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b) -- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b)
-- -- add custom logic -- -- add custom logic
-- return buffer_a.modified > buffer_b.modified -- return buffer_a.modified > buffer_b.modified
-- end -- end
}, },
highlights = { highlights = {
fill = { fill = {
guifg = { attribute = 'fg', highlight = '#ff0000' }, guifg = { attribute = "fg", highlight = "#ff0000" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
background = { background = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
-- buffer_selected = { -- buffer_selected = {
-- guifg = {attribute='fg',highlight='#ff0000'}, -- guifg = {attribute='fg',highlight='#ff0000'},
-- guibg = {attribute='bg',highlight='#0000ff'}, -- guibg = {attribute='bg',highlight='#0000ff'},
-- gui = 'none' -- gui = 'none'
-- }, -- },
buffer_visible = { buffer_visible = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
close_button = { close_button = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
close_button_visible = { close_button_visible = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
-- close_button_selected = { -- close_button_selected = {
-- guifg = {attribute='fg',highlight='TabLineSel'}, -- guifg = {attribute='fg',highlight='TabLineSel'},
-- guibg ={attribute='bg',highlight='TabLineSel'} -- guibg ={attribute='bg',highlight='TabLineSel'}
-- }, -- },
tab_selected = { tab_selected = {
guifg = { attribute = 'fg', highlight = 'Normal' }, guifg = { attribute = "fg", highlight = "Normal" },
guibg = { attribute = 'bg', highlight = 'Normal' }, guibg = { attribute = "bg", highlight = "Normal" },
}, },
tab = { tab = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
tab_close = { tab_close = {
-- guifg = {attribute='fg',highlight='LspDiagnosticsDefaultError'}, -- guifg = {attribute='fg',highlight='LspDiagnosticsDefaultError'},
guifg = { attribute = 'fg', highlight = 'TabLineSel' }, guifg = { attribute = "fg", highlight = "TabLineSel" },
guibg = { attribute = 'bg', highlight = 'Normal' }, guibg = { attribute = "bg", highlight = "Normal" },
}, },
duplicate_selected = { duplicate_selected = {
guifg = { attribute = 'fg', highlight = 'TabLineSel' }, guifg = { attribute = "fg", highlight = "TabLineSel" },
guibg = { attribute = 'bg', highlight = 'TabLineSel' }, guibg = { attribute = "bg", highlight = "TabLineSel" },
gui = 'italic', gui = "italic",
}, },
duplicate_visible = { duplicate_visible = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
gui = 'italic', gui = "italic",
}, },
duplicate = { duplicate = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
gui = 'italic', gui = "italic",
}, },
modified = { modified = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
modified_selected = { modified_selected = {
guifg = { attribute = 'fg', highlight = 'Normal' }, guifg = { attribute = "fg", highlight = "Normal" },
guibg = { attribute = 'bg', highlight = 'Normal' }, guibg = { attribute = "bg", highlight = "Normal" },
}, },
modified_visible = { modified_visible = {
guifg = { attribute = 'fg', highlight = 'TabLine' }, guifg = { attribute = "fg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
separator = { separator = {
guifg = { attribute = 'bg', highlight = 'TabLine' }, guifg = { attribute = "bg", highlight = "TabLine" },
guibg = { attribute = 'bg', highlight = 'TabLine' }, guibg = { attribute = "bg", highlight = "TabLine" },
}, },
separator_selected = { separator_selected = {
guifg = { attribute = 'bg', highlight = 'Normal' }, guifg = { attribute = "bg", highlight = "Normal" },
guibg = { attribute = 'bg', highlight = 'Normal' }, guibg = { attribute = "bg", highlight = "Normal" },
}, },
-- separator_visible = { -- separator_visible = {
-- guifg = {attribute='bg',highlight='TabLine'}, -- guifg = {attribute='bg',highlight='TabLine'},
-- guibg = {attribute='bg',highlight='TabLine'} -- guibg = {attribute='bg',highlight='TabLine'}
-- }, -- },
indicator_selected = { indicator_selected = {
guifg = { attribute = 'fg', highlight = 'LspDiagnosticsDefaultHint' }, guifg = { attribute = "fg", highlight = "LspDiagnosticsDefaultHint" },
guibg = { attribute = 'bg', highlight = 'Normal' }, guibg = { attribute = "bg", highlight = "Normal" },
}, },
}, },
} })

View File

@ -1,131 +1,133 @@
local cmp_status_ok, cmp = pcall(require, 'cmp') local cmp_status_ok, cmp = pcall(require, "cmp")
if not cmp_status_ok then if not cmp_status_ok then
return return
end end
local snip_status_ok, luasnip = pcall(require, 'luasnip') local snip_status_ok, luasnip = pcall(require, "luasnip")
if not snip_status_ok then if not snip_status_ok then
return return
end end
require('luasnip/loaders/from_vscode').lazy_load() require("luasnip/loaders/from_vscode").lazy_load()
local check_backspace = function() local check_backspace = function()
local col = vim.fn.col '.' - 1 local col = vim.fn.col(".") - 1
return col == 0 or vim.fn.getline('.'):sub(col, col):match '%s' return col == 0 or vim.fn.getline("."):sub(col, col):match("%s")
end end
--   פּ ﯟ   some other good icons --   פּ ﯟ   some other good icons
local kind_icons = { local kind_icons = {
Text = '', Text = "",
Method = 'm', Method = "m",
Function = '', Function = "",
Constructor = '', Constructor = "",
Field = '', Field = "",
Variable = '', Variable = "",
Class = '', Class = "",
Interface = '', Interface = "",
Module = '', Module = "",
Property = '', Property = "",
Unit = '', Unit = "",
Value = '', Value = "",
Enum = '', Enum = "",
Keyword = '', Keyword = "",
Snippet = '', Snippet = "",
Color = '', Color = "",
File = '', File = "",
Reference = '', Reference = "",
Folder = '', Folder = "",
EnumMember = '', EnumMember = "",
Constant = '', Constant = "",
Struct = '', Struct = "",
Event = '', Event = "",
Operator = '', Operator = "",
TypeParameter = '', TypeParameter = "",
} }
-- find more here: https://www.nerdfonts.com/cheat-sheet -- find more here: https://www.nerdfonts.com/cheat-sheet
cmp.setup { cmp.setup({
snippet = { snippet = {
expand = function(args) expand = function(args)
luasnip.lsp_expand(args.body) -- For `luasnip` users. luasnip.lsp_expand(args.body) -- For `luasnip` users.
end, end,
}, },
mapping = { mapping = {
['<C-k>'] = cmp.mapping.select_prev_item(), ["<C-k>"] = cmp.mapping.select_prev_item(),
['<C-j>'] = cmp.mapping.select_next_item(), ["<C-j>"] = cmp.mapping.select_next_item(),
['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-1), { 'i', 'c' }), ["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(1), { 'i', 'c' }), ["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
['<C-y>'] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping. ["<C-y>"] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
['<C-e>'] = cmp.mapping { ["<C-e>"] = cmp.mapping({
i = cmp.mapping.abort(), i = cmp.mapping.abort(),
c = cmp.mapping.close(), c = cmp.mapping.close(),
}, }),
-- Accept currently selected item. If none selected, `select` first item. -- Accept currently selected item. If none selected, `select` first item.
-- Set `select` to `false` to only confirm explicitly selected items. -- Set `select` to `false` to only confirm explicitly selected items.
['<CR>'] = cmp.mapping.confirm { select = true }, ["<CR>"] = cmp.mapping.confirm({ select = true }),
['<Tab>'] = cmp.mapping(function(fallback) ["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_next_item() cmp.select_next_item()
elseif luasnip.expandable() then elseif luasnip.expandable() then
luasnip.expand() luasnip.expand()
elseif luasnip.expand_or_jumpable() then elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump() luasnip.expand_or_jump()
elseif check_backspace() then elseif check_backspace() then
fallback() fallback()
else else
fallback() fallback()
end end
end, { end, {
'i', "i",
's', "s",
}), }),
['<S-Tab>'] = cmp.mapping(function(fallback) ["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then if cmp.visible() then
cmp.select_prev_item() cmp.select_prev_item()
elseif luasnip.jumpable(-1) then elseif luasnip.jumpable(-1) then
luasnip.jump(-1) luasnip.jump(-1)
else else
fallback() fallback()
end end
end, { end, {
'i', "i",
's', "s",
}), }),
}, },
formatting = { formatting = {
fields = { 'kind', 'abbr', 'menu' }, fields = { "kind", "abbr", "menu" },
format = function(entry, vim_item) format = function(entry, vim_item)
-- Kind icons -- Kind icons
vim_item.kind = string.format('%s', kind_icons[vim_item.kind]) vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
-- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind
vim_item.menu = ({ vim_item.menu = ({
nvim_lsp = '[LSP]', nvim_lsp = "[LSP]",
luasnip = '[Snippet]', nvim_lua = "[NVIM_LUA]",
buffer = '[Buffer]', luasnip = "[Snippet]",
path = '[Path]', buffer = "[Buffer]",
})[entry.source.name] path = "[Path]",
return vim_item })[entry.source.name]
end, return vim_item
}, end,
sources = { },
{ name = 'nvim_lsp' }, sources = {
{ name = 'luasnip' }, { name = "nvim_lsp" },
{ name = 'buffer' }, { name = "nvim_lua" },
{ name = 'path' }, { name = "luasnip" },
}, { name = "buffer" },
confirm_opts = { { name = "path" },
behavior = cmp.ConfirmBehavior.Replace, },
select = false, confirm_opts = {
}, behavior = cmp.ConfirmBehavior.Replace,
window = { select = false,
documentation = { },
border = { '', '', '', '', '', '', '', '' }, window = {
}, documentation = {
}, border = { "", "", "", "", "", "", "", "" },
experimental = { },
ghost_text = false, },
native_menu = false, experimental = {
}, ghost_text = false,
} native_menu = false,
},
})

View File

@ -0,0 +1,6 @@
local status_ok, colorizer = pcall(require, "colorizer")
if not status_ok then
return
end
colorizer.setup()

View File

@ -1,8 +1,8 @@
vim.cmd [[ vim.cmd([[
try try
colorscheme dracula colorscheme dracula
catch /^Vim\%((\a\+)\)\=:E185/ catch /^Vim\%((\a\+)\)\=:E185/
colorscheme default colorscheme default
set background=dark set background=dark
endtry endtry
]] ]])

View File

@ -1,22 +1,22 @@
local status_ok, comment = pcall(require, 'Comment') local status_ok, comment = pcall(require, "Comment")
if not status_ok then if not status_ok then
return return
end end
comment.setup { comment.setup({
pre_hook = function(ctx) pre_hook = function(ctx)
local U = require 'Comment.utils' local U = require("Comment.utils")
local location = nil local location = nil
if ctx.ctype == U.ctype.block then if ctx.ctype == U.ctype.block then
location = require('ts_context_commentstring.utils').get_cursor_location() location = require("ts_context_commentstring.utils").get_cursor_location()
elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then
location = require('ts_context_commentstring.utils').get_visual_start_location() location = require("ts_context_commentstring.utils").get_visual_start_location()
end end
return require('ts_context_commentstring.internal').calculate_commentstring { return require("ts_context_commentstring.internal").calculate_commentstring({
key = ctx.ctype == U.ctype.line and '__default' or '__multiline', key = ctx.ctype == U.ctype.line and "__default" or "__multiline",
location = location, location = location,
} })
end, end,
} })

View File

@ -1,48 +1,48 @@
local status_ok, gitsigns = pcall(require, 'gitsigns') local status_ok, gitsigns = pcall(require, "gitsigns")
if not status_ok then if not status_ok then
return return
end end
gitsigns.setup { gitsigns.setup({
signs = { signs = {
add = { hl = 'GitSignsAdd', text = '', numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' }, add = { hl = "GitSignsAdd", text = "", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
change = { hl = 'GitSignsChange', text = '', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, change = { hl = "GitSignsChange", text = "", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
delete = { hl = 'GitSignsDelete', text = '', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, delete = { hl = "GitSignsDelete", text = "", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
topdelete = { hl = 'GitSignsDelete', text = '', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, topdelete = { hl = "GitSignsDelete", text = "", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
changedelete = { hl = 'GitSignsChange', text = '', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, changedelete = { hl = "GitSignsChange", text = "", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
}, },
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl` numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl` linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = { watch_gitdir = {
interval = 1000, interval = 1000,
follow_files = true, follow_files = true,
}, },
attach_to_untracked = true, attach_to_untracked = true,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = { current_line_blame_opts = {
virt_text = true, virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
delay = 1000, delay = 1000,
ignore_whitespace = false, ignore_whitespace = false,
}, },
current_line_blame_formatter_opts = { current_line_blame_formatter_opts = {
relative_time = false, relative_time = false,
}, },
sign_priority = 6, sign_priority = 6,
update_debounce = 100, update_debounce = 100,
status_formatter = nil, -- Use default status_formatter = nil, -- Use default
max_file_length = 40000, max_file_length = 40000,
preview_config = { preview_config = {
-- Options passed to nvim_open_win -- Options passed to nvim_open_win
border = 'single', border = "single",
style = 'minimal', style = "minimal",
relative = 'cursor', relative = "cursor",
row = 0, row = 0,
col = 1, col = 1,
}, },
yadm = { yadm = {
enable = false, enable = false,
}, },
} })

View File

@ -1,6 +1,6 @@
local status_ok, impatient = pcall(require, 'impatient') local status_ok, impatient = pcall(require, "impatient")
if not status_ok then if not status_ok then
return return
end end
impatient.enable_profile() impatient.enable_profile()

View File

@ -1,73 +1,73 @@
local g = vim.g local g = vim.g
local opt = vim.opt local opt = vim.opt
local cmd = vim.cmd local cmd = vim.cmd
local status_ok, indent_blankline = pcall(require, 'indent_blankline') local status_ok, indent_blankline = pcall(require, "indent_blankline")
if not status_ok then if not status_ok then
return return
end end
g.indent_blankline_buftype_exclude = { 'terminal', 'nofile' } g.indent_blankline_buftype_exclude = { "terminal", "nofile" }
g.indent_blankline_filetype_exclude = { g.indent_blankline_filetype_exclude = {
'help', "help",
'startify', "startify",
'dashboard', "dashboard",
'packer', "packer",
'neogitstatus', "neogitstatus",
'NvimTree', "NvimTree",
'Trouble', "Trouble",
} }
g.indentLine_enabled = 1 g.indentLine_enabled = 1
-- g.indent_blankline_char = '│' -- g.indent_blankline_char = '│'
g.indent_blankline_char = '' g.indent_blankline_char = ""
-- g.indent_blankline_char = '▎' -- g.indent_blankline_char = '▎'
g.indent_blankline_show_trailing_blankline_indent = false g.indent_blankline_show_trailing_blankline_indent = false
g.indent_blankline_show_first_indent_level = true g.indent_blankline_show_first_indent_level = true
g.indent_blankline_use_treesitter = true g.indent_blankline_use_treesitter = true
g.indent_blankline_show_current_context = true g.indent_blankline_show_current_context = true
g.indent_blankline_context_patterns = { g.indent_blankline_context_patterns = {
'class', "class",
'return', "return",
'function', "function",
'method', "method",
'^if', "^if",
'^while', "^while",
'jsx_element', "jsx_element",
'^for', "^for",
'^object', "^object",
'^table', "^table",
'block', "block",
'arguments', "arguments",
'if_statement', "if_statement",
'else_clause', "else_clause",
'jsx_element', "jsx_element",
'jsx_self_closing_element', "jsx_self_closing_element",
'try_statement', "try_statement",
'catch_clause', "catch_clause",
'import_statement', "import_statement",
'operation_type', "operation_type",
} }
-- HACK: work-around for https://github.com/lukas-reineke/indent-blankline.nvim/issues/59 -- HACK: work-around for https://github.com/lukas-reineke/indent-blankline.nvim/issues/59
vim.wo.colorcolumn = '99999' vim.wo.colorcolumn = "99999"
-- cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]] cmd([[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]])
-- cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]] cmd([[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]])
-- cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]] cmd([[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]])
-- cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]] cmd([[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]])
-- cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]] cmd([[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]])
-- cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]] cmd([[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]])
-- opt.list = true opt.list = true
-- opt.listchars:append 'space:⋅' opt.listchars:append("space:⋅")
-- opt.listchars:append 'space:' -- opt.listchars:append 'space:'
-- opt.listchars:append 'eol:↴' opt.listchars:append("eol:↴")
indent_blankline.setup({ indent_blankline.setup({
-- show_end_of_line = true, -- show_end_of_line = true,
-- space_char_blankline = ' ', -- space_char_blankline = ' ',
show_current_context = true, show_current_context = true,
-- show_current_context_start = true, -- show_current_context_start = true,
-- char_highlight_list = { -- char_highlight_list = {
-- 'IndentBlanklineIndent1', -- 'IndentBlanklineIndent1',
-- 'IndentBlanklineIndent2', -- 'IndentBlanklineIndent2',
-- 'IndentBlanklineIndent3', -- 'IndentBlanklineIndent3',
-- }, -- },
}) })

View File

@ -3,9 +3,9 @@ local opts = { noremap = true, silent = true }
local term_opts = { silent = true } local term_opts = { silent = true }
--Remap space as leader key --Remap space as leader key
keymap('', '<Space>', '<Nop>', opts) keymap("", "<Space>", "<Nop>", opts)
vim.g.mapleader = ' ' vim.g.mapleader = " "
vim.g.maplocalleader = ' ' vim.g.maplocalleader = " "
-- Modes -- Modes
-- normal_mode = 'n', -- normal_mode = 'n',
@ -17,45 +17,45 @@ vim.g.maplocalleader = ' '
-- Normal -- -- Normal --
-- Shortcutting split navigation -- Shortcutting split navigation
keymap('n', '<C-h>', '<C-w>h', opts) keymap("n", "<C-h>", "<C-w>h", opts)
keymap('n', '<C-j>', '<C-w>j', opts) keymap("n", "<C-j>", "<C-w>j", opts)
keymap('n', '<C-k>', '<C-w>k', opts) keymap("n", "<C-k>", "<C-w>k", opts)
keymap('n', '<C-l>', '<C-w>l', opts) keymap("n", "<C-l>", "<C-w>l", opts)
-- Resize with arrows -- Resize with arrows
keymap('n', '<C-Up>', '<cmd>resize -2<CR>', opts) keymap("n", "<C-Up>", "<cmd>resize -2<CR>", opts)
keymap('n', '<C-Down>', '<cmd>resize +2<CR>', opts) keymap("n", "<C-Down>", "<cmd>resize +2<CR>", opts)
keymap('n', '<C-Left>', '<cmd>vertical resize -2<CR>', opts) keymap("n", "<C-Left>", "<cmd>vertical resize -2<CR>", opts)
keymap('n', '<C-Right>', '<cmd>vertical resize +2<CR>', opts) keymap("n", "<C-Right>", "<cmd>vertical resize +2<CR>", opts)
-- Navigate buffers -- Navigate buffers
keymap('n', '<S-l>', '<cmd>bnext<CR>', opts) keymap("n", "<S-l>", "<cmd>bnext<CR>", opts)
keymap('n', '<S-h>', '<cmd>bprevious<CR>', opts) keymap("n", "<S-h>", "<cmd>bprevious<CR>", opts)
-- Move text up and down -- Move text up and down
keymap('n', '<A-j>', '<Esc><cmd>m .+1<CR>==gi', opts) keymap("n", "<A-j>", "<Esc><cmd>m .+1<CR>", opts)
keymap('n', '<A-k>', '<Esc><cmd>m .-2<CR>==gi', opts) keymap("n", "<A-k>", "<Esc><cmd>m .-2<CR>", opts)
-- Insert -- -- Insert --
-- Press jk fast to exit insert mode -- Press jk fast to exit insert mode
keymap('i', 'jk', '<ESC>', opts) keymap("i", "jk", "<ESC>", opts)
-- Visual -- -- Visual --
-- Stay in indent mode -- Stay in indent mode
keymap('v', '<', '<gv', opts) keymap("v", "<", "<gv", opts)
keymap('v', '>', '>gv', opts) keymap("v", ">", ">gv", opts)
-- Move text up and down -- Move text up and down
keymap('v', '<A-j>', '<cmd>m .+1<CR>==', opts) keymap("v", "<A-j>", "<cmd>m .+1<CR>", opts)
keymap('v', '<A-k>', '<cmd>m .-2<CR>==', opts) keymap("v", "<A-k>", "<cmd>m .-2<CR>", opts)
keymap('v', 'p', '"_dP', opts) keymap("v", "p", '"_dP', opts)
-- Visual Block -- -- Visual Block --
-- Move text up and down -- Move text up and down
keymap('x', 'J', '<cmd>move ">+1<CR>gv-gv', opts) keymap("x", "J", '<cmd>move ">+1<CR>gv-gv', opts)
keymap('x', 'K', '<cmd>move "<-2<CR>gv-gv', opts) keymap("x", "K", '<cmd>move "<-2<CR>gv-gv', opts)
keymap('x', '<A-j>', '<cmd>move ">+1<CR>gv-gv', opts) keymap("x", "<A-j>", '<cmd>move ">+1<CR>gv-gv', opts)
keymap('x', '<A-k>', '<cmd>move "<-2<CR>gv-gv', opts) keymap("x", "<A-k>", '<cmd>move "<-2<CR>gv-gv', opts)
-- Terminal -- -- Terminal --
-- Better terminal navigation -- Better terminal navigation
@ -63,46 +63,3 @@ keymap('x', '<A-k>', '<cmd>move "<-2<CR>gv-gv', opts)
-- keymap('t', '<C-j>', '<C-\\><C-N><C-w>j', term_opts) -- keymap('t', '<C-j>', '<C-\\><C-N><C-w>j', term_opts)
-- keymap('t', '<C-k>', '<C-\\><C-N><C-w>k', term_opts) -- keymap('t', '<C-k>', '<C-\\><C-N><C-w>k', term_opts)
-- keymap('t', '<C-l>', '<C-\\><C-N><C-w>l', term_opts) -- keymap('t', '<C-l>', '<C-\\><C-N><C-w>l', term_opts)
keymap('n', '<leader>n', ':NvimTreeFocus<CR>', opts)
keymap('n', 'C-t', ':NvimTreeToggle<CR>', opts)
keymap('n', 'C-f', ':NvimTreeFindFile<CR>', opts)
keymap('n', '<F5>', ':NvimTreeRefresh<CR>', opts)
-- Enable/Disable auto comment
keymap('', '<leader>c', '<cmd>setlocal formatoption-=CRo<cr>', {})
keymap('', '<leader>C', '<cmd>setlocal formatoption=CRo<cr>', {})
-- Enable spell checking, s for spell check
keymap('', '<leader>s', '<cmd>setlocal spell! spelllang=eu_us<CR>', {})
-- Enable / Disable auto indent
keymap('', '<leader>i', '<cmd>setlocal autoindent<CR>', {})
keymap('', '<leader>I', '<cmd>setlocal noautoindent<CR>', {})
-- Moving line up or down by one line
keymap('', '<A-k>', '<cmd>m -2<CR>', opts)
keymap('', '<A-up>', '<cmd>m -2<CR>', opts)
keymap('', '<A-j>', '<cmd>m +1<CR>', opts)
keymap('', '<A-down>', '<cmd>m +1<CR>', opts)
-- Find files using Telescope command-line
keymap('n', '<leader>ff', '<cmd>Telescope find_files hidden=true<CR>', opts)
keymap('n', '<leader>fg', '<cmd>Telescope live_grep<CR>', opts)
keymap('n', '<leader>fb', '<cmd>Telescope buffers<CR>', opts)
keymap('n', '<leader>fh', '<cmd>Telescope help_tags<CR>', opts)
-- Alias 'replace all' to S
keymap('n', 'S', '<cmd>s%//<Left>', opts)
-- " run current script with python3 by CTRL+R in command and insert mode
-- autocmd FileType python map <buffer> <C-r> <cmd>w<CR><cmd>exec '!python3' shellescape(@%, 1)<CR>
-- autocmd FileType python imap <buffer> <C-r> <esc><cmd>w<CR><cmd>exec '!python3' shellescape(@%, 1)<CR>
-- autocmd FileType rust map <buffer> <C-r> <cmd>w<CR><cmd>exec '!cargo run'<CR>
-- autocmd FileType rust imap <buffer> <C-r> <cmd>w<CR><cmd>exec '!cargo run'<CR>
-- autocmd BufWritePre,InsertLeave *.{py,rs,html,css,md,lua} Neoformat
-- let g:neoformat_enabled_python = ['autopep8']
-- let g:neoformat_try_node_exe = 1

View File

@ -1,24 +1,24 @@
local status_ok, lsp_installer = pcall(require, 'nvim-lsp-installer') local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer")
if not status_ok then if not status_ok then
return return
end end
local lspconfig = require('lspconfig') local lspconfig = require("lspconfig")
local servers = { 'jsonls', 'sumneko_lua', 'pyright' } local servers = { "jsonls", "sumneko_lua", "pyright" }
lsp_installer.setup({ lsp_installer.setup({
ensure_installed = servers, ensure_installed = servers,
}) })
for _, server in pairs(servers) do for _, server in pairs(servers) do
local opts = { local opts = {
on_attach = require('user.lsp.handlers').on_attach, on_attach = require("user.lsp.handlers").on_attach,
capabilities = require('user.lsp.handlers').capabilities, capabilities = require("user.lsp.handlers").capabilities,
} }
local has_custom_opts, server_custom_opts = pcall(require, 'user.lsp.settings.' .. server) local has_custom_opts, server_custom_opts = pcall(require, "user.lsp.settings." .. server)
if has_custom_opts then if has_custom_opts then
opts = vim.tbl_deep_extend('force', opts, server_custom_opts) opts = vim.tbl_deep_extend("force", opts, server_custom_opts)
end end
lspconfig[server].setup(opts) lspconfig[server].setup(opts)
end end

View File

@ -1,100 +1,99 @@
local M = {} local M = {}
local api = vim.api
local lsp = vim.lsp
-- TODO: backfill this to template -- TODO: backfill this to template
M.setup = function() M.setup = function()
local signs = { local signs = {
{ name = 'DiagnosticSignError', text = '' }, { name = "DiagnosticSignError", text = "" },
{ name = 'DiagnosticSignWarn', text = '' }, { name = "DiagnosticSignWarn", text = "" },
{ name = 'DiagnosticSignHint', text = '' }, { name = "DiagnosticSignHint", text = "" },
{ name = 'DiagnosticSignInfo', text = '' }, { name = "DiagnosticSignInfo", text = "" },
} }
for _, sign in ipairs(signs) do for _, sign in ipairs(signs) do
vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = '' }) vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" })
end end
local config = { local config = {
-- disable virtual text -- disable virtual text
virtual_text = false, virtual_text = false,
-- show signs -- show signs
signs = { signs = {
active = signs, active = signs,
}, },
update_in_insert = true, update_in_insert = true,
underline = true, underline = true,
severity_sort = true, severity_sort = true,
float = { float = {
focusable = false, focusable = false,
style = 'minimal', style = "minimal",
border = 'rounded', border = "rounded",
source = 'always', source = "always",
header = '', header = "",
prefix = '', prefix = "",
}, },
} }
vim.diagnostic.config(config) vim.diagnostic.config(config)
vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { lsp.handlers["textDocument/hover"] = lsp.with(lsp.handlers.hover, {
border = 'rounded', border = "rounded",
width = 60, width = 60,
}) })
vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.signature_help, { lsp.handlers["textDocument/signatureHelp"] = lsp.with(lsp.handlers.signature_help, {
border = 'rounded', border = "rounded",
width = 60, width = 60,
}) })
end end
local function lsp_highlight_document(client) local function lsp_highlight_document(client)
-- Set autocommands conditional on server_capabilities -- Set autocommands conditional on server_capabilities
local status_ok, illuminate = pcall(require, 'illuminate') local status_ok, illuminate = pcall(require, "illuminate")
if not status_ok then if not status_ok then
return return
end end
illuminate.on_attach(client) illuminate.on_attach(client)
-- end -- end
end end
local function lsp_keymaps(bufnr) local function lsp_keymaps(bufnr)
local opts = { noremap = true, silent = true } local opts = { noremap = true, silent = true }
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) api.nvim_buf_set_keymap(bufnr, "n", "gD", "<cmd>lua lsp.buf.declaration()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>lua lsp.buf.definition()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua lsp.buf.hover()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) api.nvim_buf_set_keymap(bufnr, "n", "gi", "<cmd>lua lsp.buf.implementation()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) api.nvim_buf_set_keymap(bufnr, "n", "<C-k>", "<cmd>lua lsp.buf.signature_help()<CR>", opts)
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) -- api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua lsp.buf.rename()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts) api.nvim_buf_set_keymap(bufnr, "n", "gr", "<cmd>lua lsp.buf.references()<CR>", opts)
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts) -- api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca', '<cmd>lua lsp.buf.code_action()<CR>', opts)
-- vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>f', '<cmd>lua vim.diagnostic.open_float()<CR>', opts) -- api.nvim_buf_set_keymap(bufnr, 'n', '<leader>f', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d', '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts) api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts)
vim.api.nvim_buf_set_keymap( api.nvim_buf_set_keymap(bufnr, "n", "gl", '<cmd>lua vim.diagnostic.open_float({ border = "rounded" })<CR>', opts)
bufnr, api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts)
'n', api.nvim_buf_set_keymap(bufnr, "n", "<leader>q", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts)
'gl', vim.cmd([[ command! Format execute 'lua lsp.buf.format{async=true}' ]])
'<cmd>lua vim.diagnostic.open_float({ border = "rounded" })<CR>',
opts
)
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d', '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>q', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts)
vim.cmd([[ command! Format execute 'lua vim.lsp.buf.format{async=true}' ]])
end end
M.on_attach = function(client, bufnr) M.on_attach = function(client, bufnr)
-- vim.notify(client.name .. ' starting...') -- vim.notify(client.name .. ' starting...')
-- TODO: refactor this into a method that checks if string in list -- TODO: refactor this into a method that checks if string in list
if client.name == 'tsserver' then if client.name == "tsserver" then
client.resolved_capabilities.document_formatting = false client.resolved_capabilities.document_formatting = false
end end
lsp_keymaps(bufnr) if client.name == "sumneko_lua" then
lsp_highlight_document(client) client.resolved_capabilities.document_formatting = false
end
lsp_keymaps(bufnr)
lsp_highlight_document(client)
end end
local capabilities = vim.lsp.protocol.make_client_capabilities() local capabilities = lsp.protocol.make_client_capabilities()
local status_ok, cmp_nvim_lsp = pcall(require, 'cmp_nvim_lsp') local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
if not status_ok then if not status_ok then
return return
end end
M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities) M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities)

View File

@ -1,8 +1,8 @@
local status_ok, _ = pcall(require, 'lspconfig') local status_ok, _ = pcall(require, "lspconfig")
if not status_ok then if not status_ok then
return return
end end
require('user.lsp.configs') require("user.lsp.configs")
require('user.lsp.handlers').setup() require("user.lsp.handlers").setup()
require('user.lsp.null-ls') require("user.lsp.null-ls")

View File

@ -1,6 +1,6 @@
local null_ls_status_ok, null_ls = pcall(require, 'null-ls') local null_ls_status_ok, null_ls = pcall(require, "null-ls")
if not null_ls_status_ok then if not null_ls_status_ok then
return return
end end
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
@ -9,11 +9,15 @@ local formatting = null_ls.builtins.formatting
local diagnostics = null_ls.builtins.diagnostics local diagnostics = null_ls.builtins.diagnostics
null_ls.setup({ null_ls.setup({
debug = false, debug = true,
sources = { sources = {
formatting.prettier.with({ extra_args = { '--no-semi', '--single-quote', '--jsx-single-quote' } }), formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }),
formatting.black.with({ extra_args = { '--fast' } }), formatting.autopep8,
formatting.stylua, formatting.stylua,
-- diagnostics.flake8 formatting.rustfmt,
}, formatting.beautysh,
-- diagnostics.luacheck,
diagnostics.pylint,
diagnostics.zsh,
},
}) })

View File

@ -1,197 +1,197 @@
local default_schemas = nil local default_schemas = nil
local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls") local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls")
if status_ok then if status_ok then
default_schemas = jsonls_settings.get_default_schemas() default_schemas = jsonls_settings.get_default_schemas()
end end
local schemas = { local schemas = {
{ {
description = "TypeScript compiler configuration file", description = "TypeScript compiler configuration file",
fileMatch = { fileMatch = {
"tsconfig.json", "tsconfig.json",
"tsconfig.*.json", "tsconfig.*.json",
}, },
url = "https://json.schemastore.org/tsconfig.json", url = "https://json.schemastore.org/tsconfig.json",
}, },
{ {
description = "Lerna config", description = "Lerna config",
fileMatch = { "lerna.json" }, fileMatch = { "lerna.json" },
url = "https://json.schemastore.org/lerna.json", url = "https://json.schemastore.org/lerna.json",
}, },
{ {
description = "Babel configuration", description = "Babel configuration",
fileMatch = { fileMatch = {
".babelrc.json", ".babelrc.json",
".babelrc", ".babelrc",
"babel.config.json", "babel.config.json",
}, },
url = "https://json.schemastore.org/babelrc.json", url = "https://json.schemastore.org/babelrc.json",
}, },
{ {
description = "ESLint config", description = "ESLint config",
fileMatch = { fileMatch = {
".eslintrc.json", ".eslintrc.json",
".eslintrc", ".eslintrc",
}, },
url = "https://json.schemastore.org/eslintrc.json", url = "https://json.schemastore.org/eslintrc.json",
}, },
{ {
description = "Bucklescript config", description = "Bucklescript config",
fileMatch = { "bsconfig.json" }, fileMatch = { "bsconfig.json" },
url = "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json", url = "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json",
}, },
{ {
description = "Prettier config", description = "Prettier config",
fileMatch = { fileMatch = {
".prettierrc", ".prettierrc",
".prettierrc.json", ".prettierrc.json",
"prettier.config.json", "prettier.config.json",
}, },
url = "https://json.schemastore.org/prettierrc", url = "https://json.schemastore.org/prettierrc",
}, },
{ {
description = "Vercel Now config", description = "Vercel Now config",
fileMatch = { "now.json" }, fileMatch = { "now.json" },
url = "https://json.schemastore.org/now", url = "https://json.schemastore.org/now",
}, },
{ {
description = "Stylelint config", description = "Stylelint config",
fileMatch = { fileMatch = {
".stylelintrc", ".stylelintrc",
".stylelintrc.json", ".stylelintrc.json",
"stylelint.config.json", "stylelint.config.json",
}, },
url = "https://json.schemastore.org/stylelintrc", url = "https://json.schemastore.org/stylelintrc",
}, },
{ {
description = "A JSON schema for the ASP.NET LaunchSettings.json files", description = "A JSON schema for the ASP.NET LaunchSettings.json files",
fileMatch = { "launchsettings.json" }, fileMatch = { "launchsettings.json" },
url = "https://json.schemastore.org/launchsettings.json", url = "https://json.schemastore.org/launchsettings.json",
}, },
{ {
description = "Schema for CMake Presets", description = "Schema for CMake Presets",
fileMatch = { fileMatch = {
"CMakePresets.json", "CMakePresets.json",
"CMakeUserPresets.json", "CMakeUserPresets.json",
}, },
url = "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json", url = "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json",
}, },
{ {
description = "Configuration file as an alternative for configuring your repository in the settings page.", description = "Configuration file as an alternative for configuring your repository in the settings page.",
fileMatch = { fileMatch = {
".codeclimate.json", ".codeclimate.json",
}, },
url = "https://json.schemastore.org/codeclimate.json", url = "https://json.schemastore.org/codeclimate.json",
}, },
{ {
description = "LLVM compilation database", description = "LLVM compilation database",
fileMatch = { fileMatch = {
"compile_commands.json", "compile_commands.json",
}, },
url = "https://json.schemastore.org/compile-commands.json", url = "https://json.schemastore.org/compile-commands.json",
}, },
{ {
description = "Config file for Command Task Runner", description = "Config file for Command Task Runner",
fileMatch = { fileMatch = {
"commands.json", "commands.json",
}, },
url = "https://json.schemastore.org/commands.json", url = "https://json.schemastore.org/commands.json",
}, },
{ {
description = "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.", description = "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.",
fileMatch = { fileMatch = {
"*.cf.json", "*.cf.json",
"cloudformation.json", "cloudformation.json",
}, },
url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json", url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json",
}, },
{ {
description = "The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.", description = "The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.",
fileMatch = { fileMatch = {
"serverless.template", "serverless.template",
"*.sam.json", "*.sam.json",
"sam.json", "sam.json",
}, },
url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json", url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json",
}, },
{ {
description = "Json schema for properties json file for a GitHub Workflow template", description = "Json schema for properties json file for a GitHub Workflow template",
fileMatch = { fileMatch = {
".github/workflow-templates/**.properties.json", ".github/workflow-templates/**.properties.json",
}, },
url = "https://json.schemastore.org/github-workflow-template-properties.json", url = "https://json.schemastore.org/github-workflow-template-properties.json",
}, },
{ {
description = "golangci-lint configuration file", description = "golangci-lint configuration file",
fileMatch = { fileMatch = {
".golangci.toml", ".golangci.toml",
".golangci.json", ".golangci.json",
}, },
url = "https://json.schemastore.org/golangci-lint.json", url = "https://json.schemastore.org/golangci-lint.json",
}, },
{ {
description = "JSON schema for the JSON Feed format", description = "JSON schema for the JSON Feed format",
fileMatch = { fileMatch = {
"feed.json", "feed.json",
}, },
url = "https://json.schemastore.org/feed.json", url = "https://json.schemastore.org/feed.json",
versions = { versions = {
["1"] = "https://json.schemastore.org/feed-1.json", ["1"] = "https://json.schemastore.org/feed-1.json",
["1.1"] = "https://json.schemastore.org/feed.json", ["1.1"] = "https://json.schemastore.org/feed.json",
}, },
}, },
{ {
description = "Packer template JSON configuration", description = "Packer template JSON configuration",
fileMatch = { fileMatch = {
"packer.json", "packer.json",
}, },
url = "https://json.schemastore.org/packer.json", url = "https://json.schemastore.org/packer.json",
}, },
{ {
description = "NPM configuration file", description = "NPM configuration file",
fileMatch = { fileMatch = {
"package.json", "package.json",
}, },
url = "https://json.schemastore.org/package.json", url = "https://json.schemastore.org/package.json",
}, },
{ {
description = "JSON schema for Visual Studio component configuration files", description = "JSON schema for Visual Studio component configuration files",
fileMatch = { fileMatch = {
"*.vsconfig", "*.vsconfig",
}, },
url = "https://json.schemastore.org/vsconfig.json", url = "https://json.schemastore.org/vsconfig.json",
}, },
{ {
description = "Resume json", description = "Resume json",
fileMatch = { "resume.json" }, fileMatch = { "resume.json" },
url = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json", url = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
}, },
} }
local function extend(tab1, tab2) local function extend(tab1, tab2)
for _, value in ipairs(tab2 or {}) do for _, value in ipairs(tab2 or {}) do
table.insert(tab1, value) table.insert(tab1, value)
end end
return tab1 return tab1
end end
local extended_schemas = extend(schemas, default_schemas) local extended_schemas = extend(schemas, default_schemas)
local opts = { local opts = {
settings = { settings = {
json = { json = {
schemas = extended_schemas, schemas = extended_schemas,
}, },
}, },
setup = { setup = {
commands = { commands = {
Format = { Format = {
function() function()
vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 }) vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line("$"), 0 })
end, end,
}, },
}, },
}, },
} }
return opts return opts

View File

@ -1,9 +1,9 @@
return { return {
settings = { settings = {
python = { python = {
analysis = { analysis = {
typeCheckingMode = "off" typeCheckingMode = "off",
}, },
}, },
}, },
} }

View File

@ -1,15 +1,15 @@
return { return {
settings = { settings = {
Lua = { Lua = {
diagnostics = { diagnostics = {
globals = { "vim" }, globals = { "vim", "require" },
}, },
workspace = { workspace = {
library = { library = {
[vim.fn.expand("$VIMRUNTIME/lua")] = true, [vim.fn.expand("$VIMRUNTIME/lua")] = true,
[vim.fn.stdpath("config") .. "/lua"] = true, [vim.fn.stdpath("config") .. "/lua"] = true,
}, },
}, },
}, },
}, },
} }

View File

@ -1,93 +1,93 @@
local status_ok, lualine = pcall(require, 'lualine') local status_ok, lualine = pcall(require, "lualine")
if not status_ok then if not status_ok then
return return
end end
local hide_in_width = function() local hide_in_width = function()
return vim.fn.winwidth(0) > 80 return vim.fn.winwidth(0) > 80
end end
local diagnostics = { local diagnostics = {
'diagnostics', "diagnostics",
sources = { 'nvim_diagnostic' }, sources = { "nvim_diagnostic" },
sections = { 'error', 'warn' }, sections = { "error", "warn" },
symbols = { error = '', warn = '' }, symbols = { error = "", warn = "" },
colored = false, colored = false,
update_in_insert = false, update_in_insert = false,
always_visible = true, always_visible = true,
} }
local diff = { local diff = {
'diff', "diff",
colored = false, colored = false,
symbols = { added = '', modified = '', removed = '' }, -- changes diff symbols symbols = { added = "", modified = "", removed = "" }, -- changes diff symbols
cond = hide_in_width cond = hide_in_width,
} }
local mode = { local mode = {
'mode', "mode",
fmt = function(str) fmt = function(str)
return '-- ' .. str .. ' --' return "-- " .. str .. " --"
end, end,
} }
local filetype = { local filetype = {
'filetype', "filetype",
icons_enabled = false, icons_enabled = false,
icon = nil, icon = nil,
} }
local branch = { local branch = {
'branch', "branch",
icons_enabled = true, icons_enabled = true,
icon = '', icon = "",
} }
local location = { local location = {
'location', "location",
padding = 0, padding = 0,
} }
-- cool function for progress -- cool function for progress
local progress = function() local progress = function()
local current_line = vim.fn.line('.') local current_line = vim.fn.line(".")
local total_lines = vim.fn.line('$') local total_lines = vim.fn.line("$")
local chars = { '__', '▁▁', '▂▂', '▃▃', '▄▄', '▅▅', '▆▆', '▇▇', '██' } local chars = { "__", "▁▁", "▂▂", "▃▃", "▄▄", "▅▅", "▆▆", "▇▇", "██" }
local line_ratio = current_line / total_lines local line_ratio = current_line / total_lines
local index = math.ceil(line_ratio * #chars) local index = math.ceil(line_ratio * #chars)
return chars[index] return chars[index]
end end
local spaces = function() local spaces = function()
return 'spaces: ' .. vim.api.nvim_buf_get_option(0, 'shiftwidth') return "spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth")
end end
lualine.setup({ lualine.setup({
options = { options = {
icons_enabled = true, icons_enabled = true,
theme = 'auto', theme = "auto",
component_separators = { left = '', right = ''}, component_separators = { left = "", right = "" },
section_separators = { left = '', right = ''}, section_separators = { left = "", right = "" },
disabled_filetypes = {}, disabled_filetypes = {},
always_divide_middle = true, always_divide_middle = true,
globalstatus = false, globalstatus = false,
}, },
sections = { sections = {
lualine_a = {'mode'}, lualine_a = { "mode" },
lualine_b = {'branch', 'diff', 'diagnostics'}, lualine_b = { "branch", "diff", "diagnostics" },
lualine_c = {'filename'}, lualine_c = { "filename" },
lualine_x = {'encoding', 'fileformat', 'filetype'}, lualine_x = { "encoding", "fileformat", "filetype" },
lualine_y = {'progress'}, lualine_y = { "progress" },
lualine_z = {'location'} lualine_z = { "location" },
}, },
inactive_sections = { inactive_sections = {
lualine_a = {}, lualine_a = {},
lualine_b = {}, lualine_b = {},
lualine_c = { 'filename' }, lualine_c = { "filename" },
lualine_x = { 'location' }, lualine_x = { "location" },
lualine_y = {}, lualine_y = {},
lualine_z = {}, lualine_z = {},
}, },
tabline = {}, tabline = {},
extensions = {}, extensions = {},
}) })

View File

@ -1,81 +1,80 @@
local status_ok, nvim_tree = pcall(require, 'nvim-tree') local status_ok, nvim_tree = pcall(require, "nvim-tree")
if not status_ok then if not status_ok then
return return
end end
local config_status_ok, nvim_tree_config = pcall(require, 'nvim-tree.config') local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config")
if not config_status_ok then if not config_status_ok then
return return
end end
local tree_cb = nvim_tree_config.nvim_tree_callback local tree_cb = nvim_tree_config.nvim_tree_callback
nvim_tree.setup({
nvim_tree.setup { sort_by = "case_sensitive",
sort_by = 'case_sensitive', update_focused_file = {
update_focused_file = { enable = true,
enable = true, update_cwd = true,
update_cwd = true, },
}, renderer = {
renderer = { group_empty = true,
group_empty = true, root_folder_modifier = ":t",
root_folder_modifier = ':t', icons = {
icons = { webdev_colors = true,
webdev_colors = true, show = {
show = { file = true,
file = true, folder = true,
folder = true, folder_arrow = true,
folder_arrow = true, git = true,
git = true, },
}, glyphs = {
glyphs = { default = "",
default = '', symlink = "",
symlink = '', folder = {
folder = { arrow_open = "",
arrow_open = '', arrow_closed = "",
arrow_closed = '', default = "",
default = '', open = "",
open = '', empty = "",
empty = '', empty_open = "",
empty_open = '', symlink = "",
symlink = '', symlink_open = "",
symlink_open = '', },
}, git = {
git = { unstaged = "",
unstaged = '', staged = "S",
staged = 'S', unmerged = "",
unmerged = '', renamed = "",
renamed = '', untracked = "U",
untracked = 'U', deleted = "",
deleted = '', ignored = "",
ignored = '', },
}, },
}, },
}, },
}, diagnostics = {
diagnostics = { enable = true,
enable = true, show_on_dirs = true,
show_on_dirs = true, icons = {
icons = { hint = "",
hint = '', info = "",
info = '', warning = "",
warning = '', error = "",
error = '', },
}, },
}, view = {
view = { width = 30,
width = 30, height = 30,
height = 30, side = "left",
side = 'left', mappings = {
mappings = { list = {
list = { { key = { "l", "<CR>", "o" }, cb = tree_cb("edit") },
{ key = { 'l', '<CR>', 'o' }, cb = tree_cb 'edit' }, { key = "h", cb = tree_cb("close_node") },
{ key = 'h', cb = tree_cb 'close_node' }, { key = "v", cb = tree_cb("vsplit") },
{ key = 'v', cb = tree_cb 'vsplit' }, },
}, },
}, },
}, filters = {
filters = { dotfiles = false,
dotfiles = false, },
}, })
}

View File

@ -1,56 +1,59 @@
local g = vim.g local g = vim.g
local o = vim.o local o = vim.o
g.mapleader = ' ' g.mapleader = " "
g.maplocalleader = ' ' g.maplocalleader = " "
local options = { local options = {
backup = false, -- creates a backup file backup = false, -- creates a backup file
clipboard = 'unnamedplus', -- allows neovim to access the system clipboard clipboard = "unnamedplus", -- allows neovim to access the system clipboard
cmdheight = 2, -- more space in the neovim command line for displaying messages cmdheight = 2, -- more space in the neovim command line for displaying messages
completeopt = { 'menu', 'menuone', 'noselect' }, -- mostly just for cmp completeopt = { "menu", "menuone", "noselect" }, -- mostly just for cmp
conceallevel = 0, -- so that `` is visible in markdown files conceallevel = 0, -- so that `` is visible in markdown files
fileencoding = 'utf-8', -- the encoding written to a file fileencoding = "utf-8", -- the encoding written to a file
hlsearch = true, -- highlight all matches on previous search pattern hlsearch = true, -- highlight all matches on previous search pattern
ignorecase = true, -- ignore case in search patterns ignorecase = true, -- ignore case in search patterns
mouse = 'a', -- allow the mouse to be used in neovim mouse = "a", -- allow the mouse to be used in neovim
pumheight = 10, -- pop up menu height pumheight = 10, -- pop up menu height
showmode = false, -- we don't need to see things like -- INSERT -- anymore showmode = false, -- we don't need to see things like -- INSERT -- anymore
showtabline = 2, -- always show tabs showtabline = 2, -- always show tabs
smartcase = true, -- smart case smartcase = true, -- smart case
smartindent = true, -- make indenting smarter again smartindent = true, -- make indenting smarter again
splitbelow = true, -- force all horizontal splits to go below current window splitbelow = true, -- force all horizontal splits to go below current window
splitright = true, -- force all vertical splits to go to the right of current window splitright = true, -- force all vertical splits to go to the right of current window
swapfile = true, -- creates a swapfile swapfile = true, -- creates a swapfile
termguicolors = true, -- set term gui colors (most terminals support this) termguicolors = true, -- set term gui colors (most terminals support this)
timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds) timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds)
undofile = true, -- enable persistent undo undofile = true, -- enable persistent undo
updatetime = 300, -- faster completion (4000ms default) updatetime = 300, -- faster completion (4000ms default)
writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited
expandtab = true, -- convert tabs to spaces expandtab = true, -- convert tabs to spaces
shiftwidth = 4, -- the number of spaces inserted for each indentation shiftwidth = 4, -- the number of spaces inserted for each indentation
tabstop = 4, -- insert 4 spaces for a tab tabstop = 4, -- insert 4 spaces for a tab
cursorline = true, -- highlight the current line cursorline = true, -- highlight the current line
cursorcolumn = true, -- highlight the current column cursorcolumn = true, -- highlight the current column
number = true, -- set numbered lines number = true, -- set numbered lines
relativenumber = true, -- set relative numbered lines relativenumber = true, -- set relative numbered lines
numberwidth = 4, -- set number column width to 4 {default 4} numberwidth = 4, -- set number column width to 4 {default 4}
signcolumn = 'yes', -- always show the sign column, otherwise it would shift the text each time signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time
wrap = false, -- display lines as one long line wrap = false, -- display lines as one long line
scrolloff = 8, -- is one of my fav scrolloff = 8, -- is one of my fav
sidescrolloff = 8, sidescrolloff = 8,
--wildmode = 'longest,list,full', --wildmode = 'longest,list,full',
guifont = 'JetBrainsMono NF:h11', -- the font used in graphical neovim applications guifont = "JetBrainsMono NF:h11", -- the font used in graphical neovim applications
} }
for k, v in pairs(options) do for k, v in pairs(options) do
vim.opt[k] = v vim.opt[k] = v
end end
vim.cmd [[highlight CursorLine ctermbg=Yellow cterm=bold guibg=#2b2b2b]] vim.cmd([[highlight CursorLine ctermbg=Yellow cterm=bold guibg=#2b2b2b]])
vim.cmd [[highlight CursorColumn ctermbg=Yellow cterm=bold guibg=#2b2b2b]] vim.cmd([[highlight CursorColumn ctermbg=Yellow cterm=bold guibg=#2b2b2b]])
g.dracula_transparent_bg = true g.dracula_transparent_bg = true
g.dracula_italic_comment = true g.dracula_italic_comment = true
g.dracula_show_end_of_buffer = true g.dracula_show_end_of_buffer = true
vim.opt_local.suffixesadd:prepend(".lua")
vim.opt_local.suffixesadd:prepend("init.lua")
vim.opt_local.path:prepend(vim.fn.stdpath("config") .. "/lua")

View File

@ -1,18 +1,18 @@
local fn = vim.fn local fn = vim.fn
-- Automatically install packer -- Automatically install packer
local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim' local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
if fn.empty(fn.glob(install_path)) > 0 then if fn.empty(fn.glob(install_path)) > 0 then
PACKER_BOOTSTRAP = fn.system({ PACKER_BOOTSTRAP = fn.system({
'git', "git",
'clone', "clone",
'--depth', "--depth",
'1', "1",
'https://github.com/wbthomason/packer.nvim', "https://github.com/wbthomason/packer.nvim",
install_path, install_path,
}) })
print('Installing packer close and reopen Neovim...') print("Installing packer close and reopen Neovim...")
vim.cmd([[packadd packer.nvim]]) vim.cmd([[packadd packer.nvim]])
end end
-- Autocommand that reloads neovim whenever you save the plugins.lua file -- Autocommand that reloads neovim whenever you save the plugins.lua file
@ -24,91 +24,88 @@ vim.cmd([[
]]) ]])
-- Use a protected call so we don't error out on first use -- Use a protected call so we don't error out on first use
local status_ok, packer = pcall(require, 'packer') local status_ok, packer = pcall(require, "packer")
if not status_ok then if not status_ok then
return return
end end
-- Have packer use a popup window -- Have packer use a popup window
packer.init({ packer.init({
display = { display = {
open_fn = function() open_fn = function()
return require('packer.util').float({ border = 'rounded' }) return require("packer.util").float({ border = "rounded" })
end, end,
}, },
}) })
-- Install your plugins here -- Install your plugins here
return packer.startup( return packer.startup(function(use)
function(use) -- My plugins here
-- My plugins here
use 'wbthomason/packer.nvim' -- Have packer manage itself use("wbthomason/packer.nvim") -- Have packer manage itself
use 'nvim-lua/popup.nvim' -- Useful lua functions used by lots of plugins use("nvim-lua/popup.nvim") -- Useful lua functions used by lots of plugins
use 'nvim-lua/plenary.nvim' -- Useful lua functions used by lots of plugins use("nvim-lua/plenary.nvim") -- Useful lua functions used by lots of plugins
use 'windwp/nvim-autopairs' -- Autopairs, integrates with both cmp and treesitter use("windwp/nvim-autopairs") -- Autopairs, integrates with both cmp and treesitte
use 'numToStr/Comment.nvim' use("numToStr/Comment.nvim")
use 'JoosepAlviste/nvim-ts-context-commentstring' use("JoosepAlviste/nvim-ts-context-commentstring")
use 'kyazdani42/nvim-web-devicons' use("kyazdani42/nvim-web-devicons")
use 'kyazdani42/nvim-tree.lua' use("kyazdani42/nvim-tree.lua")
use 'akinsho/bufferline.nvim' use("akinsho/bufferline.nvim")
use 'moll/vim-bbye' use("moll/vim-bbye")
use 'nvim-lualine/lualine.nvim' use("nvim-lualine/lualine.nvim")
use 'akinsho/toggleterm.nvim' use("akinsho/toggleterm.nvim")
use 'ahmedkhalf/project.nvim' use("ahmedkhalf/project.nvim")
use 'lewis6991/impatient.nvim' use("lewis6991/impatient.nvim")
use 'lukas-reineke/indent-blankline.nvim' use("lukas-reineke/indent-blankline.nvim")
use 'goolord/alpha-nvim' use("goolord/alpha-nvim")
use 'folke/which-key.nvim' use("folke/which-key.nvim")
use 'andweeb/presence.nvim' use("andweeb/presence.nvim")
use 'mattn/emmet-vim' use("mattn/emmet-vim")
use 'sbdchd/neoformat' use("saecki/crates.nvim")
use 'vimwiki/vimwiki' use("norcalli/nvim-colorizer.lua")
use 'saecki/crates.nvim'
use {
'norcalli/nvim-colorizer.lua',
config = function()
require('colorizer').setup()
end
}
-- Colorschemes -- Vimwiki
use 'Mofiqul/dracula.nvim' use("vimwiki/vimwiki")
use 'folke/tokyonight.nvim' use("jbyuki/carrot.nvim")
use 'lunarvim/darkplus.nvim'
-- cmp plugins -- Colorschemes
use 'hrsh7th/nvim-cmp'-- The completion plugin use("Mofiqul/dracula.nvim")
use 'hrsh7th/cmp-buffer' -- buffer completions use("folke/tokyonight.nvim")
use 'hrsh7th/cmp-path'-- path completions use("lunarvim/darkplus.nvim")
use 'hrsh7th/cmp-cmdline' -- cmdline completions
use 'saadparwaiz1/cmp_luasnip' -- snippet completions
use 'hrsh7th/cmp-nvim-lsp'
use 'hrsh7th/cmp-nvim-lua'
-- snippets -- cmp plugins
use 'L3MON4D3/LuaSnip' --snippet engine use("hrsh7th/nvim-cmp") -- The completion plugin
use 'rafamadriz/friendly-snippets' -- a bunch of snippets to use use("hrsh7th/cmp-buffer") -- buffer completions
use("hrsh7th/cmp-path") -- path completions
use("hrsh7th/cmp-cmdline") -- cmdline completions
use("saadparwaiz1/cmp_luasnip") -- snippet completions
use("hrsh7th/cmp-nvim-lsp")
use("hrsh7th/cmp-nvim-lua")
-- LSP -- snippets
use 'neovim/nvim-lspconfig' -- enable LSP use("L3MON4D3/LuaSnip") --snippet engine
use 'williamboman/nvim-lsp-installer' -- simple to use language server installer use("rafamadriz/friendly-snippets") -- a bunch of snippets to use
use 'jose-elias-alvarez/null-ls.nvim' -- for formatters and linters
-- Telescope -- LSP
use 'nvim-telescope/telescope.nvim' use("neovim/nvim-lspconfig") -- enable LSP
use {'nvim-telescope/telescope-fzf-native.nvim', run = 'make' } use("williamboman/nvim-lsp-installer") -- simple to use language server installer
use("jose-elias-alvarez/null-ls.nvim") -- for formatters and linters
-- Treesitter -- Telescope
use 'nvim-treesitter/nvim-treesitter' use({ "nvim-telescope/telescope.nvim", run = ":TSUpdate" })
use({ "nvim-telescope/telescope-fzf-native.nvim", run = "make" })
use("nvim-telescope/telescope-media-files.nvim")
-- Git -- Treesitter
use 'lewis6991/gitsigns.nvim' use("nvim-treesitter/nvim-treesitter")
use("p00f/nvim-ts-rainbow")
-- Automatically set up your configuration after cloning packer.nvim -- Git
-- Put this at the end after all plugins use("lewis6991/gitsigns.nvim")
if PACKER_BOOTSTRAP then
require('packer').sync() -- Automatically set up your configuration after cloning packer.nvim
end -- Put this at the end after all plugins
end if PACKER_BOOTSTRAP then
) require("packer").sync()
end
end)

View File

@ -1,48 +1,48 @@
local status_ok, project = pcall(require, "project_nvim") local status_ok, project = pcall(require, "project_nvim")
if not status_ok then if not status_ok then
return return
end end
project.setup({ project.setup({
---@usage set to false to disable project.nvim. ---@usage set to false to disable project.nvim.
--- This is on by default since it's currently the expected behavior. --- This is on by default since it's currently the expected behavior.
active = true, active = true,
on_config_done = nil, on_config_done = nil,
---@usage set to true to disable setting the current-woriking directory ---@usage set to true to disable setting the current-woriking directory
--- Manual mode doesn't automatically change your root directory, so you have --- Manual mode doesn't automatically change your root directory, so you have
--- the option to manually do so using `:ProjectRoot` command. --- the option to manually do so using `:ProjectRoot` command.
manual_mode = false, manual_mode = false,
---@usage Methods of detecting the root directory ---@usage Methods of detecting the root directory
--- Allowed values: **"lsp"** uses the native neovim lsp --- Allowed values: **"lsp"** uses the native neovim lsp
--- **"pattern"** uses vim-rooter like glob pattern matching. Here --- **"pattern"** uses vim-rooter like glob pattern matching. Here
--- order matters: if one is not detected, the other is used as fallback. You --- order matters: if one is not detected, the other is used as fallback. You
--- can also delete or rearangne the detection methods. --- can also delete or rearangne the detection methods.
-- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project -- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project
detection_methods = { "pattern" }, detection_methods = { "pattern" },
---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods ---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods
patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" }, patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" },
---@ Show hidden files in telescope when searching for files in a project ---@ Show hidden files in telescope when searching for files in a project
show_hidden = false, show_hidden = false,
---@usage When set to false, you will get a message when project.nvim changes your directory. ---@usage When set to false, you will get a message when project.nvim changes your directory.
-- When set to false, you will get a message when project.nvim changes your directory. -- When set to false, you will get a message when project.nvim changes your directory.
silent_chdir = true, silent_chdir = true,
---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... } ---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... }
ignore_lsp = {}, ignore_lsp = {},
---@type string ---@type string
---@usage path to store the project history for use in telescope ---@usage path to store the project history for use in telescope
datapath = vim.fn.stdpath("data"), datapath = vim.fn.stdpath("data"),
}) })
local tele_status_ok, telescope = pcall(require, "telescope") local tele_status_ok, telescope = pcall(require, "telescope")
if not tele_status_ok then if not tele_status_ok then
return return
end end
telescope.load_extension('projects') telescope.load_extension("projects")

View File

@ -1,99 +1,106 @@
local status_ok, telescope = pcall(require, 'telescope') local status_ok, telescope = pcall(require, "telescope")
if not status_ok then if not status_ok then
return return
end end
local actions = require 'telescope.actions' local actions = require("telescope.actions")
telescope.load_extension("fzf")
telescope.load_extension("media_files")
telescope.setup { telescope.setup({
defaults = { defaults = {
prompt_prefix = '', prompt_prefix = "",
selection_caret = '', selection_caret = "",
path_display = { 'smart' }, path_display = { "smart" },
mappings = { mappings = {
i = { i = {
['<C-n>'] = actions.cycle_history_next, ["<C-n>"] = actions.cycle_history_next,
['<C-p>'] = actions.cycle_history_prev, ["<C-p>"] = actions.cycle_history_prev,
['<C-j>'] = actions.move_selection_next, ["<C-j>"] = actions.move_selection_next,
['<C-k>'] = actions.move_selection_previous, ["<C-k>"] = actions.move_selection_previous,
['<C-c>'] = actions.close, ["<C-c>"] = actions.close,
['<Down>'] = actions.move_selection_next, ["<Down>"] = actions.move_selection_next,
['<Up>'] = actions.move_selection_previous, ["<Up>"] = actions.move_selection_previous,
['<CR>'] = actions.select_default, ["<CR>"] = actions.select_default,
['<C-x>'] = actions.select_horizontal, ["<C-x>"] = actions.select_horizontal,
['<C-v>'] = actions.select_vertical, ["<C-v>"] = actions.select_vertical,
['<C-t>'] = actions.select_tab, ["<C-t>"] = actions.select_tab,
['<C-u>'] = actions.preview_scrolling_up, ["<C-u>"] = actions.preview_scrolling_up,
['<C-d>'] = actions.preview_scrolling_down, ["<C-d>"] = actions.preview_scrolling_down,
['<PageUp>'] = actions.results_scrolling_up, ["<PageUp>"] = actions.results_scrolling_up,
['<PageDown>'] = actions.results_scrolling_down, ["<PageDown>"] = actions.results_scrolling_down,
['<Tab>'] = actions.toggle_selection + actions.move_selection_worse, ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse,
['<S-Tab>'] = actions.toggle_selection + actions.move_selection_better, ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better,
['<C-q>'] = actions.send_to_qflist + actions.open_qflist, ["<C-q>"] = actions.send_to_qflist + actions.open_qflist,
['<M-q>'] = actions.send_selected_to_qflist + actions.open_qflist, ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
['<C-l>'] = actions.complete_tag, ["<C-l>"] = actions.complete_tag,
['<C-_>'] = actions.which_key, -- keys from pressing <C-/> ["<C-_>"] = actions.which_key, -- keys from pressing <C-/>
}, },
n = { n = {
['<esc>'] = actions.close, ["<esc>"] = actions.close,
['<CR>'] = actions.select_default, ["<CR>"] = actions.select_default,
['<C-x>'] = actions.select_horizontal, ["<C-x>"] = actions.select_horizontal,
['<C-v>'] = actions.select_vertical, ["<C-v>"] = actions.select_vertical,
['<C-t>'] = actions.select_tab, ["<C-t>"] = actions.select_tab,
['<Tab>'] = actions.toggle_selection + actions.move_selection_worse, ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse,
['<S-Tab>'] = actions.toggle_selection + actions.move_selection_better, ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better,
['<C-q>'] = actions.send_to_qflist + actions.open_qflist, ["<C-q>"] = actions.send_to_qflist + actions.open_qflist,
['<M-q>'] = actions.send_selected_to_qflist + actions.open_qflist, ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist,
['j'] = actions.move_selection_next, ["j"] = actions.move_selection_next,
['k'] = actions.move_selection_previous, ["k"] = actions.move_selection_previous,
['H'] = actions.move_to_top, ["H"] = actions.move_to_top,
['M'] = actions.move_to_middle, ["M"] = actions.move_to_middle,
['L'] = actions.move_to_bottom, ["L"] = actions.move_to_bottom,
['<Down>'] = actions.move_selection_next, ["<Down>"] = actions.move_selection_next,
['<Up>'] = actions.move_selection_previous, ["<Up>"] = actions.move_selection_previous,
['gg'] = actions.move_to_top, ["gg"] = actions.move_to_top,
['G'] = actions.move_to_bottom, ["G"] = actions.move_to_bottom,
['<C-u>'] = actions.preview_scrolling_up, ["<C-u>"] = actions.preview_scrolling_up,
['<C-d>'] = actions.preview_scrolling_down, ["<C-d>"] = actions.preview_scrolling_down,
['<PageUp>'] = actions.results_scrolling_up, ["<PageUp>"] = actions.results_scrolling_up,
['<PageDown>'] = actions.results_scrolling_down, ["<PageDown>"] = actions.results_scrolling_down,
['?'] = actions.which_key, ["?"] = actions.which_key,
}, },
}, },
}, },
pickers = { pickers = {
-- Default configuration for builtin pickers goes here: -- Default configuration for builtin pickers goes here:
-- picker_name = { -- picker_name = {
-- picker_config_key = value, -- picker_config_key = value,
-- ... -- ...
-- } -- }
-- Now the picker_config_key will be applied every time you call this -- Now the picker_config_key will be applied every time you call this
-- builtin picker -- builtin picker
}, },
extensions = { extensions = {
fzf = { fzf = {
fuzzy = true, -- false will only do exact matching fuzzy = true, -- false will only do exact matching
override_generic_sorter = true, -- override the generic sorter override_generic_sorter = true, -- override the generic sorter
override_file_sorter = true, -- override the file sorter override_file_sorter = true, -- override the file sorter
case_mode = "smart_case", -- or "ignore_case" or "respect_case" case_mode = "smart_case", -- or "ignore_case" or "respect_case"
-- the default case_mode is "smart_case" -- the default case_mode is "smart_case"
}, },
} media_files = {
} -- filetypes whitelist
require('telescope').load_extension('fzf') -- defaults to {"png", "jpg", "mp4", "webm", "pdf"}
filetypes = { "png", "webp", "jpg", "jpeg" },
find_cmd = "rg", -- find command (defaults to `fd`)
},
},
})

View File

@ -58,10 +58,10 @@ function _NCDU_TOGGLE()
ncdu:toggle() ncdu:toggle()
end end
local htop = Terminal:new({ cmd = 'htop', hidden = true }) local btop = Terminal:new({ cmd = 'btop', hidden = true })
function _HTOP_TOGGLE() function _BTOP_TOGGLE()
htop:toggle() btop:toggle()
end end
local python = Terminal:new({ cmd = 'python', hidden = true }) local python = Terminal:new({ cmd = 'python', hidden = true })

View File

@ -1,17 +1,25 @@
local status_ok, configs = pcall(require, 'nvim-treesitter.configs') local status_ok, configs = pcall(require, "nvim-treesitter.configs")
if not status_ok then if not status_ok then
return return
end end
configs.setup({ configs.setup({
ensure_installed = 'all', -- one of 'all' or a list of languages ensure_installed = "all", -- one of 'all' or a list of languages
ignore_install = { '' }, -- List of parsers to ignore installing ignore_install = { "" }, -- List of parsers to ignore installing
highlight = { highlight = {
enable = true, -- false will disable the whole extension enable = true, -- false will disable the whole extension
disable = { }, -- list of language that will be disabled disable = {}, -- list of language that will be disabled
}, },
autopairs = { autopairs = {
enable = true, enable = true,
}, },
indent = { enable = true, disable = { } }, indent = { enable = true, disable = { "yaml" } },
rainbow = {
enable = true,
-- disable = { "jsx", "cpp" }, list of languages you want to disable the plugin for
extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean
max_file_lines = nil, -- Do not enable for files with more than n lines, int
-- colors = {}, -- table of hex strings
-- termcolors = {} -- table of colour name strings
},
}) })

View File

@ -1,186 +1,195 @@
local status_ok, which_key = pcall(require, 'which-key') local status_ok, which_key = pcall(require, "which-key")
if not status_ok then if not status_ok then
return return
end end
local setup = { local setup = {
plugins = { plugins = {
marks = true, -- shows a list of your marks on ' and ` marks = true, -- shows a list of your marks on " and `
registers = true, -- shows your registers on ' in NORMAL or <C-r> in INSERT mode registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
spelling = { spelling = {
enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
suggestions = 20, -- how many suggestions should be shown in the list? suggestions = 20, -- how many suggestions should be shown in the list?
}, },
-- the presets plugin, adds help for a bunch of default keybindings in Neovim -- the presets plugin, adds help for a bunch of default keybindings in Neovim
-- No actual key bindings are created -- No actual key bindings are created
presets = { presets = {
operators = false, -- adds help for operators like d, y, ... and registers them for motion / text object completion operators = false, -- adds help for operators like d, y, ... and registers them for motion / text object completion
motions = true, -- adds help for motions motions = true, -- adds help for motions
text_objects = true, -- help for text objects triggered after entering an operator text_objects = true, -- help for text objects triggered after entering an operator
windows = true, -- default bindings on <c-w> windows = true, -- default bindings on <c-w>
nav = true, -- misc bindings to work with windows nav = true, -- misc bindings to work with windows
z = true, -- bindings for folds, spelling and others prefixed with z z = true, -- bindings for folds, spelling and others prefixed with z
g = true, -- bindings for prefixed with g g = true, -- bindings for prefixed with g
}, },
}, },
-- add operators that will trigger motion and text object completion -- add operators that will trigger motion and text object completion
-- to enable all native operators, set the preset / operators plugin above -- to enable all native operators, set the preset / operators plugin above
-- operators = { gc = 'Comments' }, -- operators = { gc = "Comments" },
key_labels = { key_labels = {
-- override the label used to display some keys. It doesn't effect WK in any other way. -- override the label used to display some keys. It doesn"t effect WK in any other way.
-- For example: -- For example:
-- ['<space>'] = 'SPC', -- ["<space>"] = "SPC",
-- ['<cr>'] = 'RET', -- ["<CR>"] = "RET",
-- ['<tab>'] = 'TAB', -- ["<tab>"] = "TAB",
}, },
icons = { icons = {
breadcrumb = '»', -- symbol used in the command line area that shows your active key combo breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
separator = '', -- symbol used between a key and it's label separator = "", -- symbol used between a key and it"s label
group = '+', -- symbol prepended to a group group = "+", -- symbol prepended to a group
}, },
popup_mappings = { popup_mappings = {
scroll_down = '<c-d>', -- binding to scroll down inside the popup scroll_down = "<c-d>", -- binding to scroll down inside the popup
scroll_up = '<c-u>', -- binding to scroll up inside the popup scroll_up = "<c-u>", -- binding to scroll up inside the popup
}, },
window = { window = {
border = 'rounded', -- none, single, double, shadow border = "rounded", -- none, single, double, shadow
position = 'bottom', -- bottom, top position = "bottom", -- bottom, top
margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left]
winblend = 0, winblend = 0,
}, },
layout = { layout = {
height = { min = 4, max = 25 }, -- min and max height of the columns height = { min = 4, max = 25 }, -- min and max height of the columns
width = { min = 20, max = 50 }, -- min and max width of the columns width = { min = 20, max = 50 }, -- min and max width of the columns
spacing = 3, -- spacing between columns spacing = 3, -- spacing between columns
align = 'left', -- align columns left, center or right align = "left", -- align columns left, center or right
}, },
ignore_missing = true, -- enable this to hide mappings for which you didn't specify a label ignore_missing = true, -- enable this to hide mappings for which you didn"t specify a label
hidden = { '<silent>', '<cmd>', '<Cmd>', '<CR>', 'call', 'lua', '^:', '^ ' }, -- hide mapping boilerplate hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate
show_help = true, -- show help message on the command line when the popup is visible show_help = true, -- show help message on the command line when the popup is visible
triggers = 'auto', -- automatically setup triggers triggers = "auto", -- automatically setup triggers
-- triggers = {'<leader>'} -- or specify a list manually -- triggers = {"<leader>"} -- or specify a list manually
triggers_blacklist = { triggers_blacklist = {
-- list of mode / prefixes that should never be hooked by WhichKey -- list of mode / prefixes that should never be hooked by WhichKey
-- this is mostly relevant for key maps that start with a native binding -- this is mostly relevant for key maps that start with a native binding
-- most people should not need to change this -- most people should not need to change this
i = { 'j', 'k' }, i = { "j", "k" },
v = { 'j', 'k' }, v = { "j", "k" },
}, },
} }
local opts = { local opts = {
mode = 'n', -- NORMAL mode mode = "n", -- NORMAL mode
prefix = '<leader>', prefix = "<leader>",
buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
silent = true, -- use `silent` when creating keymaps silent = true, -- use `silent` when creating keymaps
noremap = true, -- use `noremap` when creating keymaps noremap = true, -- use `noremap` when creating keymaps
nowait = true, -- use `nowait` when creating keymaps nowait = true, -- use `nowait` when creating keymaps
} }
local mappings = { local mappings = {
['a'] = { '<cmd>Alpha<cr>', 'Alpha' }, ["a"] = { "<cmd>Alpha<CR>", "Alpha" },
['b'] = { ["b"] = {
'<cmd>lua require("telescope.builtin").buffers(require"telescope.themes").get_dropdown{previewer = false})<cr>', "<cmd>lua require('telescope.builtin).buffers(require'telescope.themes').get_dropdown{previewer = false})<CR>",
'Buffers', "Buffers",
}, },
['e'] = { '<cmd>NvimTreeToggle<cr>', 'Explorer' }, ["e"] = { "<cmd>NvimTreeToggle<CR>", "Explorer" },
['w'] = { '<cmd>w!<CR>', 'Save' }, ["w"] = { "<cmd>w!<CR>", "Save" },
['q'] = { '<cmd>q!<CR>', 'Quit' }, ["q"] = { "<cmd>q!<CR>", "Quit" },
['c'] = { '<cmd>Bdelete!<CR>', 'Close Buffer' }, ["c"] = { "<cmd>Bdelete!<CR>", "Close Buffer" },
['h'] = { '<cmd>nohlsearch<CR>', 'No Highlight' }, ["h"] = { "<cmd>nohlsearch<CR>", "No Highlight" },
['f'] = { ["f"] = {
'<cmd>lua require("telescope.builtin").find_files(require("telescope.themes").get_dropdown{previewer = false})<cr>', "<cmd>lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false}) hidden=true<CR>",
'Find files', "Find files",
}, },
['F'] = { '<cmd>Telescope live_grep theme=ivy<cr>', 'Find Text' }, ["F"] = { "<cmd>Telescope live_grep theme=ivy<CR>", "Find Text" },
['P'] = { '<cmd>lua require("telescope").extensions.projects.projects()<cr>', 'Projects' }, ["P"] = { "<cmd>lua require('telescope').extensions.projects.projects()<CR>", "Projects" },
p = { p = {
name = 'Packer', name = "Packer",
c = { '<cmd>PackerCompile<cr>', 'Compile' }, c = { "<cmd>PackerCompile<CR>", "Compile" },
i = { '<cmd>PackerInstall<cr>', 'Install' }, i = { "<cmd>PackerInstall<CR>", "Install" },
s = { '<cmd>PackerSync<cr>', 'Sync' }, s = { "<cmd>PackerSync<CR>", "Sync" },
S = { '<cmd>PackerStatus<cr>', 'Status' }, S = { "<cmd>PackerStatus<CR>", "Status" },
u = { '<cmd>PackerUpdate<cr>', 'Update' }, u = { "<cmd>PackerUpdate<CR>", "Update" },
}, },
g = { g = {
name = 'Git', name = "Git",
g = { '<cmd>lua _LAZYGIT_TOGGLE()<CR>', 'Lazygit' }, g = { "<cmd>lua _LAZYGIT_TOGGLE()<CR>", "Lazygit" },
j = { '<cmd>lua require "gitsigns".next_hunk()<cr>', 'Next Hunk' }, j = { "<cmd>lua require 'gitsigns'.next_hunk()<CR>", "Next Hunk" },
k = { '<cmd>lua require "gitsigns".prev_hunk()<cr>', 'Prev Hunk' }, k = { "<cmd>lua require 'gitsigns'.prev_hunk()<CR>", "Prev Hunk" },
l = { '<cmd>lua require "gitsigns".blame_line()<cr>', 'Blame' }, l = { "<cmd>lua require 'gitsigns'.blame_line()<CR>", "Blame" },
p = { '<cmd>lua require "gitsigns".preview_hunk()<cr>', 'Preview Hunk' }, p = { "<cmd>lua require 'gitsigns'.preview_hunk()<CR>", "Preview Hunk" },
r = { '<cmd>lua require "gitsigns".reset_hunk()<cr>', 'Reset Hunk' }, r = { "<cmd>lua require 'gitsigns'.reset_hunk()<CR>", "Reset Hunk" },
R = { '<cmd>lua require "gitsigns".reset_buffer()<cr>', 'Reset Buffer' }, R = { "<cmd>lua require 'gitsigns'.reset_buffer()<CR>", "Reset Buffer" },
s = { '<cmd>lua require "gitsigns".stage_hunk()<cr>', 'Stage Hunk' }, s = { "<cmd>lua require 'gitsigns'.stage_hunk()<CR>", "Stage Hunk" },
u = { u = {
'<cmd>lua require "gitsigns".undo_stage_hunk()<cr>', "<cmd>lua require 'gitsigns'.undo_stage_hunk()<CR>",
'Undo Stage Hunk', "Undo Stage Hunk",
}, },
o = { '<cmd>Telescope git_status<cr>', 'Open changed file' }, o = { "<cmd>Telescope git_status<CR>", "Open changed file" },
b = { '<cmd>Telescope git_branches<cr>', 'Checkout branch' }, b = { "<cmd>Telescope git_branches<CR>", "Checkout branch" },
c = { '<cmd>Telescope git_commits<cr>', 'Checkout commit' }, c = { "<cmd>Telescope git_commits<CR>", "Checkout commit" },
d = { d = {
'<cmd>Gitsigns diffthis HEAD<cr>', "<cmd>Gitsigns diffthis HEAD<CR>",
'Diff', "Diff",
}, },
}, },
l = { l = {
name = 'LSP', name = "LSP",
a = { '<cmd>lua vim.lsp.buf.code_action()<cr>', 'Code Action' }, a = { "<cmd>lua vim.lsp.buf.code_action()<CR>", "Code Action" },
d = { d = {
'<cmd>Telescope lsp_document_diagnostics<cr>', "<cmd>Telescope lsp_document_diagnostics<CR>",
'Document Diagnostics', "Document Diagnostics",
}, },
w = { w = {
'<cmd>Telescope lsp_workspace_diagnostics<cr>', "<cmd>Telescope lsp_workspace_diagnostics<CR>",
'Workspace Diagnostics', "Workspace Diagnostics",
}, },
f = { '<cmd>lua vim.lsp.buf.format{async=true}<cr>', 'Format' }, f = { "<cmd>lua vim.lsp.buf.format{async=true}<CR>", "Format" },
i = { '<cmd>LspInfo<cr>', 'Info' }, i = { "<cmd>LspInfo<CR>", "Info" },
I = { '<cmd>LspInstallInfo<cr>', 'Installer Info' }, I = { "<cmd>LspInstallInfo<CR>", "Installer Info" },
j = { j = {
'<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>",
'Next Diagnostic', "Next Diagnostic",
}, },
k = { k = {
'<cmd>lua vim.lsp.diagnostic.goto_prev()<cr>', "<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>",
'Prev Diagnostic', "Prev Diagnostic",
}, },
l = { '<cmd>lua vim.lsp.codelens.run()<cr>', 'CodeLens Action' }, l = { "<cmd>lua vim.lsp.codelens.run()<CR>", "CodeLens Action" },
q = { '<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>', 'Quickfix' }, q = { "<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>", "Quickfix" },
r = { '<cmd>lua vim.lsp.buf.rename()<cr>', 'Rename' }, r = { "<cmd>lua vim.lsp.buf.rename()<CR>", "Rename" },
s = { '<cmd>Telescope lsp_document_symbols<cr>', 'Document Symbols' }, s = { "<cmd>Telescope lsp_document_symbols<CR>", "Document Symbols" },
S = { S = {
'<cmd>Telescope lsp_dynamic_workspace_symbols<cr>', "<cmd>Telescope lsp_dynamic_workspace_symbols<CR>",
'Workspace Symbols', "Workspace Symbols",
}, },
}, },
s = { s = {
name = 'Search', name = "Search",
b = { '<cmd>Telescope git_branches<cr>', 'Checkout branch' }, s = { "<cmd>s%//<Left>", "Replace word" },
c = { '<cmd>Telescope colorscheme<cr>', 'Colorscheme' }, b = { "<cmd>Telescope git_branches<CR>", "Checkout branch" },
h = { '<cmd>Telescope help_tags<cr>', 'Find Help' }, c = { "<cmd>Telescope colorscheme<CR>", "Colorscheme" },
M = { '<cmd>Telescope man_pages<cr>', 'Man Pages' }, h = { "<cmd>Telescope help_tags<CR>", "Find Help" },
r = { '<cmd>Telescope oldfiles<cr>', 'Open Recent File' }, M = { "<cmd>Telescope man_pages<CR>", "Man Pages" },
R = { '<cmd>Telescope registers<cr>', 'Registers' }, r = { "<cmd>Telescope oldfiles<CR>", "Open Recent File" },
k = { '<cmd>Telescope keymaps<cr>', 'Keymaps' }, R = { "<cmd>Telescope registers<CR>", "Registers" },
C = { '<cmd>Telescope commands<cr>', 'Commands' }, k = { "<cmd>Telescope keymaps<CR>", "Keymaps" },
}, C = { "<cmd>Telescope commands<CR>", "Commands" },
},
t = { t = {
name = 'Terminal', name = "Terminal",
n = { '<cmd>lua _NODE_TOGGLE()<cr>', 'Node' }, n = { "<cmd>lua _NODE_TOGGLE()<CR>", "Node" },
u = { '<cmd>lua _NCDU_TOGGLE()<cr>', 'NCDU' }, u = { "<cmd>lua _NCDU_TOGGLE()<CR>", "NCDU" },
t = { '<cmd>lua _HTOP_TOGGLE()<cr>', 'Htop' }, t = { "<cmd>lua _BTOP_TOGGLE()<CR>", "Btop" },
p = { '<cmd>lua _PYTHON_TOGGLE()<cr>', 'Python' }, p = { "<cmd>lua _PYTHON_TOGGLE()<CR>", "Python" },
f = { '<cmd>ToggleTerm direction=float<cr>', 'Float' }, f = { "<cmd>ToggleTerm direction=float<CR>", "Float" },
h = { '<cmd>ToggleTerm size=10 direction=horizontal<cr>', 'Horizontal' }, h = { "<cmd>ToggleTerm size=10 direction=horizontal<CR>", "Horizontal" },
v = { '<cmd>ToggleTerm size=80 direction=vertical<cr>', 'Vertical' }, v = { "<cmd>ToggleTerm size=80 direction=vertical<CR>", "Vertical" },
}, },
S = {
name = "Settings",
c = { "<cmd>setlocal formatoptions-=cro<CR>", "Disable autocomment" },
C = { "<cmd>setlocal formatoptions=cro<CR>", "Enable autocomment" },
s = { "<cmd>setlocal spell! spelllang=en_us<CR>", "Toggle spellchecker" },
I = { "<cmd>setlocal autoindent<CR>", "Enable autoindent" },
i = { "<cmd>setlocal noautoindent<CR>", "Disable autoindent" },
},
} }
which_key.setup(setup) which_key.setup(setup)

File diff suppressed because it is too large Load Diff

View File

@ -52,15 +52,15 @@ export KEYTIMEOUT=1
# Change cursor shape for different vi modes. # Change cursor shape for different vi modes.
function zle-keymap-select { function zle-keymap-select {
case $KEYMAP in case $KEYMAP in
vicmd) echo -ne '\e[1 q' ;; # block vicmd) echo -ne '\e[1 q' ;; # block
viins | main) echo -ne '\e[5 q' ;; # beam viins | main) echo -ne '\e[5 q' ;; # beam
esac esac
} }
zle -N zle-keymap-select zle -N zle-keymap-select
zle-line-init() { zle-line-init() {
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere) zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne '\e[5 q' echo -ne '\e[5 q'
} }
zle -N zle-line-init zle -N zle-line-init
echo -ne '\e[5 q' # Use beam shape cursor on startup. echo -ne '\e[5 q' # Use beam shape cursor on startup.
@ -68,22 +68,22 @@ preexec() { echo -ne '\e[5 q'; } # Use beam shape cursor for each new prompt.
# Run exa on directory change # Run exa on directory change
function cd() { function cd() {
new_directory="$*" new_directory="$*"
if [ $# -eq 0 ]; then if [ $# -eq 0 ]; then
new_directory=${HOME} new_directory=${HOME}
fi fi
builtin cd "${new_directory}" && exa -a --icons --group-directories-first builtin cd "${new_directory}" && exa -a --icons --group-directories-first
} }
# Use lf to switch directories and bind it to ctrl-o # Use lf to switch directories and bind it to ctrl-o
function lfcd() { function lfcd() {
tmp="$(mktemp)" tmp="$(mktemp)"
lfrun -last-dir-path="$tmp" "$@" lfrun -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then if [ -f "$tmp" ]; then
dir="$(bat "$tmp")" dir="$(bat "$tmp")"
rm -f "$tmp" >/dev/null rm -f "$tmp" >/dev/null
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
fi fi
} }
# Navigate words with CTRL+ARROW keys # Navigate words with CTRL+ARROW keys

2
.gitignore vendored
View File

@ -1 +1 @@
.luarc.json