feat(initial): add all dotfiles

This commit is contained in:
Oliver
2025-01-21 10:55:56 +01:00
parent 2186b49075
commit a81dc224bd
48 changed files with 1016 additions and 0 deletions

5
.gitignore vendored
View File

@@ -1 +1,6 @@
op
glab-cli/config.yml
glab-cli/**/mr.json
**/.DS_Store
**/lazy-lock.json
github-copilot/hosts.json

View File

@@ -0,0 +1 @@
{"copilot.lua":"1.13.0"}

2
glab-cli/aliases.yml Normal file
View File

@@ -0,0 +1,2 @@
ci: pipeline ci
co: mr checkout

1
iterm2/AppSupport Symbolic link
View File

@@ -0,0 +1 @@
/Users/oliverhnat/Library/Application Support/iTerm2

2
nvim/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.DS_Store
lazy-lock.json

15
nvim/README.md Normal file
View File

@@ -0,0 +1,15 @@
# Info
On the master branch is my current nvim configuration. On v2.0 is the nvchad configuration that I used to use before.
## Todo:
- [x] When scrolling too much right, and then coming back, the screen doesn't come back as quickly
- [x] Add null-ls for formatting
- [x] Choose a theme
- [x] Change the color of the autocomplete
- [x] Make comments work
- [x] Delete tab when navigating out if it's not saved in harpoon
- [x] Add git to signcolumn
- [x] gitsigns not working
- [x] change ctrl L to ctrl ; for copilot, because clashing with ctrl l for moving in insert mode
- [ ] change my default lsp to something else
- [ ] figure out how to use emmet snips and autocomplete for commonly used functions like `if __name__ == "__main__":` etc

1
nvim/init.lua Normal file
View File

@@ -0,0 +1 @@
require("olinpin")

View File

@@ -0,0 +1,21 @@
local configs = require 'lspconfig.configs'
local util = require 'lspconfig.util'
configs.prolog_lsp = {
default_config = {
cmd = {"swipl",
"-g", "use_module(library(lsp_server)).",
"-g", "lsp_server:main",
"-t", "halt",
"--", "stdio"};
filetypes = {"prolog"};
root_dir = util.root_pattern("pack.pl");
};
docs = {
description = [[
https://github.com/jamesnvc/prolog_lsp
Prolog Language Server
]];
}
}

View File

@@ -0,0 +1,38 @@
function InsertDebugPrint()
local ft = vim.bo.filetype
local filename = vim.fn.expand("%:t")
local lineno = vim.fn.line(".")
local current_line = vim.fn.getline(".")
local indent = string.match(current_line, "^%s*")
local print_statement = ""
local cursor_pos = #print_statement
if ft == "go" then
print_statement = string.format('log.Printf("DEBUG: %s:%d - %%v", )', filename, lineno)
cursor_pos = #print_statement - 1
elseif ft == "python" then
print_statement = string.format('print(f"DEBUG: %s:%d")', filename, lineno)
cursor_pos = #print_statement + 2
elseif ft == "php" then
print_statement = string.format('dd("DEBUG: %s:%d ");', filename, lineno)
cursor_pos = #print_statement - 1
elseif ft == "javascript" or ft == "typescript" then
print_statement = string.format('console.log("DEBUG: %s:%d: ", );', filename, lineno)
cursor_pos = #print_statement - 1
else
return
end
-- Insert the statement with the same indentation
print_statement = indent .. print_statement
vim.api.nvim_put({ print_statement }, 'l', true, true)
-- Move the cursor to the right position & go into insert mode
local cursor_line = vim.fn.line(".")
vim.fn.cursor(cursor_line, cursor_pos)
-- vim.api.nvim_command('startinsert')
end
vim.api.nvim_set_keymap('n', '<Leader>ic', ':lua InsertDebugPrint()<CR>', { noremap = true, silent = true })

10
nvim/lua/olinpin/init.lua Normal file
View File

