From 914b98ff6915956a0d15eb29c681b71ff3ced693 Mon Sep 17 00:00:00 2001 From: EvilMuffinHa Date: Tue, 8 Nov 2022 20:32:39 -0500 Subject: [PATCH] no coq for latex --- nvim/lua/lsp.lua | 239 ++++++++++++++++------------- nvim/lua/options.lua | 36 ++--- nvim/lua/plugins.lua | 305 +++++++++++++++++++------------------ nvim/lua/tel.lua | 351 ++++++++++++++++++++++--------------------- 4 files changed, 492 insertions(+), 439 deletions(-) diff --git a/nvim/lua/lsp.lua b/nvim/lua/lsp.lua index 100b9ca..47a0403 100644 --- a/nvim/lua/lsp.lua +++ b/nvim/lua/lsp.lua @@ -1,5 +1,5 @@ vim.g.coq_settings = { - auto_start = 'shut-up', + -- auto_start = 'shut-up', keymap = { eval_snips = "se", }, @@ -26,9 +26,9 @@ vim.g.coq_settings = { local coq = require('coq') require('coq_3p') { - { src = 'vimtex', short_name = 'TEX'}, - { src = 'nvimlua', short_name = 'NLUA', conf_only = true}, - { src = 'bc', short_name = 'CALC', precision = 8}, + { src = 'vimtex', short_name = 'TEX' }, + { src = 'nvimlua', short_name = 'NLUA', conf_only = true }, + { src = 'bc', short_name = 'CALC', precision = 8 }, } @@ -38,8 +38,8 @@ lspstatus.register_progress() local function find_repo_root(names) local util = require("lspconfig.util") local config = names.configfiles - for _, i in ipairs(config) do - local gitroot = util.root_pattern('.git')(i) + local function matcher(filename, _bufnr) + local gitroot = util.root_pattern('.git')(filename) if gitroot then for _, file in ipairs(config) do if util.path.is_file(util.path.join(gitroot, file)) then @@ -47,49 +47,52 @@ local function find_repo_root(names) end end end + return util.root_pattern(unpack(config))(filename) end + + return matcher end local lsp_confs = { - sumneko_lua = { - settings = { - Lua = { - -- Settings for working with nvim (copied from https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#sumneko_lua) - runtime = { - version = 'LuaJIT', - path = runtime_path, - }, - diagnostics = { - globals = {'vim'}, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - }, - }, - }, - rust_analyzer = { - cmd_env = { - CARGO_TARGET_DIR = "/tmp/rust-analyzer" - }, - settings = { - ["rust-analyzer"] = { - checkOnSave = { - command = "clippy", - allTargets = false, - }, + sumneko_lua = { + settings = { + Lua = { + -- Settings for working with nvim (copied from https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#sumneko_lua) + runtime = { + version = 'LuaJIT', + path = runtime_path, + }, + diagnostics = { + globals = { 'vim' }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + }, + }, + }, + rust_analyzer = { + cmd_env = { + CARGO_TARGET_DIR = "/tmp/rust-analyzer" + }, + settings = { + ["rust-analyzer"] = { + checkOnSave = { + command = "clippy", + allTargets = false, + }, cargo = { features = "all", } - }, - }, - }, - ccls = {}, + }, + }, + }, + ccls = {}, jedi_language_server = { filetypes = { "python", "sage.python" }, }, - gopls = {}, + gopls = {}, dartls = {}, tsserver = { root_dir = find_repo_root({ @@ -100,17 +103,17 @@ local lsp_confs = { root_dir = find_repo_root({ configfiles = { ".eslintrc", ".eslintrc.js", "package.json" } }), - on_new_config = function (config, new_root_dir) - local default_config = require('lspconfig.server_configurations.eslint').default_config - default_config.on_new_config(config, new_root_dir) + on_new_config = function(config, new_root_dir) + local default_config = require('lspconfig.server_configurations.eslint').default_config + default_config.on_new_config(config, new_root_dir) - local util = require('lspconfig.util') - local pnp_cjs = util.path.join(new_root_dir, '.pnp.cjs') - local pnp_js = util.path.join(new_root_dir, '.pnp.js') - if util.path.exists(pnp_cjs) or util.path.exists(pnp_js) then - config.cmd = { 'yarn', 'exec', unpack(default_config.cmd) } - end - end + local util = require('lspconfig.util') + local pnp_cjs = util.path.join(new_root_dir, '.pnp.cjs') + local pnp_js = util.path.join(new_root_dir, '.pnp.js') + if util.path.exists(pnp_cjs) or util.path.exists(pnp_js) then + config.cmd = { 'yarn', 'exec', unpack(default_config.cmd) } + end + end }, svelte = {}, svls = {}, @@ -120,89 +123,123 @@ local lsp_confs = { local lsp_special_setup = { } +local function on_attach(client, _bufnr) + lspstatus.on_attach(client) +end + local lspconfig = require('lspconfig') for server, conf in pairs(lsp_confs) do - local source_on_attach = conf.on_attach - if source_on_attach == nil then - conf.on_attach = on_attach - else - conf.on_attach = function(client, bufnr) - on_attach(client, bufnr) - source_on_attach(client, bufnr) - end - end + local source_on_attach = conf.on_attach + if source_on_attach == nil then + conf.on_attach = on_attach + else + conf.on_attach = function(client, bufnr) + on_attach(client, bufnr) + source_on_attach(client, bufnr) + end + end - conf.capabilities = vim.tbl_deep_extend( - "keep", - conf.capabilities or {}, - lspstatus.capabilities - ) + conf.capabilities = vim.tbl_deep_extend( + "keep", + conf.capabilities or {}, + lspstatus.capabilities + ) - local final_config = coq.lsp_ensure_capabilities(conf) + local final_config = coq.lsp_ensure_capabilities(conf) - local special_setup = lsp_special_setup[server] - if special_setup then - special_setup(final_config) - else - lspconfig[server].setup(final_config) - end + local special_setup = lsp_special_setup[server] + if special_setup then + special_setup(final_config) + else + lspconfig[server].setup(final_config) + end end local null_ls = require('null-ls') null_ls.setup({ - sources = { - null_ls.builtins.diagnostics.chktex, - null_ls.builtins.diagnostics.cppcheck, - null_ls.builtins.diagnostics.shellcheck, + sources = { + null_ls.builtins.diagnostics.chktex, + null_ls.builtins.diagnostics.cppcheck, + null_ls.builtins.diagnostics.shellcheck, - null_ls.builtins.code_actions.gitsigns, - }, + null_ls.builtins.code_actions.gitsigns, + }, }) vim.diagnostic.config({ - severity_sort = true, - update_in_insert = true, - float = { - source = true, - }, + severity_sort = true, + update_in_insert = true, + float = { + source = true, + }, }) do -- signs - local signs = { - {'DiagnosticSignError', text='×', texthl='DiagnosticSignError'}, - {'DiagnosticSignWarn', text='>', texthl='DiagnosticSignWarn'}, - {'DiagnosticSignInfo', text='I', texthl='DiagnosticSignInfo'}, - {'DiagnosticSignHint', text='H', texthl='DiagnosticSignHint'}, - } - for _, sign in pairs(signs) do - local name = sign[1] - local opts = sign - opts[1] = nil - vim.fn.sign_define(name, opts) - end + local signs = { + { 'DiagnosticSignError', text = '×', texthl = 'DiagnosticSignError' }, + { 'DiagnosticSignWarn', text = '>', texthl = 'DiagnosticSignWarn' }, + { 'DiagnosticSignInfo', text = 'I', texthl = 'DiagnosticSignInfo' }, + { 'DiagnosticSignHint', text = 'H', texthl = 'DiagnosticSignHint' }, + } + for _, sign in pairs(signs) do + local name = sign[1] + local opts = sign + opts[1] = nil + vim.fn.sign_define(name, opts) + end end local map = vim.api.nvim_set_keymap map( - 'n', - 'K', - [[luaeval('next(vim.lsp.buf_get_clients()) == nil') ? 'K' : 'lua vim.lsp.buf.hover()']], - {noremap = true, expr = true} + 'n', + 'K', + [[luaeval('next(vim.lsp.buf_get_clients()) == nil') ? 'K' : 'lua vim.lsp.buf.hover()']], + { noremap = true, expr = true } ) map( - 'n', - '', - [[luaeval('next(vim.lsp.buf_get_clients()) == nil') ? '' : 'lua vim.lsp.buf.definition()']], - {noremap = true, expr = true} + 'n', + '', + [[luaeval('next(vim.lsp.buf_get_clients()) == nil') ? '' : 'lua vim.lsp.buf.definition()']], + { noremap = true, expr = true } ) +local M = {} + +M.format_on_save_hook = function() + local enabled = vim.b.format_on_save + if enabled == nil then + enabled = true + end + if enabled ~= 0 and enabled ~= false then + vim.lsp.buf.format({ async = false }) + end +end + vim.cmd [[ - augroup lspconfig + augroup hoverlspconfig au! " diagnostic on hover + au BufWritePre * lua require'lsp'.format_on_save_hook() au CursorHold * lua vim.diagnostic.open_float({focus = false}) augroup END ]] +vim.api.nvim_create_autocmd('FileType', { + pattern = "*", + callback = function() + if vim.bo.filetype ~= "plaintex" and vim.bo.filetype ~= "tex" and vim.bo.filetype ~= "latex" then + vim.cmd [[ :COQnow -s ]] + end + end +}) + +-- vim.cmd [[ +-- augroup disabletexlsp +-- autocmd! +-- autocmd FileType tex :COQstop +-- augroup END +-- ]] + +return M diff --git a/nvim/lua/options.lua b/nvim/lua/options.lua index 57901ac..3736e5e 100644 --- a/nvim/lua/options.lua +++ b/nvim/lua/options.lua @@ -18,32 +18,32 @@ o.termguicolors = true vim.cmd('colorscheme theme') -vim.g.airline_theme='theme' +vim.g.airline_theme = 'theme' map('n', 's', ':%s//g', {}) -map('n', 'e', ':make!', {noremap = true}) -map('n', '', ':cclose', {noremap = true}) -map('n', '', ':nohlsearch', {noremap = true, silent = true}) -map('n', ';', ':', {noremap = true}) -map('v', ';', ':', {noremap = true}) +map('n', 'e', ':make!', { noremap = true }) +map('n', '', ':cclose', { noremap = true }) +map('n', '', ':nohlsearch', { noremap = true, silent = true }) +map('n', ';', ':', { noremap = true }) +map('v', ';', ':', { noremap = true }) -for i = 1,9,1 do - map('', '' .. tostring(i), tostring(i) .. 'gt', {noremap = true}) +for i = 1, 9, 1 do + map('', '' .. tostring(i), tostring(i) .. 'gt', { noremap = true }) end -map('n', '', ':tabprevious', {noremap = true}) -map('n', '', ':tabnext', {noremap = true}) -map('', '0', ':tablast', {noremap = true}) -map('n', 'ZX', 'q', {noremap = true, silent = true}) +map('n', '', ':tabprevious', { noremap = true }) +map('n', '', ':tabnext', { noremap = true }) +map('', '0', ':tablast', { noremap = true }) +map('n', 'ZX', 'q', { noremap = true, silent = true }) -map('t', '', '', {noremap = true}) +map('t', '', '', { noremap = true }) -o.list=true +o.list = true o.listchars = { - tab = '▸ ', - eol = '¬', - trail = '·', - extends = '›' + tab = '▸ ', + eol = '¬', + trail = '·', + extends = '›' } vim.cmd [[ diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index 7c1352e..ac8b6a9 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -1,69 +1,73 @@ local bootstrap = require('bootstrap') local function import(name) - return ([[require '%s']]):format(name) + return ([[require '%s']]):format(name) end -return require('packer').startup({function(use) - use 'wbthomason/packer.nvim' +return require('packer').startup({ function(use) + use 'wbthomason/packer.nvim' use { - 'vim-airline/vim-airline', - requires = { - 'ryanoasis/vim-devicons', - } - } - - use { - 'mustache/vim-mustache-handlebars' + 'vim-airline/vim-airline', + requires = { + 'ryanoasis/vim-devicons', + } } use { - 'nvim-treesitter/nvim-treesitter', - run = ':TSUpdate' + 'mustache/vim-mustache-handlebars' } use { - 'petRUShka/vim-sage' + 'nvim-treesitter/nvim-treesitter', + run = ':TSUpdate' } use { - 'evanleck/vim-svelte' + 'petRUShka/vim-sage' } - use { - 'tpope/vim-fugitive', - config = function() - local map = vim.api.nvim_set_keymap - map('n', 'g', 'Git', {noremap = true}) - end, - } + use { + 'evanleck/vim-svelte' + } - use { - 'tpope/vim-surround', - } + use { + 'tpope/vim-fugitive', + config = function() + local map = vim.api.nvim_set_keymap + map('n', 'g', 'Git', { noremap = true }) + end, + } - use { - 'tpope/vim-repeat', - } + use { + 'tpope/vim-surround', + } - use { - 'lewis6991/gitsigns.nvim', - requires = { - 'nvim-lua/plenary.nvim' - }, - config = function() - require('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'}, - }, - } - end - } + use { + 'tpope/vim-repeat', + } + + use { + 'lewis6991/gitsigns.nvim', + requires = { + 'nvim-lua/plenary.nvim' + }, + config = function() + require('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' }, + }, + } + end + } use { 'akinsho/flutter-tools.nvim', @@ -71,7 +75,7 @@ return require('packer').startup({function(use) 'nvim-lua/plenary.nvim' }, config = function() - require('flutter-tools').setup{ + require('flutter-tools').setup { lsp = { color = { enabled = false @@ -81,106 +85,117 @@ return require('packer').startup({function(use) end } - use { - 'numToStr/Comment.nvim', - config = function() - local map = vim.api.nvim_set_keymap - require('Comment').setup({}) - map('n', '', - 'lua require("Comment.api").toggle_linewise_op(vim.fn.visualmode())', - {noremap = true, silent = true}) - end - } - - use { - 'nvim-telescope/telescope.nvim', - requires = { - 'nvim-lua/plenary.nvim', - { - 'nvim-telescope/telescope-fzf-native.nvim', - run = 'make', - }, - 'nvim-telescope/telescope-symbols.nvim', - }, - config = import('tel'), - } - - use { - 'stevearc/dressing.nvim', - config = function() - require('dressing').setup({ - input = { - default_prompt = '❯', - winhighlight = 'NormalFloat:Normal', - }, - }) - vim.cmd [[highlight link FloatTitle NonText]] - vim.cmd [[highlight link DressingInputText Normal]] - end, - } - - use { - 'antoinemadec/FixCursorHold.nvim', - config = function() - vim.g.cursorhold_updatetime = 500 - end, - } - - use { - 'neovim/nvim-lspconfig', - -- commit = "607ff48b970b89c3e4e3825b88d9cfd05b7aaea5", - requires = { - 'nvim-lua/lsp-status.nvim', - 'ms-jpq/coq.thirdparty', - { - 'ms-jpq/coq_nvim', - run = ':COQdeps', - requires = { - 'ms-jpq/coq.artifacts', - }, - }, - { - 'jose-elias-alvarez/null-ls.nvim', - requires = { - 'nvim-lua/plenary.nvim', - }, - }, - }, - config = import('lsp'), - } - - use { - 'lervag/vimtex', - config = function() - vim.g.vimtex_view_general_viewer = 'zathura' - -- vim.g.vimtex_view_general_options = = '-x nvim -n -c "Vimtex' - -- 'file:@pdf\\#src:@line@tex' - -- vim.g.vimtex_quickfix_enabled = 0 - -- vim.g.Tex_GotoError = 0 - -- vim.g.Tex_ShowErrorContext = 0 - end, - } - - use { - 'iamcco/markdown-preview.nvim', - commit = "02cc3874738bc0f86e4b91f09b8a0ac88aef8e96", - run = "cd app && npm install", - setup = function() vim.g.mkdp_filetypes = { "markdown" } end, ft = { "markdown" }, - config = function() - local map = vim.api.nvim_set_keymap - map('n', '', 'MarkdownPreviewToggle', {}) - map('n', 'm', 'MarkdownPreviewToggle', {}) - vim.g.mkdp_markdown_css = os.getenv("HOME") .. "/.config/nvim/lua/markdownStyle.css" - vim.g.mkdp_highlight_css = os.getenv("HOME") .. "/.cache/wal/colors.css" - end + use { + 'numToStr/Comment.nvim', + config = function() + local map = vim.api.nvim_set_keymap + require('Comment').setup({}) + map('n', '', + 'lua require("Comment.api").toggle_linewise_op(vim.fn.visualmode())', + { noremap = true, silent = true }) + end } - if bootstrap.is_bootstrap then - require('packer').sync() - end + use { + 'nvim-telescope/telescope.nvim', + requires = { + 'nvim-lua/plenary.nvim', + { + 'nvim-telescope/telescope-fzf-native.nvim', + run = 'make', + }, + 'nvim-telescope/telescope-symbols.nvim', + }, + config = import('tel'), + } + + use { + 'stevearc/dressing.nvim', + config = function() + require('dressing').setup({ + input = { + default_prompt = '❯', + winhighlight = 'NormalFloat:Normal', + }, + }) + vim.cmd [[highlight link FloatTitle NonText]] + vim.cmd [[highlight link DressingInputText Normal]] + end, + } + + use { + 'antoinemadec/FixCursorHold.nvim', + config = function() + vim.g.cursorhold_updatetime = 500 + end, + } + + use { + 'sirver/ultisnips', + ft = { 'latex', 'plaintex', 'tex' }, + config = function() + vim.g.UltiSnipsExpandTrigger = '' + vim.g.UltiSnipsJumpForwardTrigger = '' + vim.g.UltiSnipsJumpBackwardTrigger = '' + end + } + + use { + 'neovim/nvim-lspconfig', + -- commit = "607ff48b970b89c3e4e3825b88d9cfd05b7aaea5", + requires = { + 'nvim-lua/lsp-status.nvim', + { + 'ms-jpq/coq.thirdparty', + }, + { + 'ms-jpq/coq_nvim', + run = ':COQdeps', + requires = { + 'ms-jpq/coq.artifacts', + }, + }, + { + 'jose-elias-alvarez/null-ls.nvim', + requires = { + 'nvim-lua/plenary.nvim', + }, + }, + }, + config = import('lsp'), + } + + use { + 'lervag/vimtex', + config = function() + vim.g.vimtex_view_general_viewer = 'zathura' + -- vim.g.vimtex_view_general_options = = '-x nvim -n -c "Vimtex' + -- 'file:@pdf\\#src:@line@tex' + -- vim.g.vimtex_quickfix_enabled = 0 + -- vim.g.Tex_GotoError = 0 + -- vim.g.Tex_ShowErrorContext = 0 + end, + } + + use { + 'iamcco/markdown-preview.nvim', + commit = "02cc3874738bc0f86e4b91f09b8a0ac88aef8e96", + run = "cd app && npm install", + setup = function() vim.g.mkdp_filetypes = { "markdown" } end, ft = { "markdown" }, + config = function() + local map = vim.api.nvim_set_keymap + map('n', '', 'MarkdownPreviewToggle', {}) + map('n', 'm', 'MarkdownPreviewToggle', {}) + vim.g.mkdp_markdown_css = os.getenv("HOME") .. "/.config/nvim/lua/markdownStyle.css" + vim.g.mkdp_highlight_css = os.getenv("HOME") .. "/.cache/wal/colors.css" + end + } + + if bootstrap.is_bootstrap then + require('packer').sync() + end end, -config = { - compile_path = require('packer.util').join_paths(vim.fn.stdpath('data'), 'site', 'plugin', 'packer_compiled.lua'), -}}) - + config = { + compile_path = require('packer.util').join_paths(vim.fn.stdpath('data'), 'site', 'plugin', 'packer_compiled.lua'), + } }) diff --git a/nvim/lua/tel.lua b/nvim/lua/tel.lua index 44490bf..6e41b7a 100644 --- a/nvim/lua/tel.lua +++ b/nvim/lua/tel.lua @@ -1,202 +1,204 @@ - local telescope = require('telescope') telescope.setup({ - defaults = { - file_ignore_patterns = {'.git'}, - mappings = { - i = { - [''] = { '', type = 'command' }, - [''] = 'close', + defaults = { + file_ignore_patterns = { '.git' }, + mappings = { + i = { + [''] = { '', type = 'command' }, + [''] = 'close', - [''] = 'select_horizontal', - }, - n = { - q = 'close', + [''] = 'select_horizontal', + }, + n = { + q = 'close', - [''] = { '', type = 'command' }, + [''] = { '', type = 'command' }, - [''] = 'select_horizontal', - }, - }, - sorting_strategy = 'ascending', - layout_config = { - prompt_position = 'top', - }, - prompt_prefix = '❯ ', - selection_caret = '❯ ', - multi_icon = '●', - }, - pickers = { - buffers = { - mappings = { - n = { - dd = 'delete_buffer', - }, - }, - }, - find_files = { - hidden = true, - }, - lsp_code_actions = { - initial_mode = 'normal', - }, - lsp_range_code_actions = { - initial_mode = 'normal', - }, - }, + [''] = 'select_horizontal', + }, + }, + sorting_strategy = 'ascending', + layout_config = { + prompt_position = 'top', + }, + prompt_prefix = '❯ ', + selection_caret = '❯ ', + multi_icon = '●', + }, + pickers = { + buffers = { + mappings = { + n = { + dd = 'delete_buffer', + }, + }, + }, + find_files = { + hidden = true, + }, + lsp_code_actions = { + initial_mode = 'normal', + }, + lsp_range_code_actions = { + initial_mode = 'normal', + }, + }, }) telescope.load_extension('fzf') -- taken from https://github.com/nvim-telescope/telescope-ui-select.nvim for code actions telescope.register_extension { - setup = function(topts) - local specific_opts = vim.F.if_nil(topts.specific_opts, {}) - topts.specific_opts = nil + setup = function(topts) + local specific_opts = vim.F.if_nil(topts.specific_opts, {}) + topts.specific_opts = nil - if #topts == 1 and topts[1] ~= nil then - topts = topts[1] - end + if #topts == 1 and topts[1] ~= nil then + topts = topts[1] + end - local pickers = require "telescope.pickers" - local finders = require "telescope.finders" - local conf = require("telescope.config").values - local actions = require "telescope.actions" - local action_state = require "telescope.actions.state" - local strings = require "plenary.strings" - local entry_display = require "telescope.pickers.entry_display" - local utils = require "telescope.utils" + local pickers = require "telescope.pickers" + local finders = require "telescope.finders" + local conf = require("telescope.config").values + local actions = require "telescope.actions" + local action_state = require "telescope.actions.state" + local strings = require "plenary.strings" + local entry_display = require "telescope.pickers.entry_display" + local utils = require "telescope.utils" - __TelescopeUISelectSpecificOpts = vim.F.if_nil( - __TelescopeUISelectSpecificOpts, - vim.tbl_extend("keep", specific_opts, { - ["codeaction"] = { - make_indexed = function(items) - local indexed_items = {} - local widths = { - idx = 0, - command_title = 0, - client_name = 0, - } - for idx, item in ipairs(items) do - local client = vim.lsp.get_client_by_id(item[1]) - local entry = { - idx = idx, - ["add"] = { - command_title = item[2].title:gsub("\r\n", "\\r\\n"):gsub("\n", "\\n"), - client_name = client and client.name or "", - }, - text = item, - } - table.insert(indexed_items, entry) - widths.idx = math.max(widths.idx, strings.strdisplaywidth(entry.idx)) - widths.command_title = math.max(widths.command_title, strings.strdisplaywidth(entry.add.command_title)) - widths.client_name = math.max(widths.client_name, strings.strdisplaywidth(entry.add.client_name)) - end - return indexed_items, widths - end, - make_displayer = function(widths) - return entry_display.create { - separator = " ", - items = { - { width = widths.idx + 1 }, -- +1 for ":" suffix - { width = widths.command_title }, - { width = widths.client_name }, - }, - } - end, - make_display = function(displayer) - return function(e) - return displayer { - { e.value.idx .. ":", "TelescopePromptPrefix" }, - { e.value.add.command_title }, - { e.value.add.client_name, "TelescopeResultsComment" }, - } - end - end, - make_ordinal = function(e) - return e.idx .. e.add["command_title"] - end, - }, - }) - ) + __TelescopeUISelectSpecificOpts = vim.F.if_nil( + __TelescopeUISelectSpecificOpts, + vim.tbl_extend("keep", specific_opts, { + ["codeaction"] = { + make_indexed = function(items) + local indexed_items = {} + local widths = { + idx = 0, + command_title = 0, + client_name = 0, + } + for idx, item in ipairs(items) do + local client = vim.lsp.get_client_by_id(item[1]) + local entry = { + idx = idx, + ["add"] = { + command_title = item[2].title:gsub("\r\n", "\\r\\n"):gsub("\n", "\\n"), + client_name = client and client.name or "", + }, + text = item, + } + table.insert(indexed_items, entry) + widths.idx = math.max(widths.idx, strings.strdisplaywidth(entry.idx)) + widths.command_title = math.max(widths.command_title, + strings.strdisplaywidth(entry.add.command_title)) + widths.client_name = math.max(widths.client_name, + strings.strdisplaywidth(entry.add.client_name)) + end + return indexed_items, widths + end, + make_displayer = function(widths) + return entry_display.create { + separator = " ", + items = { + { width = widths.idx + 1 }, -- +1 for ":" suffix + { width = widths.command_title }, + { width = widths.client_name }, + }, + } + end, + make_display = function(displayer) + return function(e) + return displayer { + { e.value.idx .. ":", "TelescopePromptPrefix" }, + { e.value.add.command_title }, + { e.value.add.client_name, "TelescopeResultsComment" }, + } + end + end, + make_ordinal = function(e) + return e.idx .. e.add["command_title"] + end, + }, + }) + ) - vim.ui.select = function(items, opts, on_choice) - opts = opts or {} - local prompt = vim.F.if_nil(opts.prompt, "Select one of") - if prompt:sub(-1, -1) == ":" then - prompt = prompt:sub(1, -2) - end - opts.format_item = vim.F.if_nil(opts.format_item, function(e) - return tostring(e) - end) + vim.ui.select = function(items, opts, on_choice) + opts = opts or {} + local prompt = vim.F.if_nil(opts.prompt, "Select one of") + if prompt:sub(-1, -1) == ":" then + prompt = prompt:sub(1, -2) + end + opts.format_item = vim.F.if_nil(opts.format_item, function(e) + return tostring(e) + end) - -- We want or here because __TelescopeUISelectSpecificOpts[x] can be either nil or even false -> {} - local sopts = __TelescopeUISelectSpecificOpts[vim.F.if_nil(opts.kind, "")] or {} - local indexed_items, widths = vim.F.if_nil(sopts.make_indexed, function(items_) - local indexed_items = {} - for idx, item in ipairs(items_) do - table.insert(indexed_items, { idx = idx, text = item }) - end - return indexed_items - end)(items) - local displayer = vim.F.if_nil(sopts.make_displayer, function() end)(widths) - local make_display = vim.F.if_nil(sopts.make_display, function(_) - return function(e) - local x, _ = opts.format_item(e.value.text) - return x - end - end)(displayer) - local make_ordinal = vim.F.if_nil(sopts.make_ordinal, function(e) - return opts.format_item(e.text) - end) - pickers.new(topts, { - prompt_title = prompt, - finder = finders.new_table { - results = indexed_items, - entry_maker = function(e) - return { - value = e, - display = make_display, - ordinal = make_ordinal(e), - } - end, - }, - attach_mappings = function(prompt_bufnr) - actions.select_default:replace(function() - local selection = action_state.get_selected_entry() - if selection == nil then - utils.__warn_no_selection "ui-select" - return - end - actions.close(prompt_bufnr) - on_choice(selection.value.text, selection.value.idx) - end) - return true - end, - sorter = conf.generic_sorter(topts), - }):find() - end - end, + -- We want or here because __TelescopeUISelectSpecificOpts[x] can be either nil or even false -> {} + local sopts = __TelescopeUISelectSpecificOpts[vim.F.if_nil(opts.kind, "")] or {} + local indexed_items, widths = vim.F.if_nil(sopts.make_indexed, function(items_) + local indexed_items = {} + for idx, item in ipairs(items_) do + table.insert(indexed_items, { idx = idx, text = item }) + end + return indexed_items + end)(items) + local displayer = vim.F.if_nil(sopts.make_displayer, function() end)(widths) + local make_display = vim.F.if_nil(sopts.make_display, function(_) + return function(e) + local x, _ = opts.format_item(e.value.text) + return x + end + end)(displayer) + local make_ordinal = vim.F.if_nil(sopts.make_ordinal, function(e) + return opts.format_item(e.text) + end) + pickers.new(topts, { + prompt_title = prompt, + finder = finders.new_table { + results = indexed_items, + entry_maker = function(e) + return { + value = e, + display = make_display, + ordinal = make_ordinal(e), + } + end, + }, + attach_mappings = function(prompt_bufnr) + actions.select_default:replace(function() + local selection = action_state.get_selected_entry() + if selection == nil then + utils.__warn_no_selection "ui-select" + return + end + actions.close(prompt_bufnr) + on_choice(selection.value.text, selection.value.idx) + end) + return true + end, + sorter = conf.generic_sorter(topts), + }):find() + end + end, } local map = vim.api.nvim_set_keymap -map('n', 'pf', 'Telescope find_files', {noremap = true}) -map('n', 'pb', 'Telescope buffers', {noremap = true}) -map('n', 'po', 'Telescope lsp_document_symbols', {noremap = true}) -map('n', 'ps', 'Telescope lsp_workspace_symbols', {noremap = true}) -map('n', 'pd', 'Telescope lsp_definitions', {noremap = true}) -map('n', 'pr', 'Telescope lsp_references', {noremap = true}) -map('n', 'p', ':Telescope ', {noremap = true}) -map('n', 'p ', ':Telescope ', {noremap = true}) +map('n', 'pf', 'Telescope find_files', { noremap = true }) +map('n', 'pb', 'Telescope buffers', { noremap = true }) +map('n', 'po', 'Telescope lsp_document_symbols', { noremap = true }) +map('n', 'ps', 'Telescope lsp_workspace_symbols', { noremap = true }) +map('n', 'pd', 'Telescope lsp_definitions', { noremap = true }) +map('n', 'pr', 'Telescope lsp_references', { noremap = true }) +map('n', 'pp', '', { noremap = true }) +map('n', 'p', ':Telescope ', { noremap = true }) +map('n', 'p ', ':Telescope ', { noremap = true }) -map('n', '.', ':lua vim.lsp.buf.code_action()', {noremap = true}) +map('n', '.', ':lua vim.lsp.buf.code_action()', { noremap = true }) -- vim.cmd [[ -- function! s:telescope_hlsetup() abort --- highlight link TelescopeBorder NonText +-- highlight link TelescopeBorder NonText -- highlight link TelescopeTitle NonText -- endfunction -- call s:telescope_hlsetup() @@ -205,4 +207,3 @@ map('n', '.', ':lua vim.lsp.buf.code_action()', {noremap = true}) -- au ColorScheme * call s:telescope_hlsetup() -- augroup END -- ]] -