feat: update plugin configurations and add new ones

Update default configurations such as disabling netrw, setting 'isfname' option
 and better key mappings for several use cases including navigation, and deletion
 of buffers among others.

Add new plugins including Comment.nvim for easier code commenting, nvim-tree
 for file exploration, gitsigns for git activity within nvim, and several color
 scheme plugins for better aesthetics.

Also updated several existing plugins configurations, including telescope for
 file searching, trouble for diagnostics within nvim, and nvim-treesitter for
 better syntax highlighting.

The key mappings have been improved to serve a variety of use cases, including
, but not limited to, finding files, tab navigation, and various mappings for
 LSP functionalities.

The aesthetics of the editor has been updated by adding a variety of color schemes
 to choose from, including fleet-theme-nvim, catppuccin, rose-pine, and toky
onight.nvim

Features like comment toggling with Comment.nvim, file tree viewing with nv
im-tree and git activity per line with gitsigns.nvim have also been introduced
.
Some plugins like vim-bujo have also been removed as they no longer seem to
 be used in the configuration.

The packer.lua file has also been edited to reflect these changes, with additions
 of plugins and the removal of vim-bujo.

The lsp.lua file has been updated to include new commands that handles formatting
, eslint auto-fixing and added mappings for signature help and type definitions
.
Some key plugin configuration files have been newly created, like comment.lua
, gitsigns.lua, indent-blankline.lua, neoai.lua, nvim-tree.lua, which were not
 present before.

Existing plugins configuration files like telescope.lua, trouble.lua, zenmode
.lua have been updated for better usability.

Finally, netrw, the default vim file explorer has been disabled as it has been
 replaced by the nvim-tree plugin.

/!\ OPEN AI wrote that
This commit is contained in:
Simon Lasbrugnas 2023-11-14 13:44:10 +01:00
parent 9cd6b9f8f0
commit 2c81514221
Signed by untrusted user who does not match committer: simon
GPG key ID: 86039876BA6ED8DE
14 changed files with 262 additions and 57 deletions

View file

@ -1,5 +1,5 @@
function ColorMyPencils(color)
color = color or "kanagawa-dragon"
color = color or "fleet"
vim.cmd.colorscheme(color)
end

1
after/plugin/comment.lua Normal file
View file

@ -0,0 +1 @@
require('Comment').setup()

50
after/plugin/gitsigns.lua Normal file
View file

