diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 6af8c4a..712e17e 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -2,6 +2,7 @@ require('user.plugins') -- First to install packer --require('plugins.nord') require('user.settings') require('user.keys') +--require('plugins.rust') require('plugins.lspconfig') require('plugins.null-ls') require('plugins.cmp') diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua index 31168e2..25a423c 100644 --- a/.config/nvim/lua/plugins/cmp.lua +++ b/.config/nvim/lua/plugins/cmp.lua @@ -1,4 +1,6 @@ vim.opt.completeopt = {'menu', 'menuone', 'noselect', 'preview'} +vim.opt.shortmess = vim.opt.shortmess + { c = true} +vim.api.nvim_set_option('updatetime', 1000) require('luasnip.loaders.from_vscode').lazy_load() @@ -17,10 +19,11 @@ cmp.setup({ {name = 'path'}, {name = 'nvim_lsp'}, {name = 'nvim_lsp_signature_help'}, - {name = 'buffer'}, - {name = 'luasnip'}, + {name = 'buffer', keyword_length = 2}, + {name = 'luasnip', keyword_length = 2}, }, window = { + completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered() }, formatting = { @@ -28,10 +31,10 @@ cmp.setup({ format = function(entry, item) local menu_icon = { nvim_lsp = 'λ', - nvim_lsp_signature_help = 'λ', + nvim_lsp_signature_help = 'λ“', luasnip = '⋗', buffer = 'Ω', - path = '🖫', + path = '»', } item.menu = menu_icon[entry.source.name] diff --git a/.config/nvim/lua/plugins/dap.lua b/.config/nvim/lua/plugins/dap.lua index 48dcb26..f614a72 100644 --- a/.config/nvim/lua/plugins/dap.lua +++ b/.config/nvim/lua/plugins/dap.lua @@ -1,5 +1,3 @@ - - require("dap-vscode-js").setup({ -- node_path = "node", -- Path of node executable. Defaults to $NODE_PATH, and then "node" -- debugger_path = "(runtimedir)/site/pack/packer/opt/vscode-js-debug", -- Path to vscode-js-debug installation. @@ -10,8 +8,10 @@ require("dap-vscode-js").setup({ -- log_console_level = vim.log.levels.ERROR -- Logging level for output to console. Set to false to disable console output. }) +local dap = require('dap') + for _, language in ipairs({ "typescript", "javascript" }) do - require("dap").configurations[language] = { + dap.configurations[language] = { { type = "pwa-node", request = "attach", @@ -22,8 +22,39 @@ for _, language in ipairs({ "typescript", "javascript" }) do } end +dap.adapters.codelldb = { + type = 'server', + port = "${port}", + executable = { + command = '/usr/bin/codelldb', + args = {"--port", "${port}"}, + } +} + +dap.configurations.rust = { + { + name = "Rust debug", + type = "codelldb", + request = "launch", + program = function() + vim.fn.jobstart('cargo build') + -- cargo metadata --no-deps --format-version 1 | jq -r '.target_directory' + -- cargo metadata --no-deps --format-version 1 | jq -r '.packages[].targets[] | select( .kind | map(. == "bin") | any ) | .name' + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/target/debug/', 'file') + end, + cwd = '${workspaceFolder}', + stopOnEntry = true, + showDisassembly = "never", + }, +} + local dapui = require('dapui') dapui.setup() require("nvim-dap-virtual-text").setup() vim.keymap.set('n', 'du', dapui.toggle) +vim.keymap.set('n', 'b', dap.toggle_breakpoint) +vim.keymap.set('n', 'c', dap.continue) +vim.keymap.set('n', 'o', dap.step_over) +vim.keymap.set('n', 'i', dap.step_into) +vim.keymap.set('n', 'q', dap.terminate) diff --git a/.config/nvim/lua/plugins/lspconfig.lua b/.config/nvim/lua/plugins/lspconfig.lua index 9687c51..3fe35e6 100644 --- a/.config/nvim/lua/plugins/lspconfig.lua +++ b/.config/nvim/lua/plugins/lspconfig.lua @@ -30,7 +30,27 @@ require'lspconfig'.tsserver.setup({ includeInlayFunctionLikeReturnTypeHints = true, includeInlayEnumMemberValueHints = true, } + }, + ["rust-analyzer"] = { + checkOnSave = { + command = 'clippy' + } } } }) +require'lspconfig'.rust_analyzer.setup { + settings = { + ['rust-analyzer'] = { + inlayHints = { + includeInlayParameterNameHints = 'all', + includeInlayParameterNameHintsWhenArgumentMatchesName = false, + includeInlayFunctionParameterTypeHints = true, + includeInlayVariableTypeHints = true, + includeInlayPropertyDeclarationTypeHints = true, + includeInlayFunctionLikeReturnTypeHints = true, + includeInlayEnumMemberValueHints = true, + } + }, + }, +} diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua index 4eee009..64c8f2c 100644 --- a/.config/nvim/lua/plugins/treesitter.lua +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -1,6 +1,6 @@ require'nvim-treesitter.configs'.setup { -- A list of parser names, or "all" - ensure_installed = { "typescript", "lua", "rust" }, + ensure_installed = { "typescript", "lua", "rust", "toml" }, -- Install parsers synchronously (only applied to `ensure_installed`) sync_install = false, diff --git a/.config/nvim/lua/user/plugins.lua b/.config/nvim/lua/user/plugins.lua index 7986e86..5ea688e 100644 --- a/.config/nvim/lua/user/plugins.lua +++ b/.config/nvim/lua/user/plugins.lua @@ -90,6 +90,7 @@ return require('packer').startup(function() } use 'mfussenegger/nvim-dap' + use 'mfussenegger/nvim-jdtls' -- Java use { "rcarriga/nvim-dap-ui", requires = {"mfussenegger/nvim-dap"} } use { "mxsdev/nvim-dap-vscode-js", requires = {"mfussenegger/nvim-dap"} } use { diff --git a/.config/nvim/lua/user/settings.lua b/.config/nvim/lua/user/settings.lua index d4b40d8..7f6e1dc 100644 --- a/.config/nvim/lua/user/settings.lua +++ b/.config/nvim/lua/user/settings.lua @@ -63,3 +63,6 @@ endfunction ]] vim.cmd[[command! -nargs=* -bang RG call RipgrepFzf(, 0)]] + +-- Rust +vim.g.rustfmt_autosave = 1 diff --git a/.config/nvim/plugin/packer_compiled.lua b/.config/nvim/plugin/packer_compiled.lua index 8807baa..8a1d64c 100644 --- a/.config/nvim/plugin/packer_compiled.lua +++ b/.config/nvim/plugin/packer_compiled.lua @@ -209,6 +209,11 @@ _G.packer_plugins = { path = "/home/patrick/.local/share/nvim/site/pack/packer/start/nvim-dap-vscode-js", url = "https://github.com/mxsdev/nvim-dap-vscode-js" }, + ["nvim-jdtls"] = { + loaded = true, + path = "/home/patrick/.local/share/nvim/site/pack/packer/start/nvim-jdtls", + url = "https://github.com/mfussenegger/nvim-jdtls" + }, ["nvim-lspconfig"] = { loaded = true, path = "/home/patrick/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", @@ -234,6 +239,11 @@ _G.packer_plugins = { path = "/home/patrick/.local/share/nvim/site/pack/packer/start/plenary.nvim", url = "https://github.com/nvim-lua/plenary.nvim" }, + ["rust-tools.nvim"] = { + loaded = true, + path = "/home/patrick/.local/share/nvim/site/pack/packer/start/rust-tools.nvim", + url = "https://github.com/simrat39/rust-tools.nvim" + }, ["rust.vim"] = { loaded = true, path = "/home/patrick/.local/share/nvim/site/pack/packer/start/rust.vim", diff --git a/.config/waybar/config b/.config/waybar/config index 3573b4e..6f4378c 100644 --- a/.config/waybar/config +++ b/.config/waybar/config @@ -128,13 +128,6 @@ "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name }, - "custom/headset": { - "format": "  {}", - "on-click": "$HOME/.config/waybar/connect_headset.sh", - "interval": 10, - "return-type": "json", - "exec": "$HOME/.config/waybar/check_headset.sh" - }, "custom/separator": { "format": "", "tooltip": false diff --git a/.tmux/plugins/nord-tmux b/.tmux/plugins/nord-tmux index 4e2dc2a..6cc353d 160000 --- a/.tmux/plugins/nord-tmux +++ b/.tmux/plugins/nord-tmux @@ -1 +1 @@ -Subproject commit 4e2dc2a5065f5e8e67366700f803c733682e8f8c +Subproject commit 6cc353def1121c94bc6717dbc6f5a97af41f8e55 diff --git a/.tmux/plugins/tmux-sensible b/.tmux/plugins/tmux-sensible index e91b178..25cb91f 160000 --- a/.tmux/plugins/tmux-sensible +++ b/.tmux/plugins/tmux-sensible @@ -1 +1 @@ -Subproject commit e91b178ff832b7bcbbf4d99d9f467f63fd1b76b5 +Subproject commit 25cb91f42d020f675bb0a2ce3fbd3a5d96119efa diff --git a/.tmux/plugins/tpm b/.tmux/plugins/tpm index 60a36d6..99469c4 160000 --- a/.tmux/plugins/tpm +++ b/.tmux/plugins/tpm @@ -1 +1 @@ -Subproject commit 60a36d6f7adddfb68d68349dce3081e7d5c4d4ab +Subproject commit 99469c4a9b1ccf77fade25842dc7bafbc8ce9946 diff --git a/.zshrc b/.zshrc index 2f38b86..53c1e5a 100644 --- a/.zshrc +++ b/.zshrc @@ -86,7 +86,7 @@ fi export LANG=en_GB.UTF-8 export LC_CTYPE=en_GB.UTF-8 -export EDITOR='vim' +export EDITOR='nvim' # FZF export FZF_DEFAULT_COMMAND='fd --type f' @@ -100,3 +100,10 @@ export _JAVA_AWT_WM_NONREPARENTING=1 # tabtab source for packages # uninstall by removing these lines [[ -f ~/.config/tabtab/zsh/__tabtab.zsh ]] && . ~/.config/tabtab/zsh/__tabtab.zsh || true + +# Let GPG know which TTY to send password question to +export GPG_TTY=$(tty) + +# Add JBang to environment +alias j!=jbang +export PATH="$HOME/.jbang/bin:$PATH"