mirror of
https://github.com/chenasraf/dotfiles.git
synced 2026-05-17 17:28:07 +00:00
feat: nvim, shell updates
This commit is contained in:
@@ -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
|
||||
})
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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" })
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
3
.zshrc
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#compdef prj
|
||||
#compdef prj prjd
|
||||
prjpath="$(wd path dv)"
|
||||
names=($(ls $prjpath))
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -113,3 +113,5 @@ else
|
||||
fi
|
||||
|
||||
export VISUAL="$EDITOR"
|
||||
|
||||
[[ ! -f ~/.config/.p10k.zsh ]] || source ~/.config/.p10k.zsh
|
||||
|
||||
Reference in New Issue
Block a user