180 Commits

Author SHA1 Message Date
David Ibia fa59b7988c feat(dap.lua): add virtual text setup for better debugging experience
feat(dap.lua): add support for process.env.PORT environment variable to be able to run app on a configurable port
feat(lsp-config.lua): add support for detecting python environment using DPE module
feat(lualine.lua): add support for noice statusline component
feat(mason.lua): update installed language servers list
feat(noice.lua): add configuration for noice plugin
feat(none-ls.lua): remove black and mypy formatters from null-ls setup

fix(nvim-cmp.lua): change completeopt value to "menu,menuone,preview,noinsert" and add autocomplete trigger event on text change
feat(nvim-cmp.lua): add border and winhighlight settings for documentation window to improve visual appearance
feat(nvim-cmp.lua): add 'nvim_lsp_signature_help' as a source for autocompletion
refactor(colorscheme.lua): refactor SetupWindowPreferences function to dynamically set blend values for highlight groups
feat(init.lua): add setting for 'completeopt' to "menuone"
feat(plugins/noice.lua): add configuration for 'noice.nvim' plugin with dependencies and event trigger
feat(plugins/nvim-treesitter.lua): update configuration to run TSUpdate command silently

feat(utils): add Lua utility functions to detect and manage Lua versions and paths
feat(utils): add Python utility functions to check and resolve Python environments
style(theme): update current theme to 'catppuccin' in Lua script
2024-09-19 14:35:11 +01:00
David Ibia 5f86592ed4 style(colorscheme.lua): add missing newline after SetupWindowPreferences function
feat(colorscheme.lua): add setting for NormalNC highlight group to maintain consistency
perf(colorscheme.lua): improve logging by using vim.notify instead of console.log
2024-07-30 23:50:07 +01:00
David Ibia 318c2a2421 refactor(nvim-treesitter.lua): improve code formatting and indentation for better readability and maintainability 2024-07-30 23:49:57 +01:00
David Ibia 7e033dc750 style(catppuccin.lua): update the percentage value for dim_inactive to 0.50 for better visual consistency 2024-07-30 23:49:49 +01:00
David Ibia da52a830f6 chore(trouble.lua): remove unused trouble.lua file from the project 2024-07-30 23:22:24 +01:00
David Ibia b235a80f10 feat(telescope.lua): add key mappings to use <C-t> to open trouble and send to qflist with <C-q> in insert and normal mode to improve usability and productivity 2024-07-30 23:22:19 +01:00
David Ibia 43c3a7ce37 feat(nvim-cmp.lua): add custom border function to define border characters for completion and documentation windows
feat(nvim-cmp.lua): configure window settings for completion and documentation windows to improve visual appearance and readability
2024-07-30 23:22:14 +01:00
David Ibia 5631e845d1 chore(init.lua): disable Neovim intro message to improve user experience 2024-07-30 23:22:04 +01:00
David Ibia a101cf5e0c feat(trouble.lua): add key mappings for Trouble plugin to provide quick access to various functionalities like toggling diagnostics, symbols, LSP, location list, and quickfix list 2024-07-30 23:21:58 +01:00
David Ibia 7ac3d90843 feat(telescope.lua): add new options to file_browser extension for better customization and display
feat(telescope.lua): load 'themes' extension in telescope for additional functionality
feat(telescope.lua): update key mappings for opening file browser to improve usability and clarity
2024-07-29 01:03:08 +01:00
David Ibia d74c40a9af style(nvim-cmp.lua): improve code formatting by aligning comments and values for better readability 2024-07-29 01:03:03 +01:00
David Ibia a8403da735 chore(lualine.lua): comment out lualine_c and lualine_z sections to temporarily remove tmux status components from lualine configuration 2024-07-29 01:02:55 +01:00
David Ibia 3be2e4f344 feat(conform.lua): add support for multiple formatters for different file types to improve code formatting consistency and flexibility 2024-07-29 01:02:50 +01:00
David Ibia 3f70665f56 feat(telescope.lua): add "telescope-themes" as a dependency to enhance the visual appearance of the telescope plugin 2024-07-29 01:02:41 +01:00
David Ibia 93d89bef5b feat(conform.lua): add conform plugin configuration to load on BufReadPre and BufNewFile events 2024-07-29 01:02:36 +01:00
David Ibia 38dfc79f02 style(tokyonight.lua): add missing comma after the priority field to maintain consistency in the configuration object 2024-07-29 01:02:30 +01:00
David Ibia c05651f3b2 style(lsp-config.lua): improve formatting for dependencies list for better readability and maintainability 2024-07-29 01:02:25 +01:00
David Ibia db3b05721a feat(catppuccin.lua): add catppuccin plugin configuration with priority set to 1000 2024-07-29 01:02:18 +01:00
David Ibia c4d1bc9809 chore(lua): remove unused files related to themes and plugins for cleanup and organization purposes 2024-07-29 01:02:11 +01:00
David Ibia c25f8963ba feat(catppuccin.lua): add new Lua file catppuccin.lua with configuration for catppuccino theme setup 2024-07-29 01:01:58 +01:00
David Ibia 424dcf0028 feat(colorscheme.lua): add colorscheme.lua file to define color schemes for different themes
feat(colorscheme.lua): add SetupWindowPreferences function to set window preferences for colorschemes
feat(colorscheme.lua): add SyncWezTerm function to sync colorschemes with WezTerm if available in the system
2024-07-29 01:01:34 +01:00
David Ibia 4b6c92e7ed feat(otter.lua): add configuration for otter.nvim plugin to support Python and Lua filetypes 2024-07-29 01:01:28 +01:00
David Ibia e633db4e7e style(init.lua): remove extra newline at the beginning of the file to improve code readability 2024-07-29 01:01:19 +01:00
David Ibia 2feb9797f7 fix(lazy.lua): fix syntax error in require statement for colorscheme module
feat(lazy.lua): add error handling when cloning lazy.nvim repository to provide feedback to user in case of failure
2024-07-29 01:01:12 +01:00
David Ibia e13ee7edbd fix(remap.lua): replace print statement with vim.notify to display error message with log level ERROR for unsupported filetypes 2024-07-29 01:01:06 +01:00
David Ibia c39c7a7556 feat(plugins/tmux-status.lua): add tmux-status.nvim plugin configuration
feat(current-theme.lua): set colorscheme to catppuccino-mocha using vim.cmd
2024-07-29 01:00:58 +01:00
David Ibia 162ce343bd feat: updated lock 2024-07-01 15:56:02 +01:00
David Ibia 750a2169b1 refactor(remap.lua): remove unused VIM Maximizer keymap and description to clean up code and improve readability 2024-07-01 15:54:27 +01:00
David Ibia 740dbe9f7d feat(telescope-file-browser.lua): add telescope-file-browser.lua configuration file to manage dependencies for file browsing functionality in Neovim using Telescope plugin. 2024-07-01 15:54:22 +01:00
David Ibia 30144c8a48 refactor(lualine.lua): remove IsMoltenActive function and related configuration as it is no longer needed in the lualine setup
chore(lualine.lua): clean up unnecessary code related to molten statusline configuration to improve code readability and maintainability
2024-07-01 15:54:14 +01:00
David Ibia 50dd3df42a refactor(nvim-tree.lua): update require path for nvim-tree to point to the correct location in the project structure 2024-07-01 15:54:09 +01:00
David Ibia 4027c62264 style(trouble.lua): improve keymap descriptions for better readability and clarity 2024-07-01 15:54:04 +01:00
David Ibia 939227fdc8 feat(telescope.lua): add file_browser extension with hijack_netrw option for improved file browsing experience
feat(telescope.lua): add key mappings for opening file browser, fuzzy finding files in cwd and recent files, and finding files in git
feat(telescope.lua): add key mapping for fuzzy finding string under cursor in cwd
2024-07-01 15:53:55 +01:00
David Ibia 42de4a6ad7 chore(molten.lua): remove unnecessary configuration for molten plugin
chore(quarto.lua): remove unnecessary configuration for quarto plugin
2024-07-01 15:53:26 +01:00
David Ibia 97c0e26c5b style(otter.lua): fix indentation and spacing for better code readability
feat(otter.lua): add file type (ft) configuration for Python and Lua files
2024-07-01 15:53:15 +01:00
David Ibia bd3f2df13a feat(nvim-tree.lua): add configuration for nvim-tree plugin with dependencies and custom setup function 2024-07-01 15:53:08 +01:00
David Ibia 91bab15767 chore(plugins): remove unused image, molten, and quarto plugins from the project 2024-07-01 15:52:56 +01:00
David Ibia a322834154 style(none-ls.lua): remove print statements for cleaner code and better readability 2024-06-21 12:54:43 +01:00
David Ibia 2e5c3a7f35 style(lsp-config.lua): improve code formatting for better readability
feat(lsp-config.lua): add configuration for astro and kotlin language servers to enhance language support
2024-06-21 12:54:20 +01:00
David Ibia b1737abd9d feat(mason.lua): add 'astro' to the list of installed language servers to support Astro language in Mason configuration 2024-06-21 12:51:57 +01:00
David Ibia 7c652b6995 chore(lazy-lock.json): update commit hashes for various plugins to latest versions 2024-06-21 12:51:51 +01:00
David Ibia a3f904b2da feat(none-ls.lua): add functions CheckPoetryVirtualEnv and ResolvePythonEnvironment to handle virtual environments more efficiently 2024-06-21 12:51:44 +01:00
David Ibia 647acfb687 chore(image.lua): add lazy loading for the image plugin to improve performance and add support for additional file types (png, jpg, jpeg, gif, webp, svg) 2024-06-14 02:26:06 +01:00
David Ibia 5060d0b816 feat(lualine.lua): add function IsMoltenActive to check if Molten plugin is active and display corresponding status line configuration 2024-06-14 02:25:56 +01:00
David Ibia 2b7ce8f520 feat(flutter-tools.lua): add configuration for flutter-tools statusline decorations
feat(lsp-config.lua): update key bindings for code actions and references, remove pycodestyle config
feat(lualine.lua): add functions to display Flutter Tools statusline and check if Flutter Tools is active
feat(mason.lua): add kotlin_language_server to the list of supported language servers
feat(molten.lua): improve configuration for Molten plugin based on file type
feat(none-ls.lua): improve configuration for null-ls sources, resolve virtual environment for mypy diagnostics

fix(telescope.lua): update trouble import path to sources instead of providers
feat(telescope.lua): add vimgrep_arguments to improve search functionality
feat(telescope.lua): add mappings for trouble.open in insert and normal mode
feat(telescope.lua): load extensions flutter and dap
feat(telescope.lua): define custom find_files function with specific find_command
feat(trouble.lua): update trouble import path to sources instead of providers
feat(trouble.lua): update mappings to use trouble_sources.open instead of trouble_telescope.open_with_trouble
feat(core/init.lua): add ignorecase and smartcase options for case-insensitive searching
feat(core/init.lua): add backspace option for more flexible backspacing behavior
feat(core/init.lua): set cursor color based on mode in InsertEnter and InsertLeave autocmds
feat(dap.lua): add nvim-nio dependency and load telescope-dap.nvim extension
feat(flutter-tools.lua): add flutter-tools.nvim plugin configuration
feat(molten.lua): add lazy loading and ft option for Python files
feat(none-ls.lua.disabled): add none-ls.nvim plugin configuration
feat(poet-v.lua): add lazy loading and ft option for Python files
feat(vim-tmux-navigator.lua): update cmd and keys for vim-tmux-navigator plugin

