good state

This commit is contained in:
Jackson Sadowski 2025-12-12 23:12:35 -05:00
parent 3338d39206
commit 11d37b62d7
2 changed files with 164 additions and 58 deletions

215
init.lua
View File

@ -87,11 +87,11 @@ P.S. You can delete this when you're done too. It's your config now! :)
-- Set <space> as the leader key
-- See `:help mapleader`
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
vim.g.mapleader = '`'
vim.g.maplocalleader = '`'
-- Set to true if you have a Nerd Font installed and selected in the terminal
vim.g.have_nerd_font = false
vim.g.have_nerd_font = true
-- [[ Setting options ]]
-- See `:help vim.o`
@ -150,7 +150,7 @@ vim.o.splitbelow = true
-- See `:help lua-options`
-- and `:help lua-options-guide`
vim.o.list = true
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '' }
vim.opt.listchars = { tab = ' ', nbsp = '' }
-- Preview substitutions live, as you type!
vim.o.inccommand = 'split'
@ -166,9 +166,46 @@ vim.o.scrolloff = 10
-- See `:help 'confirm'`
vim.o.confirm = true
-- Tab settings
vim.o.tabstop = 2 -- Number of spaces a tab counts for
vim.o.shiftwidth = 2 -- Number of spaces for auto-indent
vim.o.expandtab = true -- Convert tabs to spaces
vim.o.softtabstop = 2 -- Number of spaces for <Tab> key
-- [[ Basic Keymaps ]]
-- See `:help vim.keymap.set()`
-- Command+C/V/X for copy/paste/cut (Mac style)
vim.keymap.set('v', '<D-c>', '"+y', { desc = 'Copy to clipboard' })
vim.keymap.set('n', '<D-v>', '"+p', { desc = 'Paste from clipboard' })
vim.keymap.set('i', '<D-v>', '<C-r>+', { desc = 'Paste from clipboard' })
vim.keymap.set('v', '<D-x>', '"+d', { desc = 'Cut to clipboard' })
-- Toggle GitHub Copilot with F16
local copilot_enabled = true
vim.keymap.set('n', '<F16>', function()
if copilot_enabled then
vim.cmd 'Copilot disable'
copilot_enabled = false
print 'Copilot disabled'
else
vim.cmd 'Copilot enable'
copilot_enabled = true
print 'Copilot enabled'
end
end, { desc = 'Toggle GitHub Copilot' })
vim.keymap.set('i', '<F16>', function()
if copilot_enabled then
vim.cmd 'Copilot disable'
copilot_enabled = false
print 'Copilot disabled'
else
vim.cmd 'Copilot enable'
copilot_enabled = true
print 'Copilot enabled'
end
end, { desc = 'Toggle GitHub Copilot' })
-- Clear highlights on search when pressing <Esc> in normal mode
-- See `:help hlsearch`
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
@ -247,7 +284,15 @@ rtp:prepend(lazypath)
-- NOTE: Here is where you install your plugins.
require('lazy').setup({
-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically
{
'NMAC427/guess-indent.nvim',
opts = {},
}, -- Detect tabstop and shiftwidth automatically
-- GitHub Copilot
{
'github/copilot.vim',
},
-- NOTE: Plugins can also be added by using a table,
-- with the first argument being the link and the following
@ -281,6 +326,12 @@ require('lazy').setup({
topdelete = { text = '' },
changedelete = { text = '~' },
},
current_line_blame = true,
current_line_blame_opts = {
virt_text = false,
delay = 500,
},
current_line_blame_formatter = '<author>, <author_time:%R>',
},
},
@ -426,39 +477,75 @@ require('lazy').setup({
-- See `:help telescope.builtin`
local builtin = require 'telescope.builtin'
vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
-- Helper to launch Telescope from a non-Neo-tree window
local function smart_telescope_launch(func)
return function(...)
if vim.bo.filetype == 'neo-tree' then
local neotree_win = vim.api.nvim_get_current_win()
local wins = vim.api.nvim_list_wins()
local target_win = nil
for _, win in ipairs(wins) do
local config = vim.api.nvim_win_get_config(win)
if config.relative == '' then
local buf = vim.api.nvim_win_get_buf(win)
local ft = vim.api.nvim_get_option_value('filetype', { buf = buf })
if ft ~= 'neo-tree' then
target_win = win
break
end
end
end
if target_win then
vim.api.nvim_win_set_width(neotree_win, 30)
vim.api.nvim_set_current_win(target_win)
else
vim.cmd 'vsplit'
vim.api.nvim_win_set_width(neotree_win, 30)
end
end
if type(func) == 'function' then
func(...)
end
end
end
vim.keymap.set('n', '<leader>sh', smart_telescope_launch(builtin.help_tags), { desc = '[S]earch [H]elp' })
vim.keymap.set('n', '<leader>sk', smart_telescope_launch(builtin.keymaps), { desc = '[S]earch [K]eymaps' })
vim.keymap.set('n', '<leader>sf', smart_telescope_launch(builtin.find_files), { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<D-p>', smart_telescope_launch(builtin.find_files), { desc = 'Search Files' })
vim.keymap.set('n', '<leader>ss', smart_telescope_launch(builtin.builtin), { desc = '[S]earch [S]elect Telescope' })
vim.keymap.set('n', '<leader>sw', smart_telescope_launch(builtin.grep_string), { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', smart_telescope_launch(builtin.live_grep), { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', smart_telescope_launch(builtin.diagnostics), { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sr', smart_telescope_launch(builtin.resume), { desc = '[S]earch [R]esume' })
vim.keymap.set('n', '<leader>s.', smart_telescope_launch(builtin.oldfiles), { desc = '[S]earch Recent Files ("." for repeat)' })
vim.keymap.set('n', '<leader><leader>', smart_telescope_launch(builtin.buffers), { desc = '[ ] Find existing buffers' })
-- search files using command shift f
vim.keymap.set('n', '<D-S-f>', smart_telescope_launch(builtin.live_grep), { desc = 'Search by [G]rep' })
-- Slightly advanced example of overriding default behavior and theme
vim.keymap.set('n', '<leader>/', function()
vim.keymap.set('n', '<leader>/', smart_telescope_launch(function()
-- You can pass additional configuration to Telescope to change the theme, layout, etc.
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
winblend = 10,
previewer = false,
})
end, { desc = '[/] Fuzzily search in current buffer' })
end), { desc = '[/] Fuzzily search in current buffer' })
-- It's also possible to pass additional configuration options.
-- See `:help telescope.builtin.live_grep()` for information about particular keys
vim.keymap.set('n', '<leader>s/', function()
vim.keymap.set('n', '<leader>s/', smart_telescope_launch(function()
builtin.live_grep {
grep_open_files = true,
prompt_title = 'Live Grep in Open Files',
}
end, { desc = '[S]earch [/] in Open Files' })
end), { desc = '[S]earch [/] in Open Files' })
-- Shortcut for searching your Neovim configuration files
vim.keymap.set('n', '<leader>sn', function()
vim.keymap.set('n', '<leader>sn', smart_telescope_launch(function()
builtin.find_files { cwd = vim.fn.stdpath 'config' }
end, { desc = '[S]earch [N]eovim files' })
end), { desc = '[S]earch [N]eovim files' })
end,
},
@ -672,7 +759,7 @@ require('lazy').setup({
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
local servers = {
-- clangd = {},
-- gopls = {},
gopls = {},
-- pyright = {},
-- rust_analyzer = {},
-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
@ -716,6 +803,8 @@ require('lazy').setup({
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
'stylua', -- Used to format Lua code
'prettier', -- Used to format JSON, JavaScript, etc.
'goimports', -- Used to format Go code
})
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
@ -768,6 +857,9 @@ require('lazy').setup({
end,
formatters_by_ft = {
lua = { 'stylua' },
json = { 'prettier' },
jsonc = { 'prettier' },
go = { 'goimports' },
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
@ -835,7 +927,8 @@ require('lazy').setup({
-- <c-k>: Toggle signature help
--
-- See :h blink-cmp-config-keymap for defining your own keymap
preset = 'default',
preset = 'enter',
['<Tab>'] = { 'select_and_accept', 'fallback' },
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
@ -876,25 +969,15 @@ require('lazy').setup({
},
},
{ -- You can easily change to a different colorscheme.
-- Change the name of the colorscheme plugin below, and then
-- change the command in the config to whatever the name of that colorscheme is.
--
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
'folke/tokyonight.nvim',
priority = 1000, -- Make sure to load this before all the other start plugins.
-- Using Lazy
{
'navarasu/onedark.nvim',
priority = 1000, -- make sure to load this before all the other start plugins
config = function()
---@diagnostic disable-next-line: missing-fields
require('tokyonight').setup {
styles = {
comments = { italic = false }, -- Disable italics in comments
},
require('onedark').setup {
style = 'darker',
}
-- Load the colorscheme here.
-- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
vim.cmd.colorscheme 'tokyonight-night'
require('onedark').load()
end,
},
@ -919,32 +1002,48 @@ require('lazy').setup({
-- - sr)' - [S]urround [R]eplace [)] [']
require('mini.surround').setup()
-- Simple and easy statusline.
-- You could remove this setup call if you don't like it,
-- and try some other statusline plugin
local statusline = require 'mini.statusline'
-- set use_icons to true if you have a Nerd Font
statusline.setup { use_icons = vim.g.have_nerd_font }
-- You can configure sections in the statusline by overriding their
-- default behavior. For example, here we set the section for
-- cursor location to LINE:COLUMN
---@diagnostic disable-next-line: duplicate-set-field
statusline.section_location = function()
return '%2l:%-2v'
end
-- ... and there is more!
-- Check out: https://github.com/echasnovski/mini.nvim
end,
},
-- Statusline with git blame
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
opts = {
options = {
icons_enabled = vim.g.have_nerd_font,
theme = 'auto',
component_separators = '|',
section_separators = '',
},
sections = {
lualine_c = {
'filename',
{
function()
local blame = vim.b.gitsigns_blame_line
if blame then
return blame
end
return ''
end,
cond = function()
return vim.b.gitsigns_blame_line ~= nil
end,
},
},
},
},
},
{ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = {
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc', 'json', 'jsonc', 'jinja' },
-- Autoinstall languages that are not installed
auto_install = true,
highlight = {
@ -976,8 +1075,8 @@ require('lazy').setup({
-- require 'kickstart.plugins.debug',
-- require 'kickstart.plugins.indent_line',
-- require 'kickstart.plugins.lint',
-- require 'kickstart.plugins.autopairs',
-- require 'kickstart.plugins.neo-tree',
require 'kickstart.plugins.autopairs',
require 'kickstart.plugins.neo-tree',
-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`

View File

@ -15,11 +15,18 @@ return {
},
opts = {
filesystem = {
follow_current_file = {
enabled = true,
},
window = {
mappings = {
['\\'] = 'close_window',
},
},
},
window = {
position = 'left',
width = 30,
},
},
}