From: Lukas Krickl Date: Thu, 27 Jul 2023 04:31:46 +0000 (+0200) Subject: Initial commit X-Git-Url: https://git.krickl.dev/?a=commitdiff_plain;h=428d534507009468fc2b196657e50ce8a02abea4;p=dotfiles%2F.git Initial commit --- 428d534507009468fc2b196657e50ce8a02abea4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e033bc6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +lazy-lock.json diff --git a/README.md b/README.md new file mode 100644 index 0000000..c75a80f --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ + # dotfiles repo + + This is a public version of my dotfiles. diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..9fb386c --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,2 @@ +require("main") +require("plugin") diff --git a/nvim/lua/main/init.lua b/nvim/lua/main/init.lua new file mode 100644 index 0000000..9247ee1 --- /dev/null +++ b/nvim/lua/main/init.lua @@ -0,0 +1,30 @@ +require("main.lazy") +require("main.remaps") + +vim.opt.termguicolors = true +vim.cmd [[colorscheme tokyonight]] +vim.wo.number = true +vim.wo.relativenumber = true +vim.opt.clipboard = 'unnamedplus' + +vim.o.expandtab = true +vim.o.smartindent = true +vim.o.tabstop = 2 +vim.o.shiftwidth = 2 + +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.o.autoread = true +vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "CursorHoldI", "FocusGained" }, { + command = "if mode() != 'c' | checktime | endif", + pattern = { "*" }, +}) + +vim.opt.updatetime = 50 + +vim.opt.signcolumn = "yes" +-- vim.opt.colorcolumn = "80" + +vim.opt.spelllang = 'en_us' +vim.opt.spell = false diff --git a/nvim/lua/main/lazy.lua b/nvim/lua/main/lazy.lua new file mode 100644 index 0000000..8d77c20 --- /dev/null +++ b/nvim/lua/main/lazy.lua @@ -0,0 +1,88 @@ +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 = { + { + 'nvim-telescope/telescope.nvim', + dependencies = { 'nvim-lua/plenary.nvim' }, + lazy = false + }, + { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + lazy = false + }, + { + "folke/tokyonight.nvim", + lazy = false, + priority = 1000, + opts = {}, + }, + { + "nvim-lua/plenary.nvim", + lazy = false + }, + { + "ThePrimeagen/harpoon", + lazy = false + }, + { 'akinsho/toggleterm.nvim', version = "*", config = true, lazy = false }, + { "gbprod/yanky.nvim", lazy = false }, + { "mbbill/undotree", lazy = false }, + { "tpope/vim-fugitive", lazy = false }, + { + "folke/todo-comments.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + opts = {}, + lazy = false + }, + { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + lazy = false + }, + { "rcarriga/nvim-notify", lazy = false }, + { + 'VonHeikemen/lsp-zero.nvim', + branch = 'v2.x', + dependencies = { + -- LSP Support + { 'neovim/nvim-lspconfig' }, -- Required + { -- Optional + 'williamboman/mason.nvim', + build = function() + pcall(vim.api.nvim_command, 'MasonUpdate') + end, + }, + { 'williamboman/mason-lspconfig.nvim' }, -- Optional + + -- Autocompletion + { 'hrsh7th/nvim-cmp' }, -- Required + { 'hrsh7th/cmp-nvim-lsp' }, -- Required + { 'L3MON4D3/LuaSnip' }, -- Required + }, + + }, + { + 'nvim-lualine/lualine.nvim', + requires = { 'nvim-tree/nvim-web-devicons', opt = true } + }, + { + "folke/persistence.nvim", + event = "BufReadPre", -- this will only start session saving when an actual file was opened + opts = { + } + } +} + +require("lazy").setup(plugins) diff --git a/nvim/lua/main/remaps.lua b/nvim/lua/main/remaps.lua new file mode 100644 index 0000000..bbf6ca2 --- /dev/null +++ b/nvim/lua/main/remaps.lua @@ -0,0 +1,2 @@ +vim.g.mapleader = " " +vim.keymap.set("n", "fv", vim.cmd.Ex) diff --git a/nvim/lua/plugin/fugitive.lua b/nvim/lua/plugin/fugitive.lua new file mode 100644 index 0000000..d3855f3 --- /dev/null +++ b/nvim/lua/plugin/fugitive.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "gs", vim.cmd.Git) diff --git a/nvim/lua/plugin/harpoon.lua b/nvim/lua/plugin/harpoon.lua new file mode 100644 index 0000000..204b04a --- /dev/null +++ b/nvim/lua/plugin/harpoon.lua @@ -0,0 +1,8 @@ +local mark = require("harpoon.mark") +local ui = require("harpoon.ui") + +vim.keymap.set("n", "ha", mark.add_file) +vim.keymap.set("n", "", ui.toggle_quick_menu) + +vim.keymap.set("n", "hn", function() ui.nav_next() end) +vim.keymap.set("n", "hp", function() ui.nav_prev() end) diff --git a/nvim/lua/plugin/init.lua b/nvim/lua/plugin/init.lua new file mode 100644 index 0000000..0dc65f3 --- /dev/null +++ b/nvim/lua/plugin/init.lua @@ -0,0 +1,14 @@ +require("plugin.telescope") +require("plugin.treesitter") +require("plugin.harpoon") +require("plugin.toggleterm") +require("plugin.yanky") +require("plugin.undotree") +require("plugin.fugitive") +require("plugin.todo") +require("plugin.trouble") +require("plugin.notify") +require("plugin.mason") +require("plugin.lspzero") +require("plugin.lualine") +require("plugin.persistence") diff --git a/nvim/lua/plugin/lspzero.lua b/nvim/lua/plugin/lspzero.lua new file mode 100644 index 0000000..196ebc2 --- /dev/null +++ b/nvim/lua/plugin/lspzero.lua @@ -0,0 +1,27 @@ +local lsp = require('lsp-zero').preset( + { + float_border = 'rounded', + call_servers = 'local', + configure_diagnostics = true, + setup_servers_on_start = true, + set_lsp_keymaps = false, + manage_nvim_cmp = { + set_sources = 'lsp', + set_basic_mappings = true, + set_extra_mappings = true, + use_luasnip = true, + set_format = true, + documentation_window = true, + } + } +) + +lsp.on_attach(function(client, bufnr) + -- see :help lsp-zero-keybindings + -- to learn the available actions + lsp.default_keymaps({ buffer = bufnr }) +end) + +vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]] + +lsp.setup() diff --git a/nvim/lua/plugin/lualine.lua b/nvim/lua/plugin/lualine.lua new file mode 100644 index 0000000..90e6db2 --- /dev/null +++ b/nvim/lua/plugin/lualine.lua @@ -0,0 +1 @@ +require('lualine').setup() diff --git a/nvim/lua/plugin/mason.lua b/nvim/lua/plugin/mason.lua new file mode 100644 index 0000000..e69de29 diff --git a/nvim/lua/plugin/notify.lua b/nvim/lua/plugin/notify.lua new file mode 100644 index 0000000..8996ae5 --- /dev/null +++ b/nvim/lua/plugin/notify.lua @@ -0,0 +1,3 @@ +vim.notify = require("notify") +-- require("telescope").load_extension("notify") +-- require('telescope').extensions.notify.notify({}) diff --git a/nvim/lua/plugin/persistence.lua b/nvim/lua/plugin/persistence.lua new file mode 100644 index 0000000..fa55ec6 --- /dev/null +++ b/nvim/lua/plugin/persistence.lua @@ -0,0 +1 @@ +vim.api.nvim_set_keymap("n", "qs", [[lua require("persistence").load()]], {}) diff --git a/nvim/lua/plugin/telescope.lua b/nvim/lua/plugin/telescope.lua new file mode 100644 index 0000000..21d2b60 --- /dev/null +++ b/nvim/lua/plugin/telescope.lua @@ -0,0 +1,19 @@ +local builtin = require('telescope.builtin') +vim.keymap.set('n', 'ff', builtin.find_files, {}) +vim.keymap.set('n', 'fg', builtin.git_files, {}) +vim.keymap.set('n', 'fs', builtin.live_grep, {}) +vim.keymap.set('n', 'fb', builtin.buffers, {}) + +local actions = require("telescope.actions") +local trouble = require("trouble.providers.telescope") + +local telescope = require("telescope") + +telescope.setup { + defaults = { + mappings = { + i = { [""] = trouble.open_with_trouble }, + n = { [""] = trouble.open_with_trouble }, + }, + }, +} diff --git a/nvim/lua/plugin/todo.lua b/nvim/lua/plugin/todo.lua new file mode 100644 index 0000000..5cd4c30 --- /dev/null +++ b/nvim/lua/plugin/todo.lua @@ -0,0 +1,15 @@ +vim.keymap.set("n", "]t", function() + require("todo-comments").jump_next() +end, { desc = "Next todo comment" }) + +vim.keymap.set("n", "[t", function() + require("todo-comments").jump_prev() +end, { desc = "Previous todo comment" }) + +-- You can also specify a list of valid jump keywords + +vim.keymap.set("n", "]t", function() + require("todo-comments").jump_next({keywords = { "ERROR", "WARNING" }}) +end, { desc = "Next error/warning todo comment" }) + +vim.keymap.set("n", "td", ":TodoTelescope") diff --git a/nvim/lua/plugin/toggleterm.lua b/nvim/lua/plugin/toggleterm.lua new file mode 100644 index 0000000..476e9cd --- /dev/null +++ b/nvim/lua/plugin/toggleterm.lua @@ -0,0 +1,6 @@ +require("toggleterm").setup { + open_mapping = [[]], + insert_mappings = true, + termina_mappings = true, + direction = "float" +} diff --git a/nvim/lua/plugin/treesitter.lua b/nvim/lua/plugin/treesitter.lua new file mode 100644 index 0000000..c66f626 --- /dev/null +++ b/nvim/lua/plugin/treesitter.lua @@ -0,0 +1,41 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "rust", "python", "javascript", "typescript" }, + + -- 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, + + -- List of parsers to ignore installing (for "all") + ignore_install = { "javascript" }, + + ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) + -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! + + highlight = { + enable = true, + + -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to + -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is + -- the name of the parser) + -- list of language that will be disabled + disable = { "c", "rust" }, + -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files + disable = function(lang, buf) + local max_filesize = 100 * 1024 -- 100 KB + local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + if ok and stats and stats.size > max_filesize then + return true + end + end, + + -- 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 = false, + }, +} diff --git a/nvim/lua/plugin/trouble.lua b/nvim/lua/plugin/trouble.lua new file mode 100644 index 0000000..7ceff42 --- /dev/null +++ b/nvim/lua/plugin/trouble.lua @@ -0,0 +1,6 @@ +vim.keymap.set("n", "xx", function() require("trouble").open() end) +vim.keymap.set("n", "xw", function() require("trouble").open("workspace_diagnostics") end) +vim.keymap.set("n", "xd", function() require("trouble").open("document_diagnostics") end) +vim.keymap.set("n", "xl", function() require("trouble").open("quickfix") end) +vim.keymap.set("n", "xq", function() require("trouble").open("loclist") end) +vim.keymap.set("n", "gR", function() require("trouble").open("lsp_references") end) diff --git a/nvim/lua/plugin/undotree.lua b/nvim/lua/plugin/undotree.lua new file mode 100644 index 0000000..b6b9276 --- /dev/null +++ b/nvim/lua/plugin/undotree.lua @@ -0,0 +1 @@ +vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) diff --git a/nvim/lua/plugin/yanky.lua b/nvim/lua/plugin/yanky.lua new file mode 100644 index 0000000..9549964 --- /dev/null +++ b/nvim/lua/plugin/yanky.lua @@ -0,0 +1,9 @@ +require("yanky").setup({ + highlight = { + on_put = true, + on_yank = true, + timer = 200, + }, +}) +require("telescope").load_extension("yank_history") +