diff --git a/i3config b/i3config index 6c4c804..3fcb31a 100644 --- a/i3config +++ b/i3config @@ -49,10 +49,10 @@ floating_modifier $mod tiling_drag modifier titlebar # start a terminal -bindsym $mod+Return exec alacritty +bindsym $mod+Return exec kitty # kill focused window -bindsym $mod+Shift+q kill +bindsym $mod+Shift+q [con_id="__focused__" class="^(?!thunderbird|Caprine|discord|Alacritty).*$"] kill # start dmenu (a program launcher) # A more modern dmenu replacement is rofi: @@ -225,6 +225,12 @@ for_window [class="dolphin"] floating enable for_window [class="Caprine"] floating enable move scratchpad for_window [class="discord"] floating enable move scratchpad for_window [class="thunderbird"] floating enable move scratchpad +for_window [class="Slack"] floating enable move scratchpad +for_window [class="zoom"] floating enable +for_window [title="Overview – Home Assistant"] floating enable +for_window [title="Outlook"] floating enable +for_window [title="Netflix"] floating enable +for_window [title="Welcome to Prime Video"] floating enable bindsym $mod+Shift+minus move scratchpad diff --git a/init.lua b/init.lua index 3a2eb7e..f605a51 100644 --- a/init.lua +++ b/init.lua @@ -80,10 +80,21 @@ require("lazy").setup({ "lewis6991/gitsigns.nvim", "nvim-treesitter/nvim-treesitter", "vim-test/vim-test", + "sindrets/diffview.nvim", + { + "windwp/nvim-autopairs", + event = "InsertEnter", + opts = {}, -- this is equalent to setup({}) function + }, }) +-- Stick buffer require("stickybuf").setup() + +-- LSP Status require("fidget").setup({}) + +-- Git gutter require("gitsigns").setup() -- Vim options @@ -122,6 +133,7 @@ local function on_attach(client, buffer) local keymap_opts = { buffer = buffer } + -- TODO: Register in which-key vim.keymap.set("n", "", vim.lsp.buf.definition, keymap_opts) vim.keymap.set("n", "gD", vim.lsp.buf.implementation, keymap_opts) vim.keymap.set("n", "", vim.lsp.buf.signature_help, keymap_opts) @@ -202,6 +214,14 @@ cmp.setup({ }, }) +-- Git +local neogit = require("neogit") +neogit.setup({ + integrations = { + diffview = true, + }, +}) + -- Folder tree local function open_nvim_tree(data) local directory = vim.fn.isdirectory(data.file) == 1 @@ -214,6 +234,20 @@ local function open_nvim_tree(data) require("nvim-tree.api").tree.open() end vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) +vim.api.nvim_create_autocmd("BufEnter", { + group = vim.api.nvim_create_augroup("NvimTreeClose", { clear = true }), + pattern = "NvimTree_*", + callback = function() + local layout = vim.api.nvim_call_function("winlayout", {}) + if + layout[1] == "leaf" + and vim.api.nvim_buf_get_option(vim.api.nvim_win_get_buf(layout[2]), "filetype") == "NvimTree" + and layout[3] == nil + then + vim.cmd("confirm quit") + end + end, +}) -- Comments require("nvim_comment").setup() @@ -233,7 +267,7 @@ require("scope").setup({ }) -- Keybinds -local builtin = require("telescope.builtin") +local telescope_builtin = require("telescope.builtin") local wk = require("which-key") wk.register({ @@ -241,16 +275,32 @@ wk.register({ name = "Open", t = { "terminal", "Open Terminal" }, }, + f = { + name = "Find", + f = { telescope_builtin.find_files, "Find files" }, + g = { telescope_builtin.live_grep, "Grep" }, + b = { telescope_builtin.buffers, "Find buffers" }, + h = { telescope_builtin.help_tags, "Find help tags" }, + }, + t = { + name = "Tree", + f = { "NvimTreeFindFile", "Focus current file in tree" }, + t = { require("nvim-tree.api").tree.toggle, "Toggle tree" }, + }, + g = { neogit.open, "Open git" }, + r = { + name = "Refresh", + d = { vim.diagnostic.reset, "Refresh diagnostic" }, + }, + b = { + name = "Buffer", + p = { "PinBuffer", "Pin buffer" }, + u = { "Unpin", "Unpin buffer" }, + }, }, { prefix = "" }) + vim.keymap.set("n", "", "bnext", {}) -vim.keymap.set("n", "", builtin.find_files, {}) -vim.keymap.set("n", "ff", builtin.find_files, {}) -vim.keymap.set("n", "fg", builtin.live_grep, {}) -vim.keymap.set("n", "fb", builtin.buffers, {}) -vim.keymap.set("n", "fh", builtin.help_tags, {}) -vim.keymap.set("n", "tt", require("nvim-tree.api").tree.toggle, {}) -vim.keymap.set("n", "og", require("neogit").open, {}) -vim.keymap.set("n", "tr", vim.diagnostic.reset, {}) +vim.keymap.set("n", "", telescope_builtin.find_files, {}) vim.keymap.set("t", "", "", {}) vim.keymap.set("n", "", function() if vim.bo.buftype ~= "nofile" and vim.bo.buftype ~= "terminal" then @@ -307,6 +357,7 @@ vim.g.clipboard = { vim.keymap.set("n", "c", '"+y') vim.keymap.set("n", "cc", '"+yy') +-- Language Syntax require("nvim-treesitter.configs").setup({ ensure_installed = { "c", "lua", "vim", "vimdoc", "query" }, auto_install = true, @@ -318,4 +369,5 @@ require("nvim-treesitter.configs").setup({ }, }) +-- Tests vim.g["test#strategy"] = "neovim" diff --git a/settings.json b/settings.json index 5c8bd4e..166c43f 100644 --- a/settings.json +++ b/settings.json @@ -41,6 +41,5 @@ "workbench.iconTheme": "catppuccin-macchiato", "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "window.zoomLevel": 1 + } }