diff --git a/init.lua b/init.lua index 9d15414..c3a6da5 100644 --- a/init.lua +++ b/init.lua @@ -1,14 +1,14 @@ ----GENERAL SETTINGS local opt = vim.opt -vim.g.mapleader = ' ' -opt.helplang = 'ja', 'en' +vim.g.mapleader = " " +opt.helplang = "ja", "en" opt.tabstop = 2 opt.shiftwidth = 2 opt.expandtab = true opt.list = true -opt.listchars = {tab='»-', trail='-', eol='↲', extends='»', precedes='«', nbsp='%'} +opt.listchars = { tab = "»-", trail = "-", eol = "↲", extends = "»", precedes = "«", nbsp = "%" } opt.wrap = true -opt.signcolumn = 'yes' +opt.signcolumn = "yes" opt.smartcase = true opt.ignorecase = true opt.wrapscan = true @@ -16,799 +16,812 @@ opt.hidden = true opt.startofline = false opt.showmatch = true opt.matchtime = 1 -opt.guicursor = '' +opt.guicursor = "" opt.cursorline = true opt.wildmenu = true opt.number = true opt.showcmd = true opt.autoread = true opt.hlsearch = true -opt.backspace:append{'indent', 'eol', 'start'} +opt.backspace:append({ "indent", "eol", "start" }) opt.showtabline = 1 opt.laststatus = 3 -opt.ambiwidth = 'single' +opt.ambiwidth = "single" opt.confirm = true opt.pumblend = 15 opt.winblend = 15 -opt.mouse = 'a' +opt.mouse = "a" opt.cmdheight = 2 opt.timeout = true opt.ttimeout = true opt.ttimeoutlen = 10 -opt.clipboard:append{'unnamedplus'} +opt.clipboard:append({ "unnamedplus" }) opt.termguicolors = true opt.showmode = false -opt.completeopt:append{'menuone', 'noinsert'} +opt.completeopt:append({ "menuone", "noinsert" }) opt.backup = false opt.swapfile = false -opt.encoding = 'utf-8' -opt.fileencodings = {'utf-8', 'iso-2022-jp', 'cp932', 'euc-jp', 'sjis'} -vim.opt.shortmess:append('I') -vim.cmd('set completeopt-=preview') - +opt.encoding = "utf-8" +opt.fileencodings = { "utf-8", "iso-2022-jp", "cp932", "euc-jp", "sjis" } +vim.opt.shortmess:append("I") +vim.cmd("set completeopt-=preview") ----ADVANCED SETTINGS --KEEP CURSOR -vim.api.nvim_create_autocmd({ 'BufReadPost' }, { - pattern = { '*' }, - callback = function() - vim.api.nvim_exec('silent! normal! g`"zv', false) - end, +vim.api.nvim_create_autocmd({ "BufReadPost" }, { + pattern = { "*" }, + callback = function() + vim.api.nvim_exec('silent! normal! g`"zv', false) + end, }) - ----KEY MAPPING --EDIT -vim.keymap.set('n', 'ew', ':w') -vim.keymap.set('n', 'eq', ':wq') -vim.keymap.set('n', 'Q', ':quit!') -vim.keymap.set('n', 'q', ':bd') -vim.keymap.set('n', '', ':%s///cg') -vim.keymap.set('n', '', ":echo wordcount()['chars']") +vim.keymap.set("n", "ew", ":w") +vim.keymap.set("n", "eq", ":wq") +vim.keymap.set("n", "Q", ":quit!") +vim.keymap.set("n", "q", ":bd") +vim.keymap.set("n", "", ":%s///cg") +vim.keymap.set("n", "", ":echo wordcount()['chars']") --TAB -vim.keymap.set('n', '', ':bprev', {silent = true}) -vim.keymap.set('n', 't', ':tabclose', {silent = true}) -vim.keymap.set('n', ']b', ':bnext', {silent =true}) +vim.keymap.set("n", "", ":bprev", { silent = true }) +vim.keymap.set("n", "t", ":tabclose", { silent = true }) +vim.keymap.set("n", "]b", ":bnext", { silent = true }) --SPLIT -vim.keymap.set('n', 'sv', ':vsplit', {silent = true}) -vim.keymap.set('n', 'sp', ':split', {silent =true}) +vim.keymap.set("n", "sv", ":vsplit", { silent = true }) +vim.keymap.set("n", "sp", ":split", { silent = true }) --NOP -vim.keymap.set('n', '', '') -vim.keymap.set('n', '<2-MiddleMouse>', '') -vim.keymap.set('n', '<3-MiddleMouse>', '') -vim.keymap.set('n', '<4-MiddleMouse>', '') -vim.keymap.set('i', '<1-MiddleMouse>', '') -vim.keymap.set('i', '<2-MiddleMouse>', '') -vim.keymap.set('i', '<3-MiddleMouse>', '') -vim.keymap.set('i', '<4-MiddleMouse>', '') -vim.keymap.set('n', 'qq', '') -vim.keymap.set('v', 'qq', '') -vim.keymap.set('n', 'ZZ', '') -vim.keymap.set('n', 'ZQ', '') -vim.keymap.set('n', '', '') -vim.keymap.set('n', '', '') -vim.keymap.set('n', 'x', '"_x') -vim.keymap.set('v', 'x', '"_x') -vim.keymap.set('n', 's', '"_s') +vim.keymap.set("n", "", "") +vim.keymap.set("n", "<2-MiddleMouse>", "") +vim.keymap.set("n", "<3-MiddleMouse>", "") +vim.keymap.set("n", "<4-MiddleMouse>", "") +vim.keymap.set("i", "<1-MiddleMouse>", "") +vim.keymap.set("i", "<2-MiddleMouse>", "") +vim.keymap.set("i", "<3-MiddleMouse>", "") +vim.keymap.set("i", "<4-MiddleMouse>", "") +vim.keymap.set("n", "qq", "") +vim.keymap.set("v", "qq", "") +vim.keymap.set("n", "ZZ", "") +vim.keymap.set("n", "ZQ", "") +vim.keymap.set("n", "", "") +vim.keymap.set("n", "", "") +vim.keymap.set("n", "x", '"_x') +vim.keymap.set("v", "x", '"_x') +vim.keymap.set("n", "s", '"_s') --MOVE -vim.keymap.set('n', 'k', 'gk') -vim.keymap.set('n', 'j', 'gj') -vim.keymap.set('n', '', 'gk') -vim.keymap.set('n', '', 'gj') -vim.keymap.set('n', 'O', ":call append(expand('.'), '')j") -vim.keymap.set('n', 'sh', 'h') -vim.keymap.set('n', 'sj', 'j') -vim.keymap.set('n', 'sk', 'k') -vim.keymap.set('n', 'sl', 'l') -vim.keymap.set('n', 'sH', 'H') -vim.keymap.set('n', 'sJ', 'J') -vim.keymap.set('n', 'sK', 'K') -vim.keymap.set('n', 'sL', 'L') +vim.keymap.set("n", "k", "gk") +vim.keymap.set("n", "j", "gj") +vim.keymap.set("n", "", "gk") +vim.keymap.set("n", "", "gj") +vim.keymap.set("n", "O", ":call append(expand('.'), '')j") +vim.keymap.set("n", "sh", "h") +vim.keymap.set("n", "sj", "j") +vim.keymap.set("n", "sk", "k") +vim.keymap.set("n", "sl", "l") +vim.keymap.set("n", "sH", "H") +vim.keymap.set("n", "sJ", "J") +vim.keymap.set("n", "sK", "K") +vim.keymap.set("n", "sL", "L") --COPY -vim.keymap.set('n', 'p', ']p') -vim.keymap.set('n', 'P', ']P') -vim.keymap.set('n', ']p', 'p') -vim.keymap.set('n', ']P', 'P') - +vim.keymap.set("n", "p", "]p") +vim.keymap.set("n", "P", "]P") +vim.keymap.set("n", "]p", "p") +vim.keymap.set("n", "]P", "P") ----PLUGINS --MANAGER -local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim' +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', - lazypath, - }) + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", + lazypath, + }) end vim.opt.rtp:prepend(lazypath) -require('lazy').setup({ -defaults = {lazy = true}, -{'nvim-lualine/lualine.nvim', event = 'VeryLazy'}, -{'nvim-telescope/telescope.nvim', cmd = 'Telescope'}, -{'nvim-telescope/telescope-file-browser.nvim', event = 'VeryLazy'}, -{'lewis6991/gitsigns.nvim', config = true, event = 'VeryLazy'}, -{'ryanoasis/vim-devicons', event = 'VeryLazy'}, -{'nvim-tree/nvim-web-devicons', event = 'VeryLazy'}, -{'williamboman/mason.nvim', event = 'BufRead', cmd = {'Mason', 'MasonInstall'}, }, -{'neovim/nvim-lspconfig', event = 'LspAttach'}, -{'williamboman/mason-lspconfig.nvim', event = 'LspAttach'}, -{'jay-babu/mason-null-ls.nvim', event = 'LspAttach'}, -{'nvimtools/none-ls.nvim', event = 'LspAttach'}, -{'mfussenegger/nvim-dap', event = 'LspAttach'}, -{'rcarriga/nvim-dap-ui', event = 'LspAttach'}, -{'suketa/nvim-dap-ruby', config = true, event = 'LspAttach'}, -{'is0n/jaq-nvim', event = 'LspAttach'}, -{'j-hui/fidget.nvim', config = true, event = 'LspAttach'}, -{'sainnhe/edge', event = 'VeryLazy'}, -{'nvim-lua/plenary.nvim', event = 'VeryLazy'}, -{'stevearc/dressing.nvim', event = 'VeryLazy'}, -{'hrsh7th/nvim-cmp', event = 'VeryLazy'}, -{'hrsh7th/cmp-nvim-lsp', event = 'InsertEnter'}, -{'hrsh7th/cmp-buffer', event = 'InsertEnter'}, -{'hrsh7th/cmp-path', event = 'InsertEnter'}, -{'hrsh7th/cmp-vsnip', event = 'InsertEnter'}, -{'hrsh7th/cmp-cmdline', event = 'ModeChanged'}, -{'hrsh7th/cmp-nvim-lsp-signature-help', event = 'InsertEnter'}, -{'hrsh7th/cmp-nvim-lsp-document-symbol', event = 'InsertEnter'}, -{'hrsh7th/cmp-calc', event = 'InsertEnter'}, -{'onsails/lspkind.nvim', event = 'InsertEnter'}, -{'hrsh7th/vim-vsnip', event = 'InsertEnter'}, -{'hrsh7th/vim-vsnip-integ', event = 'InsertEnter'}, -{'rafamadriz/friendly-snippets', event = 'InsertEnter'}, -{'nvim-treesitter/nvim-treesitter', event = 'VeryLazy'}, -{'yioneko/nvim-yati', event = 'VeryLazy'}, -{'windwp/nvim-autopairs', config = true, event = 'InsertEnter'}, -{'andymass/vim-matchup', event = 'VeryLazy'}, -{'Maan2003/lsp_lines.nvim', config = true, event = 'VeryLazy'}, -{'lambdalisue/suda.vim', cmd = {'SudaWrite', 'SudaRead'},}, -{'lukas-reineke/indent-blankline.nvim', main = 'ibl', opts = {}, event = 'VeryLazy'}, -{'kevinhwang91/nvim-hlslens', event = 'VeryLazy'}, -{'numToStr/Comment.nvim', config = true, event = 'VeryLazy'}, -{'rhysd/clever-f.vim', event = 'VeryLazy'}, -{'luochen1990/rainbow', event = 'VeryLazy'}, -{'echasnovski/mini.surround', event = 'ModeChanged'}, -{'echasnovski/mini.ai', event = 'ModeChanged'}, -{'mvllow/modes.nvim', event = 'VeryLazy'}, -{'monaqa/dial.nvim', event = 'VeryLazy'}, -{'tpope/vim-repeat', event = 'VeryLazy'}, -{'nvim-zh/colorful-winsep.nvim', config = true, event = 'WinNew'}, -{'vim-jp/vimdoc-ja', ft = 'help'}, +require("lazy").setup({ + defaults = { lazy = true }, + { "nvim-lualine/lualine.nvim", event = "VeryLazy" }, + { "nvim-telescope/telescope.nvim", cmd = "Telescope" }, + { "nvim-telescope/telescope-file-browser.nvim", event = "VeryLazy" }, + { "lewis6991/gitsigns.nvim", config = true, event = "VeryLazy" }, + { "ryanoasis/vim-devicons", event = "VeryLazy" }, + { "nvim-tree/nvim-web-devicons", event = "VeryLazy" }, + { "williamboman/mason.nvim", event = "BufRead", cmd = { "Mason", "MasonInstall" } }, + { "neovim/nvim-lspconfig", event = "LspAttach" }, + { "williamboman/mason-lspconfig.nvim", event = "LspAttach" }, + { "jay-babu/mason-null-ls.nvim", event = "LspAttach" }, + { "nvimtools/none-ls.nvim", event = "LspAttach" }, + { "mfussenegger/nvim-dap", event = "LspAttach" }, + { "rcarriga/nvim-dap-ui", event = "LspAttach" }, + { "suketa/nvim-dap-ruby", config = true, event = "LspAttach" }, + { "nvimdev/lspsaga.nvim", event = "LspAttach" }, + { "is0n/jaq-nvim", event = "LspAttach" }, + { "j-hui/fidget.nvim", config = true, event = "LspAttach" }, + { "sainnhe/edge", event = "VeryLazy" }, + { "nvim-lua/plenary.nvim", event = "VeryLazy" }, + { "stevearc/dressing.nvim", event = "VeryLazy" }, + { "hrsh7th/nvim-cmp", event = "VeryLazy" }, + { "hrsh7th/cmp-nvim-lsp", event = "InsertEnter" }, + { "hrsh7th/cmp-buffer", event = "InsertEnter" }, + { "hrsh7th/cmp-path", event = "InsertEnter" }, + { "hrsh7th/cmp-vsnip", event = "InsertEnter" }, + { "hrsh7th/cmp-cmdline", event = "ModeChanged" }, + { "hrsh7th/cmp-nvim-lsp-signature-help", event = "InsertEnter" }, + { "hrsh7th/cmp-nvim-lsp-document-symbol", event = "InsertEnter" }, + { "hrsh7th/cmp-calc", event = "InsertEnter" }, + { "onsails/lspkind.nvim", event = "InsertEnter" }, + { "hrsh7th/vim-vsnip", event = "InsertEnter" }, + { "hrsh7th/vim-vsnip-integ", event = "InsertEnter" }, + { "rafamadriz/friendly-snippets", event = "InsertEnter" }, + { "nvim-treesitter/nvim-treesitter", event = "VeryLazy" }, + { "yioneko/nvim-yati", event = "VeryLazy" }, + { "windwp/nvim-autopairs", config = true, event = "InsertEnter" }, + { "andymass/vim-matchup", event = "VeryLazy" }, + { "lambdalisue/suda.vim", cmd = { "SudaWrite", "SudaRead" } }, + { "lukas-reineke/indent-blankline.nvim", main = "ibl", opts = {}, event = "VeryLazy" }, + { "kevinhwang91/nvim-hlslens", event = "VeryLazy" }, + { "numToStr/Comment.nvim", config = true, event = "VeryLazy" }, + { "rhysd/clever-f.vim", event = "VeryLazy" }, + { "luochen1990/rainbow", event = "VeryLazy" }, + { "echasnovski/mini.surround", event = "ModeChanged" }, + { "echasnovski/mini.ai", event = "ModeChanged" }, + { "mvllow/modes.nvim", event = "VeryLazy" }, + { "monaqa/dial.nvim", event = "VeryLazy" }, + { "tpope/vim-repeat", event = "VeryLazy" }, + { "nvim-zh/colorful-winsep.nvim", config = true, event = "WinNew" }, + { "vim-jp/vimdoc-ja", ft = "help" }, ---non-lazy -{'vim-denops/denops.vim', lazy = false}, -{'yuki-yano/fuzzy-motion.vim', lazy = false}, -{'lambdalisue/gin.vim', lazy = false}, -{'rbtnn/vim-ambiwidth', lazy = false}, -{'lambdalisue/kensaku-search.vim', lazy = false}, -{'lambdalisue/kensaku.vim', lazy = false}, -{'brenoprata10/nvim-highlight-colors', config = true, lazy = false}, + --non-lazy + { "vim-denops/denops.vim", lazy = false }, + { "yuki-yano/fuzzy-motion.vim", lazy = false }, + { "lambdalisue/gin.vim", lazy = false }, + { "rbtnn/vim-ambiwidth", lazy = false }, + { "lambdalisue/kensaku-search.vim", lazy = false }, + { "lambdalisue/kensaku.vim", lazy = false }, + { "brenoprata10/nvim-highlight-colors", config = true, lazy = false }, ---disable default plugins - performance = { - rtp = { - disable_plugins = { - 'netrw', - 'netrwPlugin', - 'netrwSettings', - 'netrwFileHandlers', - 'gzip', - 'zip', - 'zipPlugin', - 'tar', - 'tarPlugin', - 'getscript', - 'getscriptPlugin', - 'vimball', - 'vimballPlugin', - '2html_plugin', - 'logipat', - 'rrhelper', - 'spellfile_plugin', - 'sql_completion', - }, - }, - }, + --disable default plugins + performance = { + rtp = { + disable_plugins = { + "netrw", + "netrwPlugin", + "netrwSettings", + "netrwFileHandlers", + "gzip", + "zip", + "zipPlugin", + "tar", + "tarPlugin", + "getscript", + "getscriptPlugin", + "vimball", + "vimballPlugin", + "2html_plugin", + "logipat", + "rrhelper", + "spellfile_plugin", + "sql_completion", + }, + }, + }, }) - --lualine -require('lualine').setup { -options = { - icons_enabled = true, - component_separators = { left = '', right = ''}, - section_separators = { left = '', right = ''}, - disabled_filetypes = {'TelescopePrompt'}, - always_divide_middle = true, - colored = false, - globalstatus = true, - }, - sections = { - lualine_a = {''}, - lualine_b = {'branch', 'diff'}, - lualine_c = { - { - 'filename', - path = 1, - file_status = true, - shorting_target = 40, - symbols = { - modified = '[+]', - readonly = '[RO]', - unnamed = 'Untitled', - } - } - }, - lualine_x = {'filetype'}, - lualine_y = { - { - 'diagnostics', - source = {'nvim-lsp'}, - }, - {'progress'}, - {'location'} - }, - lualine_z = {''} - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = {'filename'}, - lualine_x = {'location'}, - lualine_y = {}, - lualine_z = {} - }, - tabline = {}, - extensions = {} -} - +require("lualine").setup({ + options = { + icons_enabled = true, + component_separators = { left = "", right = "" }, + section_separators = { left = "", right = "" }, + disabled_filetypes = { "TelescopePrompt" }, + always_divide_middle = true, + colored = false, + globalstatus = true, + }, + sections = { + lualine_a = { "" }, + lualine_b = { "branch", "diff" }, + lualine_c = { + { + "filename", + path = 1, + file_status = true, + shorting_target = 40, + symbols = { + modified = "[+]", + readonly = "[RO]", + unnamed = "Untitled", + }, + }, + }, + lualine_x = { "filetype" }, + lualine_y = { + { + "diagnostics", + source = { "nvim-lsp" }, + }, + { "progress" }, + { "location" }, + }, + lualine_z = { "" }, + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = { "filename" }, + lualine_x = { "location" }, + lualine_y = {}, + lualine_z = {}, + }, + tabline = {}, + extensions = {}, +}) --telescope -require('telescope').setup({ - defaults = { - borderchars = { '─', '│', '─', '│', '┌', '┐', '┘', '└' }, - color_devicons = true, - file_ignore_patterns = { 'node_modules', '.git', '.svg', '.npm', 'go' }, - mappings = { - i = { - [''] = require('telescope.actions').close, - }, - }, - }, +require("telescope").setup({ + defaults = { + borderchars = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, + color_devicons = true, + file_ignore_patterns = { "node_modules", ".git", ".svg", ".npm", "go" }, + mappings = { + i = { + [""] = require("telescope.actions").close, + }, + }, + }, }) -vim.keymap.set('n', '.', 'Telescope find_files hidden=true') -vim.keymap.set('n', ',', 'Telescope oldfiles') -vim.keymap.set('n', 'l', 'Telescope live_grep grep_open_files=true') -vim.keymap.set('n', 'k', 'Telescope live_grep') -vim.keymap.set('n', 'f', 'Telescope buffers') -vim.keymap.set('n', 'h', 'Telescope help_tags') -vim.keymap.set('n', 'y', 'Telescope registers') -vim.keymap.set('n', 'gd', 'Telescope lsp_definitions') -vim.keymap.set('n', 'gr', 'Telescope lsp_references') -vim.keymap.set('n', 'gi', 'Telescope lsp_implementations') -vim.keymap.set('n', 'gx', 'Telescope diagnostics') -vim.keymap.set('n', 'e', 'Telescope file_browser') +vim.keymap.set("n", ".", "Telescope find_files hidden=true") +vim.keymap.set("n", ",", "Telescope oldfiles") +vim.keymap.set("n", "l", "Telescope live_grep grep_open_files=true") +vim.keymap.set("n", "k", "Telescope live_grep") +vim.keymap.set("n", "f", "Telescope buffers") +vim.keymap.set("n", "h", "Telescope help_tags") +vim.keymap.set("n", "y", "Telescope registers") +vim.keymap.set("n", "n", "Telescope lsp_references") +vim.keymap.set("n", "m", "Telescope diagnostics") +vim.keymap.set("n", "x", "Telescope lsp_document_symbols") +vim.keymap.set("n", "e", "Telescope file_browser") -local fb_actions = require 'telescope'.extensions.file_browser.actions -local previewers = require('telescope.previewers') -local Job = require('plenary.job') +local fb_actions = require("telescope").extensions.file_browser.actions +local previewers = require("telescope.previewers") +local Job = require("plenary.job") local new_maker = function(filepath, bufnr, opts) - filepath = vim.fn.expand(filepath) - Job:new({ - command = 'file', - args = { '--mime-type', '-b', filepath }, - on_exit = function(j) - local mime_type = vim.split(j:result()[1], '/')[1] - if mime_type == 'text' then - previewers.buffer_previewer_maker(filepath, bufnr, opts) - else - vim.schedule(function() - vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, { 'BINARY' }) - end) - end - end - }):sync() + filepath = vim.fn.expand(filepath) + Job:new({ + command = "file", + args = { "--mime-type", "-b", filepath }, + on_exit = function(j) + local mime_type = vim.split(j:result()[1], "/")[1] + if mime_type == "text" then + previewers.buffer_previewer_maker(filepath, bufnr, opts) + else + vim.schedule(function() + vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, { "BINARY" }) + end) + end + end, + }):sync() end - --LSP -local on_attach = function(client, bufnr) - client.server_capabilities.documentFormattingProvider = false - local set = vim.keymap.set - set('n', 'K', 'lua vim.lsp.buf.hover()') - set('n', '1', 'lua vim.lsp.buf.signature_help()') - set('n', '2', 'lua vim.lsp.buf.rename()') - set('n', '3', 'lua vim.lsp.buf.code_action()') - set('n', '[', 'lua vim.lsp.diagnostic.goto_prev()') - set('n', ']', 'lua vim.lsp.diagnostic.goto_next()') - end -vim.lsp.handlers['textDocument/publishDiagnostics'] = vim.lsp.with( -vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false }) -vim.keymap.set( - '', - '4', - require('lsp_lines').toggle, - { desc = 'Toggle lsp_lines' } -) -require('mason').setup() -require('mason-null-ls').setup({ - ensure_installed = { 'prettierd', 'rubocop', 'black', 'goimports' }, - handlers = {}, +require("lspsaga").setup({ + ui = { + border = "single", + title = false, + }, + lightbulb = { + enable = false, + }, }) -require('mason-lspconfig').setup() -require('mason-lspconfig').setup_handlers { - function(server_name) - require('lspconfig')[server_name].setup { - on_attach = on_attach, - capabilities = capabilities, - } - end -} +local on_attach = function(client, bufnr) + client.server_capabilities.documentFormattingProvider = false + local set = vim.keymap.set + set("n", "K", "Lspsaga hover_doc") + set("n", "1", "Lspsaga finder") + set("n", "2", "Lspsaga rename") + set("n", "3", "Lspsaga code_action") + set("n", "4", "Lspsaga show_line_diagnostics") + set("n", "5", "Lspsaga peek_definition") + set("n", "[", "Lspsaga diagnostic_jump_prev") + set("n", "]", "Lspsaga diagnostic_jump_next") +end +vim.lsp.handlers["textDocument/publishDiagnostics"] = + vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false }) +require("mason").setup() +require("mason-null-ls").setup({ + ensure_installed = { "prettierd", "rubocop", "black", "goimports", "stylua", "shfmt" }, + handlers = {}, +}) +require("mason-lspconfig").setup() +require("mason-lspconfig").setup_handlers({ + function(server_name) + require("lspconfig")[server_name].setup({ + on_attach = on_attach, + capabilities = capabilities, + }) + end, +}) --none-ls -local status, null_ls = pcall(require, 'null-ls') -if (not status) then return end +local status, null_ls = pcall(require, "null-ls") +if not status then + return +end null_ls.setup({ - sources = { - null_ls.builtins.formatting.prettierd, - null_ls.builtins.diagnostics.rubocop, - null_ls.builtins.formatting.rubocop, - null_ls.builtins.formatting.black, - null_ls.builtins.formatting.goimports, - }, - debug = false, + sources = { + null_ls.builtins.formatting.prettierd, + null_ls.builtins.diagnostics.rubocop, + null_ls.builtins.formatting.rubocop, + null_ls.builtins.formatting.black, + null_ls.builtins.formatting.goimports, + }, + debug = false, }) -vim.keymap.set('n', 'p', function() vim.lsp.buf.format { async = true } end) - +vim.keymap.set("n", "p", function() + vim.lsp.buf.format({ async = true }) +end) --DAP local function map(mode, lhs, rhs, opts) - local options = {noremap = true} - if opts then options = vim.tbl_extend('force', options, opts) end - vim.api.nvim_set_keymap(mode, lhs, rhs, options) + local options = { noremap = true } + if opts then + options = vim.tbl_extend("force", options, opts) + end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) end -map("n", "5", ":lua require'dap'.continue()", { silent = true}) -map("n", "6", ":lua require'dap'.step_over()", { silent = true}) -map("n", "7", ":lua require'dap'.step_into()", { silent = true}) -map("n", "8", ":lua require'dap'.step_out()", { silent = true}) -map("n", "b", ":lua require'dap'.toggle_breakpoint()", { silent = true}) -map("n", "c", ":lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))", { silent = true}) -map("n", "i", ":lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))", { silent = true}) -map("n", "d", ":lua require'dapui'.toggle()", { silent = true}) -map("n", "d", ":lua require'dapui'.eval()", { silent = true}) - +map("n", "6", ":lua require'dap'.continue()", { silent = true }) +map("n", "7", ":lua require'dap'.step_over()", { silent = true }) +map("n", "8", ":lua require'dap'.step_into()", { silent = true }) +map("n", "9", ":lua require'dap'.step_out()", { silent = true }) +map("n", "b", ":lua require'dap'.toggle_breakpoint()", { silent = true }) +map("n", "c", ":lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))", { silent = true }) +map( + "n", + "i", + ":lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))", + { silent = true } +) +map("n", "d", ":lua require'dapui'.toggle()", { silent = true }) +map("n", "d", ":lua require'dapui'.eval()", { silent = true }) ---DAP-UI -require('dapui').setup({ - icons = { expanded = '▾', collapsed = '▸', current_frame = '▸' }, +require("dapui").setup({ + icons = { expanded = "▾", collapsed = "▸", current_frame = "▸" }, mappings = { - expand = { '', '<2-LeftMouse>' }, - open = 'o', - remove = 'd', - edit = 'e', - repl = 'r', - toggle = 't', + expand = { "", "<2-LeftMouse>" }, + open = "o", + remove = "d", + edit = "e", + repl = "r", + toggle = "t", }, - expand_lines = vim.fn.has('nvim-0.7') == 1, + expand_lines = vim.fn.has("nvim-0.7") == 1, layouts = { { elements = { - { id = 'scopes', size = 0.25 }, - 'breakpoints', - 'stacks', - 'watches', + { id = "scopes", size = 0.25 }, + "breakpoints", + "stacks", + "watches", }, size = 40, - position = 'left', + position = "left", }, { elements = { - 'repl', + "repl", }, size = 0.25, - position = 'bottom', + position = "bottom", }, }, controls = { enabled = true, - element = 'repl', + element = "repl", icons = { - pause = '', - play = '', - step_into = '', - step_over = '', - step_out = '', - step_back = '', - run_last = '↻', - terminate = '□', + pause = "", + play = "", + step_into = "", + step_over = "", + step_out = "", + step_back = "", + run_last = "↻", + terminate = "□", }, }, floating = { max_height = nil, max_width = nil, - border = 'single', + border = "single", mappings = { - close = { 'q', '' }, + close = { "q", "" }, }, }, windows = { indent = 1 }, render = { max_type_length = nil, max_value_lines = 100, - } + }, }) - ---jaq-nvim -require('jaq-nvim').setup{ - cmds = { - internal = { - lua = 'luafile %', - vim = 'source %' - }, - external = { - markdown = 'glow %', - python = 'python3 %', - go = 'go run %', - sh = 'sh %', - ruby = 'ruby %', - java = 'java %', - javascript = 'node %', - } - }, +require("jaq-nvim").setup({ + cmds = { + internal = { + lua = "luafile %", + vim = "source %", + }, + external = { + markdown = "glow %", + python = "python3 %", + go = "go run %", + sh = "sh %", + ruby = "ruby %", + java = "java %", + javascript = "node %", + }, + }, - behavior = { - default = 'float', - startinsert = false, - wincmd = false, - autosave = false - }, + behavior = { + default = "float", + startinsert = false, + wincmd = false, + autosave = false, + }, - ui = { - float = { - border = 'none', - winhl = 'Normal', - borderhl = 'FloatBorder', - winblend = 0, - height = 0.8, - width = 0.8, - x = 0.5, - y = 0.5 - }, + ui = { + float = { + border = "none", + winhl = "Normal", + borderhl = "FloatBorder", + winblend = 0, + height = 0.8, + width = 0.8, + x = 0.5, + y = 0.5, + }, - terminal = { - position = 'bot', - size = 10, - line_no = false - }, - quickfix = { - position = 'bot', - size = 10 - } - } -} - -vim.keymap.set('n', 'j', ':Jaq', { silent = true}) + terminal = { + position = "bot", + size = 10, + line_no = false, + }, + quickfix = { + position = "bot", + size = 10, + }, + }, +}) +vim.keymap.set("n", "j", ":Jaq", { silent = true }) --nvim-cmp -local cmp = require('cmp') -local lspkind = require('lspkind') +local cmp = require("cmp") +local lspkind = require("lspkind") - cmp.setup({ - snippet = { - expand = function(args) - vim.fn['vsnip#anonymous'](args.body) - end - }, +cmp.setup({ + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, - window = { - completion = cmp.config.window.bordered({ - border = 'single' - }), - documentation = cmp.config.window.bordered({ - border = 'single' - }), - }, + window = { + completion = cmp.config.window.bordered({ + border = "single", + }), + documentation = cmp.config.window.bordered({ + border = "single", + }), + }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), - }), + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), + }), - formatting = { - format = lspkind.cmp_format({ - mode = 'symbol', - maxwidth = 50, - ellipsis_char = '...', - }) - }, - - sources = cmp.config.sources({ - { name = 'nvim_lsp', max_item_count = 7, keyword_length = 2}, - { name = 'vsnip', max_item_count = 7, keyword_length = 2}, - { name = 'nvim_lsp_signature_help', max_item_count = 7, keyword_length = 2}, - { name = 'calc' }, - { name = 'buffer', max_item_count = 7, keyword_length = 2 }, - }) - }) + formatting = { + format = lspkind.cmp_format({ + mode = "symbol", + maxwidth = 50, + ellipsis_char = "...", + }), + }, - cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'nvim_lsp_document_symbol' } - }, { - { name = 'buffer' } - }) - }) + sources = cmp.config.sources({ + { name = "nvim_lsp", max_item_count = 7, keyword_length = 2 }, + { name = "vsnip", max_item_count = 7, keyword_length = 2 }, + { name = "nvim_lsp_signature_help", max_item_count = 7, keyword_length = 2 }, + { name = "calc" }, + { name = "buffer", max_item_count = 7, keyword_length = 2 }, + }), +}) - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline', keyword_length = 2 } - }) - }) +cmp.setup.cmdline({ "/", "?" }, { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = "nvim_lsp_document_symbol" }, + }, { + { name = "buffer" }, + }), +}) -local capabilities = require('cmp_nvim_lsp').default_capabilities() -vim.cmd('let g:vsnip_filetypes = {}') +cmp.setup.cmdline(":", { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = "path" }, + }, { + { name = "cmdline", keyword_length = 2 }, + }), +}) +local capabilities = require("cmp_nvim_lsp").default_capabilities() +vim.cmd("let g:vsnip_filetypes = {}") ---nvim-treesitter -require'nvim-treesitter.configs'.setup { - highlight = { - enable = true, - disable = {'help', 'markdown', 'toml'}, - }, - refactor = { - highlight_defintions = { - enable = true, - }, - }, - yati = { - enable = true, - }, - matchup = { - enable = true, - enable_quotes = true, - }, - ensure_installed = 'all' -} - +--nvim-treesitter +require("nvim-treesitter.configs").setup({ + highlight = { + enable = true, + disable = { "help", "markdown", "toml" }, + }, + refactor = { + highlight_defintions = { + enable = true, + }, + }, + yati = { + enable = true, + }, + matchup = { + enable = true, + enable_quotes = true, + }, + ensure_installed = "all", +}) --dressing -require('dressing').setup({ - input = { - border = 'single', - }, - builtin = { - border = 'single', - }, +require("dressing").setup({ + input = { + border = "single", + }, + builtin = { + border = "single", + }, }) - --modes -require('modes').setup({ - colors = { - copy = '#FFEE55', - delete = '#DC669B', - insert = '#55AAEE', - visual = '#DD5522', - }, +require("modes").setup({ + colors = { + copy = "#FFEE55", + delete = "#DC669B", + insert = "#55AAEE", + visual = "#DD5522", + }, }) - --colorful-winsep -require('colorful-winsep').setup({ - highlight = { - bg = '', - fg = '#E8AEAA', - }, +require("colorful-winsep").setup({ + highlight = { + bg = "", + fg = "#E8AEAA", + }, }) +--nvim-hlslens +require("hlslens").setup() +local kopts = { noremap = true, silent = true } ---nvim-hlslens -require('hlslens').setup() -local kopts = {noremap = true, silent = true} - -vim.keymap.set('n', 'n', - [[execute('normal! ' . v:count1 . 'n')lua require('hlslens').start()]], - kopts) -vim.keymap.set('n', 'N', - [[execute('normal! ' . v:count1 . 'N')lua require('hlslens').start()]], - kopts) -vim.keymap.set('n', '*', [[*lua require('hlslens').start()]], kopts) -vim.keymap.set('n', '#', [[#lua require('hlslens').start()]], kopts) -vim.keymap.set('n', 'g*', [[g*lua require('hlslens').start()]], kopts) -vim.keymap.set('n', 'g#', [[g#lua require('hlslens').start()]], kopts) -vim.keymap.set('n', '', ':nohl', kopts) - +vim.keymap.set( + "n", + "n", + [[execute('normal! ' . v:count1 . 'n')lua require('hlslens').start()]], + kopts +) +vim.keymap.set( + "n", + "N", + [[execute('normal! ' . v:count1 . 'N')lua require('hlslens').start()]], + kopts +) +vim.keymap.set("n", "*", [[*lua require('hlslens').start()]], kopts) +vim.keymap.set("n", "#", [[#lua require('hlslens').start()]], kopts) +vim.keymap.set("n", "g*", [[g*lua require('hlslens').start()]], kopts) +vim.keymap.set("n", "g#", [[g#lua require('hlslens').start()]], kopts) +vim.keymap.set("n", "", ":nohl", kopts) --fuzzy-motion -vim.keymap.set('n', 'S', 'FuzzyMotion') +vim.keymap.set("n", "S", "FuzzyMotion") vim.cmd("let g:fuzzy_motion_matchers = ['kensaku', 'fzf']") - --kensaku-search -vim.keymap.set('c', '', '(kensaku-search-replace)') - +vim.keymap.set("c", "", "(kensaku-search-replace)") --clever-f -vim.cmd('let g:clever_f_across_no_line = 1') -vim.cmd('let g:clever_f_ignore_case = 1') -vim.cmd('let g:clever_f_smart_case = 1') +vim.cmd("let g:clever_f_across_no_line = 1") +vim.cmd("let g:clever_f_ignore_case = 1") +vim.cmd("let g:clever_f_smart_case = 1") vim.cmd("let g:clever_f_chars_match_any_signs = ';'") -vim.cmd('let g:clever_f_use_migemo = 1') - +vim.cmd("let g:clever_f_use_migemo = 1") --mini.surround -require('mini.surround').setup({ - mappings = { - highlight = 'sx', - }, - custom_surroundings = { - ['{'] = { - input = { '%b{}', '^.().*().$' }, - output = { left = '{', right = '}' }, - }, - ['}'] = { - input = { '%b{}', '^.%{().*()%}.$' }, - output = { left = '{{', right = '}}' }, - }, - ['('] = { - input = { '%b()', '^.().*().$' }, - output = { left = '(', right = ')' }, - }, - [')'] = { - input = { '%b()', '^.%(().*()%).$' }, - output = { left = '((', right = '))' }, - }, - ['['] = { - input = { '%b[]', '^.().*().$' }, - output = { left = '[', right = ']' }, - }, - [']'] = { - input = { '%b[]', '^.%[().*()%].$' }, - output = { left = '[[', right = ']]' }, - }, - ['<'] = { - input = { '%b<>', '^.().*().$' }, - output = { left = '<', right = '>' }, - }, - ['>'] = { - input = { '%b[]', '^.<().*()>.$' }, - output = { left = '<<', right = '>>' }, - }, - ['j'] = { - input = function() - local ok, val = pcall(vim.fn.getchar) - if not ok then return end - local char = vim.fn.nr2char(val) +require("mini.surround").setup({ + mappings = { + highlight = "sx", + }, + custom_surroundings = { + ["{"] = { + input = { "%b{}", "^.().*().$" }, + output = { left = "{", right = "}" }, + }, + ["}"] = { + input = { "%b{}", "^.%{().*()%}.$" }, + output = { left = "{{", right = "}}" }, + }, + ["("] = { + input = { "%b()", "^.().*().$" }, + output = { left = "(", right = ")" }, + }, + [")"] = { + input = { "%b()", "^.%(().*()%).$" }, + output = { left = "((", right = "))" }, + }, + ["["] = { + input = { "%b[]", "^.().*().$" }, + output = { left = "[", right = "]" }, + }, + ["]"] = { + input = { "%b[]", "^.%[().*()%].$" }, + output = { left = "[[", right = "]]" }, + }, + ["<"] = { + input = { "%b<>", "^.().*().$" }, + output = { left = "<", right = ">" }, + }, + [">"] = { + input = { "%b[]", "^.<().*()>.$" }, + output = { left = "<<", right = ">>" }, + }, + ["j"] = { + input = function() + local ok, val = pcall(vim.fn.getchar) + if not ok then + return + end + local char = vim.fn.nr2char(val) - local dict = { - ['('] = { '(().-())' }, - ['{'] = { '{().-()}' }, - ['['] = { '「().-()」' }, - [']'] = { '『().-()』' }, - ['<'] = { '<().-()>' }, - ['"'] = { '”().-()”' }, - } + local dict = { + ["("] = { "(().-())" }, + ["{"] = { "{().-()}" }, + ["["] = { "「().-()」" }, + ["]"] = { "『().-()』" }, + ["<"] = { "<().-()>" }, + ['"'] = { "”().-()”" }, + } - if char == 'b' then - local ret = {} - for _, v in pairs(dict) do table.insert(ret, v) end - return { ret } - end + if char == "b" then + local ret = {} + for _, v in pairs(dict) do + table.insert(ret, v) + end + return { ret } + end - if dict[char] then return dict[char] end + if dict[char] then + return dict[char] + end - error('%s is unsupported surroundings in Japanese') - end, - output = function() - local ok, val = pcall(vim.fn.getchar) - if not ok then return end - local char = vim.fn.nr2char(val) + error("%s is unsupported surroundings in Japanese") + end, + output = function() + local ok, val = pcall(vim.fn.getchar) + if not ok then + return + end + local char = vim.fn.nr2char(val) - local dict = { - ['('] = { left = '(', right = ')' }, - ['{'] = { left = '{', right = '}' }, - ['['] = { left = '「', right = '」' }, - [']'] = { left = '『', right = '』' }, - ['<'] = { left = '<', right = '>' }, - ['"'] = { left = '”', right = '”' }, - } + local dict = { + ["("] = { left = "(", right = ")" }, + ["{"] = { left = "{", right = "}" }, + ["["] = { left = "「", right = "」" }, + ["]"] = { left = "『", right = "』" }, + ["<"] = { left = "<", right = ">" }, + ['"'] = { left = "”", right = "”" }, + } - if not dict[char] then error('%s is unsupported surroundings in Japanese') end + if not dict[char] then + error("%s is unsupported surroundings in Japanese") + end - return dict[char] - end - } - }, + return dict[char] + end, + }, + }, }) - --mini.ai -require('mini.ai').setup({ - custom_textobjects = { - ['{'] = { '%b{}', '^.().*().$' }, - ['}'] = { '%b{}', '^.%{().*()%}.$' }, - ['('] = { '%b()', '^.().*().$' }, - [')'] = { '%b()', '^.%(().*()%).$' }, - ['['] = { '%b[]', '^.().*().$' }, - [']'] = { '%b[]', '^.%[().*()%].$' }, - [''] = { '%b<', '^.().*().$' }, - ['>'] = { '%b', '^.().*().$' }, - ['j'] = function() - local ok, val = pcall(vim.fn.getchar) - if not ok then return end - local char = vim.fn.nr2char(val) +require("mini.ai").setup({ + custom_textobjects = { + ["{"] = { "%b{}", "^.().*().$" }, + ["}"] = { "%b{}", "^.%{().*()%}.$" }, + ["("] = { "%b()", "^.().*().$" }, + [")"] = { "%b()", "^.%(().*()%).$" }, + ["["] = { "%b[]", "^.().*().$" }, + ["]"] = { "%b[]", "^.%[().*()%].$" }, + [""] = { "%b<", "^.().*().$" }, + [">"] = { "%b", "^.().*().$" }, + ["j"] = function() + local ok, val = pcall(vim.fn.getchar) + if not ok then + return + end + local char = vim.fn.nr2char(val) - local dict = { - ['('] = { '(().-())' }, - ['{'] = { '{().-()}' }, - ['['] = { '「().-()」' }, - [']'] = { '『().-()』' }, - ['<'] = { '<().-()>' }, - ['"'] = { '”().-()”' }, - } + local dict = { + ["("] = { "(().-())" }, + ["{"] = { "{().-()}" }, + ["["] = { "「().-()」" }, + ["]"] = { "『().-()』" }, + ["<"] = { "<().-()>" }, + ['"'] = { "”().-()”" }, + } - if char == 'b' then - local ret = {} - for _, v in pairs(dict) do table.insert(ret, v) end - return { ret } - end + if char == "b" then + local ret = {} + for _, v in pairs(dict) do + table.insert(ret, v) + end + return { ret } + end - if dict[char] then return dict[char] end + if dict[char] then + return dict[char] + end - error('%s is unsupported textobjects in Japanese') - end - } + error("%s is unsupported textobjects in Japanese") + end, + }, }) - --rainbow -vim.cmd('let g:rainbow_active = 1') +vim.cmd("let g:rainbow_active = 1") vim.cmd("let g:indent_guides_exclude_filetypes = ['help']") - ---dial -vim.keymap.set('n', '', require('dial.map').inc_normal(), {noremap = true}) -vim.keymap.set('n', '', require('dial.map').dec_normal(), {noremap = true}) -vim.keymap.set('v', '', require('dial.map').inc_visual(), {noremap = true}) -vim.keymap.set('v', '', require('dial.map').dec_visual(), {noremap = true}) -vim.keymap.set('v', 'g', require('dial.map').inc_gvisual(), {noremap = true}) -vim.keymap.set('v', 'g', require('dial.map').dec_gvisual(), {noremap = true}) - +--dial +vim.keymap.set("n", "", require("dial.map").inc_normal(), { noremap = true }) +vim.keymap.set("n", "", require("dial.map").dec_normal(), { noremap = true }) +vim.keymap.set("v", "", require("dial.map").inc_visual(), { noremap = true }) +vim.keymap.set("v", "", require("dial.map").dec_visual(), { noremap = true }) +vim.keymap.set("v", "g", require("dial.map").inc_gvisual(), { noremap = true }) +vim.keymap.set("v", "g", require("dial.map").dec_gvisual(), { noremap = true }) --gin -vim.keymap.set('n', 'gs', ':GitStatus', {silent = true}) -vim.keymap.set('n', 'ga', ':Gin add .', {silent = true}) -vim.keymap.set('n', 'gc', ":Gin commit -m ") -vim.keymap.set('n', 'gp', ':Gin push') - +vim.keymap.set("n", "gs", ":GitStatus", { silent = true }) +vim.keymap.set("n", "ga", ":Gin add .", { silent = true }) +vim.keymap.set("n", "gc", ":Gin commit -m ") +vim.keymap.set("n", "gp", ":Gin push") --OTHER SETTINGS -vim.cmd('colorscheme edge') +vim.cmd("colorscheme edge")