139 lines
4.0 KiB
Lua

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 '>+1<CR>gv=gv")
map('v', 'K', ":m '<-2<CR>gv=gv")
map('x', 'J', ":m '>+1<CR>gv-gv", opts)
map('x', 'K', ":m '<-2<CR>gv-gv", opts)
map('v', "<", '<gv', opts)
map('v', ">", '>gv', opts)
map('n', 'J', 'mzJ`z')
map('n', '<C-s>', vim.cmd.w)
map('n', '<C-q>', vim.cmd.wq)
map('n', '<C-S-r>', vim.cmd.source)
map('n', '<C-r>', "<nop>")
map('n', 'vv', "^vg_", { noremap = true })
map('n', '-', vim.cmd.Ex, {})
map('n', 'U', vim.cmd.redo)
local ts = require('telescope.builtin')
map('n', '<leader><leader>f', ts.find_files, {})
map('n', '<leader><leader>g', ts.live_grep, {})
map('n', '<leader><leader>b', ts.buffers, {})
map('n', '<leader><leader>t', ts.help_tags, {})
map('n', '<leader><leader>c', ts.commands, {})
map('n', '<leader><leader>d', ts.diagnostics, {})
map('n', '<leader><leader>s', ts.lsp_document_symbols, {})
-- TODO If we use this one a lot, might be better to bind it to something easier
map('n', '<leader>bb', ':b#<CR>')
map('n', '<leader>bn', vim.cmd.bnext)
map('n', '<leader>bk', vim.cmd.bdelete)
-- Window management
map('n', '<leader>wo', '<C-w>o')
map('n', '<leader>wc', '<C-w>c')
map('n', '<leader>wv', '<C-w>v')
map('n', '<leader>ws', '<C-w>s')
map('n', '<leader>ww', '<C-w>p')
map('n', '<leader>wr', '<C-w>r')
map('n', '<leader>wx', '<C-w>x')
map('n', '<leader>wt', '<C-w>T')
map('n', '<leader>wh', '<C-w>H')
map('n', '<leader>wj', '<C-w>J')
map('n', '<leader>wk', '<C-w>K')
map('n', '<leader>wl', '<C-w>L')
map('n', '<C-Up>', ':resize -2<CR>', opts)
map('n', '<C-Down>', ':resize +2<CR>', opts)
map('n', '<C-Left>', ':vertical resize -2<CR>', opts)
map('n', '<C-Right>', ':vertical resize +2<CR>', opts)
map('n', '<C-h>', '<C-w>h', {})
map('n', '<C-j>', '<C-w>j', {})
map('n', '<C-k>', '<C-w>k', {})
map('n', '<C-l>', '<C-w>l', {})
-- local neogit = require('neogit')
--
-- neogit.setup {}
map('n', '<leader>tw', ':set wrap!<CR>')
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', '<C-y>', get_lsp_client_info)