new terminal
This commit is contained in:
		
							parent
							
								
									9adc82d479
								
							
						
					
					
						commit
						b5ee51d270
					
				| @ -49,7 +49,7 @@ | |||||||
| Xcursor.theme: xcursor-breeze | Xcursor.theme: xcursor-breeze | ||||||
| Xcursor.size:                     0 | Xcursor.size:                     0 | ||||||
| 
 | 
 | ||||||
| xterm*VT100.Translations: #override \ | alacritty*VT100.Translations: #override \ | ||||||
|       Shift <KeyPress> Insert: insert-selection(CLIPBOARD) \n\ |       Shift <KeyPress> Insert: insert-selection(CLIPBOARD) \n\ | ||||||
|       Ctrl Shift <Key>V:    insert-selection(CLIPBOARD) \n\ |       Ctrl Shift <Key>V:    insert-selection(CLIPBOARD) \n\ | ||||||
|       Ctrl Shift <Key>C:    copy-selection(CLIPBOARD) \n\ |       Ctrl Shift <Key>C:    copy-selection(CLIPBOARD) \n\ | ||||||
|  | |||||||
							
								
								
									
										51
									
								
								.config/alacritty/alacritty.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								.config/alacritty/alacritty.toml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,51 @@ | |||||||
|  | [font] | ||||||
|  | size = 7.0 | ||||||
|  | offset = { x = 0, y = 2 } | ||||||
|  | 
 | ||||||
|  | [font.bold] | ||||||
|  | family = "Terminus" | ||||||
|  | style = "Bold" | ||||||
|  | 
 | ||||||
|  | [font.bold_italic] | ||||||
|  | family = "Terminus" | ||||||
|  | style = "Bold Italic" | ||||||
|  | 
 | ||||||
|  | [font.italic] | ||||||
|  | family = "Terminus" | ||||||
|  | style = "Italic" | ||||||
|  | 
 | ||||||
|  | [font.normal] | ||||||
|  | family = "Terminus" | ||||||
|  | style = "Regular" | ||||||
|  | 
 | ||||||
|  | # Default colors | ||||||
|  | [colors.primary] | ||||||
|  | background = '#000000' | ||||||
|  | foreground = '#dcd7d7' | ||||||
|  | 
 | ||||||
|  | # Colors the cursor will use if `custom_cursor_colors` is true | ||||||
|  | [colors.cursor] | ||||||
|  | text = '#232936' | ||||||
|  | cursor = '#51617d' | ||||||
|  | 
 | ||||||
|  | # Normal colors | ||||||
|  | [colors.normal] | ||||||
|  | black = '#242829' | ||||||
|  | red = '#df2683' | ||||||
|  | green = '#13868c' | ||||||
|  | yellow = '#fcfcdf' | ||||||
|  | blue = '#1a86b9' | ||||||
|  | magenta = '#bc7fd2' | ||||||
|  | cyan = '#7cc7d6' | ||||||
|  | white = '#dcd7d7' | ||||||
|  | 
 | ||||||
|  | # Bright colors | ||||||
|  | [colors.bright] | ||||||
|  | black = '#242829' | ||||||
|  | red = '#df2683' | ||||||
|  | green = '#13868c' | ||||||
|  | yellow = '#fcfcdf' | ||||||
|  | blue = '#1a86b9' | ||||||
|  | magenta = '#bc7fd2' | ||||||
|  | cyan = '#7cc7d6' | ||||||
|  | white = '#dcd7d7' | ||||||
| @ -31,8 +31,7 @@ bindsym $mod+l exec --no-startup-id mpc next && notify-send -e -t 800 -i music " | |||||||
| bindsym $mod+m exec --no-startup-id mpc toggle | bindsym $mod+m exec --no-startup-id mpc toggle | ||||||
| bindsym $mod+p exec --no-startup-id mpc volume +5 | bindsym $mod+p exec --no-startup-id mpc volume +5 | ||||||
| bindsym $mod+o exec --no-startup-id mpc volume -5 | bindsym $mod+o exec --no-startup-id mpc volume -5 | ||||||
| bindsym $mod+j exec --no-startup-id xterm -e "ncmpcpp -s playlist -S visualizer" | bindsym $mod+j exec --no-startup-id alacritty -e ncmpcpp | ||||||
| exec /home/naiji/.local/bin/update-now-playing |  | ||||||
| 
 | 
 | ||||||
