diff --git a/configs/dotfiles/espanso/bin/get_login b/configs/dotfiles/espanso/bin/get_login index c253d8f..1f537eb 100755 --- a/configs/dotfiles/espanso/bin/get_login +++ b/configs/dotfiles/espanso/bin/get_login @@ -1,19 +1,6 @@ #!/usr/bin/env bash set -euo pipefail - -# 1) load your shell exports if not already present: -#if [[ -z "${BW_SESSION:-}" ]]; then - #[[ -f "$HOME/.bashrc" ]] && source "$HOME/.bashrc" - #[[ -f "$HOME/.profile" ]] && source "$HOME/.profile" -#fi source ~/.local/share/sunhat/defaults/bash/api_keys - -# 2) if still empty, unlock once and export: -#if [[ -z "${BW_SESSION:-}" ]]; then - #export BW_SESSION=$(bw unlock --raw) -#fi - -# 3) fetch and print userpass -printf '%s\t%s\n' \ +printf '%s\t%s' \ "$(bw --session "$BW_SESSION" get username "$1")" \ "$(bw --session "$BW_SESSION" get password "$1")" diff --git a/configs/dotfiles/espanso/match/base.yml b/configs/dotfiles/espanso/match/base.yml index ec03e92..24a473e 100644 --- a/configs/dotfiles/espanso/match/base.yml +++ b/configs/dotfiles/espanso/match/base.yml @@ -77,19 +77,14 @@ matches: - trigger: "nextserver" replace: "'use server';\n\nconst Page = () => {\n\n};\n\nexport { Page };" - #- trigger: ":adm" - #replace: "cog\\administrator\tInfoTech-4193\n" - - - trigger: ":adm" - replace: "{{output}}" + - trigger: ":]]" + replace: "{{output}}\n" vars: - name: output type: shell params: cmd: "~/.config/espanso/bin/get_login be3e756a-f18d-4bff-8f87-38ced7876eee" shell: bash - trim: true - debug: false # Frequent Misspellings - trigger: "yoututbe" diff --git a/configs/dotfiles/forge/config/windows.json b/configs/dotfiles/forge/config/windows.json index eb4b694..29db438 100644 --- a/configs/dotfiles/forge/config/windows.json +++ b/configs/dotfiles/forge/config/windows.json @@ -1,9 +1,44 @@ { "overrides": [ + { + "wmClass": "org.gnome.Shell.Extensions", + "wmTitle": "Forge Settings", + "mode": "float" + }, { "wmClass": "jetbrains-toolbox", "mode": "float" }, + { + "wmClass": "jetbrains-goland", + "wmTitle": "splash", + "mode": "float" + }, + { + "wmClass": "jetbrains-webstorm", + "wmTitle": "splash", + "mode": "float" + }, + { + "wmClass": "jetbrains-phpstorm", + "wmTitle": "splash", + "mode": "float" + }, + { + "wmClass": "jetbrains-datagrip", + "wmTitle": "splash", + "mode": "float" + }, + { + "wmClass": "jetbrains-rubymine", + "wmTitle": "splash", + "mode": "float" + }, + { + "wmClass": "jetbrains-idea", + "wmTitle": "splash", + "mode": "float" + }, { "wmClass": "Com.github.amezin.ddterm", "mode": "float" @@ -24,6 +59,11 @@ "wmClass": "org.gnome.Calculator", "mode": "float" }, + { + "wmClass": "gnome-terminal-server", + "wmTitle": "Preferences – General", + "mode": "float" + }, { "wmClass": "gnome-terminal-preferences", "mode": "float" @@ -37,36 +77,64 @@ "mode": "float" }, { - "wmClass": "mpv", + "wmClass": "firefox", + "wmTitle": "About Mozilla Firefox", + "mode": "float" + }, + { + "wmClass": "firefox", + "wmTitle": "!Mozilla Firefox", + "mode": "float" + }, + { + "wmClass": "org.mozilla.firefox.desktop", + "wmTitle": "About Mozilla Firefox", + "mode": "float" + }, + { + "wmClass": "org.mozilla.firefox.desktop", + "wmTitle": "!Mozilla Firefox", + "mode": "float" + }, + { + "wmClass": "thunderbird", + "wmTitle": "About Mozilla Thunderbird", + "mode": "float" + }, + { + "wmClass": "thunderbird", + "wmTitle": "!Mozilla Thunderbird", + "mode": "float" + }, + { + "wmClass": "org.mozilla.Thunderbird.desktop", + "wmTitle": "About Mozilla Thunderbird", + "mode": "float" + }, + { + "wmClass": "org.mozilla.Thunderbird.desktop", + "wmTitle": "!Mozilla Thunderbird", + "mode": "float" + }, + { + "wmClass": "evolution-alarm-notify", + "mode": "float" + }, + { + "wmClass": "variety", + "mode": "float" + }, + { + "wmClass": "update-manager", "mode": "float" }, { "wmClass": "Bitwarden", "mode": "float" }, - { - "wmClass": "Hidamari", - "mode": "float" - }, - { - "wmClass": "com.mattjakeman.ExtensionManager", - "mode": "float" - }, - { - "wmClass": "Cider", - "mode": "float" - }, - { - "wmClass": "Ulauncher", - "mode": "float" - }, { "wmClass": "com.nextcloud.desktopclient.nextcloud", "mode": "float" - }, - { - "wmClass": "Emulator", - "mode": "float" } ] } \ No newline at end of file diff --git a/configs/dotfiles/ghostty/config b/configs/dotfiles/ghostty/config index 9511962..3c88c70 100644 --- a/configs/dotfiles/ghostty/config +++ b/configs/dotfiles/ghostty/config @@ -3,9 +3,9 @@ theme = tokyonight_moon font-family = "VictorMono Nerd Font Mono" -font-family-bold = "VictorMono Nerd Font Mono, Bold" -font-family-italic = "VictorMono Nerd Font Mono, Regular Italic" -font-family-bold-italic = "VictorMono Nerd Font Mono, Bold Italic" +#font-family-bold = "VictorMono Nerd Font Mono, Bold" +#font-family-italic = "VictorMono Nerd Font Mono, Regular Italic" +#font-family-bold-italic = "VictorMono Nerd Font Mono, Bold Italic" font-size = 15 background-opacity = 0.92 background-blur = true diff --git a/configs/dotfiles/hyprland/laptop/waybar/config b/configs/dotfiles/hyprland/laptop/waybar/config deleted file mode 100644 index 6fed958..0000000 --- a/configs/dotfiles/hyprland/laptop/waybar/config +++ /dev/null @@ -1,161 +0,0 @@ -{ - "layer": "top", // Waybar at top layer - "position": "top", // Waybar position (top|bottom|left|right) - "height": 30, // Waybar height (to be removed for auto height) - "width": 1900, // Waybar width - "spacing": 4, // Gaps between modules (4px) - // Choose the order of the modules - "modules-left": ["hyprland/workspaces", "sway/mode", "sway/scratchpad", "custom/media"], - "modules-center": [ - "hyprland/window": { - "seperate-outputs": true - } - ], - "modules-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "sway/language", "battery", "battery#bat2", "clock", "tray"], - // Modules configuration - "hyprland/workspaces": { - "all-outputs": true, - "on-scroll-up": "hyprctl dispatch workspace e+1", - "on-scroll-down": "hyprctl dispatch workspace e-1", - "format": "{name}: {icon}", - "format-icons": { - "1": "", - "2": "", - "3": "", - "4": "", - "5": "", - "urgent": "", - "focused": "", - "default": "" - } - }, - "sway/mode": { - "format": "{}" - }, - "sway/scratchpad": { - "format": "{icon} {count}", - "show-empty": false, - "format-icons": ["", ""], - "tooltip": true, - "tooltip-format": "{app}: {title}" - }, - "mpd": { - "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", - "format-disconnected": "Disconnected ", - "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", - "unknown-tag": "N/A", - "interval": 2, - "consume-icons": { - "on": " " - }, - "random-icons": { - "off": " ", - "on": " " - }, - "repeat-icons": { - "on": " " - }, - "single-icons": { - "on": "1 " - }, - "state-icons": { - "paused": "", - "playing": "" - }, - "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)" - }, - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "", - "deactivated": "" - } - }, - "tray": { - // "icon-size": 21, - "spacing": 10 - }, - "clock": { - // "timezone": "America/New_York", - "tooltip-format": "{:%Y %B}\n{calendar}", - "format-alt": "{:%Y-%m-%d}" - }, - "cpu": { - "format": "{usage}% ", - "tooltip": false - }, - "memory": { - "format": "{}% " - }, - "temperature": { - // "thermal-zone": 2, - // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", - "critical-threshold": 80, - // "format-critical": "{temperatureC}°C {icon}", - "format": "{temperatureC}°C {icon}", - "format-icons": ["", "", ""] - }, - "backlight": { - // "device": "acpi_video1", - "format": "{percent}% {icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] - }, - "battery": { - "states": { - // "good": 95, - "warning": 30, - "critical": 15 - }, - "format": "{capacity}% {icon}", - "format-charging": "{capacity}% ", - "format-plugged": "{capacity}% ", - "format-alt": "{time} {icon}", - // "format-good": "", // An empty format will hide the module - // "format-full": "", - "format-icons": ["", "", "", "", ""] - }, - "battery#bat2": { - "bat": "BAT2" - }, - "network": { - // "interface": "wlp2*", // (Optional) To force the use of this interface - "format-wifi": "{essid} ({signalStrength}%) ", - "format-ethernet": "{ipaddr}/{cidr} ", - "tooltip-format": "{ifname} via {gwaddr} ", - "format-linked": "{ifname} (No IP) ", - "format-disconnected": "Disconnected ⚠", - "format-alt": "{ifname}: {ipaddr}/{cidr}" - }, - "pulseaudio": { - // "scroll-step": 1, // %, can be a float - "format": "{volume}% {icon} {format_source}", - "format-bluetooth": "{volume}% {icon} {format_source}", - "format-bluetooth-muted": " {icon} {format_source}", - "format-muted": " {format_source}", - "format-source": "{volume}% ", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "", - "default": ["", "", ""] - }, - "on-click": "pavucontrol" - }, - "custom/media": { - "format": "{icon} {}", - "return-type": "json", - "max-length": 40, - "format-icons": { - "spotify": "", - "default": "🎜" - }, - "escape": true, - "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 - } -} diff --git a/configs/dotfiles/hyprland/laptop/waybar/style.css b/configs/dotfiles/hyprland/laptop/waybar/style.css deleted file mode 100644 index 02a170d..0000000 --- a/configs/dotfiles/hyprland/laptop/waybar/style.css +++ /dev/null @@ -1,73 +0,0 @@ -* { - border: none; - border-radius: 0; - font-family: Roboto, Helvetica, Arial, sans-serif; - font-size: 13px; - min-height: 0; -} - -window#waybar { - background: rgba(43, 48, 59, 0.5); - border-bottom: 3px solid rgba(100, 114, 125, 0.5); - color: white; -} - -tooltip { - background: rgba(43, 48, 59, 0.5); - border: 1px solid rgba(100, 114, 125, 0.5); -} -tooltip label { - color: white; -} - -#workspaces button { - padding: 0 5px; - background: transparent; - color: white; - border-bottom: 3px solid transparent; -} - -#workspaces button.focused { - background: #64727D; - border-bottom: 3px solid white; -} - -#mode, #clock, #battery { - padding: 0 10px; -} - -#mode { - background: #64727D; - border-bottom: 3px solid white; -} - -#clock { - background-color: #64727D; -} - -#battery { - background-color: #ffffff; - color: black; -} - -#battery.charging { - color: white; - background-color: #26A65B; -} - -@keyframes blink { - to { - background-color: #ffffff; - color: black; - } -} - -#battery.warning:not(.charging) { - background: #f53c3c; - color: white; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; -} diff --git a/configs/dotfiles/kitty/kitty.conf b/configs/dotfiles/kitty/kitty.conf old mode 100644 new mode 100755 index df7c134..8444c1e --- a/configs/dotfiles/kitty/kitty.conf +++ b/configs/dotfiles/kitty/kitty.conf @@ -193,7 +193,7 @@ cursor #c8d3f5 #: precedence. Also, the cursor colors are modified if the cell #: background and foreground colors have very low contrast. -cursor_text_color #222436 +cursor_text_color #111325 #: The color of text under the cursor. If you want it rendered with #: the background color of the cell underneath instead, use the @@ -988,7 +988,7 @@ background #222436 #: The foreground and background colors. -background_opacity 0.95 +background_opacity 0.85 #: The opacity of the background. A number between zero and one, where #: one is opaque and zero is fully transparent. This will only work if @@ -1023,14 +1023,14 @@ background_image_layout scaled #: When background image is scaled, whether linear interpolation #: should be used. - #dynamic_background_opacity yes + dynamic_background_opacity yes #: Allow changing of the background_opacity dynamically, using either #: keyboard shortcuts (increase_background_opacity and #: decrease_background_opacity) or the remote control facility. #: Changing this option by reloading the config is not supported. -background_tint 0.9 +background_tint 0.6 #: How much to tint the background image by the background color. #: This option makes it easier to read the text. Tinting is done using @@ -1198,7 +1198,7 @@ editor /usr/bin/nvim #: Relative paths are resolved from the kitty configuration directory. -# allow_remote_control no +allow_remote_control yes #: Allow other programs to control kitty. If you turn this on, other #: programs can control all aspects of kitty, including sending text @@ -1225,7 +1225,7 @@ editor /usr/bin/nvim #: yes #: Remote control requests are always accepted. -# listen_on none +listen_on unix:@mykitty #: Listen to the specified UNIX socket for remote control connections. #: Note that this will apply to all kitty instances. It can be @@ -1341,7 +1341,7 @@ editor /usr/bin/nvim #: special value of ask means that kitty will ask before opening the #: link when clicked. -# shell_integration enabled + shell_integration enabled #: Enable shell integration on supported shells. This enables features #: such as jumping to previous prompts, browsing the output of the @@ -1401,7 +1401,7 @@ editor /usr/bin/nvim #: OS specific tweaks {{{ -wayland_titlebar_color #2e2f3d +wayland_titlebar_color #09111b #: The color of the kitty window's titlebar on Wayland systems with #: client side window decorations such as GNOME. A value of system diff --git a/configs/dotfiles/nvim/.luarc.json b/configs/dotfiles/nvim/.luarc.json index 8d7ba94..31b4b67 100644 --- a/configs/dotfiles/nvim/.luarc.json +++ b/configs/dotfiles/nvim/.luarc.json @@ -6,5 +6,8 @@ ], "diagnostics.globals": ["vim"], "workspace.checkThirdParty": false, - "workspace.library": [ "$VIMRUNTIME" ] + "workspace.library": [ "$VIMRUNTIME" ], + "workspace.maxPreload": 100000, + "workspace.preloadFileSize": 10000, + "telemetry.enable": false } diff --git a/configs/dotfiles/nvim/init.lua b/configs/dotfiles/nvim/init.lua index b3fe4e3..868083b 100644 --- a/configs/dotfiles/nvim/init.lua +++ b/configs/dotfiles/nvim/init.lua @@ -1 +1 @@ -require('config') +require'config' diff --git a/configs/dotfiles/nvim/lazy-lock.json b/configs/dotfiles/nvim/lazy-lock.json new file mode 100644 index 0000000..2301ae9 --- /dev/null +++ b/configs/dotfiles/nvim/lazy-lock.json @@ -0,0 +1,55 @@ +{ + "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, + "avante.nvim": { "branch": "main", "commit": "56951378f10b25f8bb0f5bb516b8d778a1e498a7" }, + "barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" }, + "cloak.nvim": { "branch": "main", "commit": "648aca6d33ec011dc3166e7af3b38820d01a71e4" }, + "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, + "cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" }, + "cmp-dotenv": { "branch": "main", "commit": "4dd53aab60982f1f75848aec5e6214986263325e" }, + "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" }, + "cmp-nerdfont": { "branch": "main", "commit": "e97482344ebed29093015a18c155057adf5c842b" }, + "cmp-npm": { "branch": "main", "commit": "2337f109f51a09297596dd6b538b70ccba92b4e4" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, + "cmp-nvim-lsp-document-symbol": { "branch": "main", "commit": "f94f7ba948e32cd302caba1c2ca3f7c697fb4fcf" }, + "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" }, + "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, + "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, + "cmp-tw2css": { "branch": "main", "commit": "1abe0eebcb57fcbd5538d054f0db61f4e4a1302b" }, + "cmp_kitty": { "branch": "main", "commit": "f0d7782a525b0445499d3217f820ea43f7459e15" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "conform.nvim": { "branch": "master", "commit": "b4aab989db276993ea5dcb78872be494ce546521" }, + "dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" }, + "fidget.nvim": { "branch": "main", "commit": "4d5858bd4c471c895060e1b9f3575f1551184dc5" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "gitsigns.nvim": { "branch": "main", "commit": "f780609807eca1f783a36a8a31c30a48fbe150c5" }, + "image.nvim": { "branch": "master", "commit": "446a8a5cc7a3eae3185ee0c697732c32a5547a0b" }, + "img-clip.nvim": { "branch": "main", "commit": "f33f3af9ba50f99d70f8fcb1a8575750ada4ea4a" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" }, + "lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "7f9a39fcd2ac6e979001f857727d606888f5909c" }, + "mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" }, + "mcphub.nvim": { "branch": "main", "commit": "5e39057c4405bc7b83ef9fd38a37d18c9330e403" }, + "mini.icons": { "branch": "main", "commit": "f9a177c11daa7829389b7b6eaaec8b8a5c47052d" }, + "neo-tree.nvim": { "branch": "v3.x", "commit": "f1deac7ecec88c28a250d890ba7bb35843e69cbd" }, + "nerdcommenter": { "branch": "master", "commit": "02a3b6455fa07b61b9440a78732f1e9b7876c991" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, + "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, + "nvim-lsp-file-operations": { "branch": "master", "commit": "9744b738183a5adca0f916527922078a965515ed" }, + "nvim-lspconfig": { "branch": "master", "commit": "d89f4891f0720cd2598e4bdd60010d8784b2ac8a" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter-context": { "branch": "master", "commit": "41847d3dafb5004464708a3db06b14f12bde548a" }, + "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, + "nvim-web-devicons": { "branch": "master", "commit": "6e51ca170563330e063720449c21f43e27ca0bc1" }, + "nvim-window-picker": { "branch": "main", "commit": "6382540b2ae5de6c793d4aa2e3fe6dbb518505ec" }, + "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "render-markdown.nvim": { "branch": "main", "commit": "b4885a95e5082a6ed164830c581aac257a74f355" }, + "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, + "supermaven-nvim": { "branch": "main", "commit": "07d20fce48a5629686aefb0a7cd4b25e33947d50" }, + "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, + "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, + "undotree": { "branch": "master", "commit": "fe9a9d0645f0f5532360b5e5f5c550d7bb4f1869" } +} diff --git a/configs/dotfiles/nvim/lua/config/autocmd.lua b/configs/dotfiles/nvim/lua/config/autocmd.lua index dedbf77..60f698d 100644 --- a/configs/dotfiles/nvim/lua/config/autocmd.lua +++ b/configs/dotfiles/nvim/lua/config/autocmd.lua @@ -1,7 +1,6 @@ local augroup = vim.api.nvim_create_augroup local gib_group = augroup('Gib', {}) local autocmd = vim.api.nvim_create_autocmd -local createcmd = vim.api.nvim_create_user_command local yank_group = augroup('HighlightYank', {}) function R(name) @@ -34,8 +33,8 @@ autocmd('LspAttach', { group = gib_group, callback = function(e) local opts = { buffer = e.buf } - vim.keymap.set('n', 'kf', vim.lsp.buf.format) - vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) + vim.keymap.set('n', 'kf', function() vim.lsp.buf.format() end, opts) + vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) vim.keymap.set("n", "kw", function() vim.lsp.buf.workspace_symbol() end, opts) vim.keymap.set("n", "kd", function() vim.diagnostic.open_float() end, opts) vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) @@ -44,18 +43,3 @@ autocmd('LspAttach', { vim.keymap.set("i", "", function() vim.lsp.buf.signature_help() end, opts) end }) - -createcmd("Format", function(args) - local range - if args.count ~= -1 then - local start_line = vim.fn.line("'<") - local end_line = vim.fn.line("'>") - range = { start = { start_line, 0 }, ["end"] = { end_line, 0 } } - end - require("conform").format({ - async = true, - lsp_fallback = true, -- if no external formatter, use LSP - range = range, - }) -end, { range = true, desc = "Format current buffer or range" }) -vim.keymap.set({ "n", "v" }, "fk", ":Format", { silent = true, desc = "Format" }) diff --git a/configs/dotfiles/nvim/lua/config/init.lua b/configs/dotfiles/nvim/lua/config/init.lua index ed53431..3f944ae 100644 --- a/configs/dotfiles/nvim/lua/config/init.lua +++ b/configs/dotfiles/nvim/lua/config/init.lua @@ -1,4 +1,4 @@ -require('config.options') -require('config.keymaps') -require('plugins') -require('config.autocmd') +require'config.options' +require'config.keymaps' +require'config.lazy' +require'config.autocmd' diff --git a/configs/dotfiles/nvim/lua/config/keymaps.lua b/configs/dotfiles/nvim/lua/config/keymaps.lua index 11e48e9..e0b46bd 100644 --- a/configs/dotfiles/nvim/lua/config/keymaps.lua +++ b/configs/dotfiles/nvim/lua/config/keymaps.lua @@ -1,4 +1,5 @@ vim.g.mapleader = ' ' +vim.g.maplocalleader = "\\" vim.keymap.set('n', 's', ':update :source') vim.keymap.set('n', 'x', ':!chmod +x %', { silent = true }) vim.keymap.set({'n', 'v', 'x'}, 'h', 'h') diff --git a/configs/dotfiles/nvim/lua/config/lazy.lua b/configs/dotfiles/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..8993e43 --- /dev/null +++ b/configs/dotfiles/nvim/lua/config/lazy.lua @@ -0,0 +1,28 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "--branch=stable", + lazyrepo, + lazypath + }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require'lazy'.setup({ + spec = { { import = 'plugins' } }, + install = { colorscheme = { 'tokyonight-moon' } }, + checker = { enabled = true }, +}) diff --git a/configs/dotfiles/nvim/lua/config/options.lua b/configs/dotfiles/nvim/lua/config/options.lua index 42c3c2b..62b5906 100644 --- a/configs/dotfiles/nvim/lua/config/options.lua +++ b/configs/dotfiles/nvim/lua/config/options.lua @@ -1,6 +1,6 @@ vim.o.number = true vim.o.relativenumber = true -vim.o.winborder = 'rounded' +--vim.o.winborder = 'rounded' vim.o.tabstop = 2 vim.o.softtabstop = 2 vim.o.shiftwidth = 2 diff --git a/configs/dotfiles/nvim/lua/plugins/avante.lua b/configs/dotfiles/nvim/lua/plugins/avante.lua index 5ccff7b..231c11c 100644 --- a/configs/dotfiles/nvim/lua/plugins/avante.lua +++ b/configs/dotfiles/nvim/lua/plugins/avante.lua @@ -1,220 +1,241 @@ -vim.pack.add({ - { src = 'https://github.com/yetone/avante.nvim' }, - { src = 'https://github.com/nvim-lua/plenary.nvim' }, - { src = 'https://github.com/MunifTanjim/nui.nvim' }, - { src = 'https://github.com/hrsh7th/nvim-cmp' }, - { src = 'https://github.com/nvim-treesitter/nvim-treesitter' }, - { src = 'https://github.com/stevearc/dressing.nvim' }, - { src = 'https://github.com/nvim-tree/nvim-web-devicons' }, - { src = 'https://github.com/HakonHarnes/img-clip.nvim' }, - { src = 'https://github.com/MeanderingProgrammer/render-markdown.nvim' }, - { src = 'https://github.com/ravitemer/mcphub.nvim' }, -}) -require'avante'.setup({ - provider = 'openai', - auto_suggestions_provider = 'openai', - providers = { - claude = { - endpoint = 'https://api.anthropic.com', - model = 'claude-sonnet-4-20250514', - timeout = 30000, - extra_request_body = { - temperature = 0.75, - max_tokens = 4096, - }, - }, - openai = { - endpoint = 'https://api.openai.com/v1', - model = 'gpt-5', - extra_request_body = { +return { + 'yetone/avante.nvim', + -- if you want to build from source then do `make BUILD_FROM_SOURCE=true` + -- ⚠️ must add this setting! ! ! + build = vim.fn.has('win32') ~= 0 + and 'powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false' + or 'make', + event = 'VeryLazy', + version = false, -- Never set this value to '*'! Never! + ---@module 'avante' + ---@type avante.Config + opts = { + instructions_file = 'avante.md', + provider = 'openai', + auto_suggestions_provider = 'openai', + providers = { + claude = { + endpoint = 'https://api.anthropic.com', + model = 'claude-sonnet-4-20250514', timeout = 30000, - temperature = 0, - max_completion_tokens = 8192, + extra_request_body = { + temperature = 0.75, + max_tokens = 4096, + }, + }, + openai = { + endpoint = 'https://api.openai.com/v1', + model = 'gpt-5', + extra_request_body = { + timeout = 30000, + temperature = 0, + max_completion_tokens = 8192, + }, }, }, - }, - rag_service = { - enabled = false, - host_path = '/home/gib/Documents/Code', - runner = 'docker', - llm = { - provider = 'openai', - endpoint = 'https://api.openai.com/v1', - api_key = 'OPENAI_API_KEY', - model = 'gpt-4o-mini', - extra = { - temperature = 0.7, - max_tokens = 512, - timeout = 60, + rag_service = { + enabled = false, + host_path = '/home/gib/Documents/Code', + runner = 'docker', + llm = { + provider = 'openai', + endpoint = 'https://api.openai.com/v1', + api_key = 'OPENAI_API_KEY', + model = 'gpt-5', + extra = { + temperature = 0.7, + max_tokens = 512, + timeout = 60, + }, + }, + embed = { + provider = 'openai', + endpoint = 'https://api.openai.com/v1', + api_key = 'OPENAI_API_KEY', + model = 'text-embedding-3-large', + extra = nil, + }, + docker_extra_args = '', + }, + web_search_engine = { + provider = 'searxng', + proxy = nil, + }, + system_prompt = function() + local hub = require('mcphub').get_hub_instance() + return hub and hub:get_active_servers_prompt() or '' + end, + custom_tools = function() + return { + require('mcphub.extensions.avante').mcp_tool(), + } + end, + behaviour = { + auto_suggestions = false, + auto_set_highlight_group = true, + auto_set_keymaps = true, + auto_apply_diff_after_generation = false, + support_paste_from_clipboard = false, + minimize_diff = true, + enable_token_counting = true, + auto_approve_tool_permissions = true, + }, + mappings = { + --- @class AvanteConflictMappings + diff = { + ours = 'co', + theirs = 'ct', + all_theirs = 'ca', + both = 'cb', + cursor = 'cc', + next = ']x', + prev = '[x', + }, + suggestion = { + accept = '', + next = '', + prev = '', + dismiss = '', + }, + jump = { + next = ']]', + prev = '[[', + }, + submit = { + normal = '', + insert = '', + }, + cancel = { + normal = { '', '', 'q' }, + insert = { '' }, + }, + sidebar = { + apply_all = 'A', + apply_cursor = 'a', + retry_user_request = 'r', + edit_user_request = 'e', + switch_windows = '', + reverse_switch_windows = '', + remove_file = 'd', + add_file = '@', + close = { '', 'q' }, + close_from_input = nil, }, }, - embed = { - provider = 'openai', - endpoint = 'https://api.openai.com/v1', - api_key = 'OPENAI_API_KEY', - model = 'text-embedding-3-large', - extra = nil, + hints = { enabled = true }, + windows = { + ---@type 'right' | 'left' | 'top' | 'bottom' + position = 'right', + wrap = true, + width = 35, + sidebar_header = { + enabled = true, + align = 'center', + rounded = true, + }, + input = { + prefix = '> ', + height = 8, + }, + edit = { + border = 'rounded', + start_insert = true, + }, + ask = { + floating = false, + start_insert = true, + border = 'rounded', + ---@type 'ours' | 'theirs' + focus_on_apply = 'ours', + }, }, - docker_extra_args = '', - }, - web_search_engine = { - provider = 'searxng', - proxy = nil, - }, - system_prompt = function() - local hub = require('mcphub').get_hub_instance() - return hub and hub:get_active_servers_prompt() or '' - end, - custom_tools = function() - return { - require('mcphub.extensions.avante').mcp_tool(), - } - end, - behaviour = { - auto_suggestions = false, - auto_set_highlight_group = true, - auto_set_keymaps = true, - auto_apply_diff_after_generation = false, - support_paste_from_clipboard = false, - minimize_diff = true, - enable_token_counting = true, - auto_approve_tool_permissions = true, - }, - mappings = { - --- @class AvanteConflictMappings + highlights = { + diff = { + current = 'DiffText', + incoming = 'DiffAdd', + }, + }, + --- @class AvanteConflictUserConfig diff = { - ours = 'co', - theirs = 'ct', - all_theirs = 'ca', - both = 'cb', - cursor = 'cc', - next = ']x', - prev = '[x', + autojump = true, + ---@type string | fun(): any + list_opener = 'copen', + override_timeoutlen = 500, }, suggestion = { - accept = '', - next = '', - prev = '', - dismiss = '', - }, - jump = { - next = ']]', - prev = '[[', - }, - submit = { - normal = '', - insert = '', - }, - cancel = { - normal = { '', '', 'q' }, - insert = { '' }, - }, - sidebar = { - apply_all = 'A', - apply_cursor = 'a', - retry_user_request = 'r', - edit_user_request = 'e', - switch_windows = '', - reverse_switch_windows = '', - remove_file = 'd', - add_file = '@', - close = { '', 'q' }, - close_from_input = nil, + debounce = 1000, + throttle = 1000, }, }, - hints = { enabled = true }, - windows = { - ---@type 'right' | 'left' | 'top' | 'bottom' - position = 'right', - wrap = true, - width = 35, - sidebar_header = { - enabled = true, - align = 'center', - rounded = true, + dependencies = { + { 'nvim-lua/plenary.nvim' }, + { 'MunifTanjim/nui.nvim' }, + { 'hrsh7th/nvim-cmp' }, + { 'nvim-treesitter/nvim-treesitter' }, + { 'stevearc/dressing.nvim' }, + { 'nvim-tree/nvim-web-devicons' }, + { 'folke/snacks.nvim' }, + { + 'ravitemer/mcphub.nvim', + build = "npm install -g mcp-hub@latest", + config = function() + require'mcphub'.setup({ + config = vim.fn.expand('/home/gib/.config/mcphub/servers.json'), + port = 37373, + shutdown_delay = 60 * 10 * 000, + use_bundled_binary = false, + mcp_request_timeout = 60000, + auto_approve = true, + auto_toggle_mcp_servers = true, + extensions = { + avante = { + make_slash_commands = true, + }, + }, + native_servers = {}, + ui = { + window = { + width = 0.8, + height = 0.8, + align = 'center', + relative = 'editor', + zindex = 50, + border = 'rounded', + }, + wo = { + winhl = 'Normal:MCPHubNormal,FloatBorder:MCPHubBorder', + }, + }, + log = { + level = vim.log.levels.WARN, + to_file = false, + file_path = nil, + prefix = 'MCPHub', + }, + }) + end }, - input = { - prefix = '> ', - height = 8, + { + -- support for image pasting + 'HakonHarnes/img-clip.nvim', + event = 'VeryLazy', + opts = { + -- recommended settings + default = { + embed_image_as_base64 = false, + prompt_for_file_name = false, + drag_and_drop = { + insert_mode = true, + }, + }, + }, }, - edit = { - border = 'rounded', - start_insert = true, - }, - ask = { - floating = false, - start_insert = true, - border = 'rounded', - ---@type 'ours' | 'theirs' - focus_on_apply = 'ours', + { + 'MeanderingProgrammer/render-markdown.nvim', + opts = { + file_types = { 'markdown', 'Avante' }, + }, + ft = { 'markdown', 'Avante' }, }, }, - highlights = { - diff = { - current = 'DiffText', - incoming = 'DiffAdd', - }, - }, - --- @class AvanteConflictUserConfig - diff = { - autojump = true, - ---@type string | fun(): any - list_opener = 'copen', - override_timeoutlen = 500, - }, - suggestion = { - debounce = 1000, - throttle = 1000, - }, -}) -require'img-clip'.setup({ - default = { - embed_image_as_base64 = false, - prompt_for_file_name = false, - drag_and_drop = { - insert_mode = true, - }, - }, -}) -require'render-markdown'.setup({ - file_types = { 'markdown', 'Avante' }, -}) -require'mcphub'.setup({ - config = vim.fn.expand('/home/gib/.config/mcphub/servers.json'), - port = 37373, - shutdown_delay = 60 * 10 * 000, - use_bundled_binary = false, - mcp_request_timeout = 60000, - auto_approve = true, - auto_toggle_mcp_servers = true, - extensions = { - avante = { - make_slash_commands = true, - }, - }, - - native_servers = {}, - ui = { - window = { - width = 0.8, - height = 0.8, - align = 'center', - relative = 'editor', - zindex = 50, - border = 'rounded', - }, - wo = { - winhl = 'Normal:MCPHubNormal,FloatBorder:MCPHubBorder', - }, - }, - --on_ready = function(hub) - --end, - --on_error = function(err) - --end, - log = { - level = vim.log.levels.WARN, - to_file = false, - file_path = nil, - prefix = 'MCPHub', - }, -}) +} diff --git a/configs/dotfiles/nvim/lua/plugins/barbar.lua b/configs/dotfiles/nvim/lua/plugins/barbar.lua index 6b14052..76fd49c 100644 --- a/configs/dotfiles/nvim/lua/plugins/barbar.lua +++ b/configs/dotfiles/nvim/lua/plugins/barbar.lua @@ -1,15 +1,21 @@ -vim.pack.add({ - { src = 'https://github.com/romgrk/barbar.nvim' }, - { src = 'https://github.com/lewis6991/gitsigns.nvim' }, - { src = 'https://github.com/nvim-tree/nvim-web-devicons' }, -}) -require'barbar'.setup({ - animation = true, - insert_at_start = true -}) -vim.keymap.set({'n'}, '', ':BufferPrevious') -vim.keymap.set({'n'}, '', ':BufferNext') -vim.keymap.set({'n'}, '', ':BufferMovePrevious') -vim.keymap.set({'n'}, '', ':BufferMoveNext') -vim.keymap.set({'n'}, '', ':BufferClose') -vim.keymap.set({'n'}, '', ':BufferCloseAllButCurrent') +return { + 'romgrk/barbar.nvim', + dependencies = { + 'lewis6991/gitsigns.nvim', + 'nvim-tree/nvim-web-devicons', + }, + init = function() vim.g.barbar_auto_setup = false end, + opts = { + animation = true, + insert_at_start = true, + }, + keys = { + { "", ":BufferPrevious", mode = "n", silent = true, desc = "Go to previous tab" }, + { "", ":BufferNext", mode = "n", silent = true, desc = "Go to next tab" }, + { "", ":BufferMovePrevious", mode = "n", silent = true, desc = "Move tab to previous position" }, + { "", ":BufferMoveNext", mode = "n", silent = true, desc = "Move tab to next position" }, + { "", ":BufferClose", mode = "n", silent = true, desc = "Close current tab" }, + { "", ":BufferCloseAllButCurrent", mode = "n", silent = true, desc = "Close all tabs except current" }, + }, + version = '^1.0.0', -- optional: only update when a new 1.x version is released +} diff --git a/configs/dotfiles/nvim/lua/plugins/cloak.lua b/configs/dotfiles/nvim/lua/plugins/cloak.lua index 78af1a1..3fc17c7 100644 --- a/configs/dotfiles/nvim/lua/plugins/cloak.lua +++ b/configs/dotfiles/nvim/lua/plugins/cloak.lua @@ -1,18 +1,20 @@ -vim.pack.add({ - { src = 'https://github.com/laytan/cloak.nvim' }, -}) -require'cloak'.setup({ - enabled = false, - cloak_character = "•", - highlight_group = "Comment", - patterns = { - { - file_pattern = { - '.env*', - 'wrangler.toml', - '.dev.vars', +return { + 'laytan/cloak.nvim', + config = function() + require'cloak'.setup({ + enabled = false, + cloak_character = "•", + highlight_group = "Comment", + patterns = { + { + file_pattern = { + '.env*', + 'wrangler.toml', + '.dev.vars', + }, + cloak_pattern = "=.+" + }, }, - cloak_pattern = "=.+" - }, - }, -}) + }) + end, +} diff --git a/configs/dotfiles/nvim/lua/plugins/colors.lua b/configs/dotfiles/nvim/lua/plugins/colors.lua index 8a6b3ec..cb2bac2 100644 --- a/configs/dotfiles/nvim/lua/plugins/colors.lua +++ b/configs/dotfiles/nvim/lua/plugins/colors.lua @@ -1,13 +1,18 @@ -vim.pack.add({ - { src = 'https://github.com/folke/tokyonight.nvim' }, -}) -require('tokyonight').setup({ - style = 'moon', - transparent = true, - on_colors = function(colors) - colors.comment = '#a0a7c5' - colors.fg_gutter = '#787f93' - colors.terminal_black = '#828bb8' +return { + 'folke/tokyonight.nvim', + lazy = false, + priority = 1000, + opts = { + style = 'moon', + transparent = true, + on_colors = function(colors) + colors.comment = '#a0a7c5' + colors.fg_gutter = '#787f93' + colors.terminal_black = '#828bb8' + end, + }, + config = function(_,opts) + require'tokyonight'.setup(opts) + vim.cmd.colorscheme('tokyonight-moon') end, -}) -vim.cmd('colorscheme tokyonight-moon') +} diff --git a/configs/dotfiles/nvim/lua/plugins/image.lua b/configs/dotfiles/nvim/lua/plugins/image.lua index d630fbd..077e25c 100644 --- a/configs/dotfiles/nvim/lua/plugins/image.lua +++ b/configs/dotfiles/nvim/lua/plugins/image.lua @@ -1,28 +1,32 @@ -vim.pack.add({ - { src = 'https://github.com/3rd/image.nvim' }, - { src = 'https://github.com/nvim-treesitter/nvim-treesitter'} -}) -require'image'.setup({ - backend = "kitty", - integrations = { - markdown = { - enabled = true, - clear_in_insert_mode = false, - download_remote_images = true, - only_render_image_at_cursor = false, - filetypes = { "markdown", "vimwiki" }, - }, - neorg = { - enabled = true, - clear_in_insert_mode = false, - download_remote_images = true, - only_render_image_at_cursor = false, - filetypes = { "norg" }, - }, +return { + '3rd/image.nvim', + dependencies = { + 'nvim-treesitter/nvim-treesitter', }, - max_width = nil, - max_height = nil, - max_width_window_percentage = nil, - max_height_window_percentage = 50, - kitty_method = "normal", -}) + config = function() + require'image'.setup({ + backend = "kitty", + integrations = { + markdown = { + enabled = true, + clear_in_insert_mode = false, + download_remote_images = true, + only_render_image_at_cursor = false, + filetypes = { "markdown", "vimwiki" }, + }, + neorg = { + enabled = true, + clear_in_insert_mode = false, + download_remote_images = true, + only_render_image_at_cursor = false, + filetypes = { "norg" }, + }, + }, + max_width = nil, + max_height = nil, + max_width_window_percentage = nil, + max_height_window_percentage = 50, + kitty_method = "normal", + }) + end, +} diff --git a/configs/dotfiles/nvim/lua/plugins/init.lua b/configs/dotfiles/nvim/lua/plugins/init.lua deleted file mode 100644 index b7bffcb..0000000 --- a/configs/dotfiles/nvim/lua/plugins/init.lua +++ /dev/null @@ -1,14 +0,0 @@ -require'plugins.avante' -require'plugins.barbar' -require'plugins.colors' -require'plugins.cloak' -require'plugins.image' -require'plugins.lsp' -require'plugins.lualine' -require'plugins.neotree' -require'plugins.nerdcommenter' -require'plugins.snacks' -require'plugins.telescope' -require'plugins.treesitter' -require'plugins.trouble' -require'plugins.undotree' diff --git a/configs/dotfiles/nvim/lua/plugins/lsp.lua b/configs/dotfiles/nvim/lua/plugins/lsp.lua index 77b4dc6..d79e5cb 100644 --- a/configs/dotfiles/nvim/lua/plugins/lsp.lua +++ b/configs/dotfiles/nvim/lua/plugins/lsp.lua @@ -1,251 +1,342 @@ -vim.pack.add({ - { src = 'https://github.com/mason-org/mason.nvim' }, - { src = 'https://github.com/neovim/nvim-lspconfig' }, - { src = 'https://github.com/mason-org/mason-lspconfig.nvim' }, - { src = 'https://github.com/hrsh7th/nvim-cmp' }, - { src = 'https://github.com/hrsh7th/cmp-nvim-lsp' }, - { src = 'https://github.com/nvim-lua/plenary.nvim' }, - { src = 'https://github.com/hrsh7th/cmp-nvim-lsp-document-symbol' }, - { src = 'https://github.com/hrsh7th/cmp-nvim-lua' }, - { src = 'https://github.com/hrsh7th/cmp-path' }, - { src = 'https://github.com/hrsh7th/cmp-buffer' }, - { src = 'https://github.com/hrsh7th/cmp-emoji' }, - { src = 'https://github.com/chrisgrieser/cmp-nerdfont' }, - { src = 'https://github.com/jcha0713/cmp-tw2css' }, - { src = 'https://github.com/SergioRibera/cmp-dotenv' }, - { src = 'https://github.com/saadparwaiz1/cmp_luasnip' }, - { src = 'https://github.com/onsails/lspkind.nvim' }, - { src = 'https://github.com/rafamadriz/friendly-snippets' }, - { src = 'https://github.com/j-hui/fidget.nvim' }, - { src = 'https://github.com/David-Kunz/cmp-npm' }, - { src = 'https://github.com/stevearc/conform.nvim' }, - { - src = 'https://github.com/L3MON4D3/LuaSnip', - version = vim.version.range('2') - }, - { src = 'https://github.com/supermaven-inc/supermaven-nvim' }, - { src = 'https://github.com/garyhurtz/cmp_kitty' }, - { src = 'https://github.com/windwp/nvim-autopairs' }, - { src = 'https://github.com/windwp/nvim-ts-autotag' }, - --{ src = 'https://github.com/hrsh7th/cmp-cmdline' }, - --{ src = 'https://github.com/chrisgrieser/cmp-yanky' }, -}) - -local cmp = require 'cmp' -local cmp_lsp = require 'cmp_nvim_lsp' -local lspconfig = require 'lspconfig' -local capabilities = vim.tbl_deep_extend( - 'force', - {}, - vim.lsp.protocol.make_client_capabilities(), - cmp_lsp.default_capabilities() -) -local cmp_select = { behavior = cmp.SelectBehavior.Select } -local lspkind = require 'lspkind' -local cmp_autopairs = require'nvim-autopairs.completion.cmp' -require 'mason'.setup({}) -require 'mason-lspconfig'.setup({ - handlers = { - function(server_name) - require 'lspconfig'[server_name].setup({ - capabilities = capabilities - }) - end, - zls = function() - lspconfig.zls.setup({ - root_dir = lspconfig.util.root_pattern(".git", "build.zig", "zls.json"), - settings = { - zls = { - enable_inlay_hints = true, - enable_snippets = true, - warn_style = true, - }, - }, - }) - vim.g.zig_fmt_parse_errors = 0 - vim.g.zig_fmt_autosave = 0 - end, - ["lua_ls"] = function() - lspconfig.lua_ls.setup({ - capabilities = capabilities, - settings = { - Lua = { - format = { - enable = true, - defaultConfig = { - indent_style = "space", - indent_size = "2", - }, - }, - }, - }, - }) - end, - } -}) -cmp.setup({ - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) - end, - }, - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered(), - }, - sources = { - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - { name = 'buffer' }, - { name = 'supermaven' }, - --{ name = 'luasnip', keyword_length = 2 }, - --{ name = 'buffer', keyword_length = 3 }, - --{ name = 'supermaven', keyword_length = 2 }, +return { + 'mason-org/mason-lspconfig.nvim', + dependencies = { + { 'neovim/nvim-lspconfig', }, { - name = 'path', - option = { - pathMappings = { - ['@'] = '${folder}/src', - ['/'] = '${folder}/src/public', - ['/components'] = '${folder}/src/components', - }, - trailing_slash = true, + 'mason-org/mason.nvim', + opts = { + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗" + } + } }, }, - { name = 'nvim_lsp_document_symbol' }, - { name = 'nvim_lsp_signature_health' }, - { name = 'nvim_lua' }, - { name = 'nerdfont' }, - { name = 'emoji' }, - { name = 'npm' }, - { name = 'cmp-tw2css' }, - { name = 'dotenv' }, - { name = 'kitty' }, - { name = 'render-markdown' }, - { name = 'cmdline' }, - --{ name = 'cmp_yanky' }, - }, - formatting = { - format = lspkind.cmp_format({ - mode = 'symbol', - maxwidth = { - menu = 50, - abbr = 50, - }, - symbol_map = { - Supermaven = '', - }, - ellipsis_char = '...', - show_labelDetails = true, - before = function(entry, vim_item) - return vim_item - end, - }), - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - if cmp.get_selected_entry() then - cmp.confirm({ select = false }) - else - cmp.select_next_item() - end - else - fallback() - end - end, { 'i', 's' }), + { + 'hrsh7th/nvim-cmp', + config = function() + local cmp = require'cmp' + local lspkind = require'lspkind' + local cmp_select = { behavior = cmp.SelectBehavior.Select } + cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + { name = 'buffer' }, + { name = 'supermaven' }, + { + name = 'path', + option = { + pathMappings = { + ['@'] = '${folder}/src', + ['/'] = '${folder}/public', + ['~/'] = '${folder}/', + }, + trailing_slash = true, + }, + }, + { name = 'nvim_lsp_document_symbol' }, + { name = 'nvim_lsp_signature_help' }, + { name = 'nvim_lua' }, + { name = 'nerdfont' }, + { name = 'emoji' }, + { name = 'npm' }, + { name = 'cmp-tw2css' }, + { name = 'dotenv' }, + { name = 'render-markdown' }, + { name = 'cmdline' }, + --{ name = 'kitty' }, + }, + formatting = { + format = lspkind.cmp_format({ + mode = 'symbol', + maxwidth = { + menu = 50, + abbr = 50, + }, + symbol_map = { + Supermaven = '', + }, + ellipsis_char = '...', + show_labelDetails = true, + before = function(entry, vim_item) + return vim_item + end, + }), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + if cmp.get_selected_entry() then + cmp.confirm({ select = false }) + else + cmp.select_next_item() + end + else + fallback() + end + end, { 'i', 's' }), - [''] = cmp.mapping.confirm({ select = true }), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.select_prev_item(cmp_select), - [''] = cmp.mapping.select_next_item(cmp_select), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.scroll_docs(-4), - }), - preselect = cmp.PreselectMode.Item, - completion = { - completeopt = 'menu,menuone,noinsert', + [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.select_prev_item(cmp_select), + [''] = cmp.mapping.select_next_item(cmp_select), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.scroll_docs(-4), + }), + preselect = cmp.PreselectMode.Item, + completion = { + completeopt = 'menu,menuone,noinsert', + }, + }) + cmp.setup.cmdline('/', { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } + }) + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { + name = 'cmdline', + } + }) + }) + end, + }, + { 'hrsh7th/cmp-nvim-lsp' }, + { 'nvim-lua/plenary.nvim' }, + { 'hrsh7th/cmp-nvim-lsp-document-symbol' }, + { 'hrsh7th/cmp-nvim-lua' }, + { 'hrsh7th/cmp-nvim-lsp-signature-help' }, + { 'hrsh7th/cmp-path' }, + { 'hrsh7th/cmp-buffer' }, + { 'hrsh7th/cmp-emoji' }, + { 'chrisgrieser/cmp-nerdfont' }, + { 'jcha0713/cmp-tw2css' }, + { 'SergioRibera/cmp-dotenv' }, + { 'saadparwaiz1/cmp_luasnip' }, + { 'onsails/lspkind.nvim' }, + { 'rafamadriz/friendly-snippets' }, + { + 'j-hui/fidget.nvim', + config = function() + require'fidget'.setup({}) + end, + }, + { + 'David-Kunz/cmp-npm', + config = function() + require'cmp-npm'.setup({}) + end + }, + { + 'stevearc/conform.nvim', + config = function() + require'conform'.setup({ + formatters_by_ft = { + cs = { 'csharpier', 'lsp' }, + javascript = { 'prettierd', 'prettier' }, + javascriptreact = { 'prettierd', 'prettier' }, + typescript = { 'prettierd', 'prettier' }, + typescriptreact = { 'prettierd', 'prettier' }, + json = { 'prettierd', 'prettier' }, + html = { 'prettierd', 'prettier' }, + css = { 'prettierd', 'prettier' }, + lua = { 'stylua' }, + }, + }) + vim.api.nvim_create_user_command( + 'Format', + function(args) + local range + if args.count ~= -1 then + local start_line = vim.fn.line("'<") + local end_line = vim.fn.line("'>") + range = { start = { start_line, 0 }, ["end"] = { end_line, 0 } } + end + require'conform'.format({ + async = true, + lsp_fallback = true, + range = range, + }) + end, { range = true, desc = "Format current buffer or range" }) + end, + keys = { + { + 'fk', + ':Format', + mode = {'n', 'v'}, + silent = true, + desc = "Format with conform" + } + } + }, + { + 'L3MON4D3/LuaSnip', + version = 'v2.*', + build = 'make install_jsregexp' + }, + { + 'supermaven-inc/supermaven-nvim', + config = function() + require'supermaven-nvim'.setup({ + keymaps = { + accept_suggestion = '', + clear_suggestion = '', + accept_word = '', + }, + disable_inline_completion = true, + }) + end, + }, + { + 'windwp/nvim-autopairs', + event = "InsertEnter", + config = true + }, + { + 'windwp/nvim-ts-autotag', + config = function() + require'nvim-ts-autotag'.setup({}) + end, + }, + { + "garyhurtz/cmp_kitty", + dependencies = { + { "hrsh7th/nvim-cmp" }, + }, + init = function() + require('cmp_kitty'):setup() + end + }, + { 'hrsh7th/cmp-cmdline' }, }, -}) -cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done()) -require 'cmp_kitty':setup({}) -require 'cmp-npm'.setup({}) -require 'supermaven-nvim'.setup({ - disable_inline_completion = true, -}) -require 'conform'.setup({ - formatters_by_ft = { - cs = { 'csharpier', 'lsp' }, - javascript = { 'prettierd', 'prettier' }, - javascriptreact = { 'prettierd', 'prettier' }, - typescript = { 'prettierd', 'prettier' }, - typescriptreact = { 'prettierd', 'prettier' }, - json = { 'prettierd', 'prettier' }, - html = { 'prettierd', 'prettier' }, - css = { 'prettierd', 'prettier' }, - lua = { 'stylua' }, - }, -}) -require 'fidget'.setup({}) -require 'nvim-autopairs'.setup({}) -require 'nvim-ts-autotag'.setup({}) ---cmp.setup.cmdline('/', { - --mapping = cmp.mapping.preset.cmdline(), - --sources = { - --{ name = 'buffer' } - --} ---}) ---cmp.setup.cmdline(':', { - --mapping = cmp.mapping.preset.cmdline(), - --sources = cmp.config.sources({ - --{ name = 'path' } - --}, { - --{ - --name = 'cmdline', - --} - --}) ---}) -vim.lsp.enable({ - 'asm_lsp', - 'bashls', - 'cmake', - 'cssls', - 'css_variables', - 'cssmodules_ls', - 'docker_compose_language_service', - 'dockerls', - 'eslint', - 'gopls', - 'gradle_ls', - 'graphql', - 'html', - 'htmx', - 'intelephense', - 'jsonls', - 'kotlin_lsp', - 'lua_ls', - 'markdown_oxide', - 'nginx_language_server', - 'prismals', - 'pyright', - 'rust-analyzer', - 'sqlls', - 'svelte_language_server', - 'tailwindcss', - 'ts_ls', - 'tinymist', - 'yamlls', -}) -vim.diagnostic.config({ - float = { - focusable = false, - style = "minimal", - border = "rounded", - source = true, - header = "", - prefix = "", - }, -}) + config = function() + vim.diagnostic.config({ + float = { + focusable = false, + style = "minimal", + border = "rounded", + source = true, + header = "", + prefix = "", + }, + }) + require'mason'.setup({}) + local cmp = require'cmp' + local cmp_lsp = require'cmp_nvim_lsp' + local lspconfig = require'lspconfig' + local capabilities = vim.tbl_deep_extend( + 'force', + {}, + vim.lsp.protocol.make_client_capabilities(), + cmp_lsp.default_capabilities() + ) + local cmp_autopairs = require'nvim-autopairs.completion.cmp' + cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done()) + require 'mason-lspconfig'.setup({ + ensure_installed = { + 'asm_lsp', + 'bashls', + 'cmake', + 'cssls', + 'css_variables', + 'cssmodules_ls', + 'docker_compose_language_service', + 'dockerls', + 'eslint', + 'gopls', + 'gradle_ls', + 'graphql', + 'html', + 'htmx', + 'intelephense', + 'jsonls', + 'kotlin_lsp', + 'lua_ls', + 'markdown_oxide', + 'nginx_language_server', + 'prismals', + 'pyright', + 'rust_analyzer', + 'sqlls', + 'svelte', + 'tailwindcss', + 'ts_ls', + 'tinymist', + 'yamlls', + }, + handlers = { + function(server_name) + lspconfig[server_name].setup({ + capabilities = capabilities + }) + end, + zls = function() + lspconfig.zls.setup({ + root_dir = lspconfig.util.root_pattern(".git", "build.zig", "zls.json"), + settings = { + zls = { + enable_inlay_hints = true, + enable_snippets = true, + warn_style = true, + }, + }, + }) + vim.g.zig_fmt_parse_errors = 0 + vim.g.zig_fmt_autosave = 0 + end, + ["lua_ls"] = function() + lspconfig.lua_ls.setup({ + capabilities = capabilities, + settings = { + Lua = { + runtime = { + version = 'LuaJIT', + }, + diagnostics = { + globals = { 'vim' }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + checkThirdParty = false, + -- These are the key settings to prevent the infinite processing + maxPreload = 100000, + preloadFileSize = 10000, + }, + telemetry = { + enable = false, + }, + format = { + enable = true, + defaultConfig = { + indent_style = "space", + indent_size = "2", + }, + }, + }, + }, + }) + end, + } + }) + end, +} diff --git a/configs/dotfiles/nvim/lua/plugins/lualine.lua b/configs/dotfiles/nvim/lua/plugins/lualine.lua index 925531d..49e1854 100644 --- a/configs/dotfiles/nvim/lua/plugins/lualine.lua +++ b/configs/dotfiles/nvim/lua/plugins/lualine.lua @@ -1,59 +1,63 @@ -vim.pack.add({ - { src = 'https://github.com/nvim-lualine/lualine.nvim' }, - { src = 'https://github.com/nvim-tree/nvim-web-devicons' }, - { src = 'https://github.com/folke/tokyonight.nvim' }, -}) -require'lualine'.setup({ - options = { - icons_enabled = true, - theme = 'tokyonight-moon', - component_separators = { left = '', right = ''}, - section_separators = { left = '', right = ''}, - disabled_filetypes = { - statusline = {}, - winbar = {}, - }, - ignore_focus = {}, - always_divide_middle = true, - always_show_tabline = true, - globalstatus = false, - refresh = { - statusline = 1000, - tabline = 1000, - winbar = 1000, - refresh_time = 16, - events = { - 'WinEnter', - 'BufEnter', - 'BufWritePost', - 'SessionLoadPost', - 'FileChangedShellPost', - 'VimResized', - 'Filetype', - 'CursorMoved', - 'CursorMovedI', - 'ModeChanged', +return { + 'nvim-lualine/lualine.nvim', + config = function() + require'lualine'.setup({ + options = { + icons_enabled = true, + theme = 'tokyonight-moon', + component_separators = { left = '', right = ''}, + section_separators = { left = '', right = ''}, + disabled_filetypes = { + statusline = {}, + winbar = {}, + }, + ignore_focus = {}, + always_divide_middle = true, + always_show_tabline = true, + globalstatus = false, + refresh = { + statusline = 1000, + tabline = 1000, + winbar = 1000, + refresh_time = 16, + events = { + 'WinEnter', + 'BufEnter', + 'BufWritePost', + 'SessionLoadPost', + 'FileChangedShellPost', + 'VimResized', + 'Filetype', + 'CursorMoved', + 'CursorMovedI', + 'ModeChanged', + }, + } }, - } + sections = { + lualine_a = {'mode'}, + lualine_b = {'branch', 'diff', 'diagnostics'}, + lualine_c = {'filename'}, + lualine_x = {'encoding', 'fileformat', 'filetype'}, + lualine_y = {'progress'}, + lualine_z = {'location'} + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = {'filename'}, + lualine_x = {'location'}, + lualine_y = {}, + lualine_z = {} + }, + tabline = {}, + winbar = {}, + inactive_winbar = {}, + extensions = {} + }) + end, + dependencies = { + { 'nvim-tree/nvim-web-devicons' }, + { 'folke/tokyonight.nvim' }, }, - sections = { - lualine_a = {'mode'}, - lualine_b = {'branch', 'diff', 'diagnostics'}, - lualine_c = {'filename'}, - lualine_x = {'encoding', 'fileformat', 'filetype'}, - lualine_y = {'progress'}, - lualine_z = {'location'} - }, - inactive_sections = { - lualine_a = {}, - lualine_b = {}, - lualine_c = {'filename'}, - lualine_x = {'location'}, - lualine_y = {}, - lualine_z = {} - }, - tabline = {}, - winbar = {}, - inactive_winbar = {}, - extensions = {} -}) +} diff --git a/configs/dotfiles/nvim/lua/plugins/neotree.lua b/configs/dotfiles/nvim/lua/plugins/neotree.lua index a7b8c03..27bf1df 100644 --- a/configs/dotfiles/nvim/lua/plugins/neotree.lua +++ b/configs/dotfiles/nvim/lua/plugins/neotree.lua @@ -1,315 +1,327 @@ -vim.pack.add({ - { - src = 'https://github.com/nvim-neo-tree/neo-tree.nvim', - version = vim.version.range('3') - }, - 'https://github.com/nvim-lua/plenary.nvim', - 'https://github.com/MunifTanjim/nui.nvim', - 'https://github.com/nvim-tree/nvim-web-devicons', - 'https://github.com/antosha417/nvim-lsp-file-operations', - 'https://github.com/3rd/image.nvim', - { - src = 'https://github.com/s1n7ax/nvim-window-picker', - version = vim.version.range('2'), - }, -}) -require('lsp-file-operations').setup() -require('window-picker').setup({ - filter_rules = { - include_current_win = false, - autoselect_one = true, - bo = { - filetype = { "neo-tree", "neo-tree-popup", "notify" }, - buftype = { "terminal", "quickfix" }, - }, - }, -}) -require('neo-tree').setup({ - vim.diagnostic.config({ - signs = { - text = { - [vim.diagnostic.severity.ERROR] = '', - [vim.diagnostic.severity.WARN] = '', - [vim.diagnostic.severity.INFO] = '', - [vim.diagnostic.severity.HINT] = '󰌵', - }, - } - }), - close_if_last_window = true, - enable_git_status = true, - enable_diagnostics = true, - open_files_do_not_replace_types = { 'terminal', 'trouble', 'qf' }, - open_files_using_relative_paths = false, - sort_case_insensitive = true, - sort_function = nil, - default_component_configs = { - container = { - enable_character_fade = true, - }, - indent = { - indent_size = 2, - padding = 1, - with_markers = true, - indent_marker = '│', - last_indent_marker = '└', - highlight = 'NeoTreeIndentMarker', - with_expanders = nil, - expander_collapsed = '', - expander_expanded = '', - expander_highlight = 'NeoTreeExpander', - }, - icon = { - folder_closed = '', - folder_open = '', - folder_empty = '󰜌', - provider = function(icon, node, state) - if node.type == 'file' or node.type == 'terminal' then - local success, web_devicons = pcall(require, 'nvim-web-devicons') - local name = node.type == 'terminal' and 'terminal' or node.name - if success then - local devicon, hl = web_devicons.get_icon(name) - icon.text = devicon or icon.text - icon.highlight = hl or icon.highlight - end - end - end, - default = '*', - highlight = 'NeoTreeFileIcon', - }, - modified = { - symbol = '[+]', - highlight = 'NeoTreeModified', - }, - name = { - trailing_slash = false, - use_git_status_colors = true, - highlight = 'NeoTreeFileName', - }, - git_status = { - symbols = { - added = '', - modified = '', - deleted = '✖', - renamed = '󰁕', - untracked = '', - ignored = '', - unstaged = '󰄱', - staged = '', - conflict = '', - }, - }, - file_size = { - enabled = true, - width = 12, - required_width = 64, - }, - type = { - enabled = true, - width = 10, - required_width = 122, - }, - last_modified = { - enabled = true, - width = 20, - required_width = 88, - }, - created = { - enabled = true, - width = 20, - required_width = 110, - }, - symlink_target = { - enabled = false, - }, - }, - window = { - position = 'left', - width = 30, - mapping_options = { - noremap = true, - nowait = true, - }, - mappings = { - [''] = { - 'toggle_node', - nowait = false, - }, - ['<2-LeftMouse>'] = 'open', - [''] = 'open', - [''] = 'cancel', - ['P'] = { 'toggle_preview', config = { use_float = true, use_image_nvim = true } }, - ['l'] = 'focus_preview', - ['S'] = 'open_split', - ['s'] = 'open_vsplit', - ['t'] = 'open_tabnew', - ['w'] = 'open_with_window_picker', - ['C'] = 'close_node', - ['z'] = 'close_all_nodes', - ['a'] = { - 'add', - config = { - show_path = 'relative', +return { + 'nvim-neo-tree/neo-tree.nvim', + config = function() + vim.diagnostic.config({ + signs = { + text = { + [vim.diagnostic.severity.ERROR] = '', + [vim.diagnostic.severity.WARN] = '', + [vim.diagnostic.severity.INFO] = '', + [vim.diagnostic.severity.HINT] = '󰌵', + }, + } + }) + require'neo-tree'.setup({ + close_if_last_window = true, + enable_git_status = true, + enable_diagnostics = true, + open_files_do_not_replace_types = { 'terminal', 'trouble', 'qf' }, + open_files_using_relative_paths = false, + sort_case_insensitive = true, + sort_function = nil, + default_component_configs = { + container = { + enable_character_fade = true, + }, + indent = { + indent_size = 2, + padding = 1, + with_markers = true, + indent_marker = '│', + last_indent_marker = '└', + highlight = 'NeoTreeIndentMarker', + with_expanders = nil, + expander_collapsed = '', + expander_expanded = '', + expander_highlight = 'NeoTreeExpander', + }, + icon = { + folder_closed = '', + folder_open = '', + folder_empty = '󰜌', + provider = function(icon, node, state) + if node.type == 'file' or node.type == 'terminal' then + local success, web_devicons = pcall(require, 'nvim-web-devicons') + local name = node.type == 'terminal' and 'terminal' or node.name + if success then + local devicon, hl = web_devicons.get_icon(name) + icon.text = devicon or icon.text + icon.highlight = hl or icon.highlight + end + end + end, + default = '*', + highlight = 'NeoTreeFileIcon', + }, + modified = { + symbol = '[+]', + highlight = 'NeoTreeModified', + }, + name = { + trailing_slash = false, + use_git_status_colors = true, + highlight = 'NeoTreeFileName', + }, + git_status = { + symbols = { + added = '', + modified = '', + deleted = '✖', + renamed = '󰁕', + untracked = '', + ignored = '', + unstaged = '󰄱', + staged = '', + conflict = '', + }, + }, + file_size = { + enabled = true, + width = 12, + required_width = 64, + }, + type = { + enabled = true, + width = 10, + required_width = 122, + }, + last_modified = { + enabled = true, + width = 20, + required_width = 88, + }, + created = { + enabled = true, + width = 20, + required_width = 110, + }, + symlink_target = { + enabled = false, }, }, - ['A'] = 'add_directory', - ['d'] = 'delete', - ['r'] = 'rename', - ['b'] = 'rename_basename', - ['y'] = 'copy_to_clipboard', - ['x'] = 'cut_to_clipboard', - ['p'] = 'paste_from_clipboard', - ['c'] = { 'copy', config = { show_path = 'relative' } }, - ['m'] = { 'move', config = { show_path = 'relative' } }, - ['q'] = 'close_window', - ['R'] = 'refresh', - ['?'] = 'show_help', - ['<'] = 'prev_source', - ['>'] = 'next_source', - ['i'] = 'show_file_details', + window = { + position = 'left', + width = 30, + mapping_options = { + noremap = true, + nowait = true, + }, + mappings = { + [''] = { + 'toggle_node', + nowait = false, + }, + ['<2-LeftMouse>'] = 'open', + [''] = 'open', + [''] = 'cancel', + ['P'] = { 'toggle_preview', config = { use_float = true, use_image_nvim = true } }, + ['l'] = 'focus_preview', + ['S'] = 'open_split', + ['s'] = 'open_vsplit', + ['t'] = 'open_tabnew', + ['w'] = 'open_with_window_picker', + ['C'] = 'close_node', + ['z'] = 'close_all_nodes', + ['a'] = { + 'add', + config = { + show_path = 'relative', + }, + }, + ['A'] = 'add_directory', + ['d'] = 'delete', + ['r'] = 'rename', + ['b'] = 'rename_basename', + ['y'] = 'copy_to_clipboard', + ['x'] = 'cut_to_clipboard', + ['p'] = 'paste_from_clipboard', + ['c'] = { 'copy', config = { show_path = 'relative' } }, + ['m'] = { 'move', config = { show_path = 'relative' } }, + ['q'] = 'close_window', + ['R'] = 'refresh', + ['?'] = 'show_help', + ['<'] = 'prev_source', + ['>'] = 'next_source', + ['i'] = 'show_file_details', + }, + }, + filesystem = { + filtered_items = { + visible = false, + hide_dotfiles = true, + hide_gitignored = true, + hide_hidden = true, + hide_by_name = { + 'node_modules', + '.next', + '.vscode', + '.idea', + }, + hide_by_pattern = { + '*.meta', + '*/src/*/tsconfig.json', + }, + always_show = { + '.gitignored', + }, + always_show_by_pattern = { -- uses glob style patterns + '.env*', + }, + never_show = { + '.DS_Store', + 'thumbs.db' + }, + never_show_by_pattern = {}, + }, + follow_current_file = { + enabled = false, + leave_dirs_open = false, + }, + group_empty_dirs = false, + hijack_netrw_behavior = 'open_default', + use_libuv_file_watcher = false, + commands = { + avante_add_files = function(state) + local node = state.tree:get_node() + local filepath = node:get_id() + local relative_path = require('avante.utils').relative_path(filepath) + local sidebar = require('avante').get() + local open = sidebar:is_open() + if not open then + require('avante.api').ask() + sidebar = require('avante').get() + end + sidebar.file_selector:add_selected_file(relative_path) + if not open then + sidebar.file_selector:remove_selected_file('neo-tree filesystem [1]') + end + end, + }, + window = { + mappings = { + [''] = 'navigate_up', + ['.'] = 'set_root', + ['H'] = 'toggle_hidden', + ['/'] = 'fuzzy_finder', + ['D'] = 'fuzzy_finder_directory', + ['#'] = 'fuzzy_sorter', + -- ['D'] = 'fuzzy_sorter_directory', + ['f'] = 'filter_on_submit', + [''] = 'clear_filter', + ['[g'] = 'prev_git_modified', + [']g'] = 'next_git_modified', + ['o'] = { + 'show_help', + nowait = false, + config = { title = 'Order by', prefix_key = 'o' }, + }, + ['oa'] = 'avante_add_files', + ['oc'] = { 'order_by_created', nowait = false }, + ['od'] = { 'order_by_diagnostics', nowait = false }, + ['og'] = { 'order_by_git_status', nowait = false }, + ['om'] = { 'order_by_modified', nowait = false }, + ['on'] = { 'order_by_name', nowait = false }, + ['os'] = { 'order_by_size', nowait = false }, + ['ot'] = { 'order_by_type', nowait = false }, + }, + fuzzy_finder_mappings = { + [''] = 'move_cursor_down', + [''] = 'move_cursor_down', + [''] = 'move_cursor_up', + [''] = 'move_cursor_up', + [''] = 'close', + }, + }, + }, + buffers = { + follow_current_file = { + enabled = true, + leave_dirs_open = false, + }, + group_empty_dirs = true, + show_unloaded = true, + window = { + mappings = { + ['d'] = 'buffer_delete', + ['bd'] = 'buffer_delete', + [''] = 'navigate_up', + ['.'] = 'set_root', + ['o'] = { + 'show_help', + nowait = false, + config = { title = 'Order by', prefix_key = 'o' }, + }, + ['oc'] = { 'order_by_created', nowait = false }, + ['od'] = { 'order_by_diagnostics', nowait = false }, + ['om'] = { 'order_by_modified', nowait = false }, + ['on'] = { 'order_by_name', nowait = false }, + ['os'] = { 'order_by_size', nowait = false }, + ['ot'] = { 'order_by_type', nowait = false }, + }, + }, + }, + git_status = { + window = { + position = 'float', + mappings = { + ['A'] = 'git_add_all', + ['gu'] = 'git_unstage_file', + ['gU'] = 'git_undo_last_commit', + ['ga'] = 'git_add_file', + ['gr'] = 'git_revert_file', + ['gc'] = 'git_commit', + ['gp'] = 'git_push', + ['gg'] = 'git_commit_and_push', + ['o'] = { + 'show_help', + nowait = false, + config = { title = 'Order by', prefix_key = 'o' }, + }, + ['oc'] = { 'order_by_created', nowait = false }, + ['od'] = { 'order_by_diagnostics', nowait = false }, + ['om'] = { 'order_by_modified', nowait = false }, + ['on'] = { 'order_by_name', nowait = false }, + ['os'] = { 'order_by_size', nowait = false }, + ['ot'] = { 'order_by_type', nowait = false }, + }, + }, + }, + }) + end, + keys = { + { + 't', + ':Neotree toggle', + mode = { 'n', 'v', 'x'}, + silent = true, + desc = 'Toggle NeoTree', + }, + { + 'T', + ':Neotree focus', + mode = { 'n', 'v', 'x' }, + silent = true, desc = 'Focus NeoTree', }, }, - filesystem = { - filtered_items = { - visible = false, - hide_dotfiles = true, - hide_gitignored = true, - hide_hidden = true, - hide_by_name = { - 'node_modules', - '.next', - '.vscode', - '.idea', - }, - hide_by_pattern = { - '*.meta', - '*/src/*/tsconfig.json', - }, - always_show = { - '.gitignored', - }, - always_show_by_pattern = { -- uses glob style patterns - '.env*', - }, - never_show = { - '.DS_Store', - 'thumbs.db' - }, - never_show_by_pattern = {}, - }, - follow_current_file = { - enabled = false, - leave_dirs_open = false, - }, - group_empty_dirs = false, - hijack_netrw_behavior = 'open_default', - use_libuv_file_watcher = false, - commands = { - avante_add_files = function(state) - local node = state.tree:get_node() - local filepath = node:get_id() - local relative_path = require('avante.utils').relative_path(filepath) - local sidebar = require('avante').get() - local open = sidebar:is_open() - if not open then - require('avante.api').ask() - sidebar = require('avante').get() - end - sidebar.file_selector:add_selected_file(relative_path) - if not open then - sidebar.file_selector:remove_selected_file('neo-tree filesystem [1]') - end + branch = 'v3.x', + dependencies = { + { 'nvim-lua/plenary.nvim', }, + { 'MunifTanjim/nui.nvim', }, + { 'nvim-tree/nvim-web-devicons', }, + { + 'antosha417/nvim-lsp-file-operations', + config = function() + require'lsp-file-operations'.setup({}) end, }, - window = { - mappings = { - [''] = 'navigate_up', - ['.'] = 'set_root', - ['H'] = 'toggle_hidden', - ['/'] = 'fuzzy_finder', - ['D'] = 'fuzzy_finder_directory', - ['#'] = 'fuzzy_sorter', - -- ['D'] = 'fuzzy_sorter_directory', - ['f'] = 'filter_on_submit', - [''] = 'clear_filter', - ['[g'] = 'prev_git_modified', - [']g'] = 'next_git_modified', - ['o'] = { - 'show_help', - nowait = false, - config = { title = 'Order by', prefix_key = 'o' }, - }, - ['oa'] = 'avante_add_files', - ['oc'] = { 'order_by_created', nowait = false }, - ['od'] = { 'order_by_diagnostics', nowait = false }, - ['og'] = { 'order_by_git_status', nowait = false }, - ['om'] = { 'order_by_modified', nowait = false }, - ['on'] = { 'order_by_name', nowait = false }, - ['os'] = { 'order_by_size', nowait = false }, - ['ot'] = { 'order_by_type', nowait = false }, - }, - fuzzy_finder_mappings = { - [''] = 'move_cursor_down', - [''] = 'move_cursor_down', - [''] = 'move_cursor_up', - [''] = 'move_cursor_up', - [''] = 'close', - }, + { '3rd/image.nvim', }, + { + 's1n7ax/nvim-window-picker', + version = '2.*', + config = function() + require'window-picker'.setup({}) + end, }, }, - buffers = { - follow_current_file = { - enabled = true, - leave_dirs_open = false, - }, - group_empty_dirs = true, - show_unloaded = true, - window = { - mappings = { - ['d'] = 'buffer_delete', - ['bd'] = 'buffer_delete', - [''] = 'navigate_up', - ['.'] = 'set_root', - ['o'] = { - 'show_help', - nowait = false, - config = { title = 'Order by', prefix_key = 'o' }, - }, - ['oc'] = { 'order_by_created', nowait = false }, - ['od'] = { 'order_by_diagnostics', nowait = false }, - ['om'] = { 'order_by_modified', nowait = false }, - ['on'] = { 'order_by_name', nowait = false }, - ['os'] = { 'order_by_size', nowait = false }, - ['ot'] = { 'order_by_type', nowait = false }, - }, - }, - }, - git_status = { - window = { - position = 'float', - mappings = { - ['A'] = 'git_add_all', - ['gu'] = 'git_unstage_file', - ['gU'] = 'git_undo_last_commit', - ['ga'] = 'git_add_file', - ['gr'] = 'git_revert_file', - ['gc'] = 'git_commit', - ['gp'] = 'git_push', - ['gg'] = 'git_commit_and_push', - ['o'] = { - 'show_help', - nowait = false, - config = { title = 'Order by', prefix_key = 'o' }, - }, - ['oc'] = { 'order_by_created', nowait = false }, - ['od'] = { 'order_by_diagnostics', nowait = false }, - ['om'] = { 'order_by_modified', nowait = false }, - ['on'] = { 'order_by_name', nowait = false }, - ['os'] = { 'order_by_size', nowait = false }, - ['ot'] = { 'order_by_type', nowait = false }, - }, - }, - }, -}) --- Neotree -vim.keymap.set({'n', 'v', 'x' }, 't', ':Neotree toggle') -vim.keymap.set({'n', 'v', 'x' }, 'T', ':Neotree focus') + lazy = false, +} diff --git a/configs/dotfiles/nvim/lua/plugins/nerdcommenter.lua b/configs/dotfiles/nvim/lua/plugins/nerdcommenter.lua deleted file mode 100644 index dc66542..0000000 --- a/configs/dotfiles/nvim/lua/plugins/nerdcommenter.lua +++ /dev/null @@ -1,4 +0,0 @@ -vim.pack.add({ - { src = 'https://github.com/preservim/nerdcommenter' } -}) -vim.keymap.set({ 'n', 'v', 'x'}, 'c', 'NERDCommenterToggle') diff --git a/configs/dotfiles/nvim/lua/plugins/nerdcomments.lua b/configs/dotfiles/nvim/lua/plugins/nerdcomments.lua new file mode 100644 index 0000000..a626e96 --- /dev/null +++ b/configs/dotfiles/nvim/lua/plugins/nerdcomments.lua @@ -0,0 +1,12 @@ +return { + 'preservim/nerdcommenter', + keys = { + { + 'c', + 'NERDCommenterToggle', + mode = { 'n', 'v', 'x' }, + silent = true, + desc = 'Toggle commenting line', + } + } +} diff --git a/configs/dotfiles/nvim/lua/plugins/snacks.lua b/configs/dotfiles/nvim/lua/plugins/snacks.lua index 95ce209..7cba77f 100644 --- a/configs/dotfiles/nvim/lua/plugins/snacks.lua +++ b/configs/dotfiles/nvim/lua/plugins/snacks.lua @@ -1,11 +1,15 @@ -vim.pack.add({ - { src = 'https://github.com/folke/snacks.nvim' }, - { src = 'https://github.com/echasnovski/mini.icons' }, -}) -require'snacks'.setup({ - animate = { enabled = true }, - bigfile = { enabled = true }, - image = { enabled = true }, - indent = { enabled = true }, - scroll = { enabled = true }, -}) +return { + 'folke/snacks.nvim', + dependencies = { + { 'echasnovski/mini.icons', }, + }, + config = function() + require'snacks'.setup({ + animate = { enabled = true }, + bigfile = { enabled = true }, + image = { enabled = true }, + indent = { enabled = true }, + scroll = { enabled = true }, + }) + end +} diff --git a/configs/dotfiles/nvim/lua/plugins/telescope.lua b/configs/dotfiles/nvim/lua/plugins/telescope.lua index b176770..eab1708 100644 --- a/configs/dotfiles/nvim/lua/plugins/telescope.lua +++ b/configs/dotfiles/nvim/lua/plugins/telescope.lua @@ -1,31 +1,33 @@ -vim.pack.add({ - { - src = 'https://github.com/nvim-telescope/telescope.nvim', - version = vim.version.range('0.1'), +return { + 'nvim-telescope/telescope.nvim', + tag = '0.1.8', + dependencies = { + { 'nvim-lua/plenary.nvim', }, }, - { src = 'https://github.com/nvim-lua/plenary.nvim' }, -}) -require'telescope'.setup({ - defaults = { - file_ignore_patterns = { - 'node_modules', - '.git', - '.next', - '.cache', - '.DS_Store', - '.venv', - '.conda', - }, - }, -}) -local builtin = require'telescope.builtin' -vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Find files' }) -vim.keymap.set('n', 'fg', builtin.git_files, { desc = 'Find git files' }) -vim.keymap.set( - 'n', - 'fs', - function() - builtin.grep_string({ search = vim.fn.input('Grep > ')}) + config = function() + require'telescope'.setup({ + defaults = { + file_ignore_patterns = { + 'node_modules', + '.git', + '.next', + '.cache', + '.DS_Store', + '.venv', + '.conda', + }, + }, + }) + local builtin = require'telescope.builtin' + vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Find files' }) + vim.keymap.set('n', 'fg', builtin.git_files, { desc = 'Find git files' }) + vim.keymap.set( + 'n', + 'fs', + function() + builtin.grep_string({ search = vim.fn.input('Grep > ')}) + end, + { desc = 'Find string' } + ) end, - { desc = 'Find string' } -) +} diff --git a/configs/dotfiles/nvim/lua/plugins/treesitter.lua b/configs/dotfiles/nvim/lua/plugins/treesitter.lua index c59cf42..e128c65 100644 --- a/configs/dotfiles/nvim/lua/plugins/treesitter.lua +++ b/configs/dotfiles/nvim/lua/plugins/treesitter.lua @@ -1,84 +1,92 @@ -vim.pack.add({ - { - src = 'https://github.com/nvim-treesitter/nvim-treesitter', - version = 'master' +return { + 'nvim-treesitter/nvim-treesitter', + branch = 'master', + lazy = false, + build = ':TSUpdate', + dependencies = { + { 'nvim-treesitter/playground', }, + { + 'nvim-treesitter/nvim-treesitter-context', + config = function() + require'treesitter-context'.setup({ + enable = true, + multiwindow = false, + max_lines = 10, + min_window_height = 0, + line_numbers = true, + multiline_threshold = 20, + trim_scope = 'outer', + mode = 'topline', + separator = nil, + zindex = 20, + on_attach = nil, + }) + end, + }, }, - { src = 'https://github.com/nvim-treesitter/playground' }, - { src = 'https://github.com/nvim-treesitter/nvim-treesitter-context' }, -}) -require'nvim-treesitter.install'.update({ with_sync = true })() -require'nvim-treesitter.configs'.setup({ - ensure_installed = { - 'bash', - 'c', - 'cmake', - 'cpp', - 'css', - 'diff', - 'dockerfile', - 'git_config', - 'git_rebase', - 'gitattributes', - 'gitcommit', - 'gitignore', - 'html', - 'java', - 'javascript', - 'jsdoc', - 'json', - 'jsonc', - 'kotlin', - 'lua', - 'luadoc', - 'luap', - 'make', - 'markdown', - 'markdown_inline', - 'php', - 'printf', - 'python', - 'query', - 'regex', - 'rust', - 'scala', - 'sql', - 'svelte', - 'swift', - 'toml', - 'tsx', - 'typescript', - 'vim', - 'vimdoc', - 'xml', - 'yaml', - 'zig' - }, - sync_install = false, - auto_install = true, - indent = { enable = true }, - highlight = { - enable = true, - disable = function(lang, buf) - local max_filesize = 500 * 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, - additional_vim_regex_highlighting = false, - }, -}) - -require'treesitter-context'.setup{ - enable = true, - multiwindow = false, - max_lines = 10, - min_window_height = 0, - line_numbers = true, - multiline_threshold = 20, - trim_scope = 'outer', - mode = 'topline', - separator = nil, - zindex = 20, - on_attach = nil, + config = function() + require'nvim-treesitter.install'.update({ with_sync = true }) + require'nvim-treesitter.configs'.setup({ + ensure_installed = { + 'bash', + 'c', + 'cmake', + 'cpp', + 'css', + 'diff', + 'dockerfile', + 'git_config', + 'git_rebase', + 'gitattributes', + 'gitcommit', + 'gitignore', + 'html', + 'java', + 'javascript', + 'jsdoc', + 'json', + 'jsonc', + 'kotlin', + 'latex', + 'lua', + 'luadoc', + 'luap', + 'make', + 'markdown', + 'markdown_inline', + 'php', + 'printf', + 'python', + 'query', + 'regex', + 'rust', + 'scala', + 'sql', + 'svelte', + 'swift', + 'toml', + 'tsx', + 'typescript', + 'vim', + 'vimdoc', + 'xml', + 'yaml', + 'zig' + }, + sync_install = false, + auto_install = true, + indent = { enable = true }, + highlight = { + enable = true, + disable = function(lang, buf) + local max_filesize = 500 * 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, + additional_vim_regex_highlighting = false, + }, + }) + end, } diff --git a/configs/dotfiles/nvim/lua/plugins/trouble.lua b/configs/dotfiles/nvim/lua/plugins/trouble.lua index f42117d..b74d6e2 100644 --- a/configs/dotfiles/nvim/lua/plugins/trouble.lua +++ b/configs/dotfiles/nvim/lua/plugins/trouble.lua @@ -1,7 +1,19 @@ -vim.pack.add({ - { src = 'https://github.com/folke/trouble.nvim.git' }, -}) -vim.api.nvim_create_user_command('Trouble', function() - require("trouble").open() -end, { desc = "Open Trouble" }) -vim.keymap.set({'n'}, 'x', ':Trouble diagnostics toggle') +return { + 'folke/trouble.nvim', + config = function() + require('trouble').setup({}) + vim.api.nvim_create_user_command('Trouble', function() + require('trouble').open() + end, { desc = 'Open Trouble' }) + end, + keys = { + { + 'x', + ':Trouble diagnostics toggle', + mode = 'n', + silent = true, + desc = 'Toggle Trouble', + }, + }, + +} diff --git a/configs/dotfiles/nvim/lua/plugins/undotree.lua b/configs/dotfiles/nvim/lua/plugins/undotree.lua index 320f6fa..529a134 100644 --- a/configs/dotfiles/nvim/lua/plugins/undotree.lua +++ b/configs/dotfiles/nvim/lua/plugins/undotree.lua @@ -1,4 +1,12 @@ -vim.pack.add({ - { src = 'https://github.com/mbbill/undotree' }, -}) -vim.keymap.set({'n'}, 'u', ':UndotreeToggle') +return { + 'mbbill/undotree', + keys = { + { + 'u', + ':UndotreeToggle', + mode = { 'n' }, + silent = true, + desc = 'Toggle undo tree', + }, + }, +}