347 lines
6.6 KiB
Lua
347 lines
6.6 KiB
Lua
local M = {}
|
|
|
|
M.has_words_before = function()
|
|
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
|
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil
|
|
end
|
|
|
|
--[=[ function M.on_attach(client, bufnr)
|
|
--[[ vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') ]]
|
|
if client.name == 'jdt.ls' then
|
|
client.server_capabilities.documentFormattingProvider = false
|
|
vim.lsp.codelens.refresh()
|
|
if JAVA_DAP_ACTIVE then
|
|
require('jdtls').setup_dap { hotcodereplace = 'auto' }
|
|
require('jdtls.dap').setup_dap_main_class_configs()
|
|
end
|
|
end
|
|
local ft = vim.api.nvim_buf_get_option(bufnr, 'filetype')
|
|
local has_formatter = require('null-ls.sources').get_available(ft, 'NULL_LS_FORMATTING') > 0
|
|
|
|
local enable = false
|
|
if has_formatter and not client.name == 'clangd' then
|
|
enable = client.name == 'null-ls'
|
|
else
|
|
enable = not (client.name == 'null-ls')
|
|
end
|
|
|
|
-- util.info(client.name .. " " .. (enable and "yes" or "no"), "format")
|
|
client.server_capabilities.documentFormattingProvider = enable
|
|
-- client.server_capabilities.semanticTokensProvider = false
|
|
client.server_capabilities.semanticTokensProvider = nil
|
|
end ]=]
|
|
|
|
M.lsp_config = {
|
|
-- virtual_text = {
|
|
-- prefix = '●',
|
|
-- },
|
|
virtual_text = false,
|
|
signs = false,
|
|
underline = true,
|
|
update_in_insert = false,
|
|
severity_sort = false,
|
|
float = {
|
|
focusable = false,
|
|
-- style = 'minimal',
|
|
border = 'rounded',
|
|
source = 'always',
|
|
header = '',
|
|
prefix = '',
|
|
},
|
|
}
|
|
|
|
M.lspservername = function()
|
|
local msg = ''
|
|
local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype')
|
|
local clients = vim.lsp.get_active_clients()
|
|
if next(clients) == nil then return msg end
|
|
for _, client in ipairs(clients) do
|
|
local filetypes = client.config.filetypes
|
|
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
|
|
return client.name
|
|
end
|
|
end
|
|
return msg
|
|
end
|
|
|
|
M.feline_theme = {
|
|
fg = '#c9d1d9',
|
|
bg = '#101010',
|
|
green = '#66cc66',
|
|
yellow = '#ffdd11',
|
|
purple = '#c678dd',
|
|
orange = '#cc8c3c',
|
|
peanut = '#f6d5a4',
|
|
red = '#e06c75',
|
|
aqua = '#61afef',
|
|
bg2 = '#484848',
|
|
dark_red = '#f75f5f',
|
|
normal = '#A9A9A9'
|
|
}
|
|
|
|
M.feline_vi_mode_colors = {
|
|
NORMAL = 'normal',
|
|
OP = 'green',
|
|
INSERT = 'yellow',
|
|
VISUAL = 'orange',
|
|
LINES = 'orange',
|
|
BLOCK = 'dark_red',
|
|
REPLACE = 'red',
|
|
COMMAND = 'aqua',
|
|
}
|
|
|
|
|
|
local left_component_separator = {
|
|
str = ' ',
|
|
hl = {
|
|
fg = '#4a4a4a',
|
|
},
|
|
}
|
|
local right_component_separator = {
|
|
str = ' ',
|
|
hl = {
|
|
fg = '#4a4a4a',
|
|
},
|
|
}
|
|
local left_section_separator = {
|
|
str = '█',
|
|
hl = {
|
|
fg = 'normal',
|
|
},
|
|
}
|
|
local right_section_separator = {
|
|
str = '',
|
|
hl = {
|
|
fg = '#4a4a4a',
|
|
},
|
|
|
|
}
|
|
local function selectionCount()
|
|
local isVisualMode = vim.fn.mode():find("[Vv]")
|
|
if not isVisualMode then return "" end
|
|
local starts = vim.fn.line("v")
|
|
local ends = vim.fn.line(".")
|
|
local lines = starts <= ends and ends - starts + 1 or starts - ends + 1
|
|
return "" .. tostring(lines) .. "L " .. tostring(vim.fn.wordcount().visual_chars) .. "C"
|
|
end
|
|
|
|
local function startupTime()
|
|
return tostring(require'lazy'.stats().startuptime)
|
|
end
|
|
|
|
M.feline_c = {
|
|
right_separator = {
|
|
provider = '',
|
|
left_sep = ' ',
|
|
hl = {
|
|
fg = '#484848'
|
|
}
|
|
},
|
|
left_separator = {
|
|
provider = '',
|
|
left_sep = ' ',
|
|
hl = {
|
|
fg = '#484848'
|
|
}
|
|
},
|
|
vim_mode = {
|
|
provider = {
|
|
name = 'vi_mode',
|
|
opts = {
|
|
show_mode_name = true,
|
|
-- padding = "center", -- Uncomment for extra padding.
|
|
},
|
|
},
|
|
hl = function()
|
|
return {
|
|
bg = require('feline.providers.vi_mode').get_mode_color(),
|
|
fg = 'bg',
|
|
style = 'bold',
|
|
name = 'NeovimModeHLColor',
|
|
}
|
|
end,
|
|
left_sep = 'block',
|
|
right_sep = {
|
|
str = '█',
|
|
hl = function()
|
|
return {
|
|
fg = require('feline.providers.vi_mode').get_mode_color(),
|
|
style = 'bold',
|
|
name = 'NeovimModeHLColor',
|
|
}
|
|
end,
|
|
},
|
|
},
|
|
diagnostic_errors = {
|
|
provider = 'diagnostic_errors',
|
|
hl = {
|
|
fg = 'red',
|
|
},
|
|
},
|
|
diagnostic_warnings = {
|
|
provider = 'diagnostic_warnings',
|
|
hl = {
|
|
fg = 'yellow',
|
|
},
|
|
},
|
|
diagnostic_hints = {
|
|
provider = 'diagnostic_hints',
|
|
hl = {
|
|
fg = 'aqua',
|
|
},
|
|
},
|
|
diagnostic_info = {
|
|
provider = 'diagnostic_info',
|
|
},
|
|
file_info = {
|
|
provider = {
|
|
name = 'file_info',
|
|
opts = {
|
|
colored_icon = true,
|
|
type = 'relative-short',
|
|
},
|
|
},
|
|
hl = {
|
|
fg = 'bg2',
|
|
},
|
|
left_sep = ' ',
|
|
},
|
|
lsp_client_names = {
|
|
provider = 'lsp_client_names',
|
|
hl = {
|
|
fg = 'bg2',
|
|
},
|
|
left_sep = 'right',
|
|
},
|
|
file_type = {
|
|
provider = {
|
|
name = 'file_type',
|
|
opts = {
|
|
filetype_icon = false,
|
|
colored_icon = false,
|
|
case = 'lowercase',
|
|
},
|
|
},
|
|
hl = {
|
|
fg = 'bg2',
|
|
},
|
|
left_sep = left_component_separator,
|
|
right_sep = ' ',
|
|
},
|
|
file_encoding = {
|
|
provider = 'file_encoding',
|
|
hl = {
|
|
fg = 'bg2',
|
|
},
|
|
left_sep = left_component_separator,
|
|
right_sep = ' ',
|
|
},
|
|
position = {
|
|
provider = 'position',
|
|
hl = function()
|
|
return {
|
|
bg = require('feline.providers.vi_mode').get_mode_color(),
|
|
fg = 'bg',
|
|
style = 'bold',
|
|
name = 'NeovimModeHLColor',
|
|
}
|
|
end,
|
|
right_sep = 'block',
|
|
left_sep = {
|
|
str = '█',
|
|
hl = function()
|
|
return {
|
|
fg = require('feline.providers.vi_mode').get_mode_color(),
|
|
style = 'bold',
|
|
name = 'NeovimModeHLColor',
|
|
}
|
|
end,
|
|
},
|
|
},
|
|
startup = {
|
|
provider = startupTime,
|
|
left_sep = ' ',
|
|
right_sep = ' ',
|
|
},
|
|
select_count = {
|
|
provider = selectionCount,
|
|
hl = function()
|
|
return {
|
|
fg = require('feline.providers.vi_mode').get_mode_color(),
|
|
style = 'bold',
|
|
name = 'NeovimModeHLColor',
|
|
}
|
|
end,
|
|
left_sep = ' ',
|
|
right_sep = ' ',
|
|
},
|
|
line_percentage = {
|
|
provider = 'line_percentage',
|
|
hl = {
|
|
fg = 'normal',
|
|
},
|
|
left_sep = ' ',
|
|
right_sep = ' ',
|
|
},
|
|
scroll_bar = {
|
|
provider = 'scroll_bar',
|
|
hl = {
|
|
fg = 'yellow',
|
|
style = 'bold',
|
|
},
|
|
},
|
|
search_count = {
|
|
provider = 'search_count',
|
|
left_sep = left_component_separator,
|
|
right_sep = ' ',
|
|
},
|
|
macro = {
|
|
provider = 'macro',
|
|
hl = {
|
|
style = 'bold',
|
|
bg = 'bg2',
|
|
},
|
|
left_sep = 'block',
|
|
right_sep = 'block',
|
|
},
|
|
gitBranch = {
|
|
provider = 'git_branch',
|
|
hl = {
|
|
fg = 'peanut',
|
|
bg = 'bg2',
|
|
style = 'bold',
|
|
},
|
|
left_sep = ' ',
|
|
right_sep = right_section_separator,
|
|
},
|
|
gitDiffAdded = {
|
|
provider = 'git_diff_added',
|
|
hl = {
|
|
fg = 'green',
|
|
bg = 'bg2',
|
|
},
|
|
left_sep = 'block',
|
|
right_sep = 'block',
|
|
},
|
|
gitDiffRemoved = {
|
|
provider = 'git_diff_removed',
|
|
hl = {
|
|
fg = 'red',
|
|
bg = 'bg2',
|
|
},
|
|
left_sep = 'block',
|
|
right_sep = 'block',
|
|
},
|
|
gitDiffChanged = {
|
|
provider = 'git_diff_changed',
|
|
hl = {
|
|
fg = 'fg',
|
|
bg = 'bg2',
|
|
},
|
|
left_sep = 'block',
|
|
right_sep = 'right_filled',
|
|
},
|
|
}
|
|
|
|
return M
|