@ -0,0 +1,50 @@
require('gitsigns').setup{
signs = {
add = { text = '' },
change = { text = '' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', ']c', function()
if vim.wo.diff then return ']c' end
vim.schedule(function() gs.next_hunk() end)
return '<Ignore>'
end, {expr=true})
map('n', '[c', function()
if vim.wo.diff then return '[c' end
vim.schedule(function() gs.prev_hunk() end)
return '<Ignore>'
end, {expr=true})
-- Actions
map('n', '<leader>hs', gs.stage_hunk)
map('n', '<leader>hr', gs.reset_hunk)
map('v', '<leader>hs', function() gs.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
map('v', '<leader>hr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
map('n', '<leader>hS', gs.stage_buffer)
map('n', '<leader>hu', gs.undo_stage_hunk)
map('n', '<leader>hR', gs.reset_buffer)
map('n', '<leader>hp', gs.preview_hunk)
map('n', '<leader>hb', function() gs.blame_line{full=true} end)
map('n', '<leader>tb', gs.toggle_current_line_blame)
map('n', '<leader>hd', gs.diffthis)
map('n', '<leader>hD', function() gs.diffthis('~') end)
map('n', '<leader>td', gs.toggle_deleted)
-- Text object
map({'o', 'x'}, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
end
}

View file

@ -0,0 +1,19 @@
require "ibl".setup {
scope = {
enabled = true,
char = "",
show_start = false,
show_end = false,
include = {
node_type = {
lua = { "table_constructor" },
},
},
},
indent = {
char = "",
},
exclude = {
buftypes = { "terminal", "nofile" },
},
}

View file

@ -7,7 +7,7 @@ lspconfig.intelephense.setup {
cmd = { "intelephense", "--stdio" },
settings = {
intelephense = {
licenceKeyPath = home..'/intelephense/license.txt'
licenceKeyPath = home .. '/intelephense/license.txt'
}
}
}
@ -24,7 +24,7 @@ lsp.nvim_workspace()
local cmp = require('cmp')
local cmp_select = {behavior = cmp.SelectBehavior.Select}
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),
@ -50,7 +50,21 @@ lsp.set_preferences({
})
lsp.on_attach(function(client, bufnr)
local opts = {buffer = bufnr, remap = false}
local opts = { buffer = bufnr, remap = false }
-- Format on save
-- vim.api.nvim_create_autocmd("BufWritePost", {
-- callback = function()
-- vim.lsp.buf.format()
-- end
-- })
-- Eslint auto fix on save
vim.api.nvim_create_autocmd('BufWritePre', {
pattern = { '*.tsx', '*.ts', '*.jsx', '*.js', '*.vue', '*.cjs', '*.mjs', '*.json', '*.css', '*.scss', '*.less', '*.yml' },
command = 'silent! EslintFixAll',
group = vim.api.nvim_create_augroup('EslintAutocmdsFormatting', {}),
})
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts)
@ -62,6 +76,8 @@ lsp.on_attach(function(client, bufnr)
vim.keymap.set("n", "<leader>rr", function() vim.lsp.buf.references() end, opts)
vim.keymap.set("n", "<leader>rn", function() vim.lsp.buf.rename() end, opts)
vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
vim.keymap.set("n", "<leader>ls", function() vim.lsp.buf.signature_help() end, opts)
vim.keymap.set("n", "<leader>D", function() vim.lsp.buf.type_definition() end, opts)
end)
lsp.setup()
@ -69,4 +85,3 @@ lsp.setup()
vim.diagnostic.config({
virtual_text = true
})

57
after/plugin/neoai.lua Normal file
View file

@ -0,0 +1,57 @@
require("neoai").setup({
models = {
{
name = "openai",
model = "gpt-4",
params = nil,
},
},
open_ai = {
api_key = {
env = "OPENAI_API_KEY",
value = nil,
get = function()
local key = vim.fn.system("pass show openai/api_key")
key = string.gsub(key, "\n", "")
return key
end,
},
},
shortcuts = {
{
name = "textify",
key = "<leader>as",
desc = "fix text with AI",
use_context = true,
prompt = [[
Please rewrite the text to make it more readable, clear,
concise, and fix any grammatical, punctuation, or spelling
errors
]],
modes = { "v" },
strip_function = nil,
},
{
name = "gitcommit",
key = "<leader>ag",
desc = "generate git commit message",
use_context = false,
prompt = function()
return [[
With specifications from conventionalcommits.org,
the commit message should be formatted as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Using the following git diff generate a consise and
clear git commit message, with a short title summary
that is 75 characters or less.
]] .. vim.fn.system("git diff --cached")
end,
modes = { "n" },
strip_function = nil,
},
},
})

View file

@ -0,0 +1,6 @@
require("nvim-tree").setup({
sort_by = "case_sensitive",
view = { width = 40, },
renderer = { group_empty = true, },
filters = { dotfiles = true, },
})

View file

@ -19,7 +19,10 @@ vim.keymap.set('n', '<leader>pf', function()
builtin.find_files({ no_ignore = true, hidden = true })
end)
vim.keymap.set('n', '<C-p>', custom_git_files, {})
vim.keymap.set('n', '<leader>ps', function()
builtin.grep_string({ search = vim.fn.input("Grep > ") })
end)
vim.keymap.set('n', '<leader>ps', function() builtin.live_grep() end)
vim.keymap.set('n', '<leader>vh', builtin.help_tags, {})
vim.keymap.set('n', '<leader>fa', function() builtin.find_files({ follow = true, no_ignore = true, hidden = true }) end)
vim.keymap.set('n', '<leader>fb', function() builtin.buffers() end)
vim.keymap.set('n', '<leader>cm', function() builtin.git_commits() end)
vim.keymap.set('n', '<leader>gt', function() builtin.git_status() end)

View file

@ -1,4 +1,7 @@
require'nvim-treesitter.configs'.setup {
indent = {
enable = true
},
-- A list of parser names, or "all"
ensure_installed = { "vimdoc", "javascript", "typescript", "c", "lua", "rust" },
@ -17,7 +20,7 @@ require'nvim-treesitter.configs'.setup {
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = { "php", "twig", "svelte" }
additional_vim_regex_highlighting = { "php", "twig" }
},
}

View file

@ -1,3 +1,9 @@
vim.keymap.set("n", "<leader>xq", "<cmd>TroubleToggle quickfix<cr>",
{silent = true, noremap = true}
)
vim.keymap.set("n", "<leader>xd", "<cmd>TroubleToggle document_diagnostics<cr>",
{silent = true, noremap = true}
)
vim.keymap.set("n", "<leader>xt", "<cmd>TroubleToggle telescope<cr>",
{silent = true, noremap = true}
)

View file

@ -10,7 +10,6 @@ vim.keymap.set("n", "<leader>zz", function()
vim.wo.wrap = false
vim.wo.number = true
vim.wo.rnu = true
ColorMyPencils()
end)
@ -26,5 +25,4 @@ vim.keymap.set("n", "<leader>zZ", function()
vim.wo.number = false
vim.wo.rnu = false
vim.opt.colorcolumn = "0"
ColorMyPencils()
end)

View file

@ -10,15 +10,21 @@ return require("packer").startup(function(use)
use "wsdjeg/vim-fetch"
use {
"nvim-telescope/telescope.nvim", tag = "0.1.0",
"nvim-telescope/telescope.nvim",
requires = { {"nvim-lua/plenary.nvim"} }
}
use 'numToStr/Comment.nvim'
use("tpope/vim-surround")
use("rebelot/kanagawa.nvim")
use("felipeagc/fleet-theme-nvim")
use { "catppuccin/nvim", as = "catppuccin" }
use({ 'rose-pine/neovim', as = 'rose-pine' })
use("folke/tokyonight.nvim")
use("vuciv/vim-bujo")
use("lukas-reineke/indent-blankline.nvim")
use({
"folke/trouble.nvim",
@ -29,6 +35,15 @@ return require("packer").startup(function(use)
end
})
use {
'nvim-tree/nvim-tree.lua',
requires = {
'nvim-tree/nvim-web-devicons',
},
}
use("lewis6991/gitsigns.nvim")
use("ThePrimeagen/refactoring.nvim")
use {
@ -36,12 +51,21 @@ return require("packer").startup(function(use)
run = function()
local ts_update = require("nvim-treesitter.install").update({ with_sync = true })
ts_update()
end,}
end
}
use("nvim-treesitter/playground")
use("mbbill/undotree")
use("tpope/vim-fugitive")
use("nvim-treesitter/nvim-treesitter-context");
use("jacoborus/tender.vim")
use {
"Bryley/neoai.nvim",
requires = {
"MunifTanjim/nui.nvim",
}
}
use {
"VonHeikemen/lsp-zero.nvim",
branch = 'v1.x',
@ -62,6 +86,9 @@ return require("packer").startup(function(use)
-- Snippets
{"L3MON4D3/LuaSnip"},
{"rafamadriz/friendly-snippets"},
-- Colors
{"folke/lsp-colors.nvim"},
}
}
@ -69,6 +96,4 @@ return require("packer").startup(function(use)
use("github/copilot.vim")
use("eandrju/cellular-automaton.nvim")
use("laytan/cloak.nvim")
end)
end)

34
lua/default/remap.lua Normal file → Executable file
View file

@ -1,6 +1,5 @@
vim.g.mapleader = " "
vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
vim.keymap.set("n", "<leader>e", "<cmd>:NvimTreeFindFileToggle<CR>")
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
@ -27,10 +26,10 @@ 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)
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-j>", "<cmd>cnext<CR>zz")
vim.keymap.set("n", "<C-k>", "<cmd>cprev<CR>zz")
vim.keymap.set("n", "<leader>j", "<cmd>lnext<CR>zz")
vim.keymap.set("n", "<leader>k", "<cmd>lprev<CR>zz")
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 })
@ -39,6 +38,29 @@ vim.keymap.set("n", "<leader><leader>", function()
vim.cmd("so")
end)
-- Keybindings for navigating tabs
vim.keymap.set("n", "<leader>.", function()
vim.cmd("tabn")
end, {})
vim.keymap.set("n", "<Tab>", function()
vim.cmd("tabn")
end, {})
vim.keymap.set("n", "<leader>,", function()
vim.cmd("tabp")
end, {})
vim.keymap.set("n", "<leader>tc", function()
vim.cmd("tabc")
end, {})
vim.keymap.set("n", "<leader>tt", function()
vim.cmd("tabnew")
end, {})
vim.keymap.set("n", "<leader><", function()
vim.cmd("tabfirst")
end, {})
vim.keymap.set("n", "<leader>>", function()
vim.cmd("tablast")
end, {})
-- Keybinding for deleting the current buffer using :bd
vim.keymap.set("n", "<leader>bd", function()
vim.cmd("bd")

View file

@ -1,3 +1,7 @@
-- disable netrw
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.opt.nu = true
vim.opt.relativenumber = true
@ -26,7 +30,3 @@ vim.opt.signcolumn = "yes"
vim.opt.isfname:append("@-@")
vim.opt.updatetime = 50
-- vim-bujo settings
vim.api.nvim_set_var('bujo#todo_file_path', os.getenv('HOME') .. '/.bujo')
vim.api.nvim_set_var('bujo#window_width', 60)