feat: update nvim plugins and configurations

Update Neovim plugins and keybindings for an improved development experience
. Changes include the addition of `toggleterm.nvim` for better terminal support
, `conform.nvim` for easier configurations, new themes, AI assistance with `
neoai.nvim`, version control enhancements, and more. Removed unused themes and
 plugins to streamline the setup. Refactored keybindings for better navigation
 and usability.

ChatGPT is taking its job seriously
This commit is contained in:
Simon Lasbrugnas 2023-11-15 06:38:23 +01:00
parent ad7936435e
commit 36df2834e5
Signed by untrusted user who does not match committer: simon
GPG key ID: 86039876BA6ED8DE
12 changed files with 156 additions and 106 deletions

View file

@ -1,22 +0,0 @@
require("cloak").setup({
enabled = false,
cloak_character = "*",
-- The applied highlight group (colors) on the cloaking, see `:h highlight`.
highlight_group = "Comment",
patterns = {
{
-- Match any file starting with ".env".
-- This can be a table to match multiple file patterns.
file_pattern = {
".env*",
"wrangler.toml",
".dev.vars",
},
-- Match an equals sign and any character after it.
-- This can also be a table of patterns to cloak,
-- example: cloak_pattern = { ":.+", "-.+" } for yaml files.
cloak_pattern = "=.+"
},
},
})

View file

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

3
after/plugin/conform.lua Normal file
View file

@ -0,0 +1,3 @@
require("conform").setup{
javascript = { { "prettierd", "prettier" } },
}

View file