@@ -0,0 +1,10 @@
require("olinpin.set")
require("olinpin.lazy")
require("olinpin.remap")
require("olinpin.commands")
-- this needs to be set after lazy
vim.o.timeoutlen = 0
-- setup prolog
require('lspconfig/prolog_lsp')
require('lspconfig').prolog_lsp.setup{}

14
nvim/lua/olinpin/lazy.lua Normal file
View File

@@ -0,0 +1,14 @@
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)
require("lazy").setup("olinpin.plugins")

View File

@@ -0,0 +1,87 @@
return {
"yetone/avante.nvim",
event = "VeryLazy",
lazy = false,
config = function(_, opts)
-- Let the plugin load first
require("avante").setup(opts)
-- Then remove the default mappings
vim.schedule(function()
vim.keymap.del({ "n", "v" }, "<leader>aa")
vim.keymap.del("n", "<leader>ar")
vim.keymap.del("v", "<leader>ae")
vim.keymap.del("n", "<leader>ah")
vim.keymap.del("n", "<leader>ad")
vim.keymap.del("n", "<leader>af")
vim.keymap.del("n", "<leader>aR")
vim.keymap.del("n", "<leader>as")
vim.keymap.del("n", "<leader>at")
end)
end,
opts = {
-- add any opts here
provider = "copilot",
copilot = {
model = "claude-3.5-sonnet",
-- max_tokens = 4096,
},
},
build = "make",
keys = {
{
"<leader>ca",
function()
require("avante.api").ask()
end,
desc = "avante: ask",
mode = { "n", "v" },
},
{
"<leader>cr",
function()
require("avante.api").refresh()
end,
desc = "avante: refresh",
},
{
"<leader>ce",
function()
require("avante.api").edit()
end,
desc = "avante: edit",
mode = "v",
},
{
"<leader>ch",
function()
require("avante.api").hint()
end,
desc = "avante: hint",
mode = "n",
},
{
"<leader>cd",
function()
require("avante.api").debug()
end,
desc = "avante: debug",
mode = "n",
},
},
dependencies = {
"stevearc/dressing.nvim",
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
--- The below dependencies are optional,
-- "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
{
-- Make sure to setup it properly if you have lazy=true
"MeanderingProgrammer/render-markdown.nvim",
-- "zbirenbaum/copilot.lua", -- for providers='copilot'
opts = {
file_types = { "markdown", "Avante" },
},
ft = { "markdown", "Avante" },
},
},
}

View File

@@ -0,0 +1,14 @@
return {
"utilyre/barbecue.nvim",
name = "barbecue",
event = { "VeryLazy"},
version = "*",
dependencies = {
"SmiteshP/nvim-navic",
"nvim-tree/nvim-web-devicons", -- optional dependency
},
opts = {
-- configurations go here
}
}

View File

@@ -0,0 +1,8 @@
return {
"lukas-reineke/indent-blankline.nvim",
event = "VeryLazy",
config = function ()
require("ibl").setup {
}
end
}

View File

@@ -0,0 +1,25 @@
function ColorMe(color)
color = color or "OceanicNext"
vim.cmd.colorscheme(color)
vim.api.nvim_set_hl(0, "Normal", { bg = "none" })
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })
end
return {
{
'mhartington/oceanic-next',
config = function ()
-- require('oceanic-next').setup()
vim.cmd.colorscheme('OceanicNext')
vim.cmd("highlight! EndOfBuffer guibg=background guifg=background")
end
}
-- {
-- 'nxvu699134/vn-night.nvim',
-- config = function ()
-- vim.cmd.colorscheme('vn-night')
-- vim.cmd("highlight! EndOfBuffer guibg=background guifg=background")
-- end
-- }
}

View File

@@ -0,0 +1,7 @@
return {
'norcalli/nvim-colorizer.lua',
event = "VeryLazy",
config = function()
require('colorizer').setup()
end
}

View File

@@ -0,0 +1,17 @@
return {
"numToStr/Comment.nvim",
event = "VeryLazy",
lazy = false,
config = function ()
require('Comment').setup({
opleader = {
-- Line-comment toggle keymap
line = '<leader>/'
},
toggler = {
line = "<leader>/"
}
})
end
}