chore(remap.lua): reorganize keymap descriptions for better clarity and readability
feat(remap.lua): add key mappings for jumping up, down, to next, and to previous locations with center screen
feat(remap.lua): add key mappings for resizing windows right, left, up, and down by 10 lines
feat(safe-invoke.lua): add utility function SafeInvoke to safely invoke functions and handle errors
2024-06-14 02:03:40 +01:00
David Ibia a96a4f719e feat(nvim-cmp.lua): change mapping confirm behavior to select current suggestion by default 2024-03-17 15:03:17 +01:00
David Ibia 5a617aeaff style(treesj.lua): fix indentation and align key-value pairs for better readability
feat(treesj.lua): add max_join_length option to tsj.setup for configuring maximum join length
feat(treesj.lua): add silent and noremap options to opts variable for better key mapping control
2024-03-17 15:02:45 +01:00
David Ibia 41fb4776df chore(lazy-lock.json): update commit hashes for various plugins to their latest versions 2024-03-17 15:02:32 +01:00
David Ibia 36a4939eb2 chore(supertab.lua): remove supertab configuration files as they are no longer needed 2024-03-17 15:02:25 +01:00
David Ibia 0241ccc827 feat(none-ls.lua): add mypy diagnostic tool with extra_args to specify python executable path based on environment variables 2024-03-17 15:02:11 +01:00
David Ibia bacfe5981e style(mason.lua): remove unnecessary semicolon at the end of require statement
feat(mason.lua): replace eslint with biome in the list of installed LSP servers for mason configuration
2024-03-17 15:02:00 +01:00
David Ibia 5e7ffa698a refactor(lsp-config.lua): remove pyflakes from pylsp setup to improve performance and simplify configuration
feat(lsp-config.lua): add configuration for biome server to support additional filetypes and improve language server capabilities
2024-03-17 15:01:47 +01:00
David Ibia e86c79c0f4 style(incline.lua): fix indentation and formatting for better code readability
feat(incline.lua): add hide option to hide cursorline in the setup configuration
feat(incline.lua): improve path shortening logic for long lines in the render function
2024-03-13 13:35:48 +01:00
David Ibia a36964cd5c style(init.lua): improve formatting and indentation for better readability
feat(init.lua): add functionality to change cursor color based on different modes for better user experience
2024-03-13 03:54:08 +01:00
David Ibia bbda0a7757 style(init.lua): comment out unused vim.opt.guicursor setting for clarity
feat(init.lua): change statuscolumn and cursorline settings to use vim.opt for consistency
refactor(init.lua): remove redundant undodir and undofile settings as they are not needed
2024-03-13 01:57:55 +01:00
David Ibia 7ab0dd47a5 feat(undotree.lua): set undodir option to store undo files in ~/.vim/undodir
feat(undotree.lua): enable undofile option to persist undo history between sessions
2024-03-13 01:57:47 +01:00
David Ibia 2312facd84 fix(lazy-lock.json): update commit hashes for fzf and mason-lspconfig.nvim packages to match the latest versions
feat(lazy-lock.json): update commit hashes for nvim-lspconfig and nvim-treesitter packages to match the latest versions
fix(lazy-lock.json): update commit hash for tokyonight package to the latest version
2024-03-13 00:55:04 +01:00
David Ibia d01a343ff5 feat(init.lua): add statuscolumn setting to display current line, total lines, and column number in the status line 2024-03-13 00:54:55 +01:00
David Ibia b202796340 feat(jupytext.lua): add jupytext setup configuration for markdown style and output extension to .md for better compatibility with markdown files 2024-03-10 12:22:49 +01:00
David Ibia db5156be5a chore(lualine.lua): improve code formatting by aligning comments and adding whitespace for better readability
feat(lualine.lua): add support for molten statusline configuration to enhance statusline customization
2024-03-10 12:22:41 +01:00
David Ibia 730b62e1da feat(molten.lua): add autocmds to dynamically adjust configuration based on file type and Molten status
feat(molten.lua): add autocmd to export output chunks to Jupyter notebook on write
feat(molten.lua): add autocmds to import output chunks from Jupyter notebook based on kernel
feat(molten.lua): add autocmd to initialize Molten buffer and import output chunks
2024-03-10 12:22:33 +01:00
David Ibia b5d1df5dc5 style(nvim-cmp.lua): reformat code for better readability and consistency
feat(nvim-cmp.lua): add custom source "otter" for otter completion in autocompletion sources
2024-03-10 12:22:25 +01:00
David Ibia 3e9289046f feat(nvim-treesitter-context.lua): add treesitter-context plugin configuration to enhance code context visibility and navigation 2024-03-10 12:22:18 +01:00
David Ibia 99579eeab9 feat(nvim-treesitter.lua): add support for additional parsers (markdown_inline, markdown) to improve syntax highlighting capabilities
feat(nvim-treesitter.lua): enable textobjects for moving, selecting, and swapping code blocks to enhance code navigation and manipulation within the editor
2024-03-10 12:22:11 +01:00
David Ibia ef623f83ad feat(otter.lua): add support for embedding Python and Lua languages in Otter 2024-03-10 12:22:04 +01:00
David Ibia 77340c5dcf feat(quarto.lua): add Quarto setup configuration for language server protocol features, code runner settings, and keymap bindings to enhance Quarto functionality. 2024-03-10 12:21:56 +01:00
David Ibia 67e1efba83 feat(init.lua): add maplocalleader configuration to set a custom local leader key for vim commands 2024-03-10 12:21:35 +01:00
David Ibia c22561d18e feat(jupytext.lua): add jupytext plugin configuration to load jupytext.nvim and set lazy loading to false 2024-03-10 12:21:29 +01:00
David Ibia 347718979c feat(molten.lua): add molten-nvim plugin configuration to enhance Neovim functionality 2024-03-10 12:21:22 +01:00
David Ibia 7caf5d4241 feat(nvim-treesitter-context.lua): add nvim-treesitter-context plugin configuration to load custom settings for better context highlighting in Neovim 2024-03-10 12:21:15 +01:00
David Ibia 153a3f538e feat(otter.lua): add configuration for otter.nvim plugin to load custom settings after plugin initialization 2024-03-10 12:21:08 +01:00
David Ibia 8ab0ebd57e feat(quarto.lua): add quarto plugin configuration to support quarto-nvim and its dependencies for enhanced functionality 2024-03-10 12:21:01 +01:00
David Ibia 9f5022b61b feat(init.lua): add additional paths to package.path to include luarocks modules installed in user's home directory 2024-03-10 12:20:47 +01:00
David Ibia 7b78ace466 style(remap.lua): improve code readability by adding comments and whitespace
feat(remap.lua): add logic to only source specific file extensions to enhance security and prevent unintended sourcing of files
2024-03-10 12:20:39 +01:00
David Ibia f546a66847 chore(gitignore): update .gitignore to exclude .env file from being tracked 2024-03-10 12:20:19 +01:00
David Ibia 5979833c16 fix(lazy-lock.json): update commit hashes for various plugins to reflect the latest changes and improvements in the dependencies. 2024-03-10 12:20:09 +01:00
David Ibia 8f31e19160 feat(image.lua): add configuration for image.nvim plugin to support displaying images in the editor with customizable options 2024-03-10 12:19:57 +01:00
David Ibia 6ca986870d chore(lazy-lock.json): update commit hashes for LuaSnip, copilot.vim, fzf,
git-blame.nvim, lualine.nvim, nvim-lspconfig, nvim-silicon, nvim-tree.lua,
nvim-treesitter, nvim-web-devicons, pkl-neovim, tailwindcss-colors.nvim
and add support for nvim-highlight-colors
2024-03-05 12:07:41 +01:00
David Ibia e875cdcf4b docs(README.md): remove TailwindCSS Colors from list of installed plugins 2024-03-05 12:07:35 +01:00
David Ibia 4ddb4399ab feat(highlight-colors): add support for nvim-highlight-colors plugin to customize syntax highlighting colors in Neovim 2024-03-05 12:07:24 +01:00
David Ibia 193672949d refactor(lsp-config.lua): remove tailwindcss specific logic from lsp config file
feat(tailwindcss-colors.lua): delete tailwindcss-colors.lua file
feat(tailwindcss-colors.lua): delete tailwindcss-colors setup call
feat(tailwindcss-colors.lua): delete tailwindcss-colors plugin configuration file
2024-03-05 12:06:51 +01:00
David Ibia c0200d8a4d docs(README.md): add Fuzzy Finder section with fzf link for improved
navigation
docs(README.md): reorganize Fonts section into Themes and Plugins for better
clarity and add Tokyonight theme link
docs(README.md): update Plugins section with CheatSheet and Comment plugin
links for additional functionality
2024-03-03 16:14:56 +01:00
David Ibia d811b3e73f feat(init.lua): add support for absolute.helpers module to provide additional helper functions 2024-03-03 14:10:23 +01:00
David Ibia e625999f55 feat(init.lua): add require statement for open-project-folder module to enable its functionality 2024-03-03 14:10:16 +01:00
David Ibia 6bf7c84173 feat(open-project-folder.lua): add Lua script to open project root folder based on OS
feat(open-project-folder.lua): add key mapping to open project root folder in Neovim
2024-03-03 14:10:03 +01:00
David Ibia 282abdbd7e docs(README.md): add keybindings section with general keybindings table to provide
users with information on available keybindings for the application
2024-03-03 12:04:42 +01:00
David Ibia d83d223161 chore(gitignore): add /Screenshots/* to ignore all files in Screenshots directory 2024-03-03 12:03:49 +01:00
David Ibia db4b8ad12c refactor(gitignore.lua): replace GetProjectRoot function with require statement for
absolute.utils.get-git-root module to improve code organization and readability
feat(gitignore.lua): update keymap description to include GitIgnore prefix for
clarity and consistency with functionality provided by the keymap
2024-03-03 12:02:53 +01:00
David Ibia 6afb379fad feat(detect-os.lua): add script to detect the operating system and return
the corresponding value based on the environment variables and system
commands available
2024-03-03 12:02:46 +01:00
David Ibia 2bace8525a feat(get-git-root.lua): add Lua function to get the root directory of a Git project using 'git rev-parse --show-toplevel' command 2024-03-03 12:02:38 +01:00
David Ibia c8b30a453e refactor(nvim-silicon.lua): change variable names for better readability
feat(nvim-silicon.lua): add functionality to create a screenshots directory and
open it based on the operating system
feat(nvim-silicon.lua): add keymaps for creating a screenshot and opening the
screenshots directory
feat(nvim-silicon.lua): update silicon setup with font and output settings
2024-03-03 12:02:27 +01:00
David Ibia 3ff0245770 chore(gitignore): add .DS_Store file to gitignore to prevent it from being tracked 2024-02-29 21:42:58 +01:00
David Ibia e8e96fa782 fix(lazy-lock.json): update commit hashes for copilot.vim, fzf, gitignore.nvim,
incline.nvim, mini.nvim, none-ls.nvim, nvim-lspconfig, nvim-surround,
nvim-treesitter
feat(lazy-lock.json): add new plugins nvim-silicon, update their commit hashes
2024-02-29 21:35:41 +01:00
David Ibia 884fc44344 feat(nvim-silicon.lua): add support for generating code images using Silicon
feat(nvim-silicon.lua): create configuration to use Silicon for code image generation
2024-02-29 21:35:27 +01:00
David Ibia 696ba76d07 docs(README.md): reorganize and update dependencies, binaries, and plugins sections for
better readability and clarity
2024-02-29 21:35:01 +01:00
David Ibia de887bc275 chore(lazy-lock.json): update commit hash for copilot.vim to 8f24a74d5937c1fb28fbce5caf05ffc633093fc5
chore(lazy-lock.json): remove hologram.nvim entry from lazy-lock.json file
2024-02-26 21:38:05 +01:00
David Ibia 1c57efd8cb refactor(incline.lua): change window placement to right for better UI consistency
feat(incline.lua): add function shortenPath to truncate long file paths for display
2024-02-26 21:37:57 +01:00
David Ibia 260aff8ebf chore(hologram.lua): remove unused hologram.lua files from absolute directory 2024-02-26 21:36:50 +01:00
David Ibia 30c2b464e0 refactor(incline.lua): remove unused functions get_git_diff and get_diagnostic_label
feat(incline.lua): add display of relative path in the rendered output for better context
2024-02-26 15:33:42 +01:00
David Ibia 6fba1ca3f1 refactor(incline.lua): improve code formatting and indentation for better readability
feat(incline.lua): add support for displaying diagnostic signs and git diff
information in the incline plugin to enhance user experience
2024-02-26 14:57:09 +01:00
David Ibia e328a43453 chore(lazy-lock.json): add gitsigns.nvim plugin with specific branch and commit 2024-02-26 14:56:31 +01:00
David Ibia 69319e52c5 refactor(incline.lua): update incline setup to include window padding and margin
feat(incline.lua): add custom rendering function to display file icons, git diff
indicators, and diagnostic signs in incline plugin
2024-02-26 14:56:24 +01:00
David Ibia 49f2e99f83 feat(gitsigns): add gitsigns plugin to enhance git integration in Neovim
feat(gitsigns): configure gitsigns plugin to load setup in after directory for customization
2024-02-26 14:56:13 +01:00
David Ibia d463bfcde0 chore(lazy-lock.json): update commit hashes for various plugins
feat(lazy-lock.json): update copilot.vim, friendly-snippets, fzf, git-blame.nvim,
mason-lspconfig.nvim, mason.nvim, none-ls.nvim, nvim-lspconfig, nvim-tree.lua,
nvim-treesitter, nvim-web-devicons plugins with new commit hashes
2024-02-26 14:37:23 +01:00
David Ibia c4e74ff5e1 style(hologram.lua): fix indentation for consistency and readability
feat(hologram.lua): change image_pattern to start with a dot for file extensions
feat(hologram.lua): add support for handling image previews on buffer enter and leave events
2024-02-26 14:37:14 +01:00
David Ibia ba39d9bfe4 style(toggleterm.lua): fix indentation and alignment for better readability
feat(toggleterm.lua): add lazygit terminal setup with custom configurations
feat(toggleterm.lua): add keymap to toggle lazygit terminal with leader key
feat(toggleterm.lua): comment out keymap for opening a general terminal
2024-02-26 14:37:06 +01:00
David Ibia dcabac3a07 feat(incline.lua): add incline setup in incline.lua to configure incline plugin
feat(incline.lua): add incline plugin configuration in plugins/incline.lua to load incline setup on VeryLazy event
2024-02-26 14:36:51 +01:00
David Ibia dce8aaa3bc chore(bufferline.lua): remove bufferline configuration and key mappings for tab
management to simplify and streamline the setup of the bufferline plugin
chore(bufferline.lua): remove bufferline plugin configuration and dependencies
to declutter the plugin setup and improve maintainability
2024-02-26 14:36:29 +01:00
David Ibia d7f4bb752f chore(lazy-lock.json): update commit hashes for copilot.vim, friendly-snippets,
fzf, mason-lspconfig.nvim, none-ls.nvim, nvim-bqf, nvim-dap,
nvim-dap-python, nvim-dap-ui, nvim-lspconfig, nvim-tree.lua,
nvim-treesitter, nvim-web-devicons to latest versions
2024-02-22 12:27:10 +01:00
David Ibia 470940593f refactor(remap.lua): change keymap for regex replace to <leader>sr for better
clarity and add keymap for replacing selected text in visual mode with <leader>ss
2024-02-22 12:26:55 +01:00
David Ibia 50368bc5c7 fix(remap.lua): change keymap for selecting all text from <leader>a to <C-a> to
avoid conflicts with other keybindings and improve usability.
2024-02-18 02:48:58 +01:00
David Ibia b26965f4d2 feat(remap.lua): add keymap to show keymaps using Telescope plugin for better navigation and understanding of keybindings 2024-02-17 22:34:15 +01:00
David Ibia 7528b01bfa style(vim-tmux-navigator.lua): comment out unused key binding for TmuxNavigatePrevious command to improve code readability and maintainability 2024-02-16 23:03:01 +01:00
David Ibia 55edad9ed6 fix(toggleterm.lua): change key mapping for opening lazygit from "<leader>gl" to "<leader>gs" to avoid conflicts with other mappings
feat(toggleterm.lua): set toggleterm direction to "float" to make the terminal window float instead of splitting the current window
2024-02-16 22:59:57 +01:00
David Ibia bfcd015867 chore(vim-fugitive): remove vim-fugitive.lua files
The vim-fugitive.lua files were removed as they are no longer needed in the project.
2024-02-16 14:14:26 +01:00
David Ibia 15246a74ab feat(toggleterm.lua): add support for toggleterm plugin to open a terminal and lazygit
This commit adds support for the toggleterm plugin in Neovim. It introduces a new Lua file `toggleterm.lua` in the `absolute/after` directory, which configures the toggleterm plugin. It sets up key mappings to open a terminal and toggle the lazygit terminal.

The `toggleterm.lua` file imports the `toggleterm` and `Terminal` modules from the toggleterm plugin. It then sets up the toggleterm plugin using the `toggle_term.setup()` function.

The `lazygit` terminal is defined using the `Terminal:new()` function. It specifies the command to run (`lazygit`), the directory to run the command in (`git_dir`), and the floating window options. It also defines an `on_open` function to start insert mode and set a key mapping to close the terminal, and an `on_close` function to start insert mode.

The `_LAZYGIT_TOGGLE()` function is defined to toggle the `lazygit` terminal.

Key mappings are set using the `vim.api.nvim_set_keymap()` function. The `<leader>gl` mapping is set to call the `_LAZYGIT_TOGGLE()` function, and the `<C-`` mapping is set to open a terminal using the `ToggleTerm` command.

Additionally, a new Lua file `toggleterm.lua` is added in the `absolute/plugins` directory, which exports the toggleterm plugin configuration. It requires the `absolute.after.toggleterm` module to configure the toggleterm plugin.
2024-02-16 14:13:23 +01:00
David Ibia bbc43f98ee chore(lazy-lock.json): update commit hashes for fzf, nvim-lspconfig, nvim-tree.lua, nvim-treesitter, nvim-web-devicons, treesj, undotree, and vim-fugitive dependencies
The commit hashes for the following dependencies have been updated:
- fzf: updated from 90b8187 to a4f6c8f
- nvim-lspconfig: updated from 1bc8341 to 41f40dc
- nvim-tree.lua: updated from 8cbb1db to 4a87b8b
- nvim-treesitter: updated from cbf0dfd to b52b298
- nvim-web-devicons: updated from 313d9e7 to 7f30f2d
- treesj: updated from bc51763 to 60e2728
- undotree: updated from 7df3be7 to 9dbbf3b
- vim-fugitive: updated from fab00f7 to 8376227

These updates ensure that the latest versions of these dependencies are being used.
2024-02-11 21:30:39 +01:00
David Ibia 213a312bed feat(apple-pkl.lua): add plugin configuration for apple/pkl-neovim
This commit adds a new Lua file `apple-pkl.lua` to the `absolute/plugins` directory. The file contains the configuration for the plugin `apple/pkl-neovim`. The configuration includes the following:
- The plugin URL: `https://github.com/apple/pkl-neovim`
- The plugin should be loaded lazily
- The plugin should be triggered on the event "BufReadPre *.pkl"
- The plugin has a dependency on `nvim-treesitter/nvim-treesitter`
- The plugin build function installs the `pkl` language for Treesitter using the command `TSInstall! pkl`
2024-02-11 21:29:57 +01:00
David Ibia a0d0658a16 feat(hologram.lua): add support for hologram plugin to display and handle image previews in Neovim
This commit adds two new files: `hologram.lua` and `hologram.lua`.

The `hologram.lua` file contains the configuration for the `hologram.nvim` plugin. It is responsible for setting up the plugin and linking it to the `absolute.after.hologram` file.

The `hologram.lua` file contains the implementation for handling image previews using the `hologram` and `image` modules. It sets up autocmds to trigger the `handle_image_preview` function when entering or opening a buffer with an image file. The function creates a new image object and displays it for 5 seconds before deleting it. There is also a `handle_image_preview_close` function that is triggered when leaving or closing a buffer with an image file, but it is currently commented out.

These changes were made to enhance the functionality of Neovim by allowing users to preview images within the editor using the `hologram.nvim` plugin.
2024-02-08 22:51:47 +01:00
David Ibia bce7208644 refactor(dashboard.lua): remove unnecessary empty lines
refactor(dashboard.lua): update dashboard setup config to include the header option with the provided header array
2024-02-08 22:50:59 +01:00
David Ibia 0900427b05 fix(lsp-config.lua): fix typo in variable name 'bufnr' to 'opts.buffer' to enable completion triggered by <c-x><c-o>
refactor(lsp-config.lua): remove unnecessary 'enabled' property from 'pycodestyle' configuration
2024-02-08 22:50:45 +01:00
David Ibia 5d326673e0 feat(todo-comments.lua): add support for todo-comments plugin
This commit adds support for the todo-comments plugin. It includes the following changes:

- Added a new file `todo-comments.lua` in the `lua/absolute/after` directory.
- Imported the `todo-comments` module.
- Set up the `todo-comments` plugin with default options.
- Defined key mappings for jumping to previous and next todo comments.
- Defined key mappings for opening comments in Telescope and Trouble.
- Added a new file `todo-comments.lua` in the `lua/absolute/plugins` directory.
- Exported a table with the configuration for the `todo-comments` plugin, including its dependencies and a config function that requires the `absolute.after.todo-comments` module.
2024-02-08 22:50:11 +01:00
David Ibia 0dd38ef0ca chore(lazy-lock.json): update dependencies
- Update commit hashes for the following dependencies:
  - copilot.vim
  - dashboard-nvim
  - fzf
  - mason-lspconfig.nvim
  - none-ls.nvim
  - nvim-cmp
  - nvim-dap
  - nvim-dap-python
  - nvim-lspconfig
  - nvim-tree.lua
  - nvim-treesitter
  - nvim-web-devicons
  - rose-pine
  - tokyonight
  - treesj
  - undotree
  - vim-fugitive

- Add support for the following dependencies:
  - hologram.nvim
  - todo-comments.nvim

The commit hashes have been updated to the latest versions to ensure compatibility and take advantage of any bug fixes or new features. The new dependencies have been added to enhance the functionality of the project.
2024-02-08 22:49:10 +01:00
David Ibia d4a82e867f chore(lazy-lock.json): update dependencies
- Update `copilot.vim` to commit `22fd9542e3c47552abab5e685fefd760e4f405b2`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `dressing.nvim` to commit `6f212262061a2120e42da0d1e87326e8a41c0478`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `friendly-snippets` to commit `b8fae73a479ae0a1c54f5c98fa687ae8a0addc53`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `fzf` to commit `dd886d22f0b95700ece24954ac00f6e2628226f1`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `nightfly` to commit `56fe47bd16272d9644fd9946a2596fa2c3905c35`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `none-ls.nvim` to commit `912f81829e9ab4ee3d54c3ea5a304c264f0003bc`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `nvim-lspconfig` to commit `021906284dcfb938bc236f8295af2650c60cb807`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `nvim-tree.lua` to commit `f39f7b6fcd3865ac2146de4cb4045286308f2935`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `nvim-treesitter` to commit `e9602f41192ba51842b4be4d02c718a64cd57acf`
  - Reason: Update to the latest commit for bug fixes and new features.
- Update `nvim-web-devicons` to commit `aaec87dbdaa776bfa0a13c8694bec9bcb7454719`
2024-01-30 16:11:02 +01:00
David Ibia 850814d169 feat(comment.lua): add support for commenting functionality in the Absolute plugin
feat(comment.lua): configure Comment.nvim plugin to load the comment setup from absolute.after.comment.lua file
2024-01-30 16:10:38 +01:00
David Ibia 41e667d58a chore(lsp-config.lua): update configuration for pylsp and emmet_ls
feat(lsp-config.lua): enable rope_autoimport, flake8, pyflakes, and pycodestyle plugins for pylsp
refactor(lsp-config.lua): comment out jedi_language_server configuration
2024-01-30 16:06:14 +01:00
David Ibia 246291ed8c feat(remap.lua): add keymap for selecting all text with "<leader>a" shortcut
The change adds a new keymap in the remap.lua file to select all text in the editor when the "<leader>a" shortcut is pressed. This allows users to quickly select the entire document without manually scrolling or using other selection methods.
2024-01-30 16:05:54 +01:00
David Ibia 4bc3130791 chore(none-ls.lua): add black as a formatting source in null-ls setup to support formatting for Python files 2024-01-30 16:05:39 +01:00
David Ibia 8712e379c4 Updated dependencies 2024-01-25 14:56:06 +01:00
David Ibia be4db2a984 fix(remap.lua): update keymap command to toggle NvimTree instead of Maximizer
The keymap command for the leader key followed by backtick (`) has been updated to toggle the NvimTree instead of the Maximizer. This change improves the functionality of the keymap and aligns it with the desired behavior.
2024-01-25 14:55:45 +01:00
David Ibia 5cceac51e0 chore(remap.lua): update keymap description from "Toggle File Explorer" to "Show Cheatsheet" to accurately reflect the functionality
chore(remap.lua): update keymap command from "<cmd>NvimTreeToggle<CR>" to "<cmd>Cheatsheet<CR>" to match the updated functionality
chore(remap.lua): update description for moving selected line/block of text in visual mode up
2024-01-24 15:54:44 +01:00
David Ibia 707bc2a204 chore(nvim-tree.lua): reformat and organize the configuration options for nvim-tree plugin for better readability and maintainability 2024-01-24 15:54:34 +01:00
David Ibia 7d4ee66a33 feat(supertab.lua): add configuration for default completion type in SuperTab plugin
The configuration `vim.g.SuperTabContextDefaultCompletionType` is added to set the default completion type in the SuperTab plugin to `<c-n>`. This allows users to use the `<c-n>` key combination to trigger completion in the plugin.
2024-01-21 15:03:14 +01:00
David Ibia 8abbd568e5 chore(lsp-config.lua): update keybinding for signature help to use <leader>gh for better consistency
feat(lsp-config.lua): add support for Vue filetypes in emmet_ls configuration to enable emmet completion in Vue files
2024-01-21 15:03:01 +01:00
David Ibia ae7209b8d0 chore(none-ls.lua): update formatting sources in null-ls setup
The formatting sources in the null-ls setup have been updated. The `null_ls.builtins.formatting.black` and `null_ls.builtins.formatting.rustfmt` sources have been removed, and the `null_ls.builtins.formatting.autopep8` source has been added. This change was made to improve the formatting capabilities of the null-ls plugin.
2024-01-16 11:20:10 +01:00
David Ibia 197dbab5d2 chore(lazy-lock.json): update commit hashes for none-ls.nvim, nvim-treesitter, nvim-web-devicons, and rose-pine
The commit hashes for the following dependencies have been updated:
- none-ls.nvim: Updated from 7e146f3a188853843bb4ca1bff24c912bb9b7177 to cf81e765460f722a381e5f3f5e3cbdce88398517
- nvim-treesitter: Updated from fcf843bf14adaeee53aad1b28fabba1d3b62fc8d to 59d4c14a1a4262cf637ff2420032593afa062749
- nvim-web-devicons: Updated from 4f5e6414438c920743fc1bb92bee1047620d6321 to 140edfcf25093e8b321d13e154cbce89ee868ca0
- rose-pine: Updated from c01a4a61020ddcfd3448fbb9cf11309f336bfb7b to b00800948e35df1df02c80cdea07988c4325d3ac

These updates ensure that the project is using the latest versions of these dependencies.
2024-01-16 01:35:12 +01:00
David Ibia 2f81b9e3f7 chore(lsp-config.lua): refactor code formatting and improve readability
feat(lsp-config.lua): add support for tailwindcss lsp and attach tailwind_colors only when using tailwindcss lsp
feat(lsp-config.lua): add key mappings for various LSP functionalities like go to declaration, go to definitions, show documentation, show LSP implementation, get help, show LSP type definitions, smart rename, see available code actions, show LSP references, format file, and restart LSP
feat(lsp-config.lua): configure language servers for html, typescript, css, tailwindcss, svelte, emmet, python, jedi, docker, json, vue, rust, lua, css, htmx, docker file, docker compose, and eslint
2024-01-16 01:34:57 +01:00
David Ibia 8c04ed3ff7 feat(tailwindcss-colors.lua): add support for tailwindcss-colors plugin
The `tailwindcss-colors.lua` file was added to the `absolute/after` directory. This file imports the `tailwindcss-colors` module and sets it up.

The `tailwindcss-colors.lua` file was also added to the `absolute/plugins` directory. This file returns a table with the plugin configuration, including a `config` function that requires the `absolute.after.tailwindcss-colors` module.

These changes were made to add support for the `tailwindcss-colors` plugin in the Absolute Neovim configuration.
2024-01-15 02:12:59 +01:00
David Ibia e901890e97 feat(tailwind-sorter.lua): add tailwind-sorter plugin and configuration
The tailwind-sorter.lua file was added to the absolute/after directory. This file sets up the tailwind-sorter plugin with the following configuration:
- on_save_enabled is set to true, enabling the plugin to run on file save.
- on_save_pattern is set to a list of file patterns for which the plugin should run on save. The patterns include "*.html", "*.js", "*.jsx", "*.tsx", "*.twig", "*.hbs", "*.php", "*.heex", "*.astro", and "*.vue".

Additionally, the tailwind-sorter.lua file was added to the absolute/plugins directory. This file returns a table with the following properties:
- The first element is the plugin name "laytan/tailwind-sorter.nvim".
- The dependencies property specifies the required plugins "nvim-treesitter/nvim-treesitter" and "nvim-lua/plenary.nvim".
- The build property specifies the build command to be executed in the "formatter" directory. This command installs the necessary npm packages and builds the plugin.
- The config property is a function that requires the "absolute.after.tailwind-sorter" module, which contains the plugin configuration.

These changes were made to add the tailwind-sorter plugin to the project and configure it for use.
2024-01-15 02:12:46 +01:00
David Ibia 0499526c85 chore(lsp-config.lua): refactor and organize language server configurations for better readability and maintainability 2024-01-15 02:12:05 +01:00
David Ibia 57a1accde5 chore(lazy-lock.json): update dependencies for tailwind-sorter.nvim and tailwindcss-colors.nvim to latest commits on main branch 2024-01-15 02:11:51 +01:00
David Ibia 823b4f8900 chore(README.md): remove unnecessary section and update component description
feat(README.md): add TODO to list out plugins for better documentation
2024-01-15 02:11:38 +01:00
David Ibia 71a08f4097 chore(lazy-lock.json): update keyseer.nvim and mason-lspconfig.nvim dependencies
- Update keyseer.nvim to branch "main" and commit "6cb478f9b2be4af4680ceb0308a9b49cd6b6ea73"
- Update mason-lspconfig.nvim to branch "main" and commit "3ba1b92b771f33256b4969d696b82c8ae7075364"

These updates are necessary to ensure compatibility and take advantage of the latest features and bug fixes in the dependencies.
2024-01-15 01:49:17 +01:00
David Ibia 90154b6967 feat(keyseer): add keyseer plugin and configuration
Add keyseer plugin to the project by including the `jokajak/keyseer.nvim` package in the `lua/absolute/plugins/keyseer.lua` file. The plugin is configured to use the latest version available. The configuration file `lua/absolute/after/keyseer.lua` is also added, which sets up keyseer.
2024-01-15 01:49:02 +01:00
David Ibia 2342ae3f1b chore(remap.lua): remove unnecessary blank lines for better code readability
feat(remap.lua): add descriptions to keymap settings for better understanding and maintainability
fix(remap.lua): fix keymap setting for toggling TMUX Pane to use the correct leader key
2024-01-14 22:09:29 +01:00
David Ibia 0a16978543 refactor(lsp-config.lua): clean up code formatting and improve readability
feat(lsp-config.lua): add key mappings for LSP commands to improve productivity
feat(lsp-config.lua): configure additional language servers for HTML, Emmet, Pylsp, Jedi, Docker, JSON, Vue, and Rust
refactor(lsp-config.lua): remove unnecessary comments and blank lines
2024-01-14 22:09:19 +01:00
David Ibia dfbe7acbc4 chore(lazy-lock.json): update dressing.nvim and fzf dependencies
- Update dressing.nvim to commit b2c644abfaae7523bb393b0c452adf3ebdaf53dc
- Update fzf to commit 1a9ea6f738cfafab83a5e0e828e60f0bf68bffee

The dependencies dressing.nvim and fzf were updated to their latest commits to ensure compatibility and take advantage of any bug fixes or new features.
2024-01-14 22:09:09 +01:00
David Ibia 4f0f762caa feat(treesj.lua): add treesj.lua file to enable toggling of Treesitter Join functionality
The treesj.lua file is added to the project to enable the toggling of Treesitter Join functionality. The `tsj.setup` function is called to configure the plugin with the option `use_default_keymaps` set to `false`. This ensures that the default keymaps provided by the plugin are not used.

A keymap is set using `vim.keymap.set` to bind the `<leader>m` key combination in normal mode to the command `TSJToggle`. The `opts.desc` option is set to provide a description for the keymap.

This change allows users to toggle the Treesitter Join functionality using the `<leader>m` key combination in normal mode.
2024-01-14 04:01:44 +01:00
David Ibia adc0e7d95c feat(trouble.lua): add configuration for telescope plugin to integrate with trouble plugin
The `trouble.lua` file is added to configure the integration between the `telescope` plugin and the `trouble` plugin. This configuration sets up key mappings for opening trouble windows and quickfix lists. It also adds keybindings for toggling document diagnostics, workspace diagnostics, and the quickfix list using the leader key. This configuration enhances the functionality of the `telescope` plugin by integrating it with the `trouble` plugin.
2024-01-14 04:01:28 +01:00
David Ibia 4273043666 feat(fzf.lua): add fzf plugin configuration
The fzf.lua file is added to the absolute/plugins directory. It contains the configuration for the fzf plugin. The configuration includes the plugin name "junegunn/fzf" and the build command "./install --all". This configuration enables the fzf plugin to be used in the project.
2024-01-14 04:01:10 +01:00
David Ibia de2237fb2c feat(git-blame.lua): add git-blame plugin configuration
The git-blame.lua file is added with the following configuration:
- The plugin "f-person/git-blame.nvim" is included.
- The event "VeryLazy" is associated with the plugin.
2024-01-14 04:00:58 +01:00
David Ibia 286a2f7ebe feat(nvim-surround.lua): add configuration for nvim-surround plugin
The `nvim-surround.lua` file was added to the `lua/absolute/after` directory. This file contains the configuration for the `nvim-surround` plugin. The `surround.setup({})` function is called to initialize the plugin with an empty configuration object. This allows the plugin to be used with default settings.
2024-01-14 04:00:45 +01:00
David Ibia 4591540449 chore(nvim-bqf.lua): add new file nvim-bqf.lua to the absolute/after directory 2024-01-14 04:00:33 +01:00
David Ibia 7834005138 feat(none-ls.lua): add none-ls plugin configuration
The none-ls plugin is added to the list of plugins in the absolute configuration. The plugin is configured to load the "absolute.after.none-ls" module. This configuration allows for the integration of the none-ls plugin into the absolute plugin system.
2024-01-14 04:00:21 +01:00
David Ibia 7b75e5058b feat(nvim-bqf.lua): add nvim-bqf plugin configuration
Add configuration for the nvim-bqf plugin. This plugin provides enhanced quickfix and location list functionality for Neovim. The configuration includes specifying the plugin as a dependency and configuring it to load after other plugins. Additionally, it requires the nvim-treesitter and fzf plugins as dependencies. Finally, it loads a custom configuration file for the nvim-bqf plugin.
2024-01-14 04:00:07 +01:00
David Ibia cba7ae9980 feat(none-ls.lua): add configuration for null-ls plugin to enable formatting with stylua, prettierd, shfmt, black, and rustfmt
The changes were made to add configuration for the null-ls plugin in the none-ls.lua file. This configuration enables formatting with the following tools: stylua, prettierd, shfmt, black, and rustfmt. This allows for consistent and automated formatting of code in the Lua project.
2024-01-14 03:59:54 +01:00
David Ibia 7aa69de8a8 feat(nvim-surround.lua): add nvim-surround plugin
Add the nvim-surround plugin to the list of plugins used in the configuration. This plugin provides convenient mappings and commands for manipulating surrounding characters. The plugin is sourced from the "kylechui/nvim-surround" repository, using the latest version available. The plugin is configured to be loaded during the "VeryLazy" event, and the necessary configuration file is required to be loaded after the plugin is initialized.
2024-01-14 03:59:36 +01:00
David Ibia 2a47d47b8b feat(treesj.lua): add treesj plugin configuration
Add a new file `treesj.lua` to the `absolute/plugins` directory. The file contains the configuration for the `treesj` plugin. The plugin is sourced from the repository `Wansmer/treesj` and has a dependency on `nvim-treesitter/nvim-treesitter`. The configuration includes loading the `absolute.after.treesj` module.
2024-01-14 03:41:44 +01:00
David Ibia 80f7dcf1e9 feat(trouble.lua): add trouble.nvim plugin with configuration to the project
The trouble.nvim plugin is added to the project. It is a plugin that provides a better way to handle and navigate through the list of diagnostics and other code issues. The plugin is added as a dependency and requires the nvim-tree/nvim-web-devicons plugin to function properly. The configuration for the trouble.nvim plugin is added in the absolute.after.trouble.lua file.
2024-01-14 03:15:56 +01:00
David Ibia 75a58a2d0b feat(cheatsheet.lua): add cheatsheet plugin and its dependencies to the configuration
Add the cheatsheet plugin and its dependencies to the configuration file. This allows for the integration of the cheatsheet functionality into the application.
2024-01-14 03:13:00 +01:00
David Ibia 3277805e69 chore(telescope.lua): refactor key mappings and add support for trouble.nvim integration
The key mappings in the telescope.lua file have been refactored to use the new mappings syntax introduced in the latest version of Telescope. Additionally, support for the trouble.nvim plugin has been added by mapping the `<C-q>` key to the `trouble.open_with_trouble` function in both insert and normal mode. This allows for easier navigation and troubleshooting within Telescope.
2024-01-14 03:12:36 +01:00
David Ibia 1305a943a1 chore(bufferline.lua): update keybindings for closing and creating tabs to improve consistency and avoid conflicts 2024-01-14 03:12:25 +01:00
David Ibia 5c953ee2ac chore(lazy-lock.json): update dependencies
- Update LuaSnip to commit 82108e7e31cc6fc223cc5df5cae6d89f70bb199f
  - WHY: Updating to the latest commit of LuaSnip to get the latest features and bug fixes.

- Add cheatsheet.nvim with commit 9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef
  - WHY: Adding cheatsheet.nvim as a new dependency to enhance the functionality of the application.

- Update copilot.vim to commit 1a55183ef9347d6f420406a3746474b6b9fb9ef5
  - WHY: Updating copilot.vim to the latest commit to benefit from the latest improvements and bug fixes.

- Update indent-blankline.nvim to commit 12e92044d313c54c438bd786d11684c88f6f78cd
  - WHY: Updating indent-blankline.nvim to the latest commit to get the latest enhancements and bug fixes.

- Update lspkind.nvim to commit 1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf
  - WHY: Updating lspkind.nvim to the latest commit to benefit from the latest features and improvements.

- Update mason-lspconfig.nvim to commit 0989bdf4fdf7b5aa4c74131d7ffccc3f399ac788
  - WHY: Updating mason-lspconfig.nvim to the latest commit to get the latest enhancements and bug fixes.

- Update mason.nvim to commit e110bc3be1a7309617cecd77bfe4bf86ba1b8134
  - WHY: Updating mason.nvim to the latest commit to benefit from the latest features and improvements.

- Update nightfly to commit 0c6e2e88bf15634af94a91fcc2e20e28a09dfecd
  - WHY: Updating nightfly to the latest commit to get the latest enhancements and bug fixes.

- Add none-ls.nvim with commit 7e146f3a188853843bb4ca1bff24c912bb9b7177
  - WHY: Adding none-l
2024-01-14 03:12:01 +01:00
David Ibia 979f229157 chore(init.lua): remove unnecessary lines and disable loading of Perl and Ruby providers
The lines `vim.g.loaded_perl_provider = 0` and `vim.g.loaded_ruby_provider = 0` were removed as they are unnecessary and not being used. This change improves the cleanliness of the code.

Additionally, the lines `-` were removed as they were empty and not serving any purpose.
2024-01-14 03:11:26 +01:00
David Ibia 3e331e02b6 refactor(colorscheme.lua): clean up indentation and remove commented out code
feat(colorscheme.lua): set default color to "rose-pine" if no color argument is provided
feat(colorscheme.lua): set theme to "tokyonight" by default
2024-01-13 23:55:39 +01:00
David Ibia 159b0e0b68 feat(jedi.lua): enable call signatures in Jedi completion popup and configure Jedi to use spaces instead of tabs for indentation
feat(supertab.lua): add Supertab plugin and configure it to be loaded after Absolute configuration
2024-01-05 23:38:40 +01:00
David Ibia 348d2904d6 refactor(init.lua): move require("absolute.remap") statement to the end of the file for better organization and readability 2024-01-05 16:20:13 +01:00
David Ibia 8a786d0420 feat(indent-blank-line): add support for indent-blank-line plugin
The `indent-blank-line` plugin is added to enhance the indentation of blank lines in the code. This improves code readability and makes it easier to navigate through the code. The plugin is configured to use the `ibl` module and is integrated into the existing `absolute.after` module.
2024-01-04 10:37:36 +01:00
David Ibia a57fdb2201 fix(init.lua): remove extra empty line
fix(absolute/after/colorscheme.lua): comment out unnecessary code for setting Normal and NormalFloat highlight groups
fix(absolute/after/jedi.lua): enable popup on dot for jedi
feat(absolute/after/tokyonight.lua): add support for tokyonight theme with specific configuration
feat(absolute/plugins/tokyonight.lua): add tokyonight plugin with configuration to load after plugin setup
fix(absolute/remap.lua): remove extra empty line
2024-01-04 10:14:27 +01:00
David Ibia 68aba67294 chore(jedi.lua): disable popup on dot in jedi plugin configuration
chore(jedi.lua): remove unused keybindings in jedi plugin configuration
chore(lsp-config.lua): remove pyright language server configuration
feat(lsp-config.lua): add jedi_completion plugin configuration to pylsp language server
feat(lsp-config.lua): add jedi_language_server configuration
chore(mason.lua): remove pyright language server from mason plugin configuration
feat(mason.lua): add jedi_language_server to mason plugin configuration
chore(poet-v.lua): add autocommand to activate virtualenv when entering a buffer with .venv or .py file
2024-01-03 19:05:06 +01:00
David Ibia aee290dcf9 feat: add support for Jedi-Vim plugin
- Add configuration for Jedi-Vim plugin in `lua/absolute/plugins/jedi.lua`
- Create `lua/absolute/after/jedi.lua` to set Jedi-Vim mappings and options

fix: fix lualine theme and add custom section

- Update `lua/absolute/after/lualine.lua` to fix the lualine theme configuration
- Add a custom section to display the Poetv status line in lualine

feat: add keybindings for Poetv plugin

- Add keybindings for activating and deactivating virtualenv in `lua/absolute/after/poet-v.lua`

fix: fix remap keybindings

- Update `lua/absolute/remap.lua` to fix and improve remap keybindings

feat: add alternate escape keybinding

- Add keybinding to use <C-c> as an alternate escape key in insert mode

fix: disable Q keybinding

- Disable the Q keybinding to prevent accidentally entering Ex mode

feat: add keybinding for formatting document with LSP Formatter

- Add keybinding to format the document using the LSP Formatter

feat: add keybindings for navigation quick fixes

- Add keybindings for navigating through quick fixes in the location list and the quickfix list

feat: add keybinding for regex replace

- Add keybinding to perform a regex replace in the entire file

feat: add keybinding for sourcing file

- Add keybinding to source the current file

feat: add keybinding for toggling TMUX pane

- Add keybinding to toggle the TMUX pane using MaximizerToggle command
2024-01-03 17:54:20 +01:00
David Ibia 6aa492bca8 chore(.gitignore): update .gitignore file to include Lua-related files and directories
feat(gitignore.lua): add Lua script to generate .gitignore file using gitignore.nvim plugin

chore(lsp-config.lua): comment out configuration for pyright server

feat(poet-v.lua): add poet-v plugin for managing Python virtual environments
2024-01-03 01:44:36 +01:00
David Ibia 68421c4615 feat(dap.lua): add configuration for dap and dap-ui plugins to enable debugging features in Neovim
feat(lsp-config.lua): configure python lsp using pylsp to provide language server capabilities for Python files
refactor(magma.lua): remove magma plugin configuration as it is no longer used
feat(mason.lua): add configuration for mason and mason-nvim-dap plugins to enable package management and debugging features in Neovim
refactor(init.lua): set maplocalleader to "\\" for easier keybindings
refactor(remap.lua): remove setting mapleader to " " as it is no longer needed, add keybinding for toggling file explorer using NvimTreeToggle command
2024-01-03 01:13:50 +01:00
David Ibia 589ab57da2 feat(dashboard.lua): add dashboard plugin and configuration for a customized dashboard
feat(magma.lua.disabled): add magma plugin and configuration, but disable it for now
2024-01-02 21:13:43 +01:00
David Ibia 6d7c3de411 fix(init.lua): enable line wrapping by setting vim.opt.wrap to true
fix(init.lua): remove color column limit by setting vim.opt.colorcolumn to an empty string
2024-01-02 14:51:03 +01:00
David Ibia 50b968ed9d feat(lsp-config.lua): add configuration for dockerls, jsonls, volar, rust_analyzer, cssls, htmx, docker_compose_language_service, and eslint servers to enhance language support in the editor
fix(remap.lua): add key mappings for moving selected lines or blocks of text up and down in visual mode, moving half page up and down, and adjusting cursor position after using 'n' and 'N' commands
2024-01-02 00:38:36 +01:00
David Ibia 923265371f chore(README.md): add important note about compatibility with Apple Silicon and removal of incompatible plugins
docs(README.md): explain the components of the project, including the package manager and the use of the after directory for plugin configuration
2024-01-01 21:44:47 +01:00
David Ibia 4e36594907 chore: add .env to .gitignore file to exclude it from version control
docs: add README.md file with an introduction, installation instructions, and personalization note for Absolute VIM Configuration
2024-01-01 21:38:22 +01:00
David Ibia e454b4a8b9 feat: updated plugins and editor configuration 2024-01-01 21:03:31 +01:00
David Ibia 2537f12e0c feat: added neovim configuration 2024-01-01 12:34:19 +01:00
81 changed files with 1274 additions and 3397 deletions
-3
View File
@@ -49,6 +49,3 @@ luac.out
.DS_Store .DS_Store
/Screenshots/* /Screenshots/*
.env .env
# oh-my-claudecode session state
.omc/
-3
View File
@@ -1,3 +0,0 @@
.git
!.env
!.opencommit
-2
View File
@@ -1,2 +0,0 @@
python 3.11.0
nodejs 20.0.0
+63 -63
View File
@@ -1,81 +1,81 @@
# Absolute VIM # Absolute VIM Configuration
A Lua Neovim configuration managed by [lazy.nvim](https://github.com/folke/lazy.nvim). It lives at `.config/nvim` in [absolute-dotfiles](https://github.com/boxpositron/absolute-dotfiles) as a submodule, and works on its own too. ## Introduction
## Install Here's the VIM configuration I'm going to be using for most of my professional work this year.
There may be changes as I discover new plugins. I intent to personalize this to my taste and
coding conventions. Feel free to try it out if you fancy 😄.
Requirements: Neovim 0.12 or newer, git, a Nerd Font, `ripgrep` and `fd` for the picker, a C compiler for treesitter parsers, and optionally `lazygit` and ImageMagick (for image previews). ## Installation
```bash ```bash
git clone https://github.com/boxpositron/absolute-vim ~/.config/nvim
nvim # lazy.nvim bootstraps itself and installs the pinned plugins from lazy-lock.json
```
Plugin versions are pinned in `lazy-lock.json`. Update them with `:Lazy update`, then commit the lockfile. git clone https://github.com/boxpositron/absolute-vim ~/.config/nvim --depth 1 && nvim
## Layout
```
init.lua -> require("absolute")
lua/current-theme.lua default colorscheme
lua/absolute/
core/ options, leader, colorscheme sync and the theme registry
lazy.lua lazy.nvim bootstrap; imports every spec in plugins/
plugins/ one plugin spec per file
after/ the matching configuration, required from each spec's config
remap.lua editor keymaps
lsp/, helpers/, utils/ extra LSP setup, project helpers, environment detection
docs/superpowers/ design spec and plan for the 2026 modernization
``` ```
To add a plugin, create `plugins/<name>.lua` returning its spec, and put its setup in `after/<name>.lua`. ## Dependencies
## What's inside ### Binaries
| Area | Plugins | > Improved Git Experience
|---|---|
| Picker, explorer, notifications, input | snacks.nvim (also `bigfile` and `quickfile`) |
| Completion | blink.cmp with friendly-snippets; LSP, path, snippet and buffer sources, plus cmdline completion |
| LSP and formatting | nvim-lspconfig, mason (ts_ls, lua_ls, rust_analyzer, clangd, tailwindcss, svelte, astro, biome and more), conform |
| Syntax | nvim-treesitter, treesitter-context, treesj, tree-sitter-ghostty |
| Git | gitsigns with current-line blame, mini.diff, lazygit in toggleterm |
| Diagnostics and lists | trouble, todo-comments, nvim-bqf |
| Debugging | nvim-dap and dap-ui |
| Languages and tools | flutter-tools, venv-selector, apple-pkl, tailwind-sorter, markview, image.nvim, nvim-silicon |
| UI | lualine, incline, indent-blankline, smear-cursor, highlight-colors, flash, mini |
| Themes | tokyonight (default), catppuccin, rose-pine, nightfly |
The 2026 modernization replaced Telescope with the snacks picker, nvim-cmp with blink.cmp, and nvim-notify and dressing with snacks, and removed abandoned and AI plugins. The spec and plan are in `docs/superpowers/`. - [lazygit](https://github.com/jesseduffield/lazygit)
## Themes > Beautiful Code Screenshots
`<leader>cs` opens a colorscheme picker. Changing the colorscheme also switches Ghostty and WezTerm to the matching theme, using the mappings in `core/theme-registry.lua`. The startup colorscheme is set in `lua/current-theme.lua`. - [silicon](https://github.com/Aloxaf/silicon)
## Keymaps > Fuzzy Finder
The leader is Space. Highlights: - [fzf](https://github.com/junegunn/fzf)
| Keys | Action | ### Fonts
|---|---|
| `<C-p>` | Find files |
| `<leader>gf` / `<leader>pr` | Git files / recent files |
| `<leader>ps` / `<leader>sb` | Live grep / grep the word under the cursor |
| `<leader>pf` / `<leader>cf` | File explorer at the cwd / at the current file's directory |
| `<leader>pt` / `<leader>tt` | TODO comments in the picker / in Trouble |
| `gd` `gi` `gt` / `<leader>cr` | Definitions, implementations, type definitions / references |
| `K` / `<leader>gh` | Hover docs / signature help |
| `<leader>rn` / `<leader>ca` / `<leader>f` | Rename / code actions / format |
| `<leader>rs` | Restart LSP |
| `<leader>td` `<leader>ts` `<leader>tq` | Trouble: diagnostics, symbols, quickfix |
| `<leader>gs` | lazygit |
| `<leader>db` | Toggle a breakpoint |
| `<leader>m` | Split or join the node under the cursor (treesj) |
| `<leader>u` | Undo tree |
| `<leader>sr` | Replace the word under the cursor |
| `<leader>y` / `<leader>p` | Yank to the system clipboard / paste without overwriting the register |
| `<leader>gr` | Run a shell command in the git root |
| `<leader>vs` | Select a Python virtualenv |
| `<leader>sc` | Screenshot the selection with Silicon |
| `<leader>?` | Search all keymaps |
blink.cmp uses its default keymap preset: `<C-space>` opens the menu, `<C-y>` accepts, `<C-n>` and `<C-p>` move through items. - [Noto Emoji](https://fonts.google.com/noto/specimen/Noto+Emoji)
- [JetBrains Mono](https://fonts.google.com/specimen/JetBrains+Mono)
### Themes
- [Tokyonight](https://github.com/folke/tokyonight.nvim)
### Plugins
- [CheatSheet](https://github.com/sudormrfbin/cheatsheet.nvim)
- [Comment](https://github.com/numToStr/Comment.nvim)
- DAP
- Dashboard
- GitIgnore
- GitSigns
- Harpoon
- Incline
- IndentBlankline
- Jedi
- KeySeer
- LuaLine
- Mason
- Mini
- NoneLS
- NvimBQF
- NvimCMP
- NvimSilicon
- NvimSurround
- NvimTree
- NvimTreesitter
- PoetV
- SuperTab
- TailwindSorter
- Telescope
- TodoComments
- ToggleTerm
- TreeSJ
- Trouble
- UndoTree
## Keybindings
### General
| Keybinding | Description |
|------------|-------------|
File diff suppressed because it is too large Load Diff
@@ -1,369 +0,0 @@
# Neovim Config Modernization — Design Spec
**Date:** 2026-05-02
**Target Neovim version:** 0.12.x
**Branch strategy:** Single branch, three sequential commits with restart-and-validate between each.
## Goals
1. Fix four silent breakages currently in the running config.
2. Remove abandoned, archived, or superseded plugins.
3. Swap two plugin engines that have been overtaken by snacks.nvim and blink.cmp in the 2026 ecosystem.
4. End up with a smaller, less-redundant `lua/absolute/` tree that is consistent with Neovim 0.12 idioms.
## Non-goals
- Migrating `nvim-treesitter` from frozen `master` to the 0.12-only `main` rewrite. Deferred to a separate, future spec.
- Restructuring the `absolute/` module layout. The current `core / plugins / after / utils / helpers` split is preserved.
- Adding new AI plugins. All AI integrations (`opencode`, `codecompanion`, `copilot`, `gen`, `llm`) are removed in this spec.
- Changing colorscheme behavior or the `theme-registry` system, which is recent and intentional.
## Scope summary
| Phase | Theme | Risk | Files touched |
|---|---|---|---|
| 1 | Triage and deletions | Low | ~20 files (mostly deletes) |
| 2 | UI swap (notify + dressing → snacks) | Low | 4 files |
| 3 | Engine swaps (nvim-cmp → blink, telescope → snacks.picker) | Medium | ~15 files |
Each phase is one commit on the same branch. Restart Neovim and validate after each commit before starting the next.
---
## Phase 1 — Triage and deletions
### Critical fixes
**C1 — `lua/absolute/remap.lua`: keymap collision on `<leader>j` / `<leader>k`.**
Lines 70–73 bind `<leader>k`/`<leader>j` to `lnext`/`lprev`. Lines 120–124 rebind the same keys to window resize, silently overriding them. The window-resize 4-way pad (`<leader>h/j/k/l`) is the intentional binding.
**Action:** Delete lines 70–73. If location-list nav is wanted, rebind to the idiomatic `]l` / `[l` pair (next / previous location-list entry). Decision in this spec: rebind to `]l` / `[l`.
**C2 — `lua/absolute/after/lsp-config.lua`: deprecated diagnostic-sign API.**
Lines 73–83 use `vim.fn.sign_define` to set diagnostic gutter icons. This API is deprecated in 0.10 and is removed in 0.12.
**Action:** Replace with the modern `vim.diagnostic.config` table:
```lua
vim.diagnostic.config({
signs = {
text = {
[vim.diagnostic.severity.ERROR] = " ",
[vim.diagnostic.severity.WARN] = " ",
[vim.diagnostic.severity.HINT] = "󰠠 ",
[vim.diagnostic.severity.INFO] = " ",
},
},
})
```
**C3 — Orphan after-file `lua/absolute/after/nvim-tree.lua`.**
There is no matching plugin spec in `lua/absolute/plugins/`. The file is dead but will crash on `require` if anything ever loads it.
**Action:** Delete the file.
**C4 — Non-idiomatic require in `lua/absolute/lazy.lua:36`.**
`require("../current-theme")` uses a literal-slash module name. The file is at `lua/current-theme.lua`, which is on the runtime path; the canonical form is `require("current-theme")`.
**Action:** Change to `require("current-theme")`.
### Plugin removals
The following plugin specs and their after-files are deleted. lazy.nvim removes them from `lazy-lock.json` automatically on the next `:Lazy sync`.
| Plugin | Files deleted | Reason |
|---|---|---|
| `playground` | `plugins/nvim-treesitter-playground.lua` | Repo archived 2024; replaced by built-in `:Inspect` / `:InspectTree` / `:EditQuery` |
| `vim-maximizer` | `plugins/vim-maximizer.lua` | Last commit 2013; native `<C-w>_` and `<C-w>\|` cover the use case |
| `poet-v` | `plugins/poet-v.lua`, `after/poet-v.lua` | Abandoned; `venv-selector.nvim` covers Python envs |
| `git-blame.nvim` | `plugins/git-blame.lua` | Replaced by gitsigns `current_line_blame` |
| `render-markdown.nvim` | `plugins/render-markdown.lua` | Picked `markview.nvim` as single markdown renderer |
| `codecompanion.nvim` | `plugins/codecompanion.lua`, `after/codecompanion.lua` | AI cleanup |
| `copilot.vim` | `plugins/copilot.lua` | AI cleanup |
| `gen.nvim` | `plugins/gen.lua`, `after/gen.lua` | AI cleanup |
| `llm.nvim` | `plugins/llm.lua`, `after/llm.lua` | AI cleanup |
| `opencode.nvim` | `plugins/opencode.lua`, `after/opencode.lua` | AI cleanup |
`dressing.nvim` and `nvim-notify` removal is deferred to Phase 2 because both are *swapped*, not deleted.
### New file: `lua/absolute/plugins/snacks.lua`
Removing `opencode.nvim` removes the dependency that pulled `snacks.nvim` into the tree. snacks is required for Phase 2 (input, notifier) and Phase 3 (picker), so a top-level spec is added now.
```lua
return {
"folke/snacks.nvim",
priority = 1000,
lazy = false,
---@type snacks.Config
opts = {
bigfile = { enabled = true },
quickfile = { enabled = true },
-- input, notifier added in Phase 2
-- picker added in Phase 3
},
}
```
### Config tweak: gitsigns line-blame
`lua/absolute/after/gitsigns.lua` is updated to enable virtual-text blame on the current line, replacing the functionality lost when `git-blame.nvim` is removed:
```lua
current_line_blame = true,
current_line_blame_opts = {
virt_text_pos = "eol",
delay = 500,
ignore_whitespace = false,
},
```
### Untracked work
- `lua/absolute/core/theme-registry.lua` is committed as-is (already complete).
- `lua/absolute/plugins/flash.lua` is committed as-is, retaining `enabled = false`.
- `lua/absolute/after/opencode.lua` is deleted in this phase along with the rest of opencode.
### Disabled-spec policy
Seven plugin specs currently have `enabled = false` and look intentional:
`apple-pkl`, `flash`, `flutter-tools`, `mini`, `nvim-surround`, `smear-cursor`, `tailwind-sorter`.
These are left untouched — the user toggles them on for specific projects. They are not part of this modernization.
### Phase 1 net change
- 16 plugin spec or after-files deleted
- 1 file added (`plugins/snacks.lua`)
- 4 files edited (`remap.lua`, `after/lsp-config.lua`, `after/gitsigns.lua`, `lazy.lua`)
- ~10 plugins removed from lockfile
### Phase 1 validation
After committing Phase 1, restart Neovim and verify:
1. No errors on startup (`:messages` empty of `E:` lines).
2. Diagnostic signs render (open a Lua file with an error).
3. `:Lazy clean` removes the orphaned plugins from disk.
4. `<leader>j` and `<leader>k` resize the current window.
5. `]l` / `[l` jump in location list.
6. Gitsigns shows current-line blame after a 500 ms idle.
7. `:Inspect`, `:InspectTree`, `:EditQuery` all work (proves treesitter playground replacement).
---
## Phase 2 — UI swap (notify + dressing → snacks)
Both replaced plugins are tiny. Migration is mostly deletes plus a snacks config bump.
### Deletions
| File | Notes |
|---|---|
| `lua/absolute/plugins/notify.lua` | Lazy spec |
| `lua/absolute/after/notify.lua` | Configures `vim.notify = notify` |
| `lua/absolute/plugins/dressing.lua` | Trivial `VeryLazy` spec, no after-file |
`nvim-notify` and `dressing.nvim` drop from the lockfile.
### Update `lua/absolute/plugins/snacks.lua`
Add `input` and `notifier` modules. Notifier config preserves the icons and timeout from the existing nvim-notify setup:
```lua
opts = {
bigfile = { enabled = true },
quickfile = { enabled = true },
input = { enabled = true },
notifier = {
enabled = true,
timeout = 3000,
style = "compact",
top_down = true,
icons = {
debug = "",
error = "",
info = "",
trace = "✎",
warn = "",
},
},
}
```
snacks installs `vim.notify = Snacks.notifier.notify` and overrides `vim.ui.input` automatically when the modules are enabled. No manual hookup is needed.
### Settings dropped (no equivalent needed)
`background_colour`, `fps`, `render`, `stages`, `minimum_width`, `time_formats` from the old nvim-notify config — all subsumed by snacks defaults or replaced by the `style = "compact"` choice.
### Phase 2 net change
- 3 files deleted
- 1 file edited (`plugins/snacks.lua`)
- 0 keymaps changed
- 2 plugins removed from lockfile
### Phase 2 validation
1. Restart Neovim. No errors on startup.
2. Trigger a notification (e.g. `:lua vim.notify("test", vim.log.levels.INFO)`) — toast appears in the top-right.
3. Trigger a `vim.ui.input` (e.g. `<leader>rn` to LSP-rename, or `<leader>gr` to enter a git-root command) — centered floating prompt appears.
4. Trigger a `vim.ui.select` (e.g. `<leader>ca` for code actions) — the snacks select UI appears.
---
## Phase 3 — Engine swaps (blink.cmp + snacks.picker)
The largest phase. Two engine swaps in one commit because they share the snacks ecosystem and both touch the LSP attach path.
### 3a — `nvim-cmp` → `blink.cmp`
**Plugins removed from lockfile** when `nvim-cmp` is deleted (they were nvim-cmp dependencies):
`nvim-cmp`, `cmp-nvim-lsp`, `cmp-buffer`, `cmp-path`, `cmp-cmdline`, `cmp_luasnip`, `LuaSnip`, `lspkind.nvim`. `friendly-snippets` is kept and consumed directly by blink.
Files deleted: `lua/absolute/plugins/nvim-cmp.lua`, `lua/absolute/after/nvim-cmp.lua`.
**New file `lua/absolute/plugins/blink-cmp.lua`:**
```lua
return {
"saghen/blink.cmp",
version = "1.*", -- pin to v1 stable
event = "InsertEnter",
dependencies = { "rafamadriz/friendly-snippets" },
config = function()
require("absolute.after.blink-cmp")
end,
}
```
**New file `lua/absolute/after/blink-cmp.lua`:**
```lua
require("blink.cmp").setup({
keymap = { preset = "default" }, -- C-y accept, C-n/p navigate, C-Space trigger
appearance = { nerd_font_variant = "mono" },
sources = {
default = { "lsp", "path", "snippets", "buffer" },
},
cmdline = {
keymap = { preset = "cmdline" },
completion = { menu = { auto_show = true } },
},
signature = { enabled = true },
})
```
**Edit `lua/absolute/after/lsp-config.lua`:**
Replace the cmp-nvim-lsp capabilities provider:
```lua
-- old:
local cmp_nvim_lsp = require("cmp_nvim_lsp")
local capabilities = cmp_nvim_lsp.default_capabilities()
-- new:
local capabilities = require("blink.cmp").get_lsp_capabilities()
```
### 3b — `telescope.nvim` → `snacks.picker`
**Plugins removed from lockfile** when `telescope.nvim` is deleted:
`telescope.nvim`, `telescope-file-browser.nvim`, `telescope-live-grep-args.nvim`, `telescope-media-files.nvim`, `telescope-themes`, `telescope-dap.nvim`, `popup.nvim`.
`junegunn/fzf` **stays** — it is also a dependency of `nvim-bqf` (`lua/absolute/plugins/nvim-bqf.lua:6`), which is unrelated to this swap. The `lua/absolute/plugins/fzf.lua` spec is kept as-is.
Files deleted:
- `lua/absolute/plugins/telescope.lua`
- `lua/absolute/after/telescope.lua`
- `lua/absolute/utils/telescope_image_preview.lua` (replaced by snacks built-in image preview via image.nvim)
**Update `lua/absolute/plugins/snacks.lua`** — add the picker module:
```lua
opts = {
bigfile = { enabled = true },
quickfile = { enabled = true },
input = { enabled = true },
notifier = { enabled = true, ... }, -- from Phase 2
picker = {
enabled = true,
ui_select = true, -- override vim.ui.select with picker
},
}
```
**New file `lua/absolute/after/snacks.lua`** — replaces the old `after/telescope.lua` and houses the picker keymaps:
```lua
local map = vim.keymap.set
local opts = { noremap = true, silent = true }
map("n", "<C-p>", function() Snacks.picker.files() end, vim.tbl_extend("force", opts, { desc = "Find files" }))
map("n", "<leader>gf", function() Snacks.picker.git_files() end, vim.tbl_extend("force", opts, { desc = "Find git files" }))
map("n", "<leader>pr", function() Snacks.picker.recent() end, vim.tbl_extend("force", opts, { desc = "Recent files" }))
map("n", "<leader>ps", function() Snacks.picker.grep() end, vim.tbl_extend("force", opts, { desc = "Live grep" }))
map("n", "<leader>sb", function() Snacks.picker.grep_word() end, vim.tbl_extend("force", opts, { desc = "Grep word under cursor" }))
map("n", "<leader>pf", function() Snacks.picker.explorer() end, vim.tbl_extend("force", opts, { desc = "File explorer" }))
map("n", "<leader>cf", function() Snacks.picker.explorer({ cwd = vim.fn.expand("%:p:h") }) end, vim.tbl_extend("force", opts, { desc = "File explorer at file dir" }))
```
**Edits to existing files**, swapping `<cmd>Telescope ...<CR>` for `Snacks.picker.*` calls:
| File | Old binding | New binding |
|---|---|---|
| `remap.lua:7` | `<cmd>Telescope keymaps<CR>` | `function() Snacks.picker.keymaps() end` |
| `core/colorscheme.lua:150` | `<cmd>Telescope colorscheme<CR>` | `function() Snacks.picker.colorschemes() end` |
| `core/colorscheme.lua:153` | `<cmd>Telescope themes<CR>` | **delete** the `<leader>th` binding entirely (merged into `<leader>cs`) |
| `after/lsp-config.lua:20` | `<cmd>Telescope lsp_definitions<CR>` | `function() Snacks.picker.lsp_definitions() end` |
| `after/lsp-config.lua:26` | `<cmd>Telescope lsp_implementations<CR>` | `function() Snacks.picker.lsp_implementations() end` |
| `after/lsp-config.lua:38` | `<cmd>Telescope lsp_type_definitions<CR>` | `function() Snacks.picker.lsp_type_definitions() end` |
| `after/lsp-config.lua:47` | `<cmd>Telescope lsp_references<CR>` | `function() Snacks.picker.lsp_references() end` |
| `after/todo-comments.lua:18-20` | `vim.cmd([[TodoTelescope]])` | `Snacks.picker.todo_comments()` |
### Things lost in Phase 3
1. **DAP picker** (`telescope-dap`) — DAP itself works; the picker UI for breakpoints/variables is gone. `nvim-dap-ui` already covers most of this.
2. **`live-grep-args` argument syntax** — snacks accepts `--type lua` style args via a slightly different prompt prefix; muscle-memory shifts.
3. **Custom `telescope_image_preview.lua`** — dropped. snacks displays images natively via `image.nvim` integration in its file picker.
4. **`telescope-themes` registry helpers** — `<leader>th` is dropped. `<leader>cs` (colorschemes picker) replaces both. The `theme-registry.lua` system continues to work because it hooks `ColorScheme` autocmds, which fire regardless of how the colorscheme is selected.
### Phase 3 net change
- ~14 plugins removed from lockfile (8 from `nvim-cmp` chain, 7 from `telescope` chain — `friendly-snippets` stays)
- 5 files deleted (`plugins/nvim-cmp.lua`, `after/nvim-cmp.lua`, `plugins/telescope.lua`, `after/telescope.lua`, `utils/telescope_image_preview.lua`)
- 3 files added (`plugins/blink-cmp.lua`, `after/blink-cmp.lua`, `after/snacks.lua`)
- 5 files edited (`plugins/snacks.lua`, `after/lsp-config.lua`, `core/colorscheme.lua`, `remap.lua`, `after/todo-comments.lua`)
### Phase 3 validation
1. Restart Neovim. No errors on startup.
2. Open an insert-mode completion (`<C-Space>` in a code file) — blink menu appears with LSP, snippets, path, buffer sources.
3. Trigger snippet expansion (e.g. `for<Tab>` in Lua) — friendly-snippets fire via blink's snippet engine.
4. `<C-p>` opens snacks file picker and previews work.
5. `<leader>ps` opens live grep; `<leader>sb` greps the word under cursor.
6. LSP `gd` / `gi` / `gt` / `<leader>cr` open snacks LSP pickers.
7. `<leader>cs` opens colorscheme picker; selecting a theme triggers the wezterm/ghostty sync.
8. `<leader>?` opens keymaps picker.
9. `:checkhealth blink.cmp` is clean.
---
## Risk and rollback
Each phase is one commit. To roll a phase back, `git revert <sha>` and `:Lazy sync` to restore the prior plugin set. Because each phase ends in a working state, partial rollback (e.g. revert Phase 3 but keep Phases 1 and 2) is safe.
The highest-risk single change is the LSP-capabilities provider swap in `after/lsp-config.lua` (Phase 3a). If LSP completion misbehaves after Phase 3, isolate by temporarily reverting just that one line to the cmp-nvim-lsp provider and bisecting the blink.cmp config.
## Open items deferred
- Treesitter `master` → `main` rewrite (Neovim 0.12-only). Worth its own spec when ready.
- Replacing `nvim-tmux-navigation` configuration file naming (the spec file is `vim-tmux-navigator.lua` but the plugin is `alexghergh/nvim-tmux-navigation`). Cosmetic; not part of this work.
- Auditing the seven intentionally-disabled plugin specs. Out of scope.
## Acceptance criteria
After all three phases land:
1. `:checkhealth` reports no deprecated API usage related to this work.
2. `lazy-lock.json` no longer contains: `nvim-cmp`, `cmp-*`, `lspkind.nvim`, `LuaSnip`, `telescope.nvim`, `telescope-*`, `popup.nvim`, `nvim-notify`, `dressing.nvim`, `playground`, `vim-maximizer`, `poet-v`, `git-blame.nvim`, `render-markdown.nvim`, `codecompanion.nvim`, `copilot.vim`, `gen.nvim`, `llm.nvim`, `opencode.nvim`.
3. `lazy-lock.json` newly contains: `blink.cmp`, `snacks.nvim`.
4. Every keymap in the migration tables resolves to a working snacks.picker or blink.cmp action.
5. Diagnostic gutter signs render through `vim.diagnostic.config`.
6. `<leader>j` and `<leader>k` resize the current window with no collision.
7. Startup time as reported by `:Lazy profile` is no worse than before.
+66 -48
View File
@@ -1,51 +1,69 @@
{ {
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" }, "LuaSnip": { "branch": "master", "commit": "e808bee352d1a6fcf902ca1a71cee76e60e24071" },
"catppuccin": { "branch": "main", "commit": "edefef779ab08ce1a4a404713e3012b0d202bd35" }, "catppuccin": { "branch": "main", "commit": "63685e1562ef53873c9764b483d7ac5c7a608922" },
"conform.nvim": { "branch": "master", "commit": "016802de402556da54c36bd7359b441266b01cdd" }, "cheatsheet.nvim": { "branch": "master", "commit": "9716f9aaa94dd1fd6ce59b5aae0e5f25e2a463ef" },
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"flutter-tools.nvim": { "branch": "main", "commit": "70430c32d176f4a15c6e2c80586cd2791e3a664e" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"friendly-snippets": { "branch": "main", "commit": "b4d01b0fdf3c9a549961c2f9ffe8dc09be166219" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"fzf": { "branch": "master", "commit": "25adb674537bb2140f82602651a31fbd7677cd50" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"gitsigns.nvim": { "branch": "main", "commit": "851a051e2bd2caba97e23314c68d69f1b1cf5d19" }, "conform.nvim": { "branch": "master", "commit": "1a99fdc1d3aa9ccdf3021e67982a679a8c5c740c" },
"image.nvim": { "branch": "master", "commit": "365e2ace0f619164ae6fd2f6f1d2807775dd6849" }, "copilot.vim": { "branch": "release", "commit": "782461159655b259cff10ecff05efa761e3d4764" },
"incline.nvim": { "branch": "main", "commit": "debd628e9395f7a9da57bdc31ce75ca6b40a880b" }, "dashboard-nvim": { "branch": "master", "commit": "fabf5feec96185817c732d47d363f34034212685" },
"indent-blankline.nvim": { "branch": "master", "commit": "f1e186e44d3b7f9ae918008e2c28ce37c6023d2d" }, "dressing.nvim": { "branch": "master", "commit": "1b7921eecc65af1baf8ac1dc06f0794934cbcfb2" },
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, "flutter-tools.nvim": { "branch": "main", "commit": "ea1d398f543a54ba95357c3b8bb9d6f68eaec36c" },
"lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, "friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" },
"markview.nvim": { "branch": "main", "commit": "49d2cf7ced872db74083a144ded1f94fe224d09a" }, "fzf": { "branch": "master", "commit": "855f90727af7827d9934b7fa00ea5ed51f5e4e81" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "e17625cdc8c2650787467398e02c5d63a2cde966" }, "git-blame.nvim": { "branch": "master", "commit": "8c56e864d448e84e0162872c381dd2715824dce2" },
"mason-registry": { "branch": "main", "commit": "ee10e9db59f13054eea925042cae6d1df461ec25" }, "gitignore.nvim": { "branch": "master", "commit": "2455191ec94da8ed222806a4fe3aa358eac1e558" },
"mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, "gitsigns.nvim": { "branch": "main", "commit": "1ef74b546732f185d0f806860fa5404df7614f28" },
"mini.diff": { "branch": "main", "commit": "626b8a5b93874c4d05ca25aedec56cfff0b378fb" }, "harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" },
"mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" }, "incline.nvim": { "branch": "main", "commit": "16fc9c073e3ea4175b66ad94375df6d73fc114c0" },
"nightfly": { "branch": "master", "commit": "2c31d07ce05efa92bcb7f893f9c74a846226c898" }, "indent-blankline.nvim": { "branch": "master", "commit": "18603eb949eba08300799f64027af11ef922283f" },
"nvim-bqf": { "branch": "main", "commit": "c282a62bec6c0621a1ef5132aa3f4c9fc4dcc2c7" }, "keyseer.nvim": { "branch": "main", "commit": "6cb478f9b2be4af4680ceb0308a9b49cd6b6ea73" },
"nvim-dap": { "branch": "master", "commit": "cfa2d58f4537aca6ca83e2de1a0d9f1491121264" }, "lazy.nvim": { "branch": "main", "commit": "460e1cd8f24e364d54543a4b0e83f6f4ec1f65fb" },
"nvim-dap-ui": { "branch": "master", "commit": "cc9dd33aade7f20bae414d0cba163bc60d4d4b43" }, "lspkind.nvim": { "branch": "master", "commit": "cff4ae321a91ee3473a92ea1a8c637e3a9510aec" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, "lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" },
"nvim-highlight-colors": { "branch": "main", "commit": "e4c7af0211866162d999ce0bdd6a029302e19139" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "25c11854aa25558ee6c03432edfa0df0217324be" },
"nvim-lsp-file-operations": { "branch": "master", "commit": "72ea1d0fb1e5be0b4434ad794c8e0bb46d4df64c" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "8b9363d83b5d779813cdd2819b8308651cec2a09" },
"nvim-lspconfig": { "branch": "master", "commit": "c59fc922f718fa055f69f5f3bc888f23211571eb" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
"nvim-nio": { "branch": "master", "commit": "edcc181a875301dd21840189aa2f2f9ad69fc172" }, "mini.nvim": { "branch": "main", "commit": "19e1584124cda35388d4fdb911eab7124014e541" },
"nvim-silicon": { "branch": "main", "commit": "7f66bda8f60c97a5bf4b37e5b8acb0e829ae3c32" }, "nightfly": { "branch": "master", "commit": "19efaf31cbe15a429cb3ca6ac9c9fce13275045b" },
"nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" }, "noice.nvim": { "branch": "main", "commit": "c1ba80ccf6b3bd8c7fc88fe2e61085131d44ad65" },
"nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" }, "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" },
"nvim-treesitter": { "branch": "master", "commit": "cf12346a3414fa1b06af75c79faebe7f76df080a" }, "nvim-bqf": { "branch": "main", "commit": "1b24dc6050c34e8cd377b6b4cd6abe40509e0187" },
"nvim-treesitter-context": { "branch": "master", "commit": "8decd73460d26ef0a0befb745d022dd1fc2c38b8" }, "nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" },
"nvim-web-devicons": { "branch": "master", "commit": "58447c1fca354bbf184425e4a8d01deecbd6f3c4" }, "nvim-dap": { "branch": "master", "commit": "90616ae6ae40053103dc66872886fc26b94c70c8" },
"pkl-neovim": { "branch": "main", "commit": "da9d189b4fad7e67e6b2a5456a3cbc4c9d32a17f" }, "nvim-dap-python": { "branch": "master", "commit": "db72bf6ab9f75fe841e8e11e772ee7fef6f484f1" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "nvim-dap-ui": { "branch": "master", "commit": "1c351e4e417d4691da12948b6ecf966936a56d28" },
"rose-pine": { "branch": "main", "commit": "ff483051a47e27d84bdef47703538df1ed9f4a47" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "3497eb39bf413a57ab5b7e7e2e192683e462148c" },
"smear-cursor.nvim": { "branch": "main", "commit": "4a0f7ac265b4ed1ce4d0af2afc13072763bfa691" }, "nvim-highlight-colors": { "branch": "main", "commit": "a411550ef85cae467b889ba7d1a96bd78332d90e" },
"snacks.nvim": { "branch": "main", "commit": "882c996cf28183f4d63640de0b4c02ec886d01f2" }, "nvim-lsp-file-operations": { "branch": "master", "commit": "92a673de7ecaa157dd230d0128def10beb56d103" },
"tailwind-sorter.nvim": { "branch": "main", "commit": "717e5c9761ed8334dadbb9357df7d826aae97b92" }, "nvim-lspconfig": { "branch": "master", "commit": "aaec5d049af99e7b975bdf68aca582f1aa91b338" },
"todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" }, "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" },
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" },
"tokyonight": { "branch": "main", "commit": "cdc07ac78467a233fd62c493de29a17e0cf2b2b6" }, "nvim-silicon": { "branch": "main", "commit": "9fe6001dc8cad4d9c53bcfc8649e3dc76ffa169c" },
"tree-sitter-ghostty": { "branch": "main", "commit": "a2075c3761a41449bb4faf69794c902dfef6d70e" }, "nvim-surround": { "branch": "main", "commit": "ec2dc7671067e0086cdf29c2f5df2dd909d5f71f" },
"treesj": { "branch": "main", "commit": "9f349ba62c524f065d6f43254d731ddf8319b9bf" }, "nvim-treesitter": { "branch": "master", "commit": "2b2ac302324f4cd2194c5dcaa59332b65e1c6403" },
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" }, "nvim-treesitter-context": { "branch": "master", "commit": "7f7eeaa99e5a9beab518f502292871ae5f20de6f" },
"undotree": { "branch": "master", "commit": "6fa6b57cda8459e1e4b2ca34df702f55242f4e4d" }, "nvim-web-devicons": { "branch": "master", "commit": "9154484705968658e9aab2b894d1b2a64bf9f83d" },
"venv-selector.nvim": { "branch": "main", "commit": "cc4bb3975de8835291f9bb45889e96c6b2795fc4" } "nvim_lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"pkl-neovim": { "branch": "main", "commit": "a0ae099c7eb926150ee0a126b1dd78086edbe3fc" },
"playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" },
"plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
"poet-v": { "branch": "master", "commit": "85a5dd44d89602cc3dccd2489924e9c7caab0044" },
"rose-pine": { "branch": "main", "commit": "8b1fd252255a7f2c41b4192a787ab62660b29f72" },
"tailwind-sorter.nvim": { "branch": "main", "commit": "e03eea3909c28509375993fb77a42454ac8ecbb2" },
"telescope-dap.nvim": { "branch": "master", "commit": "8c88d9716c91eaef1cdea13cb9390d8ef447dbfe" },
"telescope-file-browser.nvim": { "branch": "master", "commit": "dd9de68c08b6d678198a99f5ea13e0384a1f04cf" },
"telescope-themes": { "branch": "main", "commit": "f005622f066cc0cdbaf9bb44c48edbec67985501" },
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" },
"toggleterm.nvim": { "branch": "main", "commit": "48be57eaba817f038d61bbf64d2c597f578c0827" },
"tokyonight": { "branch": "main", "commit": "817bb6ffff1b9ce72cdd45d9fcfa8c9cd1ad3839" },
"treesj": { "branch": "main", "commit": "0d81326b5afd36babe7dd480aabbb0b05f33e688" },
"trouble.nvim": { "branch": "main", "commit": "6efc446226679fda0547c0fd6a7892fd5f5b15d8" },
"undotree": { "branch": "master", "commit": "78b5241191852ffa9bb5da5ff2ee033160798c3b" },
"vim-maximizer": { "branch": "master", "commit": "2e54952fe91e140a2e69f35f22131219fcd9c5f1" },
"vim-tmux-navigator": { "branch": "master", "commit": "a9b52e7d36114d40350099f254b5f299a35df978" }
} }
-14
View File
@@ -1,14 +0,0 @@
require("blink.cmp").setup({
keymap = { preset = "default" },
appearance = {
nerd_font_variant = "mono",
},
sources = {
default = { "lsp", "path", "snippets", "buffer" },
},
cmdline = {
keymap = { preset = "cmdline" },
completion = { menu = { auto_show = true } },
},
signature = { enabled = true },
})
+3
View File
@@ -0,0 +1,3 @@
local cheatsheet = require("cheatsheet")
cheatsheet.setup({})
+3 -22
View File
@@ -1,33 +1,14 @@
local conform = require("conform") local conform = require("conform")
conform.setup({ conform.setup({
format_on_save = function(bufnr)
local disable_filetypes = {}
return {
timeout_ms = 500,
lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
}
end,
formatters_by_ft = { formatters_by_ft = {
sh = { "shfmt" },
lua = { "stylua" }, lua = { "stylua" },
-- Conform will run multiple formatters sequentially -- Conform will run multiple formatters sequentially
python = { python = { "isort", "black" },
-- To fix auto-fixable lint errors.
"ruff_fix",
-- To run the Ruff formatter.
"ruff_format",
-- To organize the imports.
"ruff_organize_imports",
},
-- Use a sub-list to run only the first available formatter -- Use a sub-list to run only the first available formatter
javascript = { "biome" }, javascript = { "biome" },
astro = { "prettierd", "prettier", "biome" }, astro = { { "prettierd", "prettier" } },
vue = { "prettierd", "prettier" },
proto = { "buf" },
yaml = { "prettierd", "prettier" },
}, },
}) })
-- vim.o.formatexpr = "v:lua.require'conform'.formatexpr()" vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
+11
View File
@@ -1,5 +1,6 @@
local dap = require("dap") local dap = require("dap")
local dapui = require("dapui") local dapui = require("dapui")
local dap_python = require("dap-python")
local virtual_text = require("nvim-dap-virtual-text") local virtual_text = require("nvim-dap-virtual-text")
-- Setup Virtual Text -- Setup Virtual Text
@@ -10,7 +11,12 @@ virtual_text.setup({
enabled = true, enabled = true,
}) })
local mason_path = vim.fn.glob(vim.fn.stdpath("data") .. "/mason")
local debugpy_path = mason_path .. "/packages/debugpy/venv/bin/python"
dapui.setup() dapui.setup()
dap_python.setup(debugpy_path)
dap.listeners.after.event_initialized["dapui_config"] = function() dap.listeners.after.event_initialized["dapui_config"] = function()
dapui.open() dapui.open()
@@ -29,3 +35,8 @@ local opts = { noremap = true, silent = true }
opts.desc = "Toggle breakpoint" opts.desc = "Toggle breakpoint"
vim.keymap.set("n", "<leader>db", "<cmd> DapToggleBreakpoint<CR>", opts) vim.keymap.set("n", "<leader>db", "<cmd> DapToggleBreakpoint<CR>", opts)
opts.desc = "Debug Python Run"
vim.keymap.set("n", "<leader>dpr", function()
dap_python.test_method()
end, opts)
+25
View File
@@ -0,0 +1,25 @@
local dashboard = require("dashboard")
local header = {
[[' ⣇⣿⠘⣿⣿⣿⡿⡿⣟⣟⢟⢟⢝⠵⡝⣿⡿⢂⣼⣿⣷⣌⠩⡫⡻⣝⠹⢿⣿⣷ ']],
[[' ⡆⣿⣆⠱⣝⡵⣝⢅⠙⣿⢕⢕⢕⢕⢝⣥⢒⠅⣿⣿⣿⡿⣳⣌⠪⡪⣡⢑⢝⣇ ']],
[[' ⡆⣿⣿⣦⠹⣳⣳⣕⢅⠈⢗⢕⢕⢕⢕⢕⢈⢆⠟⠋⠉⠁⠉⠉⠁⠈⠼⢐⢕⢽ ']],
[[' ⡗⢰⣶⣶⣦⣝⢝⢕⢕⠅⡆⢕⢕⢕⢕⢕⣴⠏⣠⡶⠛⡉⡉⡛⢶⣦⡀⠐⣕⢕ ']],
[[' ⡝⡄⢻⢟⣿⣿⣷⣕⣕⣅⣿⣔⣕⣵⣵⣿⣿⢠⣿⢠⣮⡈⣌⠨⠅⠹⣷⡀⢱⢕ ']],
[[' ⡝⡵⠟⠈⢀⣀⣀⡀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣼⣿⢈⡋⠴⢿⡟⣡⡇⣿⡇⡀⢕ ']],
[[' ⡝⠁⣠⣾⠟⡉⡉⡉⠻⣦⣻⣿⣿⣿⣿⣿⣿⣿⣿⣧⠸⣿⣦⣥⣿⡇⡿⣰⢗⢄ ']],
[[' ⠁⢰⣿⡏⣴⣌⠈⣌⠡⠈⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣬⣉⣉⣁⣄⢖⢕⢕⢕ ']],
[[' ⡀⢻⣿⡇⢙⠁⠴⢿⡟⣡⡆⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⣵⣿ ']],
[[' ⡻⣄⣻⣿⣌⠘⢿⣷⣥⣿⠇⣿⣿⣿⣿⣿⣿⠛⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ']],
[[' ⣷⢄⠻⣿⣟⠿⠦⠍⠉⣡⣾⣿⣿⣿⣿⣿⣿⢸⣿⣦⠙⣿⣿⣿⣿⣿⣿⣿⣿⠟ ']],
[[' ⡕⡑⣑⣈⣻⢗⢟⢞⢝⣻⣿⣿⣿⣿⣿⣿⣿⠸⣿⠿⠃⣿⣿⣿⣿⣿⣿⡿⠁⣠ ']],
[[' ⡝⡵⡈⢟⢕⢕⢕⢕⣵⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⣿⣿⣿⠿⠋⣀⣈⠙ ']],
[[' ⡝⡵⡕⡀⠑⠳⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⡠⡲⡫⡪⡪⡣ ']],
}
dashboard.setup({
theme = "hyper",
config = {
header = header,
},
})
+18
View File
@@ -0,0 +1,18 @@
local gitignore = require("gitignore")
local GetProjectRoot = require("absolute.utils.get-git-root")
-- Keymaps
local opts = { noremap = true, silent = true }
opts.desc = "GitIgnore: Generate .gitignore"
vim.keymap.set("n", "<leader>gi", function()
local path = GetProjectRoot()
gitignore.generate(path)
end, opts)
-- Global Settings
vim.g.gitignore_nvim_overwrite = true
+1 -8
View File
@@ -1,10 +1,3 @@
local gitsigns = require("gitsigns") local gitsigns = require("gitsigns")
gitsigns.setup({ gitsigns.setup()
current_line_blame = true,
current_line_blame_opts = {
virt_text_pos = "eol",
delay = 500,
ignore_whitespace = false,
},
})
+10
View File
@@ -0,0 +1,10 @@
local mark = require("harpoon.mark")
local ui = require("harpoon.ui")
vim.keymap.set("n", "<leader>a", mark.add_file)
vim.keymap.set("n", "<C-e>", ui.toggle_quick_menu)
vim.keymap.set("n", "<C-1>", function() ui.nav_file(1) end)
vim.keymap.set("n", "<C-2>", function() ui.nav_file(2) end)
vim.keymap.set("n", "<C-3>", function() ui.nav_file(3) end)
vim.keymap.set("n", "<C-4>", function() ui.nav_file(4) end)
-37
View File
@@ -1,37 +0,0 @@
require("image").setup({
backend = "kitty",
processor = "magick_rock", -- or "magick_cli"
integrations = {
markdown = {
enabled = true,
clear_in_insert_mode = false,
download_remote_images = true,
only_render_image_at_cursor = false,
floating_windows = true, -- if true, images will be rendered in floating markdown windows
filetypes = { "markdown", "vimwiki" }, -- markdown extensions (ie. quarto) can go here
},
neorg = {
enabled = true,
filetypes = { "norg" },
},
typst = {
enabled = true,
filetypes = { "typst" },
},
html = {
enabled = false,
},
css = {
enabled = false,
},
},
max_width = nil,
max_height = nil,
max_width_window_percentage = nil,
max_height_window_percentage = 50,
window_overlap_clear_enabled = true, -- toggles images when windows are overlapped
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "snacks_notif", "scrollview", "scrollview_sign" },
editor_only_render_when_focused = true, -- auto show/hide images when the editor gains/looses focus
tmux_show_only_in_active_window = true, -- auto show/hide images in the correct Tmux window (needs visual-activity off)
hijack_file_patterns = { "*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp", "*.avif", "*.svg" }, -- render image files as images when opened
})
+3
View File
@@ -0,0 +1,3 @@
local keyseer = require("keyseer")
keyseer.setup({})
+121 -149
View File
@@ -1,11 +1,10 @@
-- Setup language servers. -- Setup language servers.
local conform = require("conform") local lspconfig = require("lspconfig")
local cmp_nvim_lsp = require("cmp_nvim_lsp")
local DPE = require("absolute.utils.detect-python-env")
local opts = { noremap = true, silent = true } local opts = { noremap = true, silent = true }
local global_node_modules = vim.fn.system("npm root -g")
-- client, buffer
local on_attach = function(client, bufnr) local on_attach = function(client, bufnr)
opts.buffer = bufnr opts.buffer = bufnr
@@ -16,13 +15,13 @@ local on_attach = function(client, bufnr)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
opts.desc = "Go to definitions" opts.desc = "Go to definitions"
vim.keymap.set("n", "gd", function() Snacks.picker.lsp_definitions() end, opts) vim.keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts)
opts.desc = "Show documentation for what is under cursor" opts.desc = "Show documentation for what is under cursor"
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
opts.desc = "Show LSP Implementation" opts.desc = "Show LSP Implementation"
vim.keymap.set("n", "gi", function() Snacks.picker.lsp_implementations() end, opts) vim.keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts)
opts.desc = "Get Help" opts.desc = "Get Help"
vim.keymap.set("n", "<leader>gh", vim.lsp.buf.signature_help, opts) vim.keymap.set("n", "<leader>gh", vim.lsp.buf.signature_help, opts)
@@ -34,7 +33,7 @@ local on_attach = function(client, bufnr)
-- end, opts) -- end, opts)
opts.desc = "Show LSP type definitions" opts.desc = "Show LSP type definitions"
vim.keymap.set("n", "gt", function() Snacks.picker.lsp_type_definitions() end, opts) vim.keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts)
opts.desc = "Smart rename" opts.desc = "Smart rename"
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
@@ -43,76 +42,58 @@ local on_attach = function(client, bufnr)
vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts) vim.keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts)
opts.desc = "Show LSP references" opts.desc = "Show LSP references"
vim.keymap.set("n", "<leader>cr", function() Snacks.picker.lsp_references() end, opts) vim.keymap.set("n", "<leader>cr", "<cmd>Telescope lsp_references<CR>", opts)
opts.desc = "Format File" opts.desc = "Format File"
vim.keymap.set({ "n", "v" }, "<leader>f", function() vim.keymap.set("n", "<leader>f", function()
-- vim.lsp.buf.format({ async = true }) vim.lsp.buf.format({ async = true })
conform.format({
bufnr = opts.buffer,
async = true,
lsp_fallback = true,
})
end, opts) end, opts)
opts.desc = "Restart LSP" opts.desc = "Restart LSP"
vim.keymap.set("n", "<leader>rs", "<cmd>LspRestart<CR>", opts) vim.keymap.set("n", "<leader>rs", "<cmd>LspRestart<CR>", opts)
-- LSP Only Settings
-- Ruff & Pyright behaviour
if client.name == "ruff" then
-- Disable hover in favor of Pyright
client.server_capabilities.hoverProvider = false
end
end end
local capabilities = require("blink.cmp").get_lsp_capabilities() local capabilities = cmp_nvim_lsp.default_capabilities()
-- Configure diagnostic signs (Neovim 0.10+ API; required in 0.12) -- Change the Diagnostic symbols in the sign column (gutter)
vim.diagnostic.config({ local signs = {
signs = { Error = "",
text = { Warn = "",
[vim.diagnostic.severity.ERROR] = " ", Hint = "󰠠 ",
[vim.diagnostic.severity.WARN] = " ", Info = " ",
[vim.diagnostic.severity.HINT] = "󰠠 ", }
[vim.diagnostic.severity.INFO] = "",
},
},
})
-- Configure LSP servers using vim.lsp.config for type, icon in pairs(signs) do
vim.lsp.config("html", { local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end
-- configure html server
lspconfig["html"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("ts_ls", { -- configure typescript server with plugin
capabilities = capabilities, lspconfig["ts_ls"].setup({
on_attach = on_attach,
init_options = {
plugins = {
{
name = "@vue/typescript-plugin",
location = global_node_modules .. "@vue/typescript-plugin",
languages = { "vue" },
},
},
},
filetypes = { "typescript", "javascript", "javascriptreact", "typescriptreact", "vue" },
})
vim.lsp.config("cssls", {
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("tailwindcss", { -- configure css server
lspconfig["cssls"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
filetypes = { "html", "svelte", "vue", "astro" },
}) })
vim.lsp.config("svelte", { -- configure tailwindcss server
lspconfig["tailwindcss"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
-- configure svelte server
lspconfig["svelte"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
on_attach(client, bufnr) on_attach(client, bufnr)
@@ -128,14 +109,14 @@ vim.lsp.config("svelte", {
end, end,
}) })
vim.lsp.config("emmet_ls", { -- configure emmet language server
lspconfig["emmet_ls"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
filetypes = { filetypes = {
"html", "html",
"typescriptreact", "typescriptreact",
"javascriptreact", "javascriptreact",
"astro",
"css", "css",
"sass", "sass",
"scss", "scss",
@@ -145,70 +126,63 @@ vim.lsp.config("emmet_ls", {
}, },
}) })
vim.lsp.config("ruff", {
capabilities = capabilities,
on_attach = on_attach,
})
vim.lsp.config("pyright", { -- configure python lsp
capabilities = capabilities, lspconfig["pylsp"].setup({
on_attach = on_attach,
filetypes = { "python" }, filetypes = { "python" },
settings = { capabilities = capabilities,
python = { on_attach = on_attach,
analysis = { pylsp = {
autoSearchPaths = true, pylsp = {
useLibraryCodeForTypes = true, plugins = {
diagnosticMode = "workspace", rope_autoimport = {
enabled = true,
completions = { enabled = true },
rename = { enabled = false },
},
black = { enabled = true },
autopep8 = { enabled = false },
yapf = { enabled = false },
flake8 = { enabled = true },
jedi_completion = {
enabled = true,
include_params = true,
fuzzy = true,
},
pylsp_mypy = {
enabled = true,
overrides = DPE.ResolvePythonEnvironment(),
report_progress = true,
live_mode = true,
},
-- import sorting
pyls_isort = { enabled = true },
}, },
}, },
}, },
}) })
-- configure docker server
vim.lsp.config("dockerls", { lspconfig["dockerls"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("jsonls", { -- configure json server
lspconfig["jsonls"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("vue_ls", { -- configure vue server
lspconfig["volar"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
filetypes = { "vue" }, filetypes = { "vue" },
init_options = {
vue = {
hybridMode = false,
},
},
settings = {
typescript = {
inlayHints = {
enumMemberValues = {
enabled = true,
},
functionLikeReturnTypes = {
enabled = true,
},
propertyDeclarationTypes = {
enabled = true,
},
parameterTypes = {
enabled = true,
suppressWhenArgumentMatchesName = true,
},
variableTypes = {
enabled = true,
},
},
},
},
}) })
vim.lsp.config("rust_analyzer", { -- configure rust server
lspconfig.rust_analyzer.setup({
-- Server-specific settings. See `:help lspconfig-setup`
on_attach = on_attach, on_attach = on_attach,
capabilities = capabilities, capabilities = capabilities,
settings = { settings = {
@@ -216,15 +190,18 @@ vim.lsp.config("rust_analyzer", {
}, },
}) })
vim.lsp.config("lua_ls", { -- configure lua server (with special settings)
lspconfig["lua_ls"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
settings = { settings = { -- custom settings for lua
Lua = { Lua = {
-- make the language server recognize "vim" global
diagnostics = { diagnostics = {
globals = { "vim" }, globals = { "vim" },
}, },
workspace = { workspace = {
-- make language server aware of runtime files
library = { library = {
[vim.fn.expand("$VIMRUNTIME/lua")] = true, [vim.fn.expand("$VIMRUNTIME/lua")] = true,
[vim.fn.stdpath("config") .. "/lua"] = true, [vim.fn.stdpath("config") .. "/lua"] = true,
@@ -234,45 +211,65 @@ vim.lsp.config("lua_ls", {
}, },
}) })
vim.lsp.config("docker_compose_language_service", { -- configure css server
lspconfig["cssls"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("eslint", { -- configure htmx server
lspconfig["htmx"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("astro", { --configure docker file server
lspconfig["dockerls"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("kotlin_language_server", { -- configure docker compose server
lspconfig["docker_compose_language_service"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("clangd", { -- configure eslint server
cmd = { "clangd", "--compile-commands-dir=./", "--background-index=false" }, lspconfig["eslint"].setup({
capabilities = capabilities,
on_attach = on_attach,
filetypes = { "c", "cpp", "objc", "objcpp" },
})
vim.lsp.config("buf_ls", {
capabilities = capabilities,
on_attach = on_attach,
filetypes = { "proto" },
})
vim.lsp.config("arduino_language_server", {
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
}) })
vim.lsp.config("biome", { -- configure astro server
lspconfig["astro"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
-- configure kotlin server
lspconfig["kotlin_language_server"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
-- configure clang server
lspconfig["clangd"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
-- configure arduino language server
lspconfig["arduino_language_server"].setup({
capabilities = capabilities,
on_attach = on_attach,
})
-- configure biome server
lspconfig["biome"].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach, on_attach = on_attach,
filetypes = { filetypes = {
@@ -288,28 +285,3 @@ vim.lsp.config("biome", {
"vue", "vue",
}, },
}) })
-- Enable all configured LSP servers
vim.lsp.enable({
"html",
"ts_ls",
"cssls",
"tailwindcss",
"svelte",
"emmet_ls",
"ruff",
"pyright",
"dockerls",
"jsonls",
"vue_ls",
"rust_analyzer",
"lua_ls",
"docker_compose_language_service",
"eslint",
"astro",
"kotlin_language_server",
"clangd",
"buf_ls",
"arduino_language_server",
"biome",
})
+26
View File
@@ -1,5 +1,6 @@
local lualine = require("lualine") local lualine = require("lualine")
local lazy_status = require("lazy.status") -- to configure lazy pending updates count local lazy_status = require("lazy.status") -- to configure lazy pending updates count
local noice = require("noice")
local colors = { local colors = {
blue = "#65D1FF", blue = "#65D1FF",
@@ -45,6 +46,21 @@ local my_lualine_theme = {
}, },
} }
function GetFlutterToolsStatusLine()
local application_version = vim.g.flutter_tools_decorations.app_version
local device = vim.g.flutter_tools_decorations.device
local result = "Flutter: " .. application_version .. " " .. device
end
function IsFlutterToolsActive()
if vim.g.flutter_tools_decorations ~= nil then
return true
else
return false
end
end
function GetPoetvStatusLine() function GetPoetvStatusLine()
-- Get the poetv statusline -- Get the poetv statusline
-- If poetv is not active, return empty string -- If poetv is not active, return empty string
@@ -79,6 +95,16 @@ lualine.setup({
}, },
sections = { sections = {
lualine_x = { lualine_x = {
{
noice.api.statusline.mode.get,
cond = noice.api.statusline.mode.has,
color = { fg = "#ff9e64" },
},
{
GetFlutterToolsStatusLine,
cond = IsFlutterToolsActive,
color = { fg = "#ff9e64" },
},
{ {
GetPoetvStatusLine, GetPoetvStatusLine,
cond = IsPoetvActive, cond = IsPoetvActive,
+10 -4
View File
@@ -8,13 +8,19 @@ require("mason-lspconfig").setup({
"html", "html",
"emmet_ls", "emmet_ls",
"lua_ls", "lua_ls",
"arduino_language_server", 'arduino_language_server',
"clangd", 'clangd',
"tailwindcss", "tailwindcss",
"svelte", "svelte",
"cssls", "cssls",
"jedi_language_server", "jedi_language_server",
"kotlin_language_server", "kotlin_language_server"
}, },
automatic_enable = false, automatic_installation = true,
})
require("mason-nvim-dap").setup({
ensure_installed = {
"debugpy", -- python
},
automatic_installation = true,
}) })
-6
View File
@@ -1,6 +0,0 @@
local diff = require("mini.diff")
diff.setup({
-- Disabled by default
source = diff.gen_source.none(),
})
+92
View File
@@ -0,0 +1,92 @@
local noice = require("noice")
local notify = require("notify")
notify.setup({
top_down = false,
animate = false,
stages = "static",
})
noice.setup({
routes = {
{
filter = {
event = "msg_show",
min_height = 20,
},
view = "cmdline_output",
},
{
filter = {
event = "lsp",
kind = "progress",
cond = function(message)
local client = vim.tbl_get(message.opts, "progress", "client")
return client == "lua_ls"
end
},
opts = { skip = true },
}
},
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp
},
},
cmdline = {
format = {
search_down = {
view = "cmdline",
},
search_up = {
view = "cmdline",
},
},
},
views = {
cmdline_popup = {
relative = "editor",
position = {
row = 5,
col = "50%",
},
size = {
width = 60,
height = "auto",
},
border = {
style = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" },
padding = { 0, 1 },
},
filter_options = {},
win_options = {
winhighlight = {
Normal = "Normal",
}
},
},
popupmenu = {
relative = "editor",
position = {
row = 8,
col = "50%",
},
size = {
width = 60,
height = 10,
},
border = {
style = "rounded",
padding = { 0, 1 },
},
win_options = {
winhighlight = { Normal = "Normal", FloatBorder = "DiagnosticInfo" },
},
},
},
})
+9
View File
@@ -0,0 +1,9 @@
local null_ls = require("null-ls")
null_ls.setup({
sources = {
null_ls.builtins.formatting.stylua,
null_ls.builtins.formatting.prettierd,
null_ls.builtins.formatting.shfmt,
},
})
+51
View File
@@ -0,0 +1,51 @@
local cmp = require("cmp")
local types = require('cmp.types')
local luasnip = require("luasnip")
local lspkind = require("lspkind")
-- loads vscode style snippets from installed plugins (e.g. friendly-snippets)
require("luasnip.loaders.from_vscode").lazy_load()
cmp.setup({
completion = {
completeopt = "menu,menuone,preview,noinsert",
autocomplete = { types.cmp.TriggerEvent.TextChanged },
},
window = {
documentation = {
border = { '┌', '─', '┐', '│', '┘', '─', '└', '│' },
winhighlight = 'Normal:CmpPmenu,FloatBorder:CmpPmenuBorder,CursorLine:PmenuSel,Search:None',
},
completion = {
side_padding = 1,
border = { '┌', '─', '┐', '│', '┘', '─', '└', '│' },
winhighlight = 'Normal:CmpPmenu,FloatBorder:CmpPmenuBorder,CursorLine:PmenuSel,Search:None',
scrollbar = false,
},
},
snippet = { -- configure how nvim-cmp interacts with snippet engine
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<C-o>"] = cmp.mapping.complete(), -- show completion suggestions
["<C-e>"] = cmp.mapping.abort(), -- close completion menu
["<CR>"] = cmp.mapping.confirm({ select = true }), -- accept current selection
}),
-- sources for autocompletion
sources = cmp.config.sources({
{ name = "nvim_lsp" },
{ name = "luasnip" }, -- snippets
{ name = "buffer" }, -- text within current buffer
{ name = "path" }, -- file system paths,
{ name = 'nvim_lsp_signature_help' },
}),
-- configure lspkind for vs-code like pictograms in completion menu
formatting = {
format = lspkind.cmp_format({
maxwidth = 50,
ellipsis_char = "...",
}),
},
})
+49
View File
@@ -0,0 +1,49 @@
local nvimtree = require("absolute.disabled.nvim-tree")
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.cmd([[ highlight NvimTreeIndentMarker guifg=#3FC5FF ]])
vim.cmd([[ highlight NvimTreeFolderArrowClosed guifg=#3FC5FF ]])
vim.cmd([[ highlight NvimTreeFolderArrowOpen guifg=#3FC5FF ]])
nvimtree.setup({
view = {
width = 45,
relativenumber = true,
},
update_focused_file = {
enable = true,
},
renderer = {
indent_markers = {
enable = true,
},
icons = {
glyphs = {
folder = {
arrow_closed = "", -- arrow when folder is closed
arrow_open = "", -- arrow when folder is open
},
},
},
},
-- disable window_picker for
-- explorer to work well with
-- window splits
actions = {
open_file = {
window_picker = {
enable = false,
},
},
},
filters = {
custom = { ".DS_Store" },
},
git = {
ignore = false,
},
})
@@ -2,7 +2,7 @@ local treesittercontext = require("treesitter-context")
treesittercontext.setup({ treesittercontext.setup({
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
max_lines = 5, -- How many lines the window should span. Values <= 0 mean no limit. max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit. min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
line_numbers = true, line_numbers = true,
multiline_threshold = 20, -- Maximum number of lines to show for a single context multiline_threshold = 20, -- Maximum number of lines to show for a single context
-2
View File
@@ -5,7 +5,6 @@ require("nvim-treesitter.configs").setup({
"javascript", "javascript",
"typescript", "typescript",
"python", "python",
"proto",
"c", "c",
"lua", "lua",
"vim", "vim",
@@ -31,7 +30,6 @@ require("nvim-treesitter.configs").setup({
-- Using this option may slow down your editor, and you may see some duplicate highlights. -- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages -- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = false, additional_vim_regex_highlighting = false,
disable = { "php" },
}, },
textobjects = { textobjects = {
move = { move = {
+22
View File
@@ -0,0 +1,22 @@
vim.g.poetv_executables = { "poetry", "pipenv" }
vim.g.poetv_auto_activate = 1
vim.g.poetv_set_environment = 1
vim.g.poetv_statusline_symbol = "🐍"
-- Keybindings
local opts = { noremap = true, silent = true }
-- Poetv: Activate Virtualenv
opts.desc = "Poetv: Activate virtualenv"
vim.keymap.set("n", "<leader>pva", "<cmd>PoetvActivate<CR>", opts)
-- Poetv: Deactivate Virtualenv
opts.desc = "Poetv: Deactivate virtualenv"
vim.keymap.set("n", "<leader>pvd", "<cmd>PoetvDeactivate<CR>", opts)
-- Setup Autocommands
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" },
{ pattern = { "*/.venv/*", "*.py" }, callback = function() vim.cmd([[ PoetvActivate]]) end })
-10
View File
@@ -1,10 +0,0 @@
local smear_cursor = require("smear_cursor")
smear_cursor.setup({
stiffness = 0.5,
trailing_stiffness = 0.49,
never_draw_over_target = false,
smear_insert_mode = false,
smear_between_buffers = true,
cursor_color = "#7DF9FF",
})
-33
View File
@@ -1,33 +0,0 @@
local map = vim.keymap.set
local function with_desc(desc)
return { noremap = true, silent = true, desc = desc }
end
map("n", "<C-p>", function()
Snacks.picker.files()
end, with_desc("Find files"))
map("n", "<leader>gf", function()
Snacks.picker.git_files()
end, with_desc("Find git files"))
map("n", "<leader>pr", function()
Snacks.picker.recent()
end, with_desc("Recent files"))
map("n", "<leader>ps", function()
Snacks.picker.grep()
end, with_desc("Live grep"))
map("n", "<leader>sb", function()
Snacks.picker.grep_word()
end, with_desc("Grep word under cursor"))
map("n", "<leader>pf", function()
Snacks.picker.explorer()
end, with_desc("File explorer (cwd)"))
map("n", "<leader>cf", function()
Snacks.picker.explorer({ cwd = vim.fn.expand("%:p:h") })
end, with_desc("File explorer (current file dir)"))
+76
View File
@@ -0,0 +1,76 @@
local telescope = require("telescope")
local builtin = require("telescope.builtin")
local actions = require("telescope.actions")
local trouble = require("trouble.sources.telescope")
telescope.setup({
defaults = {
vimgrep_arguments = {
"rg",
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
},
mappings = {
i = {
["<C-t>"] = trouble.open,
["<C-q>"] = actions.send_to_qflist,
},
n = {
["<C-t>"] = trouble.open,
["<C-q>"] = actions.send_to_qflist,
},
},
},
extensions = {
file_browser = {
hijack_netrw = true,
hide_parent_dir = true,
depth = 1,
respect_gitignore = false,
auto_depth = true,
display_stat = {
date = true,
size = true,
mode = false,
},
},
},
})
telescope.load_extension("file_browser")
telescope.load_extension("flutter")
telescope.load_extension("dap")
telescope.load_extension("themes")
local find_files = function()
builtin.find_files({
find_command = { "rg", "--files", "--hidden", "--glob", "!.git" },
})
end
local opts = { noremap = true, silent = true }
opts.desc = "Open file browser (cwd)"
vim.keymap.set("n", "<leader>af", "<cmd>Telescope file_browser<CR>", opts)
opts.desc = "Open file browser (current file)"
vim.keymap.set("n", "<leader>cf", "<cmd>Telescope file_browser path=%:p:h select_buffer=true<CR>", opts)
opts.desc = "Fuzzy find files (cwd)"
vim.keymap.set("n", "<leader>pf", find_files, opts)
opts.desc = "Fuzzy find recent files"
vim.keymap.set("n", "<leader>pr", builtin.oldfiles, opts)
opts.desc = "Fuzzy find files in git in cwd"
vim.keymap.set("n", "<C-p>", builtin.git_files, opts)
opts.desc = "Fuzzy find string under cursor in cwd"
vim.keymap.set("n", "<leader>ps", function()
builtin.grep_string({ search = vim.fn.input("Grep > ") })
end, opts)
+2 -2
View File
@@ -14,9 +14,9 @@ vim.keymap.set("n", "]t", function()
todo_comments.jump_next() todo_comments.jump_next()
end, opts) end, opts)
opts.desc = "Open todo comments in picker" opts.desc = "Open Comments in Telescope"
vim.keymap.set("n", "<leader>pt", function() vim.keymap.set("n", "<leader>pt", function()
Snacks.picker.todo_comments() vim.cmd([[TodoTelescope]])
end, opts) end, opts)
opts.desc = "Open Comments in Trouble" opts.desc = "Open Comments in Trouble"
-26
View File
@@ -29,34 +29,8 @@ function _LAZYGIT_TOGGLE()
lazygit:toggle() lazygit:toggle()
end end
-- Todo prompt model to run
local ollama = Terminal:new({
cmd = "ollama run llama3",
dir = "git_dir",
direction = "float",
float_opts = {
border = "double",
},
-- function to run on opening the terminal
on_open = function(term)
vim.cmd("startinsert!")
vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "<cmd>close<CR>", opts)
end,
-- function to run on closing the terminal
on_close = function(term)
vim.cmd("startinsert!")
end,
})
function _OLLAMA_TOGGLE()
ollama:toggle()
end
opts.desc = "Open lazygit" opts.desc = "Open lazygit"
vim.api.nvim_set_keymap("n", "<leader>gs", "<cmd>lua _LAZYGIT_TOGGLE()<CR>", opts) vim.api.nvim_set_keymap("n", "<leader>gs", "<cmd>lua _LAZYGIT_TOGGLE()<CR>", opts)
opts.desc = "Open ollama"
vim.api.nvim_set_keymap("n", "<leader>ol", "<cmd>lua _OLLAMA_TOGGLE()<CR>", opts)
-- opts.desc = "Open a terminal" -- opts.desc = "Open a terminal"
-- vim.api.nvim_set_keymap("n", "<C-`>", "<cmd>ToggleTerm<CR>", opts) -- vim.api.nvim_set_keymap("n", "<C-`>", "<cmd>ToggleTerm<CR>", opts)
-14
View File
@@ -1,14 +0,0 @@
local venvSelector = require("venv-selector")
venvSelector.setup({
-- name = "venv",
auto_refresh = false,
})
local opts = { noremap = true, silent = true }
opts.desc = "Open VenvSelector to pick a venv."
vim.api.nvim_set_keymap("n", "<leader>vs", "<cmd>VenvSelect<cr>", opts)
opts.desc = "Retrieve the venv from a cache."
vim.api.nvim_set_keymap("n", "<leader>vc", "<cmd>VenvSelectCached<cr>", opts)
+20 -111
View File
@@ -1,5 +1,3 @@
local ThemeRegistry = require("absolute.core.theme-registry")
local function SetupWindowPreferences() local function SetupWindowPreferences()
-- Utility function to get the blend value or set a default -- Utility function to get the blend value or set a default
local function get_blend_value(group_name, default_blend) local function get_blend_value(group_name, default_blend)
@@ -9,144 +7,55 @@ local function SetupWindowPreferences()
end end
-- Set the Normal group with dynamic blend -- Set the Normal group with dynamic blend
local normal_blend = get_blend_value("Normal", 0) local normal_blend = get_blend_value("Normal", 50)
vim.api.nvim_set_hl(0, "Normal", { bg = "none", blend = normal_blend }) vim.api.nvim_set_hl(0, "Normal", { bg = "none", blend = normal_blend })
-- Set the NormalFloat group with dynamic blend -- Set the NormalFloat group with dynamic blend
local normal_float_blend = get_blend_value("NormalFloat", 0) local normal_float_blend = get_blend_value("NormalFloat", 50)
vim.api.nvim_set_hl(1, "NormalFloat", { bg = "none", blend = normal_float_blend }) vim.api.nvim_set_hl(1, "NormalFloat", { bg = "none", blend = normal_float_blend })
-- Set the NormalNC group with dynamic blend -- Set the NormalNC group with dynamic blend
local normal_nc_blend = get_blend_value("NormalNC", 0) local normal_nc_blend = get_blend_value("NormalNC", 50)
vim.api.nvim_set_hl(0, "NormalNC", { bg = "none", blend = normal_nc_blend }) vim.api.nvim_set_hl(0, "NormalNC", { bg = "none", blend = normal_nc_blend })
end end
local colorschemes = {
["tokyonight-day"] = "Tokyo Night Day",
["tokyonight-night"] = "Tokyo Night Night",
["tokyonight-storm"] = "Tokyo Night Storm",
["tokynight-moon"] = "Tokyo Night Moon",
["catppuccin-frappe"] = "Catppuccin Frappe",
["catppuccin-latte"] = "Catppuccin Latte",
["catppuccin-macchiato"] = "Catppuccin Macchiato",
["catppuccin-mocha"] = "Catppuccin Mocha",
}
local function SyncWezTerm() local function SyncWezTerm()
vim.api.nvim_create_autocmd("ColorScheme", { vim.api.nvim_create_autocmd("ColorScheme", {
group = vim.api.nvim_create_augroup("wezterm_colorscheme", { clear = true }), group = vim.api.nvim_create_augroup("wezterm_colorscheme", { clear = true }),
callback = function(args) callback = function(args)
SetupWindowPreferences() SetupWindowPreferences()
-- Get terminal theme from registry local colorscheme = colorschemes[args.match]
local wezterm_theme = ThemeRegistry.get_theme(args.match, "wezterm") if not colorscheme then
if not wezterm_theme then
-- Theme not in registry, skip silently
return
end
-- if the file does not exists, exit early
local filename = vim.fn.expand("$XDG_CONFIG_HOME/wezterm/colorscheme")
if not vim.fn.filereadable(filename) then
return return
end end
-- Write the colorscheme to a file -- Write the colorscheme to a file
local filename = vim.fn.expand("$XDG_CONFIG_HOME/wezterm/colorscheme")
assert(type(filename) == "string") assert(type(filename) == "string")
local file = io.open(filename, "w") local file = io.open(filename, "w")
assert(file) assert(file)
file:write(colorscheme)
file:write(wezterm_theme)
file:close() file:close()
-- vim.notify("Setting WezTerm color scheme to " .. wezterm_theme, vim.log.levels.INFO) -- vim.notify("Setting WezTerm color scheme to " .. colorscheme, vim.log.levels.INFO)
end, end,
}) })
end end
local function SyncGhostyTerm()
vim.api.nvim_create_user_command("SendCmdShiftComma", function()
os.execute(
'osascript -e \'tell application "System Events" to keystroke "," using {command down, shift down}\''
)
end, {})
vim.api.nvim_create_autocmd("ColorScheme", {
group = vim.api.nvim_create_augroup("ghostty_colorscheme", { clear = true }),
callback = function(args)
SetupWindowPreferences()
local notifyOpts = { title = "Set Ghostty Theme" }
-- Get terminal theme from registry
local ghostty_colorscheme = ThemeRegistry.get_theme(args.match, "ghostty")
if not ghostty_colorscheme then
-- Theme not in registry, skip silently
return
end
-- if the file does not exists, exit early
local filename = vim.fn.expand("$XDG_CONFIG_HOME/ghostty/colorscheme")
if not vim.fn.filereadable(filename) then
vim.notify("Ghostty colorscheme file not found", vim.log.levels.ERROR, notifyOpts)
return
end
-- lets check if ghostty supports the theme
-- ghostty +list-themes | xargs -I {} echo {} | grep <theme>
local cmd = "ghostty +list-themes | sed 's/ (resources)//g' | grep '^" .. ghostty_colorscheme .. "$'"
local status = vim.fn.system(cmd)
local trimmed_output = vim.fn.substitute(status, "^s+|s+$", "", "g")
-- check if status is empty
if trimmed_output == "" then
vim.notify(ghostty_colorscheme .. " is not supported by Ghostty", vim.log.levels.ERROR, notifyOpts)
return
end
assert(type(filename) == "string")
local file = io.open(filename, "w")
assert(file)
local theme_string = 'theme = "' .. ghostty_colorscheme .. '"'
file:write(theme_string)
file:close()
vim.cmd([[SendCmdShiftComma]])
-- send a key combination to reload the theme
-- cmd + shift + ,
-- vim.api.nvim_feedkeys("<Cmd-Shift-,>", "n", true)
end,
})
end
local function is_wezterm()
return os.getenv("TERM_PROGRAM") == "WezTerm"
or os.getenv("WEZTERM_EXECUTABLE") ~= nil
or vim.fn.executable("wezterm") == 1
end
local function is_ghostty()
return os.getenv("TERM_PROGRAM") == "Ghostty"
or os.getenv("GHOSTTY_EXECUTABLE") ~= nil
or vim.fn.executable("ghostty") == 1
end
local function SetupAutocommands()
-- Setup Autocommand if wezterm is available in the system -- Setup Autocommand if wezterm is available in the system
if is_wezterm() then if vim.fn.executable("wezterm") == 1 then
SyncWezTerm() SyncWezTerm()
end end
-- Setup Autommand if the terminal is Ghostty
if is_ghostty() then
SyncGhostyTerm()
end
end
SetupWindowPreferences() SetupWindowPreferences()
SetupAutocommands()
local opts = { noremap = true, silent = true }
opts.desc = "Fuzzy find colorschemes"
vim.keymap.set("n", "<leader>cs", function()
Snacks.picker.colorschemes()
end, opts)
+1 -33
View File
@@ -2,21 +2,11 @@ local lua_utils = require("absolute.utils.detect-lua")
package.path = package.path .. lua_utils.GetLatestLuaVersion() package.path = package.path .. lua_utils.GetLatestLuaVersion()
local current_home = os.getenv("HOME")
vim.g.python3_host_prog = current_home .. "/.pyenv/versions/py3nvim/bin/python"
vim.opt.title = true
vim.opt.titlestring = "%{fnamemodify(getcwd(), ':t')}"
-- auto reload
vim.o.autoread = true
-- disable nvim intro -- disable nvim intro
vim.opt.shortmess:append("sI") vim.opt.shortmess:append "sI"
vim.opt.shell = "zsh"
vim.opt.nu = true vim.opt.nu = true
vim.opt.relativenumber = true vim.opt.relativenumber = true
@@ -81,26 +71,4 @@ vim.api.nvim_create_autocmd("InsertLeave", {
end, end,
}) })
vim.api.nvim_create_user_command("GitRootRun", function(opts)
local cmd = opts.args
local git_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1]
if git_root and git_root ~= "" then
vim.cmd("!cd " .. git_root .. " && " .. cmd)
else
print("Not in a Git repository.")
end
end, { nargs = "+" })
local opts = { noremap = true, silent = true }
opts.desc = "Run command in Git root"
vim.keymap.set("n", "<leader>gr", function()
local command = vim.fn.input("$: ")
if command ~= "" then
vim.cmd("GitRootRun " .. command)
else
print("No command entered.")
end
end, opts)
-- Add similar autocommands for other modes as needed -- Add similar autocommands for other modes as needed
-491
View File
@@ -1,491 +0,0 @@
-- Theme Registry
-- Central mapping between Neovim colorschemes and terminal themes (WezTerm, Ghostty)
-- Maintains a curated list of popular themes with verified mappings
local M = {}
-- Core theme mappings (manually curated and tested)
-- Each entry maps a Neovim colorscheme to its terminal equivalents
M.themes = {
-- ============================================================================
-- Tokyo Night Family (5 variants)
-- ============================================================================
["tokyonight"] = {
nvim = "tokyonight",
wezterm = "Tokyo Night",
ghostty = "TokyoNight",
family = "tokyonight",
variant = "night",
description = "A clean, dark Tokyo Night theme",
},
["tokyonight-night"] = {
nvim = "tokyonight-night",
wezterm = "Tokyo Night",
ghostty = "TokyoNight Night",
family = "tokyonight",
variant = "night",
description = "Tokyo Night (night variant)",
},
["tokyonight-storm"] = {
nvim = "tokyonight-storm",
wezterm = "Tokyo Night Storm",
ghostty = "TokyoNight Storm",
family = "tokyonight",
variant = "storm",
description = "Tokyo Night (storm variant)",
},
["tokyonight-day"] = {
nvim = "tokyonight-day",
wezterm = "Tokyo Night Day",
ghostty = "TokyoNight Day",
family = "tokyonight",
variant = "day",
description = "Tokyo Night (light day variant)",
},
["tokyonight-moon"] = {
nvim = "tokyonight-moon",
wezterm = "Tokyo Night Moon",
ghostty = "TokyoNight Moon",
family = "tokyonight",
variant = "moon",
description = "Tokyo Night (moon variant)",
},
-- ============================================================================
-- Catppuccin Family (4 variants)
-- ============================================================================
["catppuccin"] = {
nvim = "catppuccin",
wezterm = "Catppuccin Mocha",
ghostty = "Catppuccin Mocha",
family = "catppuccin",
variant = "mocha",
description = "Catppuccin (default mocha variant)",
},
["catppuccin-mocha"] = {
nvim = "catppuccin-mocha",
wezterm = "Catppuccin Mocha",
ghostty = "Catppuccin Mocha",
family = "catppuccin",
variant = "mocha",
description = "Catppuccin Mocha (warm, dark)",
},
["catppuccin-macchiato"] = {
nvim = "catppuccin-macchiato",
wezterm = "Catppuccin Macchiato",
ghostty = "Catppuccin Macchiato",
family = "catppuccin",
variant = "macchiato",
description = "Catppuccin Macchiato (mid-tone dark)",
},
["catppuccin-frappe"] = {
nvim = "catppuccin-frappe",
wezterm = "Catppuccin Frappe",
ghostty = "Catppuccin Frappe",
family = "catppuccin",
variant = "frappe",
description = "Catppuccin Frappe (cool, dark)",
},
["catppuccin-latte"] = {
nvim = "catppuccin-latte",
wezterm = "Catppuccin Latte",
ghostty = "Catppuccin Latte",
family = "catppuccin",
variant = "latte",
description = "Catppuccin Latte (light variant)",
},
-- ============================================================================
-- Rose Pine Family (4 variants)
-- ============================================================================
["rose-pine"] = {
nvim = "rose-pine",
wezterm = "rose-pine",
ghostty = "Rose Pine",
family = "rose-pine",
variant = "main",
description = "Rose Pine (main dark variant)",
},
["rose-pine-main"] = {
nvim = "rose-pine-main",
wezterm = "rose-pine",
ghostty = "Rose Pine",
family = "rose-pine",
variant = "main",
description = "Rose Pine (main dark variant)",
},
["rose-pine-moon"] = {
nvim = "rose-pine-moon",
wezterm = "rose-pine-moon",
ghostty = "Rose Pine Moon",
family = "rose-pine",
variant = "moon",
description = "Rose Pine Moon (darker variant)",
},
["rose-pine-dawn"] = {
nvim = "rose-pine-dawn",
wezterm = "rose-pine-dawn",
ghostty = "Rose Pine Dawn",
family = "rose-pine",
variant = "dawn",
description = "Rose Pine Dawn (light variant)",
},
-- ============================================================================
-- Nightfox Family (7 variants)
-- ============================================================================
["nightfox"] = {
nvim = "nightfox",
wezterm = "nightfox",
ghostty = "Nightfox",
family = "nightfox",
variant = "night",
description = "Nightfox (main dark variant)",
},
["carbonfox"] = {
nvim = "carbonfox",
wezterm = "carbonfox",
ghostty = "Carbonfox",
family = "nightfox",
variant = "carbon",
description = "Carbonfox (carbon variant)",
},
["dawnfox"] = {
nvim = "dawnfox",
wezterm = "dawnfox",
ghostty = "Dawnfox",
family = "nightfox",
variant = "dawn",
description = "Dawnfox (dawn variant)",
},
["dayfox"] = {
nvim = "dayfox",
wezterm = "dayfox",
ghostty = "Dayfox",
family = "nightfox",
variant = "day",
description = "Dayfox (light day variant)",
},
["duskfox"] = {
nvim = "duskfox",
wezterm = "duskfox",
ghostty = "Duskfox",
family = "nightfox",
variant = "dusk",
description = "Duskfox (dusk variant)",
},
["nordfox"] = {
nvim = "nordfox",
wezterm = "nordfox",
ghostty = "Nordfox",
family = "nightfox",
variant = "nord",
description = "Nordfox (nord-inspired variant)",
},
["terafox"] = {
nvim = "terafox",
wezterm = "terafox",
ghostty = "Terafox",
family = "nightfox",
variant = "tera",
description = "Terafox (tera variant)",
},
-- ============================================================================
-- Gruvbox Family (4 variants)
-- ============================================================================
["gruvbox"] = {
nvim = "gruvbox",
wezterm = "GruvboxDark",
ghostty = "Gruvbox Dark",
family = "gruvbox",
variant = "dark",
description = "Gruvbox (dark variant)",
},
["gruvbox-material"] = {
nvim = "gruvbox-material",
wezterm = "Gruvbox Material (Gogh)",
ghostty = "Gruvbox Material",
family = "gruvbox",
variant = "material",
description = "Gruvbox Material",
},
-- ============================================================================
-- Nord
-- ============================================================================
["nord"] = {
nvim = "nord",
wezterm = "Nord (base16)",
ghostty = "Nord",
family = "nord",
variant = "main",
description = "Nord (arctic, north-bluish color palette)",
},
-- ============================================================================
-- Dracula
-- ============================================================================
["dracula"] = {
nvim = "dracula",
wezterm = "Dracula (Official)",
ghostty = "Dracula",
family = "dracula",
variant = "main",
description = "Dracula (dark theme)",
},
-- ============================================================================
-- One Dark / One Light
-- ============================================================================
["onedark"] = {
nvim = "onedark",
wezterm = "OneDark (base16)",
ghostty = "Atom One Dark",
family = "onedark",
variant = "dark",
description = "One Dark (Atom-inspired dark theme)",
},
["onelight"] = {
nvim = "onelight",
wezterm = "One Light (base16)",
ghostty = "Atom One Light",
family = "onelight",
variant = "light",
description = "One Light (Atom-inspired light theme)",
},
-- ============================================================================
-- Material
-- ============================================================================
["material"] = {
nvim = "material",
wezterm = "MaterialDark",
ghostty = "Material",
family = "material",
variant = "dark",
description = "Material (dark variant)",
},
["material-darker"] = {
nvim = "material-darker",
wezterm = "MaterialDarker",
ghostty = "Material Darker",
family = "material",
variant = "darker",
description = "Material (darker variant)",
},
-- ============================================================================
-- Solarized
-- ============================================================================
["solarized-dark"] = {
nvim = "solarized-dark",
wezterm = "Builtin Solarized Dark",
ghostty = "Builtin Solarized Dark",
family = "solarized",
variant = "dark",
description = "Solarized Dark",
},
["solarized-light"] = {
nvim = "solarized-light",
wezterm = "Builtin Solarized Light",
ghostty = "Builtin Solarized Light",
family = "solarized",
variant = "light",
description = "Solarized Light",
},
-- ============================================================================
-- Monokai
-- ============================================================================
["monokai"] = {
nvim = "monokai",
wezterm = "Monokai Remastered",
ghostty = "Monokai Classic",
family = "monokai",
variant = "main",
description = "Monokai (classic variant)",
},
["monokai-pro"] = {
nvim = "monokai-pro",
wezterm = "Monokai Pro (Gogh)",
ghostty = "Monokai Pro",
family = "monokai",
variant = "pro",
description = "Monokai Pro",
},
-- ============================================================================
-- GitHub
-- ============================================================================
["github-dark"] = {
nvim = "github-dark",
wezterm = "GitHub Dark",
ghostty = "GitHub Dark",
family = "github",
variant = "dark",
description = "GitHub Dark",
},
-- ============================================================================
-- Ayu
-- ============================================================================
["ayu-dark"] = {
nvim = "ayu-dark",
wezterm = "Ayu Dark (Gogh)",
ghostty = "Ayu",
family = "ayu",
variant = "dark",
description = "Ayu (dark variant)",
},
["ayu-mirage"] = {
nvim = "ayu-mirage",
wezterm = "Ayu Mirage",
ghostty = "Ayu Mirage",
family = "ayu",
variant = "mirage",
description = "Ayu Mirage (mid-tone variant)",
},
["ayu-light"] = {
nvim = "ayu-light",
wezterm = "Ayu Light (Gogh)",
ghostty = "Ayu Light",
family = "ayu",
variant = "light",
description = "Ayu (light variant)",
},
}
-- ============================================================================
-- Helper Functions
-- ============================================================================
--- Get the terminal theme name for a given Neovim colorscheme
--- @param nvim_name string The Neovim colorscheme name
--- @param terminal_type string The terminal type ("wezterm" or "ghostty")
--- @return string|nil The terminal theme name, or nil if not found
function M.get_theme(nvim_name, terminal_type)
local theme = M.themes[nvim_name]
if not theme then
return nil
end
if terminal_type == "wezterm" then
return theme.wezterm
elseif terminal_type == "ghostty" then
return theme.ghostty
end
return nil
end
--- Check if a Neovim colorscheme is supported for a given terminal
--- @param nvim_name string The Neovim colorscheme name
--- @param terminal_type string The terminal type ("wezterm" or "ghostty")
--- @return boolean True if the mapping exists
function M.is_supported(nvim_name, terminal_type)
return M.get_theme(nvim_name, terminal_type) ~= nil
end
--- Get all Neovim themes in the registry
--- @return table List of Neovim colorscheme names
function M.get_all_nvim_themes()
local themes = {}
for nvim_name, _ in pairs(M.themes) do
table.insert(themes, nvim_name)
end
table.sort(themes)
return themes
end
--- Get theme family and variant information
--- @param nvim_name string The Neovim colorscheme name
--- @return table|nil Theme metadata (family, variant, description)
function M.get_theme_info(nvim_name)
local theme = M.themes[nvim_name]
if not theme then
return nil
end
return {
family = theme.family,
variant = theme.variant,
description = theme.description,
wezterm = theme.wezterm,
ghostty = theme.ghostty,
}
end
--- Get all themes in a family
--- @param family_name string The theme family name (e.g., "tokyonight", "catppuccin")
--- @return table List of theme entries in the family
function M.get_family_themes(family_name)
local family_themes = {}
for nvim_name, theme in pairs(M.themes) do
if theme.family == family_name then
table.insert(family_themes, {
nvim = nvim_name,
variant = theme.variant,
description = theme.description,
})
end
end
-- Sort by variant name
table.sort(family_themes, function(a, b)
return a.variant < b.variant
end)
return family_themes
end
--- Get a list of all theme families
--- @return table List of unique family names
function M.get_all_families()
local families = {}
local seen = {}
for _, theme in pairs(M.themes) do
if not seen[theme.family] then
seen[theme.family] = true
table.insert(families, theme.family)
end
end
table.sort(families)
return families
end
--- Get statistics about the theme registry
--- @return table Statistics (total_themes, families_count, terminal_coverage)
function M.get_stats()
local total = 0
local wezterm_count = 0
local ghostty_count = 0
local families = {}
for _, theme in pairs(M.themes) do
total = total + 1
if theme.wezterm then
wezterm_count = wezterm_count + 1
end
if theme.ghostty then
ghostty_count = ghostty_count + 1
end
families[theme.family] = true
end
local families_count = 0
for _ in pairs(families) do
families_count = families_count + 1
end
return {
total_themes = total,
families_count = families_count,
wezterm_coverage = wezterm_count,
ghostty_coverage = ghostty_count,
}
end
return M
+2 -4
View File
@@ -1,8 +1,6 @@
local lua_utils = require("absolute.utils.detect-lua")
package.path = package.path .. lua_utils.GetLatestLuaVersion()
require("absolute.core") require("absolute.core")
require("absolute.lazy") require("absolute.lazy")
require("absolute.helpers") require("absolute.helpers")
require("absolute.remap") require("absolute.remap")
+1 -4
View File
@@ -27,10 +27,7 @@ require("lazy")
change_detection = { change_detection = {
notify = false, notify = false,
}, },
ui = {
border = "rounded",
},
}) })
require("absolute.core.colorscheme") require("absolute.core.colorscheme")
require("current-theme") require("../current-theme");
-8
View File
@@ -1,8 +0,0 @@
return {
default_config = {
cmd = { "pb", "lsp" },
filetypes = { "proto" },
single_file_support = true,
root_dir = require("lspconfig.util").root_pattern(".git"),
},
}
-1
View File
@@ -1,6 +1,5 @@
return { return {
"https://github.com/apple/pkl-neovim", "https://github.com/apple/pkl-neovim",
enabled = false,
lazy = true, lazy = true,
event = "BufReadPre *.pkl", event = "BufReadPre *.pkl",
dependencies = { dependencies = {
-9
View File
@@ -1,9 +0,0 @@
return {
"saghen/blink.cmp",
version = "1.*",
event = "InsertEnter",
dependencies = { "rafamadriz/friendly-snippets" },
config = function()
require("absolute.after.blink-cmp")
end,
}
+11
View File
@@ -0,0 +1,11 @@
return {
"sudormrfbin/cheatsheet.nvim",
dependencies = {
{ "nvim-telescope/telescope.nvim" },
{ "nvim-lua/plenary.nvim" },
},
config = function()
require("absolute.after.cheatsheet")
end,
}
+3
View File
@@ -0,0 +1,3 @@
return {
"github/copilot.vim"
}
+7
View File
@@ -4,6 +4,13 @@ return {
"theHamsta/nvim-dap-virtual-text", "theHamsta/nvim-dap-virtual-text",
"rcarriga/nvim-dap-ui", "rcarriga/nvim-dap-ui",
"nvim-neotest/nvim-nio", "nvim-neotest/nvim-nio",
"nvim-telescope/telescope-dap.nvim",
{
"mfussenegger/nvim-dap-python",
ft = "python",
dependencies = { "mfussenegger/nvim-dap" },
},
-- "Pocco81/DAPInstall.nvim"
}, },
config = function() config = function()
require("absolute.after.dap") require("absolute.after.dap")
+11
View File
@@ -0,0 +1,11 @@
return {
"nvimdev/dashboard-nvim",
dependencies = {
"nvim-tree/nvim-web-devicons"
},
event = "VimEnter",
config = function()
require("absolute.after.dashboard")
end
}
+4
View File
@@ -0,0 +1,4 @@
return {
"stevearc/dressing.nvim",
event = "VeryLazy"
}
-15
View File
@@ -1,15 +0,0 @@
return {
enabled = false,
"folke/flash.nvim",
event = "VeryLazy",
---@type Flash.Config
opts = {},
-- stylua: ignore
keys = {
{ "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" },
{ "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
{ "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" },
{ "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
{ "<c-s>", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" },
},
}
+3 -4
View File
@@ -1,10 +1,9 @@
return { return {
"akinsho/flutter-tools.nvim", 'akinsho/flutter-tools.nvim',
enabled = false,
lazy = false, lazy = false,
dependencies = { dependencies = {
"nvim-lua/plenary.nvim", 'nvim-lua/plenary.nvim',
"stevearc/dressing.nvim", -- optional for vim.ui.select 'stevearc/dressing.nvim', -- optional for vim.ui.select
}, },
config = function() config = function()
require("absolute.after.flutter-tools") require("absolute.after.flutter-tools")
+4
View File
@@ -0,0 +1,4 @@
return {
"f-person/git-blame.nvim",
event = "VeryLazy",
}
+9
View File
@@ -0,0 +1,9 @@
return {
"wintermute-cell/gitignore.nvim",
dependencies = {
"nvim-telescope/telescope.nvim",
},
config = function()
require("absolute.after.gitignore")
end
}
+7
View File
@@ -0,0 +1,7 @@
return {
"theprimeagen/harpoon",
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
require("absolute.after.harpoon")
end
}
-6
View File
@@ -1,6 +0,0 @@
return {
"3rd/image.nvim",
config = function()
require("absolute.after.image")
end,
}
+7
View File
@@ -0,0 +1,7 @@
return {
"jokajak/keyseer.nvim",
version = "*",
config = function()
require("absolute.after.keyseer")
end,
}
+4
View File
@@ -2,6 +2,10 @@ return {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" }, event = { "BufReadPre", "BufNewFile" },
dependencies = { dependencies = {
{
"hrsh7th/cmp-nvim-lsp",
name = "nvim_lsp",
},
{ {
"antosha417/nvim-lsp-file-operations", "antosha417/nvim-lsp-file-operations",
config = true, config = true,
-11
View File
@@ -1,11 +0,0 @@
return {
"OXY2DEV/markview.nvim",
lazy = false,
opts = {
preview = {
filetypes = { "markdown", "codecompanion" },
ignore_buftypes = {},
},
experimental = { check_rtp_message = false },
},
}
+11 -5
View File
@@ -1,11 +1,17 @@
return { return {
"mason-org/mason.nvim", 'williamboman/mason.nvim',
dependencies = { dependencies = {
"mason-org/mason-registry", 'williamboman/mason-lspconfig.nvim',
"mason-org/mason-lspconfig.nvim", {
"neovim/nvim-lspconfig", "jay-babu/mason-nvim-dap.nvim",
dependencies = {
"mfussenegger/nvim-dap",
}
}
}, },
config = function() config = function()
require("absolute.after.mason") require("absolute.after.mason")
end, end
} }
-6
View File
@@ -1,6 +0,0 @@
return {
"echasnovski/mini.diff",
config = function()
require("absolute.after.mini-diff")
end,
}
+1 -2
View File
@@ -1,8 +1,7 @@
return { return {
"echasnovski/mini.nvim", "echasnovski/mini.nvim",
enabled = false,
version = "*", -- Stable Version version = "*", -- Stable Version
config = function() config = function()
require("absolute.after.mini") require("absolute.after.mini")
end, end
} }
+15
View File
@@ -0,0 +1,15 @@
return {
"folke/noice.nvim",
event = "VeryLazy",
dependencies = {
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
"MunifTanjim/nui.nvim",
-- OPTIONAL:
-- `nvim-notify` is only needed, if you want to use the notification view.
-- If not available, we use `mini` as the fallback
"rcarriga/nvim-notify",
},
config = function()
require("absolute.after.noice")
end,
}
@@ -0,0 +1,7 @@
return {
"nvimtools/none-ls.nvim",
config = function()
require("absolute.after.none-ls")
end
}
+18
View File
@@ -0,0 +1,18 @@
return {
'hrsh7th/nvim-cmp',
event = "InsertEnter",
dependencies = {
'neovim/nvim-lspconfig',
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-buffer', --source for text in buffer
'hrsh7th/cmp-path', --source for file system paths
'hrsh7th/cmp-cmdline',
"saadparwaiz1/cmp_luasnip", --source for autocompletion
"onsails/lspkind.nvim",
"L3MON4D3/LuaSnip", --Snippet Engine
"rafamadriz/friendly-snippets", --Useful snippets
},
config = function()
require("absolute.after.nvim-cmp")
end
}
-1
View File
@@ -1,6 +1,5 @@
return { return {
"kylechui/nvim-surround", "kylechui/nvim-surround",
enabled = false,
version = "*", -- Use for stability; omit to use `main` branch for the latest features version = "*", -- Use for stability; omit to use `main` branch for the latest features
event = "VeryLazy", event = "VeryLazy",
config = function() config = function()
@@ -1,5 +1,4 @@
return { return {
enabled = true,
"nvim-treesitter/nvim-treesitter-context", "nvim-treesitter/nvim-treesitter-context",
config = function() config = function()
require("absolute.after.nvim-treesitter-context") require("absolute.after.nvim-treesitter-context")
@@ -0,0 +1,3 @@
return {
"nvim-treesitter/playground",
}
+1 -4
View File
@@ -1,10 +1,7 @@
return { return {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
dependencies = {
"OXY2DEV/markview.nvim",
},
config = function() config = function()
vim.cmd([[:silent !TSUpdate]]) vim.cmd([[:silent !TSUpdate]])
require("absolute.after.nvim-treesitter") require("absolute.after.nvim-treesitter")
end, end
} }
+9
View File
@@ -0,0 +1,9 @@
return {
"petobens/poet-v",
lazy = true,
ft = "py",
config = function()
require("absolute.after.poet-v")
end,
}
-7
View File
@@ -1,7 +0,0 @@
return {
enabled = false,
"sphamba/smear-cursor.nvim",
config = function()
require("absolute.after.smear-cursor")
end,
}
-32
View File
@@ -1,32 +0,0 @@
return {
"folke/snacks.nvim",
priority = 1000,
lazy = false,
---@type snacks.Config
opts = {
bigfile = { enabled = true },
quickfile = { enabled = true },
input = { enabled = true },
notifier = {
enabled = true,
timeout = 3000,
style = "compact",
top_down = true,
icons = {
debug = "",
error = "",
info = "",
trace = "✎",
warn = "",
},
},
picker = {
enabled = true,
ui_select = true,
},
},
config = function(_, opts)
require("snacks").setup(opts)
require("absolute.after.snacks")
end,
}
-1
View File
@@ -1,5 +1,4 @@
return { return {
enabled = false,
"laytan/tailwind-sorter.nvim", "laytan/tailwind-sorter.nvim",
dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-lua/plenary.nvim" }, dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-lua/plenary.nvim" },
build = "cd formatter && npm i && npm run build", build = "cd formatter && npm i && npm run build",
@@ -0,0 +1,7 @@
return {
"nvim-telescope/telescope-file-browser.nvim",
dependencies = {
"nvim-telescope/telescope.nvim",
"nvim-lua/plenary.nvim"
},
}
+12
View File
@@ -0,0 +1,12 @@
return {
'nvim-telescope/telescope.nvim',
branch = '0.1.x',
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope-dap.nvim",
"andrew-george/telescope-themes",
},
config = function()
require("absolute.after.telescope")
end
}
@@ -1,4 +0,0 @@
return {
"bezhermoso/tree-sitter-ghostty",
build = "make nvim_install",
}
-12
View File
@@ -1,12 +0,0 @@
return {
"linux-cultist/venv-selector.nvim",
lazy = false,
branch = "main", -- This is the regexp branch, use this for the new version
dependencies = {
"neovim/nvim-lspconfig",
},
config = function()
require("absolute.after.venv-selector")
end,
event = "VeryLazy", -- Optional: needed only if you want to type `:VenvSelect` without a keymapping
}
+3
View File
@@ -0,0 +1,3 @@
return {
"szw/vim-maximizer"
}
+15 -15
View File
@@ -1,17 +1,17 @@
return { return {
"alexghergh/nvim-tmux-navigation", "christoomey/vim-tmux-navigator",
config = function() cmd = {
local nvim_tmux_nav = require("nvim-tmux-navigation") "TmuxNavigateLeft",
"TmuxNavigateDown",
nvim_tmux_nav.setup({ "TmuxNavigateUp",
disable_when_zoomed = true, -- defaults to false "TmuxNavigateRight",
}) "TmuxNavigatePrevious",
},
vim.keymap.set("n", "<C-h>", nvim_tmux_nav.NvimTmuxNavigateLeft) keys = {
vim.keymap.set("n", "<C-j>", nvim_tmux_nav.NvimTmuxNavigateDown) { "<C-h>", "<cmd><C-U>TmuxNavigateLeft<CR>" },
vim.keymap.set("n", "<C-k>", nvim_tmux_nav.NvimTmuxNavigateUp) { "<C-j>", "<cmd><C-U>TmuxNavigateDown<CR>" },
vim.keymap.set("n", "<C-l>", nvim_tmux_nav.NvimTmuxNavigateRight) { "<C-k>", "<cmd><C-U>TmuxNavigateUp<CR>" },
vim.keymap.set("n", "<C-\\>", nvim_tmux_nav.NvimTmuxNavigateLastActive) { "<C-l>", "<cmd><C-U>TmuxNavigateRight<CR>" },
vim.keymap.set("n", "<C-Space>", nvim_tmux_nav.NvimTmuxNavigateNext) { "<C-\\>", "<cmd><C-U>TmuxNavigatePrevious<CR>" },
end, },
} }
+32 -38
View File
@@ -1,12 +1,10 @@
local opts = { local opts = { noremap = true, silent = true }
noremap = true,
silent = true,
}
opts.desc = "Show keymaps" opts.desc = "Show Cheatsheet"
vim.keymap.set("n", "<leader>?", function() vim.keymap.set("n", "<leader>\\", "<cmd>Cheatsheet<CR>", opts) -- toggle file explorer
Snacks.picker.keymaps()
end, opts) opts.desc = "Show Keymap"
vim.keymap.set("n", "<leader>?", "<cmd>Telescope keymaps<CR>", opts) -- toggle file explorer
opts.desc = "Select All" opts.desc = "Select All"
vim.keymap.set("n", "<C-a>", "gg0vG$", opts) -- select all vim.keymap.set("n", "<C-a>", "gg0vG$", opts) -- select all
@@ -55,6 +53,10 @@ vim.keymap.set("n", "<leader>Y", [["+Y]], opts)
opts.desc = "Delete current line (blackhole)" opts.desc = "Delete current line (blackhole)"
vim.keymap.set({ "n", "v" }, "<leader>d", [["_d]], opts) vim.keymap.set({ "n", "v" }, "<leader>d", [["_d]], opts)
-- Alternate Escape (Easy to Reach)
opts.desc = "Alternate Escape (Easy to Reach)"
vim.keymap.set("i", "<C-c>", "<Esc>", opts)
-- Disable Q - Nothing Good Ever Happens -- Disable Q - Nothing Good Ever Happens
-- Q is normally used to enable Ex mode. We dont want that -- Q is normally used to enable Ex mode. We dont want that
opts.desc = "Disable Q - Nothing Good Ever Happens" opts.desc = "Disable Q - Nothing Good Ever Happens"
@@ -68,44 +70,36 @@ vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz", opts)
opts.desc = "Jump down and center screen" opts.desc = "Jump down and center screen"
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz", opts) vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz", opts)
opts.desc = "Next location-list entry" opts.desc = "Jump to next location and center screen"
vim.keymap.set("n", "]l", "<cmd>lnext<CR>zz", opts) vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz", opts)
opts.desc = "Jump to previous location and center screen"
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz", opts)
opts.desc = "Previous location-list entry"
vim.keymap.set("n", "[l", "<cmd>lprev<CR>zz", opts)
-- Search Regex Keymap -- Search Regex Keymap
opts.desc = "Regex Replace" opts.desc = "Regex Replace"
vim.keymap.set("n", "<leader>sr", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], opts) vim.keymap.set("n", "<leader>sr", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], opts)
opts.desc = "Replace selected text" opts.desc = "Replace selected text"
vim.keymap.set("v", "<leader>sr", [[:s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], opts) vim.keymap.set("v", "<leader>ss", [[:s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]], opts)
-- -- Source File Keymap -- Source File Keymap
-- opts.desc = "Source File" opts.desc = "Source File"
-- vim.keymap.set("n", "<leader><leader>", function() vim.keymap.set("n", "<leader><leader>", function()
-- -- Only source these file extensions -- Only source these file extensions
-- local allowed_extensions = [[ local allowed_extensions = [[".vim", ".lua", ".vimrc", ".gvimrc", ".nvim", ".nvimrc", ".sh"]]
-- ".vim",
-- ".lua", -- Get the file extension
-- ".vimrc", local file_extension = vim.fn.expand("%:e")
-- ".gvimrc",
-- ".nvim", -- Check if the file extension is allowed
-- ".nvimrc", if string.find(allowed_extensions, file_extension) then
-- ".sh" vim.cmd("so %")
-- ]] else
-- vim.notify("Filetype not supported", vim.log.levels.ERROR)
-- -- Get the file extension end
-- local file_extension = vim.fn.expand("%:e") end, opts)
--
-- -- Check if the file extension is allowed
-- if string.find(allowed_extensions, file_extension) then
-- vim.cmd("so %")
-- vim.notify("Sourced file", vim.log.levels.INFO)
-- else
-- vim.notify("Filetype not supported", vim.log.levels.ERROR)
-- end
-- end, opts)
-- Optimize Window Resize -- Optimize Window Resize
+5 -19
View File
@@ -7,40 +7,26 @@ function CheckPoetryVirtualEnv()
end end
function ResolvePythonEnvironment() function ResolvePythonEnvironment()
-- Check if asdf is installed
-- Get system global python env -- Get system global python env
local python = vim.fn.system("which python3") local python = vim.fn.system("which python3")
-- Check of virtual environments exists -- Check of virtual environments exists
local virtual = os.getenv("VIRTUAL_ENV") or CheckPoetryVirtualEnv() local virtual = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX") or CheckPoetryVirtualEnv()
if virtual == nil then if virtual == nil then
-- Check if poetry environment exists
return { return {
"--python-executable", "--python-executable", python
python,
} }
end end
return { return {
"--python-executable", "--python-executable", virtual .. "/bin/python"
virtual .. "/bin/python",
} }
end end
function ResolvePythonEnvironmentAsString()
local env = ResolvePythonEnvironment()
if env == nil then
return ""
end
local path = table.concat(env, " ")
return path
end
M = {} M = {}
M.ResolvePythonEnvironmentAsString = ResolvePythonEnvironmentAsString
M.ResolvePythonEnvironment = ResolvePythonEnvironment M.ResolvePythonEnvironment = ResolvePythonEnvironment
M.CheckPoetryVirtualEnv = CheckPoetryVirtualEnv M.CheckPoetryVirtualEnv = CheckPoetryVirtualEnv
@@ -1,67 +0,0 @@
M = {}
local function trim(s)
return s:gsub("^%s*(.-)%s*$", "%1")
end
local ResolveTypescriptServer = function()
-- Find the package.json file
local viable = vim.fn.system("find . -name 'package.json' -maxdepth 3 | xargs dirname")
viable = trim(viable)
if viable == "" then
return nil
end
-- Check for lock files
local find_npm_result = trim(vim.fn.system("find . -name 'package-lock.json' -maxdepth 3 | wc -l"))
local find_pnpm_result = trim(vim.fn.system("find . -name 'pnpm-lock.yaml' -maxdepth 3 | wc -l"))
local find_yarn_result = trim(vim.fn.system("find . -name 'yarn.lock' -maxdepth 3 | wc -l"))
local is_npm = find_npm_result == "1"
local is_pnpm = find_pnpm_result == "1"
local is_yarn = find_yarn_result == "1"
-- if no package lock files are found, end early
if not is_npm and not is_pnpm and not is_yarn then
return nil
end
-- Determine the preferred package manager
local ppm = "pnpm" -- Default to pnpm
if is_npm then
ppm = "npm"
end
if is_yarn then
ppm = "yarn"
end
-- Resolve TypeScript server path
local base_command = ppm .. " list typescript --dir " .. viable .. " --json"
local base_result = trim(vim.fn.system(base_command))
if base_result == "" then
vim.notify("Failed to run " .. base_command, vim.log.levels.ERROR)
return nil
end
local typescript_path = nil
if ppm == "pnpm" or ppm == "npm" or ppm == "yarn" then
local ok, parsed = pcall(vim.fn.json_decode, base_result)
if ok and parsed and #parsed > 0 and parsed[1].path then
typescript_path = parsed[1].path .. "/node_modules/typescript/lib"
end
end
if not typescript_path or typescript_path == "" then
vim.notify("TypeScript not found. Please install TypeScript globally or in the project.", vim.log.levels.ERROR)
return nil
end
return typescript_path
end
M.ResolveTypescriptServer = ResolveTypescriptServer
M.trim = trim
return M
+1 -1
View File
@@ -1 +1 @@
vim.cmd("colorscheme tokyonight-night") vim.cmd("colorscheme catppuccin")