| # The combination of xss-lock, nm-applet and pactl is a popular choice, so | # The combination of xss-lock, nm-applet and pactl is a popular choice, so | ||||||
| # they are included here as an example. Modify as you see fit. | # they are included here as an example. Modify as you see fit. | ||||||
| @ -58,7 +57,7 @@ bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl s $(($(brightne | |||||||
| floating_modifier $mod | floating_modifier $mod | ||||||
| 
 | 
 | ||||||
| # start a terminal | # start a terminal | ||||||
| bindsym $mod+Return exec uxterm | bindsym $mod+Return exec alacritty | ||||||
| 
 | 
 | ||||||
| # kill focused window | # kill focused window | ||||||
| bindsym $mod+Shift+q kill | bindsym $mod+Shift+q kill | ||||||
| @ -170,7 +169,7 @@ bindsym $mod+Ctrl+Left resize grow width 5 px or 5 ppt | |||||||
| bindsym $mod+Ctrl+b exec terminal -e 'bmenu' | bindsym $mod+Ctrl+b exec terminal -e 'bmenu' | ||||||
| bindsym $mod+F2 exec firefox | bindsym $mod+F2 exec firefox | ||||||
| bindsym $mod+F3 exec pcmanfm | bindsym $mod+F3 exec pcmanfm | ||||||
| bindsym $mod+F4 exec uxterm newsboat | bindsym $mod+F4 exec alacritty -e newsboat | ||||||
| 
 | 
 | ||||||
| # change borders | # change borders | ||||||
| bindsym $mod+u border none | bindsym $mod+u border none | ||||||
|  | |||||||
							
								
								
									
										71
									
								
								.config/ncmpcpp/bindings
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								.config/ncmpcpp/bindings
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,71 @@ | |||||||
|  | ## Additional to the defaults in example file | ||||||
|  | def_key "j" | ||||||
|  |     scroll_down | ||||||
|  | def_key "k" | ||||||
|  |     scroll_up | ||||||
|  | def_key "d" | ||||||
|  |     page_down | ||||||
|  | def_key "u" | ||||||
|  |     page_up | ||||||
|  | def_key "ctrl-f" | ||||||
|  |     page_down | ||||||
|  | def_key "ctrl-b" | ||||||
|  |     page_up | ||||||
|  | def_key "n" | ||||||
|  |     next | ||||||
|  | def_key "P" | ||||||
|  |     previous | ||||||
|  | def_key "space" | ||||||
|  |     next | ||||||
|  | def_key "backspace" | ||||||
|  |     previous | ||||||
|  | def_key "left" | ||||||
|  |     seek_backward | ||||||
|  | def_key "right" | ||||||
|  |     seek_forward | ||||||
|  | def_key "H" | ||||||
|  |     show_playlist | ||||||
|  | def_key "h" | ||||||
|  |     jump_to_parent_directory | ||||||
|  | def_key "h" | ||||||
|  |     previous_column | ||||||
|  | def_key "l" | ||||||
|  |     enter_directory | ||||||
|  | def_key "l" | ||||||
|  |     play_item | ||||||
|  | def_key "l" | ||||||
|  |     next_column | ||||||
|  | def_key "l" | ||||||
|  |     run_action | ||||||
|  | def_key "ctrl-a" | ||||||
|  |     add_item_to_playlist | ||||||
|  | def_key "J" | ||||||
|  |     select_item | ||||||
|  | def_key "K" | ||||||
|  |     select_item | ||||||
|  | def_key "ctrl-e" | ||||||
|  |     move_end | ||||||
|  | def_key "t" | ||||||
|  |     move_home | ||||||
|  | def_key "down" | ||||||
|  |     scroll_down | ||||||
|  | def_key "up" | ||||||
|  |     scroll_up | ||||||
|  | def_key "shift-up" | ||||||
|  |     move_selected_items_up | ||||||
|  | def_key "N" | ||||||
|  |     move_sort_order_down | ||||||
|  | def_key "shift-down" | ||||||
|  |     move_selected_items_down | ||||||
|  | def_key "F" | ||||||
|  |     apply_filter | ||||||
|  | def_key "*" | ||||||
|  |     toggle_visualization_type | ||||||
|  | def_key "L" | ||||||
|  |     show_lyrics | ||||||
|  | def_key "C" | ||||||
|  |     toggle_playing_song_centering | ||||||
|  | def_key "+" | ||||||
|  |     show_clock | ||||||
|  | def_key "=" | ||||||
|  |     volume_up | ||||||
							
								
								
									
										0
									
								
								.config/nvim/.stylua.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								.config/nvim/.stylua.toml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										818
									
								
								.config/nvim/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										818
									
								
								.config/nvim/init.lua
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,818 @@ | |||||||
|  | --leader key | ||||||
|  | -- See `:help mapleader` | ||||||
|  | --  NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) | ||||||
|  | vim.g.mapleader = " " | ||||||
|  | vim.g.maplocalleader = " " | ||||||
|  | 
 | ||||||
|  | -- Set to true if you have a Nerd Font installed and selected in the terminal | ||||||
|  | vim.g.have_nerd_font = false | ||||||
|  | 
 | ||||||
|  | -- [[ Setting options ]] | ||||||
|  | -- See `:help vim.opt` | ||||||
|  | -- NOTE: You can change these options as you wish! | ||||||
|  | --  For more options, you can see `:help option-list` | ||||||
|  | 
 | ||||||
|  | -- Make line numbers default | ||||||
|  | vim.opt.number = true | ||||||
|  | -- You can also add relative line numbers, to help with jumping. | ||||||
|  | --  Experiment for yourself to see if you like it! | ||||||
|  | vim.opt.relativenumber = true | ||||||
|  | 
 | ||||||
|  | -- Don't show the mode, since it's already in the status line | ||||||
|  | vim.opt.showmode = false | ||||||
|  | 
 | ||||||
|  | -- Sync clipboard between OS and Neovim. | ||||||
|  | --  Remove this option if you want your OS clipboard to remain independent. | ||||||
|  | --  See `:help 'clipboard'` | ||||||
|  | vim.opt.clipboard = "unnamedplus" | ||||||
|  | 
 | ||||||
|  | -- Enable break indent | ||||||
|  | vim.opt.breakindent = true | ||||||
|  | 
 | ||||||
|  | -- Save undo history | ||||||
|  | vim.opt.undofile = true | ||||||
|  | 
 | ||||||
|  | -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term | ||||||
|  | vim.opt.ignorecase = true | ||||||
|  | vim.opt.smartcase = true | ||||||
|  | 
 | ||||||
|  | -- Keep signcolumn on by default | ||||||
|  | vim.opt.signcolumn = "yes" | ||||||
|  | 
 | ||||||
|  | -- Decrease update time | ||||||
|  | vim.opt.updatetime = 250 | ||||||
|  | 
 | ||||||
|  | -- Decrease mapped sequence wait time | ||||||
|  | -- Displays which-key popup sooner | ||||||
|  | vim.opt.timeoutlen = 300 | ||||||
|  | 
 | ||||||
|  | -- Configure how new splits should be opened | ||||||
|  | vim.opt.splitright = true | ||||||
|  | vim.opt.splitbelow = true | ||||||
|  | 
 | ||||||
|  | -- Sets how neovim will display certain whitespace characters in the editor. | ||||||
|  | --  See `:help 'list'` | ||||||
|  | --  and `:help 'listchars'` | ||||||
|  | vim.opt.list = true | ||||||
|  | vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" } | ||||||
|  | 
 | ||||||
|  | vim.opt.inccommand = "split" | ||||||
|  | 
 | ||||||
|  | -- Show which line your cursor is on | ||||||
|  | vim.opt.cursorline = true | ||||||
|  | 
 | ||||||
|  | -- Minimal number of screen lines to keep above and below the cursor. | ||||||
|  | vim.opt.scrolloff = 10 | ||||||
|  | 
 | ||||||
|  | -- [[ Basic Keymaps ]] | ||||||
|  | --  See `:help vim.keymap.set()` | ||||||
|  | 
 | ||||||
|  | -- Set highlight on search, but clear on pressing <Esc> in normal mode | ||||||
|  | vim.opt.hlsearch = true | ||||||
|  | vim.keymap.set("n", "<Esc>", "<cmd>nohlsearch<CR>") | ||||||
|  | 
 | ||||||
|  | -- Diagnostic keymaps | ||||||
|  | vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, { desc = "Go to previous [D]iagnostic message" }) | ||||||
|  | vim.keymap.set("n", "]d", vim.diagnostic.goto_next, { desc = "Go to next [D]iagnostic message" }) | ||||||
|  | vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, { desc = "Show diagnostic [E]rror messages" }) | ||||||
|  | vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" }) | ||||||
|  | 
 | ||||||
|  | -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier | ||||||
|  | -- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which | ||||||
|  | -- is not what someone will guess without a bit more experience. | ||||||
|  | -- | ||||||
|  | -- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping | ||||||
|  | -- or just use <C-\><C-n> to exit terminal mode | ||||||
|  | vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" }) | ||||||
|  | 
 | ||||||