View File

@@ -0,0 +1,22 @@
return {
"zbirenbaum/copilot.lua",
cmd = "Copilot",
event = "InsertEnter",
config = function ()
require("copilot").setup({
suggestion = {
enabled = true,
auto_trigger = true,
keymap = {
accept = ""
}
},
panel = {
enabled = false,
},
filetypes = {
["."] = false,
}
})
end
}

View File

@@ -0,0 +1,17 @@
return {
'kristijanhusak/vim-dadbod-ui',
dependencies = {
{ 'tpope/vim-dadbod', lazy = true },
{ 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql' }, lazy = true },
},
cmd = {
'DBUI',
'DBUIToggle',
'DBUIAddConnection',
'DBUIFindBuffer',
},
init = function()
-- Your DBUI configuration
vim.g.db_ui_use_nerd_fonts = 1
end
}

View File

@@ -0,0 +1,3 @@
return {
"xavierchow/vim-sequence-diagram"
}

View File

@@ -0,0 +1,11 @@
return {
'tamton-aquib/duck.nvim',
config = function()
local duck = require("duck")
vim.keymap.set('n', '<leader>dd', function() duck.hatch() end, {})
vim.keymap.set('n', '<leader>dc', function() duck.hatch("🐿️", 20) end, {})
vim.keymap.set('n', '<leader>dk', function() duck.cook() end, {})
vim.keymap.set('n', '<leader>dk', function() duck.cook("🐿️") end, {})
-- duck.hatch("🐿️", 20)
end
}

View File

@@ -0,0 +1,11 @@
return {
'tpope/vim-fugitive',
event = "VeryLazy",
config = function()
vim.keymap.set("n", "<leader>gs", vim.cmd.Git)
vim.keymap.set("n", "<leader>gpl", ":G pull<CR>", { desc = "Git pull" })
vim.keymap.set("n", "<leader>gps", ":G push<CR>", { desc = "Git push" })
vim.keymap.set("n", "<leader>gc", ":Git commit<CR>", { desc = "Git commit" })
vim.keymap.set("n", "<leader>ga", ":Gwrite<CR>", { desc = "Git add current file" })
end
}

View File

@@ -0,0 +1,56 @@
return {
-- "akinsho/git-conflict.nvim",
-- version = "*",
-- lazy = true,
-- config = function()
-- require("git-conflict").setup({
-- default_mappings = false,
-- default_commands = true, -- disable commands created by this plugin
-- disable_diagnostics = false, -- This will disable the diagnostics in a buffer whilst it is conflicted
-- list_opener = "copen", -- command or function to open the conflicts list
-- -- highlights = { -- They must have background color, otherwise the default color will be used
-- -- incoming = "DiffAdd",
-- -- current = "DiffText",
-- -- ancestor = "DiffChange",
-- -- },
-- })
--
-- local function conflict_choose(choice)
-- return function()
-- vim.cmd("GitConflictChoose" .. choice)
-- vim.cmd("AvanteConflictChoose" .. choice)
-- end
-- end
--
-- local function resolve_conflict(action)
-- if vim.fn.exists(":GitConflict") == 2 and vim.fn["git_conflict#is_conflicted"]() then
-- if action == "ours" then
-- return vim.cmd("GitConflictChooseOurs")
-- elseif action == "theirs" then
-- return vim.cmd("GitConflictChooseTheirs")
-- elseif action == "both" then
-- return vim.cmd("GitConflictChooseBoth")
-- elseif action == "none" then
-- return vim.cmd("GitConflictChooseNone")
-- end
-- elseif vim.fn.exists(":Avante") == 2 then
-- if action == "ours" then
-- return vim.cmd("AvanteChooseOurs")
-- elseif action == "theirs" then
-- return vim.cmd("AvanteChooseTheirs")
-- elseif action == "both" then
-- return vim.cmd("AvanteChooseBoth")
-- elseif action == "none" then
-- return vim.cmd("AvanteChooseNone")
-- end
-- else
-- return ""
-- end
-- end
--
-- vim.keymap.set("n", "<leader>co", resolve_conflict("ours"), { desc = "Choose Ours (Avante & Git Conflict)" })
-- vim.keymap.set("n", "<leader>ct", resolve_conflict("theirs"), { desc = "Choose Theirs (Avante & Git Conflict)"})
-- vim.keymap.set("n", "<leader>cb", resolve_conflict("both"), { desc = "Choose Both (Avante & Git Conflict)" })
-- vim.keymap.set("n", "<leader>cn", resolve_conflict("none"), { desc = "Choose None (Avante & Git Conflict)" })
-- end,
}

View File

@@ -0,0 +1,19 @@
return {
"lewis6991/gitsigns.nvim",
event = "VeryLazy",
opts = function()
return {
signs = {
add = { text = "" },
change = { text = "" },
delete = { text = "󰍵" },
topdelete = { text = "" },
changedelete = { text = "~" },
untracked = { text = "" },
}
}
end,
config = function()
require("gitsigns").setup()
end
}

View File

@@ -0,0 +1,65 @@
return {
'ThePrimeagen/harpoon',
event = "VeryLazy",
dependencies = 'nvim-lua/plenary.nvim',
config = function()
require("harpoon").setup({
tabline = true,
tabline_prefix = " ",
tabline_suffix = " ",
menu = {
width = vim.api.nvim_win_get_width(0) - 20,
}
})
local mark = require("harpoon.mark")
local ui = require("harpoon.ui")
local harpoon = require("harpoon")
vim.keymap.set("n", "<leader>a", mark.add_file)
vim.keymap.set("n", "<leader>x", function()
-- remove current file
mark.rm_file(vim.fn.expand('%'))
local new_marks = {}
local config = harpoon.get_mark_config()
-- loop over the current marks
for idx = 1, mark.get_length() do
local filename = config.marks[idx].filename
-- if the mark is not empty, add it to the new marks table (removes the '(empty)' file)
if filename ~= "" then
table.insert(new_marks, {
filename = filename,
row = config.marks[idx].row,
col = config.marks[idx].col,
})
end
end
config.marks = new_marks
ui.nav_prev()
end)
vim.keymap.set("n", "<leader>h", ui.toggle_quick_menu)
vim.keymap.set("n", "<leader>1", function() ui.nav_file(1) end)
vim.keymap.set("n", "<leader>2", function() ui.nav_file(2) end)
vim.keymap.set("n", "<leader>3", function() ui.nav_file(3) end)
vim.keymap.set("n", "<leader>4", function() ui.nav_file(4) end)
vim.keymap.set("n", "<leader>5", function() ui.nav_file(5) end)
vim.keymap.set("n", "<leader>6", function() ui.nav_file(6) end)
vim.keymap.set("n", "<leader>7", function() ui.nav_file(7) end)
vim.keymap.set("n", "<leader>8", function() ui.nav_file(8) end)
vim.keymap.set("n", "<leader>9", function() ui.nav_file(9) end)
vim.keymap.set("n", "<tab>", ui.nav_next)
vim.keymap.set("n", "<S-Tab>", ui.nav_prev)
vim.cmd('highlight! HarpoonInactive guibg=NONE guifg=#63698c')
vim.cmd('highlight! HarpoonActive guibg=NONE guifg=white')
vim.cmd('highlight! HarpoonNumberActive guibg=NONE guifg=#7aa2f7')
vim.cmd('highlight! HarpoonNumberInactive guibg=NONE guifg=#7aa2f7')
vim.cmd('highlight! TabLineFill guibg=NONE guifg=background')
end
}

View File

@@ -0,0 +1,24 @@
return {
"ggandor/leap.nvim",
config = function ()
require('leap')
vim.keymap.set("n", "<leader>s", "<Plug>(leap-forward-to)", { desc = "Leap forward to" })
-- default mapping: `s`
vim.keymap.set("n", "<leader>S", "<Plug>(leap-backward-to)", { desc = "Leap backward to" })
-- arguments: `{ backward = true }`
-- default mapping: `S`
vim.keymap.set("n", "<leader>b", "<Plug>(leap-forward-till)", { desc = "Leap forward till" } )
-- arguments: `{ offset = -1, inclusive_op = true }`
-- default mapping: `x` (Visual and Operator-pending mode only)
vim.keymap.set("n", "<leader>B", "<Plug>(leap-backward-till)", { desc = "Leap backward till" })
-- arguments: `{ backward = true, offset = 2 }`
-- default mapping: `X` (Visual and Operator-pending mode only)
-- <Plug>(leap-from-window)
-- arguments: `{ target_windows = require('leap.util').get_enterable_windows() }`
-- default mapping: `gs`
end
}

View File

@@ -0,0 +1,49 @@
return {
'VonHeikemen/lsp-zero.nvim',
branch = 'v2.x',
dependencies = {
-- LSP Support
{'neovim/nvim-lspconfig'}, -- Required
{'williamboman/mason.nvim'}, -- Optional
{'williamboman/mason-lspconfig.nvim'}, -- Optional
-- Autocompletion
{'hrsh7th/nvim-cmp'}, -- Required
{'hrsh7th/cmp-nvim-lsp'}, -- Required
{'L3MON4D3/LuaSnip'}, -- Required
},
config = function()
local lsp = require('lsp-zero')
lsp.preset('recommended')
lsp.on_attach(function(client, bufnr)
-- see :help lsp-zero-keybindings
-- to learn the available actions
lsp.default_keymaps({buffer = bufnr})
end)
lsp.setup_servers({'ts_ls', 'eslint', 'html', 'hls', 'gopls'})
-- require("lspconfig").html.setup({
-- filetypes = { "html", "htmldjango" },
-- init_options = {
-- configurationSection = { "html", "css", "javascript" },
-- embeddedLanguages = {
-- css = true,
-- javascript = true,
-- },
-- provideFormatter = true,
-- },
-- })
require('lspconfig').lua_ls.setup(lsp.nvim_lua_ls())
lsp.set_sign_icons({
error = '',
warn = '',
hint = '',
info = '»'
})
lsp.setup()
end
}

View File

@@ -0,0 +1,11 @@
return {
'nvim-lualine/lualine.nvim',
requires = { 'nvim-tree/nvim-web-devicons', opt = true },
config = function ()
require('lualine').setup({
options = {
theme = 'ayu_mirage'
}
})
end
}

View File

@@ -0,0 +1,6 @@
return {
"williamboman/mason.nvim",
config = function()
require("mason").setup()
end
}

View File

@@ -0,0 +1,33 @@
return {
"jay-babu/mason-null-ls.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"williamboman/mason.nvim",
"jose-elias-alvarez/null-ls.nvim",
},
config = function ()
require("mason-null-ls").setup({
ensure_installed = {
"stylua",
"jq",
"php-cs-fixer",
"intelephense",
"black",
"prettier",
}
})
local null_ls = require("null-ls")
local format = null_ls.builtins.formatting
null_ls.setup({
sources = {
format.black,
format.stylua,
format.prettier
}
})
vim.keymap.set({"n", "x"}, "=", function() vim.cmd('LspZeroFormat') end, { desc = "Format" })
end
}

