Skip to content

Instantly share code, notes, and snippets.

@chase-lambert
Last active March 24, 2025 17:05
Show Gist options
  • Save chase-lambert/36feeaf0a43721a40932f390d627d4b9 to your computer and use it in GitHub Desktop.
Save chase-lambert/36feeaf0a43721a40932f390d627d4b9 to your computer and use it in GitHub Desktop.
init.vim to init.lua conversion
---@diagnostic disable: undefined-global
-- ============================================================
-- Bootstrapping & Plugin Management
-- ============================================================
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",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
vim.g.mapleader = " "
vim.g.maplocalleader = ","
local plugins = {
-----------------------------------------------------------------------
-- CORE / ESSENTIAL
-----------------------------------------------------------------------
{
"nvim-tree/nvim-web-devicons",
lazy = false,
priority = 1000,
opts = {},
},
{
"folke/which-key.nvim",
event = "VeryLazy",
config = function()
require("which-key").setup({})
end
},
{
"nvim-telescope/telescope.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
defaults = {
sorting_strategy = "ascending",
layout_config = {
horizontal = {
prompt_position = "top"
},
},
},
},
},
{
"akinsho/toggleterm.nvim",
version = "*",
config = function()
require("toggleterm").setup {
open_mapping = [[<leader>t]],
direction = "float",
on_open = function() vim.cmd('startinsert!') end,
insert_mappings = false,
start_in_insert = true,
terminal_mappings = false,
}
end
},
-- {
-- "kdheepak/lazygit.nvim",
-- lazy = true,
-- cmd = {
-- "LazyGit",
-- "LazyGitConfig",
-- "LazyGitCurrentFile",
-- "LazyGitFilter",
-- "LazyGitFilterCurrentFile",
-- },
-- dependencies = {
-- "nvim-lua/plenary.nvim",
-- },
-- keys = {
-- { "<leader>lg", "<cmd>LazyGit<cr>", desc = "LazyGit" }
-- }
-- },
{
"NeogitOrg/neogit",
dependencies = {
"nvim-lua/plenary.nvim", -- required
"sindrets/diffview.nvim", -- optional - Diff integration
-- Only one of these is needed.
"nvim-telescope/telescope.nvim", -- optional
"ibhagwan/fzf-lua", -- optional
"echasnovski/mini.pick", -- optional
},
config = true
},
{
"NMAC427/guess-indent.nvim",
config = function()
require("guess-indent").setup {}
end,
},
{ "junegunn/fzf", build = "./install --all" },
"junegunn/fzf.vim",
"junegunn/goyo.vim",
"HiPhish/rainbow-delimiters.nvim",
"mbbill/undotree",
"preservim/nerdtree",
"tpope/vim-commentary",
"tpope/vim-fugitive",
"tpope/vim-repeat",
"tpope/vim-surround",
-----------------------------------------------------------------------
-- LSP / COMPLETION
-----------------------------------------------------------------------
{ "neovim/nvim-lspconfig" },
{
"hrsh7th/nvim-cmp",
dependencies = {
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"L3MON4D3/LuaSnip",
"saadparwaiz1/cmp_luasnip",
"onsails/lspkind-nvim",
},
},
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
require("nvim-treesitter.configs").setup({
ensure_installed = {
"lua", "vim", "vimdoc", "javascript", "typescript",
"rust", "java", "clojure", "css", "html", "csv", "regex"
},
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
})
end,
},
{
"windwp/nvim-autopairs",
event = "InsertEnter",
config = function()
local npairs = require("nvim-autopairs")
npairs.setup({})
npairs.get_rules("'")[1].not_filetypes = { "clojure" }
end,
},
-----------------------------------------------------------------------
-- CLOJURE
-----------------------------------------------------------------------
{ "clojure-vim/clojure.vim", ft = "clojure" },
{ "Olical/conjure", branch = "develop", ft = { "clojure", "scheme" } },
{
"eraserhd/parinfer-rust",
build = "cargo build --release",
config = function()
vim.g.parinfer_rust_path = vim.fn.stdpath("data")
.. "/lazy/parinfer-rust/target/release/libparinfer_rust.so"
end
},
"guns/vim-sexp",
"tpope/vim-sexp-mappings-for-regular-people",
-----------------------------------------------------------------------
-- CSV
-----------------------------------------------------------------------
{ "chrisbra/csv.vim" },
-----------------------------------------------------------------------
-- RUST
-----------------------------------------------------------------------
{ "mattn/webapi-vim", ft = "rust" },
{ "rust-lang/rust.vim", ft = "rust" },
{
'mrcjkb/rustaceanvim',
version = '^5', -- Recommended
lazy = false, -- This plugin is already lazy
},
-----------------------------------------------------------------------
-- WEB DEVELOPMENT
-----------------------------------------------------------------------
"mattn/emmet-vim",
"maxmellon/vim-jsx-pretty",
"prisma/vim-prisma",
{
"luckasRanarison/tailwind-tools.nvim",
name = "tailwind-tools",
build = ":UpdateRemotePlugins",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-telescope/telescope.nvim",
"neovim/nvim-lspconfig",
},
opts = {
server = {
override = true,
settings = {
emmetCompletions = true,
includeLanguages = { clojurescript = "html", rust = "html" },
experimental = {
classRegex = {
{ "\\[:[^.\\s]*((?:\\.[^.\\s\\]]*)+)[\\s\\]]", "\\.([^.]*)" },
{ "\\:(\\.[^\\s#]+(?:\\.[^\\s#]+)*)", "\\.([^\\.\\s#]+)" },
{ "\\:class\\s+(\\:[^\\s\\}]*)[\\s\\}]", "[\\:.]([^.]*)" },
{ "\\:class\\s+(\"[^\\}\"]*)\"", "[\"\\s]([^\\s\"]*)" },
{ "\\:class\\s+\\[([\\s\\S]*)\\]", "[\"\\:]([^\\s\"]*)[\"]?" },
{ "\\:class\\s+'\\[([\\s\\S]*)\\]", "([^\\s]*)?" },
{ "class\\s*:\\s*\"([^\"]*)" },
},
},
},
},
},
},
-----------------------------------------------------------------------
-- COLORS / THEMES
-----------------------------------------------------------------------
"arcticicestudio/nord-vim",
"ayu-theme/ayu-vim",
"chriskempson/vim-tomorrow-theme",
"folke/tokyonight.nvim",
"gruvbox-community/gruvbox",
{ "https://gitlab.com/yorickpeterse/vim-paper.git" },
"iagorrr/noctishc.nvim",
"iCyMind/NeoSolarized",
"ishan9299/modus-theme-vim",
"marko-cerovac/material.nvim",
"Mofiqul/dracula.nvim",
"nanotech/jellybeans.vim",
"NLKNguyen/papercolor-theme",
"plan9-for-vimspace/acme-colors",
"projekt0n/github-nvim-theme",
"rakr/vim-one",
"yassinebridi/vim-purpura",
}
require("lazy").setup(plugins)
-- ============================================================
-- Global Options & Settings
-- ============================================================
local opt = vim.opt
opt.backupcopy = "yes"
opt.clipboard = { "unnamedplus" }
opt.cmdheight = 2
opt.completeopt = "menuone"
opt.cursorline = true
opt.expandtab = true
opt.hidden = true
opt.ignorecase = true
opt.inccommand = "nosplit"
opt.laststatus = 3
opt.mat = 2
opt.mouse = ""
opt.number = true
-- opt.shiftwidth = 2
opt.shortmess:append("c")
opt.showmatch = true
opt.signcolumn = "yes"
opt.smartcase = true
opt.smartindent = true
opt.splitbelow = true
opt.splitright = true
opt.swapfile = false
-- opt.tabstop = 2
opt.undodir = vim.fn.expand("~/.vim/undo-dir")
opt.undofile = true
opt.wildoptions = "pum"
vim.g.do_filetype_lua = 1
vim.g.did_load_filetypes = 0
vim.cmd('filetype plugin on')
vim.g.open_in_insert_mode = 0
vim.g.python3_host_prog = "/usr/bin/python3"
-- ============================================================
-- Keymaps
-- ============================================================
local function map(mode, lhs, rhs, opts)
local options = { noremap = true, silent = true }
if opts then options = vim.tbl_extend('force', options, opts) end
vim.keymap.set(mode, lhs, rhs, options)
end
-- Insert & Terminal mappings
map('i', 'jk', '<ESC>')
map('t', 'jk', [[<C-\><C-n>]])
map('t', '<C-[>', [[<C-\><C-n>]])
-- Normal mode mappings
map('n', '<leader>g', 'gg"+yG')
map('n', '<leader><CR>', ':noh<CR>')
map('n', '<C-g>', ':Goyo<CR>')
map('n', '<leader><tab>', '<C-^>')
map('n', '<leader><leader>', 'o<Esc>k')
map('n', '<leader>b', ':Buffers<CR>')
map('n', '<leader>cd', ':set background=dark<CR>')
map('n', '<leader>cl', ':set background=light<CR>')
map('n', '<leader>cs', ':colorscheme<Space>')
map('n', '<leader>a', ':NERDTreeToggle<CR>')
map('n', '<leader>f', ':Files<CR>')
map('n', '<leader>o', ':only<CR>')
map('n', '<leader>q', ':x<CR>')
map('n', '<leader>s', ':split<CR>:res -8<CR><leader>t')
map('n', '<leader>v', ':e $MYVIMRC<CR>')
map('n', '<leader>w', ':w<CR>')
map('n', '<leader>y', ':set nonumber<CR>:set signcolumn=no<CR>')
-- Custom zT command: position current line at 1/4 of window
vim.keymap.set('n', 'zT', function()
local wh = vim.api.nvim_win_get_height(0)
local offset = math.floor(wh / 4)
return offset .. 'kzt' .. offset .. 'j'
end, { expr = true, silent = true })
-- Copy-paste corrections
map({ 'n', 'v' }, 'c', '"_c')
map({ 'n', 'v' }, 'C', '"_C')
-- ============================================================
-- LSP & Completion Configuration
-- ============================================================
local capabilities = require("cmp_nvim_lsp").default_capabilities()
local lspconfig = require("lspconfig")
local util = require("lspconfig.util")
local servers = {
"clojure_lsp", "cssls", "html", "ts_ls",
"jdtls", "lua_ls",
}
for _, lsp in ipairs(servers) do
local opts = { capabilities = capabilities }
if lsp == "clojure_lsp" then
opts.root_dir = util.root_pattern(".git")
opts.settings = { ["clojure-lsp"] = { format = { enabled = false } } }
end
lspconfig[lsp].setup(opts)
end
vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args)
local bufnr = args.buf
vim.lsp.inlay_hint.enable(false, { bufnr = bufnr })
end,
})
vim.keymap.set("n", "<localleader>h", function()
local bufnr = vim.api.nvim_get_current_buf()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr })
end, { desc = "Toggle LSP inlay hints" })
vim.diagnostic.config({
virtual_text = false,
signs = true,
underline = true,
severity_sort = true,
})
vim.keymap.set("n", "<leader>e", function()
vim.diagnostic.open_float(nil, { scope = "line" })
end, { silent = true })
local cmp = require("cmp")
local luasnip = require("luasnip")
local check_backspace = function()
local col = vim.fn.col('.') - 1
return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s')
end
cmp.setup({
formatting = {
format = require("lspkind").cmp_format({
before = require("tailwind-tools.cmp").lspkind_format
}),
},
snippet = {
expand = function(args) luasnip.lsp_expand(args.body) end,
},
mapping = {
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif check_backspace() then
fallback()
else
cmp.complete()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then cmp.select_prev_item() else fallback() end
end, { "i", "s" }),
["<CR>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.confirm({ select = true, behavior = cmp.ConfirmBehavior.Replace })
else
fallback()
end
end, { "i", "s" }),
["<C-u>"] = cmp.mapping.scroll_docs(4),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
},
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "path" },
},
})
vim.api.nvim_create_autocmd("User", {
pattern = "GoyoEnter",
callback = function()
require('cmp').setup.buffer({ enabled = false })
end
})
vim.api.nvim_create_autocmd("User", {
pattern = "GoyoLeave",
callback = function()
require('cmp').setup.buffer({ enabled = true })
end
})
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { noremap = true, silent = true })
vim.keymap.set('n', '<leader>k', vim.lsp.buf.hover, { noremap = true, silent = true })
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { noremap = true, silent = true })
vim.keymap.set('n', 'gy', vim.lsp.buf.type_definition, { noremap = true, silent = true })
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, { noremap = true, silent = true })
vim.keymap.set('n', 'gr', vim.lsp.buf.references, { noremap = true, silent = true })
vim.keymap.set('n', 'gn', vim.lsp.buf.rename, { noremap = true, silent = true })
vim.keymap.set('n', 'ga', vim.lsp.buf.code_action, { noremap = true, silent = true })
vim.keymap.set('n', '[g', vim.diagnostic.goto_prev, { noremap = true, silent = true })
vim.keymap.set('n', ']g', vim.diagnostic.goto_next, { noremap = true, silent = true })
vim.keymap.set('n', 'gl', vim.diagnostic.open_float, { noremap = true, silent = true })
vim.keymap.set('n', 'gD', vim.diagnostic.setloclist, { noremap = true, silent = true })
vim.keymap.set('n', '<space>p', vim.cmd.Telescope_commands, { noremap = true, silent = true })
-- ============================================================
-- Other Plugin & FileType Specific Settings
-- ============================================================
vim.g['conjure#log#hud#width'] = 1
vim.g['conjure#client#clojure#nrepl#connection#auto_repl#enabled'] = false
vim.g['conjure#eval#comment_prefix'] = ';; '
vim.g.NERDTreeWinSize = 40
vim.g.rustfmt_autosave = 1
vim.api.nvim_create_autocmd('FileType', {
pattern = '*',
callback = function()
vim.opt_local.formatoptions:remove { 'r', 'o' }
end
})
vim.api.nvim_create_autocmd('FileType', {
pattern = '*',
callback = function()
vim.opt_local.modifiable = true
end
})
-- Scratch Buffer Command
local scratch_dir = vim.fn.expand('~/.nvim/scratch')
vim.fn.mkdir(scratch_dir, 'p')
vim.api.nvim_create_user_command('Scratch', function()
local filename = scratch_dir .. '/scratch-' .. os.time()
vim.cmd('new ' .. filename)
vim.bo.buftype = 'nofile'
vim.bo.bufhidden = 'hide'
vim.bo.swapfile = false
vim.wo.number = true
end, {})
-- FileType-specific Settings & Mappings
local ft_settings = {
c = {
mappings = {
{ 'n', '<localleader>c', ':!cc ' },
{ 'n', '<localleader>l', ':!cc -Wall -Wextra ' },
{ 'n', '<localleader>r', ':!./' }
}
},
clojure = {
settings = function()
vim.cmd('stopinsert')
vim.opt_local.shiftwidth = 2
vim.opt_local.tabstop = 2
vim.opt_local.commentstring = ';; %s'
end,
mappings = {
{ 'n', '<localleader>cc', ':ConjureConnect<Space>' },
{ 'n', '<localleader>cs', ':ConjureShadowSelect<Space>' },
{ 'n', '<localleader>f(', '!a(zprint <CR>' },
{ 'n', '<localleader>f[', '!a[zprint <CR>' },
{ 'n', '<localleader>f{', '!a{zprint <CR>' },
{ 'n', '<localleader>ff', ':!zprint -w %<CR>' },
{ 'n', '<localleader>hd', ':let g:conjure#log#hud#enabled = v:false<CR>' },
{ 'n', '<localleader>he', ':let g:conjure#log#hud#enabled = v:true<CR>' },
{ 'n', '<localleader>jT', '<Cmd>TapForm<CR>' },
{ 'n', '<localleader>jt', '<Cmd>TapWord<CR>' },
{ 'v', '<localleader>jt', ':TapV<CR>' },
{ 'n', '<localleader>jte', '<Cmd>TapExc<CR>' }
}
},
go = {
mappings = {
{ 'n', '<localleader>b', ':!go build<CR>' },
{ 'n', '<localleader>r', ':!go run .<CR>' }
}
},
java = {
mappings = {
{ 'n', '<localleader>r', ':!java src/Main.java<CR>' },
{ 'n', '<localleader>,', ':!java ' }
}
},
rust = {
mappings = {
{ 'n', '<localleader>a', ':!cargo add<Space>' },
{ 'n', '<localleader>b', ':!cargo lbuild<CR>' },
{ 'n', '<localleader>c', ':!cargo lcheck<CR>' },
{ 'n', '<localleader>cl', ':!cargo clippy<CR>' },
{ 'n', '<localleader>p', 'o<CR>println!("{:?}", );<Esc>hi' },
{ 'n', '<localleader>r', ':!cargo lrun<CR>' },
{ 'n', '<localleader>R', ':!cargo lrun --' },
{ 'n', '<localleader>t', ':!cargo ltest<CR>' },
{ 'n', '<localleader>,', ':Rust' },
{ 'n', '<localleader><Space>', ':CocCommand rust-analyzer.' }
}
}
}
for ft, config in pairs(ft_settings) do
vim.api.nvim_create_autocmd('FileType', {
pattern = ft,
callback = function()
if config.settings then config.settings() end
if config.mappings then
for _, mapping in ipairs(config.mappings) do
map(mapping[1], mapping[2], mapping[3], { buffer = true })
end
end
end
})
end
-- ============================================================
-- Colors & Themes
-- ============================================================
vim.opt.termguicolors = true
vim.cmd([[colorscheme PaperColor]])
vim.opt.background = 'dark'
call plug#begin('~/.vim/plugged')
Plug 'caenrique/nvim-toggle-terminal'
Plug 'folke/which-key.nvim'
Plug 'jiangmiao/auto-pairs'
Plug 'junegunn/vim-easy-align'
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
Plug 'junegunn/goyo.vim'
Plug 'luochen1990/rainbow'
Plug 'mbbill/undotree'
Plug 'nanotee/zoxide.vim'
Plug 'neoclide/coc.nvim', { 'branch': 'release' }
Plug 'preservim/nerdtree'
" Plug 'razak17/tailwind-fold.nvim'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-surround'
" AI
" Deps
Plug 'stevearc/dressing.nvim'
Plug 'nvim-lua/plenary.nvim'
Plug 'MunifTanjim/nui.nvim'
Plug 'yetone/avante.nvim', { 'branch': 'main', 'do': 'make' }
" Optional deps
" Plug 'hrsh7th/nvim-cmp'
" Plug 'nvim-tree/nvim-web-devicons' "or Plug 'echasnovski/mini.icons'
" Plug 'HakonHarnes/img-clip.nvim'
" Plug 'zbirenbaum/copilot.lua'
" Clojure
Plug 'clojure-vim/clojure.vim', { 'for': 'clojure' }
Plug 'Olical/conjure', { 'branch': 'develop', 'for': ['clojure', 'scheme'] }
Plug 'eraserhd/parinfer-rust'
Plug 'guns/vim-sexp'
Plug 'tpope/vim-sexp-mappings-for-regular-people'
" Gleam
" Plug 'gleam-lang/gleam.vim', { 'for': 'gleam' }
" Go
" Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries', 'for': 'go' }
" Odin
" Plug 'Tetralux/odin.vim', { 'for': 'odin' }
"" Rust
Plug 'mattn/webapi-vim', { 'for': 'rust' }
Plug 'rust-lang/rust.vim', { 'for': 'rust' }
" Themes
Plug 'arcticicestudio/nord-vim'
Plug 'ayu-theme/ayu-vim'
Plug 'folke/tokyonight.nvim'
Plug 'gruvbox-community/gruvbox'
Plug 'https://gitlab.com/yorickpeterse/vim-paper.git'
Plug 'iagorrr/noctishc.nvim'
Plug 'iCyMind/NeoSolarized'
Plug 'ishan9299/modus-theme-vim'
Plug 'marko-cerovac/material.nvim'
Plug 'Mofiqul/dracula.nvim'
Plug 'nanotech/jellybeans.vim'
Plug 'NLKNguyen/papercolor-theme'
Plug 'plan9-for-vimspace/acme-colors'
Plug 'projekt0n/github-nvim-theme'
Plug 'rakr/vim-one'
Plug 'yassinebridi/vim-purpura'
" Web
Plug 'mattn/emmet-vim'
Plug 'maxmellon/vim-jsx-pretty'
Plug 'prisma/vim-prisma'
Plug 'yaegassy/coc-tailwindcss3', {'do': 'yarn install --frozen-lockfile'}
" Zig
" Plug 'ziglang/zig.vim', { 'for': 'zig' }
call plug#end()
let g:coc_disable_transparent_cursor = 1
let g:coc_global_extensions = [
\'coc-clojure',
\'coc-css',
\'coc-emmet',
\'coc-html',
\'coc-java',
\'coc-json',
\'coc-prettier',
\'coc-rust-analyzer',
\'coc-tsserver',
\'@yaegassy/coc-tailwindcss3',
\]
" \'coc-conjure',
" \'coc-go',
" \'coc-htmldjango',
" \'coc-prisma',
" \'coc-zls',
" tailwindCSS.headwind.runOnSave": true,
let g:conjure#client#clojure#nrepl#connection#auto_repl#enabled = v:false
let g:conjure#eval#comment_prefix = ";; "
" let g:conjure#log#hud#enabled = v:false
let g:conjure#log#hud#width = 1
" let g:conjure#log#hud#anchor = "SE"
" let g:copilot_filetypes = {"*": v:false}
let g:copilot_no_tab_map = v:true
let g:go_def_mapping_enabled=0
let g:go_def_mode="gopls"
let g:go_fmt_command = "goimports"
let g:go_info_mode="gopls"
let g:go_gopls_enabled=0
let g:open_in_insert_mode=0
let g:python3_host_prog = "/usr/bin/python3"
let g:rainbow_active = 1
let g:rust_clip_command = 'xclip -selection clipboard'
let g:rustfmt_autosave = 1
""go": {
" "command": "gopls",
" "rootPatterns": ["go.work", "go.mod", ".vim/", ".git/", ".hg/"],
" "filetypes": ["go"],
" "initializationOptions": {
" "usePlaceholders": true
" }
"},
set backupcopy=yes
set cmdheight=2
set completeopt=menuone
set cursorline
set expandtab
set hidden
set ignorecase
set inccommand=nosplit
set mat=2
set mouse=
set noswapfile
set number
set shiftwidth=4
set shortmess+=c
set showmatch
set signcolumn=yes
set smartcase
set smartindent
set splitbelow
set splitright
set tabstop=4
set wildoptions=pum
let mapleader = " "
let maplocalleader = ","
" imap <silent><script><expr> <C-a> copilot#Accept("\<CR>")
noremap! jk <Esc>
tnoremap jk <C-\><C-n>
tnoremap <C-[> <C-\><C-n>
nnoremap <leader>g gg"+yG
nnoremap <silent> <leader>t :ToggleTerminal<Enter>a
" tnoremap <silent> <leader>t <C-\><C-n>:ToggleTerminal<CR>
nmap <silent> <leader><CR> :noh<CR>
nmap ea <Plug>(EasyAlign)i{<Space><CR>
nmap eA <Plug>(EasyAlign)i[<Space><CR>
nmap <C-g> :Goyo<CR>
nmap <leader><tab> <C-^>
nmap <leader><leader> o<Esc>k
nmap <leader>b :Buffers<CR>
nmap <leader>cd :set background=dark<CR>
nmap <leader>cl :set background=light<CR>
nmap <leader>cs :colorscheme<Space>
nmap <leader>d :NERDTreeToggle<CR>
nmap <leader>f :Files<CR>
nmap <leader>o :only<CR>
nmap <leader>q :x<CR>
nmap <leader>s :split<CR>:res -8<CR><leader>t
nmap <leader>v :e $MYVIMRC<CR>
nmap <leader>w :w<CR>
nmap <leader>y :set nonumber<CR>:set signcolumn=no<CR>
if !isdirectory($HOME."/.vim")
call mkdir($HOME."/.vim", "", 0770)
endif
if !isdirectory($HOME."/.vim/undo-dir")
call mkdir($HOME."/.vim/undo-dir", "", 0700)
endif
set undodir=~/.vim/undo-dir
set undofile
autocmd FileType * set formatoptions-=ro
au BufEnter *.c nnoremap <buffer> <localleader>c :!cc
au BufEnter *.c nnoremap <buffer> <localleader>l :!cc -Wall -Wextra<C-F>4b2hi
au BufEnter *.c nnoremap <buffer> <localleader>r :!./
au FileType clojure set commentstring=;;\ %s
au BufEnter *.clj,*.cljs,*.edn stopinsert
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>cc :ConjureConnect<Space>
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>cs :ConjureShadowSelect<Space>
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>f :!clojure-lsp format<CR>
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>hd :let g:conjure#log#hud#enabled = v:false<CR>
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>he :let g:conjure#log#hud#enabled = v:true<CR>
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>jT <Cmd>TapForm<CR>
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>jt <Cmd>TapWord<CR>
au BufEnter *.clj,*.cljs,*.edn vnoremap <buffer> <localleader>jt :TapV<CR>
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>jte <Cmd>TapExc<CR>
autocmd BufWinEnter "conjure-log-*" "silent s/; Sponsored by @.*//e"
" autocmd TermOpen * nnoremap <buffer> <leader>r iclj -M:repl<CR>
augroup filetype_clojure
autocmd!
autocmd FileType clojure setlocal shiftwidth=2 tabstop=2
augroup END
au BufEnter *.gleam nnoremap <buffer> <localleader>a :!gleam add<Space>
au BufEnter *.gleam nnoremap <buffer> <localleader>r :!gleam run<CR>
au BufEnter *.go nnoremap <buffer> <localleader>b :!go build<CR>
au BufEnter *.go nnoremap <buffer> <localleader>r :!go run .<CR>
au BufEnter *.java nnoremap <buffer> <localleader>r :!java src/Main.java<CR>
au BufEnter *.java nnoremap <buffer> <localleader>, :!java
au BufEnter *.odin nnoremap <buffer> <localleader>r :!odin run .<CR>
au BufEnter *.rs nnoremap <buffer> <localleader>a :!cargo add<Space>
au BufEnter *.rs nnoremap <buffer> <localleader>b :!cargo lbuild<CR>
au BufEnter *.rs nnoremap <buffer> <localleader>c :!cargo lcheck<CR>
au BufEnter *.rs nnoremap <buffer> <localleader>cl :!cargo clippy<CR>
au BufEnter *.rs nnoremap <buffer> <localleader>h :CocCommand document.toggleInlayHint<CR>
au BufEnter *.rs nnoremap <buffer> <localleader>p o<CR>println!("{:?}", );<Esc>hi
au BufEnter *.rs nnoremap <buffer> <localleader>r :!cargo lrun<CR>
au BufEnter *.rs nnoremap <buffer> <localleader>R :!cargo lrun --
au BufEnter *.rs nnoremap <buffer> <localleader>t :!cargo ltest<CR>
au BufEnter *.rs nnoremap <buffer> <localleader>, :Rust
au BufEnter *.rs nnoremap <buffer> <localleader><Space> :CocCommand rust-analyzer.
" below is a small bug fix for a minor Dioxus hot reload issue:
augroup rust_group
autocmd!
autocmd FileType rust setlocal backupcopy=yes
augroup END
au BufEnter *.zig nnoremap <buffer> <localleader>r :!zig build run<CR>
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1):
\ CheckBackspace() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
function! CheckBackspace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
function! ShowDocumentation()
if CocAction('hasProvider', 'hover')
call CocActionAsync('doHover')
else
call feedkeys('K', 'in')
endif
endfunction
inoremap <silent><expr> <down> coc#util#has_float() ? FloatScroll(1) : "\<down>"
inoremap <silent><expr> <up> coc#util#has_float() ? FloatScroll(0) : "\<up>"
nnoremap <silent> K :call ShowDocumentation()<CR>
nnoremap <silent> <leader>k :call ShowDocumentation()<CR>
" nmap <silent> ca <Plug>(coc-codelens-action)
nmap <silent> <space>d :cd<C-u>CocList diagnostics<cr>
nmap <silent> <space>p :cd<C-u>CocList commands<cr>
nmap <silent> ga <Plug>(coc-codeaction-cursor)
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gn <Plug>(coc-rename)
nmap <silent> gr <Plug>(coc-references)
nmap <silent> [c :call CocAction('diagnosticNext')<cr>
nmap <silent> ]c :call CocAction('diagnosticPrevious')<cr>
set termguicolors
colorscheme PaperColor
set background=dark
" require("CopilotChat").setup {}
" lua << EOF
" require('which-key').setup {}
" EOF
autocmd FileType * setlocal modifiable
autocmd! User avante.nvim
lua << EOF
require('which-key').setup {}
require('avante_lib').load()
require('avante').setup()
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment