feat: nvim, shell updates

This commit is contained in:
Chen Asraf
2023-04-29 13:23:19 +03:00
parent 04eac3912e
commit 5e3198a200
12 changed files with 163 additions and 81 deletions

View File

@@ -1,20 +1,4 @@
local lsp = require('lsp-zero').preset({})
lsp.on_attach(function(client, bufnr)
lsp.default_keymaps({buffer = bufnr})
local opts = { buffer = bufnr, remap = false }
vim.keymap.set('n', 'gd', function() vim.lsp.buf.definition() end, opts)
vim.keymap.set('n', 'K', function() vim.lsp.buf.hover() end, opts)
vim.keymap.set('n', '<leader>vws', function() vim.lsp.buf.workspace_symbol() end, opts)
vim.keymap.set('n', '<leader>vd', function() vim.lsp.buf.open_float() end, opts)
vim.keymap.set('n', '[d', function() vim.lsp.buf.goto_next() end, opts)
vim.keymap.set('n', ']d', function() vim.lsp.buf.goto_prev() end, opts)
vim.keymap.set('n', '<leader>vca', function() vim.lsp.buf.code_action() end, opts)
vim.keymap.set('n', '<leader>vrr', function() vim.lsp.buf.references() end, opts)
vim.keymap.set('n', '<leader>vrn', function() vim.lsp.buf.rename() end, opts)
vim.keymap.set('i', '<C-h>', function() vim.lsp.buf.signature_help() end, opts)
end)
local lsp = require('lsp-zero').preset("recommended")
lsp.ensure_installed({
-- 'lua-language-server',
@@ -23,33 +7,94 @@ lsp.ensure_installed({
'rust_analyzer'
})
-- (Optional) Configure lua language server for neovim
require('lspconfig').lua_ls.setup(lsp.nvim_lua_ls())
require("mason").setup({
PATH = "prepend", -- "skip" seems to cause the spawning error
-- Fix Undefined global 'vim'
lsp.nvim_workspace()
local cmp = require('cmp')
local cmp_select = { behavior = cmp.SelectBehavior.Select }
local cmp_mappings = lsp.defaults.cmp_mappings({
['<C-p>'] = cmp.mapping.select_prev_item(cmp_select),
['<C-n>'] = cmp.mapping.select_next_item(cmp_select),
['<C-y>'] = cmp.mapping.confirm({ select = true }),
-- TODO: either change this or change the mapping for tmux
["<C-Space>"] = cmp.mapping.complete(),
})
cmp_mappings['<Tab>'] = nil
cmp_mappings['<S-Tab>'] = nil
lsp.setup_nvim_cmp({
mapping = cmp_mappings
})
-- Make sure you setup `cmp` after lsp-zero
local cmp = require('cmp')
local cmp_action = require('lsp-zero').cmp_action()
cmp.setup({
mapping = {
-- `Enter` key to confirm completion
['<CR>'] = cmp.mapping.confirm({select = false}),
-- Ctrl+Space to trigger completion menu
['<C-Space>'] = cmp.mapping.complete(),
-- Navigate between snippet placeholder
['<C-f>'] = cmp_action.luasnip_jump_forward(),
['<C-b>'] = cmp_action.luasnip_jump_backward(),
lsp.set_preferences({
suggest_lsp_servers = true,
sign_icons = {
error = 'E',
warn = 'W',
hint = 'H',
info = 'I'
}
})
---@diagnostic disable-next-line: unused-local
lsp.on_attach(function(client, bufnr)
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, {
desc = "Go to definition",
buffer = bufnr,
remap = false
})
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, {
desc = "Hover",
buffer = bufnr,
remap = false
})
vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, {
desc = "Workspace symbol",
buffer = bufnr,
remap = false
})
vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, {
desc = "Open diagnostics",
buffer = bufnr,
remap = false
})
vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, {
desc = "Go to next diagnostic",
buffer = bufnr,
remap = false
})
vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, {
desc = "Go to previous diagnostic",
buffer = bufnr,
remap = false
})
vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end,
{
desc = "Code action",
buffer = bufnr,
remap = false
})
vim.keymap.set("n", "<leader>vrr", function() vim.lsp.buf.references() end,
{
desc = "References",
buffer = bufnr,
remap = false
})
vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, {
desc = "Rename symbol",
buffer = bufnr,
remap = false
})
vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, {
desc = "Signature help",
buffer = bufnr,
remap = false
})
end)
lsp.setup()
vim.diagnostic.config({
virtual_text = true
})

View File