View File

@@ -0,0 +1,7 @@
return {
"winston0410/range-highlight.nvim",
dependencies = "winston0410/cmd-parser.nvim",
config = function ()
require("range-highlight").setup()
end
}

View File

@@ -0,0 +1,4 @@
return {
"tpope/vim-surround",
event = "VeryLazy"
}

View File

@@ -0,0 +1,24 @@
return {
'kdheepak/tabline.nvim',
config = function()
require('tabline').setup({
-- Defaults configuration options
enable = true,
options = {
-- If lualine is installed tabline will use separators configured in lualine by default.
-- These options can be used to override those settings.
section_separators = {'', ''},
component_separators = {'', ''},
max_bufferline_percent = 66, -- set to nil by default, and it uses vim.o.columns * 2/3
show_tabs_always = true, -- this shows tabs only when there are more than one tab or if the first tab is named
show_devicons = true, -- this shows devicons in buffer section
show_bufnr = false, -- this appends [bufnr] to buffer section,
show_filename_only = true, -- shows base filename only instead of relative path in filename
modified_icon = "+ ", -- change the default modified icon
modified_italic = false, -- set to true by default; this determines whether the filename turns italic if modified
show_tabs_only = false, -- this shows only tabs instead of tabs + buffers
}
})
end,
requires = { { 'hoob3rt/lualine.nvim', opt=true }, {'kyazdani42/nvim-web-devicons', opt = true} }
}

