update file structure
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
local g = vim.g
|
||||
local o = vim.o
|
||||
local keymap = vim.keymap.set
|
||||
local cmd = vim.cmd
|
||||
local api = vim.api
|
||||
|
||||
-- Leader Key
|
||||
g.mapleader = " "
|
||||
|
||||
-- Disable netrw for Nvim Tree
|
||||
g.loaded_netrw = 1
|
||||
g.loaded_netrwPlugin = 1
|
||||
|
||||
-- Numbers
|
||||
o.number = true
|
||||
o.relativenumber = true
|
||||
o.numberwidth = 1
|
||||
|
||||
-- Clipboard
|
||||
cmd[[set clipboard+=unnamedplus]]
|
||||
|
||||
-- Files
|
||||
o.swapfile = false
|
||||
o.backup = false
|
||||
|
||||
-- Scroll Offset
|
||||
o.scrolloff = 15
|
||||
|
||||
-- Cursor & Column Lines
|
||||
o.colorcolumn = "80"
|
||||
o.cursorline = true
|
||||
|
||||
-- Mouse
|
||||
o.mouse = "a"
|
||||
|
||||
-- Spacing
|
||||
o.tabstop = 2
|
||||
o.shiftwidth = 2
|
||||
o.expandtab = true
|
||||
|
||||
-- Update Time
|
||||
o.updatetime = 50
|
||||
|
||||
-- Hide Highlighting
|
||||
cmd[[set nohlsearch]]
|
||||
|
||||
-- Indent
|
||||
keymap("n", "<S-Tab>", "<<")
|
||||
keymap("n", "<Tab>", ">>")
|
||||
keymap("v", "<S-Tab>", "<<")
|
||||
keymap("v", "<Tab>", ">>")
|
||||
keymap("i", "<S-Tab>", "<BS>")
|
||||
|
||||
-- Move Between Panels
|
||||
keymap("", "<C-h>", ":wincmd h<CR>")
|
||||
keymap("", "<C-j>", ":wincmd j<CR>")
|
||||
keymap("", "<C-k>", ":wincmd k<CR>")
|
||||
keymap("", "<C-l>", ":wincmd l<CR>")
|
||||
|
||||
-- Jump Up/Down A Half Page
|
||||
keymap("n", "<C-d>", "<C-d>zz")
|
||||
keymap("n", "<C-u>", "<C-u>zz")
|
||||
|
||||
-- Keep Copy/Paste Value
|
||||
keymap("x", "<leader>p", "\"_dP")
|
||||
|
||||
-- Sort
|
||||
keymap("v", "<C-s>", ":sort<CR>")
|
||||
|
||||
-- Disable F1 in Insert mode
|
||||
keymap('i', '<F1>', '<nop>')
|
||||
|
||||
-- Close Neovim
|
||||
cmd("command! Qa qa")
|
||||
|
||||
-- Remove trailing whitespace when focus is lost or the window is closed,
|
||||
-- without moving the cursor
|
||||
api.nvim_exec([[
|
||||
autocmd FocusLost,WinLeave * if &modifiable | let w:save_cursor = getcurpos() | %s/\s\+$//e | call setpos('.', w:save_cursor) | endif
|
||||
]], false)
|
||||
|
||||
-- Plugins
|
||||
vim.pack.add({
|
||||
"https://github.com/ellisonleao/gruvbox.nvim",
|
||||
"https://github.com/windwp/nvim-autopairs",
|
||||
"https://github.com/Pocco81/auto-save.nvim",
|
||||
"https://github.com/lewis6991/gitsigns.nvim",
|
||||
"https://github.com/lukas-reineke/indent-blankline.nvim",
|
||||
"https://github.com/nvim-lua/plenary.nvim", -- Dependancy of Telescope
|
||||
"https://github.com/nvim-telescope/telescope.nvim",
|
||||
"https://github.com/nvim-tree/nvim-web-devicons", -- Dependancy of Nvim Tree
|
||||
"https://github.com/nvim-tree/nvim-tree.lua",
|
||||
"https://github.com/nvim-treesitter/nvim-treesitter",
|
||||
"https://github.com/neovim/nvim-lspconfig",
|
||||
"https://github.com/hrsh7th/nvim-cmp",
|
||||
"https://github.com/hrsh7th/cmp-nvim-lsp",
|
||||
"https://github.com/hrsh7th/cmp-buffer",
|
||||
"https://github.com/MeanderingProgrammer/render-markdown.nvim",
|
||||
"https://github.com/williamboman/mason.nvim",
|
||||
"https://github.com/williamboman/mason-lspconfig.nvim",
|
||||
"https://github.com/greggh/claude-code.nvim",
|
||||
})
|
||||
|
||||
-- Plugin Configs
|
||||
require('plugins');
|
||||
@@ -0,0 +1,61 @@
|
||||
require("claude-code").setup({
|
||||
-- Terminal window settings
|
||||
window = {
|
||||
split_ratio = 0.3, -- Percentage of screen for the terminal window (height for horizontal, width for vertical splits)
|
||||
position = "botright", -- Position of the window: "botright", "topleft", "vertical", "float", etc.
|
||||
enter_insert = true, -- Whether to enter insert mode when opening Claude Code
|
||||
hide_numbers = true, -- Hide line numbers in the terminal window
|
||||
hide_signcolumn = true, -- Hide the sign column in the terminal window
|
||||
|
||||
-- Floating window configuration (only applies when position = "float")
|
||||
float = {
|
||||
width = "80%", -- Width: number of columns or percentage string
|
||||
height = "80%", -- Height: number of rows or percentage string
|
||||
row = "center", -- Row position: number, "center", or percentage string
|
||||
col = "center", -- Column position: number, "center", or percentage string
|
||||
relative = "editor", -- Relative to: "editor" or "cursor"
|
||||
border = "rounded", -- Border style: "none", "single", "double", "rounded", "solid", "shadow"
|
||||
},
|
||||
},
|
||||
-- File refresh settings
|
||||
refresh = {
|
||||
enable = true, -- Enable file change detection
|
||||
updatetime = 100, -- updatetime when Claude Code is active (milliseconds)
|
||||
timer_interval = 1000, -- How often to check for file changes (milliseconds)
|
||||
show_notifications = true, -- Show notification when files are reloaded
|
||||
},
|
||||
-- Git project settings
|
||||
git = {
|
||||
use_git_root = true, -- Set CWD to git root when opening Claude Code (if in git project)
|
||||
},
|
||||
-- Shell-specific settings
|
||||
shell = {
|
||||
separator = '&&', -- Command separator used in shell commands
|
||||
pushd_cmd = 'pushd', -- Command to push directory onto stack (e.g., 'pushd' for bash/zsh, 'enter' for nushell)
|
||||
popd_cmd = 'popd', -- Command to pop directory from stack (e.g., 'popd' for bash/zsh, 'exit' for nushell)
|
||||
},
|
||||
-- Command settings
|
||||
command = "claude", -- Command used to launch Claude Code
|
||||
-- Command variants
|
||||
command_variants = {
|
||||
-- Conversation management
|
||||
continue = "--continue", -- Resume the most recent conversation
|
||||
resume = "--resume", -- Display an interactive conversation picker
|
||||
|
||||
-- Output options
|
||||
verbose = "--verbose", -- Enable verbose logging with full turn-by-turn output
|
||||
},
|
||||
-- Keymaps
|
||||
keymaps = {
|
||||
toggle = {
|
||||
normal = "<C-,>", -- Normal mode keymap for toggling Claude Code, false to disable
|
||||
terminal = "<C-,>", -- Terminal mode keymap for toggling Claude Code, false to disable
|
||||
variants = {
|
||||
continue = "<leader>cC", -- Normal mode keymap for Claude Code with continue flag
|
||||
verbose = "<leader>cV", -- Normal mode keymap for Claude Code with verbose flag
|
||||
},
|
||||
},
|
||||
window_navigation = true, -- Enable window navigation keymaps (<C-h/j/k/l>)
|
||||
scrolling = true, -- Enable scrolling keymaps (<C-f/b>) for page up/down
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,47 @@
|
||||
local cmp = require'cmp'
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
vim.snippet.expand(args.body)
|
||||
end,
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
mapping = {
|
||||
['<Tab>'] = function(fallback)
|
||||
if cmp.visible() then
|
||||
if not cmp.select_next_item() then
|
||||
if vim.bo.buftype ~= 'prompt' and has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end
|
||||
else
|
||||
return vim.cmd(">")
|
||||
end
|
||||
end,
|
||||
|
||||
['<S-Tab>'] = function(fallback)
|
||||
if cmp.visible() then
|
||||
if not cmp.select_prev_item() then
|
||||
if vim.bo.buftype ~= 'prompt' and has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end
|
||||
else
|
||||
return vim.cmd("<")
|
||||
end
|
||||
end,
|
||||
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
||||
},
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'buffer' },
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,14 @@
|
||||
require('gruvbox').setup({
|
||||
priority = 1000,
|
||||
|
||||
config = true,
|
||||
|
||||
contrast = "hard",
|
||||
transparent_mode = true,
|
||||
overrides = {
|
||||
NonText = { fg = "#666666" },
|
||||
},
|
||||
})
|
||||
|
||||
-- Colorscheme
|
||||
vim.cmd("colorscheme gruvbox")
|
||||
@@ -0,0 +1,35 @@
|
||||
local levels = vim.diagnostic.severity
|
||||
|
||||
local opts = {
|
||||
virtual_text = false,
|
||||
float = {
|
||||
border = "rounded",
|
||||
},
|
||||
signs = {
|
||||
text = {
|
||||
[levels.ERROR] = '✘',
|
||||
[levels.WARN] = '▲',
|
||||
[levels.HINT] = '⚑',
|
||||
[levels.INFO] = '»',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
local sign_define = function(name, text)
|
||||
local hl = 'DiagnosticSign' .. name
|
||||
vim.fn.sign_define(hl, {
|
||||
texthl = hl,
|
||||
text = text,
|
||||
numhl = ''
|
||||
})
|
||||
end
|
||||
|
||||
if vim.fn.has('nvim-0.10') == 0 then
|
||||
sign_define('Error', opts.signs.text[levels.ERROR])
|
||||
sign_define('Warn', opts.signs.text[levels.WARN])
|
||||
sign_define('Hint', opts.signs.text[levels.HINT])
|
||||
sign_define('Info', opts.signs.text[levels.INFO])
|
||||
end
|
||||
|
||||
vim.cmd [[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]]
|
||||
vim.diagnostic.config(opts)
|
||||
@@ -0,0 +1,9 @@
|
||||
require('gitsigns').setup({
|
||||
current_line_blame = true,
|
||||
current_line_blame_opts = {
|
||||
virt_text = true,
|
||||
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
|
||||
delay = 0,
|
||||
ignore_whitespace = false,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,12 @@
|
||||
vim.cmd [[highlight IndentBlanklineColor guifg=#555555 gui=nocombine]]
|
||||
|
||||
local highlights = {
|
||||
"CursorColumn",
|
||||
"Whitespace",
|
||||
}
|
||||
|
||||
require('ibl').setup({
|
||||
indent = {
|
||||
highlight = highlight,
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,12 @@
|
||||
require('plugins.colorscheme')
|
||||
require('plugins.diagnostics')
|
||||
require('plugins.gitsigns')
|
||||
require('plugins.indent-blankline')
|
||||
require('plugins.nvim-autopairs')
|
||||
require('plugins.nvim-tree')
|
||||
require('plugins.telescope')
|
||||
require('plugins.treesitter')
|
||||
require('plugins.cmp')
|
||||
require('plugins.render-markdown')
|
||||
require('plugins.mason')
|
||||
require('plugins.claude')
|
||||
@@ -0,0 +1,16 @@
|
||||
require('mason').setup({})
|
||||
require('mason-lspconfig').setup({
|
||||
ensure_installed = {
|
||||
'lua_ls',
|
||||
'ts_ls',
|
||||
'html',
|
||||
'cssls',
|
||||
'jsonls',
|
||||
'pylsp',
|
||||
},
|
||||
handlers = {
|
||||
function(server_name)
|
||||
require('lspconfig')[server_name].setup({})
|
||||
end,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,4 @@
|
||||
require('nvim-autopairs').setup({
|
||||
event = "InsertEnter",
|
||||
config = true
|
||||
})
|
||||
@@ -0,0 +1,33 @@
|
||||
local function custom_mapping(bufnr)
|
||||
local api = require("nvim-tree.api")
|
||||
|
||||
local function opts(desc)
|
||||
return {
|
||||
desc = "nvim-tree: " .. desc,
|
||||
buffer = bufnr,
|
||||
noremap = true,
|
||||
silent = true,
|
||||
nowait = true
|
||||
}
|
||||
end
|
||||
|
||||
-- default mappings
|
||||
api.config.mappings.default_on_attach(bufnr)
|
||||
|
||||
-- custom mappings
|
||||
vim.keymap.set('n', 's', api.node.open.vertical, opts('Open: Vertical Split'))
|
||||
vim.keymap.set('n', 'u', api.node.navigate.parent_close, opts('Close Directory'))
|
||||
end
|
||||
|
||||
require("nvim-tree").setup({
|
||||
view = {
|
||||
width = {},
|
||||
},
|
||||
on_attach = custom_mapping,
|
||||
})
|
||||
|
||||
-- Tree
|
||||
vim.keymap.set("n", [[<C-\>]], ":NvimTreeToggle<CR>")
|
||||
vim.keymap.set("n", [[<leader>\]], ":NvimTreeToggle<CR>")
|
||||
vim.keymap.set("n", "<leader>ff", ":NvimTreeFindFile<CR>")
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
require('render-markdown').setup({
|
||||
completions = {
|
||||
lsp = {
|
||||
enabled = true,
|
||||
}
|
||||
},
|
||||
heading = {
|
||||
backgrounds = { '' },
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,10 @@
|
||||
require('telescope').setup({})
|
||||
|
||||
-- Telescope
|
||||
local builtin = require("telescope.builtin")
|
||||
|
||||
vim.keymap.set("n", "<leader>gf", builtin.git_files)
|
||||
vim.keymap.set("n", "<leader>gs", builtin.git_status)
|
||||
vim.keymap.set("n", "<leader>gg", builtin.live_grep)
|
||||
vim.keymap.set("n", "<leader>b", builtin.buffers)
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
require('nvim-treesitter.configs').setup({
|
||||
branch = "main",
|
||||
ensure_installed = {
|
||||
"bash",
|
||||
"css",
|
||||
"graphql",
|
||||
"html",
|
||||
"javascript",
|
||||
"jsdoc",
|
||||
"json",
|
||||
"lua",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"python",
|
||||
"query",
|
||||
"regex",
|
||||
"scss",
|
||||
"svelte",
|
||||
"tmux",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vim",
|
||||
"vimdoc",
|
||||
"yaml",
|
||||
},
|
||||
sync_install = false,
|
||||
highlight = {
|
||||
enable = true,
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"plugins": {
|
||||
"auto-save.nvim": {
|
||||
"rev": "979b6c82f60cfa80f4cf437d77446d0ded0addf0",
|
||||
"src": "https://github.com/Pocco81/auto-save.nvim"
|
||||
},
|
||||
"claude-code.nvim": {
|
||||
"rev": "55c0cb59828fbc3bec744288286a46f5d5750b83",
|
||||
"src": "https://github.com/greggh/claude-code.nvim"
|
||||
},
|
||||
"cmp-buffer": {
|
||||
"rev": "b74fab3656eea9de20a9b8116afa3cfc4ec09657",
|
||||
"src": "https://github.com/hrsh7th/cmp-buffer"
|
||||
},
|
||||
"cmp-nvim-lsp": {
|
||||
"rev": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3",
|
||||
"src": "https://github.com/hrsh7th/cmp-nvim-lsp"
|
||||
},
|
||||
"gitsigns.nvim": {
|
||||
"rev": "20ad4419564d6e22b189f6738116b38871082332",
|
||||
"src": "https://github.com/lewis6991/gitsigns.nvim"
|
||||
},
|
||||
"gruvbox.nvim": {
|
||||
"rev": "5e0a460d8e0f7f669c158dedd5f9ae2bcac31437",
|
||||
"src": "https://github.com/ellisonleao/gruvbox.nvim"
|
||||
},
|
||||
"indent-blankline.nvim": {
|
||||
"rev": "005b56001b2cb30bfa61b7986bc50657816ba4ba",
|
||||
"src": "https://github.com/lukas-reineke/indent-blankline.nvim"
|
||||
},
|
||||
"mason-lspconfig.nvim": {
|
||||
"rev": "2304ff65ecc8cb2afc2484de3e2ed9a407edf0b9",
|
||||
"src": "https://github.com/williamboman/mason-lspconfig.nvim"
|
||||
},
|
||||
"mason.nvim": {
|
||||
"rev": "ad7146aa61dcaeb54fa900144d768f040090bff0",
|
||||
"src": "https://github.com/williamboman/mason.nvim"
|
||||
},
|
||||
"nvim-autopairs": {
|
||||
"rev": "7a2c97cccd60abc559344042fefb1d5a85b3e33b",
|
||||
"src": "https://github.com/windwp/nvim-autopairs"
|
||||
},
|
||||
"nvim-cmp": {
|
||||
"rev": "a7bcf1d88069fc67c9ace8a62ba480b8fe879025",
|
||||
"src": "https://github.com/hrsh7th/nvim-cmp"
|
||||
},
|
||||
"nvim-lspconfig": {
|
||||
"rev": "ac98db2f9f06a56498ec890a96928774eae412c3",
|
||||
"src": "https://github.com/neovim/nvim-lspconfig"
|
||||
},
|
||||
"nvim-tree.lua": {
|
||||
"rev": "64e2192f5250796aa4a7f33c6ad888515af50640",
|
||||
"src": "https://github.com/nvim-tree/nvim-tree.lua"
|
||||
},
|
||||
"nvim-treesitter": {
|
||||
"rev": "42fc28ba918343ebfd5565147a42a26580579482",
|
||||
"src": "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||
},
|
||||
"nvim-web-devicons": {
|
||||
"rev": "b8221e42cf7287c4dcde81f232f58d7b947c210d",
|
||||
"src": "https://github.com/nvim-tree/nvim-web-devicons"
|
||||
},
|
||||
"plenary.nvim": {
|
||||
"rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509",
|
||||
"src": "https://github.com/nvim-lua/plenary.nvim"
|
||||
},
|
||||
"render-markdown.nvim": {
|
||||
"rev": "475d3ad8cae486b0df6fc6050cf5b5ea1de42db8",
|
||||
"src": "https://github.com/MeanderingProgrammer/render-markdown.nvim"
|
||||
},
|
||||
"telescope.nvim": {
|
||||
"rev": "b4da76be54691e854d3e0e02c36b0245f945c2c7",
|
||||
"src": "https://github.com/nvim-telescope/telescope.nvim"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user