require('plugins') local map = vim.keymap.set local set = vim.opt set.clipboard = 'unnamedplus' set.wrap = false set.linebreak = true set.number = true set.relativenumber = true set.ignorecase = true set.smartcase = true set.termguicolors = true set.swapfile = false set.backup = false set.undodir = os.getenv('XDG_CACHE_HOME') .. '/nvim/undo' set.undofile = true set.hlsearch = false set.incsearch = true set.cursorline = true -- set.cmdheight = 0 set.cmdheight = 1 set.mouse = 'a' set.splitright = true set.splitbelow = true set.updatetime = 600 set.signcolumn = 'yes' set.tabstop = 4 set.softtabstop = 4 set.shiftwidth = 4 set.expandtab = true vim.g.mapleader = ' ' map('v', 'J', ":m '>+1gv=gv") map('v', 'K', ":m '<-2gv=gv") map('x', 'J', ":m '>+1gv-gv", opts) map('x', 'K', ":m '<-2gv-gv", opts) map('v', "<", '", '>gv', opts) map('n', 'J', 'mzJ`z') map('n', '', vim.cmd.w) map('n', '', vim.cmd.wq) map('n', '', vim.cmd.source) map('n', '', "") map('n', 'vv', "^vg_", { noremap = true }) map('n', '-', vim.cmd.Ex, {}) map('n', 'U', vim.cmd.redo) local ts = require('telescope.builtin') map('n', 'f', ts.find_files, {}) map('n', 'g', ts.live_grep, {}) map('n', 'b', ts.buffers, {}) map('n', 't', ts.help_tags, {}) map('n', 'c', ts.commands, {}) map('n', 'd', ts.diagnostics, {}) map('n', 's', ts.lsp_document_symbols, {}) -- TODO If we use this one a lot, might be better to bind it to something easier map('n', 'bb', ':b#') map('n', 'bn', vim.cmd.bnext) map('n', 'bk', vim.cmd.bdelete) -- Window management map('n', 'wo', 'o') map('n', 'wc', 'c') map('n', 'wv', 'v') map('n', 'ws', 's') map('n', 'ww', 'p') map('n', 'wr', 'r') map('n', 'wx', 'x') map('n', 'wt', 'T') map('n', 'wh', 'H') map('n', 'wj', 'J') map('n', 'wk', 'K') map('n', 'wl', 'L') map('n', '', ':resize -2', opts) map('n', '', ':resize +2', opts) map('n', '', ':vertical resize -2', opts) map('n', '', ':vertical resize +2', opts) map('n', '', 'h', {}) map('n', '', 'j', {}) map('n', '', 'k', {}) map('n', '', 'l', {}) -- local neogit = require('neogit') -- -- neogit.setup {} map('n', 'tw', ':set wrap!') function get_lsp_client_info() -- local info = vim.lsp.buf.completion() local pickers = require 'telescope.pickers' local finders = require 'telescope.finders' local previewers = require 'telescope.previewers' local conf = require('telescope.config').values local params = vim.lsp.util.make_position_params() opts = opts or {} local comp_text = {} for _, client in pairs(vim.lsp.buf_get_clients(0)) do client.request('textDocument/completion', params, function(arg1, arg2, arg3, arg4) local i = 0 for key,value in pairs(arg2.items) do if value.textEdit.newText ~= nil and value.textEdit.newText ~= '' and i < 100 then table.insert(comp_text, value.textEdit.newText) i = i + 1 end end pickers.new(opts, { prompt_title = 'Lsp autocomplete', finder = finders.new_table { -- results = { 'red', 'green', 'blue' } results = comp_text }, previewer = previewers.new_buffer_previewer( { title = 'LSP Documentation', define_preview = function(self, entry, status) return 'DO IT' end } ), sorter = conf.generic_sorter(opts), }):find() end) end end map('i', '', get_lsp_client_info)