View File

@@ -0,0 +1,57 @@
local _bad = { ".*%.min.css", ".*%.min.js" } -- remove minified results crashing the previewer
local bad_files = function(filepath)
for _, v in ipairs(_bad) do
if filepath:match(v) then
return false
end
end
return true
end
local new_maker = function(filepath, bufnr, opts)
local previewers = require("telescope.previewers")
opts = opts or {}
if opts.use_ft_detect == nil then
opts.use_ft_detect = true
end
opts.use_ft_detect = opts.use_ft_detect == false and false or bad_files(filepath)
previewers.buffer_previewer_maker(filepath, bufnr, opts)
end
return {
"nvim-telescope/telescope.nvim",
event = "VeryLazy",
tag = "0.1.8",
dependencies = { "nvim-lua/plenary.nvim" },
init = function()
local builtin = require("telescope.builtin")
local telescope = require("telescope")
telescope.setup({
defaults = {
buffer_previewer_maker = new_maker,
},
pickers = {
find_files = {
-- `hidden = true` will still show the inside of `.git/` as it's not `.gitignore`d.
find_command = { "rg", "--files", "--hidden", "--no-ignore",
"--glob", "!**/.git/*", "--glob", "!**/venv/*", "--glob", "!**/.venv/*", "--glob",
"!**/node_modules/*",
"--glob", "!**/vendor/*", "--glob", "!**/var/cache/*",
"--glob", "!**/.next/*", "--glob", "!**/out/*", "--glob", "!**/dist/*", "--glob", "!**.min.js"
},
},
},
preview = {
filesize_limit = 0.5, -- MB
},
})
vim.keymap.set('n', '<leader>*', builtin.grep_string, {desc = "Grep current string"})
vim.keymap.set('n', '<leader>ff', builtin.find_files, {desc = "Find files"})
vim.keymap.set('n', '<leader>fg', builtin.git_branches, {desc = "Find Git branches" })
vim.keymap.set('n', '<leader>fc', builtin.git_commits, {desc = "Find Commits" })
vim.keymap.set('n', '<leader>fw', builtin.live_grep, {desc = "Find Words" })
end,
}