@@ -1,10 +1,17 @@
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>pf', builtin.find_files)
vim.keymap.set('n', '<leader>pg', builtin.git_files)
vim.keymap.set('n', '<leader>pi', function()
local term = vim.fn.input('Grep File Contents > ')
vim.keymap.set('n', '<leader>pf', builtin.find_files, { desc = 'Find files' })
vim.keymap.set('n', '<leader>pg', builtin.git_files, { desc = 'Git files' })
vim.keymap.set('n', '<leader>pI', function()
local term = vim.fn.input('Grep File Contents (regex) ⟩ ')
if term == '' then
return
end
builtin.grep_string({ search = term, use_regex = true })
end)
vim.keymap.set('n', '<leader>pi', function()
local term = vim.fn.input('Grep File Contents ⟩ ')
if term == '' then
return
end
builtin.grep_string({ search = term })
end)

View File

@@ -6,7 +6,11 @@ vim.keymap.set("n", "[t", function()
require("todo-comments").jump_prev()
end, { desc = "Previous todo comment" })
vim.keymap.set("n", "<leader>tD", function()
vim.cmd(":TodoTelescope")
end, { desc = "All Todos" })
vim.keymap.set("n", "<leader>td", function()
vim.cmd(":TodoTrouble")
end, { desc = "Toggle todo comment" })
end, { desc = "Toggle todo pane" })

View File