|  | -- TIP: Disable arrow keys in normal mode | ||||||
|  | vim.keymap.set("n", "<left>", '<cmd>echo "Use h to move!!"<CR>') | ||||||
|  | vim.keymap.set("n", "<right>", '<cmd>echo "Use l to move!!"<CR>') | ||||||
|  | vim.keymap.set("n", "<up>", '<cmd>echo "Use k to move!!"<CR>') | ||||||
|  | vim.keymap.set("n", "<down>", '<cmd>echo "Use j to move!!"<CR>') | ||||||
|  | 
 | ||||||
|  | -- Keybinds to make split navigation easier. | ||||||
|  | --  Use CTRL+<hjkl> to switch between windows | ||||||
|  | -- | ||||||
|  | --  See `:help wincmd` for a list of all window commands | ||||||
|  | vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" }) | ||||||
|  | vim.keymap.set("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" }) | ||||||
|  | vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" }) | ||||||
|  | vim.keymap.set("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" }) | ||||||
|  | 
 | ||||||
|  | --  See `:help lua-guide-autocommands` | ||||||
|  | 
 | ||||||
|  | -- Highlight when yanking (copying) text | ||||||
|  | --  Try it with `yap` in normal mode | ||||||
|  | --  See `:help vim.highlight.on_yank()` | ||||||
|  | vim.api.nvim_create_autocmd("TextYankPost", { | ||||||
|  | 	desc = "Highlight when yanking (copying) text", | ||||||
|  | 	group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }), | ||||||
|  | 	callback = function() | ||||||
|  | 		vim.highlight.on_yank() | ||||||
|  | 	end, | ||||||
|  | }) | ||||||
|  | 
 | ||||||
|  | -- [[ Install `lazy.nvim` plugin manager ]] | ||||||
|  | --    See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info | ||||||
|  | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" | ||||||
|  | if not vim.loop.fs_stat(lazypath) then | ||||||
|  | 	local lazyrepo = "https://github.com/folke/lazy.nvim.git" | ||||||
|  | 	vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) | ||||||
|  | end ---@diagnostic disable-next-line: undefined-field | ||||||
|  | vim.opt.rtp:prepend(lazypath) | ||||||
|  | 
 | ||||||