View File

@@ -0,0 +1,9 @@
return {
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
}

View File

@@ -0,0 +1,58 @@
return {
'nvim-treesitter/nvim-treesitter',
event = "VeryLazy",
cmd = 'TSUpdate',
config = function()
require'nvim-treesitter.configs'.setup {
-- A list of parser names, or "all" (the five listed parsers should always be installed)
ensure_installed = {
"vimdoc",
"bash",
"css",
"javascript",
"python",
"c",
"lua",
"vim",
"vimdoc",
"query",
"go",
"markdown",
"markdown_inline",
"regex",
"swift",
"php",
"kotlin",
"rust",
"haskell",
"html"
},
-- Install parsers synchronously (only applied to `ensure_installed`)
sync_install = false,
-- Automatically install missing parsers when entering buffer
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
auto_install = true,
highlight = {
enable = true,
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = {"markdown"}
},
}
require'lspconfig'.sourcekit.setup{
cmd = {'/usr/bin/sourcekit-lsp'}
}
require('lspconfig')['hls'].setup{
filetypes = { 'haskell', 'lhaskell', 'cabal' },
}
-- vim.keymap.set('n','gd',vim.lsp.buf.definition)
end
}

View File

@@ -0,0 +1,22 @@
return {
"folke/trouble.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
event = "VeryLazy",
keys = {
{
"<C-t>",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<C-T>",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
}
}

View File

@@ -0,0 +1,7 @@
return {
'mbbill/undotree',
event = "VeryLazy",
init = function()
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
end
}

View File

@@ -0,0 +1,3 @@
return {
"tpope/vim-vinegar"
}

View File

@@ -0,0 +1,32 @@
return {
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
-- vim.o.timeout = true
vim.o.timeoutlen = 500
end,
config = function()
local wk = require("which-key")
wk.add({
{ "<leader>1", desc = "Openf harpoon buffer 1" },
{ "<leader>2", hidden = true },
{ "<leader>3", hidden = true },
{ "<leader>4", hidden = true },
{ "<leader>5", hidden = true },
{ "<leader>6", hidden = true },
{ "<leader>7", hidden = true },
{ "<leader>8", hidden = true },
{ "<leader>9", hidden = true },
{ "<leader>a", desc = "Add file to harpoon" },
{ "<leader>dd", desc = "duck hatch" },
{ "<leader>dk", desc = "duck cook" },
{ "<leader>f", group = "Find" },
{ "<leader>g", group = "Git" },
{ "<leader>gs", desc = "Open Git status" },
{ "<leader>h", desc = "Open Harpoon quick menu" },
{ "<leader>u", desc = "Toggle Undotree" },
{ "<leader>w", desc = "Replace all current words" },
{ "<leader>x", desc = "Close and remove buffer from harpoon" },
})
end,
}

View File

@@ -0,0 +1,80 @@
vim.keymap.set("n", "<C-n>", vim.cmd.Ex, { desc = "Open explorer" })
vim.keymap.set("n", ";", ":")
-- window nav remaps
vim.keymap.set("n", "<C-h>", "<C-w>h", { desc = "Move window left" })
vim.keymap.set("n", "<C-j>", "<C-w>j", { desc = "Move window down" })
vim.keymap.set("n", "<C-k>", "<C-w>k", { desc = "Move window up" })
vim.keymap.set("n", "<C-l>", "<C-w>l", { desc = "Move window right" })
-- window split remaps
-- move selected lines
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv", { desc = "Move selected down" })
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "Move selected up" })
-- keep cursor in middle when searching
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
-- keep copied text when pasting over selected text
vim.keymap.set("x", "<leader>p", "\"_dP", { desc = "Paste over selected text" })
-- replace the word you're on everywhere in buffer
vim.keymap.set("n", "<leader>w", ":%s/\\<<C-r><C-w>\\>/<C-r><C-w>/gI<Left><Left><Left>", { desc = "Replace word" })
-- move within insert mode
-- go to beginning and end
vim.keymap.set("i", "<C-b>", "<ESC>^i", { desc = "Beginning of line" })
vim.keymap.set("i", "<C-e>", "<End>", { desc = "End of line" })
-- navigate within insert mode
vim.keymap.set("i", "<C-h>", "<Left>", { desc = "Move left" })
vim.keymap.set("i", "<C-l>", "<Right>", { desc = "Move right" })
vim.keymap.set("i", "<C-j>", "<Down>", { desc = "Move down" })
vim.keymap.set("i", "<C-k>", "<Up>", { desc = "Move up" })
vim.keymap.set("x", "Y", "\"*y", { desc = "Copy to clipboard" }) -- copy to clipboard
vim.keymap.set("n", "<ESC>", "<ESC>:noh<CR>", { desc = "Clear highlights" })
-- copy file path
vim.keymap.set("n", "<leader>cfp", [[:let @+ = expand("%:p")<CR>]], { desc = "Copy file path" })
vim.keymap.set("n", "ff", "za", { desc = "Fold" })
-- remap parentheses to add end parenthese
-- vim.keymap.set("i", "(", "()<Left>")
-- vim.keymap.set("i", "{", "{}<Left>")
-- vim.keymap.set("i", "[", "[]<Left>")
-- remap to add end quotes
-- vim.keymap.set("i", "'", "''<Left>")
-- vim.keymap.set("i", "\"", "\"\"<Left>")
-- vim.keymap.set("i", "`", "``<Left>")
-- remove mappings for avante
-- vim.keymap.del("n", "<leader>aa")
-- vim.keymap.del("v", "<leader>aa")
-- vim.keymap.del("n", "<leader>ar")
-- vim.keymap.del("v", "<leader>ae")
-- vim.keymap.del("n", "<leader>ah")
-- vim.keymap.del("n", "<leader>ad")
-- remove mappings from which-key
-- local wk = require("which-key")
-- wk.add({
-- { "<leader>aa", hidden = true },
-- { "<leader>ad", hidden = true },
-- { "<leader>ae", hidden = true },
-- { "<leader>ah", hidden = true },
-- { "<leader>ar", hidden = true },
-- })
vim.api.nvim_set_keymap("n", "<leader>ys", "<Plug>Ysurround", {})