@@ -16,7 +16,7 @@ return require('packer').startup(function(use)
require('telescope').setup {
pickers = {
find_files = {
find_command = {'rg', '--files', '--hidden', '-g', '!.git', '-g', '!node_modules'},
find_command = { 'rg', '--files', '--hidden', '-g', '!.git', '-g', '!node_modules' },
},
},
defaults = {
@@ -59,7 +59,7 @@ return require('packer').startup(function(use)
-- LSP Support
{ 'neovim/nvim-lspconfig' }, -- Required
{
-- Optional
-- Optional
'williamboman/mason.nvim',
run = function()
-- pcall(vim.cmd, 'MasonUpdate')
@@ -69,9 +69,9 @@ return require('packer').startup(function(use)
{ 'williamboman/mason-lspconfig.nvim' }, -- Optional
-- Autocompletion
{ 'hrsh7th/nvim-cmp' }, -- Required
{ 'hrsh7th/nvim-cmp' }, -- Required
{ 'hrsh7th/cmp-nvim-lsp' }, -- Required
{ 'L3MON4D3/LuaSnip' }, -- Required
{ 'L3MON4D3/LuaSnip' }, -- Required
}
}
@@ -82,7 +82,7 @@ return require('packer').startup(function(use)
require("todo-comments").setup {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration https://github.com/folke/todo-comments.nvim
-- refer to the configuration https://github.com/folke/todo-comments.nvim
}
end
}
@@ -101,9 +101,11 @@ return require('packer').startup(function(use)
use 'eandrju/cellular-automaton.nvim'
use {'romgrk/barbar.nvim', requires = 'nvim-tree/nvim-web-devicons'}
use { 'romgrk/barbar.nvim', requires = 'nvim-tree/nvim-web-devicons' }
use('neovim/nvim-lspconfig')
use('jose-elias-alvarez/null-ls.nvim')
use('MunifTanjim/prettier.nvim')
use('neoclide/coc.nvim', { branch = 'release' })
end)

View File

@@ -1,18 +1,23 @@
vim.g.mapleader = " "
vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
vim.keymap.set("n", "<leader>pv", vim.cmd.Ex, { desc = "File explorer" })
vim.keymap.set("n", "<leader>ps", function()
vim.cmd.write()
vim.cmd.Ex()
end)
end, { desc = "Save and file explorer" })
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "Move line down" })
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "Move line up" })
vim.keymap.set("n", "J", "mzJ`z")
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
-- join line - stay on current column
vim.keymap.set("n", "J", "mzJ`z", { desc = "Join line" })
-- page up/down
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Page down" })
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Page up" })
-- next find buffer
vim.keymap.set("n", "n", "nzzzv", { desc = "Next find buffer" })
-- previous find buffer
vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous find buffer" })
-- vim.keymap.set("n", "<leader>vwm", function()
-- require("vim-with-me").StartVimWithMe()
@@ -22,36 +27,50 @@ vim.keymap.set("n", "N", "Nzzzv")
-- end)
-- greatest remap ever
vim.keymap.set("x", "<leader>p", [["_dP]])
vim.keymap.set("x", "<leader>p", [["_dP]], { desc = "Paste over selection, keep current yank" })
-- next greatest remap ever : asbjornHaland
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]])
vim.keymap.set("n", "<leader>Y", [["+Y]])
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]], { desc = "Yank selection to system clipboard" })
vim.keymap.set("n", "<leader>Y", [["+Y]], { desc = "Yank line to system clipboard" })
vim.keymap.set({ "n", "v" }, "<leader>d", [["_d]])
vim.keymap.set({ "n", "v" }, "<leader>d", [["_d]], { desc = "Delete selection to void register" })
-- This is going to get me cancelled
vim.keymap.set("i", "<C-c>", "<Esc>")
vim.keymap.set("i", "<C-c>", "<Esc>", { desc = "Exit insert mode" })
vim.keymap.set("n", "Q", "<nop>")
vim.keymap.set("n", "<C-f>", "<cmd>silent !tmux neww tmux-sessionizer<CR>")
vim.keymap.set("n", "<leader>f", vim.lsp.buf.format)
-- who needs Q
vim.keymap.set("n", "Q", "<nop>", { desc = "No Q" })
vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz")
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz")
vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz")
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz")
vim.keymap.set("n", "<C-f>", "<cmd>silent !tmux neww tmux-sessionizer<CR>", { desc = "New tmux session" })
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true })
vim.keymap.set("n", "<leader>X", "<cmd>!chmod +x %<CR>", { silent = true })
-- file formatting
-- TODO: move to lsp.lua?
vim.keymap.set("n", "<leader>f", vim.lsp.buf.format, { desc = "Format file" })
vim.keymap.set("n", "<leader>df", "<cmd>silent !dart format --line-length 120 %:p<CR>",
{ desc = "Format dart file", silent = true })
vim.keymap.set("n", "<leader>vpp", "<cmd>e ~/.dotfiles/nvim/.config/nvim/lua/casraf/packer.lua<CR>");
vim.keymap.set("n", "<leader>mir", "<cmd>CellularAutomaton make_it_rain<CR>");
vim.keymap.set("n", "<leader>gol", "<cmd>CellularAutomaton game_of_life<CR>");
vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz", { desc = "Next quickfix" })
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz", { desc = "Previous quickfix" })
vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz", { desc = "Next location list" })
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz", { desc = "Previous location list" })
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]],
{ desc = "Search and replace current word" })
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true, desc = "Make file executable" })
vim.keymap.set("n", "<leader>X", "<cmd>!chmod -x %<CR>", { silent = true, desc = "Make file not executable" })
vim.keymap.set("n", "<leader>vpp", "<cmd>e ~/.config/nvim/.dotfiles/nvim/lua/casraf/packer.lua<CR>",
{ desc = "Edit packer config" });
vim.keymap.set("n", "<leader>mir", "<cmd>CellularAutomaton make_it_rain<CR>", { desc = "Make it rain" });
vim.keymap.set("n", "<leader>gol", "<cmd>CellularAutomaton game_of_life<CR>", { desc = "Game of life" });
-- source file
vim.keymap.set("n", "<leader><leader>", function()
-- vim.cmd.write()
vim.cmd("so")
end)
end, { desc = "Source current file" })
-- save file
vim.keymap.set("n", "<leader>w", function()
vim.cmd.write()
end, { desc = "Save file" })

3
.zshrc
View File

@@ -32,3 +32,6 @@ for file in $DOTFILES/scripts/*; do
[[ -f "$file" ]] && source $file
done
bindkey "^[[1;3C" forward-word
bindkey "^[[1;3D" backward-word

View File

@@ -16,6 +16,7 @@ alias "..."="cd ../.."
alias ll="ls -l"
alias la="ls -la"
alias l="ls -A"
alias v="nvim ."
alias vi="nvim"
alias vim="nvim"
alias reload-zsh="source $HOME/.zshrc"

View File

@@ -1,4 +1,4 @@
#compdef prj
#compdef prj prjd
prjpath="$(wd path dv)"
names=($(ls $prjpath))

View File

@@ -95,7 +95,7 @@ rc() {
if [[ -f $file ]]; then
hash=$(md5 $file)
echo "Opening $file..."
vi $file
nvim $file
newhash=$(md5 $file)
if [[ $? -eq 0 && $hash != $newhash ]]; then
@@ -253,7 +253,7 @@ prjd() {
prj() {
prjd $@
vi .
nvim .
}
docker-log() {

View File

@@ -128,8 +128,7 @@ if [[ ! -d ~/.local/share/nvim/site/pack/packer/start/packer.nvim ]]; then
fi
echo_cyan "Copying .config..."
rsync -vtr $DOTFILES/.config/ $HOME/.config/
rsync -vtr $DOTFILES/.p10k.zsh $HOME/.p10k.zsh
rsync -vtr --exclude ".git" --exclude "node_modules" --exclude ".DS_Store" $DOTFILES/.config/ $HOME/.config/
echo_cyan "Done"

View File

@@ -113,3 +113,5 @@ else
fi
export VISUAL="$EDITOR"
[[ ! -f ~/.config/.p10k.zsh ]] || source ~/.config/.p10k.zsh