diff options
| author | srdusr <trevorgray@srdusr.com> | 2022-12-16 23:42:26 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2022-12-16 23:42:26 +0200 |
| commit | 6371e90cc598e52b1d057d4b6d9a7b75d60e2fd0 (patch) | |
| tree | f55d4d589f1a1e619ad67243a0421e08917b4f3c /config/nvim | |
| parent | 8f4eae2782704484b498129a0a7d9044a4d73fbb (diff) | |
| download | dotfiles-6371e90cc598e52b1d057d4b6d9a7b75d60e2fd0.tar.gz dotfiles-6371e90cc598e52b1d057d4b6d9a7b75d60e2fd0.zip | |
Removed config/nvim
Diffstat (limited to 'config/nvim')
36 files changed, 0 insertions, 5376 deletions
diff --git a/config/nvim/.gitignore b/config/nvim/.gitignore deleted file mode 100644 index 308d183..0000000 --- a/config/nvim/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -plugin/packer_compiled.lua -startup.log diff --git a/config/nvim/README.md b/config/nvim/README.md deleted file mode 100644 index 630b8e5..0000000 --- a/config/nvim/README.md +++ /dev/null @@ -1 +0,0 @@ -## Neovim diff --git a/config/nvim/autoload/scripts.vim b/config/nvim/autoload/scripts.vim deleted file mode 100644 index 5c695d3..0000000 --- a/config/nvim/autoload/scripts.vim +++ /dev/null @@ -1,15 +0,0 @@ -if !exists('*scripts#save_and_exec') - function! scripts#save_and_exec() abort - if &filetype == 'vim' - :silent! write - :source % - elseif &filetype == 'lua' - :silent! write - :luafile % - endif - - return - endfunction -endif - - diff --git a/config/nvim/init.lua b/config/nvim/init.lua deleted file mode 100644 index f74ec11..0000000 --- a/config/nvim/init.lua +++ /dev/null @@ -1,138 +0,0 @@ ---[[ - ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ - ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ - ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ - ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ - ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ - ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ - " ------------------------------------------------ - Author: srdusr - Email: graytrevor98@gmail.com - Url: https://github.com/srdusr/nvim.git - ------------------------------------------------ " ---]] - ---[[init.]] - --- ========================================================================== -- --- == DEPENDENCIES == -- --- ========================================================================== -- - --- ripgrep - https://github.com/BurntSushi/ripgrep --- fd - https://github.com/sharkdp/fd --- git - https://git-scm.com/ --- make - https://www.gnu.org/software/make/ --- c compiler - gcc or tcc or zig - --- -------------------------------------------------------------------------- -- - --- Initialize config with this one liner in the terminal ---nvim --headless -c 'call mkdir(stdpath("config"), "p") | exe "edit" stdpath("config") . "/init.lua" | write | quit' - --- See startup time ---nvim --startuptime startup.log -c exit && tail -100 startup.log - --- Load impatient -local impatient_ok, impatient = pcall(require, "impatient") -if impatient_ok then - impatient.enable_profile() -end - --- Check if we have the latest stable version of nvim -local utils = require("user.utils") -local expected_ver = "0.8.0" -local nvim_ver = utils.get_nvim_version() - -if nvim_ver ~= expected_ver then - local msg = string.format("Unsupported nvim version: expect %s, but got %s instead!", expected_ver, nvim_ver) -vim.api.nvim_err_writeln(msg) - return -end - --- Schedule reading shadafile to improve the startup time -vim.opt.shadafile = "NONE" -vim.schedule(function() - vim.opt.shadafile = "" - vim.cmd("silent! rsh") -end) - - --- Load/reload modules -local modules = { - "user.pack", -- Packer plugin manager - "user.opts", -- Options - "user.keys", -- Keymaps - "user.utils", -- Utilities - --"user.mods", -- Modules/functions - --"user.deps", -- Plugins - --"user.scripts", - "plugins.treesitter", - "plugins.telescope", - "plugins.nvim-tree", - "plugins.cmp", - "plugins.luasnip", - "plugins.colorizer", - "plugins.prettier", - "plugins.git", - "plugins.gitsigns", - "plugins.neoscroll", - "plugins.lsp", - "plugins.autopairs", - "plugins.null-ls", - "plugins.web-devicons", - "plugins.zen-mode", - "plugins.colorscheme", - "plugins.heirline", - --"plugins.dap", - --"plugins.toggleterm", - --"plugins.floatterm", -} - --- Refresh module cache -for k, v in pairs(modules) do - package.loaded[v] = nil - require(v) -end - --- Snippets -vim.g.snippets = "luasnip" - --- Improve speed by disabling some default plugins/modules -local builtins = { - "gzip", - "zip", - "zipPlugin", - "tar", - "tarPlugin", - "getscript", - "getscriptPlugin", - "vimball", - "vimballPlugin", - "2html_plugin", - --"matchit", - --"matchparen", - "logiPat", - "rrhelper", - "netrw", - "netrwPlugin", - "netrwSettings", - "netrwFileHandlers", - "tutor_mode_plugin", - "fzf", - "spellfile_plugin", - "sleuth", -} - -for _, plugin in ipairs(builtins) do - vim.g["loaded_" .. plugin] = 1 -end -vim.g.do_filetype_nvim = 1 -vim.g.did_load_filetypes = 0 - ---vim.cmd[[ ---if maparg('<C-L>', 'n') ==# '' --- nnoremap <silent> <C-L> :set lz!<CR>:nohlsearch<C-R>=has('diff')?'<Bar>diffupdate':''<CR><CR><C-L>:set lz!<CR> ---endif]] ---vim.cmd[[autocmd VimEnter * set nolazyredraw lazyredraw]] ---vim.cmd[[autocmd VimEnter * redraw!]] - diff --git a/config/nvim/lua/plugins/autopairs.lua b/config/nvim/lua/plugins/autopairs.lua deleted file mode 100644 index fc39d2e..0000000 --- a/config/nvim/lua/plugins/autopairs.lua +++ /dev/null @@ -1,43 +0,0 @@ --- Setup nvim-cmp. -local status_ok, npairs = pcall(require, "nvim-autopairs") -if not status_ok then - return -end - -npairs.setup { - check_ts = true, - ts_config = { - lua = { "string", "source" }, - javascript = { "string", "template_string" }, - java = false, - }, - map = "<M-e>", - pairs_map = { -['<'] = '>', -}, - disable_filetype = { "TelescopePrompt", "spectre_panel" }, - disable_in_macro = true, - disable_in_visualblock = true, - enalbe_moveright = true, - enable_afterquote = true, -- add bracket pairs after quote - enable_check_bracket_line = true, --- check bracket in same line - enable_bracket_in_quote = true, -- - break_undo = true, -- switch for basic rule break undo sequence - fast_wrap = { - chars = { "{", "[", "(", '"', "'" }, - pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), - offset = 0, -- Offset from pattern match - end_key = "$", - keys = "qwertyuiopzxcvbnmasdfghjkl", - check_comma = true, - highlight = "PmenuSel", - highlight_grey = "LineNr", - }, -} - -local cmp_autopairs = require "nvim-autopairs.completion.cmp" -local cmp_status_ok, cmp = pcall(require, "cmp") -if not cmp_status_ok then - return -end -cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } }) diff --git a/config/nvim/lua/plugins/cmp-gh-source.lua b/config/nvim/lua/plugins/cmp-gh-source.lua deleted file mode 100644 index 05bba55..0000000 --- a/config/nvim/lua/plugins/cmp-gh-source.lua +++ /dev/null @@ -1,72 +0,0 @@ -local ok, Job = pcall(require, "plenary.job") -if not ok then - return -end - -local source = {} - -source.new = function() - local self = setmetatable({ cache = {} }, { __index = source }) - - return self -end - -source.complete = function(self, _, callback) - local bufnr = vim.api.nvim_get_current_buf() - - -- This just makes sure that we only hit the GH API once per session. - -- - -- You could remove this if you wanted, but this just makes it so we're - -- good programming citizens. - if not self.cache[bufnr] then - Job - :new({ - -- Uses `gh` executable to request the issues from the remote repository. - "gh", - "issue", - "list", - "--limit", - "1000", - "--json", - "title,number,body", - - on_exit = function(job) - local result = job:result() - local ok, parsed = pcall(vim.json.decode, table.concat(result, "")) - if not ok then - vim.notify "Failed to parse gh result" - return - end - - local items = {} - for _, gh_item in ipairs(parsed) do - gh_item.body = string.gsub(gh_item.body or "", "\r", "") - - table.insert(items, { - label = string.format("#%s", gh_item.number), - documentation = { - kind = "markdown", - value = string.format("# %s\n\n%s", gh_item.title, gh_item.body), - }, - }) - end - - callback { items = items, isIncomplete = false } - self.cache[bufnr] = items - end, - }) - :start() - else - callback { items = self.cache[bufnr], isIncomplete = false } - end -end - -source.get_trigger_characters = function() - return { "#" } -end - -source.is_available = function() - return vim.bo.filetype == "gitcommit" -end - -require("cmp").register_source("gh_issues", source.new()) diff --git a/config/nvim/lua/plugins/cmp.lua b/config/nvim/lua/plugins/cmp.lua deleted file mode 100644 index 829a448..0000000 --- a/config/nvim/lua/plugins/cmp.lua +++ /dev/null @@ -1,332 +0,0 @@ - --- Setup nvim-cmp. -vim.opt.completeopt = "menu,menuone,noselect" ---vim.g.completeopt = "menu,menuone,noselect,noinsert" -local cmp_status_ok, cmp = pcall(require, "cmp") -if not cmp_status_ok then - return -end ---local WIDE_HEIGHT = 40 - -local opts = { - -- whether to highlight the currently hovered symbol - -- disable if your cpu usage is higher than you want it - -- or you just hate the highlight - -- default: true - highlight_hovered_item = true, - show_guides = true, -} -require("symbols-outline").setup(opts) - - ---local snippets_paths = function() --- local plugins = { "friendly-snippets" } --- local paths = {} --- local path --- local root_path = vim.env.HOME .. "/.vim/plugged/" --- for _, plug in ipairs(plugins) do --- path = root_path .. plug --- if vim.fn.isdirectory(path) ~= 0 then --- table.insert(paths, path) --- end --- end --- return paths ---end --- ---require("luasnip.loaders.from_vscode").lazy_load({ --- paths = snippets_paths(), --- include = nil, -- Load all languages --- exclude = {}, ---}) - ---require("luasnip.loaders.from_vscode").lazy_load() -local lspkind = require("lspkind") -local kind_icons = { - Text = "", - Method = "m", --"", - Function = "", - Constructor = "", --"⚙️", - Field = "", - Variable = "", - Class = "ﴯ", - Interface = "", - Module = "", - Property = "", - Unit = "", - Value = "", - Enum = "", - Keyword = "", - Snippet = "", - Color = "", - File = "", - Reference = "", - Folder = "", - EnumMember = "", - Constant = "", - Struct = "", - Event = "", - Operator = "", - TypeParameter = "", -} -cmp.setup({ - snippet = { - --expand = function(args) - -- require("luasnip").lsp_expand(args.body) - --end, - expand = function(args) - local luasnip = require("luasnip") - if not luasnip then - return - end - luasnip.lsp_expand(args.body) - end, - }, - mapping = cmp.mapping.preset.insert({ --- ["<CR>"] = cmp.mapping.confirm({ --- behavior = cmp.ConfirmBehavior.Replace, --- select = true, --- }), - --["<C-k>"] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 'c' }), - --["<C-j>"] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 'c' }), - ['<C-y>'] = cmp.mapping.confirm({ select = true }), - --["<C-e>"] = cmp.mapping.close(), - --['<C-e>'] = cmp.mapping({ - -- i = cmp.mapping.abort(), - -- c = cmp.mapping.close(), - --}), - ["<C-e>"] = cmp.mapping({ - i = function() - if cmp.visible() then - cmp.abort() - require("user.utils").toggle_completion() - require("notify")("completion off") - else - cmp.complete() - require("user.utils").toggle_completion() - require("notify")("completion on") - end - end, - }), - --["<CR>"] = cmp.mapping({ - -- i = function(fallback) - -- if cmp.visible() then - -- cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false }) - -- require("user.utils").toggle_completion() - -- else - -- fallback() - -- end - -- end, - --}), - --- ["<C-e>"] = cmp.mapping({ --- i = function() --- if cmp.visible() then --- require("notify")("visible") --- cmp.abort() --- else --- require("notify")("not visible") --- cmp.complete() --- end --- end, --- c = function() --- if cmp.visible() then --- require("notify")("visible") --- cmp.close() --- else --- require("notify")("not visible") --- cmp.complete() --- end --- end, --- }), - --['<CR>'] = cmp.config.disable, - ["<C-u>"] = cmp.mapping.scroll_docs(-4), - ["<C-d>"] = cmp.mapping.scroll_docs(4), - ["<C-Space>"] = cmp.mapping.complete(), - --['<C-o>'] = function(fallback) - -- if cmp.visible() then - -- cmp.mapping.confirm({ select = true })(fallback) - -- else - -- cmp.mapping.complete()(fallback) - -- end - --end - }), - - sources = cmp.config.sources({ - --{ name = "nvim_lua" }, - { name = "luasnip" }, - --{ name = 'luasnip', option = { use_show_condition = false } }, - { name = "gh_issues" }, - { name = "nvim_lsp", max_item_count = 6 }, - { name = "nvim_lua" }, - --{ name = "luasnip" }, - --{ name = "luasnip", keyword_length = 4 }, - --{ name = "buffer", keyword_length = 3 }, - { name = "path" }, - { name = "buffer", max_item_count = 6 }, - --{ name = "buffer", option = { get_bufnrs = function() - -- return vim.api.nvim_list_bufs() - --end - --}}, - { name = "cmp_git"}, - { name = "spell"}, - { name = "zsh" }, - { name = "treesitter" }, - { name = "calc" }, - { name = "nvim_lsp_signature_help" }, - --{ name = "cmdline" }, - --{ name = 'treesitter' }, - --{ name = "cmdline", keyword_pattern = [=[[^[:blank:]\!]*]=] }, --exclamation mark hangs a bit without this - --{name = 'luasnip', keyword_length = 2}, - }), - formatting = { - --formatting = { - --local icons = kind_icons - --format = function(entry, vim_item) - ----vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) - ----vim_item.kind = lspkind.presets.default[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", icons[vim_item.kind], vim_item.kind) - --vim_item.menu = ({ - ----nvim_lsp = "LSP", - ----luasnip = "snip", - ----buffer = "buf", - ----path = "path", - ----cmdline = "cmd", - --buffer = "[buf]", - --nvim_lsp = "[LSP]", - --nvim_lua = "[api]", - --path = "[path]", - --luasnip = "[snip]", - --cmdline = "[cmd]", - --gh_issues = "[issues]", - --})[entry.source.name] - --return vim_item - --end, - format = lspkind.cmp_format { - with_text = true, - menu = { - nvim_lsp = "[LSP]", - luasnip = "[snip]", - buffer = "[buf]", - nvim_lua = "[api]", - path = "[path]", - gh_issues = "[issues]", - spell = "[spell]", - zsh = "[zsh]", - treesitter = "[treesitter]", - calc = "[calc]", - nvim_lsp_signature_help = "[signature]", - cmdline = "[cmd]" - - }, - }, - --}, - - -- - -- - --fields = { "abbr", "kind", "menu" }, - -- format = lspkind.cmp_format({ - -- mode = 'symbol_text', -- show only symbol annotations - -- maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) - -- }) - --format = require('lspkind').cmp_format { - -- with_text = true, - -- menu = { - -- luasnip = "Snip", - -- buffer = "Buf", - -- nvim_lsp = "LSP", - -- path = "Path", - -- cmdline = "Cmd", - -- cmp_git = "Git", - -- }, - --}, - }, - --format = function(entry, vim_item) - -- -- Kind icons - -- --vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) - -- vim_item.kind = lspkind.presets.default[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.menu = ({ - -- nvim_lsp = "LSP", - -- luasnip = "Snip", - -- buffer = "Buf", - -- path = "Path", - -- cmdline = "Cmd", - -- })[entry.source.name] - -- return vim_item - --end, - confirm_opts = { - behavior = cmp.ConfirmBehavior.Replace, - select = false, - }, - - - event = {}, - - experimental = { - ghost_text = true, -- this feature conflicts with copilot.vim's preview. - hl_group = 'Nontext', - --native_menu = false, - }, - - view = { - entries = { name = 'custom', selection_order = 'top_down' }, - }, - - window = { - --completion = cmp.config.window.bordered(), - completion = { - border = { '', '', '', ' ', '', '', '', ' ' }, - --border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, - --border = { '', '', '', '', '', '', '', '' }, - --border = "CmpBorder", - winhighlight = 'Normal:Pmenu,FloatBorder:Pmenu,CursorLine:PmenuSel,Search:None', - --winhighlight = "Normal:CmpPmenu,CursorLine:PmenuSel,Search:None", - }, - --documentation = cmp.config.window.bordered(), - documentation = { - --max_height = math.floor(WIDE_HEIGHT * (WIDE_HEIGHT / vim.o.lines)), - --max_width = math.floor((WIDE_HEIGHT * 2) * (vim.o.columns / (WIDE_HEIGHT * 2 * 16 / 9))), - border = { '', '', '', ' ', '', '', '', ' ' }, - --border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, - winhighlight = 'FloatBorder:NormalFloat', - }, - }, -}) - - -cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = "buffer" }, - }, -}) - -cmp.setup.cmdline(":", { - mapping = { - ["<C-p>"] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 'c' }), - ["<C-n>"] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 'c' }), - ["<C-y>"] = cmp.mapping(cmp.mapping.confirm({ select = true }), { 'i', 'c' }), - ["<C-e>"] = cmp.mapping(cmp.mapping.close(), { 'i', 'c' }), - ["<C-u>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), - ["<C-d>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), - ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), - --["<C-k>"] = cmp.mapping.select_prev_item(), - --["<C-j>"] = cmp.mapping.select_next_item(), - --['<C-y>'] = cmp.mapping.confirm({ select = true }), - --["<C-e>"] = cmp.mapping.close(), - ----['<CR>'] = cmp.config.disable, - --["<C-u>"] = cmp.mapping.scroll_docs(-4), - --["<C-d>"] = cmp.mapping.scroll_docs(4), - --["<C-Space>"] = cmp.mapping.complete(), - }, - - sources = cmp.config.sources({ - { name = "path" }, - }, { - --{ name = "cmdline" }, - { name = "cmdline", keyword_pattern = [=[[^[:blank:]\!]*]=], keyword_length = 3 }, - }) -}) - - diff --git a/config/nvim/lua/plugins/colorizer.lua b/config/nvim/lua/plugins/colorizer.lua deleted file mode 100644 index 14d25e2..0000000 --- a/config/nvim/lua/plugins/colorizer.lua +++ /dev/null @@ -1,6 +0,0 @@ -local status, colorizer = pcall(require, "colorizer") -if (not status) then return end - -colorizer.setup({ - '*'; -}) diff --git a/config/nvim/lua/plugins/colorscheme.lua b/config/nvim/lua/plugins/colorscheme.lua deleted file mode 100644 index 1f76a40..0000000 --- a/config/nvim/lua/plugins/colorscheme.lua +++ /dev/null @@ -1,39 +0,0 @@ --- Colorscheme --- ayu gruvbox molokai onedark srcery everblush vscode edge nightfly doom-one -local colorscheme = "onedark" -local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) -if not status_ok then - vim.notify("colorscheme " .. colorscheme .. " not found!") - return -end - -vim.api.nvim_command("syntax on") -vim.api.nvim_command("highlight Normal guibg=none") -vim.api.nvim_command("highlight SignColumn guibg=none") -vim.api.nvim_command("highlight TabLine guibg=#333842 gui=bold") ---vim.api.nvim_command("highlight TabLine guibg=none gui=bold") ---vim.api.nvim_command("highlight TabLineSel guibg=none guifg=none gui=bold") ---vim.api.nvim_command("highlight StatusLine guibg=#333842 gui=bold") ---vim.api.nvim_command("highlight StatusLine guibg=#333842 guifg=#d6d3ea gui=bold") ---vim.api.nvim_command("highlight StatusLine guibg=none gui=bold") ---vim.api.nvim_command("highlight TabLineNC guibg=none gui=bold") ---vim.api.nvim_command("highlight TabLineSel guibg=#bd93f9 gui=bold") -vim.api.nvim_command("highlight Title guibg=none gui=bold") ---vim.api.nvim_command("highlight WinSeparator guibg=none gui=bold") -vim.api.nvim_command("highlight TabLineSel guibg=#333842 gui=bold") -vim.api.nvim_command("highlight TabLineFill guibg=none gui=bold") -vim.api.nvim_command("highlight WinBar guibg=none gui=bold") -vim.api.nvim_command("highlight NormalFloat guibg=none") ---vim.api.nvim_command("highlight MsgSeparator guibg=none") ---vim.api.nvim_command("highlight PmenuSel guibg=none") ---vim.api.nvim_command("highlight winblend guibg=none") ---vim.api.nvim_command("highlight StatusLine guibg=none gui=bold") ---vim.api.nvim_command("highlight StatusLineNC guibg=none gui=bold") ---vim.api.nvim_command("highlight StatusLineNC guibg=none ctermfg=Cyan guifg=#80a0ff gui=bold") -vim.cmd[[ -au WinEnter * setl winhl=WinSeparator:WinSeparatorA -au WinLeave * setl winhl=WinSeparator:WinSeparator -]] -require("notify").setup({ - background_colour = "#000000", -}) diff --git a/config/nvim/lua/plugins/git.lua b/config/nvim/lua/plugins/git.lua deleted file mode 100644 index 963f7f9..0000000 --- a/config/nvim/lua/plugins/git.lua +++ /dev/null @@ -1,11 +0,0 @@ -local status, git = pcall(require, "git") -if (not status) then return end - -git.setup({ - keymaps = { - -- Open blame window - blame = "<Leader>gb", - -- Open file/folder in git repository - browse = "<Leader>go", - } -}) diff --git a/config/nvim/lua/plugins/gitsigns.lua b/config/nvim/lua/plugins/gitsigns.lua deleted file mode 100644 index 53d1a1e..0000000 --- a/config/nvim/lua/plugins/gitsigns.lua +++ /dev/null @@ -1 +0,0 @@ -require('gitsigns').setup {} diff --git a/config/nvim/lua/plugins/heirline.lua b/config/nvim/lua/plugins/heirline.lua deleted file mode 100644 index c05844b..0000000 --- a/config/nvim/lua/plugins/heirline.lua +++ /dev/null @@ -1,1206 +0,0 @@ -local conditions = require("heirline.conditions") -local utils = require("heirline.utils") - -local colors = { - --bg = "#23232e", - bg = nil, - nobg = nil, - white = "#f8f8f2", - black = "#000000", - darkgray = "#23232e", - gray = "#2d2b3a", - lightgray = "#d6d3ea", - pink = "#f92672", - green = "#50fa7b", - blue = "#39BAE6", - yellow = "#f1fa8c", - orange = "#ffb86c", - purple = "#BF40BF", - violet = "#7F00FF", - red = "#ff5555", - cyan = "#66d9eC", - diag = { - warn = utils.get_highlight("DiagnosticSignWarn").fg, - error = utils.get_highlight("DiagnosticSignError").fg, - hint = utils.get_highlight("DiagnosticSignHint").fg, - info = utils.get_highlight("DiagnosticSignInfo").fg, - }, - git = { - del = "#e95678", - add = "#a6e22e", - change = "#ae81ff", - }, -} - -require("heirline").load_colors(colors) - -local Align = { provider = "%=", hl = { bg = colors.bg } } -local Space = { provider = " ", hl = { bg = colors.bg } } -local Tab = { provider = " " } -local LeftSpace = { provider = "" } -local RightSpace = { provider = "" } -local RightSpace2 = { provider = "" } -local RightSpace3 = { provider = "" } -local Fill = { provider = "%=", hl = { bg = colors.nobg } } -local LeftSep = { provider = "" } -local RightSep = { provider = "" } - -local ViMode = { - init = function(self) - self.mode = vim.fn.mode(1) - if not self.once then - vim.cmd("au ModeChanged *:*o redrawstatus") - end - self.once = true - end, - static = { - mode_names = { - n = "NORMAL ", - no = "N·OPERATOR PENDING ", - nov = "N?", - noV = "N?", - ["no\22"] = "N? ", - niI = "Ni", - niR = "Nr", - niV = "Nv", - nt = "Nt", - v = "VISUAL ", - vs = "Vs", - V = "V·LINE ", - ["\22"] = "V·BLOCK ", - ["\22s"] = "V·BLOCK ", - s = "SELECT ", - S = "S·LINE ", - ["\19"] = "S·BLOCK ", - i = "INSERT ", - ix = "insert x ", - ic = "insert c ", - R = "REPLACE ", - Rc = "Rc", - Rx = "Rx", - Rv = "V·REPLACE ", - Rvc = "Rv", - Rvx = "Rv", - c = "COMMAND ", - cv = "VIM EX ", - ce = "EX ", - r = "PROMPT ", - rm = "MORE ", - ["r?"] = "CONFIRM ", - ["!"] = "SHELL ", - t = "TERMINAL ", - }, - }, - provider = function(self) - return " %2(" .. self.mode_names[self.mode] .. "%) " - end, - hl = function(self) - local color = self:mode_color() - return { fg = color, bold = true } - end, - update = { - "ModeChanged", - }, -} - --- LSP -local LSPActive = { - condition = conditions.lsp_attached, - update = { "LspAttach", "LspDetach" }, - - provider = function() - local buf_clients = vim.lsp.buf_get_clients() - local buf_client_names = {} - - -- add client - for _, client in pairs(buf_clients) do - if client.name ~= "null-ls" then - table.insert(buf_client_names, client.name) - end - end - return "⚙️ " .. table.concat(buf_client_names, "") - end, - hl = { fg = colors.lightgray, bold = false }, -} - --- Navic -local Navic = { - condition = require("nvim-navic").is_available, - static = { - -- create a type highlight map - type_hl = { - File = "Directory", - Module = "Include", - Namespace = "TSNamespace", - Package = "Include", - Class = "Struct", - Method = "Method", - Property = "TSProperty", - Field = "TSField", - Constructor = "TSConstructor ", - Enum = "TSField", - Interface = "Type", - Function = "Function", - Variable = "TSVariable", - Constant = "Constant", - String = "String", - Number = "Number", - Boolean = "Boolean", - Array = "TSField", - Object = "Type", - Key = "TSKeyword", - Null = "Comment", - EnumMember = "TSField", - Struct = "Struct", - Event = "Keyword", - Operator = "Operator", - TypeParameter = "Type", - }, - }, - init = function(self) - local data = require("nvim-navic").get_data() or {} - local children = {} - -- create a child for each level - for i, d in ipairs(data) do - local child = { - { - provider = d.icon, - hl = self.type_hl[d.type], - }, - { - provider = d.name, - -- highlight icon only or location name as well - -- hl = self.type_hl[d.type], - }, - } - -- add a separator only if needed - if #data > 1 and i < #data then - table.insert(child, { - provider = " > ", - hl = { fg = colors.white }, - }) - end - table.insert(children, child) - end - -- instantiate the new child, overwriting the previous one - self[1] = self:new(children, 1) - end, - hl = { fg = colors.white }, -} - --- Diagnostics -local Diagnostics = { - - condition = conditions.has_diagnostics, - - static = { - error_icon = vim.fn.sign_getdefined("DiagnosticSignError")[1].text, - warn_icon = vim.fn.sign_getdefined("DiagnosticSignWarn")[1].text, - info_icon = vim.fn.sign_getdefined("DiagnosticSignInfo")[1].text, - hint_icon = vim.fn.sign_getdefined("DiagnosticSignHint")[1].text, - }, - - init = function(self) - self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR }) - self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN }) - self.hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT }) - self.info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO }) - end, - - update = { "DiagnosticChanged", "BufEnter" }, - - { - provider = function(self) - -- 0 is just another output, we can decide to print it or not! - return self.errors > 0 and (self.error_icon .. self.errors .. " ") - end, - hl = { fg = colors.diag.error, bg = colors.bg }, - }, - { - provider = function(self) - return self.warnings > 0 and (self.warn_icon .. self.warnings .. " ") - end, - hl = { fg = colors.diag.warn, bg = colors.bg }, - }, - { - provider = function(self) - return self.info > 0 and (self.info_icon .. self.info .. " ") - end, - hl = { fg = colors.diag.info, bg = colors.bg }, - }, - { - provider = function(self) - return self.hints > 0 and (self.hint_icon .. self.hints) - end, - hl = { fg = colors.diag.hint, bg = colors.bg }, - }, - on_click = { - callback = function() - require("trouble").toggle({ mode = "document_diagnostics" }) - -- or - -- vim.diagnostic.setqflist() - end, - name = "heirline_diagnostics", - }, -} - --- Git --- For the ones who're not (too) afraid of changes! Uses gitsigns. -local Git = { - condition = conditions.is_git_repo, - - init = function(self) - self.status_dict = vim.b.gitsigns_status_dict - self.has_changes = self.status_dict.added ~= 0 or self.status_dict.removed ~= 0 or self.status_dict.changed ~= 0 - end, - --hl = { fg = "orange" }, - hl = { fg = colors.orange, bg = colors.bg }, - { -- git branch name - provider = function(self) - return " " .. self.status_dict.head - end, - --hl = { bold = true }, - hl = { bold = true, bg = colors.bg }, - }, - -- You could handle delimiters, icons and counts similar to Diagnostics - { - condition = function(self) - return self.has_changes - end, - --provider = "(" - provider = " ", - }, - { - provider = function(self) - local count = self.status_dict.added or 0 - --return count > 0 and ("+" .. count) - return count > 0 and (" " .. count) - end, - --hl = { fg = "git_add" }, - hl = { fg = colors.git.add, bg = colors.bg }, - }, - { - provider = function(self) - local count = self.status_dict.removed or 0 - --return count > 0 and ("-" .. count) - return count > 0 and (" " .. count) - end, - --hl = { fg = "git_del" }, - hl = { fg = colors.git.del, bg = colors.bg }, - }, - { - provider = function(self) - local count = self.status_dict.changed or 0 - --return count > 0 and ("~" .. count) - return count > 0 and (" 柳" .. count) - end, - --hl = { fg = "git_change" }, - hl = { fg = colors.git.change, bg = colors.bg }, - }, - --{ - -- condition = function(self) - -- return self.has_changes - -- end, - -- provider = ")", - --}, - on_click = { - callback = function() - -- If you want to use Fugitive: - -- vim.cmd("G") - - -- If you prefer Lazygit - -- use vim.defer_fn() if the callback requires - -- opening of a floating window - -- (this also applies to telescope) - vim.defer_fn(function() - vim.cmd("Lazygit") - end, 100) - end, - name = "heirline_git", - }, -} - --- Debugger --- Display informations from nvim-dap! -local DAPMessages = { - -- display the dap messages only on the debugged file - condition = function() - local session = require("dap").session() - if session then - local filename = vim.api.nvim_buf_get_name(0) - if session.config then - local progname = session.config.program - return filename == progname - end - end - return false - end, - provider = function() - return " " .. require("dap").status() - end, - hl = { fg = utils.get_highlight("Debug").fg }, - -- Debugger on_click: step-over, step-into, next, previous, stop buttons - -- coming soon! -} - --- Tests --- This requires the great ultest. ---local UltTest = { --- condition = function() --- return vim .api.nvim_call_function("ultest#is_test_file", {}) ~= 0 --- end, --- static = { --- passed_icon = vim.fn.sign_getdefined("test_pass")[1].text, --- failed_icon = vim.fn.sign_getdefined("test_fail")[1].text, --- passed_hl = { fg = utils.get_highlight("UltestPass").fg }, --- failed_hl = { fg = utils.get_highlight("UltestFail").fg }, --- }, --- init = function(self) --- self.status = vim.api.nvim_call_function("ultest#status", {}) --- end, --- --- -- again, if you'd like icons and numbers to be colored differently, --- -- just split the component in two --- { --- provider = function(self) --- return self.passed_icon .. self.status.passed .. " " --- end, --- hl = function(self) --- return self.passed_hl --- end, --- }, --- { --- provider = function(self) --- return self.failed_icon .. self.status.failed .. " " --- end, --- hl = function(self) --- return self.failed_hl --- end, --- }, --- { --- provider = function(self) --- return "of " .. self.status.tests - 1 --- end, --- }, ---} - --- FileNameBlock: FileIcon, FileName and friends -local FileNameBlock = { - -- let's first set up some attributes needed by this component and it's children - init = function(self) - self.filename = vim.api.nvim_buf_get_name(0) - end, - --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, - hl = { bg = colors.bg }, -} - --- FileIcon, FileName, FileFlags and FileNameModifier -local FileIcon = { - init = function(self) - local filename = self.filename - local extension = vim.fn.fnamemodify(filename, ":e") - self.icon, self.icon_color = - require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) - end, - provider = function(self) - return self.icon and (self.icon .. " ") - end, - hl = function(self) - return { fg = self.icon_color, bg = colors.bg } - end, -} - -local FileName = { - provider = function(self) - -- first, trim the pattern relative to the current directory. For other - -- options, see :h filename-modifers - local filename = vim.fn.fnamemodify(self.filename, ":.") - if filename == "" then - return "No Name" - end - -- now, if the filename would occupy more than 1/4th of the available - -- space, we trim the file path to its initials - -- See Flexible Components section below for dynamic truncation - if not conditions.width_percent_below(#filename, 0.25) then - filename = vim.fn.pathshorten(filename) - end - return filename - end, - --hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg }, - hl = { fg = colors.white, bold = false, bg = colors.bg }, -} - -local FileFlags = { - { - provider = function() - if vim.bo.modified then - return " [+]" -- ±[+] - end - end, - hl = { fg = colors.green, bg = colors.bg }, - }, - { - provider = function() - if not vim.bo.modifiable or vim.bo.readonly then - return " " - end - end, - --hl = { fg = colors.orange }, - hl = { fg = colors.orange, bold = true, bg = colors.bg }, - }, -} - -local FileNameModifier = { - hl = function() - if vim.bo.modified then - return { fg = colors.green, bold = false, force = true } - end - end, -} - --- FileType, FileEncoding and FileFormat -local FileType = { - provider = function() - return vim.bo.filetype - end, - hl = { fg = colors.white, bold = false, bg = colors.bg }, -} - -local FileEncoding = { - Space, - provider = function() - local enc = (vim.bo.fenc ~= "" and vim.bo.fenc) or vim.o.enc -- :h 'enc' - return enc:lower() - end, - --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, - hl = { bg = colors.bg, bold = false }, -} - -local FileFormat = { - provider = function() - local fmt = vim.bo.fileformat - --return fmt ~= "unix" and fmt:upper() - return fmt ~= "unix" and fmt:lower() - end, - hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, -} - --- FileSize and FileLastModified -local FileSize = { - provider = function() - -- stackoverflow, compute human readable file size - local suffix = { "b", "k", "M", "G", "T", "P", "E" } - local fsize = vim.fn.getfsize(vim.api.nvim_buf_get_name(0)) - fsize = (fsize < 0 and 0) or fsize - if fsize < 1024 then - return fsize .. suffix[1] - end - local i = math.floor((math.log(fsize) / math.log(1024))) - return string.format("%.2g%s", fsize / math.pow(1024, i), suffix[i + 1]) - end, - hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, -} - -local FileLastModified = { - -- did you know? Vim is full of functions! - provider = function() - local ftime = vim.fn.getftime(vim.api.nvim_buf_get_name(0)) - return (ftime > 0) and os.date("%c", ftime) - end, - hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg }, -} - --- Spell --- Add indicator when spell is set! -local Spell = { - condition = function() - return vim.wo.spell - end, - provider = " 暈", - hl = { bold = true, fg = colors.yellow }, -} - -local help_file_name = { - condition = function() - return vim.bo.filetype == "help" - end, - provider = function() - local filename = vim.api.nvim_buf_get_name(0) - return vim.fn.fnamemodify(filename, ":t") - end, - hl = { fg = colors.blue }, -} - --- Cursor position: Ruler ---local Ruler = { - -- %l = current line number - -- %L = number of lines in the buffer - -- %c = column number - -- %P = percentage through file of displayed window - --provider = "%P %(%l/%L%):%c ", - --provider = "%3(%2l%):%c %P ", - --provider = "%7(%l/%3L%):%2c%P ", - --provider = "%3(%P%)", - --provider = "%7(%l/%3L%):%2c %P", - --provider = "%7 %p%% Ln %l, Col %c", - --provider = "%9( %P %2l/%L :%2c %)", - --provider = "%9(%2l%2( : %c%)/%L %P %)", - --provider = "%7(%l:%c/%L%) ", - --provider = "%6(%l:%1.5c/%L%) %P ", - --provider = "%6(%l:%1.5c/%L%) ", - --provider = "%3(%l:%1.5c/%L%) ", - --provider = "%7(%l/%3L%):%2c ", --- provider = "%7(%l:%c%) ", - --provider = "%l:%c ", - --hl = { fg = utils.get_highlight("Statusline").fg, bold = true }, --- hl = { fg = colors.darkgray, bold = true }, ---} -local leftruler = { Space, Align } -local rightruler = { Align, Space } -local cursor_location = { - --{ provider = "", hl = { fg = utils.get_highlight("StatusLine").bg, bold = true } }, --- { provider = "%<%-05.10(%l:%c%)", hl = { fg = colors.darkgray, bold = true } }, --- { provider = " ", hl = { fg = colors.darkgray, bold = true } }, - --{ provider = "%P %=%<%(%l,%c)" }, - --{ provider = " %w%-8.(%l,%c%)%>" }, - { provider = " %1(%4l:%-3(%c%) %)%*", hl = { fg = colors.black, bold = true } }, -} -local Ruler = { cursor_location } - - --utils.make_flexible_component( - -- 3, - -- { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - -- { provider = "%<" } - --), ---local cursor_location = { --- { provider = "%7(%l:%c%) ", hl = { bold = true } }, --- { --- provider = " ", --- hl = function(self) --- local color = self:mode_color() --- return { fg = color, bold = true } --- end, --- }, ---} - -local WordCount = { - condition = function() - return conditions.buffer_matches({ - filetype = { - "markdown", - "txt", - "vimwiki", - }, - }) - end, - Space, - { - provider = function() - return "W:" .. vim.fn.wordcount().words - end, - }, -} - --- Working Directory -local WorkDir = { - init = function(self) - self.icon = (vim.fn.haslocaldir(0) == 1 and "l" or "g") .. " " .. " " - local cwd = vim.fn.getcwd(0) - self.cwd = vim.fn.fnamemodify(cwd, ":~") - end, - hl = { fg = "colors.blue", bold = true }, - flexible = 1, - { - -- evaluates to the full-lenth path - provider = function(self) - local trail = self.cwd:sub(-1) == "/" and "" or "/" - return self.icon .. self.cwd .. trail .." " - end, - }, - { - -- evaluates to the shortened path - provider = function(self) - local cwd = vim.fn.pathshorten(self.cwd) - local trail = self.cwd:sub(-1) == "/" and "" or "/" - return self.icon .. cwd .. trail .. " " - end, - }, - { - -- evaluates to "", hiding the component - provider = "", - } -} - --- Snippets Indicator --- This requires ultisnips ---local Snippets = { --- -- check that we are in insert or select mode --- condition = function() --- return vim.tbl_contains({'s', 'i'}, vim.fn.mode()) --- end, --- provider = function() --- local forward = (vim.fn["UltiSnips#CanJumpForwards"]() == 1) and "" or "" --- local backward = (vim.fn["UltiSnips#CanJumpBackwards"]() == 1) and " " or "" --- return backward .. forward --- end, --- hl = { fg = "red", bold = true }, ---} - --- let's add the children to our FileNameBlock component -FileNameBlock = utils.insert( - FileNameBlock, - FileIcon, - utils.insert(FileNameModifier, FileName), -- a new table where FileName is a child of FileNameModifier - unpack(FileFlags), -- A small optimisation, since their parent does nothing - { provider = "%<" } -- this means that the statusline is cut here when there's not enough space -) - -local FileInfoBlock = { - -- let's first set up some attributes needed by this component and it's children - init = function(self) - self.filename = vim.api.nvim_buf_get_name(0) - end, -} - -FileInfoBlock = utils.insert( - FileInfoBlock, - Space, - FileIcon, - FileType, - { provider = "%<" } -- this means that the statusline is cut here when there's not enough space -) - ---ViMode = utils.surround({ "", "" }, function(self) --- return self:mode_color() ---end, { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) ---local mysurroundedcomponent = { ---{provider='', hl = {...}}, ---{<your component>}, ---{provider = '>>>', hl = {...}} ---} -LeftSpace = utils.surround({ "", " " }, function(self) - return self:mode_color() -end, { LeftSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }) - -RightSpace = utils.surround( - { "", "" }, - colors.gray, - { RightSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } } -) - -RightSpace2 = utils.surround( - { "█", "" }, - colors.darkgray, - { RightSpace2, hl = { fg = colors.darkgray, force = true } } -) - -RightSpace3 = utils.surround( - { "█", "" }, - utils.get_highlight("statusline").bg, - { RightSpace3, hl = { fg = colors.darkgray, force = true } } -) - -LSPActive = utils.surround({ "", "" }, function(self) - return self:mode_color() -end, { Space, LSPActive, hl = { bg = colors.darkgray, force = true } }) - -FileInfoBlock = utils.surround({ "", "" }, function(self) - return self:mode_color() -end, { FileInfoBlock, Space, hl = { bg = colors.gray, force = true } }) - -Ruler = utils.surround({ "", "" }, colors.gray, { Ruler, hl = { fg = colors.gray, force = true } }) - -local left = { - { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - --{ LeftSep, hl = function(self) - -- return { fg = self.mode_colors[self.mode], bg = utils.get_highlight("statusline").bg, bold = true, } - -- end, - --}, - { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { FileNameBlock, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Git, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, -} -local middle = { - { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Navic, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { DAPMessages, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, -} -local right = { - { Diagnostics, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { - RightSpace3, - hl = { bg = colors.darkgray, force = true }, - }, - { LSPActive, hl = { bg = colors.darkgray, force = true } }, - { RightSpace2, hl = { bg = colors.gray, force = true } }, - { FileInfoBlock, hl = { bg = colors.gray, force = true } }, - { RightSpace, hl = { fg = colors.gray, force = true } }, - --{ cursor_location, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - --utils.make_flexible_component( - -- 3, - -- { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - -- { provider = "%<" } - --), -} ---local Align = { provider = "%=", hl = { bg = colors.bg } } - -local sections = { left, middle, right } -local DefaultStatusline = { sections } ---LSPActive, Space, LSPMessages, Space, UltTest, Space, FileType, Space, Ruler, Space, ScrollBar - -local InactiveStatusline = { - condition = conditions.is_not_active, - { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { FileName, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, -} - -local SpecialStatusline = { - condition = function() - return conditions.buffer_matches({ - buftype = { "nofile", "prompt", "help", "quickfix" }, - filetype = { "^git.*", "fugitive" }, - }) - end, - - --FileType, - --Space, - --Align, - { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { RightSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, -} - -local TerminalStatusline = { - - condition = function() - return conditions.buffer_matches({ buftype = { "terminal" } }) - end, - - --hl = { bg = colors.red }, - - -- Quickly add a condition to the ViMode to only show it when buffer is active! - --{ condition = conditions.is_active, ViMode, Space }, - { ViMode, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - { LeftSpace, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { FileType, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Space, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { Align, hl = { bg = utils.get_highlight("statusline").bg, force = true } }, - { RightSpace, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } }, - --FileType, - --Space, - --TerminalName, - --Align, -} - -local StatusLine = { - - --hl = function() - -- if conditions.is_active() then - -- return "StatusLine" - -- else - -- return "StatusLineNC" - -- end - --end, - static = { - mode_colors = { - n = colors.blue, - i = colors.green, - v = colors.purple, - V = colors.purple, - ["\22"] = colors.purple, - c = colors.orange, - s = colors.purple, - S = colors.purple, - ["\19"] = colors.purple, - R = colors.red, - r = colors.red, - ["!"] = colors.orange, - t = colors.orange, - }, - mode_color = function(self) - local mode = conditions.is_active() and vim.fn.mode() or "n" - return self.mode_colors[mode] - end, - hl = function(self) - local color = self:mode_color() -- here! - return { bg = color } - end, - }, - fallthrough = false, - - SpecialStatusline, - TerminalStatusline, - InactiveStatusline, - DefaultStatusline, -} - - --- ---- WinBar --- -local WinbarFileNameBlock = { - -- let's first set up some attributes needed by this component and it's children - init = function(self) - self.filename = vim.api.nvim_buf_get_name(0) - end, - hl = { bg = colors.bg }, -} - ---local WinbarFileName = { --- provider = function(self) --- -- self.filename will be defined later, just keep looking at the example! --- local filename = self.filename --- filename = filename == "" and "No Name" or vim.fn.fnamemodify(filename, ":t") --- return filename --- end, --- hl = function() --- return { fg = colors.gray, italic = true } --- end, ---} -local WinbarFileName = { - provider = function(self) - -- first, trim the pattern relative to the current directory. For other - -- options, see :h filename-modifers - local filename = vim.fn.fnamemodify(self.filename, ":.") - if filename == "" then - return "No Name" - end - -- now, if the filename would occupy more than 1/4th of the available - -- space, we trim the file path to its initials - -- See Flexible Components section below for dynamic truncation - if not conditions.width_percent_below(#filename, 0.25) then - filename = vim.fn.pathshorten(filename) - end - return filename - end, - --hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg }, - hl = { fg = colors.gray, bold = false, bg = colors.bg }, -} - -WinbarFileNameBlock = utils.insert( - WinbarFileNameBlock, - FileIcon, - utils.insert(WinbarFileName), -- a new table where FileName is a child of FileNameModifier - unpack(FileFlags), -- A small optimisation, since their parent does nothing - { provider = "%<" } -- this means that the statusline is cut here when there's not enough space -) - -vim.api.nvim_create_autocmd("User", { - pattern = "HeirlineInitWinbar", - callback = function(args) - local buf = args.buf - local buftype = vim.tbl_contains({ "prompt", "nofile", "help", "quickfix" }, vim.bo[buf].buftype) - local filetype = vim.tbl_contains({ "gitcommit", "fugitive" }, vim.bo[buf].filetype) - if buftype or filetype then - vim.opt_local.winbar = nil - end - end, -}) - -On_click = { - -- get the window id of the window in which the component was evaluated - minwid = function() - return vim.api.nvim_get_current_win() - end, - callback = function(_, minwid) - -- winid is the window id of the window the component was clicked from - local winid = minwid - -- do something with the window id, e.g.: - local buf = vim.api.nvim_win_get_buf(winid) - -- ... - end, -} - -local CloseButton = { - condition = function(self) - return not vim.bo.modified - end, - -- a small performance improvement: - -- re register the component callback only on layout/buffer changes. - update = { "WinNew", "WinClosed", "BufEnter" }, - { provider = " " }, - { - provider = "", - hl = { fg = "gray" }, - On_click = { - minwid = function() - return vim.api.nvim_get_current_win() - end, - callback = function(_, minwid) - vim.api.nvim_win_close(minwid, true) - end, - name = "heirline_winbar_close_button", - }, - }, -} - -local Center = { - fallthrough = false, - { -- Hide the winbar for special buffers - condition = function() - return conditions.buffer_matches({ - buftype = { "nofile", "prompt", "help", "quickfix" }, - filetype = { "^git.*", "fugitive" }, - }) - end, - init = function() - vim.opt_local.winbar = nil - end, - }, - { -- A special winbar for terminals - condition = function() - return conditions.buffer_matches({ buftype = { "terminal" } }) - end, - FileType, - Space, - --TerminalName, - }, - { -- An inactive winbar for regular files - condition = function() - return not conditions.is_active() - end, - --utils.surround({ "", "" }, colors.nobg, { FileIcon, { WinbarFileName, hl = { fg = colors.gray } }, FileFlags } ), - utils.surround({ "", "" }, colors.nobg, { WinbarFileNameBlock } ), - }, - -- A winbar for regular files - utils.surround({ "", "" }, colors.nobg, { FileNameBlock }), -} - ---local WinBar = { Align, Center, Align } -local WinBar = { Space, Center } - - --- TabLine ---local TablineBufnr = { --- provider = function(self) --- return tostring(self.bufnr) .. "." --- end, --- hl = { fg = colors.white, bold = false }, ----- hl = "Comment", ---} - --- we redefine the filename component, as we probably only want the tail and not the relative path -local TablineFileName = { - provider = function(self) - -- self.filename will be defined later, just keep looking at the example! - local filename = self.filename - filename = filename == "" and "No Name" or vim.fn.fnamemodify(filename, ":t") - return filename - end, - hl = function(self) - return { fg = colors.white, bold = self.is_active or self.is_visible, italic = true } - end, -} - -local TablineFileFlags = { - { - provider = function(self) - if vim.bo[self.bufnr].modified then - return " [+] " - end - end, - hl = { fg = colors.green }, - }, - { - provider = function(self) - if not vim.bo[self.bufnr].modifiable or vim.bo[self.bufnr].readonly then - return " " - end - end, - hl = { fg = "orange" }, - }, -} - -local TablineFileIcon = { - init = function(self) - local filename = self.filename - local extension = vim.fn.fnamemodify(filename, ":e") - self.icon, self.icon_color = - require("nvim-web-devicons").get_icon_color(filename, extension, { default = true }) - end, - provider = function(self) - return self.icon and (" " .. self.icon .. " ") - end, - hl = function(self) - return { fg = self.icon_color } - end, -} - --- Here the filename block finally comes together -local TablineFileNameBlock = { - init = function(self) - self.filename = vim.api.nvim_buf_get_name(self.bufnr) - end, - hl = function(self) - if self.is_active then - return "TabLineSel" - -- why not? - --elseif not vim.api.nvim_buf_is_loaded(self.bufnr) then - --return { fg = "gray", bg = colors.bg } - else - return "TabLineFill" - end - end, - on_click = { - callback = function(_, minwid, _, button) - if button == "m" then -- close on mouse middle click - vim.api.nvim_buf_delete(minwid, { force = false }) - else - vim.api.nvim_win_set_buf(0, minwid) - end - end, - minwid = function(self) - return self.bufnr - end, - name = "heirline_tabline_buffer_callback", - }, - --TablineBufnr, - TablineFileIcon, - TablineFileName, - TablineFileFlags, -} - --- a nice "x" button to close the buffer -local TablineCloseButton = { - condition = function(self) - return not vim.api.nvim_buf_get_option(self.bufnr, "modified") - end, - { provider = " " }, - { - provider = " ", - --hl = { fg = "red", bg = colors.bg }, - hl = { fg = colors.red }, - on_click = { - callback = function(_, minwid) - vim.api.nvim_buf_delete(minwid, { force = false }) - end, - minwid = function(self) - return self.bufnr - end, - name = "heirline_tabline_close_buffer_callback", - }, - }, -} - --- The final touch! -local TablineBufferBlock = utils.surround({ "", "" }, function(self) - --local TablineBufferBlock = utils.surround({ "█", "█" }, function(self) - if self.is_active then - return utils.get_highlight("TabLineSel").bg - else - return utils.get_highlight("TabLineFill").bg - end -end, { Tab, TablineFileNameBlock, TablineCloseButton }) - -local BufferLine = utils.make_buflist( - TablineBufferBlock, - { provider = " ", hl = { fg = colors.white } }, -- left truncation, optional (defaults to "<") - { provider = " ", hl = { fg = colors.white } } -- right trunctation, also optional (defaults to ...... yep, ">") - -- by the way, open a lot of buffers and try clicking them ;) -) --- TabList -local Tabpage = { - provider = function(self) - return "%" .. self.tabnr .. "T " .. self.tabnr .. " %T" - end, - hl = function(self) - if not self.is_active then - return "TabLineFill" - else - return "TabLineSel" - end - end, -} - -local TabpageClose = { - provider = "%999X %X", - --hl = "TabLine", - hl = { fg = colors.red, bg = colors.bg }, -} - -local TabPages = { - -- only show this component if there's 2 or more tabpages - condition = function() - return #vim.api.nvim_list_tabpages() >= 2 - end, - { - provider = "%=", - }, - utils.make_tablist(Tabpage), - TabpageClose, -} - --- TabLineOffset -local TabLineOffset = { - condition = function(self) - local win = vim.api.nvim_tabpage_list_wins(0)[1] - local bufnr = vim.api.nvim_win_get_buf(win) - self.winid = win - - if vim.api.nvim_buf_get_option(bufnr, "filetype") == "NvimTree" then - self.title = "NvimTree" - return true - end - end, - - provider = function(self) - local title = self.title - local width = vim.api.nvim_win_get_width(self.winid) - local pad = math.ceil((width - #title) / 2) - return string.rep(" ", pad) .. title .. string.rep(" ", pad) - end, - - hl = function(self) - if vim.api.nvim_get_current_win() == self.winid then - return "TablineSel" - else - return "TablineFill" - end - end, -} - -local TabLine = { - TabLineOffset, - BufferLine, - TabPages, -} - -require("heirline").setup(StatusLine, WinBar, TabLine) - --- Yep, with heirline we're driving manual! ---vim.cmd([[au FileType * if index(['wipe', 'delete', 'unload'], &bufhidden) >= 0 | set nobuflisted | endif]]) --- ---local function get_bufs() --- return vim.tbl_filter(function(bufnr) --- return vim.api.nvim_buf_is_loaded(bufnr) and vim.bo[bufnr].buflisted --- end, vim.api.nvim_list_bufs()) ---end --- ---local function goto_buf(index) --- local bufs = get_bufs() --- if index > #bufs then --- index = #bufs --- end --- vim.api.nvim_win_set_buf(0, bufs[index]) ---end --- ---local function addKey(key, index) --- vim.keymap.set("", "<A-" .. key .. ">", function() --- goto_buf(index) --- end, { noremap = true, silent = true }) ---end --- ---for i = 1, 9 do --- addKey(i, i) ---end ---addKey("0", 10) diff --git a/config/nvim/lua/plugins/lsp.lua b/config/nvim/lua/plugins/lsp.lua deleted file mode 100644 index 4c5cf70..0000000 --- a/config/nvim/lua/plugins/lsp.lua +++ /dev/null @@ -1,611 +0,0 @@ - -local fn = vim.fn -local keymap = vim.keymap - -local utils = require("user.utils") - -local custom_attach = function(client, bufnr) - -- Enable completion triggered by <c-x><c-o> - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') ---vim.lsp.protocol.CompletionItemKind = {} - -- Mappings. - local map = function(mode, l, r, opts) - opts = opts or {} - opts.silent = true - opts.noremap = true - opts.buffer = bufnr - keymap.set(mode, l, r, opts) - end ---map("n", "gd", "<Cmd>Lspsaga lsp_finder<CR>") -- Press "o" to open the reference location ---map("n", "gp", "<Cmd>Lspsaga peek_definition<CR>") --- --map("n", "gd", vim.lsp.buf.definition, { desc = "go to definition" }) - map("n", "<C-]>", vim.lsp.buf.definition) --- map("n", "K", vim.lsp.buf.hover) --- map("n", "<C-k>", vim.lsp.buf.signature_help) --- map("n", "<leader>rn", vim.lsp.buf.rename, { desc = "varialble rename" }) --- map("n", "gr", vim.lsp.buf.references, { desc = "show references" }) --- map("n", "[d", vim.diagnostic.goto_prev, { desc = "previous diagnostic" }) --- map("n", "]d", vim.diagnostic.goto_next, { desc = "next diagnostic" }) - map("n", "<leader>q", function() - vim.diagnostic.setqflist({ open = true }) - end, { desc = "put diagnostic to qf" }) --- --map.('n', '<space>q', vim.diagnostic.setloclist) --- map("n", "ga", vim.lsp.buf.code_action, { desc = "LSP code action" }) --- map("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, { desc = "add workspace folder" }) --- map("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, { desc = "remove workspace folder" }) --- map("n", "<leader>wl", function() --- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) --- end, { desc = "list workspace folder" }) --- map("n", "gs", "vim.lsp.buf.document_symbol()<cr>") --- map("n", "gw", "vim.lsp.buf.workspace_symbol()<cr>", { desc = "list workspace folder" }) --- --map("n", "gs", ":lua vim.lsp.buf.document_symbol()<cr>") --- map("n", "gt", ":lua vim.lsp.buf.type_definition()<cr>") --- map("n", "gD", ":lua vim.lsp.buf.declaration()<cr>") -- most lsp servers don't implement textDocument/Declaration, so gD is useless for now. --- map("n", "gi", ":lua vim.lsp.buf.implementation()<cr>") - map("n", "go", ":lua vim.diagnostic.open_float()<cr>") --- map("n", "gk", "<Cmd>Lspsaga diagnostic_jump_prev<CR>") --- map("n", "gj", "<Cmd>Lspsaga diagnostic_jump_next<CR>") ---vim.api.nvim_set_keymap('n', '<leader>dd', '<cmd>lua vim.diagnostic.setloclist()<CR>', { noremap = true, silent = true }) - --nnoremap("gI", vim.lsp.buf.incoming_calls, opts) - -- - --nnoremap("<leader>cs", vim.lsp.buf.document_symbol, opts) - --nnoremap("<leader>cw", vim.lsp.buf.workspace_symbol, opts) - --nnoremap("<leader>rf", vim.lsp.buf.formatting, opts) - --require("which-key").register { - -- ["<leader>rf"] = "lsp: format buffer", - -- ["<leader>ca"] = "lsp: code action", - -- ["<leader>gd"] = "lsp: go to type definition", - -- ["gr"] = "lsp: references", - -- ["gi"] = "lsp: implementation", - -- ["gI"] = "lsp: incoming calls", - --} ---end -vim.g.diagnostics_visible = true -function _G.toggle_diagnostics() - if vim.g.diagnostics_visible then - vim.g.diagnostics_visible = false - vim.diagnostic.disable() - else - vim.g.diagnostics_visible = true - vim.diagnostic.enable() - end -end - ---map('n', '<Leader>m', ':call v:lua.toggle_diagnostics()<CR>') - ---vim.g.diagnostics_active = true ---function _G.toggle_diagnostics() --- if vim.g.diagnostics_active then --- vim.g.diagnostics_active = false --- vim.lsp.diagnostic.clear(0) --- vim.cmd([[exe "normal ii\<Esc>x"]]) --- vim.lsp.handlers["textDocument/publishDiagnostics"] = function() end --- else --- vim.g.diagnostics_active = true --- vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( --- vim.lsp.diagnostic.on_publish_diagnostics, { --- virtual_text = true, --- signs = true, --- underline = true, --- update_in_insert = false, --- } --- ) --- end ---end --- ---map("n", "<leader>i", ":call v:lua.toggle_diagnostics()<CR>") - - - -- Set some key bindings conditional on server capabilities - if client.server_capabilities.documentFormattingProvider then - map("n", "<space>f", vim.lsp.buf.format, { desc = "format code" }) - end - - -- add rust specific keymappings - if client.name == "rust_analyzer" then - map("n", "<leader>rr", "<cmd>RustRunnables<CR>") - map("n", "<leader>ra", "<cmd>RustHoverAction<CR>") - end - --- Highlight symbol under cursor - --- Add the following to your on_attach (this allows checking server capabilities to avoid calling invalid commands. - -if client.server_capabilities.document_highlight then - vim.cmd [[ - hi! LspReferenceRead cterm=bold ctermbg=red guibg=LightYellow - hi! LspReferenceText cterm=bold ctermbg=red guibg=LightYellow - hi! LspReferenceWrite cterm=bold ctermbg=red guibg=LightYellow - ]] - vim.api.nvim_create_augroup('lsp_document_highlight', { - clear = false - }) - vim.api.nvim_clear_autocmds({ - buffer = bufnr, - group = 'lsp_document_highlight', - }) - vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { - group = 'lsp_document_highlight', - buffer = bufnr, - callback = vim.lsp.buf.document_highlight, - }) - vim.api.nvim_create_autocmd('CursorMoved', { - group = 'lsp_document_highlight', - buffer = bufnr, - callback = vim.lsp.buf.clear_references, - }) -end - ---For diagnostics for specific cursor position ---vim.api.nvim_create_autocmd("CursorHold", { --- buffer = bufnr, --- callback = function() --- local opts = { --- focusable = false, --- close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, --- border = 'rounded', --- source = 'always', --- prefix = ' ', --- scope = 'cursor', --- } --- vim.diagnostic.open_float(nil, opts) --- end ---}) - -- Diagnostic position --- vim.api.nvim_create_autocmd("CursorHold", { --- buffer = bufnr, --- callback = function() --- local float_opts = { --- focusable = false, --- close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, --- border = "rounded", --- source = "always", -- show source in diagnostic popup window --- prefix = " ", --- } --- --- if not vim.b.diagnostics_pos then --- vim.b.diagnostics_pos = { nil, nil } --- end --- --- local cursor_pos = vim.api.nvim_win_get_cursor(0) --- if --- (cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2]) --- and #vim.diagnostic.get() > 0 --- then --- vim.diagnostic.open_float(nil, float_opts) --- end --- --- vim.b.diagnostics_pos = cursor_pos --- end, --- }) - - -- The below command will highlight the current variable and its usages in the buffer. --- if client.server_capabilities.documentHighlightProvider then --- vim.cmd([[ --- hi! link LspReferenceRead Visual --- hi! link LspReferenceText Visual --- hi! link LspReferenceWrite Visual --- augroup lsp_document_highlight --- autocmd! * <buffer> --- autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() --- autocmd CursorHoldI <buffer> lua vim.lsp.buf.document_highlight() --- autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() --- augroup END --- ]]) --- end --- - -- Only highlight if compatible with the language --- if client.resolved_capabilities.document_highlight then --- vim.cmd('augroup LspHighlight') --- vim.cmd('autocmd!') --- vim.cmd('autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()') --- vim.cmd('autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()') --- vim.cmd('augroup END') --- end - - if vim.g.logging_level == "debug" then - local msg = string.format("Language server %s started!", client.name) - vim.notify(msg, vim.log.levels.DEBUG, { title = "Server?" }) - end --- suppress error messages from lang servers -end -vim.lsp.set_log_level("debug") -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) -capabilities.textDocument.completion.completionItem.snippetSupport = true -capabilities.offsetEncoding = { "utf-16" } - -local lspconfig = require("lspconfig") - -if utils.executable("pylsp") then - lspconfig.pylsp.setup({ - settings = { - pylsp = { - plugins = { - pylint = { enabled = true, executable = "pylint" }, - pyflakes = { enabled = false }, - pycodestyle = { enabled = false }, - jedi_completion = { fuzzy = true }, - pyls_isort = { enabled = true }, - pylsp_mypy = { enabled = true }, - }, - }, - }, - flags = { - debounce_text_changes = 200, - }, - capabilities = capabilities, - }) -else - vim.notify("pylsp not found!", vim.log.levels.WARN, { title = "Server?" }) -end - --- if utils.executable('pyright') then --- lspconfig.pyright.setup{ --- on_attach = custom_attach, --- capabilities = capabilities --- } --- else --- vim.notify("pyright not found!", vim.log.levels.WARN, {title = 'Server?'}) --- end - -if utils.executable("clangd") then - lspconfig.clangd.setup({ - on_attach = custom_attach, - capabilities = capabilities, - filetypes = { "c", "cpp", "cc" }, - flags = { - debounce_text_changes = 500, - }, - }) -else - vim.notify("clangd not found!", vim.log.levels.WARN, { title = "Server?" }) -end - --- set up vim-language-server -if utils.executable("vim-language-server") then - lspconfig.vimls.setup({ - on_attach = custom_attach, - flags = { - debounce_text_changes = 500, - }, - capabilities = capabilities, - }) -else - vim.notify("vim-language-server not found!", vim.log.levels.WARN, { title = "Server?" }) -end - --- set up bash-language-server -if utils.executable("bash-language-server") then - lspconfig.bashls.setup({ - on_attach = custom_attach, - capabilities = capabilities, - }) -end - -if utils.executable("lua-language-server") then - lspconfig.sumneko_lua.setup({ - on_attach = custom_attach, - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - version = "LuaJIT", - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = { "vim" }, - }, - workspace = { - -- Make the server aware of Neovim runtime files, - library = { - fn.stdpath("data") .. "/site/pack/packer/opt/emmylua-nvim", - fn.stdpath("config"), - }, - maxPreload = 2000, - preloadFileSize = 50000, - }, - }, - }, - capabilities = capabilities, - }) -end - - -if utils.executable("rust-language-server") then -require("lspconfig").rust_analyzer.setup{ - cmd = { "rustup", "run", "nightly", "rust-analyzer" }, - on_attach = custom_attach, - flags = { - debounce_text_changes = 500, - }, - --[[ - settings = { - rust = { - unstable_features = true, - build_on_save = false, - all_features = true, - }, - } - --]] -} -end - ---vim.diagnostic.config({ --- virtual_text = false, --- underline = true, ---}) -vim.diagnostic.config({ - underline = false, - signs = true, - virtual_text = false, - float = { - show_header = true, - source = 'if_many', - border = 'rounded', - focusable = false, - }, - update_in_insert = false, -- default to false - severity_sort = false, -- default to false -}) --- Show line diagnostics automatically in hover window ---vim.o.updatetime = 250 ---vim.cmd [[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focusable = false,})]] ---vim.cmd ([[ noremap <leader>a :autocmd! CursorHold,CursorHoldI <CR>]]) - ---vim.cmd [[ noremap <leader>a :autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focusable = false,})<CR>]] ---local diagnostics_active = true ---local toggle_diagnostics = function() --- diagnostics_active = not diagnostics_active --- if diagnostics_active then --- vim.o.updatetime = 250 --- vim.cmd ([[autocmd! CursorHold,CursorHoldI <CR>]]) --- --vim.diagnostic.open_float(nil, {focus=false}) --- else --- vim.o.updatetime = 250 --- vim.cmd [[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]] --- --vim.diagnostic.hide() --- --vim.diagnostic.disable() --- end ---end ---vim.keymap.set("n", "<leader>a", toggle_diagnostics) - ---function LspDiagnosticsFocus() --- vim.api.nvim_command('set eventignore=WinLeave') --- vim.api.nvim_command('autocmd CursorMoved <buffer> ++once set eventignore=""') --- vim.diagnostic.open_float(nil, {focusable = false, scope = 'line', close_events = {"CursorMoved", "CursorMovedI", "BufHidden", "InsertCharPre", "WinLeave"}}) ---end ---vim.api.nvim_set_keymap('', '<Leader>a', '<Cmd>lua LspDiagnosticsFocus()<CR>', {silent = true}) - --vim.o.updatetime = 250 - --- vim.o.updatetime = 250 -----vim.o.updatetime = 250 -----vim.cmd [[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focusable = false,})]] -----local diagnostics_active = true ---local toggle_diagnostics = function() --- --diagnostics_active = not diagnostics_active --- --if diagnostics_active then --- --if vim.diagnostic.open_float() == true then --- if vim.api.nvim_exec([[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]] ---, true) then --- vim.api.nvim_exec([[autocmd! CursorHold,CursorHoldI ]] ---, true) --- else --- vim.o.updatetime = 250 --- vim.api.nvim_exec([[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]], true) --- end ---end ---vim.keymap.set("n", "<leader>a", toggle_diagnostics) --- ---vim.api.nvim_create_autocmd('CursorHold', { --- vim.diagnostic.open_float(nil, {focus=false}) --- ---}) - -vim.o.updatetime = 250 -vim.cmd[[ -augroup OpenFloat - autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focusable = false,}) - -augroup END -]] -vim.cmd([[ -function! ToggleDiagnosticsOpenFloat() - " Switch the toggle variable - let g:DiagnosticsOpenFloat = !get(g:, 'DiagnosticsOpenFloat', 1) - - " Reset group - augroup OpenFloat - autocmd! - augroup END - - " Enable if toggled on - if g:DiagnosticsOpenFloat - augroup OpenFloat - autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focusable = false,}) print ("vim.diagnostic.open_float enabled...") - augroup END - endif -endfunction -nnoremap <leader>o :call ToggleDiagnosticsOpenFloat()<CR>\|:echom "vim.diagnostic.open_float disabled . . ."<CR> -]]) - ---vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( --- vim.lsp.handlers.hover, { --- signs = true, --- underline = false, --- virtual_text = false, --- show_diagnostic_autocmds = {'InsertLeave', 'TextChanged'}, --- diagnostic_delay = 500 --- }) ---vim.cmd [[autocmd CursorHold * lua vim.diagnostic.open_float(0, {scope="cursor", close_events = {"CursorMoved", "CursorMovedI", "BufHidden", "InsertCharPre", "WinLeave"}})]] - ---function LspDiagnosticsFocus() --- vim.api.nvim_command('set eventignore=WinLeave') --- vim.api.nvim_command('autocmd CursorMoved <buffer> ++once set eventignore=""') --- vim.diagnostic.open_float(nil, {focusable = false, scope = 'line', close_events = {"CursorMoved", "CursorMovedI", "BufHidden", "InsertCharPre", "WinLeave"}}) ---end ---vim.api.nvim_set_keymap('', '<Leader>a', '<Cmd>lua LspDiagnosticsFocus()<CR>', {silent = true}) - ---local diagnostics_active = true ---map('n', '<leader>a', function() --- diagnostics_active = not diagnostics_active --- if diagnostics_active then --- vim.diagnostic.show() --- else --- vim.diagnostic.hide() --- end ---end) - --- Global config for diagnostic ---vim.diagnostic.config({ --- underline = false, --- virtual_text = false, --- signs = true, --- severity_sort = true, --- float = { --- focusable = true, -- --- style = "minimal", -- --- --border = "rounded", --- border = "shadow", --- source = "always", --- header = "", --- prefix = "", --- }, ---}) - -vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { - underline = true, - virtual_text = false, - signs = true, - update_in_insert = false, -}) - ---vim.lsp.buf.definition -vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" }) - ---vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" }) - -vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded" }) - ---local signs = { Error = " ", Warn = " ", Info = " ", Hint = " " } ---local signs = { Error = "✘", Warn = "▲", Info = "🛈 ", Hint = "⚑" } -local signs = { Error = "✘", Warn = "▲", Info = "", Hint = "⚑" } -for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) -end - - ----- Location information about the last message printed. The format is ----- `(did print, buffer number, line number)`. ---local last_echo = { false, -1, -1 } --- ----- The timer used for displaying a diagnostic in the commandline. ---local echo_timer = nil --- ----- The timer after which to display a diagnostic in the commandline. ---local echo_timeout = 250 --- ----- The highlight group to use for warning messages. ---local warning_hlgroup = 'WarningMsg' --- ----- The highlight group to use for error messages. ---local error_hlgroup = 'ErrorMsg' --- ----- If the first diagnostic line has fewer than this many characters, also add ----- the second line to it. ---local short_line_limit = 20 --- ----- Shows the current line's diagnostics in a floating window. ---function show_line_diagnostics() --- vim --- .lsp --- .diagnostic --- .show_line_diagnostics({ severity_limit = 'Warning' }, vim.fn.bufnr('')) ---end --- ----- Prints the first diagnostic for the current line. ---function echo_diagnostic() --- if echo_timer then --- echo_timer:stop() --- end --- --- echo_timer = vim.defer_fn( --- function() --- local line = vim.fn.line('.') - 1 --- local bufnr = vim.api.nvim_win_get_buf(0) --- --- if last_echo[1] and last_echo[2] == bufnr and last_echo[3] == line then --- return --- end --- --- local diags = vim --- .lsp --- .diagnostic --- .get_line_diagnostics(bufnr, line, { severity_limit = 'Warning' }) --- --- if #diags == 0 then --- -- If we previously echo'd a message, clear it out by echoing an empty --- -- message. --- if last_echo[1] then --- last_echo = { false, -1, -1 } --- --- vim.api.nvim_command('echo ""') --- end --- --- return --- end --- --- last_echo = { true, bufnr, line } --- --- local diag = diags[1] --- local width = vim.api.nvim_get_option('columns') - 15 --- local lines = vim.split(diag.message, "\n") --- local message = lines[1] --- local trimmed = false --- --- if #lines > 1 and #message <= short_line_limit then --- message = message .. ' ' .. lines[2] --- end --- --- if width > 0 and #message >= width then --- message = message:sub(1, width) .. '...' --- end --- --- local kind = 'warning' --- local hlgroup = warning_hlgroup --- --- if diag.severity == vim.lsp.protocol.DiagnosticSeverity.Error then --- kind = 'error' --- hlgroup = error_hlgroup --- end --- --- local chunks = { --- { kind .. ': ', hlgroup }, --- { message } --- } --- --- vim.api.nvim_echo(chunks, false, {}) --- end, --- echo_timeout --- ) ---end ---vim.cmd([[ --- autocmd CursorMoved * :lua echo_diagnostic() ---]]) --- Highlight line number instead of having icons in sign column - --- See the properties of the signs with sign list. - ---vim.cmd [[ --- highlight! DiagnosticLineNrError guibg=#51202A guifg=#FF0000 gui=bold --- highlight! DiagnosticLineNrWarn guibg=#51412A guifg=#FFA500 gui=bold --- highlight! DiagnosticLineNrInfo guibg=#1E535D guifg=#00FFFF gui=bold --- highlight! DiagnosticLineNrHint guibg=#1E205D guifg=#0000FF gui=bold --- --- sign define DiagnosticSignError text= texthl=DiagnosticSignError linehl= numhl=DiagnosticLineNrError --- sign define DiagnosticSignWarn text= texthl=DiagnosticSignWarn linehl= numhl=DiagnosticLineNrWarn --- sign define DiagnosticSignInfo text= texthl=DiagnosticSignInfo linehl= numhl=DiagnosticLineNrInfo --- sign define DiagnosticSignHint text= texthl=DiagnosticSignHint linehl= numhl=DiagnosticLineNrHint ---]] - diff --git a/config/nvim/lua/plugins/lspsaga.lua b/config/nvim/lua/plugins/lspsaga.lua deleted file mode 100644 index 4161ce9..0000000 --- a/config/nvim/lua/plugins/lspsaga.lua +++ /dev/null @@ -1,46 +0,0 @@ -return function() - local saga = require "lspsaga" - - saga.init_lsp_saga { - use_saga_diagnostic_sign = false, - finder_action_keys = { - vsplit = "v", - split = "s", - quit = { "q", "<ESC>" }, - }, - code_action_icon = "💡", - code_action_prompt = { - enable = false, - sign = false, - virtual_text = false, - }, - } - - require("as.highlights").highlight("LspSagaLightbulb", { guifg = "NONE", guibg = "NONE" }) - --- as.vnoremap("<leader>ca", ":<c-u>lua require('lspsaga.codeaction').range_code_action()<CR>") --- as.inoremap("<c-k>", "<cmd>lua require('lspsaga.signaturehelp').signature_help()<CR>") --- as.nnoremap("K", "<cmd>lua require('lspsaga.hover').render_hover_doc()<CR>") --- -- scroll down hover doc --- as.nnoremap("<C-f>", "<cmd>lua require('lspsaga.action').smart_scroll_with_saga(1)<CR>") --- -- scroll up hover doc --- as.nnoremap("<C-b>", "<cmd>lua require('lspsaga.action').smart_scroll_with_saga(-1)<CR>") - - require("which-key").register { - ["<leader>rn"] = { require("lspsaga.rename").rename, "lsp: rename" }, - ["<leader>ca"] = { require("lspsaga.codeaction").code_action, "lsp: code action" }, - ["gp"] = { require("lspsaga.provider").preview_definition, "lsp: preview definition" }, - ["gh"] = { require("lspsaga.provider").lsp_finder, "lsp: finder" }, - -- jump diagnostic - ["]c"] = { require("lspsaga.diagnostic").lsp_jump_diagnostic_prev, "lsp: previous diagnostic" }, - ["[c"] = { require("lspsaga.diagnostic").lsp_jump_diagnostic_next, "lsp: next diagnostic" }, - } - - -- augroup("LspSagaCursorCommands", { - -- { - -- events = { "CursorHold" }, - -- targets = { "*" }, - -- command = "lua require('lspsaga.diagnostic').show_cursor_diagnostics()", - -- }, - -- }) -end diff --git a/config/nvim/lua/plugins/luasnip.lua b/config/nvim/lua/plugins/luasnip.lua deleted file mode 100644 index de2177e..0000000 --- a/config/nvim/lua/plugins/luasnip.lua +++ /dev/null @@ -1,69 +0,0 @@ -local ls = require "luasnip" -- - -require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets/" }) ---local options = { -ls.config.set_config { - history = true, - updateevents = "TextChanged,TextChangedI", - -- Autosnippets: - enable_autosnippets = true, -- - ext_opts = { -- - [require("luasnip.util.types").choiceNode] = { - active = { - virt_text = { { "«", "GruvboxOrange" } }, - }, - }, - }, -} - ---local keymap = vim.keymap ---local keymap = vim.api.nvim_set_keymap -local keymap = vim.keymap.set ---keymap('i', '<c-f>', 'luasnip#expand_or_jumpable() ? "<Plug>luasnip-expand-or-jump" : "<Tab>"', {expr = true, silent = true}) -keymap({ "i", "s"}, "<c-f>", function() - if ls.expand_or_jumpable() then - ls.expand() - end -end) - -keymap({ "i", "s"}, "<c-j>", function() - if ls.jumpable(1) then - ls.jump(1) - end -end) - -keymap({ "i", "s"}, "<c-k>", function() - if ls.jumpable(-1) then - ls.jump(-1) - end -end) - -keymap({ "i", "s"}, "<c-c>", function() - if ls.choice_active() then - ls.change_choice(1) - end -end) - -keymap({ "i", "s"}, "<a-c>", function() - if ls.choice_active() then - ls.change_choice(-1) - end -end) - --- Character class Matching --- %a letters (A-Z, a-z) --- %c control characters (\n, \t, \r, ...) --- %d digits (0-9) --- %l lower-case letter (a-z) --- %p punctuation characters (!, ?, &, ...) --- %s space characters --- %u upper-case letters --- %w alphanumeric characters (A-Z, a-z, 0-9) --- %x hexadecimal digits (\3, \4, ...) --- %z the character with representation 0 --- . Matches any character - - - - - diff --git a/config/nvim/lua/plugins/mason.lua b/config/nvim/lua/plugins/mason.lua deleted file mode 100644 index c0fdca6..0000000 --- a/config/nvim/lua/plugins/mason.lua +++ /dev/null @@ -1,61 +0,0 @@ -local status, mason = pcall(require, "mason") -if (not status) then return end -local status2, lspconfig = pcall(require, "mason-lspconfig") -if (not status2) then return end - -mason.setup({ - -}) - -lspconfig.setup { - ensure_installed = { "sumneko_lua" }, -} -local keymap = vim.api.nvim_set_keymap -local opts = { noremap = true } - - -keymap('n', 'gd', ':lua vim.lsp.buf.definition()<cr>', opts) -keymap('n', 'gD', ':lua vim.lsp.buf.declaration()<cr>', opts) -keymap('n', 'gi', ':lua vim.lsp.buf.implementation()<cr>', opts) -keymap('n', 'gw', ':lua vim.lsp.buf.document_symbol()<cr>', opts) -keymap('n', 'gw', ':lua vim.lsp.buf.workspace_symbol()<cr>', opts) -keymap('n', 'gr', ':lua vim.lsp.buf.references()<cr>', opts) -keymap('n', 'gt', ':lua vim.lsp.buf.type_definition()<cr>', opts) -keymap('n', 'K', ':lua vim.lsp.buf.hover()<cr>', opts) -keymap('n', '<c-k>', ':lua vim.lsp.buf.signature_help()<cr>', opts) -keymap('n', '<leader>af', ':lua vim.lsp.buf.code_action()<cr>', opts) -keymap('n', '<leader>rn', ':lua vim.lsp.buf.rename()<cr>', opts) - - - ---local mason = require("mason") --- ---local options = { --- ensure_installed = { "lua-language-server" }, -- not an option from mason.nvim --- --- ui = { --- icons = { --- package_pending = " ", --- package_installed = " ", --- package_uninstalled = " ﮊ", --- }, --- --- keymaps = { --- toggle_server_expand = "<CR>", --- install_server = "i", --- update_server = "u", --- check_server_version = "c", --- update_all_servers = "U", --- check_outdated_servers = "C", --- uninstall_server = "X", --- cancel_installation = "<C-c>", --- }, --- }, --- --- max_concurrent_installers = 10, ---} --- --- --- ---mason.setup(options) - diff --git a/config/nvim/lua/plugins/modify-blend.lua b/config/nvim/lua/plugins/modify-blend.lua deleted file mode 100644 index 7c48815..0000000 --- a/config/nvim/lua/plugins/modify-blend.lua +++ /dev/null @@ -1,40 +0,0 @@ -local ui = vim.api.nvim_list_uis()[1] - -local bufnr = vim.api.nvim_create_buf(false, true) -local win = vim.api.nvim_open_win(bufnr, true, { - relative = "editor", - width = ui.width, - height = ui.height, - row = 10, - col = 10, - style = "minimal", -}) - -vim.api.nvim_win_set_option(win, "winblend", 1) - -local blend_start = 15 -local offset = 1 - -CANCEL = false -local timer = vim.loop.new_timer() -timer:start( - 0, - 50, - vim.schedule_wrap(function() - blend_start = blend_start + offset - - if blend_start > 90 then - offset = -1 - elseif blend_start < 10 then - offset = 1 - end - - if CANCEL or not vim.api.nvim_win_is_valid(win) then - timer:close() - timer:stop() - return - end - - vim.cmd([[highlight NormalFloat blend=]] .. tostring(blend_start)) - end) -) diff --git a/config/nvim/lua/plugins/neoscroll.lua b/config/nvim/lua/plugins/neoscroll.lua deleted file mode 100644 index d122584..0000000 --- a/config/nvim/lua/plugins/neoscroll.lua +++ /dev/null @@ -1,21 +0,0 @@ -require("neoscroll").setup({ - easing_function = "quadratic", -}) - -local t = {} --- Syntax: t[keys] = {function, {function arguments}} --- Use the "sine" easing function -t["<C-u>"] = { "scroll", { "-vim.wo.scroll", "true", "20", [['cubic']] } } -t["<C-d>"] = { "scroll", { "vim.wo.scroll", "true", "20", [['cubic']] } } --- Use the "circular" easing function -t["<C-b>"] = { "scroll", { "-vim.api.nvim_win_get_height(0)", "true", "50", [['cubic']] } } -t["<C-f>"] = { "scroll", { "vim.api.nvim_win_get_height(0)", "true", "50", [['cubic']] } } --- Pass "nil" to disable the easing animation (constant scrolling speed) -t["<C-y>"] = { "scroll", { "-0.10", "false", "100", nil } } -t["<C-e>"] = { "scroll", { "0.10", "false", "100", nil } } --- When no easing function is provided the default easing function (in this case "quadratic") will be used -t["zt"] = { "zt", { "10" } } -t["zz"] = { "zz", { "10" } } -t["zb"] = { "zb", { "10" } } - -require("neoscroll.config").set_mappings(t) diff --git a/config/nvim/lua/plugins/null-ls.lua b/config/nvim/lua/plugins/null-ls.lua deleted file mode 100644 index 4573a54..0000000 --- a/config/nvim/lua/plugins/null-ls.lua +++ /dev/null @@ -1,44 +0,0 @@ -local null_ls_status_ok, null_ls = pcall(require, "null-ls") -if not null_ls_status_ok then - return -end ---[[null-ls.]] --- --- null-language-server i.e. a sort of language server which does not provide any services such as formatting and diagnostics you expect from a language server. Instead it will need to install corresponding external “sources” and then hook these sources into the neovim lsp client through null-ls. --- - -null_ls.setup({ - debug = true, - sources = { - require("null-ls").builtins.formatting.stylua, -- lua formatting - require("null-ls").builtins.formatting.prettier.with({ -- markdown, html/js formatting - filetypes = { "html", "css", "javascript", "javascriptreact", "markdown", "json", "yaml" }, - }), - require("null-ls").builtins.formatting.shfmt.with({ -- shell script formatting - filetypes = { "bash", "zsh", "sh" }, - }), - require("null-ls").builtins.diagnostics.shellcheck, -- shell script diagnostics - require("null-ls").builtins.code_actions.shellcheck, -- shell script code actions - --require("null-ls").builtins.formatting.black, - --require("null-ls").builtins.formatting.prettierd, - --require("null-ls").builtins.diagnostics.luacheck, - --require("null-ls").builtins.diagnostics.eslint, - --require("null-ls").builtins.diagnostics.eslint_d, - --require("null-ls").builtins.diagnostics.mdl, - --require("null-ls").builtins.diagnostics.vint, - --require("null-ls").builtins.codeactions.eslint_d, - --require("null-ls").builtins.completion.spell, - }, - on_attach = function(client, bufnr) - if client.server_capabilities.document_formatting then - local group = vim.api.nvim_create_augroup("NullLsFormatting", { clear = true }) - vim.api.nvim_create_autocmd("BufWritePre", { - callback = function() - vim.lsp.buf.formatting_sync(nil, 4000) - end, - buffer = bufnr, - group = group, - }) - end - end, -}) diff --git a/config/nvim/lua/plugins/nvim-tree.lua b/config/nvim/lua/plugins/nvim-tree.lua deleted file mode 100644 index a1e10e0..0000000 --- a/config/nvim/lua/plugins/nvim-tree.lua +++ /dev/null @@ -1,69 +0,0 @@ -local status_ok, nvim_tree = pcall(require, "nvim-tree") -if not status_ok then - return -end - -local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config") -if not config_status_ok then - return -end - -local tree_cb = nvim_tree_config.nvim_tree_callback - -nvim_tree.setup({ - update_focused_file = { - enable = true, - update_cwd = true, - }, - renderer = { - root_folder_modifier = ":t", - icons = { - glyphs = { - default = "", - symlink = "", - folder = { - arrow_open = "", - arrow_closed = "", - default = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - symlink_open = "", - }, - git = { - unstaged = "", - staged = "S", - unmerged = "", - renamed = "➜", - untracked = "U", - deleted = "", - ignored = "◌", - }, - }, - }, - }, - diagnostics = { - enable = true, - show_on_dirs = true, - icons = { - hint = "", - info = "", - warning = "", - error = "", - }, - }, - view = { - width = 30, - --height = 30, - side = "left", - mappings = { - list = { - { key = { "l", "<CR>", "o" }, cb = tree_cb("edit") }, - { key = "h", cb = tree_cb("close_node") }, - { key = "v", cb = tree_cb("vsplit") }, - { key = "u", action = "dir_up" }, - }, - }, - }, -}) diff --git a/config/nvim/lua/plugins/prettier.lua b/config/nvim/lua/plugins/prettier.lua deleted file mode 100644 index 05d4665..0000000 --- a/config/nvim/lua/plugins/prettier.lua +++ /dev/null @@ -1,19 +0,0 @@ -local status, prettier = pcall(require, "prettier") -if (not status) then return end - -prettier.setup { - bin = 'prettierd', - filetypes = { - "c", - "lua", - "vim", - --"css", - --"javascript", - --"javascriptreact", - --"typescript", - --"typescriptreact", - --"json", - --"scss", - "less" - } -} diff --git a/config/nvim/lua/plugins/scripts/lsp-ext.lua b/config/nvim/lua/plugins/scripts/lsp-ext.lua deleted file mode 100644 index c4378c6..0000000 --- a/config/nvim/lua/plugins/scripts/lsp-ext.lua +++ /dev/null @@ -1,48 +0,0 @@ --- --- lsp-ext.lua - - -M = {} - -function M.preview_location(location, context, before_context) - -- location may be LocationLink or Location (more useful for the former) - context = context or 15 - before_context = before_context or 0 - local uri = location.targetUri or location.uri - if uri == nil then - return - end - local bufnr = vim.uri_to_bufnr(uri) - if not vim.api.nvim_buf_is_loaded(bufnr) then - vim.fn.bufload(bufnr) - end - local range = location.targetRange or location.range - local contents = - vim.api.nvim_buf_get_lines(bufnr, range.start.line - before_context, range["end"].line + 1 + context, false) - local filetype = vim.api.nvim_buf_get_option(bufnr, "filetype") - return vim.lsp.util.open_floating_preview(contents, filetype) -end - -function M.preview_location_callback(_, method, result) - local context = 15 - if result == nil or vim.tbl_isempty(result) then - print("No location found: " .. method) - return nil - end - if vim.tbl_islist(result) then - M.floating_buf, M.floating_win = M.preview_location(result[1], context) - else - M.floating_buf, M.floating_win = M.preview_location(result, context) - end -end - -function M.peek_definition() - if vim.tbl_contains(vim.api.nvim_list_wins(), M.floating_win) then - vim.api.nvim_set_current_win(M.floating_win) - else - local params = vim.lsp.util.make_position_params() - return vim.lsp.buf_request(0, "textDocument/definition", params, M.preview_location_callback) - end -end - -return M diff --git a/config/nvim/lua/plugins/scripts/setcolors.lua b/config/nvim/lua/plugins/scripts/setcolors.lua deleted file mode 100644 index 605bc84..0000000 --- a/config/nvim/lua/plugins/scripts/setcolors.lua +++ /dev/null @@ -1,121 +0,0 @@ -vim.cmd([[ -" Change the color scheme from a list of color scheme names. -" Version 2010-09-12 from http://vim.wikia.com/wiki/VimTip341 -" Press key: -" F8 next scheme -" Shift-F8 previous scheme -" Alt-F8 random scheme -" Set the list of color schemes used by the above (default is 'all'): -" :SetColors all (all $VIMRUNTIME/colors/*.vim) -" :SetColors my (names built into script) -" :SetColors blue ayu ron (these schemes) -" :SetColors (display current scheme names) -" Set the current color scheme based on time of day: -" :SetColors now -if v:version < 700 || exists('loaded_setcolors') || &cp - finish -endif - -let loaded_setcolors = 1 -let s:mycolors = ['everblush', 'ayu', 'gruvbox', 'molokai', 'onedark', 'srcery'] " colorscheme names that we use to set color - -" Set list of color scheme names that we will use, except -" argument 'now' actually changes the current color scheme. -function! s:SetColors(args) - if len(a:args) == 0 - echo 'Current color scheme names:' - let i = 0 - while i < len(s:mycolors) - echo ' '.join(map(s:mycolors[i : i+4], 'printf("%-14s", v:val)')) - let i += 5 - endwhile - elseif a:args == 'all' - let paths = split(globpath(&runtimepath, 'colors/*.vim'), "\n") - let s:mycolors = uniq(sort(map(paths, 'fnamemodify(v:val, ":t:r")'))) - echo 'List of colors set from all installed color schemes' - elseif a:args == 'my' - let c1 = 'default srcery everblush' - let c2 = 'gruvbox onedark' - let c3 = 'ayu molokai' - let s:mycolors = split(c1.' '.c2.' '.c3) - echo 'List of colors set from built-in names' - elseif a:args == 'now' - call s:HourColor() - else - let s:mycolors = split(a:args) - echo 'List of colors set from argument (space-separated names)' - endif -endfunction - -command! -nargs=* SetColors call s:SetColors('<args>') - -" Set next/previous/random (how = 1/-1/0) color from our list of colors. -" The 'random' index is actually set from the current time in seconds. -" Global (no 's:') so can easily call from command line. -function! NextColor(how) - call s:NextColor(a:how, 1) -endfunction - -" Helper function for NextColor(), allows echoing of the color name to be -" disabled. -function! s:NextColor(how, echo_color) - if len(s:mycolors) == 0 - call s:SetColors('all') - endif - if exists('g:colors_name') - let current = index(s:mycolors, g:colors_name) - else - let current = -1 - endif - let missing = [] - let how = a:how - for i in range(len(s:mycolors)) - if how == 0 - let current = localtime() % len(s:mycolors) - let how = 1 " in case random color does not exist - else - let current += how - if !(0 <= current && current < len(s:mycolors)) - let current = (how>0 ? 0 : len(s:mycolors)-1) - endif - endif - try - execute 'colorscheme '.s:mycolors[current] - break - catch /E185:/ - call add(missing, s:mycolors[current]) - endtry - endfor - redraw - if len(missing) > 0 - echo 'Error: colorscheme not found:' join(missing) - endif - if (a:echo_color) - echo g:colors_name - endif -endfunction - -nnoremap <leader>cn :call NextColor(1)<CR> -nnoremap <leader>cp :call NextColor(-1)<CR> -nnoremap <leader>cc :call NextColor(0)<CR> - -" Set color scheme according to current time of day. -function! s:HourColor() - let hr = str2nr(strftime('%H')) - if hr <= 3 - let i = 0 - elseif hr <= 7 - let i = 1 - elseif hr <= 14 - let i = 2 - elseif hr <= 18 - let i = 3 - else - let i = 4 - endif - let nowcolors = 'srcery onedark molokai' - execute 'colorscheme '.split(nowcolors)[i] - redraw - echo g:colors_name -endfunction -]]) diff --git a/config/nvim/lua/plugins/scripts/toggleLsp.lua b/config/nvim/lua/plugins/scripts/toggleLsp.lua deleted file mode 100644 index 28af698..0000000 --- a/config/nvim/lua/plugins/scripts/toggleLsp.lua +++ /dev/null @@ -1,40 +0,0 @@ -local M = {} - -local check_function = function(bufnr, _) - local ok, result = pcall(vim.api.nvim_buf_get_var, bufnr, 'lsp_enabled') - -- No buffer local variable set, so just enable by default - if not ok then - return true - end - - return result -end - -vim.lsp.handlers["textDocument/publishDiagnostics"] = - vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { - underline = check_function, - virtual_text = check_function, - signs = check_function - }) - -function M.Enable() - vim.b.lsp_enabled = true -end - -function M.Disable() - vim.b.lsp_enabled = false -end - -function M.Toggle() - if vim.b.lsp_enabled == false then - M.Enable() - else - M.Disable() - end -end - -vim.cmd [[ - command! -nargs=* ToggleLsp lua require'lsp.toggle'.Toggle() -]] - -return M diff --git a/config/nvim/lua/plugins/telescope.lua b/config/nvim/lua/plugins/telescope.lua deleted file mode 100644 index f878b77..0000000 --- a/config/nvim/lua/plugins/telescope.lua +++ /dev/null @@ -1,357 +0,0 @@ -local M = {} -local status_ok, telescope = pcall(require, "telescope") -if not status_ok then - return -end - - ---local actions = require("telescope.actions") ---local builtin = require("telescope.builtin") - ---local themes = require("telescope.themes") ---local utils = require("telescope.utils") -local actions = require("telescope.actions") ---local action_state = require("telescope.actions.state") ---local layout_actions = require("telescope.actions.layout") - -telescope.load_extension("fzf") ---telescope.load_extension("file_browser") -require("telescope").load_extension "file_browser" -require('telescope').load_extension('changed_files') ---require("telescope").load_extension("file_browser") -local fb_actions = require("telescope").extensions.file_browser.actions ---telescope.load_extension('media_files') - -telescope.setup({ - defaults = { - vimgrep_arguments = { - "rg", - "--color=never", - "--no-heading", - "--with-filename", - "--line-number", - "--column", - "--smart-case", - "--hidden", - "--fixed-strings", - "--trim", - }, - prompt_prefix = " ", - selection_caret = " ", - entry_prefix = " ", - path_display = { "tail" }, - --path_display = { "truncate" }, - --path_display = { "smart" }, - file_ignore_patterns = { - "packer_compiled.lua", - "%.DS_Store", - "%.git/", - "%.spl", - "%.log", - "%[No Name%]", -- new files / sometimes folders (netrw) - "/$", -- ignore folders (netrw) - "node_modules", - "%.png", - "%.zip", - "%.pxd", - "^.vim/", - "^.local/", - "^.cache/", - "^downloads/", - --"^node_modules/", - --"^undodir/", - }, - mappings = { - i = { - ["<C-n>"] = actions.cycle_history_next, - ["<C-p>"] = actions.cycle_history_prev, - - ["<C-j>"] = actions.move_selection_next, - ["<C-k>"] = actions.move_selection_previous, - - ["<C-c>"] = actions.close, - ["<Esc>"] = actions.close, -- close w/ one esc - --["<Esc>"] = "close", -- close w/ one esc - ["<?>"] = actions.which_key, -- keys from pressing <C-/> - - ["<Down>"] = actions.move_selection_next, - ["<Up>"] = actions.move_selection_previous, - - ["<CR>"] = actions.select_default, - ["<C-x>"] = actions.select_horizontal, - ["<C-y>"] = actions.select_vertical, - ["<C-t>"] = actions.select_tab, - - ["<C-u>"] = actions.preview_scrolling_up, - ["<C-d>"] = actions.preview_scrolling_down, - - ["<PageUp>"] = actions.results_scrolling_up, - ["<PageDown>"] = actions.results_scrolling_down, - - ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, - ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, - ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, - ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, - ["<C-l>"] = actions.complete_tag, - ["<C-_>"] = actions.which_key, -- keys from pressing <C-/> - --["<C-o>"] = function(prompt_bufnr) - -- local selection = require("telescope.actions.state").get_selected_entry() - -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") - -- require("telescope.actions").close(prompt_bufnr) - -- -- Depending on what you want put `cd`, `lcd`, `tcd` - -- vim.cmd(string.format("silent lcd %s", dir)) - --end, - }, - - n = { - ["<esc>"] = actions.close, - ["<q>"] = actions.close, - ["<CR>"] = actions.select_default, - ["<C-x>"] = actions.select_horizontal, - ["<C-y>"] = actions.select_vertical, - ["<C-t>"] = actions.select_tab, - - ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, - ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, - ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, - ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, - - ["j"] = actions.move_selection_next, - ["k"] = actions.move_selection_previous, - ["H"] = actions.move_to_top, - ["M"] = actions.move_to_middle, - ["L"] = actions.move_to_bottom, - - ["<Down>"] = actions.move_selection_next, - ["<Up>"] = actions.move_selection_previous, - ["gg"] = actions.move_to_top, - ["G"] = actions.move_to_bottom, - - ["<C-u>"] = actions.preview_scrolling_up, - ["<C-d>"] = actions.preview_scrolling_down, - - ["<PageUp>"] = actions.results_scrolling_up, - ["<PageDown>"] = actions.results_scrolling_down, - - ["?"] = actions.which_key, - --["<C-o>"] = function(prompt_bufnr) - -- local selection = require("telescope.actions.state").get_selected_entry() - -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") - -- require("telescope.actions").close(prompt_bufnr) - -- -- Depending on what you want put `cd`, `lcd`, `tcd` - -- vim.cmd(string.format("silent lcd %s", dir)) - --end, - }, - }, - }, - preview = { - filesize_limit = 3, - timeout = 250, - }, - selection_strategy = "reset", - sorting_strategy = "ascending", - scroll_strategy = "limit", - color_devicons = true, - layout_strategy = 'horizontal', - layout_config = { - horizontal = { - height = 0.95, - preview_cutoff = 70, - width = 0.92, - preview_width = {0.55, max = 50} - }, - bottom_pane = { - height = 12, - preview_cutoff = 70, - prompt_position = "bottom", - }, - }, - pickers = { - live_grep = { - disable_coordinates = true, - layout_config = { - horizontal = { - preview_width = 0.55, - }, - }, - }, - }, - --pickers = { - --lsp_references = { - -- prompt_prefix='⬅️', - -- show_line=false, - -- trim_text=true, - -- include_declaration=false, - -- initial_mode = "normal", - --}, - --lsp_definitions = { - -- prompt_prefix='➡️', - -- show_line=false, - -- trim_text=true, - -- initial_mode = "normal", - --}, - --lsp_document_symbols = { - -- prompt_prefix='* ', - -- show_line = false, - --}, - --treesitter = { - -- prompt_prefix=' ', - -- show_line = false, - --}, - --find_files = { - -- cwd='%:p:h', - -- prompt_prefix=' ', - -- hidden = true, - -- follow = true, - --}, - --keymaps = { prompt_prefix='? ' }, - --oldfiles = { prompt_prefix=' ' }, - --highlights = { prompt_prefix=' ' }, - --git_files = { - -- prompt_prefix=' ', - -- show_untracked = true, - -- path_display = { "tail" }, - --}, - --buffers = { - -- prompt_prefix=' ', - -- ignore_current_buffer = true, - -- initial_mode = "normal", - -- sort_mru = true, - --}, - --live_grep = { - -- cwd='%:p:h', - -- disable_coordinates=true, - -- prompt_title='Search in Folder', - -- prompt_prefix=' ', - --}, - --spell_suggest = { - -- initial_mode = "normal", - -- prompt_prefix = "暈", - -- theme = "cursor", - -- layout_config = { cursor = { width = 0.3 } } - --}, - --colorscheme = { - -- enable_preview = true, - -- prompt_prefix = '', - -- results_title = '', - -- layout_strategy = "bottom_pane", - --}, - --}, - - extensions = { - file_browser = { - theme = "dropdown", - -- disables netrw and use telescope-file-browser in its place - hijack_netrw = true, - mappings = { - -- your custom insert mode mappings - ["i"] = { - ["<C-w>"] = function() - vim.cmd("normal vbd") - end, - --["<C-h>"] = fb_actions.goto_parent_dir, - }, - ["n"] = { - -- your custom normal mode mappings - ["N"] = fb_actions.create, - --["<C-h>"] = fb_actions.goto_parent_dir, - --["/"] = function() - -- vim.cmd("startinsert") - --end, - }, - }, - }, - --["ui-select"] = { -- mostly code actions - -- initial_mode = "normal", - -- prompt_prefix = " ", - -- results_title = '', - -- layout_strategy = "bottom_pane", - -- sorting_strategy = "ascending", - -- layout_config = { bottom_pane = { height = 8 } }, - --}, - ["ui-select"] = { - require("telescope.themes").get_dropdown({}), - }, - }, -}) - --------------------------------------------------------------------------------- - --- have to be loaded after telescope config ---require("telescope").load_extension("ui-select") -- use telescope for selections like code actions -telescope.load_extension("ui-select") - -function M.find_configs() - require("telescope.builtin").find_files { - hidden = true, - no_ignore = false, - prompt_title = " Find Configs", - results_title = "Config Files", - path_display = { "smart" }, - search_dirs = { - "~/.config/nvim", - "~/.config/zsh", - "~/.config/tmux", - "~/.config/X11", - "~/.config/alacritty", - "~/.config/bspwm", - "~/.config/sxhkd", - }, - -- cwd = "~/.config/nvim/", - file_ignore_patterns = { - "~/.config/nvim/startup.log", - "packer_compiled.lua", - "resurrect", - "tmux/plugins", - --"^~/.config/tmux/plugins", - "%.txt", - ".git", - }, - layout_strategy = "horizontal", - layout_config = { preview_width = 0.65, width = 0.75 }, - } -end - -function M.grep_notes() - local opts = {} - opts.hidden = true - opts.search_dirs = { - "~/documents/notes/", - } - opts.prompt_prefix = " " - opts.prompt_title = " Grep Notes" - opts.path_display = { "smart" } - require("telescope.builtin").live_grep(opts) -end - -function M.find_notes() - require("telescope.builtin").find_files { - prompt_title = " Find Notes", - path_display = { "smart" }, - search_dirs = { - "~/documents", - }, - --cwd = "~documents/notes", - layout_strategy = "horizontal", - layout_config = { preview_width = 0.65, width = 0.75 }, - } -end - -function M.file_explorer() - require("telescope.builtin").file_browser({ - prompt_title = "File Browser", - cwd = "~", - layout_strategy = "horizontal", - }) -end - -function M.grep_current_dir() - local buffer_dir = require("telescope.utils").buffer_dir() - local opts = { - prompt_title = "Live Grep in " .. buffer_dir, - cwd = buffer_dir, - } - require("telescope.builtin").live_grep(opts) -end - -return M diff --git a/config/nvim/lua/plugins/treesitter.lua b/config/nvim/lua/plugins/treesitter.lua deleted file mode 100644 index b081ca3..0000000 --- a/config/nvim/lua/plugins/treesitter.lua +++ /dev/null @@ -1,34 +0,0 @@ -local status, treesitter = pcall(require, "nvim-treesitter.configs") -if (not status) then return end - -treesitter.setup { - highlight = { - enable = true, - disable = {}, - }, - indent = { - enable = true, - disable = {}, - --disable = { "python", "css" } - }, - ensure_installed = { - "c", - "bash", - "lua", - "rust", - }, - --ensure_installed = "all", -- one of "all" or a list of languages - --ignore_install = { "" }, -- List of parsers to ignore installing - autotag = { - enable = true, - }, - efactor = { - highlight_definitions = { enable = true }, - highlight_current_scope = { enable = true } - } -} ---vim.opt.foldmethod = "expr" ---vim.opt.foldexpr = "nvim_treesitter#foldexpr()" - ---local parser_config = require "nvim-treesitter.parsers".get_parser_configs() ---parser_config.tsx.filetype_to_parsername = { "javascript", "typescript.tsx" } diff --git a/config/nvim/lua/plugins/web-devicons.lua b/config/nvim/lua/plugins/web-devicons.lua deleted file mode 100644 index b8396bc..0000000 --- a/config/nvim/lua/plugins/web-devicons.lua +++ /dev/null @@ -1,12 +0,0 @@ -local status, icons = pcall(require, "nvim-web-devicons") -if (not status) then return end - -icons.setup { - -- your personnal icons can go here (to override) - -- DevIcon will be appended to `name` - override = { - }, - -- globally enable default icons (default to false) - -- will get overriden by `get_icons` option - default = true -} diff --git a/config/nvim/lua/plugins/zen-mode.lua b/config/nvim/lua/plugins/zen-mode.lua deleted file mode 100644 index 7e52854..0000000 --- a/config/nvim/lua/plugins/zen-mode.lua +++ /dev/null @@ -1,7 +0,0 @@ -local status, zenMode = pcall(require, "zen-mode") -if (not status) then return end - -zenMode.setup { -} - -vim.keymap.set('n', '<C-w>o', '<cmd>ZenMode<cr>', { silent = true }) diff --git a/config/nvim/lua/user/keys.lua b/config/nvim/lua/user/keys.lua deleted file mode 100644 index dd48b76..0000000 --- a/config/nvim/lua/user/keys.lua +++ /dev/null @@ -1,651 +0,0 @@ ---[[ key.lua ]] - --- Shorten function name ---local keymap = vim.api.nvim_set_keymap -local keymap = vim.keymap - ---local function new_desc(d) --- return { desc = d } ---end --- ---local d = new_desc - ---local opts = { noremap = true, silent = true } -local term_opts = { noremap = true, silent = false } - local map = function(mode, l, r, opts) - opts = opts or {} - opts.silent = true - opts.noremap = true - keymap.set(mode, l, r, opts) - end - - ---------------- Standard Operations --------------- --- Semi-colon as leader key -vim.g.mapleader = ";" ---vim.g.maplocalleader = ";" - --- "jj" to exit insert-mode -map("i", "jk", "<esc>") - -map("n", "<leader>m", ":messages<CR>") -map("n", "<leader>cd", ":cd %:p:h<CR>:pwd<CR>") --- Print last error message or use these commands | v:errmsgv | :statusmsg | :h execute() | ---nnoremap <silent><leader>x :put =trim(execute(input(':', '', 'command')))<CR> --- Press <leader>x, then enter your command, such as 5mess and press <Enter>. The last five message lines will be added to the current buffer. --- useful to copy error message when vim start - --- save quickly ---map("n", ";w", ":w<CR>", d("Save buffer")) - ---map("n", "<leader>so", ":luafile %<CR>") - ---vim.cmd([[ ---let $my_vimrc = $localappdata.'/nvim/init.lua' ---nnoremap <leader>so :source $my_vimrc<cr> ---]]) - --- Toggle between folds ---utils.map("n", "<F2>", "&foldlevel ? 'zM' : 'zR'", { expr = true }) - --- Move to the next and previous item in the quickfixlist ---utils.map("n", "]c", "<Cmd>cnext<CR>") ---utils.map("n", "[c", "<Cmd>cprevious<CR>") - --- Use space to toggle fold ---utils.map("n", "<Space>", "za") - --- Hitting ESC when inside a terminal to get into normal mode ---utils.map("t", "<Esc>", [[<C-\><C-N>]]) - --- select last change ---nnoremap gV `[v`] - ---map("n", "<esc>", function() --- notify.dismiss() --- vim.cmd.noh() ---end) - ---"nnore fast [e]dit and [s]ourcing .[v]imrc ---nnoremap <leader>ev :edit $MYVIMRC<CR> ---"fast macro ---nnoremap @ <cmd>set lazyredraw <bar> execute 'noautocmd norm! ' . v:count1 . '@' . getcharstr() <bar> set nolazyredraw<cr> ---xnoremap @ :<C-U>set lazyredraw <bar> execute "noautocmd '<,'>norm! " . v:count1 . "@" . getcharstr()<bar> set nolazyredraw<cr> - ---map("n", "<leader><CR>", ":runtime! /lua/plugins/*.lua<CR> | :runtime! /lua/user/*.lua<CR> | :luafile ~/.config/nvim/init.lua<CR>", print ("Nvim reloaded")) ---map("n", "<leader><CR>", ":lua require('init').unload_lua_namespace()<CR>", print ("Nvim reloaded")) ---map("n", "<leader><CR>", "<cmd>luafile ~/.config/nvim/init.lua<CR>", vim.notify("Nvim configuration reloaded!", vim.log.levels.INFO)) ---map("n", "<leader><CR>", "<cmd>luafile ~/.config/nvim/init.lua<CR> | :lua require("notify")("completion off")") ---map("n", "<leader><CR>", "<cmd>luafile ~/.config/nvim/init.lua<CR>", vim.api.nvim_echo({{'first chunk and ', 'None'}, {'second chunk to echo', 'None'}}, false, {})) ---map("n", "<leader><CR>", "<cmd>luafile ~/.config/nvim/init.lua<CR>", print ("Nvim config loading...")) ---map("n", "<leader><CR>", "<cmd>luafile ~/.config/nvim/init.lua<CR> | :echo ('hello') | <C-l><CR>") -map("n", "<leader><CR>", "<cmd>luafile ~/.config/nvim/init.lua<CR> | :echom ('Nvim config loading...') | :sl! | echo ('')<CR>") -map("n", "<leader>u", ":echo '' | redraw<CR>") --clear messages ---map("n", "<leader><CR>", "<cmd>luafile ~/.config/nvim/init.lua<CR>") ---vim.api.nvim_set_keymap("n", "<leader><CR>", "<cmd>lua ReloadConfig()<CR>", { noremap = true, silent = false }) - -map("n", "<Leader>tc", ":lua require('user.utils').toggle_completion()<CR>") --- vim.notify("Nvim configuration reloaded!", vim.log.levels.INFO) - ---vim.api.nvim_set_keymap('n', '<Leader>qr', '<cmd>:lua require("plugins.telescope").reload()<CR>', { noremap = true, silent = true }) - ---Easier split navigations, just ctrl-j instead of ctrl-w then j -map("n", "<C-J>", "<C-W><C-J>") -map("n", "<C-K>", "<C-W><C-K>") -map("n", "<C-L>", "<C-W><C-L>") -map("n", "<C-H>", "<C-W><C-H>") - --- Combine buffers list with buffer name -map("n", "<Leader>b", ":buffers<CR>:buffer<Space>") ---map("n", "<leader>b", ":ls<cr>:b<space>") - --- Map buffer next, prev and delete to <leader+(n/p/d)> -map("n", "<leader>n", ":bn<cr>") -map("n", "<leader>p", ":bp<cr>") -map("n", "<leader>d", ":bd<cr>") - --- Disable default completion. -map('i', '<C-n>', '<Nop>') -map('i', '<C-p>', '<Nop>') - --- Set alt + j/k to switch lines of texts or simply move them -map("n", "<A-k>", ':let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>') -map("n", "<A-j>", ':let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>') - -map("i", "<C-l>", "<Del>") - -map("n", "<leader><C-l>", "<Cmd>!clear<CR>") - -map("n", "<leader>y", ":BufferPick<CR>") - -vim.cmd([[ - inoremap <A-h> <left> - inoremap <A-j> <down> - inoremap <A-k> <up> - inoremap <A-l> <right> -]]) - -vim.cmd([[ - cnoremap <A-h> <left> - cnoremap <A-j> <down> - cnoremap <A-k> <up> - cnoremap <A-l> <right> -]]) - ---vim.cmd([[ --- cnoremap <C-A> <Home> --- cnoremap <C-F> <Right> --- cnoremap <C-B> <Left> --- cnoremap <C-E> <End> ---]]) - -vim.cmd([[ - snoremap <A-h> <left> - snoremap <A-j> <down> - snoremap <A-k> <up> - snoremap <A-l> <right> -]]) - --- move block easily -map("n", "<", "<<", term_opts) -map("n", ">", ">>", term_opts) -map("x", "<", "<gv", term_opts) -map("x", ">", ">gv", term_opts) - --- Resize Panes -map("n", "<Leader>+", ":resize +5<CR>") -map("n", "<Leader>-", ":resize -5<CR>") -map("n", "<Leader><", ":vertical resize +5<CR>") -map("n", "<Leader>>", ":vertical resize -5<CR>") -map("n", "<Leader>=", "<C-w>=") - --- New tab -map("n", "<C-T>e", ":tabedit") - --- create tab like window -map("n", "<C-T>h", ":tabprevious<CR>") -map("n", "<C-T>l", ":tabnext<CR>") -map("n", "<C-T>n", ":tabnew<CR>") - --- Vim TABs -map("n", "<leader>1", "1gt<CR>") -map("n", "<leader>2", "2gt<CR>") -map("n", "<leader>3", "3gt<CR>") -map("n", "<leader>4", "4gt<CR>") -map("n", "<leader>5", "5gt<CR>") -map("n", "<leader>6", "6gt<CR>") -map("n", "<leader>7", "7gt<CR>") -map("n", "<leader>8", "8gt<CR>") -map("n", "<leader>9", "9gt<CR>") -map("n", "<leader>0", "10gt<CR>") - --- Split window -map("n", "<leader>h", ":split<CR>") -map("n", "<leader>v", ":vsplit<CR>") -map("n", "<leader>c", "<C-w>c") - --- Toggle set number -map("n", "<leader>$", ":NumbersToggle<CR>") -map("n", "<leader>%", ":NumbersOnOff<CR>") - --- Change mode to executable -map("n", "<leader>x", ":!chmod +x %<CR>") - --- Paste without replace clipboard -map("v", "p", '"_dP') - --- Paste end of line ---map("n", ",", "$p") ---vim.cmd([[ --- nmap , $p ---]]) - --- Select entire buffer ---map("v", "<aa>", "gg<S-v>G") - --- Delete without changing the registers ---map('n', 'x', '"_x') - --- Select all text in current buffer ---map('n', '<leader>a', ':keepjumps normal! ggVG<cr>') - --- Swap two pieces of text, use x to cut in visual mode, then use Ctrl-x in --- visual mode to select text to swap with -map("v", "<C-X>", "<Esc>`.``gvP``P") - --- Keep Visual mode selection when indenting text ---utils.map("x", ">", ">gv") ---utils.map("x", "<", "<gv") - --- Make visual pasting a word to not update the unnamed register --- Thus, allowing us to repeatedly paste the word. {"_ : black-hole register} ---utils.map("v", "p", [["_dP]]) - --- Whole-word search ---utils.map("n", "<leader>/", ":/\\<\\><Left><Left>", { silent = false }) - --- EasyAlign keybindings --- 'vipga' starts interactive EasyAlign in visual mode --- 'gaip' starts interactive EasyAlign for text/motion object ---utils.map({ "n", "x" }, "ga", "<Plug>(EasyAlign)") ---utils.map({ "n", "x" }, "<leader>ga", "<Plug>(LiveEasyAlign)") - --- Set a mark when moving more than 5 lines upwards/downards --- this will populate the jumplist enabling us to jump back with Ctrl-O ---utils.map("n", "k", [[(v:count > 5 ? "m'" . v:count : "") . 'k']], { expr = true }) ---utils.map("n", "j", [[(v:count > 5 ? "m'" . v:count : "") . 'j']], { expr = true }) - --- Zoom toggle a buffer in a new tab ---utils.map("n", "<leader>z", function() --- require("tt.helper").zoomToggleNewTab() ---end, { desc = "Zoom toggle a buffer in a new tab" }) - --- Hitting ESC when inside a terminal to get into normal mode ---utils.map("t", "<Esc>", [[<C-\><C-N>]]) - --- markdown-preview -map("n", "<leader>md", "<Plug>MarkdownPreviewToggle") - - --- Search and replace -map("v", "<leader>sr", 'y:%s/<C-r><C-r>"//g<Left><Left>c') ---vnoremap ; :call Get_visual_selection()<cr> --- ---function! Get_visual_selection() --- " Why is this not a built-in Vim script function?! --- let [lnum1, col1] = getpos("'<")[1:2] --- let [lnum2, col2] = getpos("'>")[1:2] --- let lines = getline(lnum1, lnum2) --- let lines[-1] = lines[-1][: col2 - (&selection == 'inclusive' ? 1 : 2)] --- let lines[0] = lines[0][col1 - 1:] --- let selection = join(lines,'\n') --- let change = input('Change the selection with: ') --- execute ":%s/".selection."/".change."/g" ---endfunction -vim.cmd([[ -let s:hidden_all = 0 -function! ToggleHiddenAll() - if s:hidden_all == 0 - let s:hidden_all = 1 - set noshowmode - set noruler - set laststatus=0 - set noshowcmd - else - let s:hidden_all = 0 - set showmode - set ruler - set laststatus=2 - set showcmd - endif -endfunction -nnoremap <S-h> :call ToggleHiddenAll()<CR> -]]) - -vim.cmd([[ - map <leader>s :up \| saveas! %:p:r-<C-R>=strftime("%y.%m.%d-%H:%M")<CR>-bak.<C-R>=expand("%:e")<CR> \| 3sleep \| e #<CR> -]]) - --- Execute this file ---map("n", "<leader><leader>x", ":call scripts#save_and_exec()<CR>", print("save & exec")) -vim.cmd([[ - " Execute this file - nnoremap <leader><leader>x :call scripts#save_and_exec()<CR>\|:echom "save & exec . . ."<CR> - -]]) - --------------- FZF -------------- -map("n", "<leader>fz", "<cmd>lua require('fzf-lua').files()<CR>") - --------------- Telescope -------------- ---Telescope find_files cwd=.. -map("n", "<leader>fc", "<cmd>lua require('telescope.builtin').commands()<cr>") -map("n", "<leader>cf", "<cmd>Telescope changed_files<cr>") -map("n", "<leader>fk", "<cmd>lua require('telescope.builtin').keymaps()<cr>") -map("n", "<leader>fh", "<cmd>lua require('telescope.builtin').help_tags()<cr>") ---map( --- "n", --- "<leader>ft", --- "<cmd>lua require('telescope.builtin').builtin(require('telescope.themes').get_dropdown({}))<cr>") - --- maps.n["<leader>fF"] = { --- function() require("telescope.builtin").find_files { hidden = true, no_ignore = true } end, --- desc = "Search all files", --- <cmd>Telescope find_files hidden=true<cr> ---map("n", "<leader>fh", "<cme>lua require('telecsope.builtin').file_files hidden=true<cr>") -map("n", "<leader>fF", function() require("telescope.builtin").find_files { hidden = true, no_ignore = true } end) ---map("n", "<leader>fe", ":lua require('telescope.builtin').file_browser({cwd = '.'})<CR>") -map("n", "<leader>fg", "<cmd>lua require('telescope.builtin').live_grep()<cr>") -map("n", "<leader>fb", "<cmd>lua require('telescope.builtin').current_buffer_fuzzy_find()<cr>") -map("n", "<leader>fd", "<cmd>lua require('telescope.builtin').diagnostics()<cr>") -map("n", "<leader>fp", "<cmd>Telescope pickers<cr>") - --- find notes -map("n", "<leader>fn", [[<Cmd>lua require'plugins.telescope'.find_notes()<CR>]]) --- search notes -map("n", "<leader>fgn", [[<Cmd>lua require'plugins.telescope'.grep_notes()<CR>]]) --- Find files in config dirs -map("n", "<leader>f.", [[<Cmd>lua require'plugins.telescope'.find_configs()<CR>]]) ---map("n", "<leader>fz", ":FZF<CR>") ---map("t", [[<Esc><Esc>]], [[<C-\><C-N>]]) ---map("n", "ff", ":NvimTreeToggle<CR>", {}) -map("n", "<leader>f", ":NvimTreeToggle<CR>", {}) --- This <Esc><Esc> avoids crashing fzf menu running in TERMINAL MODE (:q if you do) --- Find files in config dirs ---key_map("n", "<leader>e", ":lua require('plugins.telescope').find_configs()<CR>", opts) ---map("n", "<leader>f.", "<cmd>lua require('plugins.telescope').find_configs({})<cr>") ---map("n", "<leader>ft", "<cmd>lua require('plugins.telescope').file_explorer({})<cr>") ---map("n", "<leader>fd", "<cmd>lua require('plugins.telescope').find_notes({})<cr>") -map("n", "<leader>fm", "<cmd>lua require('telescope').extensions.media_files.media_files({})<cr>") --- registers picker -map("n", "<leader>r", "<cmd>lua require('telescope.builtin').registers({})<CR>") --- find files including gitignored ---keymap( --- "n", --- "<leader>fg", --- "<cmd>lua require('telescope.builtin').find_files({find_command={'fd','--no-ignore-vcs'}})<CR>") --- open available commands & run it ---map("n", "<leader>fc", "<cmd>lua require('telescope.builtin').commands({results_title='Commands Results'})<CR>") - --------------- Autopairs -------------- -Toggle_autopairs = function() - local ok, autopairs = pcall(require, "nvim-autopairs") - if ok then - if autopairs.state.disabled then - autopairs.enable() - print("autopairs on") - else - autopairs.disable() - print("autopairs off") - end - else - print("autopairs not available") - end -end -map("n", "<leader>ww", ":lua Toggle_autopairs()<CR>", term_opts) - --------------- Functions -------------- --- Toggle transparency -vim.cmd([[ - let t:is_transparent = 0 - function! Toggle_transparent_background() - if t:is_transparent == 0 - hi Normal guibg=#111111 ctermbg=black - let t:is_transparent = 1 - else - hi Normal guibg=NONE ctermbg=NONE - let t:is_transparent = 0 - endif - endfunction - nnoremap <leader>tb :call Toggle_transparent_background()<CR> -]]) ---keymap('n', '<leader>tb', ':Toggle_transparent_background<CR>') - --- Toggle zoom -vim.cmd([[ - function! s:ZoomToggle() abort - if exists('t:zoomed') && t:zoomed - execute t:zoom_winrestcmd - let t:zoomed = 0 - else - let t:zoom_winrestcmd = winrestcmd() - resize - vertical resize - let t:zoomed = 1 - endif - endfunction - command! ZoomToggle call s:ZoomToggle() - ]]) -map("n", "<leader>z", ":ZoomToggle<CR>") --- "Zoom" a split window into a tab and/or close it ---keymap('n', '<Leader>,', ':tabnew %<CR>') ---keymap('n', '<Leader>.', ':tabclose<CR>') - --- Open last closed buffer -vim.cmd([[ - function! OpenLastClosed() - let last_buf = bufname('#') - if empty(last_buf) - echo "No recently closed buffer found" - return - endif - let result = input("Open ". last_buf . " in (n)ormal (v)split, (t)ab or (s)plit ? (n/v/t/s) : ") - if empty(result) || (result !=# 'v' && result !=# 't' && result !=# 's' && result !=# 'n') - return - endif - if result ==# 't' - execute 'tabnew' - elseif result ==# 'v' - execute "vsplit" - elseif result ==# 's' - execute "split" - endif - execute 'b ' . last_buf - endfunction - ]]) -map("n", "<C-t>", ":call OpenLastClosed() <CR>") - --- Tabularize -vim.cmd([[ - vnoremap <expr> <Leader>mm ':Tabularize /^\s*\S.*\zs' . split(&commentstring, '%s')[0] . "<CR>" - nnoremap <expr> <Leader>mm ':Tabularize /^\s*\S.*\zs' . split(&commentstring, '%s')[0] . "<CR>" - "nnoremap <leader>i mc40A <esc>080lDgelD`cP - "vnoremap <leader>ii mc0f-20i<Space><Esc>`cdt=j -]]) - -vim.cmd([[ - " Start interactive EasyAlign in visual mode (e.g. vipga) - xmap ga <Plug>(EasyAlign) - " Start interactive EasyAlign for a motion/text object (e.g. gaip) - nmap ga <Plug>(EasyAlign) - if !exists('g:easy_align_delimiters') - let g:easy_align_delimiters = {} - endif - let g:easy_align_delimiters['--'] = { 'pattern': '--', 'ignore_groups': ['String'] } - nnoremap <F1> 21A <Esc>d21\| - imap <F1> <Esc><F1>a -]]) ---:'<,'>EasyAlign /--/ ---EasyAlign /--/ ---:'<,'>Tabularize /-- - ---map("n", "<leader>,", ":hide<CR>") ---map("n", "<leader>.", ":unhide<CR>") - ---" Clean trailing whitespace ---nnoremap <leader>ww mz:%s/\s\+$//<cr>:let @/=''<cr>`z - --- Save with root permission (not working for now) ---vim.api.nvim_create_user_command('W', 'w !sudo tee > /dev/null %', {}) - --- Copy and Paste with <C-c> and <C-v> ---keymap('n', '<expr> p', (v:register =--= '"' && &clipboard =~ 'unnamed' ? '"*p' : '"' . v:register . 'p')'') --- Use command :Vb for Visual Block or <C-q> since <C-v> is used for Copy ---command! Vb normal! <C-v> --- Map <w!!> to save/edit a root permission/read-only file, only works in --- traditional vim and not neovim ---keymap('c', 'w!! %!sudo tee > /dev/null') ---" Copying text to the system clipboard. ---" ---" For some reason Vim no longer wants to talk to the OS X pasteboard through "*. ---" Computers are bullshit. ---function! g:FuckingCopyTheTextPlease() --- let old_z = @z --- normal! gv"zy --- call system('pbcopy', @z) --- let @z = old_z ---endfunction ---noremap <leader>p :silent! set paste<CR>"*p:set nopaste<CR> ---" noremap <leader>p mz:r!pbpaste<cr>`z ---vnoremap <leader>y :<c-u>call g:FuckingCopyTheTextPlease()<cr> - ---" Indent/dedent/autoindent what you just pasted. ---nnoremap <lt>> V`]< ---nnoremap ><lt> V`]> ---nnoremap =- V`]= - ---" Keep the cursor in place while joining lines ---nnoremap J mzJ`z - ---" Toggle [i]nvisible characters ---nnoremap <leader>i :set list!<cr> --- ---" Unfuck my screen ---nnoremap U :syntax sync fromstart<cr>:redraw!<cr> - ---" Ranger ---nnoremap <leader>r :silent !ranger %:h<cr>:redraw!<cr> ---nnoremap <leader>R :silent !ranger<cr>:redraw!<cr> --- ---" Insert Mode Completion {{{ --- ---inoremap <c-f> <c-x><c-f> ---inoremap <c-]> <c-x><c-]> ---inoremap <c-l> <c-x><c-l> ----- Open the current file in the default program (on Mac this should just be just `open`) ---keymap('n', '<leader>x', ':!xdg-open %<cr><cr>') - -map("n", "<leader>ff", "<cmd>lua require('telescope.builtin').find_files()<cr>") ---keymap("n", "<leader>ff", "<cmd>lua require('telescope.builtin').find_files cwd=..()<cr>") ---keymap('n', '<leader>k', ':nohlsearch<CR>') --- ---"This unsets the "last search pattern" register by hitting return -vim.cmd([[ - nnoremap <silent> <CR> :noh<CR><CR> -]]) - ---keymap('n', '<leader>Q', ':bufdo bdelete<CR>') --- ----- Allow gf to open non-existent files ---keymap('', 'gf', ':edit <cfile><CR>') --- ----- Reselect visual selection after indenting ---keymap('v', '<', '<gv') ---keymap('v', '>', '>gv') --- ----- Maintain the cursor position when yanking a visual selection ----- http://ddrscott.github.io/blog/2016/yank-without-jank/ ---keymap('v', 'y', 'myy`y') ---keymap('v', 'Y', 'myY`y') ---keymap("n", "<C-q>", ":q<cr>") ---keymap("n", "<C-M-q>", ":qa!<cr>") - ---" Sort lines ---nnoremap <leader>s vip:!sort<cr> ---vnoremap <leader>s :!sort<cr> --- ---" Tabs ---nnoremap <leader>( :tabprev<cr> ---nnoremap <leader>) :tabnext<cr> --- ---" Wrap ---nnoremap <leader>W :set wrap!<cr> - ---set foldlevelstart=0 --- ---" Space to toggle folds. ---nnoremap <Space> za ---vnoremap <Space> za ---" Make zO recursively open whatever fold we're in, even if it's partially open. ---nnoremap zO zczO - --- Packer ---maps.n["<leader>pc"] = { "<cmd>PackerCompile<cr>", desc = "Packer Compile" } ---maps.n["<leader>pi"] = { "<cmd>PackerInstall<cr>", desc = "Packer Install" } ---maps.n["<leader>ps"] = { "<cmd>PackerSync<cr>", desc = "Packer Sync" } ---maps.n["<leader>pS"] = { "<cmd>PackerStatus<cr>", desc = "Packer Status" } ---maps.n["<leader>pu"] = { "<cmd>PackerUpdate<cr>", desc = "Packer Update" } --- NeoTree ---if is_available "neo-tree.nvim" then --- keymaps.n["<leader>e"] = { "<cmd>Neotree toggle<cr>", desc = "Toggle Explorer" } --- keymaps.n["<leader>o"] = { "<cmd>Neotree focus<cr>", desc = "Focus Explorer" } ---end --- Alpha ---if is_available "alpha-nvim" then maps.n["<leader>d"] = { "<cmd>Alpha<cr>", desc = "Alpha Dashboard" } end - --- Package Manager --- TODO: v2 rework these key bindings to be more general ---if is_available "mason.nvim" then maps.n["<leader>lI"] = { "<cmd>Mason<cr>", desc = "LSP installer" } end --- Telescope ---if is_available "telescope.nvim" then --- maps.n["<leader>fw"] = { function() require("telescope.builtin").live_grep() end, desc = "Search words" } --- maps.n["<leader>fW"] = { --- function() --- require("telescope.builtin").live_grep { --- additional_args = function(args) return vim.list_extend(args, { "--hidden", "--no-ignore" }) end, --- } --- end, --- desc = "Search words in all files", --- } --- maps.n["<leader>gt"] = { function() require("telescope.builtin").git_status() end, desc = "Git status" } --- maps.n["<leader>gb"] = { function() require("telescope.builtin").git_branches() end, desc = "Git branches" } --- maps.n["<leader>gc"] = { function() require("telescope.builtin").git_commits() end, desc = "Git commits" } --- maps.n["<leader>ff"] = { function() require("telescope.builtin").find_files() end, desc = "Search files" } --- maps.n["<leader>fF"] = { --- function() require("telescope.builtin").find_files { hidden = true, no_ignore = true } end, --- desc = "Search all files", --- } --- maps.n["<leader>fb"] = { function() require("telescope.builtin").buffers() end, desc = "Search buffers" } --- maps.n["<leader>fh"] = { function() require("telescope.builtin").help_tags() end, desc = "Search help" } --- maps.n["<leader>fm"] = { function() require("telescope.builtin").marks() end, desc = "Search marks" } --- maps.n["<leader>fo"] = { function() require("telescope.builtin").oldfiles() end, desc = "Search history" } --- maps.n["<leader>fc"] = --- { function() require("telescope.builtin").grep_string() end, desc = "Search for word under cursor" } --- maps.n["<leader>sb"] = { function() require("telescope.builtin").git_branches() end, desc = "Git branches" } --- maps.n["<leader>sh"] = { function() require("telescope.builtin").help_tags() end, desc = "Search help" } --- maps.n["<leader>sm"] = { function() require("telescope.builtin").man_pages() end, desc = "Search man" } --- maps.n["<leader>sn"] = --- { function() require("telescope").extensions.notify.notify() end, desc = "Search notifications" } --- maps.n["<leader>sr"] = { function() require("telescope.builtin").registers() end, desc = "Search registers" } --- maps.n["<leader>sk"] = { function() require("telescope.builtin").keymaps() end, desc = "Search keymaps" } --- maps.n["<leader>sc"] = { function() require("telescope.builtin").commands() end, desc = "Search commands" } --- maps.n["<leader>ls"] = { --- function() --- local aerial_avail, _ = pcall(require, "aerial") --- if aerial_avail then --- require("telescope").extensions.aerial.aerial() --- else --- require("telescope.builtin").lsp_document_symbols() --- end --- end, --- desc = "Search symbols", --- } --- maps.n["<leader>lR"] = { function() require("telescope.builtin").lsp_references() end, desc = "Search references" } ---end --- ----- Terminal ---if is_available "toggleterm.nvim" then --- local toggle_term_cmd = astronvim.toggle_term_cmd --- maps.n["<C-\\>"] = { "<cmd>ToggleTerm<cr>", desc = "Toggle terminal" } --- maps.n["<leader>gg"] = { function() toggle_term_cmd "lazygit" end, desc = "ToggleTerm lazygit" } --- maps.n["<leader>tn"] = { function() toggle_term_cmd "node" end, desc = "ToggleTerm node" } --- maps.n["<leader>tu"] = { function() toggle_term_cmd "ncdu" end, desc = "ToggleTerm NCDU" } --- maps.n["<leader>tt"] = { function() toggle_term_cmd "htop" end, desc = "ToggleTerm htop" } --- maps.n["<leader>tp"] = { function() toggle_term_cmd "python" end, desc = "ToggleTerm python" } --- maps.n["<leader>tl"] = { function() toggle_term_cmd "lazygit" end, desc = "ToggleTerm lazygit" } --- maps.n["<leader>tf"] = { "<cmd>ToggleTerm direction=float<cr>", desc = "ToggleTerm float" } --- maps.n["<leader>th"] = { "<cmd>ToggleTerm size=10 direction=horizontal<cr>", desc = "ToggleTerm horizontal split" } --- maps.n["<leader>tv"] = { "<cmd>ToggleTerm size=80 direction=vertical<cr>", desc = "ToggleTerm vertical split" } ---end --- ----- Stay in indent mode ---maps.v["<"] = { "<gv", desc = "unindent line" } ---maps.v[">"] = { ">gv", desc = "indent line" } --- ----- Improved Terminal Mappings ---maps.t["<esc>"] = { "<C-\\><C-n>", desc = "Terminal normal mode" } ---maps.t["jk"] = { "<C-\\><C-n>", desc = "Terminal normal mode" } ---maps.t["<C-h>"] = { "<c-\\><c-n><c-w>h", desc = "Terminal left window navigation" } ---maps.t["<C-j>"] = { "<c-\\><c-n><c-w>j", desc = "Terminal down window navigation" } ---maps.t["<C-k>"] = { "<c-\\><c-n><c-w>k", desc = "Terminal up window navigation" } ---maps.t["<C-l>"] = { "<c-\\><c-n><c-w>l", desc = "Terminal right window naviation" } --- LSP Installer ---if is_available "mason-lspconfig.nvim" then maps.n["<leader>li"] = { "<cmd>LspInfo<cr>", desc = "LSP information" } end - --- ALE: toggle _ALE activity ---keymap('n', '<leader>a',[[:ALEToggle<CR>]]) - ---keymap('n', '<Leader>cd', ':call fzf#run({'source': 'fd -t d -H . ~', 'sink': 'cd'})<CR>') --- ":lua require('neogen').generate()<CR>") ---keymap("n", "<leader>ww", ":set wrap!<CR>") --- diff --git a/config/nvim/lua/user/mods.lua b/config/nvim/lua/user/mods.lua deleted file mode 100644 index ec77173..0000000 --- a/config/nvim/lua/user/mods.lua +++ /dev/null @@ -1,138 +0,0 @@ ---vim.cmd([[ --- function RandomColorScheme() --- let mycolors = split(globpath(&rtp,"**/colors/*.vim"),"\n") --- exe 'so ' . mycolors[localtime() % len(mycolors)] --- unlet mycolors --- endfunction --- --- call RandomColorScheme() --- --- :command NewColor call RandomColorScheme() ---]]) - ---vim.cmd([[ --- function RandomColorSchemeMyPicks() --- let mypicks = ["pyte", "fokus", "github", "peachpuff", "morning", "simple256", "xcode", "gruvbox"] --- let mypick = mypicks[localtime() % len(mypicks)] --- echom mypick --- execute 'colo' mypick --- endfunction --- --- command NewColor call RandomColorSchemeMyPicks() --- --- let s:use_gui = exists('g:neovide') || has('gui_running') || (has('termguicolors') && &termguicolors) --- if (s:use_gui) --- call RandomColorSchemeMyPicks() --- endif ---]]) - -vim.cmd([[ - let g:fzf_history_dir = '~/.local/share/fzf-history' - map <leader>z :FZF<CR> - map <leader>a :Files<CR> - map <leader>l :Lines<CR> - map <leader>L :BLines<CR> - map <leader>B :Buffers<CR> - map <leader>h :History:<CR> - nnoremap <leader>g :Rg<CR> - "nnoremap <leader>t :Tags<CR> - nnoremap <leader>m :Marks<CR> - " This is the default extra key bindings - let g:fzf_action = { - \ 'ctrl-t': 'tab split', - \ 'ctrl-x': 'split', - \ 'ctrl-y': 'vsplit' } - let g:fzf_tags_command = 'ctags -R' - " Border color - let g:fzf_layout = {'up':'~90%', 'window': { 'width': 0.8, 'height': 0.8,'yoffset':0.5,'xoffset': 0.5, 'highlight': 'Todo', 'border': 'sharp' } } - let $FZF_DEFAULT_OPTS = '--layout=reverse --info=inline' - let $FZF_DEFAULT_COMMAND="rg --files --hidden" - " Customize fzf colors to match your color scheme - let g:fzf_colors = - \ { 'fg': ['fg', 'Normal'], - \ 'bg': ['bg', 'Normal'], - \ 'hl': ['fg', 'Comment'], - \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], - \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], - \ 'hl+': ['fg', 'Statement'], - \ 'info': ['fg', 'PreProc'], - \ 'border': ['fg', 'Ignore'], - \ 'prompt': ['fg', 'Conditional'], - \ 'pointer': ['fg', 'Exception'], - \ 'marker': ['fg', 'Keyword'], - \ 'spinner': ['fg', 'Label'], - \ 'header': ['fg', 'Comment'] } - " Get Files - command! -bang -nargs=? -complete=dir Files - \ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline']}), <bang>0) - " Get text in files with Rg - command! -bang -nargs=* Rg - \ call fzf#vim#grep( - \ 'rg --column --line-number --no-heading --color=always --smart-case '.shellescape(<q-args>), 1, - \ fzf#vim#with_preview(), <bang>0) - " Ripgrep advanced - function! RipgrepFzf(query, fullscreen) - let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case %s || true' - let initial_command = printf(command_fmt, shellescape(a:query)) - let reload_command = printf(command_fmt, '{q}') - let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]} - call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen) - endfunction - command! -nargs=* -bang RG call RipgrepFzf(<q-args>, <bang>0) - " Git grep - command! -bang -nargs=* GGrep - \ call fzf#vim#grep( - \ 'git grep --line-number '.shellescape(<q-args>), 0, - \ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0) - command! -bang FM call fzf#run(fzf#wrap({'source': 'cat ~/.fzf-marks | sed "s/.*: \(.*\)$/\1/" | sed "s#~#${HOME}#"', 'sink': 'lcd'}, <bang>0)) -]]) - -vim.cmd([[ - " Enable mouse scrollback - set mouse=a - tnoremap <Esc> <C-\><C-n> - tnoremap <c-b> <c-\><c-n> - function! ClearTerminal() - set scrollback=1 - let &g:scrollback=1 - echo &scrollback - call feedkeys("\i") - call feedkeys("clear\<CR>") - call feedkeys("\<C-\>\<C-n>") - call feedkeys("\i") - sleep 100m - let &scrollback=s:scroll_value - endfunction -]]) - -vim.cmd([[ - " :Rename {newname} - function! RenameFile() - let old_name = expand('%') - let new_name = input('New file name: ', expand('%'), 'file') - if new_name != '' && new_name != old_name - exec ':saveas ' . new_name - exec ':silent !rm ' . old_name - redraw! - endif - endfunction - map <leader>re :call RenameFile()<cr> -]]) - ---vim.cmd([[ --- " Markdown Settings --- autocmd BufNewFile,BufReadPost *.md set filetype=markdown --- let g:markdown_fenced_languages = ['html', 'python', 'bash=sh', 'sql', 'pug'] --- let g:markdown_minlines = 100 --- let g:instant_markdown_autostart = 0 ---]]) --- ---vim.cmd([[ --- " On The Fly Table mode --- function! s:isAtStartOfLine(mapping) --- let text_before_cursor = getline('.')[0 : col('.')-1] --- let mapping_pattern = '\V' . escape(a:mapping, '\') --- let comment_pattern = '\V' . escape(substitute(&l:commentstring, '%s.*$', '', ''), '\') --- return (text_before_cursor =~? '^' . ('\v(' . comment_pattern . '\v)?') . '\s*\v' . mapping_pattern . '\v$') --- endfunction ---]]) diff --git a/config/nvim/lua/user/opts.lua b/config/nvim/lua/user/opts.lua deleted file mode 100644 index 6da4234..0000000 --- a/config/nvim/lua/user/opts.lua +++ /dev/null @@ -1,237 +0,0 @@ ---[[ opts.lua ]] - -vim.cmd([[ - "filetype plugin indent on " Load indent files, to automatically do language-dependent indenting. - "autocmd BufEnter * :syntax sync fromstart - "syntax enable - let g:clipbrdDefaultReg = '+' - "set nocompatible - "autocmd FileType lua set comments=s1:---,m:--,ex:-- - nnoremap @ <cmd>execute "noautocmd norm! " . v:count1 . "@" . getcharstr()<cr> " Fast macros without lazyredraw - xnoremap @ :<C-U>execute "noautocmd '<,'>norm! " . v:count1 . "@" . getcharstr()<cr> -]]) - --- Environment ---vim.opt.shell = "zsh" -- -vim.o.shell = "/bin/zsh" -vim.scriptencoding = "utf-8" -- -vim.opt.encoding = "utf-8" -- -vim.opt.fileencoding = "utf-8" -- -vim.g.python3_host_prog = "/usr/bin/python3" -- -vim.g.loaded_python3_provider = 1 -- -vim.g.sh_noisk = 1 -- iskeyword word boundaries when editing a 'sh' file -vim.o.autochdir = true ---vim.opt.sessionoptions = "buffers,curdir,folds,help,tabpages,winsize,resize,winpos,terminal,globals" -- - --- Colors -vim.opt.termguicolors = true - --- Behaviour -vim.opt.clipboard:append({ "unnamedplus" }) -- Install xclip or this will slowdown startup -vim.opt.backspace = { "start", "eol", "indent" } -- Make backspace work as you would expect. -vim.opt.hidden = true -- Switch between buffers without having to save first. -vim.opt.splitbelow = true -- make split put the new buffer below the current buffer -vim.opt.splitright = true -- make vsplit put the new buffer on the right of the current buffer -vim.opt.scrolloff = 8 -- -vim.opt.sidescrolloff = 8 -- how many lines to scroll when using the scrollbar -vim.opt.autoread = true -- reload files if changed externally -vim.opt.display = "lastline" -- Show as much as possible of the last line. -vim.opt.inccommand = "split" -- -vim.opt.ttyfast = true -- Faster redrawing. ---vim.opt.lazyredraw = true -- Only redraw when necessary -vim.opt.keywordprg = ":help" -- :help options -vim.opt.ruler = true -- -vim.opt.errorbells = false -- -vim.opt.list = true -- Show non-printable characters. -vim.opt.showmatch = true -- -vim.opt.matchtime = 3 -- -vim.opt.showbreak = "↪ " -- -vim.opt.linebreak = true -- -vim.opt.exrc = true -- ---vim.opt.autochdir = true -- or use this to use <:e> to create a file in current directory -vim.opt.autoread = true -- if a file is changed outside of vim, automatically reload it without asking ---vim.opt.notimeout = true -- Timeout on keycodes and not mappings -vim.opt.ttimeout = true -- Makes terminal vim work sanely -vim.opt.ttimeoutlen = 10 -- ---vim.opt.timeoutlen = 100 -- time to wait for a mapped sequence to complete (in milliseconds) ---vim.cmd([[set diffopt = vertical = true]]) -- diffs are shown side-by-side not above/below - --- Indent/tab -vim.opt.breakindent = true -- -vim.opt.autoindent = true -- Indent according to previous line. -vim.opt.copyindent = true -- Copy indent from the previous line -vim.opt.smarttab = false -- -vim.opt.tabstop = 2 -- -vim.opt.expandtab = true -- Indent according to previous line. ---vim.opt.expandtab = true -- Use spaces instead of tabs. -vim.opt.softtabstop = 2 -- Tab key indents by 2 spaces. -vim.opt.shiftwidth = 2 -- >> indents by 2 spaces. -vim.opt.shiftround = true -- >> indents to next multiple of 'shiftwidth'. -vim.opt.smartindent = true -- smart indent - --- Column/statusline/Cl -vim.opt.number = true -- -vim.opt.title = true -- ---vim.opt.colorcolumn = "+1" -- -vim.opt.signcolumn = "yes:1" -- always show the sign column ---vim.opt.signcolumn = "yes:" .. vim.o.numberwidth ---vim.opt.signcolumn = "number" ---vim.opt.signcolumn = "no" -- -vim.opt.laststatus = 3 -- " Always show statusline. -vim.opt.showmode = true -- Show current mode in command-line, example: -- INSERT -- mode -vim.opt.showcmd = true -- Show the command in the status bar -vim.opt.cmdheight = 1 -- ---vim.opt.cmdheight = 0 -- -vim.opt.report = 0 -- Always report changed lines. ---local autocmd = vim.api.nvim_create_autocmd ---autocmd("bufenter", { --- pattern = "*", --- callback = function() --- if vim.bo.ft ~= "terminal" then --- vim.opt.statusline = "%!v:lua.require'ui.statusline'.run()" --- else --- vim.opt.statusline = "%#normal# " --- end --- end, ---}) ----- With vertical splits, the statusline would still show up at the ----- bottom of the split. A quick fix is to just set the statusline ----- to empty whitespace (it can't be an empty string because then ----- it'll get replaced by the default stline). ---vim.opt.stl = " " - --- Backup/undo -vim.opt.backup = false -- ---vim.opt.noswapfile = true -- ---vim.opt.undofile = true -- -vim.opt.backupskip = { "/tmp/*", "/private/tmp/*" } -- - --- Format -vim.opt.textwidth = 80 -- -vim.cmd([[let &t_Cs = "\e[4:3m"]]) -- Undercurl -vim.cmd([[let &t_Ce = "\e[4:0m"]]) -- -vim.opt.path:append({ "**" }) -- Finding files - Search down into subfolder -vim.cmd("set whichwrap+=<,>,[,],h,l") -- -vim.cmd([[set iskeyword+=-]]) -- ---vim.cmd([[set formatoptions-=cro]]) -- TODO: this doesn't seem to work -vim.opt.formatoptions = vim.opt.formatoptions - - "t" -- wrap with text width - + "c" -- wrap comments - + "r" -- insert comment after enter - - "o" -- insert comment after o/O - - "q" -- allow formatting of comments with gq - - "a" -- format paragraphs - + "n" -- recognized numbered lists - - "2" -- use indent of second line for paragraph - + "l" -- long lines are not broken - + "j" -- remove comment when joining lines -vim.opt.wrapscan = true -- " Searches wrap around end-of-file. ---vim.wo.number = true -- ---vim.opt.wrap = false -- No Wrap lines ---vim.opt.foldmethod = 'manual' -- ---vim.opt.foldmethod = "expr" -- -vim.opt.foldmethod = "manual" -vim.opt.foldlevel = 3 -vim.opt.confirm = true -vim.opt.shortmess:append("sI") ---vim.opt.shortmess = "a" ---vim.opt.shortmess = "sI" ---vim.o.shortmess = vim.o.shortmess:gsub('s', '') -vim.opt.fillchars = { - horiz = "━", - horizup = "┻", - horizdown = "┳", - vert = "┃", - vertleft = "┨", - vertright = "┣", - verthoriz = "╋", - fold = "⠀", - eob = " ", - diff = "┃", - msgsep = "‾", - foldopen = "▾", - foldsep = "│", - foldclose = "▸", -} -vim.opt.listchars = { tab = "▸ ", trail = "·" } -- ---vim.opt.fillchars:append({ eob = " " }) -- remove the ~ from end of buffer -vim.opt.modeline = true -- -vim.opt.modelines = 3 -- modelines (comments that set vim options on a per-file basis) ---vim.opt.modelineexpr = true ---vim.opt.nofoldenable = true -- turn folding off ---vim.opt.foldenable = false -- turn folding off -vim.o.showtabline = 2 - --- Highlights -vim.opt.incsearch = true -- Highlight while searching with / or ?. -vim.opt.hlsearch = true -- Keep matches highlighted. -vim.opt.ignorecase = true -- ignore case in search patterns UNLESS /C or capital in search -vim.opt.smartcase = true -- smart case -vim.opt.synmaxcol = 200 -- Only highlight the first 200 columns. -vim.opt.winblend = 30 ---vim.opt.winblend = 5 -vim.opt.wildoptions = "pum" -- ---vim.opt.pumblend = 5 -- -vim.opt.pumblend = 12 -- ---vim.opt.pumblend=15 -vim.opt.pumheight = 10 -- pop up menu height - --- Better Completion -vim.opt.complete = { ".", "w", "b", "u", "t" } -- ---vim.opt.completeopt = { "longest,menuone,preview" } -- -vim.opt.completeopt = {'menu', 'menuone', 'noselect'} ---vim.opt.completeopt = { "menuone", "noselect" } -- mostly just for cmp ---vim.opt.completeopt = { "menu", "menuone", "noselect" } -- - --- Wildmenu completion -- -vim.opt.wildmenu = true -- -vim.opt.wildmode = { "list:longest" } -- -vim.opt.wildignore:append({ ".hg", ".git", ".svn" }) -- Version control -vim.opt.wildignore:append({ "*.aux", "*.out", "*.toc" }) -- LaTeX intermediate files -vim.opt.wildignore:append({ "*.jpg", "*.bmp", "*.gif", "*.png", "*.jpeg" }) -- binary images -vim.opt.wildignore:append({ "*.o", "*.obj", "*.exe", "*.dll", "*.manifest" }) -- compiled object files -vim.opt.wildignore:append({ "*.spl" }) -- compiled spelling word lists -vim.opt.wildignore:append({ "*.sw?" }) -- Vim swap files -vim.opt.wildignore:append({ "*.DS_Store" }) -- OSX bullshit -vim.opt.wildignore:append({ "*.luac" }) -- Lua byte code -vim.opt.wildignore:append({ "migrations" }) -- Django migrations -vim.opt.wildignore:append({ "*.pyc" }) -- Python byte code -vim.opt.wildignore:append({ "*.orig" }) -- Merge resolution files -vim.opt.wildignore:append({ "*/node_modules/*" }) -- - --- Shada -vim.opt.shada = "!,'1000,f1,<1000,s100,:1000,/1000,h" - --- Sessions -vim.opt.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal" - --- Cursorline -vim.cmd([[ " Only show cursorline in the current window and in normal mode - augroup cline - au! - au WinLeave,InsertEnter * set nocursorline - au WinEnter,InsertLeave * set cursorline - augroup END -]]) -vim.opt.cursorline = true -- -vim.opt.guicursor = "i:ver100,r:hor100" -- - --- Trailing whitespace -vim.cmd([[ " Only show in insert mode - augroup trailing - au! - au InsertEnter * :set listchars-=trail:⌴ - au InsertLeave * :set listchars+=trail:⌴ - augroup END -]]) - --- Line Return -vim.cmd([[ " Return to the same line when we reopen a file - augroup line_return - au! - au BufReadPost * - \ if line("'\"") > 0 && line("'\"") <= line("$") | - \ execute 'normal! g`"zvzz' | - \ endif - augroup END -]]) diff --git a/config/nvim/lua/user/pack.lua b/config/nvim/lua/user/pack.lua deleted file mode 100644 index 061a443..0000000 --- a/config/nvim/lua/user/pack.lua +++ /dev/null @@ -1,403 +0,0 @@ -local fn = vim.fn - --- Automatically install packer -local install_path = fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" -if fn.empty(fn.glob(install_path)) > 0 then - PACKER_BOOTSTRAP = fn.system({ - "git", - "clone", - "--depth", - "1", - "https://github.com/wbthomason/packer.nvim", - install_path, - }) - print("Installing packer close and reopen Neovim...") - vim.cmd([[packadd packer.nvim]]) -end - --- Autocommand that reloads neovim whenever you save the plugins.lua file -vim.cmd([[ - augroup packer_user_config - autocmd! - autocmd BufWritePost pack.lua source <afile> | PackerSync - augroup end -]]) - --- Use a protected call so we don't error out on first use -local status_ok, packer = pcall(require, "packer") -if not status_ok then - return -end - --- Have packer use a popup window -packer.init({ - auto_reload_compiled = true, - display = { - open_fn = function() - return require("packer.util").float({ border = "rounded" }) - end, - }, -}) - --- Install your plugins here -return packer.startup(function(use) - use("wbthomason/packer.nvim") -- Have packer manage itself - - use("lewis6991/impatient.nvim") - use("nvim-lua/plenary.nvim") -- Useful lua functions used ny lots of plugins - --use("jose-elias-alvarez/null-ls.nvim") - - -- lsp - use { - "williamboman/mason.nvim", - "williamboman/mason-lspconfig.nvim", - "neovim/nvim-lspconfig", - } - require("mason").setup() - local mason_lspconfig = require("mason-lspconfig") - mason_lspconfig.setup({ - ensure_installed = { - "pylsp", - "pyright", - "clangd", - --"vim-language-server", - --"bash-language-server", - --"lua-language-server", - "sumneko_lua", - } - }) - use({ "j-hui/fidget.nvim", - config = function() - require("fidget").setup() - end - }) - --use({ "folke/trouble.nvim", - -- config = function() - -- require("trouble").setup({ position = "right", }) - -- end - --}) - --use({ - --"folke/trouble.nvim", - --requires = "kyazdani42/nvim-web-devicons", - --config = function() - -- require("trouble").setup({ - -- --postion = "top", - -- postion = "right", - -- -- your configuration comes here - -- -- or leave it empty to use the default settings - -- -- refer to the configuration section below - -- }) - --end, - --}) - - --use({ - -- "https://git.sr.ht/~whynothugo/lsp_lines.nvim", -- See also: https://github.com/Maan2003/lsp_lines.nvim - -- config = function() - -- require("lsp_lines").setup() - - -- -- disable virtual_text since it's redundant due to lsp_lines. - -- vim.diagnostic.config({ - -- virtual_text = false, - -- }) - -- end, - --}) - use { "simrat39/symbols-outline.nvim", - config = function() - require("symbols-outline").setup({ - auto_close = true, - }) - end - } - use "antoinemadec/FixCursorHold.nvim" - use { "kosayoda/nvim-lightbulb", requires = { "antoinemadec/FixCursorHold.nvim" } } - --use("folke/lsp-colors.nvim") - use "mfussenegger/nvim-lint" - use "weilbith/nvim-code-action-menu" - use "simrat39/rust-tools.nvim" - use { "saecki/crates.nvim", - requires = { "nvim-lua/plenary.nvim" }, - config = function() - require("crates").setup() - end, - } - --use "lvimuser/lsp-inlayhints.nvim" -- rust-tools already provides this feature, but gopls doesn't - - -- null-ls - --use({ "jose-elias-alvarez/null-ls.nvim", - -- config = function() - -- require("null-ls").setup({ - -- sources = { - -- require("null-ls").builtins.diagnostics.checkmake, -- https://github.com/mrtazz/checkmake - -- } - -- }) - -- end - --}) - use({ - "jose-elias-alvarez/null-ls.nvim", - config = function() - require("null-ls").setup() - end, - requires = { "nvim-lua/plenary.nvim" }, - }) - use({ - "SmiteshP/nvim-navic", - requires = "neovim/nvim-lspconfig", - }) - - -- nvimlsp plugins - --use({ - -- "williamboman/mason.nvim", - -- config = function() - -- require("mason").setup() - -- require("mason-lspconfig").setup({ - -- ensure_installed = { "sumneko_lua", "clangd", "rust_analyzer" }, - -- }) - -- end, - --}) - --use("williamboman/mason.nvim") - --use("williamboman/mason-lspconfig.nvim") - --use("neovim/nvim-lspconfig") - --use("williamboman/nvim-lsp-installer") - --use("glepnir/lspsaga.nvim") - --use("nvim-lua/lsp-status.nvim") - --use({ - -- "glepnir/lspsaga.nvim", - -- branch = "main", - -- config = function() - -- local saga = require("lspsaga") - - -- saga.init_lsp_saga({ - -- -- your configuration - -- }) - -- end, - --}) - -- use("nvim-lua/popup.nvim") - --use("SmiteshP/nvim-gps") - -- autocomplete plugins - use("hrsh7th/nvim-cmp") - use("hrsh7th/cmp-nvim-lsp") - use("hrsh7th/cmp-buffer") - use("hrsh7th/cmp-path") - use("hrsh7th/cmp-cmdline") - use("petertriho/cmp-git") - use("tamago324/cmp-zsh") - use("f3fora/cmp-spell") - use("hrsh7th/cmp-calc") - use("saadparwaiz1/cmp_luasnip") - use("hrsh7th/cmp-nvim-lsp-signature-help") - use("onsails/lspkind-nvim") - - -- snippets - --use("L3MON4D3/LuaSnip") --snippet engine - use("L3MON4D3/LuaSnip") - use("rafamadriz/friendly-snippets") -- a bunch of snippets to use - --use("github/copilot.vim") - --use({ - --"zbirenbaum/copilot.lua", - --event = { "VimEnter" }, - --config = function() - --vim.defer_fn(function() - --require("plugins.copilot") - --end, 100) - --end, - --}) - --use({ - --"zbirenbaum/copilot-cmp", - --module = "copilot_cmp", - --}) - - -- treesitter plugins - use({ "nvim-treesitter/nvim-treesitter", run = ":TSUpdate" }) --folding, jumping, refactoring... - use("nvim-treesitter/nvim-treesitter-refactor") - use("nvim-treesitter/nvim-treesitter-context") - --use({ - -- "danymat/neogen", - -- config = function() - -- require("neogen").setup({ snippet_engine = "luasnip" }) - -- end, - -- requires = "nvim-treesitter/nvim-treesitter", - --}) - --use({ "junegunn/fzf", run = ":call fzf#install()" }) - use('ibhagwan/fzf-lua') - -- telescope plugins - use("nvim-telescope/telescope.nvim") - use({ "nvim-telescope/telescope-fzf-native.nvim", run = "make" }) - use("tami5/sqlite.lua") - --use("nvim-telescope/telescope-frecency.nvim") - use("nvim-telescope/telescope-ui-select.nvim") - use("nvim-telescope/telescope-media-files.nvim") - use("nvim-telescope/telescope-file-browser.nvim") - -- search emoji and other symbols - use({ "nvim-telescope/telescope-symbols.nvim", after = "telescope.nvim" }) - use("axkirillov/telescope-changed-files") - --use({ - --"princejoogie/dir-telescope.nvim", - --requires = {"nvim-telescope/telescope.nvim"}, - --config = function() - -- require("dir-telescope").setup({ - -- hidden = true, - -- respect_gitignore = true, - -- }) - --end, - --}) - use("airblade/vim-rooter") - -- statusline plugins - --use("nvim-lualine/lualine.nvim") - --use({ - -- "nvim-lualine/lualine.nvim", - -- requires = { "kyazdani42/nvim-web-devicons", opt = true }, - --}) - --use({ - -- "folke/trouble.nvim", - -- requires = "kyazdani42/nvim-web-devicons", - -- config = function() - -- require("trouble").setup({ - -- -- your configuration comes here - -- -- or leave it empty to use the default settings - -- -- refer to the configuration section below - -- }) - -- end, - --}) - use("rebelot/heirline.nvim") - --use({ "akinsho/bufferline.nvim", tag = "v2.*", requires = "kyazdani42/nvim-web-devicons" }) - --use("itchyny/lightline.vim") - -- debug plugins - --use("puremourning/vimspector") - use("mfussenegger/nvim-dap") - use("rcarriga/nvim-dap-ui") - --use({ - -- "rcarriga/neotest", - -- requires = { - -- "nvim-lua/plenary.nvim", - -- "nvim-treesitter/nvim-treesitter", - -- "antoinemadec/FixCursorHold.nvim", - -- "rcarriga/neotest-python", - -- "rcarriga/neotest-vim-test", - -- "rcarriga/neotest-plenary", - -- "vim-test/vim-test", - -- }, - -- config = function() - -- require("plugins.neotest") - -- end, - --}) - --use("vim-test/vim-test") - --use({ - -- "rcarriga/vim-ultest", - -- requires = { "vim-test/vim-test" }, - -- run = ":UpdateRemotePlugins", - -- config = function() - -- require("plugins.ultest") - -- end, - --}) - -- UI - use("karb94/neoscroll.nvim") - use("folke/which-key.nvim") - use("MunifTanjim/prettier.nvim") -- Prettier plugin for Neovim's built-in LSP client - use("norcalli/nvim-colorizer.lua") - use("folke/zen-mode.nvim") - use("romainl/vim-cool") - --use("p00f/nvim-ts-rainbow") - --use("goolord/alpha-nvim") - --use("feline-nvim/feline.nvim") - --use({ "fgheng/winbar.nvim" }) - --use("vim-airline/vim-airline") - --use("kdheepak/tabline.nvim") - -- use({ - -- "kdheepak/tabline.nvim", - -- config = function() - -- require("tabline").setup({ enable = false }) - -- end, - -- requires = { "hoob3rt/lualine.nvim", "kyazdani42/nvim-web-devicons" }, - -- notification plugin - use("rcarriga/nvim-notify") - --use("lukas-reineke/indent-blankline.nvim") - use("kyazdani42/nvim-web-devicons") - -- Colorschemes - use("gruvbox-community/gruvbox") - use("srcery-colors/srcery-vim") - use("tomasr/molokai") - use("ayu-theme/ayu-vim") - --use("sjl/badwolf") - use("joshdick/onedark.vim") - use("everblush/everblush.nvim") - use("EdenEast/nightfox.nvim") - use("bluz71/vim-nightfly-guicolors") - --use({ "shaunsingh/oxocarbon.nvim", run = "./install.sh" }) - use("jacoborus/tender.vim") - use("sainnhe/sonokai") - use("NTBBloodbath/doom-one.nvim") - - -- Utilities - use("nathom/filetype.nvim") - use("christoomey/vim-tmux-navigator") - use("preservim/vimux") - use("myusuf3/numbers.vim") - use("windwp/nvim-autopairs") - use("lewis6991/gitsigns.nvim") - use("dinhhuy258/git.nvim") -- For git blame & browse - use("kyazdani42/nvim-tree.lua") - use("numToStr/Comment.nvim") - --use("akinsho/toggleterm.nvim") - --use("godlygeek/tabular") - --use("Vonr/align.nvim") - --use("junegunn/vim-easy-align") - --use("dstein64/vim-startuptime") - use("tweekmonster/startuptime.vim") - -- use("luukvbaal/stabilize.nvim") - --use("rhysd/clever-f.vim") - --use("ggandor/lightspeed.nvim") -- use 'cl' and 'cc' instead of 's' and 'S' respectively - --use("ggandor/leap.nvim") - use({ - "ggandor/leap.nvim", - config = function() - require("leap").set_default_keymaps() - --vim.keymap.set('n', '-', '<Plug>(leap-forward)', {}) - --vim.keymap.set('n', '_', '<Plug>(leap-backward)', {}) - end, - }) - use({ "ggandor/flit.nvim", - config = function() - require("flit").setup() - end, - }) - - --use("Shatur/neovim-session-manager") - --use("rmagatti/auto-session") - --use("rmagatti/session-lens") - --use("ahmedkhalf/project.nvim") - --use("aserowy/tmux.nvim") - --use("wakatime/vim-wakatime") - --use("tpope/vim-eunuch") - -- Handy unix command inside Vim (Rename, Move etc.) - use({ "tpope/vim-eunuch", cmd = { "Rename", "Delete" } }) - --use("tpope/vim-fugitive") - --use("tpope/vim-surround") - --use("tpope/vim-obsession") - --use("tpope/vim-unimpaired") - --use("voldikss/vim-floaterm") - --use("vimpostor/vim-tpipeline") - --use({ - -- "vimwiki/vimwiki", - -- config = function() - -- vim.g.vimwiki_list = { - -- { - -- path = "~/", - -- syntax = "markdown", - -- ext = ".md", - -- }, - -- } - -- vim.g.vimwiki_ext2syntax = { - -- [".md"] = "markdown", - -- [".markdown"] = "markdown", - -- [".mdown"] = "markdown", - use({ - "iamcco/markdown-preview.nvim", - run = function() vim.fn["mkdp#util#install"]() end, - }) - - -- Automatically set up your configuration after cloning packer.nvim - -- Put this at the end after all plugins - if PACKER_BOOTSTRAP then - require("packer").sync() - end -end) diff --git a/config/nvim/lua/user/utils.lua b/config/nvim/lua/user/utils.lua deleted file mode 100644 index bfb5faa..0000000 --- a/config/nvim/lua/user/utils.lua +++ /dev/null @@ -1,85 +0,0 @@ -local fn = vim.fn - -local M = {} - -function M.executable(name) - if fn.executable(name) > 0 then - return true - end - - return false -end - ---- check whether a feature exists in Nvim ---- @feat: string ---- the feature name, like `nvim-0.7` or `unix`. ---- return: bool -M.has = function(feat) - if fn.has(feat) == 1 then - return true - end - - return false -end - ---- Create a dir if it does not exist -function M.may_create_dir(dir) - local res = fn.isdirectory(dir) - - if res == 0 then - fn.mkdir(dir, "p") - end -end - -M['unload_lua_namespace'] = function(prefix) - local prefix_with_dot = prefix .. '.' - for key, value in pairs(package.loaded) do - if key == prefix or key:sub(1, #prefix_with_dot) == prefix_with_dot then - package.loaded[key] = nil - end - end -end - --- toggle cmp completion -vim.g.cmp_toggle_flag = false -- initialize -local normal_buftype = function() - return vim.api.nvim_buf_get_option(0, "buftype") ~= "prompt" -end -M.toggle_completion = function() - local ok, cmp = pcall(require, "cmp") - if ok then - local next_cmp_toggle_flag = not vim.g.cmp_toggle_flag - if next_cmp_toggle_flag then - print("completion on") - else - print("completion off") - end - cmp.setup({ - enabled = function() - vim.g.cmp_toggle_flag = next_cmp_toggle_flag - if next_cmp_toggle_flag then - return normal_buftype - else - return next_cmp_toggle_flag - end - end, - }) - else - print("completion not available") - end -end - -function M.get_nvim_version() - local actual_ver = vim.version() - - local nvim_ver_str = string.format("%d.%d.%d", actual_ver.major, actual_ver.minor, actual_ver.patch) - return nvim_ver_str -end - -function M.add_pack(name) - local status, error = pcall(vim.cmd, "packadd " .. name) - - return status -end - -return M diff --git a/config/nvim/snippets/boilerplate.lua b/config/nvim/snippets/boilerplate.lua deleted file mode 100644 index 04e973a..0000000 --- a/config/nvim/snippets/boilerplate.lua +++ /dev/null @@ -1,75 +0,0 @@ -local ls = require("luasnip") --{{{ -local s = ls.s -local i = ls.i -local t = ls.t - -local d = ls.dynamic_node -local c = ls.choice_node -local f = ls.function_node -local sn = ls.snippet_node - -local fmt = require("luasnip.extras.fmt").fmt -local rep = require("luasnip.extras").rep - -local snippets, autosnippets = {}, {} --}}} - -local group = vim.api.nvim_create_augroup("Lua Snippets", { clear = true }) -local file_pattern = "*.lua" - -local function cs(trigger, nodes, opts) --{{{ - local snippet = s(trigger, nodes) - local target_table = snippets - - local pattern = file_pattern - local keymaps = {} - - if opts ~= nil then - -- check for custom pattern - if opts.pattern then - pattern = opts.pattern - end - - -- if opts is a string - if type(opts) == "string" then - if opts == "auto" then - target_table = autosnippets - else - table.insert(keymaps, { "i", opts }) - end - end - - -- if opts is a table - if opts ~= nil and type(opts) == "table" then - for _, keymap in ipairs(opts) do - if type(keymap) == "string" then - table.insert(keymaps, { "i", keymap }) - else - table.insert(keymaps, keymap) - end - end - end - - -- set autocmd for each keymap - if opts ~= "auto" then - for _, keymap in ipairs(keymaps) do - vim.api.nvim_create_autocmd("BufEnter", { - pattern = pattern, - group = group, - callback = function() - vim.keymap.set(keymap[1], keymap[2], function() - ls.snip_expand(snippet) - end, { noremap = true, silent = true, buffer = true }) - end, - }) - end - end - end - - table.insert(target_table, snippet) -- insert snippet into appropriate table -end --}}} - --- Start Refactoring -- - --- End Refactoring -- - -return snippets, autosnippets diff --git a/config/nvim/snippets/lua.lua b/config/nvim/snippets/lua.lua deleted file mode 100644 index eb46b67..0000000 --- a/config/nvim/snippets/lua.lua +++ /dev/null @@ -1,264 +0,0 @@ - -local ls = require("luasnip") --{{{ -local s = ls.s --> snippet -local i = ls.i --> insert node -local t = ls.t --> text node - -local d = ls.dynamic_node -local c = ls.choice_node --> takes in a pos as first arg and a table of nodes -local f = ls.function_node -local sn = ls.snippet_node - -local fmt = require("luasnip.extras.fmt").fmt -local rep = require("luasnip.extras").rep - -local snippets, autosnippets = {}, {} --}}} - -local group = vim.api.nvim_create_augroup("Lua Snippets", { clear = true }) -local file_pattern = "*.lua" - -local function cs(trigger, nodes, opts) --{{{ - local snippet = s(trigger, nodes) - local target_table = snippets - - local pattern = file_pattern - local keymaps = {} - - if opts ~= nil then - -- check for custom pattern - if opts.pattern then - pattern = opts.pattern - end - - -- if opts is a string - if type(opts) == "string" then - if opts == "auto" then - target_table = autosnippets - else - table.insert(keymaps, { "i", opts }) - end - end - - -- if opts is a table - if opts ~= nil and type(opts) == "table" then - for _, keymap in ipairs(opts) do - if type(keymap) == "string" then - table.insert(keymaps, { "i", keymap }) - else - table.insert(keymaps, keymap) - end - end - end - - -- set autocmd for each keymap - if opts ~= "auto" then - for _, keymap in ipairs(keymaps) do - vim.api.nvim_create_autocmd("BufEnter", { - pattern = pattern, - group = group, - callback = function() - vim.keymap.set(keymap[1], keymap[2], function() - ls.snip_expand(snippet) - end, { noremap = true, silent = true, buffer = true }) - end, - }) - end - end - end - - table.insert(target_table, snippet) -- insert snippet into appropriate table -end --}}} - --- Start Refactoring -- - -cs("CMD", { -- [CMD] multiline vim.cmd{{{ - t({ "vim.cmd[[", " " }), - i(1, ""), - t({ "", "]]" }), -}) --}}} -cs("cmd", fmt("vim.cmd[[{}]]", { i(1, "") })) -- single line vim.cmd -cs({ -- github import for packer{{{ - trig = "https://github%.com/([%w-%._]+)/([%w-%._]+)!", - regTrig = true, - hidden = true, -}, { - t([[use "]]), - f(function(_, snip) - return snip.captures[1] - end), - t("/"), - f(function(_, snip) - return snip.captures[2] - end), - t({ [["]], "" }), - i(1, ""), -}, "auto") --}}} - -cs( -- {regexSnippet} LuaSnippet{{{ - "regexSnippet", - fmt( - [=[ -cs( -- {} -{{ trig = "{}", regTrig = true, hidden = true }}, fmt([[ -{} -]], {{ - {} -}})) - ]=], - { - i(1, "Description"), - i(2, ""), - i(3, ""), - i(4, ""), - } - ), - { pattern = "*/snippets/*.lua", "<C-d>" } -) --}}} -cs( -- [luaSnippet] LuaSnippet{{{ - "luaSnippet", - fmt( - [=[ -cs("{}", fmt( -- {} -[[ -{} -]], {{ - {} - }}){}) - ]=], - { - i(1, ""), - i(2, "Description"), - i(3, ""), - i(4, ""), - c(5, { - t(""), - fmt([[, "{}"]], { i(1, "keymap") }), - fmt([[, {{ pattern = "{}", {} }}]], { i(1, "*/snippets/*.lua"), i(2, "keymap") }), - }), - } - ), - { pattern = "*/snippets/*.lua", "jcs" } -) --}}} - -cs( -- choice_node_snippet luaSnip choice node{{{ - "choice_node_snippet", - fmt( - [[ -c({}, {{ {} }}), -]], - { - i(1, ""), - i(2, ""), - } - ), - { pattern = "*/snippets/*.lua", "jcn" } -) --}}} - -cs( -- [function] Lua function snippet{{{ - "function", - fmt( - [[ -function {}({}) - {} -end -]], - { - i(1, ""), - i(2, ""), - i(3, ""), - } - ), - "jff" -) --}}} -cs( -- [local_function] Lua function snippet{{{ - "local_function", - fmt( - [[ -local function {}({}) - {} -end -]], - { - i(1, ""), - i(2, ""), - i(3, ""), - } - ), - "jlf" -) --}}} -cs( -- [local] Lua local variable snippet{{{ - "local", - fmt( - [[ -local {} = {} - ]], - { i(1, ""), i(2, "") } - ), - "jj" -) --}}} --- Tutorial Snippets go here -- -local myFirstSnippet = s("myFirstSnippet", { - t("Hi! This is my first snippet in Luasnip "), - i(1, "placeholder"), - t({"", "this is another text node", ""}), - i(2, "put here"), -}) -table.insert(snippets, myFirstSnippet) - - - -local mySecondSnippet = s( - "mySecondSnippet", - fmt( - [[ - local {} = function({}) - {} {{ im in a curly braces }} - end {} - ]], - { - i(1, "myVar"), - c(2, { t(""), i(1, "myArg") }), - i(3, "-- TODO: something"), - i(4, "-- nice") - } - ) -) -table.insert(snippets, mySecondSnippet) - -local myFirstAutoSnippet = s("automatic", { t("This was auto triggered") }) -table.insert(autosnippets, myFirstAutoSnippet) - -local mySecondAutoSnippet = s({ trig = "digit(%d)(%d)", regTrig = true }, { - f(function(_, snip) - return snip.captures[1] .. " + " - end), - f(function(_, snip) - return snip.captures[2] - end), -}) -table.insert(autosnippets, mySecondAutoSnippet) - - - - - - - - --- End Refactoring -- - -return snippets, autosnippets - - - - - - - - - - - - - - diff --git a/config/nvim/snippets/markdown.lua b/config/nvim/snippets/markdown.lua deleted file mode 100644 index d0d1487..0000000 --- a/config/nvim/snippets/markdown.lua +++ /dev/null @@ -1,58 +0,0 @@ -local ls = require("luasnip") -local s = ls.s -local i = ls.i -local t = ls.t - -local d = ls.dynamic_node -local c = ls.choice_node -local f = ls.function_node -local sn = ls.snippet_node - -local fmt = require("luasnip.extras.fmt").fmt -local rep = require("luasnip.extras").rep - --- -- - -local snippets = {} -local autosnippets = {} - -local autocmd = vim.api.nvim_create_autocmd -local augroup = vim.api.nvim_create_augroup -local map = vim.keymap.set -local opts = { noremap = true, silent = true, buffer = true } -local group = augroup("Markdown Snippets", { clear = true }) - -local function cs(trigger, nodes, keymap) --> cs stands for create snippet - local snippet = s(trigger, nodes) - table.insert(snippets, snippet) - - if keymap ~= nil then - local pattern = "*.md" - if type(keymap) == "table" then - pattern = keymap[1] - keymap = keymap[2] - end - autocmd("BufEnter", { - pattern = pattern, - group = group, - callback = function() - map({ "i" }, keymap, function() - ls.snip_expand(snippet) - end, opts) - end, - }) - end -end - -local function lp(package_name) -- Load Package Function - package.loaded[package_name] = nil - return require(package_name) -end - --- Utility Functions -- - --- Start Refactoring -- - --- Start Refactoring -- - -return snippets, autosnippets |
