config-files/init.lua.bak

299 lines
9.3 KiB
Lua
Raw Permalink Normal View History

2025-11-30 02:06:38 -08:00
-- init.lua — migrated from packer.nvim to lazy.nvim
-- NOTE: impatient.nvim is no longer needed on modern Neovim (builtin module caching)
-- =====================
-- Core options & globals
-- =====================
vim.g.mapleader = '\\'
vim.opt.termguicolors = true
vim.g.coq_settings = { ['auto_start'] = 'shut-up'}
vim.g.vimtex_view_general_viewer = 'okular'
vim.g.vimtex_view_general_options = '-unique file:@pdf\\#src:@line@tex'
vim.g.auto_save = 1
vim.opt.number = true
vim.opt.foldmethod = 'indent'
vim.opt.cursorline = true
vim.g.vimtex_fold_enabled = true
vim.g.vimtex_indent_enabled = true
vim.g.vimtex_indent_bib_enabled = true
vim.g.vimtex_quickfix_autoclose_after_keystrokes = 5
vim.cmd [[set termguicolors
set shell=/usr/bin/zsh]]
vim.cmd [[:setlocal spell spelllang=en_us]]
vim.cmd [[let g:auto_save_events = ["InsertLeave", "TextChanged"] ]]
vim.cmd [[let g:startify_custom_header = [] ]]
function _G.set_terminal_keymaps()
local opts = { buffer = 0 }
vim.keymap.set('t', '<esc>', [[<C-\><C-n>]], opts)
vim.keymap.set('t', 'jk', [[<C-\><C-n>]], opts)
vim.keymap.set('t', '<C-h>', [[<Cmd>wincmd h<CR>]], opts)
vim.keymap.set('t', '<C-j>', [[<Cmd>wincmd j<CR>]], opts)
vim.keymap.set('t', '<C-k>', [[<Cmd>wincmd k<CR>]], opts)
vim.keymap.set('t', '<C-l>', [[<Cmd>wincmd l<CR>]], opts)
end
-- if you only want these mappings for toggle term use term://*toggleterm#* instead
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
local signs = { Error = "", Warn = "", Hint = "", Info = "" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end
vim.o.updatetime = 250
vim.cmd [[autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false})]]
vim.diagnostic.config({
virtual_text = { source = "always" },
float = { source = "always" },
})
vim.diagnostic.config({
virtual_text = false,
signs = true,
underline = true,
update_in_insert = false,
severity_sort = false,
})
vim.cmd [[
set guifont=CaskaydiaCove\ Nerd\ Font:h19
set signcolumn=yes
syntax enable
nnoremap <silent> gb :BufferLinePick<CR>
nnoremap <C-p> :Telescope<CR>
" Paste system clipboard with Ctrl + v
inoremap <C-v> <ESC>"+p
vnoremap <C-v> d"+gP<ESC>
cnoremap <C-v> <C-r>+
" Cut to system clipboard with Ctrl + x
vnoremap <C-x> "+d
inoremap <C-x> <ESC>"+ddi
" Copy to system clipboard with Ctr + c
vnoremap <C-c> "+y
nnoremap <C-c> "+yy
inoremap <C-c> <ESC>"+yyi
nnoremap <space> :noh<cr>
nnoremap <C-n> :NvimTreeToggle<CR>
" change directory to current file
nnoremap <leader>cd :cd %:p:h<CR>:pwd<CR>
" au InsertLeave * lua require('lint').try_lint()
]]
-- vim.cmd [[colorscheme gruvbox8_hard]]
vim.cmd [[set nocompatible]]
vim.cmd [[
if has('nvim')
autocmd TabNewEntered * Startify
else
autocmd BufWinEnter *
if !exists('t:startify_new_tab') && empty(expand('%')) && empty(&l:buftype) && &l:modifiable | let t:startify_new_tab = 1 | Startify |
endif
endif
]]
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
callback = function()
-- require("lint").try_lint()
end,
})
if vim.g.neovide then
vim.o.guifont = "CaskaydiaCove Nerd Font:h14"
end
-- LSP default keybindings
local opts = { noremap = true, silent = true }
vim.api.nvim_set_keymap('n', '<space>e', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
vim.api.nvim_set_keymap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
vim.api.nvim_set_keymap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
vim.api.nvim_set_keymap('n', '<space>q', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts)
local on_attach = function(client, bufnr)
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<localleader>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gf', vim.lsp.buf.format, opts)
end
vim.fn.sign_define('DapBreakpoint',{ text ='🟥', texthl ='', linehl ='', numhl =''})
vim.fn.sign_define('DapStopped',{ text ='▶️', texthl ='', linehl ='', numhl =''})
-- =====================
-- lazy.nvim bootstrap
-- =====================
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git", "clone", "--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- =====================
-- Plugins (lazy.nvim)
-- =====================
require('lazy').setup({
-- Icons (used by multiple plugins)
{ 'nvim-tree/nvim-web-devicons', lazy = true },
-- Statusline
-- Bufferline
{
'akinsho/bufferline.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
config = function()
require('bufferline').setup({
options = {
always_show_bufferline = true,
separator_style = 'thin',
show_close_icon = false,
numbers = 'buffer_id',
enforce_regular_tabs = true,
offsets = { { filetype = 'NvimTree', text = 'File Explorer', highlight = 'Directory' } },
},
})
end,
},
-- Start screen
{ 'mhinz/vim-startify' },
-- File explorer
{
'nvim-tree/nvim-tree.lua',
dependencies = { 'nvim-tree/nvim-web-devicons' },
config = function()
require('nvim-tree').setup({})
end,
},
-- Treesitter
-- { 'nvim-treesitter/nvim-treesitter', build = ':TSUpdate' },
-- Orgmode
{
'nvim-orgmode/orgmode',
config = function()
require('orgmode').setup({
org_agenda_files = '~/org/*'
})
end,
},
-- Org bullets
{
'akinsho/org-bullets.nvim',
config = function()
require('org-bullets').setup({
checkboxes = {
half = { '', 'OrgTSCheckboxHalfChecked' },
done = { '', 'OrgDone' },
todo = { 'x', 'OrgTODO' },
},
})
end,
},
-- Auto save
{ '907th/vim-auto-save' },
-- Telescope
{
'nvim-telescope/telescope.nvim',
dependencies = { 'nvim-lua/plenary.nvim' },
},
-- VimTeX
{ 'lervag/vimtex' },
-- ALE (linting)
-- { 'dense-analysis/ale', event = 'InsertEnter' },
-- Pretty start screen (alpha)
-- {
-- 'goolord/alpha-nvim',
-- dependencies = { 'nvim-tree/nvim-web-devicons' },
-- config = function()
-- require('alpha').setup(require('alpha.themes.startify').opts)
-- end,
-- },
-- nvim-lint
-- {
-- 'mfussenegger/nvim-lint',
-- event = { 'BufReadPost', 'BufNewFile' },
-- config = function()
-- require('lint').linters_by_ft = {
-- tex = { 'proselint', 'vale' },
-- text = { 'proselint', 'vale' },
-- }
-- end,
-- },
-- Colorscheme (load early)
{
'lifepillar/vim-gruvbox8',
commit = '75614aff9669abd7f8b0aae58fdfbaddfebee1e0',
lazy = false,
priority = 1000,
init = function()
vim.g.gruvbox_contrast_dark = 'hard'
end,
config = function()
vim.cmd([[colorscheme gruvbox8_hard]])
end,
},
-- Surround
{
'ur4ltz/surround.nvim',
config = function()
require('surround').setup({
context_offset = 100,
load_autogroups = false,
mappings_style = 'sandwich',
map_insert_mode = true,
quotes = { "'", '"' },
brackets = { '{', '[' },
space_on_closing_char = false,
pairs = {
nestable = { b = { '(', ')' }, s = { '[', ']' }, B = { '{', '}' }, a = { '<', '>' } },
linear = { q = { "'", "'" }, t = { '`', '`' }, d = { '"', '"' } },
},
prefix = 's',
})
end,
},
-- Toggleterm
{
'akinsho/toggleterm.nvim',
version = '*',
config = function()
require('toggleterm').setup({
insert_mapping = false,
open_mapping = [[<leader>term]],
autochdir = true,
})
end,
},
})