44
nvim/lua/olinpin/set.lua Normal file
View File

@@ -0,0 +1,44 @@
-- keep cursor in middle
vim.o.scrolloff = 800
-- keep cursor on the left
vim.o.sidescrolloff = 30
-- set relative line numbering
vim.opt.nu = true
vim.wo.relativenumber = true
-- turn off line wrap
vim.wo.wrap = false
-- make commands case insensitive
vim.o.ignorecase = true
-- indenting
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
-- use undotree instead of vim backups
vim.opt.swapfile = false
vim.opt.backup = false
vim.undodir = os.getenv("HOME") .. "/.vim/undodir"
vim.opt.undofile = true
-- make vim update fast
vim.opt.updatetime = 50
-- vim.opt.colorcolumn = "80"
vim.g.mapleader = " "
vim.opt.signcolumn = "yes"
vim.opt.termguicolors = true
vim.opt.fillchars = { fold = " " }
vim.opt.foldmethod = "indent"
vim.opt.foldenable = false
vim.opt.foldlevel = 99
-- g.markdown_folding = 1 -- enable markdown folding

1
tmux/plugins/tmux-fzf Submodule

Submodule tmux/plugins/tmux-fzf added at 1547f18083

Submodule tmux/plugins/tmux-resurrect added at cff343cf9e

