---@diagnostic disable: undefined-global local line = require("setup-line") local bit = require('bit') local function switch_color() if vim.g.colo_init == 2 then vim.opt.background = "dark" vim.g.colo_init = 1 else vim.opt.background = "light" vim.g.colo_init = 2 end vim.cmd.colorscheme("edge") if vim.g.terminal_color_0 then vim.fn["force_16term#change_color"]() end if vim.o.background == "light" then vim.api.nvim_set_hl(0, "Normal", { bg = "#f8feff" }) end local yellow = vim.api.nvim_get_hl(0, { name = "Yellow" }).fg local yellow_rgb = { bit.rshift(bit.band(yellow, 0xff0000), 16), bit.rshift(bit.band(yellow, 0x00ff00), 8), bit.band(yellow, 0x0000ff) } local brighter_yellow; if vim.o.background == "light" then brighter_yellow = string.format("#%02x%02x%02x", yellow_rgb[1] * 0.75 + 64, yellow_rgb[2] * 0.75 + 64, yellow_rgb[3] * 0.75 + 64) else brighter_yellow = string.format("#%02x%02x%02x", yellow_rgb[1], yellow_rgb[2], yellow_rgb[3]) end vim.api.nvim_set_hl(0, "ShotFGraph", { fg = brighter_yellow, bold = true, underline = true }) vim.api.nvim_set_hl(0, "ShotFBlank", { fg = brighter_yellow, underline = true }) vim.g.terminal_color_15 = "#cccccc" line.setup_tint() end local hooks = require "ibl.hooks" -- create the highlight groups in the highlight setup hook, so they are reset -- every time the colorscheme changes hooks.register(hooks.type.HIGHLIGHT_SETUP, function() for i, color_name in ipairs({ 'Red', 'Yellow', 'Green', "Cyan", 'Blue', 'Purple' }) do local current_color = vim.api.nvim_get_hl(0, { name = color_name }).fg local red = bit.rshift(bit.band(current_color, 0xff0000), 16) local green = bit.rshift(bit.band(current_color, 0x00ff00), 8) local blue = bit.band(current_color, 0x0000ff) local color, dimmed if vim.o.background == "dark" then local ratio = 0.9 local shift = 32 color = string.format("#%02x%02x%02x", red * ratio + shift, green * ratio + shift, blue * ratio + shift) dimmed = string.format("#%02x%02x%02x", red / 4 + 64, green / 4 + 64, blue / 4 + 64) else local ratio = 3 / 4 color = string.format("#%02x%02x%02x", red * ratio, green * ratio, blue * ratio) dimmed = string.format("#%02x%02x%02x", red / 4 + 192, green / 4 + 192, blue / 4 + 192) end vim.api.nvim_set_hl(0, 'Rainbow' .. i, { fg = color }) vim.api.nvim_set_hl(0, 'RainbowDim' .. i, { fg = dimmed }) end end) if not vim.g.colo_init then vim.g.edge_enable_italic = 0 vim.g.edge_disable_italic_comment = 1 switch_color() end vim.keymap.set("", "U", "", { noremap = false, silent = false }) vim.keymap.set("", "", "", { noremap = false, silent = false }) vim.keymap.set("i", "", "+", { noremap = false, silent = false }) vim.keymap.set("c", "", "+", { noremap = false, silent = false }) vim.keymap.set("t", "", '"+pi', { noremap = false, silent = false }) vim.keymap.set("", "b", "Telescope buffers", { noremap = false, silent = false }) vim.keymap.set("", "f", "Telescope find_files hidden=true", { noremap = false, silent = false }) vim.keymap.set("", "G", "Telescope live_grep", { noremap = false, silent = false }) vim.keymap.set("", "h", "Telescope help_tags", { noremap = false, silent = false }) vim.keymap.set("", "gf", "Telescope git_file hidden=trues", { noremap = false, silent = false }) vim.keymap.set("", "gb", "Telescope git_branches", { noremap = false, silent = false }) vim.keymap.set("", "gc", "Telescope git_commits", { noremap = false, silent = false }) vim.keymap.set("", "gs", "Telescope git_status", { noremap = false, silent = false }) vim.keymap.set("", "ss", "Telescope coc document_symbols", { noremap = false, silent = false }) vim.keymap.set("", "sS", "Telescope coc workspace_symbols", { noremap = false, silent = false }) vim.keymap.set("", "sd", "Telescope coc document_diagnostics", { noremap = false, silent = false }) vim.keymap.set("", "sD", "Telescope coc workspace_diagnostics", { noremap = false, silent = false }) vim.keymap.set("", "c", "Telescope coc commands", { noremap = false, silent = false }) vim.keymap.set("", "w", "HopWord", { noremap = false, silent = false }) vim.keymap.set("", "l", "HopLineStart", { noremap = false, silent = false }) vim.keymap.set("n", "W", "(snipewin)", { noremap = false, silent = false }) vim.keymap.set("n", "", "(dial-increment)", { noremap = true, silent = false }) vim.keymap.set("n", "", "(dial-decrement)", { noremap = true, silent = false }) vim.keymap.set("v", "", "(dial-increment)", { noremap = true, silent = false }) vim.keymap.set("v", "", "(dial-decrement)", { noremap = true, silent = false }) vim.keymap.set("v", "g", "g(dial-increment)", { noremap = true, silent = false }) vim.keymap.set("v", "g", "g(dial-decrement)", { noremap = true, silent = false }) vim.keymap.set("n", "gx", "(openbrowser-smart-search)", { noremap = true, silent = false }) vim.keymap.set("", "W", "b", { noremap = false, silent = false }) vim.keymap.set("", "", function() local current_file = vim.fn.expand("%:p:h") if current_file:sub(1, 6) == "term://" then current_file = current_file:sub(7) end local root = vim.fn["rootfinder#find"](current_file) if #root < 1 then root = "." end vim.cmd("Fern " .. vim.fn.fnameescape(root) .. " -drawer -width=40") end, { noremap = false, silent = false }) vim.keymap.set( "", "", 'exe v:count1 . "ToggleTerm size=20 git_dir=. direction=horizontal"', { noremap = false, silent = false } ) vim.keymap.set("", "", "TroubleToggle", { noremap = false, silent = false }) vim.keymap.set("", "", switch_color, { noremap = false, silent = false }) vim.keymap.set("", "", "bn", { noremap = false, silent = false }) vim.keymap.set("", "", "bnbd#", { noremap = false, silent = false }) vim.keymap.set("", "", "bp", { noremap = false, silent = false }) vim.keymap.set("n", "", "bp", { noremap = false, silent = true }) vim.keymap.set("n", "", "bn", { noremap = false, silent = true }) vim.keymap.set("n", "", "(coc-codeaction)", { noremap = true, silent = true }) vim.keymap.set("", "", function() vim.fn.CocAction("format") vim.cmd("Findent") end, { noremap = false, silent = true }) vim.keymap.set("n", "", function() vim.fn.CocActionAsync("jumpDefinition") end, { noremap = true, silent = true }) vim.keymap.set("i", "", function() vim.fn.CocActionAsync("jumpDefinition") end, { noremap = true, silent = true }) vim.keymap.set("n", "", function() vim.fn.CocActionAsync("rename") end, { noremap = true, silent = true }) vim.keymap.set("i", "", function() vim.fn.CocActionAsync("rename") end, { noremap = true, silent = true }) vim.keymap.set("n", "", function() vim.fn.CocActionAsync("doHover") end, { noremap = true, silent = true }) -- nnoremap K :call ShowDocumentation() -- -- function! ShowDocumentation() -- if (index(['vim','help'], &filetype) >= 0) -- execute 'h '.expand('') -- elseif CocAction('hasProvider', 'hover') -- if coc#float#has_float() -- call coc#float#jump() -- nnoremap q close -- else -- call CocActionAsync('doHover') -- endif -- else -- call feedkeys('K', 'in') -- endif -- endfunction vim.keymap.set("n", "K", function() if vim.bo.filetype == "vim" or vim.bo.filetype == "help" then vim.cmd("h " .. vim.fn.expand("")) elseif vim.fn.CocAction("hasProvider", "hover") then vim.fn.CocActionAsync("doHover") else vim.fn.feedkeys("K", "in") end end, { noremap = true, silent = true }) vim.keymap.set("n", "", function() if vim.fn["coc#float#has_float"]() == 1 then vim.fn["coc#float#jump"]() end end, { noremap = true, silent = true }) vim.keymap.set("i", "", function() vim.fn.CocActionAsync("doHover") end, { noremap = true, silent = true }) vim.keymap.set("", "", "call CocAction('diagnosticNext')", { noremap = false, silent = true }) vim.keymap.set("i", "", "call CocAction('diagnosticNext')", { noremap = false, silent = true }) vim.keymap.set("n", "", "call CocAction('diagnosticPrevious')", { noremap = false, silent = true }) vim.keymap.set("i", "", "call CocAction('diagnosticPrevious')", { noremap = false, silent = true }) vim.keymap.set("i", "", "coc#refresh()", { noremap = true, silent = true, expr = true })