|  | -- [[ Configure and install plugins ]] | ||||||
|  | -- | ||||||
|  | --  To check the current status of your plugins, run | ||||||
|  | --    :Lazy | ||||||
|  | -- | ||||||
|  | --  You can press `?` in this menu for help. Use `:q` to close the window | ||||||
|  | -- | ||||||
|  | --  To update plugins you can run | ||||||
|  | --    :Lazy update | ||||||
|  | -- | ||||||
|  | -- NOTE: Here is where you install your plugins. | ||||||
|  | require("lazy").setup({ | ||||||
|  | 	-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). | ||||||
|  | 	"tpope/vim-sleuth", -- Detect tabstop and shiftwidth automatically | ||||||
|  | 
 | ||||||
|  | 	-- NOTE: Plugins can also be added by using a table, | ||||||
|  | 	-- with the first argument being the link and the following | ||||||
|  | 	-- keys can be used to configure plugin behavior/loading/etc. | ||||||
|  | 	-- | ||||||
|  | 	-- Use `opts = {}` to force a plugin to be loaded. | ||||||
|  | 	-- | ||||||
|  | 	--  This is equivalent to: | ||||||
|  | 	--    require('Comment').setup({}) | ||||||
|  | 
 | ||||||
|  | 	-- "gc" to comment visual regions/lines | ||||||
|  | 	{ "numToStr/Comment.nvim", opts = {} }, | ||||||
|  | 
 | ||||||
|  | 	-- Here is a more advanced example where we pass configuration | ||||||
|  | 	-- options to `gitsigns.nvim`. This is equivalent to the following Lua: | ||||||
|  | 	--    require('gitsigns').setup({ ... }) | ||||||
|  | 	-- | ||||||
|  | 	-- See `:help gitsigns` to understand what the configuration keys do | ||||||
|  | 	{ -- Adds git related signs to the gutter, as well as utilities for managing changes | ||||||
|  | 		"lewis6991/gitsigns.nvim", | ||||||
|  | 		opts = { | ||||||
|  | 			signs = { | ||||||
|  | 				add = { text = "+" }, | ||||||
|  | 				change = { text = "~" }, | ||||||
|  | 				delete = { text = "_" }, | ||||||
|  | 				topdelete = { text = "‾" }, | ||||||
|  | 				changedelete = { text = "~" }, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	-- NOTE: Plugins can also be configured to run Lua code when they are loaded. | ||||||
|  | 	-- | ||||||
|  | 	-- This is often very useful to both group configuration, as well as handle | ||||||
|  | 	-- lazy loading plugins that don't need to be loaded immediately at startup. | ||||||
|  | 	-- | ||||||
|  | 	-- For example, in the following configuration, we use: | ||||||
|  | 	--  event = 'VimEnter' | ||||||
|  | 	-- | ||||||
|  | 	-- which loads which-key before all the UI elements are loaded. Events can be | ||||||
|  | 	-- normal autocommands events (`:help autocmd-events`). | ||||||
|  | 	-- | ||||||
|  | 	-- Then, because we use the `config` key, the configuration only runs | ||||||
|  | 	-- after the plugin has been loaded: | ||||||
|  | 	--  config = function() ... end | ||||||
|  | 
 | ||||||
|  | 	{ -- Useful plugin to show you pending keybinds. | ||||||
|  | 		"folke/which-key.nvim", | ||||||
|  | 		event = "VimEnter", -- Sets the loading event to 'VimEnter' | ||||||
|  | 		config = function() -- This is the function that runs, AFTER loading | ||||||
|  | 			require("which-key").setup() | ||||||
|  | 
 | ||||||
|  | 			-- Document existing key chains | ||||||
|  | 			require("which-key").register({ | ||||||
|  | 				["<leader>c"] = { name = "[C]ode", _ = "which_key_ignore" }, | ||||||
|  | 				["<leader>d"] = { name = "[D]ocument", _ = "which_key_ignore" }, | ||||||
|  | 				["<leader>r"] = { name = "[R]ename", _ = "which_key_ignore" }, | ||||||
|  | 				["<leader>s"] = { name = "[S]earch", _ = "which_key_ignore" }, | ||||||
|  | 				["<leader>w"] = { name = "[W]orkspace", _ = "which_key_ignore" }, | ||||||
|  | 				["<leader>t"] = { name = "[T]oggle", _ = "which_key_ignore" }, | ||||||
|  | 				["<leader>h"] = { name = "Git [H]unk", _ = "which_key_ignore" }, | ||||||
|  | 			}) | ||||||
|  | 			-- visual mode | ||||||
|  | 			require("which-key").register({ | ||||||
|  | 				["<leader>h"] = { "Git [H]unk" }, | ||||||
|  | 			}, { mode = "v" }) | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	-- NOTE: Plugins can specify dependencies. | ||||||
|  | 	-- | ||||||
|  | 	-- The dependencies are proper plugin specifications as well - anything | ||||||
|  | 	-- you do for a plugin at the top level, you can do for a dependency. | ||||||
|  | 	-- | ||||||
|  | 	-- Use the `dependencies` key to specify the dependencies of a particular plugin | ||||||
|  | 
 | ||||||
|  | 	{ -- Fuzzy Finder (files, lsp, etc) | ||||||
|  | 		"nvim-telescope/telescope.nvim", | ||||||
|  | 		event = "VimEnter", | ||||||
|  | 		branch = "0.1.x", | ||||||
|  | 		dependencies = { | ||||||
|  | 			"nvim-lua/plenary.nvim", | ||||||
|  | 			{ -- If encountering errors, see telescope-fzf-native README for installation instructions | ||||||
|  | 				"nvim-telescope/telescope-fzf-native.nvim", | ||||||
|  | 
 | ||||||
|  | 				-- `build` is used to run some command when the plugin is installed/updated. | ||||||
|  | 				-- This is only run then, not every time Neovim starts up. | ||||||
|  | 				build = "make", | ||||||
|  | 
 | ||||||
|  | 				-- `cond` is a condition used to determine whether this plugin should be | ||||||
|  | 				-- installed and loaded. | ||||||
|  | 				cond = function() | ||||||
|  | 					return vim.fn.executable("make") == 1 | ||||||
|  | 				end, | ||||||
|  | 			}, | ||||||
|  | 			{ "nvim-telescope/telescope-ui-select.nvim" }, | ||||||
|  | 
 | ||||||
|  | 			-- Useful for getting pretty icons, but requires a Nerd Font. | ||||||
|  | 			{ "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font }, | ||||||
|  | 		}, | ||||||
|  | 		config = function() | ||||||
|  | 			-- Telescope is a fuzzy finder that comes with a lot of different things that | ||||||
|  | 			-- it can fuzzy find! It's more than just a "file finder", it can search | ||||||
|  | 			-- many different aspects of Neovim, your workspace, LSP, and more! | ||||||
|  | 			-- | ||||||
|  | 			-- The easiest way to use Telescope, is to start by doing something like: | ||||||
|  | 			--  :Telescope help_tags | ||||||
|  | 			-- | ||||||
|  | 			-- After running this command, a window will open up and you're able to | ||||||
|  | 			-- type in the prompt window. You'll see a list of `help_tags` options and | ||||||
|  | 			-- a corresponding preview of the help. | ||||||
|  | 			-- | ||||||
|  | 			-- Two important keymaps to use while in Telescope are: | ||||||
|  | 			--  - Insert mode: <c-/> | ||||||
|  | 			--  - Normal mode: ? | ||||||
|  | 			-- | ||||||
|  | 			-- This opens a window that shows you all of the keymaps for the current | ||||||
|  | 			-- Telescope picker. This is really useful to discover what Telescope can | ||||||
|  | 			-- do as well as how to actually do it! | ||||||
|  | 
 | ||||||
|  | 			-- [[ Configure Telescope ]] | ||||||
|  | 			-- See `:help telescope` and `:help telescope.setup()` | ||||||
|  | 			require("telescope").setup({ | ||||||
|  | 				-- You can put your default mappings / updates / etc. in here | ||||||
|  | 				--  All the info you're looking for is in `:help telescope.setup()` | ||||||
|  | 				-- | ||||||
|  | 				-- defaults = { | ||||||
|  | 				--   mappings = { | ||||||
|  | 				--     i = { ['<c-enter>'] = 'to_fuzzy_refine' }, | ||||||
|  | 				--   }, | ||||||
|  | 				-- }, | ||||||
|  | 				-- pickers = {} | ||||||
|  | 				extensions = { | ||||||
|  | 					["ui-select"] = { | ||||||
|  | 						require("telescope.themes").get_dropdown(), | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}) | ||||||
|  | 
 | ||||||
|  | 			-- Enable Telescope extensions if they are installed | ||||||
|  | 			pcall(require("telescope").load_extension, "fzf") | ||||||
|  | 			pcall(require("telescope").load_extension, "ui-select") | ||||||
|  | 
 | ||||||
|  | 			-- See `:help telescope.builtin` | ||||||
|  | 			local builtin = require("telescope.builtin") | ||||||
|  | 			vim.keymap.set("n", "<leader>sh", builtin.help_tags, { desc = "[S]earch [H]elp" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sk", builtin.keymaps, { desc = "[S]earch [K]eymaps" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sf", builtin.find_files, { desc = "[S]earch [F]iles" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>ss", builtin.builtin, { desc = "[S]earch [S]elect Telescope" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sw", builtin.grep_string, { desc = "[S]earch current [W]ord" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sg", builtin.live_grep, { desc = "[S]earch by [G]rep" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>sr", builtin.resume, { desc = "[S]earch [R]esume" }) | ||||||
|  | 			vim.keymap.set("n", "<leader>s.", builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) | ||||||
|  | 			vim.keymap.set("n", "<leader><leader>", builtin.buffers, { desc = "[ ] Find existing buffers" }) | ||||||
|  | 
 | ||||||
|  | 			-- Slightly advanced example of overriding default behavior and theme | ||||||
|  | 			vim.keymap.set("n", "<leader>/", function() | ||||||
|  | 				-- You can pass additional configuration to Telescope to change the theme, layout, etc. | ||||||
|  | 				builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ | ||||||
|  | 					winblend = 10, | ||||||
|  | 					previewer = false, | ||||||
|  | 				})) | ||||||
|  | 			end, { desc = "[/] Fuzzily search in current buffer" }) | ||||||
|  | 
 | ||||||
|  | 			-- It's also possible to pass additional configuration options. | ||||||
|  | 			--  See `:help telescope.builtin.live_grep()` for information about particular keys | ||||||
|  | 			vim.keymap.set("n", "<leader>s/", function() | ||||||
|  | 				builtin.live_grep({ | ||||||
|  | 					grep_open_files = true, | ||||||
|  | 					prompt_title = "Live Grep in Open Files", | ||||||
|  | 				}) | ||||||
|  | 			end, { desc = "[S]earch [/] in Open Files" }) | ||||||
|  | 
 | ||||||
|  | 			-- Shortcut for searching your Neovim configuration files | ||||||
|  | 			vim.keymap.set("n", "<leader>sn", function() | ||||||
|  | 				builtin.find_files({ cwd = vim.fn.stdpath("config") }) | ||||||
|  | 			end, { desc = "[S]earch [N]eovim files" }) | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- LSP Configuration & Plugins | ||||||
|  | 		"neovim/nvim-lspconfig", | ||||||
|  | 		dependencies = { | ||||||
|  | 			-- Automatically install LSPs and related tools to stdpath for Neovim | ||||||
|  | 			{ "williamboman/mason.nvim", config = true }, -- NOTE: Must be loaded before dependants | ||||||
|  | 			"williamboman/mason-lspconfig.nvim", | ||||||
|  | 			"WhoIsSethDaniel/mason-tool-installer.nvim", | ||||||
|  | 
 | ||||||
|  | 			-- Useful status updates for LSP. | ||||||
|  | 			-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` | ||||||
|  | 			{ "j-hui/fidget.nvim", opts = {} }, | ||||||
|  | 
 | ||||||
|  | 			-- `neodev` configures Lua LSP for your Neovim config, runtime and plugins | ||||||
|  | 			-- used for completion, annotations and signatures of Neovim apis | ||||||
|  | 			{ "folke/neodev.nvim", opts = {} }, | ||||||
|  | 		}, | ||||||
|  | 		config = function() | ||||||
|  | 			-- Brief aside: **What is LSP?** | ||||||
|  | 			-- | ||||||
|  | 			-- LSP is an initialism you've probably heard, but might not understand what it is. | ||||||
|  | 			-- | ||||||
|  | 			-- LSP stands for Language Server Protocol. It's a protocol that helps editors | ||||||
|  | 			-- and language tooling communicate in a standardized fashion. | ||||||
|  | 			-- | ||||||
|  | 			-- In general, you have a "server" which is some tool built to understand a particular | ||||||
|  | 			-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers | ||||||
|  | 			-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone | ||||||
|  | 			-- processes that communicate with some "client" - in this case, Neovim! | ||||||
|  | 			-- | ||||||
|  | 			-- LSP provides Neovim with features like: | ||||||
|  | 			--  - Go to definition | ||||||
|  | 			--  - Find references | ||||||
|  | 			--  - Autocompletion | ||||||
|  | 			--  - Symbol Search | ||||||
|  | 			--  - and more! | ||||||
|  | 			-- | ||||||
|  | 			-- Thus, Language Servers are external tools that must be installed separately from | ||||||
|  | 			-- Neovim. This is where `mason` and related plugins come into play. | ||||||
|  | 			-- | ||||||
|  | 			-- If you're wondering about lsp vs treesitter, you can check out the wonderfully | ||||||
|  | 			-- and elegantly composed help section, `:help lsp-vs-treesitter` | ||||||
|  | 
 | ||||||
|  | 			--  This function gets run when an LSP attaches to a particular buffer. | ||||||
|  | 			--    That is to say, every time a new file is opened that is associated with | ||||||
|  | 			--    an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this | ||||||
|  | 			--    function will be executed to configure the current buffer | ||||||
|  | 			vim.api.nvim_create_autocmd("LspAttach", { | ||||||
|  | 				group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }), | ||||||
|  | 				callback = function(event) | ||||||
|  | 					-- NOTE: Remember that Lua is a real programming language, and as such it is possible | ||||||
|  | 					-- to define small helper and utility functions so you don't have to repeat yourself. | ||||||
|  | 					-- | ||||||
|  | 					-- In this case, we create a function that lets us more easily define mappings specific | ||||||
|  | 					-- for LSP related items. It sets the mode, buffer and description for us each time. | ||||||
|  | 					local map = function(keys, func, desc) | ||||||
|  | 						vim.keymap.set("n", keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) | ||||||
|  | 					end | ||||||
|  | 
 | ||||||
|  | 					-- Jump to the definition of the word under your cursor. | ||||||
|  | 					--  This is where a variable was first declared, or where a function is defined, etc. | ||||||
|  | 					--  To jump back, press <C-t>. | ||||||
|  | 					map("gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition") | ||||||
|  | 
 | ||||||
|  | 					-- Find references for the word under your cursor. | ||||||
|  | 					map("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences") | ||||||
|  | 
 | ||||||
|  | 					-- Jump to the implementation of the word under your cursor. | ||||||
|  | 					--  Useful when your language has ways of declaring types without an actual implementation. | ||||||
|  | 					map("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation") | ||||||
|  | 
 | ||||||
|  | 					-- Jump to the type of the word under your cursor. | ||||||
|  | 					--  Useful when you're not sure what type a variable is and you want to see | ||||||
|  | 					--  the definition of its *type*, not where it was *defined*. | ||||||
|  | 					map("<leader>D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition") | ||||||
|  | 
 | ||||||
|  | 					-- Fuzzy find all the symbols in your current document. | ||||||
|  | 					--  Symbols are things like variables, functions, types, etc. | ||||||
|  | 					map("<leader>ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols") | ||||||
|  | 
 | ||||||
|  | 					-- Fuzzy find all the symbols in your current workspace. | ||||||
|  | 					--  Similar to document symbols, except searches over your entire project. | ||||||
|  | 					map( | ||||||
|  | 						"<leader>ws", | ||||||
|  | 						require("telescope.builtin").lsp_dynamic_workspace_symbols, | ||||||
|  | 						"[W]orkspace [S]ymbols" | ||||||
|  | 					) | ||||||
|  | 
 | ||||||
|  | 					-- Rename the variable under your cursor. | ||||||
|  | 					--  Most Language Servers support renaming across files, etc. | ||||||
|  | 					map("<leader>rn", vim.lsp.buf.rename, "[R]e[n]ame") | ||||||
|  | 
 | ||||||
|  | 					-- Execute a code action, usually your cursor needs to be on top of an error | ||||||
|  | 					-- or a suggestion from your LSP for this to activate. | ||||||
|  | 					map("<leader>ca", vim.lsp.buf.code_action, "[C]ode [A]ction") | ||||||
|  | 
 | ||||||
|  | 					-- Opens a popup that displays documentation about the word under your cursor | ||||||
|  | 					--  See `:help K` for why this keymap. | ||||||
|  | 					map("K", vim.lsp.buf.hover, "Hover Documentation") | ||||||
|  | 
 | ||||||
|  | 					-- WARN: This is not Goto Definition, this is Goto Declaration. | ||||||
|  | 					--  For example, in C this would take you to the header. | ||||||
|  | 					map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") | ||||||
|  | 
 | ||||||
|  | 					-- The following two autocommands are used to highlight references of the | ||||||
|  | 					-- word under your cursor when your cursor rests there for a little while. | ||||||
|  | 					--    See `:help CursorHold` for information about when this is executed | ||||||
|  | 					-- | ||||||
|  | 					-- When you move your cursor, the highlights will be cleared (the second autocommand). | ||||||
|  | 					local client = vim.lsp.get_client_by_id(event.data.client_id) | ||||||
|  | 					if client and client.server_capabilities.documentHighlightProvider then | ||||||
|  | 						vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { | ||||||
|  | 							buffer = event.buf, | ||||||
|  | 							callback = vim.lsp.buf.document_highlight, | ||||||
|  | 						}) | ||||||
|  | 
 | ||||||
|  | 						vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { | ||||||
|  | 							buffer = event.buf, | ||||||
|  | 							callback = vim.lsp.buf.clear_references, | ||||||
|  | 						}) | ||||||
|  | 					end | ||||||
|  | 
 | ||||||
|  | 					-- The following autocommand is used to enable inlay hints in your | ||||||
|  | 					-- code, if the language server you are using supports them | ||||||
|  | 					-- | ||||||
|  | 					-- This may be unwanted, since they displace some of your code | ||||||
|  | 					if client and client.server_capabilities.inlayHintProvider and vim.lsp.inlay_hint then | ||||||
|  | 						map("<leader>th", function() | ||||||
|  | 							vim.lsp.inlay_hint.enable(0, not vim.lsp.inlay_hint.is_enabled()) | ||||||
|  | 						end, "[T]oggle Inlay [H]ints") | ||||||
|  | 					end | ||||||
|  | 				end, | ||||||
|  | 			}) | ||||||
|  | 
 | ||||||
|  | 			-- LSP servers and clients are able to communicate to each other what features they support. | ||||||
|  | 			--  By default, Neovim doesn't support everything that is in the LSP specification. | ||||||
|  | 			--  When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. | ||||||
|  | 			--  So, we create new capabilities with nvim cmp, and then broadcast that to the servers. | ||||||
|  | 			local capabilities = vim.lsp.protocol.make_client_capabilities() | ||||||
|  | 			capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) | ||||||
|  | 
 | ||||||
|  | 			-- Enable the following language servers | ||||||
|  | 			--  Feel free to add/remove any LSPs that you want here. They will automatically be installed. | ||||||
|  | 			-- | ||||||
|  | 			--  Add any additional override configuration in the following tables. Available keys are: | ||||||
|  | 			--  - cmd (table): Override the default command used to start the server | ||||||
|  | 			--  - filetypes (table): Override the default list of associated filetypes for the server | ||||||
|  | 			--  - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. | ||||||
|  | 			--  - settings (table): Override the default settings passed when initializing the server. | ||||||
|  | 			--        For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ | ||||||
|  | 			local servers = { | ||||||
|  | 				-- clangd = {}, | ||||||
|  | 				-- gopls = {}, | ||||||
|  | 				-- pyright = {}, | ||||||
|  | 				-- rust_analyzer = {}, | ||||||
|  | 				-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs | ||||||
|  | 				-- | ||||||
|  | 				-- Some languages (like typescript) have entire language plugins that can be useful: | ||||||
|  | 				--    https://github.com/pmizio/typescript-tools.nvim | ||||||
|  | 				-- | ||||||
|  | 				-- But for many setups, the LSP (`tsserver`) will work just fine | ||||||
|  | 				-- tsserver = {}, | ||||||
|  | 				-- | ||||||
|  | 
 | ||||||
|  | 				lua_ls = { | ||||||
|  | 					-- cmd = {...}, | ||||||
|  | 					-- filetypes = { ...}, | ||||||
|  | 					-- capabilities = {}, | ||||||
|  | 					settings = { | ||||||
|  | 						Lua = { | ||||||
|  | 							completion = { | ||||||
|  | 								callSnippet = "Replace", | ||||||
|  | 							}, | ||||||
|  | 							-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings | ||||||
|  | 							-- diagnostics = { disable = { 'missing-fields' } }, | ||||||
|  | 						}, | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			-- Ensure the servers and tools above are installed | ||||||
|  | 			--  To check the current status of installed tools and/or manually install | ||||||
|  | 			--  other tools, you can run | ||||||
|  | 			--    :Mason | ||||||
|  | 			-- | ||||||
|  | 			--  You can press `g?` for help in this menu. | ||||||
|  | 			require("mason").setup() | ||||||
|  | 
 | ||||||
|  | 			-- You can add other tools here that you want Mason to install | ||||||
|  | 			-- for you, so that they are available from within Neovim. | ||||||
|  | 			local ensure_installed = vim.tbl_keys(servers or {}) | ||||||
|  | 			vim.list_extend(ensure_installed, { | ||||||
|  | 				"stylua", -- Used to format Lua code | ||||||
|  | 			}) | ||||||
|  | 			require("mason-tool-installer").setup({ ensure_installed = ensure_installed }) | ||||||
|  | 
 | ||||||
|  | 			require("mason-lspconfig").setup({ | ||||||
|  | 				handlers = { | ||||||
|  | 					function(server_name) | ||||||
|  | 						local server = servers[server_name] or {} | ||||||
|  | 						-- This handles overriding only values explicitly passed | ||||||
|  | 						-- by the server configuration above. Useful when disabling | ||||||
|  | 						-- certain features of an LSP (for example, turning off formatting for tsserver) | ||||||
|  | 						server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {}) | ||||||
|  | 						require("lspconfig")[server_name].setup(server) | ||||||
|  | 					end, | ||||||
|  | 				}, | ||||||
|  | 			}) | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- Autoformat | ||||||
|  | 		"stevearc/conform.nvim", | ||||||
|  | 		lazy = false, | ||||||
|  | 		keys = { | ||||||
|  | 			{ | ||||||
|  | 				"<leader>f", | ||||||
|  | 				function() | ||||||
|  | 					require("conform").format({ async = true, lsp_fallback = true }) | ||||||
|  | 				end, | ||||||
|  | 				mode = "", | ||||||
|  | 				desc = "[F]ormat buffer", | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 		opts = { | ||||||
|  | 			notify_on_error = false, | ||||||
|  | 			format_on_save = function(bufnr) | ||||||
|  | 				-- Disable "format_on_save lsp_fallback" for languages that don't | ||||||
|  | 				-- have a well standardized coding style. You can add additional | ||||||
|  | 				-- languages here or re-enable it for the disabled ones. | ||||||
|  | 				local disable_filetypes = { c = true, cpp = true } | ||||||
|  | 				return { | ||||||
|  | 					timeout_ms = 500, | ||||||
|  | 					lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype], | ||||||
|  | 				} | ||||||
|  | 			end, | ||||||
|  | 			formatters_by_ft = { | ||||||
|  | 				lua = { "stylua" }, | ||||||
|  | 				-- Conform can also run multiple formatters sequentially | ||||||
|  | 				-- python = { "isort", "black" }, | ||||||
|  | 				-- | ||||||
|  | 				-- You can use a sub-list to tell conform to run *until* a formatter | ||||||
|  | 				-- is found. | ||||||
|  | 				-- javascript = { { "prettierd", "prettier" } }, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- Autocompletion | ||||||
|  | 		"hrsh7th/nvim-cmp", | ||||||
|  | 		event = "InsertEnter", | ||||||
|  | 		dependencies = { | ||||||
|  | 			-- Snippet Engine & its associated nvim-cmp source | ||||||
|  | 			{ | ||||||
|  | 				"L3MON4D3/LuaSnip", | ||||||
|  | 				build = (function() | ||||||
|  | 					-- Build Step is needed for regex support in snippets. | ||||||
|  | 					-- This step is not supported in many windows environments. | ||||||
|  | 					-- Remove the below condition to re-enable on windows. | ||||||
|  | 					if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then | ||||||
|  | 						return | ||||||
|  | 					end | ||||||
|  | 					return "make install_jsregexp" | ||||||
|  | 				end)(), | ||||||
|  | 				dependencies = { | ||||||
|  | 					-- `friendly-snippets` contains a variety of premade snippets. | ||||||
|  | 					--    See the README about individual language/framework/plugin snippets: | ||||||
|  | 					--    https://github.com/rafamadriz/friendly-snippets | ||||||
|  | 					-- { | ||||||
|  | 					--   'rafamadriz/friendly-snippets', | ||||||
|  | 					--   config = function() | ||||||
|  | 					--     require('luasnip.loaders.from_vscode').lazy_load() | ||||||
|  | 					--   end, | ||||||
|  | 					-- }, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 			"saadparwaiz1/cmp_luasnip", | ||||||
|  | 
 | ||||||
|  | 			-- Adds other completion capabilities. | ||||||
|  | 			--  nvim-cmp does not ship with all sources by default. They are split | ||||||
|  | 			--  into multiple repos for maintenance purposes. | ||||||
|  | 			"hrsh7th/cmp-nvim-lsp", | ||||||
|  | 			"hrsh7th/cmp-path", | ||||||
|  | 		}, | ||||||
|  | 		config = function() | ||||||
|  | 			-- See `:help cmp` | ||||||
|  | 			local cmp = require("cmp") | ||||||
|  | 			local luasnip = require("luasnip") | ||||||
|  | 			luasnip.config.setup({}) | ||||||
|  | 
 | ||||||
|  | 			cmp.setup({ | ||||||
|  | 				snippet = { | ||||||
|  | 					expand = function(args) | ||||||
|  | 						luasnip.lsp_expand(args.body) | ||||||
|  | 					end, | ||||||
|  | 				}, | ||||||
|  | 				completion = { completeopt = "menu,menuone,noinsert" }, | ||||||
|  | 
 | ||||||
|  | 				-- For an understanding of why these mappings were | ||||||
|  | 				-- chosen, you will need to read `:help ins-completion` | ||||||
|  | 				-- | ||||||
|  | 				-- No, but seriously. Please read `:help ins-completion`, it is really good! | ||||||
|  | 				mapping = cmp.mapping.preset.insert({ | ||||||
|  | 					-- Select the [n]ext item | ||||||
|  | 					["<C-n>"] = cmp.mapping.select_next_item(), | ||||||
|  | 					-- Select the [p]revious item | ||||||
|  | 					["<C-p>"] = cmp.mapping.select_prev_item(), | ||||||
|  | 
 | ||||||
|  | 					-- Scroll the documentation window [b]ack / [f]orward | ||||||
|  | 					["<C-b>"] = cmp.mapping.scroll_docs(-4), | ||||||
|  | 					["<C-f>"] = cmp.mapping.scroll_docs(4), | ||||||
|  | 
 | ||||||
|  | 					-- Accept ([y]es) the completion. | ||||||
|  | 					--  This will auto-import if your LSP supports it. | ||||||
|  | 					--  This will expand snippets if the LSP sent a snippet. | ||||||
|  | 					["<C-y>"] = cmp.mapping.confirm({ select = true }), | ||||||
|  | 
 | ||||||
|  | 					-- Manually trigger a completion from nvim-cmp. | ||||||
|  | 					--  Generally you don't need this, because nvim-cmp will display | ||||||
|  | 					--  completions whenever it has completion options available. | ||||||
|  | 					["<C-Space>"] = cmp.mapping.complete({}), | ||||||
|  | 
 | ||||||
|  | 					-- Think of <c-l> as moving to the right of your snippet expansion. | ||||||
|  | 					--  So if you have a snippet that's like: | ||||||
|  | 					--  function $name($args) | ||||||
|  | 					--    $body | ||||||
|  | 					--  end | ||||||
|  | 					-- | ||||||
|  | 					-- <c-l> will move you to the right of each of the expansion locations. | ||||||
|  | 					-- <c-h> is similar, except moving you backwards. | ||||||
|  | 					["<C-l>"] = cmp.mapping(function() | ||||||
|  | 						if luasnip.expand_or_locally_jumpable() then | ||||||
|  | 							luasnip.expand_or_jump() | ||||||
|  | 						end | ||||||
|  | 					end, { "i", "s" }), | ||||||
|  | 					["<C-h>"] = cmp.mapping(function() | ||||||
|  | 						if luasnip.locally_jumpable(-1) then | ||||||
|  | 							luasnip.jump(-1) | ||||||
|  | 						end | ||||||
|  | 					end, { "i", "s" }), | ||||||
|  | 
 | ||||||
|  | 					-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: | ||||||
|  | 					--    https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps | ||||||
|  | 				}), | ||||||
|  | 				sources = { | ||||||
|  | 					{ name = "nvim_lsp" }, | ||||||
|  | 					{ name = "luasnip" }, | ||||||
|  | 					{ name = "path" }, | ||||||
|  | 				}, | ||||||
|  | 			}) | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ | ||||||
|  | 		"miikanissi/modus-themes.nvim", | ||||||
|  | 		priority = 1000, -- Make sure to load this before all the other start plugins. | ||||||
|  | 		init = function() | ||||||
|  | 			-- Load the colorscheme here. | ||||||
|  | 			-- Like many other themes, this one has different styles, and you could load | ||||||
|  | 			-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. | ||||||
|  | 			vim.cmd.colorscheme("modus_vivendi") | ||||||
|  | 
 | ||||||
|  | 			-- You can configure highlights by doing something like: | ||||||
|  | 			vim.cmd.hi("Comment gui=none") | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ | ||||||
|  | 		"akinsho/flutter-tools.nvim", | ||||||
|  | 		lazy = false, | ||||||
|  | 		dependencies = { | ||||||
|  | 			"nvim-lua/plenary.nvim", | ||||||
|  | 			"stevearc/dressing.nvim", -- optional for vim.ui.select | ||||||
|  | 		}, | ||||||
|  | 		config = true, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	-- Highlight todo, notes, etc in comments | ||||||
|  | 	{ | ||||||
|  | 		"folke/todo-comments.nvim", | ||||||
|  | 		event = "VimEnter", | ||||||
|  | 		dependencies = { "nvim-lua/plenary.nvim" }, | ||||||
|  | 		opts = { signs = false }, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	{ -- Collection of various small independent plugins/modules | ||||||
|  | 		"echasnovski/mini.nvim", | ||||||
|  | 		config = function() | ||||||
|  | 			-- Better Around/Inside textobjects | ||||||
|  | 			-- | ||||||
|  | 			-- Examples: | ||||||
|  | 			--  - va)  - [V]isually select [A]round [)]paren | ||||||
|  | 			--  - yinq - [Y]ank [I]nside [N]ext [']quote | ||||||
|  | 			--  - ci'  - [C]hange [I]nside [']quote | ||||||
|  | 			require("mini.ai").setup({ n_lines = 500 }) | ||||||
|  | 
 | ||||||
|  | 			-- Add/delete/replace surroundings (brackets, quotes, etc.) | ||||||
|  | 			-- | ||||||
|  | 			-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren | ||||||
|  | 			-- - sd'   - [S]urround [D]elete [']quotes | ||||||
|  | 			-- - sr)'  - [S]urround [R]eplace [)] ['] | ||||||
|  | 			require("mini.surround").setup() | ||||||
|  | 
 | ||||||
|  | 			-- Simple and easy statusline. | ||||||
|  | 			--  You could remove this setup call if you don't like it, | ||||||
|  | 			--  and try some other statusline plugin | ||||||
|  | 			local statusline = require("mini.statusline") | ||||||
|  | 			-- set use_icons to true if you have a Nerd Font | ||||||
|  | 			statusline.setup({ use_icons = vim.g.have_nerd_font }) | ||||||
|  | 
 | ||||||
|  | 			-- You can configure sections in the statusline by overriding their | ||||||
|  | 			-- default behavior. For example, here we set the section for | ||||||
|  | 			-- cursor location to LINE:COLUMN | ||||||
|  | 			---@diagnostic disable-next-line: duplicate-set-field | ||||||
|  | 			statusline.section_location = function() | ||||||
|  | 				return "%2l:%-2v" | ||||||
|  | 			end | ||||||
|  | 
 | ||||||
|  | 			-- ... and there is more! | ||||||
|  | 			--  Check out: https://github.com/echasnovski/mini.nvim | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 	{ -- Highlight, edit, and navigate code | ||||||
|  | 		"nvim-treesitter/nvim-treesitter", | ||||||
|  | 		build = ":TSUpdate", | ||||||
|  | 		opts = { | ||||||
|  | 			ensure_installed = { "bash", "c", "html", "lua", "luadoc", "markdown", "vim", "vimdoc" }, | ||||||
|  | 			-- Autoinstall languages that are not installed | ||||||
|  | 			auto_install = true, | ||||||
|  | 			highlight = { | ||||||
|  | 				enable = true, | ||||||
|  | 				-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. | ||||||
|  | 				--  If you are experiencing weird indenting issues, add the language to | ||||||
|  | 				--  the list of additional_vim_regex_highlighting and disabled languages for indent. | ||||||
|  | 				additional_vim_regex_highlighting = { "ruby" }, | ||||||
|  | 			}, | ||||||
|  | 			indent = { enable = true, disable = { "ruby" } }, | ||||||
|  | 		}, | ||||||
|  | 		config = function(_, opts) | ||||||
|  | 			-- [[ Configure Treesitter ]] See `:help nvim-treesitter` | ||||||
|  | 
 | ||||||
|  | 			-- Prefer git instead of curl in order to improve connectivity in some environments | ||||||
|  | 			require("nvim-treesitter.install").prefer_git = true | ||||||
|  | 			---@diagnostic disable-next-line: missing-fields | ||||||
|  | 			require("nvim-treesitter.configs").setup(opts) | ||||||
|  | 
 | ||||||
|  | 			-- There are additional nvim-treesitter modules that you can use to interact | ||||||
|  | 			-- with nvim-treesitter. You should go explore a few and see what interests you: | ||||||
|  | 			-- | ||||||
|  | 			--    - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` | ||||||
|  | 			--    - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context | ||||||
|  | 			--    - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects | ||||||
|  | 		end, | ||||||
|  | 	}, | ||||||
|  | 
 | ||||||
|  | 	-- The following two comments only work if you have downloaded the kickstart repo, not just copy pasted the | ||||||
|  | 	-- init.lua. If you want these files, they are in the repository, so you can just download them and | ||||||
|  | 	-- place them in the correct locations. | ||||||
|  | 
 | ||||||
|  | 	-- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart | ||||||
|  | 	-- | ||||||
|  | 	--  Here are some example plugins that I've included in the Kickstart repository. | ||||||
|  | 	--  Uncomment any of the lines below to enable them (you will need to restart nvim). | ||||||
|  | 	-- | ||||||
|  | 	-- require 'kickstart.plugins.debug', | ||||||
|  | 	-- require 'kickstart.plugins.indent_line', | ||||||
|  | 	-- require 'kickstart.plugins.lint', | ||||||
|  | 	-- require 'kickstart.plugins.autopairs', | ||||||
|  | 	-- require 'kickstart.plugins.neo-tree', | ||||||
|  | 	-- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps | ||||||
|  | 	-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` | ||||||
|  | 	--    This is the easiest way to modularize your config. | ||||||
|  | 	-- | ||||||
|  | 	--  Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. | ||||||
|  | 	--    For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins` | ||||||
|  | 	-- { import = 'custom.plugins' }, | ||||||
|  | }, { | ||||||
|  | 	ui = { | ||||||
|  | 		-- If you are using a Nerd Font: set icons to an empty table which will use the | ||||||
|  | 		-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table | ||||||
|  | 		icons = vim.g.have_nerd_font and {} or { | ||||||
|  | 			cmd = "⌘", | ||||||
|  | 			config = "🛠", | ||||||
|  | 			event = "📅", | ||||||
|  | 			ft = "📂", | ||||||
|  | 			init = "⚙", | ||||||
|  | 			keys = "🗝", | ||||||
|  | 			plugin = "🔌", | ||||||
|  | 			runtime = "💻", | ||||||
|  | 			require = "🌙", | ||||||
|  | 			source = "📄", | ||||||
|  | 			start = "🚀", | ||||||
|  | 			task = "📌", | ||||||
|  | 			lazy = "💤 ", | ||||||
|  | 		}, | ||||||
|  | 	}, | ||||||
|  | }) | ||||||
|  | 
 | ||||||
|  | -- The line beneath this is called `modeline`. See `:help modeline` | ||||||
|  | -- vim: ts=2 sts=2 sw=2 et | ||||||
| @ -1,9 +0,0 @@ | |||||||
| :map <Up> <Nop> |  | ||||||
| :map <Left> <Nop> |  | ||||||
| :map <Right> <Nop> |  | ||||||
| :map <Down> <Nop> |  | ||||||
| :imap <Up> <Nop> |  | ||||||
| :imap <Left> <Nop> |  | ||||||
| :imap <Right> <Nop> |  | ||||||
| :imap <Down> <Nop> |  | ||||||
| 
 |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user