diff --git a/init.lua b/init.lua index 6b875737d..b2d697e76 100644 --- a/init.lua +++ b/init.lua @@ -1,21 +1,29 @@ -require "user.options" -require "user.keymaps" -require "user.plugins" -require "user.colorscheme" -require "user.cmp" -require "user.lsp" -require "user.telescope" -require "user.treesitter" -require "user.autopairs" -require "user.comment" -require "user.gitsigns" -require "user.nvim-tree" -require "user.bufferline" -require "user.lualine" -require "user.toggleterm" -require "user.project" -require "user.impatient" -require "user.indentline" -require "user.alpha" -require "user.whichkey" -require "user.autocommands" + +require("basic") + +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) +-- require("lazy").setup(plugins, opts) + +vim.g.mapleader = ',' + +require("lazy").setup("plugins") + +require("keybindings") +require("treesitter") +require("nvimtree") +require("lsp") +require("formatters") +require("cmpl") +require("colortheme") +require("tools") diff --git a/lua/basic.lua b/lua/basic.lua new file mode 100644 index 000000000..6baf04649 --- /dev/null +++ b/lua/basic.lua @@ -0,0 +1,89 @@ +-- utf8 +vim.g.encoding = "UTF-8" +vim.o.fileencoding = "utf-8" +-- jkhl 移动时光标周围保留8行 +vim.o.scrolloff = 8 +vim.o.sidescrolloff = 8 +-- 使用相对行号 +vim.wo.number = true +-- vim.wo.relativenumber = true +-- 高亮所在行 +vim.wo.cursorline = true +-- 显示左侧图标指示列 +vim.wo.signcolumn = "yes" +-- 右侧参考线,超过表示代码太长了,考虑换行 +vim.wo.colorcolumn = "80" +-- 缩进2个空格等于一个Tab +vim.o.tabstop = 4 +vim.bo.tabstop = 4 +vim.o.softtabstop = 4 +vim.o.shiftround = true +-- >> << 时移动长度 +vim.o.shiftwidth = 4 +vim.bo.shiftwidth = 4 +-- 空格替代tab +vim.o.expandtab = true +vim.bo.expandtab = true +-- 新行对齐当前行 +vim.o.autoindent = true +vim.bo.autoindent = true +vim.o.smartindent = true +-- 搜索大小写不敏感,除非包含大写 +vim.o.ignorecase = true +vim.o.smartcase = true +-- 搜索不要高亮 +vim.o.hlsearch = false +-- 边输入边搜索 +vim.o.incsearch = true +-- 命令行高为2,提供足够的显示空间 +vim.o.cmdheight = 2 +-- 当文件被外部程序修改时,自动加载 +vim.o.autoread = true +vim.bo.autoread = true +-- 禁止折行 +vim.wo.wrap = false +-- 光标在行首尾时可以跳到下一行 +vim.o.whichwrap = "<,>,[,]" +-- 允许隐藏被修改过的buffer +vim.o.hidden = true +-- 鼠标支持 +vim.o.mouse = "a" +-- 禁止创建备份文件 +vim.o.backup = false +vim.o.writebackup = false +vim.o.swapfile = false +-- smaller updatetime +vim.o.updatetime = 500 +-- 设置 timeoutlen 为等待键盘快捷键连击时间500毫秒,可根据需要设置 +-- 遇到问题详见:https://github.com/nshen/learn-neovim-lua/issues/1 +vim.o.timeoutlen = 500 +-- split window 从下边和右边出现 +vim.o.splitbelow = true +vim.o.splitright = true +-- 自动补全不自动选中 +vim.g.completeopt = "menu,menuone,noselect,noinsert" +-- 样式 +vim.o.termguicolors = true +vim.opt.termguicolors = true +-- 是否显示不可见字符 +vim.o.list = false +-- 不可见字符的显示,这里只把空格显示为一个点 +vim.o.listchars = "space:·,tab:··" +-- 补全增强 +vim.o.wildmenu = true +-- Dont' pass messages to |ins-completin menu| +vim.o.shortmess = vim.o.shortmess .. "c" +-- 补全最多显示10行 +vim.o.pumheight = 10 +-- 永远显示 tabline +vim.o.showtabline = 2 +-- 使用增强状态栏插件后不再需要 vim 的模式提示 +vim.o.showmode = true +-- 配置剪切板 +vim.opt.clipboard = "unnamedplus" +-- disable netrw at the very start of your init.lua +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +-- set termguicolors to enable highlight groups +vim.opt.termguicolors = true diff --git a/lua/cmpl.lua b/lua/cmpl.lua new file mode 100644 index 000000000..8ea2dfb07 --- /dev/null +++ b/lua/cmpl.lua @@ -0,0 +1,35 @@ +-- 代码补全插件 + +local cmp = require("cmp") +cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. + -- require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + -- require('snippy').expand_snippet(args.body) -- For `snippy` users. + -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. + end, + }, + sources = { + { name = "nvim_lsp" }, + { name = "vsnip" }, + { name = "cmp-async-path" }, + }, + mapping = cmp.mapping.preset.insert({ + -- [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.complete(), + }), +}) + +-- The nvim-cmp almost supports LSP's capabilities so You should advertise it to LSP servers.. +local capabilities = require("cmp_nvim_lsp").default_capabilities() + +-- The following example advertise capabilities to `clangd`. +require("lspconfig").clangd.setup({ + capabilities = capabilities, +}) + +require("Comment").setup() + +local mm = "k" diff --git a/lua/colortheme.lua b/lua/colortheme.lua new file mode 100644 index 000000000..09715bd10 --- /dev/null +++ b/lua/colortheme.lua @@ -0,0 +1,32 @@ +-- Default options: +require("kanagawa").setup({ + compile = false, -- enable compiling the colorscheme + undercurl = true, -- enable undercurls + commentStyle = { italic = true }, + functionStyle = {}, + keywordStyle = { italic = true }, + statementStyle = { bold = true }, + typeStyle = {}, + transparent = false, -- do not set background color + dimInactive = false, -- dim inactive window `:h hl-NormalNC` + terminalColors = true, -- define vim.g.terminal_color_{0,17} + colors = { -- add/modify theme and palette colors + palette = {}, + theme = { wave = {}, lotus = {}, dragon = {}, all = {} }, + }, + overrides = function(colors) -- add/modify highlights + return {} + end, + theme = "wave", -- Load "wave" theme when 'background' option is not set + background = { -- map the value of 'background' option to a theme + dark = "wave", -- try "dragon" ! + light = "lotus", + }, +}) + +-- setup must be called before loading +vim.cmd("colorscheme kanagawa") + +-- bufferline setting +vim.opt.termguicolors = true +require("bufferline").setup({}) diff --git a/lua/formatters.lua b/lua/formatters.lua new file mode 100644 index 000000000..3283a68e8 --- /dev/null +++ b/lua/formatters.lua @@ -0,0 +1,50 @@ +-- Utilities for creating configurations +local util = require("formatter.util") + +-- Provides the Format, FormatWrite, FormatLock, and FormatWriteLock commands +require("formatter").setup({ + -- Enable or disable logging + logging = true, + -- Set the log level + log_level = vim.log.levels.WARN, + -- All formatter configurations are opt-in + filetype = { + -- Formatter configurations for filetype "lua" go here + -- and will be executed in order + lua = { + -- "formatter.filetypes.lua" defines default configurations for the + -- "lua" filetype + require("formatter.filetypes.lua").stylua, + + -- You can also define your own configuration + function() + -- Supports conditional formatting + if util.get_current_buffer_file_name() == "special.lua" then + return nil + end + + -- Full specification of configurations is down below and in Vim help + -- files + return { + exe = "stylua", + args = { + "--search-parent-directories", + "--stdin-filepath", + util.escape_path(util.get_current_buffer_file_path()), + "--", + "-", + }, + stdin = true, + } + end, + }, + + -- Use the special "*" filetype for defining formatter configurations on + -- any filetype + ["*"] = { + -- "formatter.filetypes.any" defines default configurations for any + -- filetype + require("formatter.filetypes.any").remove_trailing_whitespace, + }, + }, +}) diff --git a/lua/keybindings.lua b/lua/keybindings.lua new file mode 100644 index 000000000..0061084e6 --- /dev/null +++ b/lua/keybindings.lua @@ -0,0 +1,72 @@ +-- 插件快捷键 + +local function map(mode, lhs, rhs, opts) + local options = { noremap = true, silent = true } + if opts then + options = vim.tbl_extend("force", options, opts) + end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) +end + +-- Map Esc to kk +map("i", "kk", "") + +-- 切换窗口 +map("n", "", "h") +map("n", "", "j") +map("n", "", "k") +map("n", "", "l") + +-- Reload configuration without restart nvim +map("n", "r", ":so %") + +-- nvim-tree +-- 打开关闭tree +map("n", "", ":NvimTreeToggle") + +-- formatter +map("n", "", ":Format") + +-- auto comments +map("n", "", "gcc") +-- map("v", "", "gc") + + + +-- 设置快捷键注册到which-key +local wk = require("which-key") +-- wk.register(mappings, opts) +wk.register({ + ["f"] = { name = "file options" }, + ["fg"] = { "Format", "Format file" }, + ["s"] = { name = "telescope land"}, + ["sf"] = { "lua require('telescope.builtin').find_files()", "find files" }, + ["sg"] = { "lua require('telescope.builtin').live_grep()", "live grep" }, + ["sb"] = { "lua require('telescope.builtin').buffers()", "buffers" }, + ["sh"] = { "lua require('telescope.builtin').help_tags()", "help_tags" }, +}) + + +local pluginKeys = {} +-- 列表快捷键 +pluginKeys.nvimTree = { + -- 打开文件或文件夹 + { key = { "", "o", "<2-LeftMouse>" }, action = "edit" }, + -- 分屏打开文件 + { key = "v", action = "vsplit" }, + { key = "h", action = "split" }, + -- 显示隐藏文件 + { key = "i", action = "toggle_custom" }, -- 对应 filters 中的 custom (node_modules) + { key = ".", action = "toggle_dotfiles" }, -- Hide (dotfiles) + -- 文件操作 + { key = "", action = "refresh" }, + { key = "a", action = "create" }, + { key = "d", action = "remove" }, + { key = "r", action = "rename" }, + { key = "x", action = "cut" }, + { key = "c", action = "copy" }, + { key = "p", action = "paste" }, + { key = "s", action = "system_open" }, +} + +return pluginKeys diff --git a/lua/lsp.lua b/lua/lsp.lua new file mode 100644 index 000000000..3a049d1ff --- /dev/null +++ b/lua/lsp.lua @@ -0,0 +1,11 @@ +require("mason").setup({ + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗", + }, + }, +}) + +require("mason-lspconfig").setup() diff --git a/lua/nvimtree.lua b/lua/nvimtree.lua new file mode 100644 index 000000000..66977337b --- /dev/null +++ b/lua/nvimtree.lua @@ -0,0 +1,41 @@ + +vim.g.nvim_tree_icons = { + default = "", + symlink = "", + git = { + unstaged = "", + staged = "S", + unmerged = "", + renamed = "➜", + deleted = "", + untracked = "U", + ignored = "◌", + }, + folder = { + default = "", + open = "", + empty = "", + empty_open = "", + symlink = "", + }, +} + + +local mapKey = require("keybindings") + + + +require("nvim-tree").setup({ + sort_by = "case_sensitive", + view = { + width = 30, + }, + -- mapkeyings = mapKey.nvimTree, + renderer = { + group_empty = true, + }, + filters = { + dotfiles = true, + }, +}) + diff --git a/lua/plugins.lua b/lua/plugins.lua new file mode 100644 index 000000000..ab067c299 --- /dev/null +++ b/lua/plugins.lua @@ -0,0 +1,28 @@ +return { + { "folke/neodev.nvim" }, + { "folke/which-key.nvim" }, + { "folke/neoconf.nvim", cmd = "Neoconf" }, + { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" }, + { "nvim-tree/nvim-tree.lua", version = "*", dependencies = { "nvim-tree/nvim-web-devicons" } }, + { "williamboman/mason.nvim" }, + { "williamboman/mason-lspconfig.nvim" }, + { "neovim/nvim-lspconfig" }, + { "mhartington/formatter.nvim" }, + { "hrsh7th/nvim-cmp" }, + { "hrsh7th/cmp-nvim-lsp" }, + { "rebelot/kanagawa.nvim" }, + { "nvim-lua/popup.nvim" }, + { "numToStr/Comment.nvim" }, -- Easily comment stuff + { "nvim-lua/plenary.nvim" }, -- Useful lua functions used ny lots of plugins + { "windwp/nvim-autopairs", event = "InsertEnter", opts = {} }, -- Autopair + { "nvim-telescope/telescope.nvim" }, + { "akinsho/bufferline.nvim", version = "*", dependencies = "nvim-tree/nvim-web-devicons" }, + { "nvim-telescope/telescope.nvim", tag = "0.1.3", dependencies = { "nvim-lua/plenary.nvim" } }, + { + "nvim-telescope/telescope-fzf-native.nvim", + build = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build", + }, + { "FelipeLema/cmp-async-path" }, + { "hrsh7th/cmp-vsnip" }, + { "hrsh7th/vim-vsnip" }, +} diff --git a/lua/tools.lua b/lua/tools.lua new file mode 100644 index 000000000..e2905f150 --- /dev/null +++ b/lua/tools.lua @@ -0,0 +1,2 @@ + +local builtin = require("telescope.builtin") diff --git a/lua/treesitter.lua b/lua/treesitter.lua new file mode 100644 index 000000000..f9a5d451f --- /dev/null +++ b/lua/treesitter.lua @@ -0,0 +1,47 @@ +local status, treesitter = pcall(require, "nvim-treesitter.configs") +if not status then + vim.notify("没有找到 nvim-treesitter") + return +end + +treesitter.setup({ + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = { "c", "cpp","python","bash", "cmake", "rust", "json", "xml", "lua", "vim", "query" }, + + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + + -- List of parsers to ignore installing (or "all") + ignore_install = { "javascript" }, + + ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) + -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! + + highlight = { + enable = true, + + -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to + -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is + -- the name of the parser) + -- list of language that will be disabled + -- disable = { "c", "rust" }, + -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files + disable = function(lang, buf) + local max_filesize = 100 * 1024 -- 100 KB + local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + if ok and stats and stats.size > max_filesize then + return true + end + end, + + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = true, + }, +}) diff --git a/lua/tscope.lua b/lua/tscope.lua new file mode 100644 index 000000000..5a8347cf0 --- /dev/null +++ b/lua/tscope.lua @@ -0,0 +1,18 @@ +local builtin = require("telescope.builtin") + +-- -- You dont need to set any of these options. These are the default ones. Only +-- the loading is important +require('telescope').setup { + extensions = { + fzf = { + fuzzy = true, -- false will only do exact matching + override_generic_sorter = true, -- override the generic sorter + override_file_sorter = true, -- override the file sorter + case_mode = "smart_case", -- or "ignore_case" or "respect_case" + -- the default case_mode is "smart_case" + } + } +} +-- To get fzf loaded and working with telescope, you need to call +-- load_extension, somewhere after setup function: +require('telescope').load_extension('fzf') diff --git a/lua/user/alpha.lua b/lua/user/alpha.lua deleted file mode 100644 index 249a166b0..000000000 --- a/lua/user/alpha.lua +++ /dev/null @@ -1,42 +0,0 @@ -local status_ok, alpha = pcall(require, "alpha") -if not status_ok then - return -end - -local dashboard = require("alpha.themes.dashboard") -dashboard.section.header.val = { - [[ __ ]], - [[ ___ ___ ___ __ __ /\_\ ___ ___ ]], - [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]], - [[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]], - [[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]], - [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]], -} -dashboard.section.buttons.val = { - dashboard.button("f", " Find file", ":Telescope find_files "), - dashboard.button("e", " New file", ":ene startinsert "), - dashboard.button("p", " Find project", ":Telescope projects "), - dashboard.button("r", " Recently used files", ":Telescope oldfiles "), - dashboard.button("t", " Find text", ":Telescope live_grep "), - dashboard.button("c", " Configuration", ":e ~/.config/nvim/init.lua "), - dashboard.button("q", " Quit Neovim", ":qa"), -} - -local function footer() --- NOTE: requires the fortune-mod package to work - -- local handle = io.popen("fortune") - -- local fortune = handle:read("*a") - -- handle:close() - -- return fortune - return "chrisatmachine.com" -end - -dashboard.section.footer.val = footer() - -dashboard.section.footer.opts.hl = "Type" -dashboard.section.header.opts.hl = "Include" -dashboard.section.buttons.opts.hl = "Keyword" - -dashboard.opts.opts.noautocmd = true --- vim.cmd([[autocmd User AlphaReady echo 'ready']]) -alpha.setup(dashboard.opts) diff --git a/lua/user/autocommands.lua b/lua/user/autocommands.lua deleted file mode 100644 index c438738f2..000000000 --- a/lua/user/autocommands.lua +++ /dev/null @@ -1,37 +0,0 @@ -vim.cmd [[ - augroup _general_settings - autocmd! - autocmd FileType qf,help,man,lspinfo nnoremap q :close - autocmd TextYankPost * silent!lua require('vim.highlight').on_yank({higroup = 'Visual', timeout = 200}) - autocmd BufWinEnter * :set formatoptions-=cro - autocmd FileType qf set nobuflisted - augroup end - - augroup _git - autocmd! - autocmd FileType gitcommit setlocal wrap - autocmd FileType gitcommit setlocal spell - augroup end - - augroup _markdown - autocmd! - autocmd FileType markdown setlocal wrap - autocmd FileType markdown setlocal spell - augroup end - - augroup _auto_resize - autocmd! - autocmd VimResized * tabdo wincmd = - augroup end - - augroup _alpha - autocmd! - autocmd User AlphaReady set showtabline=0 | autocmd BufUnload set showtabline=2 - augroup end -]] - --- Autoformat --- augroup _lsp --- autocmd! --- autocmd BufWritePre * lua vim.lsp.buf.formatting() --- augroup end diff --git a/lua/user/autopairs.lua b/lua/user/autopairs.lua deleted file mode 100644 index 577e571e2..000000000 --- a/lua/user/autopairs.lua +++ /dev/null @@ -1,33 +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, - }, - disable_filetype = { "TelescopePrompt", "spectre_panel" }, - fast_wrap = { - map = "", - 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/lua/user/bufferline.lua b/lua/user/bufferline.lua deleted file mode 100644 index 7d98cf072..000000000 --- a/lua/user/bufferline.lua +++ /dev/null @@ -1,167 +0,0 @@ -local status_ok, bufferline = pcall(require, "bufferline") -if not status_ok then - return -end - -bufferline.setup { - options = { - numbers = "none", -- | "ordinal" | "buffer_id" | "both" | function({ ordinal, id, lower, raise }): string, - close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" - right_mouse_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions" - left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions" - middle_mouse_command = nil, -- can be a string | function, see "Mouse actions" - -- NOTE: this plugin is designed with this icon in mind, - -- and so changing this is NOT recommended, this is intended - -- as an escape hatch for people who cannot bear it for whatever reason - indicator_icon = "▎", - buffer_close_icon = "", - -- buffer_close_icon = '', - modified_icon = "●", - close_icon = "", - -- close_icon = '', - left_trunc_marker = "", - right_trunc_marker = "", - --- name_formatter can be used to change the buffer's label in the bufferline. - --- Please note some names can/will break the - --- bufferline so use this at your discretion knowing that it has - --- some limitations that will *NOT* be fixed. - -- name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr" - -- -- remove extension from markdown files for example - -- if buf.name:match('%.md') then - -- return vim.fn.fnamemodify(buf.name, ':t:r') - -- end - -- end, - max_name_length = 30, - max_prefix_length = 30, -- prefix used when a buffer is de-duplicated - tab_size = 21, - diagnostics = false, -- | "nvim_lsp" | "coc", - diagnostics_update_in_insert = false, - -- diagnostics_indicator = function(count, level, diagnostics_dict, context) - -- return "("..count..")" - -- end, - -- NOTE: this will be called a lot so don't do any heavy processing here - -- custom_filter = function(buf_number) - -- -- filter out filetypes you don't want to see - -- if vim.bo[buf_number].filetype ~= "" then - -- return true - -- end - -- -- filter out by buffer name - -- if vim.fn.bufname(buf_number) ~= "" then - -- return true - -- end - -- -- filter out based on arbitrary rules - -- -- e.g. filter out vim wiki buffer from tabline in your work repo - -- if vim.fn.getcwd() == "" and vim.bo[buf_number].filetype ~= "wiki" then - -- return true - -- end - -- end, - offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, - show_buffer_icons = true, - show_buffer_close_icons = true, - show_close_icon = true, - show_tab_indicators = true, - persist_buffer_sort = true, -- whether or not custom sorted buffers should persist - -- can also be a table containing 2 custom separators - -- [focused and unfocused]. eg: { '|', '|' } - separator_style = "thin", -- | "thick" | "thin" | { 'any', 'any' }, - enforce_regular_tabs = true, - always_show_bufferline = true, - -- sort_by = 'id' | 'extension' | 'relative_directory' | 'directory' | 'tabs' | function(buffer_a, buffer_b) - -- -- add custom logic - -- return buffer_a.modified > buffer_b.modified - -- end - }, - highlights = { - fill = { - guifg = { attribute = "fg", highlight = "#ff0000" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - background = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - - -- buffer_selected = { - -- guifg = {attribute='fg',highlight='#ff0000'}, - -- guibg = {attribute='bg',highlight='#0000ff'}, - -- gui = 'none' - -- }, - buffer_visible = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - - close_button = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - close_button_visible = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - -- close_button_selected = { - -- guifg = {attribute='fg',highlight='TabLineSel'}, - -- guibg ={attribute='bg',highlight='TabLineSel'} - -- }, - - tab_selected = { - guifg = { attribute = "fg", highlight = "Normal" }, - guibg = { attribute = "bg", highlight = "Normal" }, - }, - tab = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - tab_close = { - -- guifg = {attribute='fg',highlight='LspDiagnosticsDefaultError'}, - guifg = { attribute = "fg", highlight = "TabLineSel" }, - guibg = { attribute = "bg", highlight = "Normal" }, - }, - - duplicate_selected = { - guifg = { attribute = "fg", highlight = "TabLineSel" }, - guibg = { attribute = "bg", highlight = "TabLineSel" }, - gui = "italic", - }, - duplicate_visible = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - gui = "italic", - }, - duplicate = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - gui = "italic", - }, - - modified = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - modified_selected = { - guifg = { attribute = "fg", highlight = "Normal" }, - guibg = { attribute = "bg", highlight = "Normal" }, - }, - modified_visible = { - guifg = { attribute = "fg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - - separator = { - guifg = { attribute = "bg", highlight = "TabLine" }, - guibg = { attribute = "bg", highlight = "TabLine" }, - }, - separator_selected = { - guifg = { attribute = "bg", highlight = "Normal" }, - guibg = { attribute = "bg", highlight = "Normal" }, - }, - -- separator_visible = { - -- guifg = {attribute='bg',highlight='TabLine'}, - -- guibg = {attribute='bg',highlight='TabLine'} - -- }, - indicator_selected = { - guifg = { attribute = "fg", highlight = "LspDiagnosticsDefaultHint" }, - guibg = { attribute = "bg", highlight = "Normal" }, - }, - }, -} diff --git a/lua/user/cmp.lua b/lua/user/cmp.lua deleted file mode 100644 index a151214d9..000000000 --- a/lua/user/cmp.lua +++ /dev/null @@ -1,129 +0,0 @@ -local cmp_status_ok, cmp = pcall(require, "cmp") -if not cmp_status_ok then - return -end - -local snip_status_ok, luasnip = pcall(require, "luasnip") -if not snip_status_ok then - return -end - -require("luasnip/loaders/from_vscode").lazy_load() - -local check_backspace = function() - local col = vim.fn.col "." - 1 - return col == 0 or vim.fn.getline("."):sub(col, col):match "%s" -end - ---   פּ ﯟ   some other good icons -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 = "", -} --- find more here: https://www.nerdfonts.com/cheat-sheet - -cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) -- For `luasnip` users. - end, - }, - mapping = { - [""] = cmp.mapping.select_prev_item(), - [""] = cmp.mapping.select_next_item(), - [""] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), - [""] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. - [""] = cmp.mapping { - i = cmp.mapping.abort(), - c = cmp.mapping.close(), - }, - -- Accept currently selected item. If none selected, `select` first item. - -- Set `select` to `false` to only confirm explicitly selected items. - [""] = cmp.mapping.confirm { select = true }, - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expandable() then - luasnip.expand() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif check_backspace() then - fallback() - else - fallback() - end - end, { - "i", - "s", - }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { - "i", - "s", - }), - }, - formatting = { - fields = { "kind", "abbr", "menu" }, - format = function(entry, vim_item) - -- Kind icons - vim_item.kind = string.format("%s", kind_icons[vim_item.kind]) - -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind - vim_item.menu = ({ - nvim_lsp = "[LSP]", - luasnip = "[Snippet]", - buffer = "[Buffer]", - path = "[Path]", - })[entry.source.name] - return vim_item - end, - }, - sources = { - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "buffer" }, - { name = "path" }, - }, - confirm_opts = { - behavior = cmp.ConfirmBehavior.Replace, - select = false, - }, - documentation = { - border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" }, - }, - experimental = { - ghost_text = false, - native_menu = false, - }, -} diff --git a/lua/user/colorscheme.lua b/lua/user/colorscheme.lua deleted file mode 100644 index b1e21f6e6..000000000 --- a/lua/user/colorscheme.lua +++ /dev/null @@ -1,8 +0,0 @@ -vim.cmd [[ -try - colorscheme darkplus -catch /^Vim\%((\a\+)\)\=:E185/ - colorscheme default - set background=dark -endtry -]] diff --git a/lua/user/comment.lua b/lua/user/comment.lua deleted file mode 100644 index 2fa4a564e..000000000 --- a/lua/user/comment.lua +++ /dev/null @@ -1,22 +0,0 @@ -local status_ok, comment = pcall(require, "Comment") -if not status_ok then - return -end - -comment.setup { - pre_hook = function(ctx) - local U = require "Comment.utils" - - local location = nil - if ctx.ctype == U.ctype.block then - location = require("ts_context_commentstring.utils").get_cursor_location() - elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then - location = require("ts_context_commentstring.utils").get_visual_start_location() - end - - return require("ts_context_commentstring.internal").calculate_commentstring { - key = ctx.ctype == U.ctype.line and "__default" or "__multiline", - location = location, - } - end, -} diff --git a/lua/user/gitsigns.lua b/lua/user/gitsigns.lua deleted file mode 100644 index ff72b93c6..000000000 --- a/lua/user/gitsigns.lua +++ /dev/null @@ -1,48 +0,0 @@ -local status_ok, gitsigns = pcall(require, "gitsigns") -if not status_ok then - return -end - -gitsigns.setup { - signs = { - add = { hl = "GitSignsAdd", text = "▎", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" }, - change = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, - delete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, - topdelete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" }, - changedelete = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" }, - }, - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = false, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - watch_gitdir = { - interval = 1000, - follow_files = true, - }, - attach_to_untracked = true, - current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` - current_line_blame_opts = { - virt_text = true, - virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' - delay = 1000, - ignore_whitespace = false, - }, - current_line_blame_formatter_opts = { - relative_time = false, - }, - sign_priority = 6, - update_debounce = 100, - status_formatter = nil, -- Use default - max_file_length = 40000, - preview_config = { - -- Options passed to nvim_open_win - border = "single", - style = "minimal", - relative = "cursor", - row = 0, - col = 1, - }, - yadm = { - enable = false, - }, -} diff --git a/lua/user/impatient.lua b/lua/user/impatient.lua deleted file mode 100644 index 84419e075..000000000 --- a/lua/user/impatient.lua +++ /dev/null @@ -1,6 +0,0 @@ -local status_ok, impatient = pcall(require, "impatient") -if not status_ok then - return -end - -impatient.enable_profile() diff --git a/lua/user/indentline.lua b/lua/user/indentline.lua deleted file mode 100644 index fdf58709d..000000000 --- a/lua/user/indentline.lua +++ /dev/null @@ -1,70 +0,0 @@ -local status_ok, indent_blankline = pcall(require, "indent_blankline") -if not status_ok then - return -end - -vim.g.indent_blankline_buftype_exclude = { "terminal", "nofile" } -vim.g.indent_blankline_filetype_exclude = { - "help", - "startify", - "dashboard", - "packer", - "neogitstatus", - "NvimTree", - "Trouble", -} -vim.g.indentLine_enabled = 1 --- vim.g.indent_blankline_char = "│" -vim.g.indent_blankline_char = "▏" --- vim.g.indent_blankline_char = "▎" -vim.g.indent_blankline_show_trailing_blankline_indent = false -vim.g.indent_blankline_show_first_indent_level = true -vim.g.indent_blankline_use_treesitter = true -vim.g.indent_blankline_show_current_context = true -vim.g.indent_blankline_context_patterns = { - "class", - "return", - "function", - "method", - "^if", - "^while", - "jsx_element", - "^for", - "^object", - "^table", - "block", - "arguments", - "if_statement", - "else_clause", - "jsx_element", - "jsx_self_closing_element", - "try_statement", - "catch_clause", - "import_statement", - "operation_type", -} --- HACK: work-around for https://github.com/lukas-reineke/indent-blankline.nvim/issues/59 -vim.wo.colorcolumn = "99999" - --- vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]] --- vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]] --- vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]] --- vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]] --- vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]] --- vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]] --- vim.opt.list = true --- vim.opt.listchars:append "space:⋅" --- vim.opt.listchars:append "space:" --- vim.opt.listchars:append "eol:↴" - -indent_blankline.setup({ - -- show_end_of_line = true, - -- space_char_blankline = " ", - show_current_context = true, - -- show_current_context_start = true, - -- char_highlight_list = { - -- "IndentBlanklineIndent1", - -- "IndentBlanklineIndent2", - -- "IndentBlanklineIndent3", - -- }, -}) diff --git a/lua/user/keymaps.lua b/lua/user/keymaps.lua deleted file mode 100644 index 32b6a04fe..000000000 --- a/lua/user/keymaps.lua +++ /dev/null @@ -1,69 +0,0 @@ -local opts = { noremap = true, silent = true } - -local term_opts = { silent = true } - --- Shorten function name -local keymap = vim.api.nvim_set_keymap - ---Remap space as leader key -keymap("", "", "", opts) -vim.g.mapleader = " " -vim.g.maplocalleader = " " - --- Modes --- normal_mode = "n", --- insert_mode = "i", --- visual_mode = "v", --- visual_block_mode = "x", --- term_mode = "t", --- command_mode = "c", - --- Normal -- --- Better window navigation -keymap("n", "", "h", opts) -keymap("n", "", "j", opts) -keymap("n", "", "k", opts) -keymap("n", "", "l", opts) - --- Resize with arrows -keymap("n", "", ":resize -2", opts) -keymap("n", "", ":resize +2", opts) -keymap("n", "", ":vertical resize -2", opts) -keymap("n", "", ":vertical resize +2", opts) - --- Navigate buffers -keymap("n", "", ":bnext", opts) -keymap("n", "", ":bprevious", opts) - --- Move text up and down -keymap("n", "", ":m .+1==gi", opts) -keymap("n", "", ":m .-2==gi", opts) - --- Insert -- --- Press jk fast to enter -keymap("i", "jk", "", opts) - --- Visual -- --- Stay in indent mode -keymap("v", "<", "", ">gv", opts) - --- Move text up and down -keymap("v", "", ":m .+1==", opts) -keymap("v", "", ":m .-2==", opts) -keymap("v", "p", '"_dP', opts) - --- Visual Block -- --- Move text up and down -keymap("x", "J", ":move '>+1gv-gv", opts) -keymap("x", "K", ":move '<-2gv-gv", opts) -keymap("x", "", ":move '>+1gv-gv", opts) -keymap("x", "", ":move '<-2gv-gv", opts) - --- Terminal -- --- Better terminal navigation --- keymap("t", "", "h", term_opts) --- keymap("t", "", "j", term_opts) --- keymap("t", "", "k", term_opts) --- keymap("t", "", "l", term_opts) - diff --git a/lua/user/lsp/handlers.lua b/lua/user/lsp/handlers.lua deleted file mode 100644 index fb8b7f8a4..000000000 --- a/lua/user/lsp/handlers.lua +++ /dev/null @@ -1,104 +0,0 @@ -local M = {} - --- TODO: backfill this to template -M.setup = function() - local signs = { - { name = "DiagnosticSignError", text = "" }, - { name = "DiagnosticSignWarn", text = "" }, - { name = "DiagnosticSignHint", text = "" }, - { name = "DiagnosticSignInfo", text = "" }, - } - - for _, sign in ipairs(signs) do - vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) - end - - local config = { - -- disable virtual text - virtual_text = false, - -- show signs - signs = { - active = signs, - }, - update_in_insert = true, - underline = true, - severity_sort = true, - float = { - focusable = false, - style = "minimal", - border = "rounded", - source = "always", - header = "", - prefix = "", - }, - } - - vim.diagnostic.config(config) - - 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", - }) -end - -local function lsp_highlight_document(client) - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec( - [[ - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - augroup END - ]], - false - ) - end -end - -local function lsp_keymaps(bufnr) - local opts = { noremap = true, silent = true } - vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "lua vim.lsp.buf.declaration()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "lua vim.lsp.buf.definition()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "lua vim.lsp.buf.implementation()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "", "lua vim.lsp.buf.signature_help()", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "rn", "lua vim.lsp.buf.rename()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "lua vim.lsp.buf.references()", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "ca", "lua vim.lsp.buf.code_action()", opts) - -- vim.api.nvim_buf_set_keymap(bufnr, "n", "f", "lua vim.diagnostic.open_float()", opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", 'lua vim.diagnostic.goto_prev({ border = "rounded" })', opts) - vim.api.nvim_buf_set_keymap( - bufnr, - "n", - "gl", - 'lua vim.lsp.diagnostic.show_line_diagnostics({ border = "rounded" })', - opts - ) - vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", 'lua vim.diagnostic.goto_next({ border = "rounded" })', opts) - vim.api.nvim_buf_set_keymap(bufnr, "n", "q", "lua vim.diagnostic.setloclist()", opts) - vim.cmd [[ command! Format execute 'lua vim.lsp.buf.formatting()' ]] -end - -M.on_attach = function(client, bufnr) - if client.name == "tsserver" then - client.resolved_capabilities.document_formatting = false - end - lsp_keymaps(bufnr) - lsp_highlight_document(client) -end - -local capabilities = vim.lsp.protocol.make_client_capabilities() - -local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp") -if not status_ok then - return -end - -M.capabilities = cmp_nvim_lsp.update_capabilities(capabilities) - -return M diff --git a/lua/user/lsp/init.lua b/lua/user/lsp/init.lua deleted file mode 100644 index 8158cf34a..000000000 --- a/lua/user/lsp/init.lua +++ /dev/null @@ -1,8 +0,0 @@ -local status_ok, _ = pcall(require, "lspconfig") -if not status_ok then - return -end - -require "user.lsp.lsp-installer" -require("user.lsp.handlers").setup() -require "user.lsp.null-ls" diff --git a/lua/user/lsp/lsp-installer.lua b/lua/user/lsp/lsp-installer.lua deleted file mode 100644 index 2fe4af201..000000000 --- a/lua/user/lsp/lsp-installer.lua +++ /dev/null @@ -1,28 +0,0 @@ -local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer") -if not status_ok then - return -end - --- Register a handler that will be called for all installed servers. --- Alternatively, you may also register handlers on specific server instances instead (see example below). -lsp_installer.on_server_ready(function(server) - local opts = { - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, - } - - if server.name == "jsonls" then - local jsonls_opts = require("user.lsp.settings.jsonls") - opts = vim.tbl_deep_extend("force", jsonls_opts, opts) - end - - if server.name == "sumneko_lua" then - local sumneko_opts = require("user.lsp.settings.sumneko_lua") - opts = vim.tbl_deep_extend("force", sumneko_opts, opts) - end - - -- This setup() function is exactly the same as lspconfig's setup function. - -- Refer to https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - server:setup(opts) -end) - diff --git a/lua/user/lsp/null-ls.lua b/lua/user/lsp/null-ls.lua deleted file mode 100644 index 874e19c53..000000000 --- a/lua/user/lsp/null-ls.lua +++ /dev/null @@ -1,19 +0,0 @@ -local null_ls_status_ok, null_ls = pcall(require, "null-ls") -if not null_ls_status_ok then - return -end - --- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting -local formatting = null_ls.builtins.formatting --- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics -local diagnostics = null_ls.builtins.diagnostics - -null_ls.setup({ - debug = false, - sources = { - formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }), - formatting.black.with({ extra_args = { "--fast" } }), - formatting.stylua, - -- diagnostics.flake8 - }, -}) diff --git a/lua/user/lsp/settings/jsonls.lua b/lua/user/lsp/settings/jsonls.lua deleted file mode 100644 index 1fffa6863..000000000 --- a/lua/user/lsp/settings/jsonls.lua +++ /dev/null @@ -1,197 +0,0 @@ -local default_schemas = nil -local status_ok, jsonls_settings = pcall(require, "nlspsettings.jsonls") -if status_ok then - default_schemas = jsonls_settings.get_default_schemas() -end - -local schemas = { - { - description = "TypeScript compiler configuration file", - fileMatch = { - "tsconfig.json", - "tsconfig.*.json", - }, - url = "https://json.schemastore.org/tsconfig.json", - }, - { - description = "Lerna config", - fileMatch = { "lerna.json" }, - url = "https://json.schemastore.org/lerna.json", - }, - { - description = "Babel configuration", - fileMatch = { - ".babelrc.json", - ".babelrc", - "babel.config.json", - }, - url = "https://json.schemastore.org/babelrc.json", - }, - { - description = "ESLint config", - fileMatch = { - ".eslintrc.json", - ".eslintrc", - }, - url = "https://json.schemastore.org/eslintrc.json", - }, - { - description = "Bucklescript config", - fileMatch = { "bsconfig.json" }, - url = "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json", - }, - { - description = "Prettier config", - fileMatch = { - ".prettierrc", - ".prettierrc.json", - "prettier.config.json", - }, - url = "https://json.schemastore.org/prettierrc", - }, - { - description = "Vercel Now config", - fileMatch = { "now.json" }, - url = "https://json.schemastore.org/now", - }, - { - description = "Stylelint config", - fileMatch = { - ".stylelintrc", - ".stylelintrc.json", - "stylelint.config.json", - }, - url = "https://json.schemastore.org/stylelintrc", - }, - { - description = "A JSON schema for the ASP.NET LaunchSettings.json files", - fileMatch = { "launchsettings.json" }, - url = "https://json.schemastore.org/launchsettings.json", - }, - { - description = "Schema for CMake Presets", - fileMatch = { - "CMakePresets.json", - "CMakeUserPresets.json", - }, - url = "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json", - }, - { - description = "Configuration file as an alternative for configuring your repository in the settings page.", - fileMatch = { - ".codeclimate.json", - }, - url = "https://json.schemastore.org/codeclimate.json", - }, - { - description = "LLVM compilation database", - fileMatch = { - "compile_commands.json", - }, - url = "https://json.schemastore.org/compile-commands.json", - }, - { - description = "Config file for Command Task Runner", - fileMatch = { - "commands.json", - }, - url = "https://json.schemastore.org/commands.json", - }, - { - description = "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.", - fileMatch = { - "*.cf.json", - "cloudformation.json", - }, - url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json", - }, - { - description = "The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.", - fileMatch = { - "serverless.template", - "*.sam.json", - "sam.json", - }, - url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json", - }, - { - description = "Json schema for properties json file for a GitHub Workflow template", - fileMatch = { - ".github/workflow-templates/**.properties.json", - }, - url = "https://json.schemastore.org/github-workflow-template-properties.json", - }, - { - description = "golangci-lint configuration file", - fileMatch = { - ".golangci.toml", - ".golangci.json", - }, - url = "https://json.schemastore.org/golangci-lint.json", - }, - { - description = "JSON schema for the JSON Feed format", - fileMatch = { - "feed.json", - }, - url = "https://json.schemastore.org/feed.json", - versions = { - ["1"] = "https://json.schemastore.org/feed-1.json", - ["1.1"] = "https://json.schemastore.org/feed.json", - }, - }, - { - description = "Packer template JSON configuration", - fileMatch = { - "packer.json", - }, - url = "https://json.schemastore.org/packer.json", - }, - { - description = "NPM configuration file", - fileMatch = { - "package.json", - }, - url = "https://json.schemastore.org/package.json", - }, - { - description = "JSON schema for Visual Studio component configuration files", - fileMatch = { - "*.vsconfig", - }, - url = "https://json.schemastore.org/vsconfig.json", - }, - { - description = "Resume json", - fileMatch = { "resume.json" }, - url = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json", - }, -} - -local function extend(tab1, tab2) - for _, value in ipairs(tab2) do - table.insert(tab1, value) - end - return tab1 -end - -local extended_schemas = extend(schemas, default_schemas) - -local opts = { - settings = { - json = { - schemas = extended_schemas, - }, - }, - setup = { - commands = { - Format = { - function() - vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 }) - end, - }, - }, - }, -} - -return opts diff --git a/lua/user/lsp/settings/sumneko_lua.lua b/lua/user/lsp/settings/sumneko_lua.lua deleted file mode 100644 index 0ac454a72..000000000 --- a/lua/user/lsp/settings/sumneko_lua.lua +++ /dev/null @@ -1,16 +0,0 @@ -return { - settings = { - - Lua = { - diagnostics = { - globals = { "vim" }, - }, - workspace = { - library = { - [vim.fn.expand("$VIMRUNTIME/lua")] = true, - [vim.fn.stdpath("config") .. "/lua"] = true, - }, - }, - }, - }, -} diff --git a/lua/user/lualine.lua b/lua/user/lualine.lua deleted file mode 100644 index 3318ecd72..000000000 --- a/lua/user/lualine.lua +++ /dev/null @@ -1,93 +0,0 @@ -local status_ok, lualine = pcall(require, "lualine") -if not status_ok then - return -end - -local hide_in_width = function() - return vim.fn.winwidth(0) > 80 -end - -local diagnostics = { - "diagnostics", - sources = { "nvim_diagnostic" }, - sections = { "error", "warn" }, - symbols = { error = " ", warn = " " }, - colored = false, - update_in_insert = false, - always_visible = true, -} - -local diff = { - "diff", - colored = false, - symbols = { added = " ", modified = " ", removed = " " }, -- changes diff symbols - cond = hide_in_width -} - -local mode = { - "mode", - fmt = function(str) - return "-- " .. str .. " --" - end, -} - -local filetype = { - "filetype", - icons_enabled = false, - icon = nil, -} - -local branch = { - "branch", - icons_enabled = true, - icon = "", -} - -local location = { - "location", - padding = 0, -} - --- cool function for progress -local progress = function() - local current_line = vim.fn.line(".") - local total_lines = vim.fn.line("$") - local chars = { "__", "▁▁", "▂▂", "▃▃", "▄▄", "▅▅", "▆▆", "▇▇", "██" } - local line_ratio = current_line / total_lines - local index = math.ceil(line_ratio * #chars) - return chars[index] -end - -local spaces = function() - return "spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth") -end - -lualine.setup({ - options = { - icons_enabled = true, - theme = "auto", - component_separators = { left = "", right = "" }, - section_separators = { left = "", right = "" }, - disabled_filetypes = { "alpha", "dashboard", "NvimTree", "Outline" }, - always_divide_middle = true, - }, - sections = { - lualine_a = { branch, diagnostics }, - lualine_b = { mode }, - lualine_c = {}, - -- lualine_x = { "encoding", "fileformat", "filetype" }, - lualine_x = { diff, spaces, "encoding", filetype }, - lualine_y = { location }, - lualine_z = { progress }, - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = { "filename" }, - lualine_x = { "location" }, - lualine_y = {}, - lualine_z = {}, - }, - tabline = {}, - extensions = {}, -}) diff --git a/lua/user/nvim-tree.lua b/lua/user/nvim-tree.lua deleted file mode 100644 index 9c5170c6b..000000000 --- a/lua/user/nvim-tree.lua +++ /dev/null @@ -1,112 +0,0 @@ --- following options are the default --- each of these are documented in `:help nvim-tree.OPTION_NAME` -vim.g.nvim_tree_icons = { - default = "", - symlink = "", - git = { - unstaged = "", - staged = "S", - unmerged = "", - renamed = "➜", - deleted = "", - untracked = "U", - ignored = "◌", - }, - folder = { - default = "", - open = "", - empty = "", - empty_open = "", - symlink = "", - }, -} - -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 { - disable_netrw = true, - hijack_netrw = true, - open_on_setup = false, - ignore_ft_on_setup = { - "startify", - "dashboard", - "alpha", - }, - auto_close = true, - open_on_tab = false, - hijack_cursor = false, - update_cwd = true, - update_to_buf_dir = { - enable = true, - auto_open = true, - }, - diagnostics = { - enable = true, - icons = { - hint = "", - info = "", - warning = "", - error = "", - }, - }, - update_focused_file = { - enable = true, - update_cwd = true, - ignore_list = {}, - }, - system_open = { - cmd = nil, - args = {}, - }, - filters = { - dotfiles = false, - custom = {}, - }, - git = { - enable = true, - ignore = true, - timeout = 500, - }, - view = { - width = 30, - height = 30, - hide_root_folder = false, - side = "left", - auto_resize = true, - mappings = { - custom_only = false, - list = { - { key = { "l", "", "o" }, cb = tree_cb "edit" }, - { key = "h", cb = tree_cb "close_node" }, - { key = "v", cb = tree_cb "vsplit" }, - }, - }, - number = false, - relativenumber = false, - }, - trash = { - cmd = "trash", - require_confirm = true, - }, - quit_on_open = 0, - git_hl = 1, - disable_window_picker = 0, - root_folder_modifier = ":t", - show_icons = { - git = 1, - folders = 1, - files = 1, - folder_arrows = 1, - tree_width = 30, - }, -} diff --git a/lua/user/options.lua b/lua/user/options.lua deleted file mode 100644 index 799aa9d62..000000000 --- a/lua/user/options.lua +++ /dev/null @@ -1,46 +0,0 @@ -local options = { - backup = false, -- creates a backup file - clipboard = "unnamedplus", -- allows neovim to access the system clipboard - cmdheight = 2, -- more space in the neovim command line for displaying messages - completeopt = { "menuone", "noselect" }, -- mostly just for cmp - conceallevel = 0, -- so that `` is visible in markdown files - fileencoding = "utf-8", -- the encoding written to a file - hlsearch = true, -- highlight all matches on previous search pattern - ignorecase = true, -- ignore case in search patterns - mouse = "a", -- allow the mouse to be used in neovim - pumheight = 10, -- pop up menu height - showmode = false, -- we don't need to see things like -- INSERT -- anymore - showtabline = 2, -- always show tabs - smartcase = true, -- smart case - smartindent = true, -- make indenting smarter again - splitbelow = true, -- force all horizontal splits to go below current window - splitright = true, -- force all vertical splits to go to the right of current window - swapfile = false, -- creates a swapfile - -- termguicolors = true, -- set term gui colors (most terminals support this) - timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds) - undofile = true, -- enable persistent undo - updatetime = 300, -- faster completion (4000ms default) - writebackup = false, -- if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited - expandtab = true, -- convert tabs to spaces - shiftwidth = 2, -- the number of spaces inserted for each indentation - tabstop = 2, -- insert 2 spaces for a tab - cursorline = true, -- highlight the current line - number = true, -- set numbered lines - relativenumber = false, -- set relative numbered lines - numberwidth = 4, -- set number column width to 2 {default 4} - signcolumn = "yes", -- always show the sign column, otherwise it would shift the text each time - wrap = false, -- display lines as one long line - scrolloff = 8, -- is one of my fav - sidescrolloff = 8, - guifont = "monospace:h17", -- the font used in graphical neovim applications -} - -vim.opt.shortmess:append "c" - -for k, v in pairs(options) do - vim.opt[k] = v -end - -vim.cmd "set whichwrap+=<,>,[,],h,l" -vim.cmd [[set iskeyword+=-]] -vim.cmd [[set formatoptions-=cro]] -- TODO: this doesn't seem to work diff --git a/lua/user/plugins.lua b/lua/user/plugins.lua deleted file mode 100644 index 2aa1f935b..000000000 --- a/lua/user/plugins.lua +++ /dev/null @@ -1,102 +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 plugins.lua source | 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 { - display = { - open_fn = function() - return require("packer.util").float { border = "rounded" } - end, - }, -} - --- Install your plugins here -return packer.startup(function(use) - -- My plugins here - use "wbthomason/packer.nvim" -- Have packer manage itself - use "nvim-lua/popup.nvim" -- An implementation of the Popup API from vim in Neovim - use "nvim-lua/plenary.nvim" -- Useful lua functions used ny lots of plugins - use "windwp/nvim-autopairs" -- Autopairs, integrates with both cmp and treesitter - use "numToStr/Comment.nvim" -- Easily comment stuff - use "kyazdani42/nvim-web-devicons" - use "kyazdani42/nvim-tree.lua" - use "akinsho/bufferline.nvim" - use "moll/vim-bbye" - use "nvim-lualine/lualine.nvim" - use "akinsho/toggleterm.nvim" - use "ahmedkhalf/project.nvim" - use "lewis6991/impatient.nvim" - use "lukas-reineke/indent-blankline.nvim" - use "goolord/alpha-nvim" - use "antoinemadec/FixCursorHold.nvim" -- This is needed to fix lsp doc highlight - use "folke/which-key.nvim" - - -- Colorschemes - -- use "lunarvim/colorschemes" -- A bunch of colorschemes you can try out - use "lunarvim/darkplus.nvim" - - -- cmp plugins - use "hrsh7th/nvim-cmp" -- The completion plugin - use "hrsh7th/cmp-buffer" -- buffer completions - use "hrsh7th/cmp-path" -- path completions - use "hrsh7th/cmp-cmdline" -- cmdline completions - use "saadparwaiz1/cmp_luasnip" -- snippet completions - use "hrsh7th/cmp-nvim-lsp" - - -- snippets - use "L3MON4D3/LuaSnip" --snippet engine - use "rafamadriz/friendly-snippets" -- a bunch of snippets to use - - -- LSP - use "neovim/nvim-lspconfig" -- enable LSP - use "williamboman/nvim-lsp-installer" -- simple to use language server installer - use "tamago324/nlsp-settings.nvim" -- language server settings defined in json for - use "jose-elias-alvarez/null-ls.nvim" -- for formatters and linters - - -- Telescope - use "nvim-telescope/telescope.nvim" - - -- Treesitter - use { - "nvim-treesitter/nvim-treesitter", - run = ":TSUpdate", - } - use "JoosepAlviste/nvim-ts-context-commentstring" - - -- Git - use "lewis6991/gitsigns.nvim" - - -- 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/lua/user/project.lua b/lua/user/project.lua deleted file mode 100644 index 27a1329d4..000000000 --- a/lua/user/project.lua +++ /dev/null @@ -1,48 +0,0 @@ -local status_ok, project = pcall(require, "project_nvim") -if not status_ok then - return -end -project.setup({ - ---@usage set to false to disable project.nvim. - --- This is on by default since it's currently the expected behavior. - active = true, - - on_config_done = nil, - - ---@usage set to true to disable setting the current-woriking directory - --- Manual mode doesn't automatically change your root directory, so you have - --- the option to manually do so using `:ProjectRoot` command. - manual_mode = false, - - ---@usage Methods of detecting the root directory - --- Allowed values: **"lsp"** uses the native neovim lsp - --- **"pattern"** uses vim-rooter like glob pattern matching. Here - --- order matters: if one is not detected, the other is used as fallback. You - --- can also delete or rearangne the detection methods. - -- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project - detection_methods = { "pattern" }, - - ---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods - patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json" }, - - ---@ Show hidden files in telescope when searching for files in a project - show_hidden = false, - - ---@usage When set to false, you will get a message when project.nvim changes your directory. - -- When set to false, you will get a message when project.nvim changes your directory. - silent_chdir = true, - - ---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... } - ignore_lsp = {}, - - ---@type string - ---@usage path to store the project history for use in telescope - datapath = vim.fn.stdpath("data"), -}) - -local tele_status_ok, telescope = pcall(require, "telescope") -if not tele_status_ok then - return -end - -telescope.load_extension('projects') diff --git a/lua/user/telescope.lua b/lua/user/telescope.lua deleted file mode 100644 index 0706b5166..000000000 --- a/lua/user/telescope.lua +++ /dev/null @@ -1,96 +0,0 @@ -local status_ok, telescope = pcall(require, "telescope") -if not status_ok then - return -end - -local actions = require "telescope.actions" - -telescope.setup { - defaults = { - - prompt_prefix = " ", - selection_caret = " ", - path_display = { "smart" }, - - mappings = { - i = { - [""] = actions.cycle_history_next, - [""] = actions.cycle_history_prev, - - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - - [""] = actions.close, - - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - - [""] = actions.select_default, - [""] = actions.select_horizontal, - [""] = actions.select_vertical, - [""] = actions.select_tab, - - [""] = actions.preview_scrolling_up, - [""] = actions.preview_scrolling_down, - - [""] = actions.results_scrolling_up, - [""] = actions.results_scrolling_down, - - [""] = actions.toggle_selection + actions.move_selection_worse, - [""] = actions.toggle_selection + actions.move_selection_better, - [""] = actions.send_to_qflist + actions.open_qflist, - [""] = actions.send_selected_to_qflist + actions.open_qflist, - [""] = actions.complete_tag, - [""] = actions.which_key, -- keys from pressing - }, - - n = { - [""] = actions.close, - [""] = actions.select_default, - [""] = actions.select_horizontal, - [""] = actions.select_vertical, - [""] = actions.select_tab, - - [""] = actions.toggle_selection + actions.move_selection_worse, - [""] = actions.toggle_selection + actions.move_selection_better, - [""] = actions.send_to_qflist + actions.open_qflist, - [""] = 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, - - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - ["gg"] = actions.move_to_top, - ["G"] = actions.move_to_bottom, - - [""] = actions.preview_scrolling_up, - [""] = actions.preview_scrolling_down, - - [""] = actions.results_scrolling_up, - [""] = actions.results_scrolling_down, - - ["?"] = actions.which_key, - }, - }, - }, - pickers = { - -- Default configuration for builtin pickers goes here: - -- picker_name = { - -- picker_config_key = value, - -- ... - -- } - -- Now the picker_config_key will be applied every time you call this - -- builtin picker - }, - extensions = { - -- Your extension configuration goes here: - -- extension_name = { - -- extension_config_key = value, - -- } - -- please take a look at the readme of the extension you want to configure - }, -} diff --git a/lua/user/toggleterm.lua b/lua/user/toggleterm.lua deleted file mode 100644 index cecbd9984..000000000 --- a/lua/user/toggleterm.lua +++ /dev/null @@ -1,70 +0,0 @@ -local status_ok, toggleterm = pcall(require, "toggleterm") -if not status_ok then - return -end - -toggleterm.setup({ - size = 20, - open_mapping = [[]], - hide_numbers = true, - shade_filetypes = {}, - shade_terminals = true, - shading_factor = 2, - start_in_insert = true, - insert_mappings = true, - persist_size = true, - direction = "float", - close_on_exit = true, - shell = vim.o.shell, - float_opts = { - border = "curved", - winblend = 0, - highlights = { - border = "Normal", - background = "Normal", - }, - }, -}) - -function _G.set_terminal_keymaps() - local opts = {noremap = true} - vim.api.nvim_buf_set_keymap(0, 't', '', [[]], opts) - vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[h]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[j]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[k]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[l]], opts) -end - -vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()') - -local Terminal = require("toggleterm.terminal").Terminal -local lazygit = Terminal:new({ cmd = "lazygit", hidden = true }) - -function _LAZYGIT_TOGGLE() - lazygit:toggle() -end - -local node = Terminal:new({ cmd = "node", hidden = true }) - -function _NODE_TOGGLE() - node:toggle() -end - -local ncdu = Terminal:new({ cmd = "ncdu", hidden = true }) - -function _NCDU_TOGGLE() - ncdu:toggle() -end - -local htop = Terminal:new({ cmd = "htop", hidden = true }) - -function _HTOP_TOGGLE() - htop:toggle() -end - -local python = Terminal:new({ cmd = "python", hidden = true }) - -function _PYTHON_TOGGLE() - python:toggle() -end diff --git a/lua/user/treesitter.lua b/lua/user/treesitter.lua deleted file mode 100644 index 6f14cfc18..000000000 --- a/lua/user/treesitter.lua +++ /dev/null @@ -1,23 +0,0 @@ -local status_ok, configs = pcall(require, "nvim-treesitter.configs") -if not status_ok then - return -end - -configs.setup { - ensure_installed = "maintained", -- one of "all", "maintained" (parsers with maintainers), or a list of languages - sync_install = false, -- install languages synchronously (only applied to `ensure_installed`) - ignore_install = { "" }, -- List of parsers to ignore installing - autopairs = { - enable = true, - }, - highlight = { - enable = true, -- false will disable the whole extension - disable = { "" }, -- list of language that will be disabled - additional_vim_regex_highlighting = true, - }, - indent = { enable = true, disable = { "yaml" } }, - context_commentstring = { - enable = true, - enable_autocmd = false, - }, -} diff --git a/lua/user/whichkey.lua b/lua/user/whichkey.lua deleted file mode 100644 index 11b6a7ea3..000000000 --- a/lua/user/whichkey.lua +++ /dev/null @@ -1,187 +0,0 @@ -local status_ok, which_key = pcall(require, "which-key") -if not status_ok then - return -end - -local setup = { - plugins = { - marks = true, -- shows a list of your marks on ' and ` - registers = true, -- shows your registers on " in NORMAL or in INSERT mode - spelling = { - enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions - suggestions = 20, -- how many suggestions should be shown in the list? - }, - -- the presets plugin, adds help for a bunch of default keybindings in Neovim - -- No actual key bindings are created - presets = { - operators = false, -- adds help for operators like d, y, ... and registers them for motion / text object completion - motions = true, -- adds help for motions - text_objects = true, -- help for text objects triggered after entering an operator - windows = true, -- default bindings on - nav = true, -- misc bindings to work with windows - z = true, -- bindings for folds, spelling and others prefixed with z - g = true, -- bindings for prefixed with g - }, - }, - -- add operators that will trigger motion and text object completion - -- to enable all native operators, set the preset / operators plugin above - -- operators = { gc = "Comments" }, - key_labels = { - -- override the label used to display some keys. It doesn't effect WK in any other way. - -- For example: - -- [""] = "SPC", - -- [""] = "RET", - -- [""] = "TAB", - }, - icons = { - breadcrumb = "»", -- symbol used in the command line area that shows your active key combo - separator = "➜", -- symbol used between a key and it's label - group = "+", -- symbol prepended to a group - }, - popup_mappings = { - scroll_down = "", -- binding to scroll down inside the popup - scroll_up = "", -- binding to scroll up inside the popup - }, - window = { - border = "rounded", -- none, single, double, shadow - position = "bottom", -- bottom, top - margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] - padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] - winblend = 0, - }, - layout = { - height = { min = 4, max = 25 }, -- min and max height of the columns - width = { min = 20, max = 50 }, -- min and max width of the columns - spacing = 3, -- spacing between columns - align = "left", -- align columns left, center or right - }, - ignore_missing = true, -- enable this to hide mappings for which you didn't specify a label - hidden = { "", "", "", "", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate - show_help = true, -- show help message on the command line when the popup is visible - triggers = "auto", -- automatically setup triggers - -- triggers = {""} -- or specify a list manually - triggers_blacklist = { - -- list of mode / prefixes that should never be hooked by WhichKey - -- this is mostly relevant for key maps that start with a native binding - -- most people should not need to change this - i = { "j", "k" }, - v = { "j", "k" }, - }, -} - -local opts = { - mode = "n", -- NORMAL mode - prefix = "", - buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings - silent = true, -- use `silent` when creating keymaps - noremap = true, -- use `noremap` when creating keymaps - nowait = true, -- use `nowait` when creating keymaps -} - -local mappings = { - ["a"] = { "Alpha", "Alpha" }, - ["b"] = { - "lua require('telescope.builtin').buffers(require('telescope.themes').get_dropdown{previewer = false})", - "Buffers", - }, - ["e"] = { "NvimTreeToggle", "Explorer" }, - ["w"] = { "w!", "Save" }, - ["q"] = { "q!", "Quit" }, - ["c"] = { "Bdelete!", "Close Buffer" }, - ["h"] = { "nohlsearch", "No Highlight" }, - ["f"] = { - "lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown{previewer = false})", - "Find files", - }, - ["F"] = { "Telescope live_grep theme=ivy", "Find Text" }, - ["P"] = { "lua require('telescope').extensions.projects.projects()", "Projects" }, - - p = { - name = "Packer", - c = { "PackerCompile", "Compile" }, - i = { "PackerInstall", "Install" }, - s = { "PackerSync", "Sync" }, - S = { "PackerStatus", "Status" }, - u = { "PackerUpdate", "Update" }, - }, - - g = { - name = "Git", - g = { "lua _LAZYGIT_TOGGLE()", "Lazygit" }, - j = { "lua require 'gitsigns'.next_hunk()", "Next Hunk" }, - k = { "lua require 'gitsigns'.prev_hunk()", "Prev Hunk" }, - l = { "lua require 'gitsigns'.blame_line()", "Blame" }, - p = { "lua require 'gitsigns'.preview_hunk()", "Preview Hunk" }, - r = { "lua require 'gitsigns'.reset_hunk()", "Reset Hunk" }, - R = { "lua require 'gitsigns'.reset_buffer()", "Reset Buffer" }, - s = { "lua require 'gitsigns'.stage_hunk()", "Stage Hunk" }, - u = { - "lua require 'gitsigns'.undo_stage_hunk()", - "Undo Stage Hunk", - }, - o = { "Telescope git_status", "Open changed file" }, - b = { "Telescope git_branches", "Checkout branch" }, - c = { "Telescope git_commits", "Checkout commit" }, - d = { - "Gitsigns diffthis HEAD", - "Diff", - }, - }, - - l = { - name = "LSP", - a = { "lua vim.lsp.buf.code_action()", "Code Action" }, - d = { - "Telescope lsp_document_diagnostics", - "Document Diagnostics", - }, - w = { - "Telescope lsp_workspace_diagnostics", - "Workspace Diagnostics", - }, - f = { "lua vim.lsp.buf.formatting()", "Format" }, - i = { "LspInfo", "Info" }, - I = { "LspInstallInfo", "Installer Info" }, - j = { - "lua vim.lsp.diagnostic.goto_next()", - "Next Diagnostic", - }, - k = { - "lua vim.lsp.diagnostic.goto_prev()", - "Prev Diagnostic", - }, - l = { "lua vim.lsp.codelens.run()", "CodeLens Action" }, - q = { "lua vim.lsp.diagnostic.set_loclist()", "Quickfix" }, - r = { "lua vim.lsp.buf.rename()", "Rename" }, - s = { "Telescope lsp_document_symbols", "Document Symbols" }, - S = { - "Telescope lsp_dynamic_workspace_symbols", - "Workspace Symbols", - }, - }, - s = { - name = "Search", - b = { "Telescope git_branches", "Checkout branch" }, - c = { "Telescope colorscheme", "Colorscheme" }, - h = { "Telescope help_tags", "Find Help" }, - M = { "Telescope man_pages", "Man Pages" }, - r = { "Telescope oldfiles", "Open Recent File" }, - R = { "Telescope registers", "Registers" }, - k = { "Telescope keymaps", "Keymaps" }, - C = { "Telescope commands", "Commands" }, - }, - - t = { - name = "Terminal", - n = { "lua _NODE_TOGGLE()", "Node" }, - u = { "lua _NCDU_TOGGLE()", "NCDU" }, - t = { "lua _HTOP_TOGGLE()", "Htop" }, - p = { "lua _PYTHON_TOGGLE()", "Python" }, - f = { "ToggleTerm direction=float", "Float" }, - h = { "ToggleTerm size=10 direction=horizontal", "Horizontal" }, - v = { "ToggleTerm size=80 direction=vertical", "Vertical" }, - }, -} - -which_key.setup(setup) -which_key.register(mappings, opts)