From a39544b93d08db00fe54b7e556d9a462fcb278ca Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Thu, 4 Jan 2024 05:24:55 +0100 Subject: [PATCH] Change a lot of neovim stuff and remove some outdated firefox profiles --- home/features/cli/fish/config.fish | 4 + home/features/desktop/discord/default.nix | 2 +- home/features/desktop/firefox/default.nix | 39 ++---- home/features/desktop/firefox/icons/asana.png | Bin 423 -> 0 bytes .../desktop/firefox/icons/clockodo.png | Bin 21002 -> 0 bytes .../features/desktop/firefox/icons/gitlab.png | Bin 19394 -> 0 bytes home/features/neovim/config/lazy-lock.json | 3 +- .../neovim/config/lua/my/abbreviations/fp.lua | 1 + .../config/lua/my/abbreviations/init.lua | 1 - .../neovim/config/lua/my/helpers/theme.lua | 15 --- .../my/helpers/{wrapMovement.lua => wrap.lua} | 0 .../config/lua/my/plugins/lspconfig.lua | 50 +------- .../config/lua/my/plugins/themes/bluloco.lua | 4 +- .../lua/my/plugins/themes/catppuccin.lua | 4 +- .../config/lua/my/plugins/themes/rosepine.lua | 4 +- .../features/neovim/config/lua/my/tempest.lua | 14 ++ home/features/neovim/default.nix | 121 +++++++++++------- modules/common/korora-lua.nix | 2 +- 18 files changed, 119 insertions(+), 145 deletions(-) delete mode 100644 home/features/desktop/firefox/icons/asana.png delete mode 100644 home/features/desktop/firefox/icons/clockodo.png delete mode 100644 home/features/desktop/firefox/icons/gitlab.png delete mode 100644 home/features/neovim/config/lua/my/helpers/theme.lua rename home/features/neovim/config/lua/my/helpers/{wrapMovement.lua => wrap.lua} (100%) diff --git a/home/features/cli/fish/config.fish b/home/features/cli/fish/config.fish index 091e12c..803aa91 100644 --- a/home/features/cli/fish/config.fish +++ b/home/features/cli/fish/config.fish @@ -31,6 +31,10 @@ function fish_user_key_bindings bind -M default \cx "clear && commandline -f repaint" bind -M insert \cx "clear && commandline -f repaint" # }}} + # {{{ C-z to run `fg` + bind -M default \cz "fg && commandline -f repaint" + bind -M insert \cz "fg && commandline -f repaint" + # }}} # {{{ C-enter to run command through less bind -M default \e\[13\;2u "commandline -a ' | less' && commandline -f execute" bind -M insert \e\[13\;2u "commandline -a ' | less' && commandline -f execute" diff --git a/home/features/desktop/discord/default.nix b/home/features/desktop/discord/default.nix index f3e240a..04212f2 100644 --- a/home/features/desktop/discord/default.nix +++ b/home/features/desktop/discord/default.nix @@ -23,7 +23,7 @@ in home.packages = [ discocss ]; xdg.configFile."discocss/custom.css".source = config.satellite.theming.get themeMap; - # {{{ Storage + # {{{ Storage # Clean cache older than 10 days systemd.user.tmpfiles.rules = [ "d ${config.xdg.configHome}/discord/Cache/Cache_Data - - - 10d" diff --git a/home/features/desktop/firefox/default.nix b/home/features/desktop/firefox/default.nix index cba446a..9c0ebc6 100644 --- a/home/features/desktop/firefox/default.nix +++ b/home/features/desktop/firefox/default.nix @@ -266,38 +266,13 @@ in # {{{ Standalone "apps" which actually run inside a browser. apps.extensions = extensions; apps.app = { - # {{{ Job stuff - # {{{ Asana - asana = { - url = "https://app.asana.com/"; - icon = ./icons/asana.png; - displayName = "Asana"; - id = 1; - }; - # }}} - # {{{ Clockodo - clockodo = { - url = "https://my.clockodo.com/en/"; - icon = ./icons/clockodo.png; - displayName = "Clockodo"; - id = 2; - }; - # }}} - # }}} - # {{{ Gitlab - gitlab = { - url = "https://gitlab.com"; - icon = ./icons/gitlab.png; - displayName = "Gitlab"; - id = 3; - }; - # }}} + # TODO: auto increment ids # {{{ Desmos desmos = { url = "https://www.desmos.com/calculator"; icon = ./icons/desmos.png; displayName = "Desmos"; - id = 4; + id = 1; }; # }}} # {{{ Monkey type @@ -305,7 +280,7 @@ in url = "https://monkeytype.com/"; icon = ./icons/monkeytype.png; displayName = "Monkeytype"; - id = 5; + id = 2; }; # }}} # {{{ Syncthing @@ -313,13 +288,19 @@ in url = "http://localhost:8384/"; icon = ./icons/syncthing.png; displayName = "Syncthing"; - id = 6; + id = 3; }; # }}} }; # }}} }; + # TODO: uncomment when using newer version + # stylix.targets.firefox = { + # enable = true; + # profileNames = [ "adrielus" "desmos" "monkey-type" "syncthing" ]; + # }; + # {{{ Make firefox the default # Use firefox as the default browser to open stuff. xdg.mimeApps.defaultApplications = { diff --git a/home/features/desktop/firefox/icons/asana.png b/home/features/desktop/firefox/icons/asana.png deleted file mode 100644 index e47a612b4f667fc69838215576e036414b1116b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 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 " .. lhs .. " " .. rhs) end diff --git a/home/features/neovim/config/lua/my/helpers/theme.lua b/home/features/neovim/config/lua/my/helpers/theme.lua deleted file mode 100644 index 39c595f..0000000 --- a/home/features/neovim/config/lua/my/helpers/theme.lua +++ /dev/null @@ -1,15 +0,0 @@ -local theme = vim.g.nix_theme - -local M = {} -M.theme = theme - -function M.theme_contains(name) - return string.find(theme.name, name) ~= nil -end - -function M.variant(name) - -- +1 for 1-indexed strings and +1 for the space between name and variant - return string.lower(string.sub(theme.name, string.len(name) + 2)) -end - -return M diff --git a/home/features/neovim/config/lua/my/helpers/wrapMovement.lua b/home/features/neovim/config/lua/my/helpers/wrap.lua similarity index 100% rename from home/features/neovim/config/lua/my/helpers/wrapMovement.lua rename to home/features/neovim/config/lua/my/helpers/wrap.lua diff --git a/home/features/neovim/config/lua/my/plugins/lspconfig.lua b/home/features/neovim/config/lua/my/plugins/lspconfig.lua index fff0125..88b088a 100644 --- a/home/features/neovim/config/lua/my/plugins/lspconfig.lua +++ b/home/features/neovim/config/lua/my/plugins/lspconfig.lua @@ -9,38 +9,11 @@ local lspconfig = { "folke/neodev.nvim", config = true, }, - "simrat39/rust-tools.nvim", }, cond = runtime.blacklist("vscode"), } -local M = { - lspconfig, - { - "smjonas/inc-rename.nvim", - cmd = "IncRename", - opts = { - input_buffer_type = "dressing", - }, - cond = runtime.blacklist("vscode"), - }, -} - -function M.on_attach(_, _) end -function M.legacy_on_attach(_, bufnr) - -- {{{ Keymap helpers - local opts = function(desc) - return { silent = true, desc = desc, buffer = bufnr } - end - -- }}} - -- {{{ Code actions - local expropts = opts("[R]e[n]ame") - expropts.expr = true - vim.keymap.set("n", "rn", function() - return ":IncRename " .. vim.fn.expand("") - end, expropts) - -- }}} -end +local M = lspconfig -- {{{ General server config ---@type lspconfig.options @@ -147,32 +120,17 @@ end -- }}} -- {{{ Main config function function lspconfig.config() - -- diagnostics_icons() - -- -- {{{ Change on-hover borders vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "single" }) vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "single" }) - -- -- }}} + -- }}} local capabilities = M.capabilities() - -- Setup basic language servers for lsp, details in pairs(servers) do - require("lspconfig")[lsp].setup({ - on_attach = details.on_attach, - settings = details.settings, -- Specific per-language settings - cmd = details.cmd, - capabilities = capabilities, - }) + details.capabilities = capabilities + require("lspconfig")[lsp].setup(details) end - - vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("UserLspConfig", {}), - callback = function(ev) - local client = vim.lsp.get_client_by_id(ev.data.client_id) - M.legacy_on_attach(client, ev.buf) - end, - }) end --}}} diff --git a/home/features/neovim/config/lua/my/plugins/themes/bluloco.lua b/home/features/neovim/config/lua/my/plugins/themes/bluloco.lua index b6b942d..4469094 100644 --- a/home/features/neovim/config/lua/my/plugins/themes/bluloco.lua +++ b/home/features/neovim/config/lua/my/plugins/themes/bluloco.lua @@ -1,4 +1,4 @@ -local H = require("my.helpers.theme") +local H = require("my.tempest") local M = { "uloco/bluloco.nvim", @@ -12,7 +12,7 @@ function M.config() bluloco.setup({ transparent = H.theme.opacity.terminal < 1.0, - style = H.variant("Bluloco"), + style = H.theme_variant("Bluloco"), }) vim.cmd("colorscheme bluloco") diff --git a/home/features/neovim/config/lua/my/plugins/themes/catppuccin.lua b/home/features/neovim/config/lua/my/plugins/themes/catppuccin.lua index fcacbf3..73e60e9 100644 --- a/home/features/neovim/config/lua/my/plugins/themes/catppuccin.lua +++ b/home/features/neovim/config/lua/my/plugins/themes/catppuccin.lua @@ -1,4 +1,4 @@ -local H = require("my.helpers.theme") +local H = require("my.tempest") local M = { "catppuccin/nvim", @@ -9,7 +9,7 @@ local M = { function M.config() local catppuccin = require("catppuccin") - vim.g.catppuccin_flavour = H.variant("Catppuccin") + vim.g.catppuccin_flavour = H.theme_variant("Catppuccin") catppuccin.setup({ transparent_background = H.theme.transparent.terminal, diff --git a/home/features/neovim/config/lua/my/plugins/themes/rosepine.lua b/home/features/neovim/config/lua/my/plugins/themes/rosepine.lua index 407ac1f..f053597 100644 --- a/home/features/neovim/config/lua/my/plugins/themes/rosepine.lua +++ b/home/features/neovim/config/lua/my/plugins/themes/rosepine.lua @@ -1,4 +1,4 @@ -local H = require("my.helpers.theme") +local H = require("my.tempest") local M = { "rose-pine/neovim", @@ -8,7 +8,7 @@ local M = { } function M.config() - local variant = H.variant("Rosé Pine") + local variant = H.theme_variant("Rosé Pine") if variant == "dawn" then vim.o.background = "light" diff --git a/home/features/neovim/config/lua/my/tempest.lua b/home/features/neovim/config/lua/my/tempest.lua index 5b64789..52536b8 100644 --- a/home/features/neovim/config/lua/my/tempest.lua +++ b/home/features/neovim/config/lua/my/tempest.lua @@ -306,5 +306,19 @@ function M.prepareLazySpec(spec) end end -- }}} +-- {{{ Theming +local theme = vim.g.nix_theme + +M.theme = theme + +function M.theme_contains(name) + return string.find(theme.name, name) ~= nil +end + +function M.theme_variant(name) + -- +1 for 1-indexed strings and +1 for the space between name and variant + return string.lower(string.sub(theme.name, string.len(name) + 2)) +end +-- }}} return M diff --git a/home/features/neovim/default.nix b/home/features/neovim/default.nix index 0621b2a..a2bd2a3 100644 --- a/home/features/neovim/default.nix +++ b/home/features/neovim/default.nix @@ -14,8 +14,8 @@ let # {{{ Pre-plugin config pre = { # {{{ General options - "0:general-options".vim = { - g = { + "0:general-options" = { + vim.g = { # Disable filetype.vim do_filetype_lua = true; did_load_filetypes = false; @@ -24,7 +24,7 @@ let mapleader = " "; }; - opt = { + vim.opt = { # Basic options joinspaces = false; # No double spaces with join (mapped to qj in my config) list = true; # Show some invisible characters @@ -67,12 +67,13 @@ let # }}} }; - # Disable pseudo-transparency; + # {{{Disable pseudo-transparency; autocmds = { event = "FileType"; group = "WinblendSettings"; action.vim.opt.winblend = 0; }; + # }}} }; # }}} # {{{ Misc keybinds @@ -135,7 +136,7 @@ let (nmap "Q" ":wqa" "Save all files and [q]uit") (nmap "rw" ":%s//" "[R]eplace [w]ord in file") (nmap "sw" - (lua ''require("my.helpers.wrapMovement").toggle'') + (lua ''require("my.helpers.wrap").toggle'') "toggle word [w]rap") # }}} ]; @@ -156,7 +157,7 @@ let event = "FileType"; pattern = [ "markdown" "typst" "tex" ]; group = "EnableWrapMovement"; - action = lua ''require("my.helpers.wrapMovement").enable''; + action = lua ''require("my.helpers.wrap").enable''; } # }}} ]; @@ -177,51 +178,61 @@ let } ]; # }}} - # {{{ Lsp on-attach - "3:lsp-on-attach".autocmds = { - event = "LspAttach"; - group = "UserLspConfig"; - action = - let nmap = mapping: action: desc: - nlib.nmap mapping - (lua "vim.lsp.buf.${action}") - desc; - in - { - mkContext = event: { - bufnr = lua "${event}.buf"; - client = lua /* lua */ - "vim.lsp.get_client_by_id(${event}.data.client_id)"; + # {{{ Lsp settings + "3:lsp-settings" = { + # {{{ Change lsp on-hover borders + vim.lsp.handlers."textDocument/hover" = lua + ''vim.lsp.with(vim.lsp.handlers.hover, { border = "single" })''; + vim.lsp.handlers."textDocument/signatureHelp" = lua + ''vim.lsp.with(vim.lsp.handlers.signature_help, { border = "single" })''; + # }}} + # {{{ Create on-attach keybinds + autocmds = { + event = "LspAttach"; + group = "UserLspConfig"; + action = + let nmap = mapping: action: desc: + nlib.nmap mapping + (lua "vim.lsp.buf.${action}") + desc; + in + { + mkContext = event: { + bufnr = lua "${event}.buf"; + client = lua /* lua */ + "vim.lsp.get_client_by_id(${event}.data.client_id)"; + }; + keys = [ + (nlib.nmap "li" "LspInfo" "[L]sp [i]nfo") + (nmap "gd" "definition" "[G]o to [d]efinition") + (nmap "gi" "implementation" "[G]o to [i]mplementation") + (nmap "gr" "references" "[G]o to [r]eferences") + (nmap "L" "signature_help" "Signature help") + (nmap "c" "code_action" "[C]ode actions") + (keymap "v" "c" ":'<,'> lua vim.lsp.buf.range_code_action()" "[C]ode actions") + (nmap "wa" "add_workspace_folder" "[W]orkspace [A]dd Folder") + (nmap "wr" "remove_workspace_folder" "[W]orkspace [R]emove Folder") + (nlib.nmap "wl" + (thunk /* lua */ '' + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + '') "[W]orkspace [L]ist Folders") + ]; + callback = { + cond = ctx: lua '' + return ${ctx}.client.supports_method("textDocument/hover") + ''; + keys = nmap "K" "hover" "Hover"; + }; }; - keys = [ - (nlib.nmap "li" "LspInfo" "[L]sp [i]nfo") - (nmap "gd" "definition" "[G]o to [d]efinition") - (nmap "gi" "implementation" "[G]o to [i]mplementation") - (nmap "gr" "references" "[G]o to [r]eferences") - (nmap "L" "signature_help" "Signature help") - (nmap "c" "code_action" "[C]ode actions") - (keymap "v" "c" ":'<,'> lua vim.lsp.buf.range_code_action()" "[C]ode actions") - (nmap "wa" "add_workspace_folder" "[W]orkspace [A]dd Folder") - (nmap "wr" "remove_workspace_folder" "[W]orkspace [R]emove Folder") - (nlib.nmap "wl" - (thunk /* lua */ '' - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - '') "[W]orkspace [L]ist Folders") - ]; - callback = { - cond = ctx: lua '' - return ${ctx}.client.supports_method("textDocument/hover") - ''; - keys = nmap "K" "hover" "Hover"; - }; - }; + }; + # }}} }; # }}} # {{{ Neovide config "4:configure-neovide" = { cond = whitelist "neovide"; vim.g = { - neovide_transparency = lua ''require("my.helpers.theme").theme.opacity.applications''; + neovide_transparency = lua ''D.tempest.theme.opacity.applications''; neovide_cursor_animation_length = 0.04; neovide_cursor_animate_in_insert_mode = false; }; @@ -231,7 +242,7 @@ let "5:language-specific-settings".autocmds = [{ event = "FileType"; group = "UserNixSettings"; - pattern = "*.nix"; + pattern = "nix"; action = { vim.opt.commentstring = "# %s"; keys = { @@ -1038,6 +1049,26 @@ let config = importFrom ./plugins/cmp.lua "config"; }; # }}} + # {{{ inc-rename + inc-rename = { + package = "smjonas/inc-rename.nvim"; + dependencies.lua = [ self.lazy.dressing.package ]; + + cond = blacklist "vscode"; + event = "BufReadPost"; + + opts.input_buffer_type = "dressing"; + config.autocmds = { + event = "LspAttach"; + group = "CreateIncRenameKeybinds"; + action.keys = { + mapping = "rn"; + action = ":IncRename "; + desc = "Incremenetal [r]e[n]ame"; + }; + }; + }; + # }}} # }}} # {{{ language support # {{{ haskell support diff --git a/modules/common/korora-lua.nix b/modules/common/korora-lua.nix index 6cc4b65..8a95dd8 100644 --- a/modules/common/korora-lua.nix +++ b/modules/common/korora-lua.nix @@ -86,7 +86,7 @@ let mkAttrName = s: let # These list *are* incomplete - forbiddenChars = lib.stringToCharacters "<>[]{}()'\".,:;"; + forbiddenChars = lib.stringToCharacters "<>[]{}()'\".,:;\\/"; keywords = [ "if" "then" "else" "do" "for" "local" "" ]; in if lib.any (c: lib.hasInfix c s) forbiddenChars || lib.elem s keywords then