@ -2,7 +2,7 @@ local lsp = require("lsp-zero")
local lspconfig = require('lspconfig') local lspconfig = require('lspconfig')
local home = vim.fn.expand('$HOME') local home = vim.fn.expand('$HOME')
-- Activate intelephense -- Activate intelephense because I paid for it, yes
lspconfig.intelephense.setup { lspconfig.intelephense.setup {
cmd = { "intelephense", "--stdio" }, cmd = { "intelephense", "--stdio" },
settings = { settings = {

6
after/plugin/lualine.lua Normal file
View file

@ -0,0 +1,6 @@
require('lualine').setup{
options = {
theme = 'auto',
icons_enabled = true,
},
}

4
after/plugin/mini.lua Normal file
View file

@ -0,0 +1,4 @@
require('mini.comment').setup()
require('mini.surround').setup()
require('mini.pairs').setup()
require('mini.clue').setup()

View file

@ -1,4 +1,4 @@
require("neoai").setup({ require('neoai').setup({
models = { models = {
{ {
name = "openai", name = "openai",
@ -8,8 +8,6 @@ require("neoai").setup({
}, },
open_ai = { open_ai = {
api_key = { api_key = {
env = "OPENAI_API_KEY",
value = nil,
get = function() get = function()
local key = vim.fn.system("pass show openai/api_key") local key = vim.fn.system("pass show openai/api_key")
key = string.gsub(key, "\n", "") key = string.gsub(key, "\n", "")
@ -17,6 +15,16 @@ require("neoai").setup({
end, end,
}, },
}, },
prompts = {
context_prompt = function(context)
return "You are a senior software developer."
.. "You always answer question with short, straight to the point answers."
.. "You only provide the code snippet and without the code block."
.. "Only provide explaination if the user asks for it"
.. "Here is the user's problem:"
.. context
end,
},
shortcuts = { shortcuts = {
{ {
name = "textify", name = "textify",
@ -62,9 +70,8 @@ require("neoai").setup({
========================================= =========================================
ci: use pulumi common new kubernetes helpers ci: use pulumi common new kubernetes helpers
========================================= =========================================
Using the following git diff generate a consise and Using the following git diff in order to generate
clear git commit message, with a short title summary a consise and clear git commit message:
that is 75 characters or less.
]] .. vim.fn.system("git diff --cached") ]] .. vim.fn.system("git diff --cached")
end, end,
modes = { "n" }, modes = { "n" },
@ -72,3 +79,17 @@ require("neoai").setup({
}, },
}, },
}) })
-- Keybindings
vim.keymap.set("n", "<leader>at", "<cmd>NeoAIToggle<cr>",
{silent = true, noremap = true}
)
vim.keymap.set("n", "<leader>ai", ":NeoAIInject YOUR MAY ONLY PROVIDE ONLY THE CODE SNIPPET AND WITHOUT THE CODE BLOCK",
{silent = true, noremap = true}
)
vim.keymap.set("v", "<leader>ac", "<cmd>'<,'>NeoAIContext<cr>iPlease explain shortly",
{silent = true, noremap = true}
)
vim.keymap.set("n", "<leader>ap", "<cmd>put c<cr><cmd>let @c=''<cr>",
{silent = true, noremap = true}
)

View file

@ -1,6 +1,65 @@
require("nvim-tree").setup({ require("nvim-tree").setup({
sort_by = "case_sensitive", sort_by = "case_sensitive",
view = { width = 40, }, view = { width = 40, },
renderer = { group_empty = true, },
filters = { dotfiles = true, }, filters = { dotfiles = true, },
actions = {
open_file = {
quit_on_open = true,
},
},
renderer = {
group_empty = true,
icons = {
web_devicons = {
file = {
enable = true,
color = true,
},
folder = {
enable = false,
color = true,
},
},
git_placement = "before",
modified_placement = "after",
diagnostics_placement = "signcolumn",
bookmarks_placement = "signcolumn",
padding = " ",
symlink_arrow = "",
show = {
file = true,
folder = true,
folder_arrow = true,
git = true,
modified = true,
diagnostics = true,
bookmarks = true,
},
glyphs = {
default = "",
symlink = "",
bookmark = "󰆤",
modified = "",
folder = {
arrow_closed = "",
arrow_open = "",
default = "",
open = "",
empty = "",
empty_open = "",
symlink = "",
symlink_open = "",
},
git = {
unstaged = "",
staged = "",
unmerged = "",
renamed = "",
untracked = "",
deleted = "",
ignored = "",
},
},
},
},
}) })

View file

@ -23,6 +23,5 @@ 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>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>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>fb', function() builtin.buffers() end)
vim.keymap.set('n', '<leader>cm', function() builtin.git_commits() end) vim.keymap.set('n', '<leader>fc', function() builtin.git_commits() end)
vim.keymap.set('n', '<leader>gt', function() builtin.git_status() end) vim.keymap.set('n', '<leader>gt', function() builtin.git_status() end)

View file

@ -0,0 +1,4 @@
require("toggleterm").setup()
-- floating terminal
vim.keymap.set("n", "<leader>\\", "<cmd>ToggleTerm direction=float<CR>")

View file

@ -1,31 +1,38 @@
-- This file can be loaded by calling `lua require('plugins')` from your init.vim
-- Only required if you have packer configured as `opt`
vim.cmd.packadd("packer.nvim") vim.cmd.packadd("packer.nvim")
return require("packer").startup(function(use) return require("packer").startup(function(use)
-- Packer can manage itself -- Packer can manage itself
use "wbthomason/packer.nvim" use "wbthomason/packer.nvim"
-- gF but better (and real)
use "wsdjeg/vim-fetch" use "wsdjeg/vim-fetch"
-- terminal in neovim which already exists but is pretty bad and this one is better
use { "akinsho/toggleterm.nvim", tag = '*' }
-- find everything, maybe too much
use { use {
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
requires = { { "nvim-lua/plenary.nvim" } } requires = { { "nvim-lua/plenary.nvim" } }
} }
use 'numToStr/Comment.nvim' -- easy mode
use("stevearc/conform.nvim")
use("tpope/vim-surround") use { 'stevearc/dressing.nvim' }
use("rafamadriz/friendly-snippets")
use({ 'echasnovski/mini.nvim', branch = 'stable' })
use("ThePrimeagen/refactoring.nvim")
-- theme stuff
use {
'nvim-lualine/lualine.nvim',
requires = { 'nvim-tree/nvim-web-devicons', opt = true }
}
use("rebelot/kanagawa.nvim") use("rebelot/kanagawa.nvim")
use("felipeagc/fleet-theme-nvim") use("felipeagc/fleet-theme-nvim")
use { "catppuccin/nvim", as = "catppuccin" }
use({ 'rose-pine/neovim', as = 'rose-pine' })
use("folke/tokyonight.nvim")
use("lukas-reineke/indent-blankline.nvim") use("lukas-reineke/indent-blankline.nvim")
-- do I need this ?
use({ use({
"folke/trouble.nvim", "folke/trouble.nvim",
config = function() config = function()
@ -35,6 +42,7 @@ return require("packer").startup(function(use)
end end
}) })
-- I'm not a netrw fan
use { use {
'nvim-tree/nvim-tree.lua', 'nvim-tree/nvim-tree.lua',
requires = { requires = {
@ -42,10 +50,6 @@ return require("packer").startup(function(use)
}, },
} }
use("lewis6991/gitsigns.nvim")
use("ThePrimeagen/refactoring.nvim")
use { use {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
run = function() run = function()
@ -53,19 +57,28 @@ return require("packer").startup(function(use)
ts_update() ts_update()
end end
} }
use("nvim-treesitter/nvim-treesitter-context");
use("nvim-treesitter/playground") use("nvim-treesitter/playground")
-- versionning
use("mbbill/undotree") use("mbbill/undotree")
use("tpope/vim-fugitive") use("tpope/vim-fugitive")
use("nvim-treesitter/nvim-treesitter-context"); use("lewis6991/gitsigns.nvim")
use("jacoborus/tender.vim")
-- important
use("folke/zen-mode.nvim")
use("eandrju/cellular-automaton.nvim")
-- AI stuff
use("github/copilot.vim")
use { use {
"Bryley/neoai.nvim", "Bryley/neoai.nvim",
requires = { requires = {
"MunifTanjim/nui.nvim", "MunifTanjim/nui.nvim",
} }
} }
-- making neovim actually usable
use { use {
"VonHeikemen/lsp-zero.nvim", "VonHeikemen/lsp-zero.nvim",
branch = 'v1.x', branch = 'v1.x',
@ -91,9 +104,4 @@ return require("packer").startup(function(use)
{ "folke/lsp-colors.nvim" }, { "folke/lsp-colors.nvim" },
} }
} }
use("folke/zen-mode.nvim")
use("github/copilot.vim")
use("eandrju/cellular-automaton.nvim")
use("laytan/cloak.nvim")
end) end)

View file

@ -10,16 +10,13 @@ vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv") vim.keymap.set("n", "N", "Nzzzv")
-- greatest remap ever
vim.keymap.set("x", "<leader>p", [["_dP]]) vim.keymap.set("x", "<leader>p", [["_dP]])
-- next greatest remap ever : asbjornHaland
vim.keymap.set({"n", "v"}, "<leader>y", [["+y]]) vim.keymap.set({"n", "v"}, "<leader>y", [["+y]])
vim.keymap.set("n", "<leader>Y", [["+Y]]) vim.keymap.set("n", "<leader>Y", [["+Y]])
vim.keymap.set({"n", "v"}, "<leader>d", [["_d]]) vim.keymap.set({"n", "v"}, "<leader>d", [["_d]])
-- This is going to get me cancelled
vim.keymap.set("i", "<C-c>", "<Esc>") vim.keymap.set("i", "<C-c>", "<Esc>")
vim.keymap.set("n", "Q", "<nop>") vim.keymap.set("n", "Q", "<nop>")
@ -38,14 +35,17 @@ vim.keymap.set("n", "<leader><leader>", function()
vim.cmd("so") vim.cmd("so")
end) end)
-- Keybindings for navigating tabs -- get out of terminal mode
vim.keymap.set("n", "<leader>.", function() vim.keymap.set("t", "<Esc>", "<C-\\><C-n>")
-- tab stuff
vim.keymap.set("n", "<leader>tn", function()
vim.cmd("tabn") vim.cmd("tabn")
end, {}) end, {})
vim.keymap.set("n", "<Tab>", function() vim.keymap.set("n", "<Tab>", function()
vim.cmd("tabn") vim.cmd("tabn")
end, {}) end, {})
vim.keymap.set("n", "<leader>,", function() vim.keymap.set("n", "<leader>tp", function()
vim.cmd("tabp") vim.cmd("tabp")
end, {}) end, {})
vim.keymap.set("n", "<leader>tc", function() vim.keymap.set("n", "<leader>tc", function()
@ -54,19 +54,11 @@ end, {})
vim.keymap.set("n", "<leader>tt", function() vim.keymap.set("n", "<leader>tt", function()
vim.cmd("tabnew") vim.cmd("tabnew")
end, {}) 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 -- buffer stuff
vim.keymap.set("n", "<leader>bd", function() vim.keymap.set("n", "<leader>bd", function()
vim.cmd("bd") vim.cmd("bd")
end, {}) end, {})
-- Keybding for cycling through the list of buffers
vim.keymap.set("n", "<leader>bn", function() vim.keymap.set("n", "<leader>bn", function()
vim.cmd("bn") vim.cmd("bn")
end, {}) end, {})
@ -74,26 +66,3 @@ vim.keymap.set("n", "<leader>bp", function()
vim.cmd("bp") vim.cmd("bp")
end, {}) end, {})
-- Define a function to execute the appropriate program based on file type
vim.keymap.set("n", "<leader>/", function()
local filetype = vim.bo.filetype
local app = ""
if filetype == "javascript" then
app = "node"
elseif filetype == "typescript" then
app = "ts-node"
elseif filetype == "lua" then
app = "lua"
elseif filetype == "python" then
app = "python"
elseif filetype == "rust" then
app = "cargo run"
elseif filetype == "go" then
app = "go run"
else
print("Unsupported file type: " .. filetype)
return
end
vim.cmd("terminal " .. app .. " %")
end, { noremap = true, silent = true })