Submodule tmux/plugins/tmux-sessionx added at c2eb0e19bf

Submodule tmux/plugins/tmux-which-key added at 545831eb95

1
tmux/plugins/tpm Submodule

Submodule tmux/plugins/tpm added at 99469c4a9b

69
tmux/tmux.conf Normal file
View File

@@ -0,0 +1,69 @@
### COLORS
set -g default-terminal screen-256color
# visuals
set-option -g status-style fg=colour250
set -g status-justify left
set -g status-position bottom
set -g status-left ''
set -g status-right '#S'
setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=#ffada2]#F '
setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F '
# remap prefix from 'C-b' to 'C-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# split panes using s and v
# use vim-like keys for splits and windows
# bind-key v split-window -h
# bind-key s split-window -v
# use vim-like keys for splits and windows
# bind C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iqE '(^|\/)vim$' && tmux send-keys C-h) || tmux select-pane -L"
bind-key j select-pane -D
bind-key k select-pane -U
bind-key h select-pane -L
bind-key l select-pane -R
unbind-key C-l
# reload config file (change file location to your the tmux.conf you want to use)
bind r source-file ~/.tmux.conf
# vim like navigation
set-window-option -g mode-keys vi
# vim health check recommends the options below
set-option -sg escape-time 10
set-option -g focus-events on
set-option -sa terminal-overrides ',xterm-256color:RGB'
# bind V to select and Y to copy
unbind -T copy-mode-vi Space; #Default for begin-selection
unbind -T copy-mode-vi Enter; #Default for copy-selection
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-selection
# increase history
set-option -g history-limit 5000
# set mouse support on
set -g mouse on
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'alexwforsythe/tmux-which-key'
set -g @plugin 'omerxx/tmux-sessionx'
# Initialise tmux plugin manager (needs to be at the bottom of the file)
run '~/.config/tmux/plugins/tpm/tpm'