diff --git a/.gitea/ISSUE_TEMPLATE/bug_report.yml b/.gitea/ISSUE_TEMPLATE/bug_report.yml
deleted file mode 100644
index f99f104..0000000
--- a/.gitea/ISSUE_TEMPLATE/bug_report.yml
+++ /dev/null
@@ -1,111 +0,0 @@
-name: Issue report
-description: Report any errors, bugs, or unexpected behaviors related to presence.nvim
-title: "[Bug]: "
-labels: [bug]
-assignees:
- - jiriks74
-body:
- - type: markdown
- attributes:
- value: |
- Before reporting, please search [existing issues](https://gitea.stefka.eu/jiriks74/astronvim_config/issues/) and make sure that you are on the latest commit
-
- - type: dropdown
- attributes:
- label: "Are you on the latest version of the commit?"
- description: "If no, please backup your current config and update."
- options:
- - "Yes"
- - "No"
- validations:
- required: true
-
- - type: input
- attributes:
- label: "Which commit are you on?"
- description: "To thet the commit hash run `git rev-parse --short HEAD` in the config directory (`~/.config/nvim/lua/user`)"
- validations:
- required: true
-
- - type: dropdown
- attributes:
- label: "Have you modified the config?"
- description: "If so, backup your current config and try the default one before reporting."
- options:
- - "Yes"
- - "No"
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: "Description"
- description: "A short summary of the error, bug, or unexpected behavior you're facing."
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: "Neovim version"
- description: "Output of `nvim --version`"
- render: markdown
- placeholder: |
- NVIM: v0.6.0-dev+209-g0603eba6e
- Build type: Release
- LuaJIT: 2.1.0-beta3
- value: |
- NVIM:
- Build type:
- LuaJIT:
- validations:
- required: true
-
- - type: input
- attributes:
- label: "OS information"
- placeholder: "Ubuntu 22.04"
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: "Steps to reproduce"
- description: "Steps to reproduce the issue with your config(s) if applicable."
- placeholder: |
- 1. Setup presence.nvim with `require("presence"):setup({...})`
- 2. Run Neovim with `nvim test.txt`
- 3. ...
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: "Logs"
- description: "The full list of `:messages` from one or more `nvim` instances.\nPlease insert the logs into code blocks."
- placeholder: |
-
-
- ```
- [presence.nvim] Using runtime path: /run/user/1000
- [presence.nvim] Using Discord IPC socket path: /run/user/1000/discord-ipc-0
- [presence.nvim] Checking Discord IPC socket at /run/user/1000/discord-ipc-0...
- ```
-
-
- value: |
-
-
- ```
-
- ```
-
-
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: "Aditional info"
- description: "If you'd like to add anything else put it here."
- validations:
- required: false
diff --git a/.gitea/ISSUE_TEMPLATE/feature_request.yml b/.gitea/ISSUE_TEMPLATE/feature_request.yml
deleted file mode 100644
index 9ebd200..0000000
--- a/.gitea/ISSUE_TEMPLATE/feature_request.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-name: Feature request
-description: Report any errors, bugs, or unexpected behaviors related to presence.nvim
-title: "[FEAT]: "
-labels: [enhancement]
-assignees:
- - jiriks74
-body:
- - type: textarea
- attributes:
- label: Is your feature request related to a problem?
- description: A clear and concise description of what the problem is. Ex. I'm always frustrated when...
- validations:
- required: true
-
- - type: textarea
- attributes:
- label: Describe the solution you'd like
- description: A clear and concise description of what you want to happen.
- validations:
- required: false
-
- - type: textarea
- attributes:
- label: Describe alternatives you've considered
- description: A clear and concise description of any alternative solutions or features you've considered.
- validations:
- required: false
-
- - type: textarea
- attributes:
- label: Additional context
- description: Add any other context or screenshots about the feature request here.
- validations:
- required: false
diff --git a/.gitea/workflows/luacheck.yml b/.gitea/workflows/luacheck.yml
deleted file mode 100644
index 37f3d1d..0000000
--- a/.gitea/workflows/luacheck.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: Luacheck
-on: [push, pull_request]
-jobs:
- Luacheck:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v3
-
- - name: Setup Luacheck
- run: |
- apt update && apt install lua-check -y
-
- - name: Luacheck linter
- run: |
- luacheck .
diff --git a/.gitea/workflows/stylua.yml b/.gitea/workflows/stylua.yml
deleted file mode 100644
index 4e3869a..0000000
--- a/.gitea/workflows/stylua.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: StyLua
-on: [push, pull_request]
-jobs:
- StyLuacheck:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v3
-
- - name: StyLua check
- run: |
- npx @johnnymorganz/stylua-bin .
diff --git a/.luacheckrc b/.luacheckrc
deleted file mode 100644
index fac5255..0000000
--- a/.luacheckrc
+++ /dev/null
@@ -1,9 +0,0 @@
-std = {
- globals = {
- "vim",
- "require",
- },
- read_globals = {
- "fallback",
- },
-}
diff --git a/README.md b/README.md
index 4f9606e..ae91ebc 100644
--- a/README.md
+++ b/README.md
@@ -15,23 +15,39 @@
```bash
git clone https://github.com/AstroNvim/AstroNvim ~/.config/nvim
+ nvim +PackerSync
```
- Clone my config into `~/.config/nvim/lua/user`
+ - For NeoVim >= 8.0
```bash
git clone https://github.com/jiriks74/astronvim_config ~/.config/nvim/lua/user
```
+ - For NeoVim < 8.0 use `neovim7.2` branch
+
+ ```bash
+ git clone -b neovim7.2 https://github.com/jiriks74/astronvim_config ~/.config/nvim/lua/user
+ ```
+
+- Open nvim and run `:PackerSync`
+
+```bash
+nvim +PackerSync
+```
+
## Useful info
- Folding with treesitter
- To get folding for your language, you need to run
`:TSInstall ` (eg. `TSInstall cpp` to get C++ folding)
- Install language servers
- - Use `Space+p+m` keybind to open install menu.
+ - Use `Space+p+I` keybind to open install menu.
- To install package under the cursor, press `i`
- To uninstall package under the cursor press `X`
+- Debugging
+ - See `vimspector` under [`Extra plugin included`](#extra-plugins-included)
- LaTeX
- To use `vimtex` plugin, you need to have LaTeX installed
- [`texlive-most`](https://wiki.archlinux.org/title/TeX_Live#Installation) package on ArchLinux
@@ -43,6 +59,14 @@
## Extra plugins included
+- [vimspector](https://github.com/puremourning/vimspector)
+ - Simple plugin for debugging
+ - You need have to have `neovim` python module installed
+
+ ```bash
+ pip3 install neovim
+ ```
+
- You have to create a file with `Launch` config - see the [plugin repository](https://github.com/puremourning/vimspector)
- [vim-pio](https://github.com/jiriks74/vim-pio)
- PlatformIO vim plugin
@@ -70,6 +94,37 @@
| CTRL+e | ["\"] | Copilot accept |
| CTRL+s | ["\"] | Toggle autosave |
+### Mappings for vimspector (debugging)
+
+| Shortcut | Vim keybind | Description |
+|-------------|-------------------|--------------------|
+| Space+d+d | ["\dd"] | Launch |
+| Space+d+S | ["\dS"] | Stop |
+| Space+d+c | ["\dc"] | Continue |
+| Space+d+p | ["\dp"] | Pause |
+| Space+d+e | ["\de"] | Reset |
+| Space+d+r | ["\dr"] | Restart |
+| Space+d+R | ["\dR"] | Run to cursor |
+| Space+d+C | ["\dC"] | Go to current line |
+| Space+d+P | ["\dP"] | Move cursor to the program counter in current frame |
+| | Breakpoints | |
+| Space+d+b+t | ["\dbt"] | Toggle breakpoint |
+| Space+d+b+l | ["\dbl"] | List breakpoints |
+| Space+d+b+c | ["\dbc"] | Clear breakpoints |
+| Space+d+b+C | ["\dbC"] | Toggle CBreakpoint or LogPoint on current line |
+| Space+d+b+f | ["\dbf"] | Add a function breakpoint for expression under cursor |
+| Space+d+b+n | ["\dbn"] | Jump to next breakpoint |
+| Space+d+b+p | ["\dbp"] | Jump to previous breakpoint |
+| | Step keybinds | |
+| Space+d+s+s | ["\dss"] | Step over |
+| Space+d+s+i | ["\dsi"] | Step into |
+| Space+d+s+o | ["\dso"] | Step out |
+| | Frame keybinds | |
+| Space+d+f+u | ["\dfu"] | Up frame |
+| Space+d+f+d | ["\dfd"] | Down frame |
+
+There are also some [VSCode like keybinds setup by the plugin](https://github.com/puremourning/vimspector#visual-studio--vscode)
+
### Mappings for markdown preview
| Shortcut | Vim keybind | Description |
@@ -82,8 +137,6 @@
## TODO
-- [ ] Nvim-DAP
- - Modified the default AstroNvim config
- [ ] [Mappings for `vimtex`](#mappings-for-vimtex)
- [ ] Better section for `vim-pio`
- [ ] Add section for setting up debugging
@@ -93,6 +146,7 @@
- [ ] Better [`README.md`](https://github.com/jiriks74/astronvim_config/blob/neovim7.2/README.md)
for [`neovim7.2`](https://github.com/jiriks74/astronvim_config/tree/neovim7.2) branch
- [ ] Add section redirecting to [`neovim72`](https://github.com/jiriks74/astronvim_config/tree/neovim7.2)
- branch's [`README.md`](https://github.com/jiriks74/astronvim_config/blob/neovim7.2/README.md) if user has Neovim < 8.0
+ branch's [`README.md`](https://github.com/jiriks74/astronvim_config/blob/neovim7.2/README.md) it user has Neovim < 8.0
+- [ ] Add `.vimspector.json` template
- [ ] Setting up simple wiki?
- [ ] Add section for ["weirongxu/plantuml-previewer.vim"](https://github.com/weirongxu/plantuml-previewer.vim)
diff --git a/init.lua b/init.lua
index 012e059..4512d44 100644
--- a/init.lua
+++ b/init.lua
@@ -1,16 +1,14 @@
-- AstroNvim Configuration Table
-- All configuration changes should go inside of the table below
--- A split up user configuration example can be found at: https://github.com/AstroNvim/split_user_example
-
-- You can think of a Lua "table" as a dictionary like data structure the
-- normal format is "key = value". These also handle array like data structures
-- where a value with no key simply has an implicit numeric key
local config = {
+
-- Configure AstroNvim updates
updater = {
remote = "origin", -- remote to use
- -- channel = "nightly", -- "stable" or "nightly"
channel = "nightly", -- "stable" or "nightly"
version = "latest", -- "latest", tag name, or regex search like "v1.*" to only do updates before v2 (STABLE ONLY)
branch = "nightly", -- branch name (NIGHTLY ONLY)
@@ -18,6 +16,7 @@ local config = {
pin_plugins = nil, -- nil, true, false (nil will pin plugins on stable only)
skip_prompts = false, -- skip prompts about breaking changes
show_changelog = true, -- show the changelog after performing an update
+ auto_reload = false, -- automatically reload and sync packer after a successful update
auto_quit = false, -- automatically quit the current session after a successful update
-- remotes = { -- easily add new remotes to track
-- ["remote_name"] = "https://remote_url.come/repo.git", -- full remote url
@@ -25,9 +24,10 @@ local config = {
-- ["remote3"] = "github_user", -- GitHub user assume AstroNvim fork
-- },
},
+
-- Set colorscheme to use
- -- colorscheme = "astrodark",
- colorscheme = "tokyonight-night",
+ colorscheme = "default_theme",
+
-- Add highlight groups in any theme
highlights = {
-- init = { -- this table overrides highlights in all themes
@@ -37,7 +37,8 @@ local config = {
-- Normal = { bg = "#000000" },
-- },
},
- -- set vim options here (vim.. = value)
+
+ -- set vim options here (vim.. = value)
options = {
opt = {
-- set to true or false etc.
@@ -48,28 +49,17 @@ local config = {
wrap = false, -- sets vim.opt.wrap
},
g = {
- -- sets vim.g.mapleader
- mapleader = " ",
- -- enable or disable auto formatting at start (lsp.formatting.format_on_save must be enabled)
- autoformat_enabled = true,
- -- enable completion at start
- cmp_enabled = true,
- -- enable autopairs at start
- autopairs_enabled = true,
- -- set the visibility of diagnostics in the UI (0=off, 1=only show in status line, 2=virtual text off, 3=all on)
- diagnostics_mode = 3,
- -- disable icons in the UI (disable if no nerd font is available, requires :PackerSync after changing)
- icons_enabled = true,
- -- disable notifications when toggling UI elements
- ui_notifications_enabled = true,
- -- Taglist
- Tlist_Use_Right_Window = 1,
- Tlist_GainFocus_On_ToggleOpen = 1,
- Tlist_Auto_Update = 1,
- -- Tlist_Close_On_Select = 1,
+ mapleader = " ", -- sets vim.g.mapleader
+ cmp_enabled = true, -- enable completion at start
+ autopairs_enabled = true, -- enable autopairs at start
+ diagnostics_enabled = true, -- enable diagnostics at start
+ status_diagnostics_enabled = true, -- enable diagnostics in statusline
- -- MarkdownPreview
- mkdp_auto_close = 0,
+ -- copilot_no_tab_map = true,
+ -- copilot_assume_mapped = true,
+ -- copilot_tab_fallback = "",
+
+ vimspector_enable_mappings = 'VISUAL_STUDIO',
},
},
-- If you need more control, you can use the function()...end notation
@@ -82,10 +72,69 @@ local config = {
-- return local_vim
-- end,
+ -- Set dashboard header
+ header = {
+ " █████ ███████ ████████ ██████ ██████",
+ "██ ██ ██ ██ ██ ██ ██ ██",
+ "███████ ███████ ██ ██████ ██ ██",
+ "██ ██ ██ ██ ██ ██ ██ ██",
+ "██ ██ ███████ ██ ██ ██ ██████",
+ " ",
+ " ███ ██ ██ ██ ██ ███ ███",
+ " ████ ██ ██ ██ ██ ████ ████",
+ " ██ ██ ██ ██ ██ ██ ██ ████ ██",
+ " ██ ██ ██ ██ ██ ██ ██ ██ ██",
+ " ██ ████ ████ ██ ██ ██",
+ },
+
+ -- Default theme configuration
+ default_theme = {
+ -- Modify the color palette for the default theme
+ colors = {
+ fg = "#abb2bf",
+ bg = "#1e222a",
+ },
+ highlights = function(hl) -- or a function that returns a new table of colors to set
+ local C = require "default_theme.colors"
+
+ hl.Normal = { fg = C.fg, bg = C.bg }
+
+ -- New approach instead of diagnostic_style
+ hl.DiagnosticError.italic = true
+ hl.DiagnosticHint.italic = true
+ hl.DiagnosticInfo.italic = true
+ hl.DiagnosticWarn.italic = true
+
+ return hl
+ end,
+ -- enable or disable highlighting for extra plugins
+ plugins = {
+ aerial = true,
+ beacon = false,
+ bufferline = true,
+ dashboard = true,
+ highlighturl = true,
+ hop = false,
+ indent_blankline = true,
+ lightspeed = false,
+ ["neo-tree"] = true,
+ notify = true,
+ ["nvim-tree"] = false,
+ ["nvim-web-devicons"] = true,
+ rainbow = true,
+ symbols_outline = false,
+ telescope = true,
+ vimwiki = false,
+ ["which-key"] = true,
+ },
+ },
+
-- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
diagnostics = {
+ virtual_text = true,
underline = true,
},
+
-- Extend LSP configuration
lsp = {
-- enable servers that you already have installed without mason
@@ -93,20 +142,10 @@ local config = {
-- "pyright"
},
formatting = {
- -- control auto formatting on save
- format_on_save = {
- enabled = false, -- enable or disable format on save globally
- allow_filetypes = { -- enable format on save for specified filetypes only
- -- "go",
- },
- ignore_filetypes = { -- disable format on save for specified filetypes
- -- "python",
- },
+ format_on_save = false, -- enable or disable auto formatting on save
+ disabled = { -- disable formatting capabilities for the listed clients
+ -- "sumneko_lua",
},
- disabled = { -- disable formatting capabilities for the listed language servers
- -- "lua_ls",
- },
- timeout_ms = 1000, -- default format timeout
-- filter = function(client) -- fully override the default formatting function
-- return true
-- end
@@ -121,19 +160,13 @@ local config = {
-- on_attach = function(client, bufnr)
-- end,
- -- override the LSP setup handler function based on server name
- -- setup_handlers = {
- -- -- first function changes the default setup handler
- -- function(server, opts) require("lspconfig")[server].setup(opts) end,
- -- -- keys for a specific server name will be used for that LSP
- -- lua_ls = function(server, opts)
- -- -- custom lua_ls setup handler
- -- require("lspconfig")["lua_ls"].setup(opts)
- -- end,
- -- },
+ -- override the mason server-registration function
+ -- server_registration = function(server, opts)
+ -- require("lspconfig")[server].setup(opts)
+ -- end,
-- Add overrides for LSP server settings, the keys are the name of the server
- config = {
+ ["server-settings"] = {
-- example for addings schemas to yamlls
-- yamlls = { -- override table for require("lspconfig").yamlls.setup({...})
-- settings = {
@@ -148,9 +181,10 @@ local config = {
-- },
clangd = {
capabilities = { offsetEncoding = "utf-8" },
- },
+ }
},
},
+
-- Mapping data with "desc" stored directly by vim.keymap.set().
--
-- Please use this mappings table to set keyboard mapping since this is the
@@ -159,60 +193,51 @@ local config = {
mappings = {
-- first key is the mode
n = {
- ["fT"] = {
- function() require("telescope.builtin").colorscheme { enable_preview = true } end,
- desc = "Find themes",
- },
-- second key is the lefthand side of the map
-- mappings seen under group name "Buffer"
["bb"] = { "tabnew", desc = "New tab" },
["bc"] = { "BufferLinePickClose", desc = "Pick to close" },
["bj"] = { "BufferLinePick", desc = "Pick to jump" },
["bt"] = { "BufferLineSortByTabs", desc = "Sort by tabs" },
- -- tables with the `name` key will be registered with which-key if it's installed
- -- this is useful for naming menus
- ["b"] = { name = "Buffers" },
- -- Trigger Alpha dashboard on close when no buffers are left
- ["c"] = {
- function()
- local bufs = vim.fn.getbufinfo { buflisted = true }
- require("astronvim.utils.buffer").close(0)
- if require("astronvim.utils").is_available "alpha-nvim" and not bufs[2] then require("alpha").start(true) end
- end,
- desc = "Close buffer",
- },
- -- quick save
- -- [""] = { ":w!", desc = "Save File" }, -- change description but the same command
+ ["uD"] = { "Alpha", desc = "Alpha dashboard" },
+
+ ["dd"] = { "call vimspector#Launch()", desc = "Launch" },
+ ["dS"] = { "call vimspector#Stop()", desc = "Stop" },
+ ["dc"] = { "call vimspector#Continue()", desc = "Continue" },
+ ["dp"] = { "call vimspector#Pause()", desc = "Pause" },
+ ["de"] = { "call vimspector#Reset()", desc = "Reset" },
+ ["dr"] = { "call vimspector#Restart()", desc = "Restart" },
+ ["dR"] = { "call vimspector#RunToCursor()", desc = "Run to cursor" },
+ ["dC"] = { "call vimspector#GoToCurrentLine()", desc = "Go to current line" },
+ ["dP"] = { "call vimspector#JumpToProgramCounter()",
+ desc = "Move Cursor to the program counter in current frame" },
+
+ -- Breakpoints
+ ["dbt"] = { "call vimspector#ToggleBreakpoint()", desc = "Toggle breakpoint" },
+ ["dbl"] = { "call vimspector#ListBreakpoints()", desc = "List breakpoints" },
+ ["dbc"] = { "call vimspector#ClearBreakpoints()", desc = "Clear breakpoints" },
+ ["dbC"] = { "call vimspector#ToggleBreakpoint( { trigger expr, hit count expr } )",
+ desc = "Toggle CBreakpoint or LogPoint on current line" },
+ ["dbf"] = { "call vimspector#AddFunctionBreakpoint( '' )",
+ desc = "Add a function breakpoint for expression under cursor" },
+ ["dbn"] = { "call vimspector#JumpToNextBreakpoint()", desc = "Jump to next breakpoint" },
+ ["dbp"] = { "call vimspector#JumpToPreviousBreakpoint()", desc = "Jump to previous breakpoint" },
+
+ -- Step
+ ["dss"] = { "call vimspector#StepOver()", desc = "Step over" },
+ ["dsi"] = { "call vimspector#StepInto()", desc = "Step into" },
+ ["dso"] = { "call vimspector#StepOut()", desc = "Step out" },
+
+ -- Frames
+ ["dfu"] = { "call vimspector#UpFrame()", desc = "Up frame" },
+ ["dfd"] = { "call vimspector#DownFrame()", desc = "Down frame" },
- -- Debugger mappings
- ["dl"] = { name = "Load launch.json" },
- ["L"] = {
- "LiveServer",
- desc = " Live server",
- },
- -- Config loading
- ["dlc"] = {
- function() require("dap.ext.vscode").load_launchjs(nil, { cppdbg = { "c", "cpp", "asm" } }) end,
- desc = "C/C++/asm",
- },
- ["dln"] = {
- function()
- require("dap.ext.vscode").load_launchjs(
- nil,
- { node2 = { "javascript", "javascriptreact", "typescriptreact", "typescript" } }
- )
- end,
- desc = "Node",
- },
- -- Load launch.json for all supported languages
- ["dla"] = { function() require("dap.ext.vscode").load_launchjs(nil, nil) end, desc = "All" },
-- Mardown preview
- ["m"] = { name = " Markdown" },
["mp"] = { "MarkdownPreview", desc = "Markdown preview" },
["ms"] = { "MarkdownPreviewStop", desc = "Markdown preview stop" },
["mt"] = { "MarkdownPreviewToggle", desc = "Markdown preview toggle" },
+
-- Vimtex mappings
- ["x"] = { name = " LaTeX" },
["xi"] = { "VimtexInfo", desc = "Info" },
["xI"] = { "VimtexInfoFull", desc = "Full info" },
["xt"] = { "VimtexTocOpen", desc = "Open table of contents" },
@@ -235,513 +260,215 @@ local config = {
["xX"] = { "VimtexReloadState", desc = "Reload the state for the current buffer" },
["xs"] = { "VimtexToggleMain", desc = "Set current file as 'current project'" },
["xa"] = { "VimtexContextMenu", desc = "Show context menu" },
- -- Trouble, Taglist
- ["lt"] = { desc = false, name = "Trouble, Tagbar" },
- -- Taglist
- ["ltT"] = { "TlistToggle", desc = "Tagbar toggle" },
- -- Trouble
- ["ltx"] = { "TroubleToggle", desc = "Toggle Trouble" },
- ["ltw"] = { "TroubleToggle workspace_diagnostics", desc = "Workspace diagnostics" },
- ["ltd"] = { "TroubleToggle document_diagnostics", desc = "Document diagnostics" },
- ["ltq"] = { "TroubleToggle quickfix", desc = "Quickfix" },
- ["ltl"] = { "TroubleToggle loclist", desc = "Loc List" },
- ["ltR"] = { "TroubleToggle lsp_references", desc = "Lsp references" },
- -- ["ftt"] = { "TodoTrouble", desc = "Todo Trouble" },
- --
+
-- Autosave
[""] = { "ASToggle", desc = "Toggle autosave" },
- ["fs"] = { "ASToggle", desc = "Toggle autosave" },
+
+ -- quick save
+ -- [""] = { ":w!", desc = "Save File" }, -- change description but the same command
},
- v = {
- -- Carbon code sharing
- ["s"] = { ":CarbonNow", desc = "Share code on Carbon", silent = true },
+ i = {
+ -- [""] = { "copilot#Accept('')", silent = true, expr = true },
+ -- [""] = { "copilot#Accept('')" },
+ -- Oopen cmp menu
+ [""] = { "cmp#complete()", silent = true, expr = true },
},
t = {
-- setting a mapping to false will disable it
-- [""] = false,
},
},
- -- Configure require("lazy").setup() options
- lazy = {
- defaults = { lazy = true },
- performance = {
- rtp = {
- -- customize default disabled vim plugins
- disabled_plugins = {
- "tohtml",
- "gzip",
- "matchit",
- "zipPlugin",
- "netrwPlugin",
- "tarPlugin",
- "matchparen",
- },
- },
- },
- },
+
-- Configure plugins
plugins = {
- -- Theme
- {
- "folke/tokyonight.nvim",
- event = "UIEnter",
- },
- -- You can disable default plugins as follows:
- -- { "max397574/better-escape.nvim", enabled = false },
- --
- -- You can also easily customize additional setup of plugins that is outside of the plugin's setup call
- -- {
- -- "L3MON4D3/LuaSnip",
- -- config = function(plugin, opts)
- -- -- include the default astronvim config that calls the setup call
- -- require "plugins.configs.luasnip"(plugin, opts)
- -- -- add more custom luasnip configuration such as filetype extend or custom snippets
- -- local luasnip = require "luasnip"
- -- luasnip.filetype_extend("javascript", { "javascriptreact" })
- -- end,
- -- },
- -- {
- -- "windwp/nvim-autopairs",
- -- config = function(plugin, opts)
- -- -- include the default astronvim config that calls the setup call
- -- require "plugins.configs.nvim-autopairs"(plugin, opts)
- -- -- add more custom autopairs configuration such as custom rules
- -- local npairs = require "nvim-autopairs"
- -- local Rule = require "nvim-autopairs.rule"
- -- local cond = require "nvim-autopairs.conds"
- -- npairs.add_rules(
- -- {
- -- Rule("$", "$", { "tex", "latex" })
- -- -- don't add a pair if the next character is %
- -- :with_pair(cond.not_after_regex "%%")
- -- -- don't add a pair if the previous character is xxx
- -- :with_pair(
- -- cond.not_before_regex("xxx", 3)
- -- )
- -- -- don't move right when repeat character
- -- :with_move(cond.none())
- -- -- don't delete if the next character is xx
- -- :with_del(cond.not_after_regex "xx")
- -- -- disable adding a newline when you press
- -- :with_cr(cond.none()),
- -- },
- -- -- disable for .vim files, but it work for another filetypes
- -- Rule("a", "a", "-vim")
- -- )
- -- end,
- -- },
- -- By adding to the which-key config and using our helper function you can add more which-key registered bindings
- -- {
- -- "folke/which-key.nvim",
- -- config = function(plugin, opts)
- -- require "plugins.configs.which-key" (plugin, opts)
- -- -- Add bindings which show up as group name
- -- local wk = require "which-key"
- -- wk.register({
- -- m = { name = "Markdown" },
- -- ft = { name = "Trouble" },
- -- b = { name = "Buffers" },
- -- }, { mode = "n", prefix = "" })
- -- end,
- -- },
- {
- "dstein64/vim-startuptime",
- cmd = "StartupTime",
- },
+ init = {
+ -- You can disable default plugins as follows:
+ -- ["goolord/alpha-nvim"] = { disable = true },
- {
- -- override nvim-cmp plugin
- "hrsh7th/nvim-cmp",
- dependencies = {
- "hrsh7th/cmp-emoji", -- add cmp source as dependency of cmp
+ -- You can also add new plugins here as well:
+ -- Add plugins, the packer syntax without the "use"
+ -- { "andweeb/presence.nvim" },
+ -- {
+ -- "ray-x/lsp_signature.nvim",
+ -- event = "BufRead",
+ -- config = function()
+ -- require("lsp_signature").setup()
+ -- end,
+ -- },
+ --
+ {
+ "folke/todo-comments.nvim",
+ event = "BufRead",
+ config = function()
+ require("todo-comments").setup()
+ end,
+ },
+ {
"zbirenbaum/copilot.lua",
+ -- event = "VimEnter",
+ event = "BufRead",
+ -- after = "feline.nvim",
+ config = function()
+ vim.defer_fn(function()
+ require("copilot").setup()
+ end, 100)
+ end,
},
- -- override the options table that is used in the `require("cmp").setup()` call
- opts = function(_, opts)
- -- opts parameter is the default options table
- -- the function is lazy loaded so cmp is able to be required
- local cmp = require "cmp"
- local luasnip = require "luasnip"
- -- modify the mapping part of the table
- -- Disable tab completion, use CTRL + J or CTRL + K instead
- opts.mapping[""] = cmp.mapping.confirm { select = false }
- opts.mapping[""] = cmp.mapping.confirm { select = false }
-
- if luasnip.expandable() then
- luasnip.expand()
- elseif luasnip.expand_or_jumpable() then
- luasnip.expand_or_jump()
- fallback()
- end
- opts.sources = cmp.config.sources {
- -- Copilot Source
- { name = "copilot", group_index = 2 },
- { name = "nvim_lsp", priority = 1000 },
- { name = "luasnip", priority = 750 },
- { name = "buffer", priority = 500 },
- { name = "path", priority = 250 },
- { name = "emoji", priority = 700 }, -- add new source
- }
-
- return opts
- end,
- },
- {
- "onsails/lspkind.nvim",
- opts = {
- mode = "symbol",
- symbol_map = {
- -- Copilot icon
- Copilot = "",
- Array = "",
- Boolean = "⊨",
- Class = "",
- Constructor = "",
- Key = "",
- Namespace = "",
- Null = "NULL",
- Number = "#",
- Object = "",
- Package = "",
- Property = "",
- Reference = "",
- Snippet = "",
- String = "",
- TypeParameter = "",
- Unit = "",
- },
- menu = {},
+ -- { "github/copilot.vim" },
+ {
+ "zbirenbaum/copilot-cmp",
+ -- after = "copilot.lua",
+ after = { "nvim-cmp", "copilot.lua" },
+ config = function()
+ -- astronvim.add_cmp_source("copilot_cmp")
+ astronvim.add_cmp_source({ name = "copilot", priority = 1050, keyword_length = -1, max_item_count = 4 })
+ require("copilot_cmp").setup {
+ method = "getCompletionsCycling",
+ -- method = "getPanelCompletions",
+ formatters = {
+ label = require("copilot_cmp.format").format_label_text,
+ insert_text = require("copilot_cmp.format").format_insert_text,
+ preview = require("copilot_cmp.format").deindent,
+ },
+ }
+ end,
},
- enabled = vim.g.icons_enabled,
- config = require "plugins.configs.lspkind",
- },
-
- -- You can also add new plugins here as well:
- -- Add plugins, the lazy syntax
-
- --Social
- {
- "jiriks74/presence.nvim",
- event = "UIEnter",
- },
- {
- "ellisonleao/carbon-now.nvim",
- cmd = "CarbonNow",
- opts = {
- base_url = "https://carbon.now.sh/",
- open_cmd = "xdg-open",
- options = {
- theme = "night-owl",
- window_theme = "none",
- font_family = "Hack",
- font_size = "18px",
- bg = "none",
- line_numbers = true,
- line_height = "133%",
- drop_shadow = false,
- drop_shadow_offset_y = "20px",
- drop_shadow_blur = "68px",
- width = "680",
- watermark = false,
- },
+ { "puremourning/vimspector" },
+ { "lervag/vimtex" },
+ { "normen/vim-pio" },
+ {
+ "iamcco/markdown-preview.nvim",
+ run = function() vim.fn["mkdp#util#install"]() end,
},
- },
-
- -- Comments
- {
- "folke/todo-comments.nvim",
- event = "User AstroFile",
- opts = {
- signs = true, -- show icons in the signs column
- sign_priority = 8, -- sign priority
- -- keywords recognized as todo comments
- keywords = {
- FIX = {
- icon = " ", -- icon used for the sign, and in search results
- color = "error", -- can be a hex color, or a named color (see below)
- alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
- -- signs = false, -- configure signs for some keywords individually
- },
- TODO = { icon = " ", color = "info" },
- HACK = { icon = " ", color = "warning" },
- WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } },
- PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
- NOTE = { icon = " ", color = "hint", alt = { "INFO" } },
- TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
- },
- gui_style = {
- fg = "NONE", -- The gui style to use for the fg highlight group.
- bg = "BOLD", -- The gui style to use for the bg highlight group.
- },
- merge_keywords = true, -- when true, custom keywords will be merged with the defaults
- -- highlighting of the line containing the todo comment
- -- * before: highlights before the keyword (typically comment characters)
- -- * keyword: highlights of the keyword
- -- * after: highlights after the keyword (todo text)
- highlight = {
- -- enable multine todo comments
- multiline = true,
- -- lua pattern to match the next multiline from the start of the matched keyword
- multiline_pattern = "^.",
- -- extra lines that will be re-evaluated when changing a line
- multiline_context = 10,
- -- "fg" or "bg" or empty
- before = "",
- -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg,
- -- but will also highlight surrounding characters, wide_fg acts accordingly but with fg)
- keyword = "wide",
- -- "fg" or "bg" or empty
- after = "fg",
- -- pattern or table of patterns, used for highlighting (vim regex)
- pattern = [[.*<(KEYWORDS)\s*:]],
- -- uses treesitter to match keywords in comments only
- comments_only = true,
- -- ignore lines longer than this
- max_line_len = 400,
- -- list of file types to exclude highlighting
- exclude = {},
- },
- -- list of named colors where we try to extract the guifg from the
- -- list of highlight groups or use the hex color if hl not found as a fallback
- colors = {
- error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
- warning = { "DiagnosticWarn", "WarningMsg", "#FBBF24" },
- info = { "DiagnosticInfo", "#2563EB" },
- hint = { "DiagnosticHint", "#10B981" },
- default = { "Identifier", "#7C3AED" },
- test = { "Identifier", "#FF00FF" },
- },
- search = {
- command = "rg",
- args = {
- "--color=never",
- "--no-heading",
- "--with-filename",
- "--line-number",
- "--column",
- },
- -- regex that will be used to match keywords.
- -- don't replace the (KEYWORDS) placeholder
- pattern = [[\b(KEYWORDS):]], -- ripgrep regex
- -- pattern = [[\b(KEYWORDS)\b]], -- match without the extra colon. You'll likely get false positives
- },
+ {
+ "Pocco81/auto-save.nvim",
+ config = function()
+ require("auto-save").setup()
+ end,
},
- },
- -- Show todo comments, warnings, errors, ...
- {
- "folke/trouble.nvim",
- -- cmd = { "TroubleToggle", "TodoTrouble" }
- cmd = "TroubleToggle",
- },
- -- TOC (functions, macros, ...)
- {
- "yegappan/taglist",
- cmd = "TlistToggle",
- },
+ { "weirongxu/plantuml-previewer.vim" },
+ { "aklt/plantuml-syntax" },
+ { "tyru/open-browser.vim" },
- -- Code completion
- {
- "zbirenbaum/copilot.lua",
- cmd = "Copilot",
- event = "User AstroFile",
- config = function()
- require("copilot").setup {
- suggestion = { enabled = false },
- panel = { enabled = false },
- }
- end,
- },
- {
- "zbirenbaum/copilot-cmp",
- config = function() require("copilot_cmp").setup() end,
- event = "User AstroFile",
- },
+ -- We also support a key value style plugin definition similar to NvChad:
+ -- ["ray-x/lsp_signature.nvim"] = {
+ -- event = "BufRead",
+ -- config = function()
+ -- require("lsp_signature").setup()
+ -- end,
+ -- },
+ -- ["weirongxu/plantuml-previewer.vim"] = {
+ -- requires = { {"aklt/plantuml-syntax"} },
+ -- -- depends = "aklt/plantuml-syntax",
+ -- requires = { {"tyru/open-browser.vim"} },
+ -- -- depends = "tyru/open-browser.vim",
+ -- },
- -- PlatformIO
- {
- "normen/vim-pio",
- -- event = "BufEnter"
- cmd = { "PIO", "PIOInit", "PIOInstall", "PIOUninstall", "PIONewProject", "PIOAddLibrary", "PIORemoveLibrary" },
},
+ -- All other entries override the require("").setup({...}) call for default plugins
+ ["null-ls"] = function(config) -- overrides `require("null-ls").setup(config)`
+ -- config variable is the default configuration table for the setup function call
+ -- local null_ls = require "null-ls"
- -- Jupiter notebooks
- {
- "kiyoon/jupynium.nvim",
- build = "pip3 install --user .",
- event = "BufEnter *.ju.py",
- opts = {
- python_host = "/usr/bin/python3",
- },
- },
- { "stevearc/dressing.nvim" },
-
- -- Live server
- {
- "aurum77/live-server.nvim",
- run = function() require("live_server.util").install() end,
- cmd = { "LiveServer", "LiveServerStart", "LiveServerStop" },
- },
-
- -- Text related
- {
- -- LaTeX
- "lervag/vimtex",
- event = "BufEnter *.tex",
- },
- {
- "iamcco/markdown-preview.nvim",
- requires = { "tyru/open-browser.vim" },
- event = "BufEnter *.md",
- config = function() vim.fn["mkdp#util#install"]() end,
- },
-
- -- PlantUML
- {
- "weirongxu/plantuml-previewer.vim",
- event = "BufEnter *.uml",
- },
- {
- "aklt/plantuml-syntax",
- event = "BufEnter *.uml",
- },
-
- -- Basic editor functionality
- {
- "Pocco81/auto-save.nvim",
- event = "User AstroFile",
- config = function() require("auto-save").setup() end,
- },
-
- -- Tasks.json
- {
- "stevearc/overseer.nvim",
- cmd = {
- "OverseerOpen",
- "OverseerClose",
- "OverseerToggle",
- "OverseerSaveBundle",
- "OverseerLoadBundle",
- "OverseerDeleteBundle",
- "OverseerRunCmd",
- "OverseerRun",
- "OverseerInfo",
- "OverseerBuild",
- "OverseerQuickAction",
- "OverseerTaskAction ",
- "OverseerClearCache",
- },
- opts = {},
- },
-
- -- {
- -- "ray-x/lsp_signature.nvim",
- -- event = "BufRead",
- -- config = function()
- -- require("lsp_signature").setup()
- -- end,
- -- },
-
- -- Plugin entries can also be used to override the default options for plugins as well
- {
- "goolord/alpha-nvim",
- opts = function(_, opts)
- -- customize the dashboard header
- opts.section.header.val = {
- "███████ ████████ ███████ ███████ ██ ██ █████ ███████ ██ ██ ",
- "██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ",
- "███████ ██ █████ █████ █████ ███████ █████ ██ ██ ",
- " ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ",
- "███████ ██ ███████ ██ ██ ██ ██ ██ ██ ███████ ██████ ",
- "",
- " █████ ███████ ████████ ██████ ██████ ",
- " ██ ██ ██ ██ ██ ██ ██ ██ ",
- " ███████ ███████ ██ ██████ ██ ██ ",
- " ██ ██ ██ ██ ██ ██ ██ ██ ",
- " ██ ██ ███████ ██ ██ ██ ██████ ",
- "",
- " ███ ██ ██ ██ ██ ███ ███",
- " ████ ██ ██ ██ ██ ████ ████",
- " ██ ██ ██ ██ ██ ██ ██ ████ ██",
- " ██ ██ ██ ██ ██ ██ ██ ██ ██",
- " ██ ████ ████ ██ ██ ██",
- }
- return opts
- end,
- },
- {
- "jose-elias-alvarez/null-ls.nvim",
- opts = function(_, config)
- -- config variable is the default configuration table for the setup function call
- -- local null_ls = require "null-ls"
-
- -- Check supported formatters and linters
- -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
- -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
- config.sources = {
- -- Set a formatter
- -- null_ls.builtins.formatting.stylua,
- -- null_ls.builtins.formatting.prettier,
- }
- return config -- return final config table
- end,
- },
- {
- "nvim-treesitter/nvim-treesitter",
- opts = {
- -- ensure_installed = { "lua" },
- },
+ -- Check supported formatters and linters
+ -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
+ -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
+ config.sources = {
+ -- Set a formatter
+ -- null_ls.builtins.formatting.stylua,
+ -- null_ls.builtins.formatting.prettier,
+ }
+ return config -- return final config table
+ end,
+ treesitter = { -- overrides `require("treesitter").setup(...)`
+ -- ensure_installed = { "lua" },
},
-- use mason-lspconfig to configure LSP installations
- {
- "williamboman/mason-lspconfig.nvim",
- -- overrides `require("mason-lspconfig").setup(...)`
- opts = {
- -- ensure_installed = { "lua_ls" },
- },
+ ["mason-lspconfig"] = { -- overrides `require("mason-lspconfig").setup(...)`
+ -- ensure_installed = { "sumneko_lua" },
},
-- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
- {
- "jay-babu/mason-null-ls.nvim",
- -- overrides `require("mason-null-ls").setup(...)`
- opts = {
- -- ensure_installed = { "prettier", "stylua" },
- },
+ ["mason-null-ls"] = { -- overrides `require("mason-null-ls").setup(...)`
+ -- ensure_installed = { "prettier", "stylua" },
},
- {
- "jay-babu/mason-nvim-dap.nvim",
- -- overrides `require("mason-nvim-dap").setup(...)`
- opts = {
- -- ensure_installed = { "python" },
+ },
+
+ -- LuaSnip Options
+ luasnip = {
+ -- Add paths for including more VS Code style snippets in luasnip
+ vscode_snippet_paths = {},
+ -- Extend filetypes
+ filetype_extend = {
+ -- javascript = { "javascriptreact" },
+ },
+ },
+
+ -- CMP Source Priorities
+ -- modify here the priorities of default cmp sources
+ -- higher value == higher priority
+ -- The value can also be set to a boolean for disabling default sources:
+ -- false == disabled
+ -- true == 1000
+ cmp = {
+ source_priority = {
+ nvim_lsp = 1000,
+ luasnip = 750,
+ buffer = 500,
+ path = 250,
+ },
+ -- mappings = {
+ -- [""] = cmp.mapping(function(fallback)
+ -- if luasnip.expandable() then
+ -- luasnip.expand()
+ -- elseif luasnip.expand_or_jumpable() then
+ -- luasnip.expand_or_jump()
+ -- elseif has_words_before() then
+ -- cmp.complete()
+ -- else
+ -- fallback()
+ -- end
+ -- end, {
+ -- "i",
+ -- "s",
+ -- }),
+ -- [""] = cmp.mapping(function(fallback)
+ -- if luasnip.jumpable(-1) then
+ -- luasnip.jump(-1)
+ -- else
+ -- fallback()
+ -- end
+ -- end, {
+ -- "i",
+ -- "s",
+ -- }),
+ --
+ -- }
+ },
+
+ -- Modify which-key registration (Use this with mappings table in the above.)
+ ["which-key"] = {
+ -- Add bindings which show up as group name
+ register = {
+ -- first key is the mode, n == normal mode
+ n = {
+ -- second key is the prefix, prefixes
+ [""] = {
+ -- third key is the key to bring up next level and its displayed
+ -- group name in which-key top level menu
+ ["b"] = { name = "Buffer" },
+ ["d"] = {
+ name = "Debugging",
+ ["b"] = { name = "Breakpoints" },
+ ["s"] = { name = "Step" },
+ ["f"] = { name = "Frames" },
+ },
+ ["m"] = { name = "Markdown" },
+ ["x"] = { name = "LaTeX" },
+ },
},
},
},
- -- Customize Heirline options
- heirline = {
- -- -- Customize different separators between sections
- -- separators = {
- -- breadcrumbs = " > ",
- -- tab = { "", "" },
- -- },
- -- -- Customize colors for each element each element has a `_fg` and a `_bg`
- -- colors = function(colors)
- -- colors.git_branch_fg = require("astronvim.utils").get_hlgroup "Conditional"
- -- return colors
- -- end,
- -- -- Customize attributes of highlighting in Heirline components
- -- attributes = {
- -- -- styling choices for each heirline element, check possible attributes with `:h attr-list`
- -- git_branch = { bold = true }, -- bold the git branch statusline component
- -- },
- -- -- Customize if icons should be highlighted
- -- icon_highlights = {
- -- breadcrumbs = false, -- LSP symbols in the breadcrumbs
- -- file_icon = {
- -- winbar = false, -- Filetype icon in the winbar inactive windows
- -- statusline = true, -- Filetype icon in the statusline
- -- tabline = true, -- Filetype icon in the tabline
- -- },
- -- },
- },
+
-- This function is run last and is a good place to configuring
-- augroups/autocommands and custom filetypes also this just pure lua so
-- anything that doesn't fit in the normal config locations above can go here
@@ -758,6 +485,24 @@ local config = {
-- ["~/%.config/foo/.*"] = "fooscript",
-- },
-- }
+ local function alpha_on_bye(cmd)
+ local bufs = vim.fn.getbufinfo { buflisted = true }
+ vim.cmd(cmd)
+ if require("core.utils").is_available "alpha-nvim" and not bufs[2] then
+ require("alpha").start(true)
+ end
+ end
+
+ vim.keymap.del("n", "c")
+ if require("core.utils").is_available "bufdelete.nvim" then
+ vim.keymap.set("n", "c", function()
+ alpha_on_bye "Bdelete!"
+ end, { desc = "Close buffer" })
+ else
+ vim.keymap.set("n", "c", function()
+ alpha_on_bye "bdelete!"
+ end, { desc = "Close buffer" })
+ end
end,
}
diff --git a/plugins/cmp.lua b/plugins/cmp.lua
new file mode 100644
index 0000000..184e8ac
--- /dev/null
+++ b/plugins/cmp.lua
@@ -0,0 +1,97 @@
+local kind_icons = {
+ NONE = "",
+ Array = "",
+ Boolean = "⊨",
+ Class = "",
+ Constructor = "",
+ Key = "",
+ Namespace = "",
+ Null = "NULL",
+ Number = "#",
+ Object = "⦿",
+ Package = "",
+ Property = "",
+ Reference = "",
+ Snippet = "",
+ String = "𝓐",
+ TypeParameter = "",
+ Unit = "",
+
+ Text = "",
+ Method = "",
+ Function = "",
+ Field = "ﰠ",
+ Variable = "",
+ Interface = "",
+ Module = "",
+ Value = "",
+ Enum = "",
+ Keyword = "",
+ Color = "",
+ File = "",
+ Folder = "",
+ EnumMember = "",
+ Constant = "",
+ Struct = "פּ",
+ Event = "",
+ Operator = "",
+ Copilot = "",
+}
+local cmp = require("cmp")
+-- local has_words_before = function()
+-- if vim.api.nvim_buf_get_option(0, "buftype") == "prompt" then return false end
+-- local line, col = unpack(vim.api.nvim_win_get_cursor(0))
+-- return col ~= 0 and vim.api.nvim_buf_get_text(0, line - 1, 0, line - 1, col, {})[1]:match("^%s*$") == nil
+-- end
+return {
+ formatting = {
+ fields = { "kind", "abbr", "menu" },
+ format = function(_, vim_item)
+ vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
+ return vim_item
+ end,
+ },
+ -- completion = {
+ -- keyword_length = 0,
+ -- },
+ -- mapping = {
+ -- [""] = vim.schedule_wrap(function(fallback)
+ -- if cmp.visible() and has_words_before() then
+ -- cmp.select_next_item({ behavior = cmp.SelectBehavior.Select })
+ -- else
+ -- fallback()
+ -- end
+ -- end),
+ -- [''] = cmp.mapping(function(fallback)
+ -- if vim.fn['vsnip#jumpable'](1) == 1 then
+ -- feedkey('(vsnip-jump-next)', '')
+ -- else
+ -- local copilot_keys = vim.fn['copilot#Accept']()
+ -- if copilot_keys ~= '' then
+ -- vim.api.nvim_feedkeys(copilot_keys, 'i', true)
+ -- else
+ -- fallback()
+ -- end
+ -- end
+ -- end, { 'i', 's' }),
+ -- },
+}
+-- local cmp = require "cmp"
+-- local luasnip = require "luasnip"
+-- return {
+-- preselect = cmp.PreselectMode.None,
+-- mapping = {
+-- [""] = cmp.mapping.confirm { select = false },
+-- [""] = cmp.mapping(function(fallback)
+-- if luasnip.expandable() then
+-- luasnip.expand()
+-- elseif luasnip.expand_or_jumpable() then
+-- luasnip.expand_or_jump()
+-- fallback()
+-- end
+-- end, {
+-- "i",
+-- "s",
+-- }),
+-- },
+-- }