aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2025-08-30 00:46:23 +0200
committersrdusr <trevorgray@srdusr.com>2025-08-30 00:46:23 +0200
commit4a29c3cc90b48048961331de31c2229cfd71055f (patch)
tree6e37dd8d43e64aceda22c32e2216d329d77df3b1
parent39ba69d6c1fc6e507d91570220b47e60e237b02c (diff)
downloaddotfiles-4a29c3cc90b48048961331de31c2229cfd71055f.tar.gz
dotfiles-4a29c3cc90b48048961331de31c2229cfd71055f.zip
Removed nvim subtree
-rw-r--r--.config/nvim/.gitignore4
-rw-r--r--.config/nvim/README.md33
-rw-r--r--.config/nvim/after/ftplugin/markdown.lua16
-rw-r--r--.config/nvim/autoload/utils.vim237
-rw-r--r--.config/nvim/init.lua146
-rw-r--r--.config/nvim/lua/plugins/autopairs.lua42
-rw-r--r--.config/nvim/lua/plugins/cmp-gh-source.lua70
-rw-r--r--.config/nvim/lua/plugins/cmp.lua332
-rw-r--r--.config/nvim/lua/plugins/colorscheme.lua344
-rw-r--r--.config/nvim/lua/plugins/dap.lua254
-rw-r--r--.config/nvim/lua/plugins/dashboard.lua90
-rw-r--r--.config/nvim/lua/plugins/fidget.lua34
-rw-r--r--.config/nvim/lua/plugins/fzf.lua60
-rw-r--r--.config/nvim/lua/plugins/gitsigns.lua47
-rw-r--r--.config/nvim/lua/plugins/goto-preview.lua18
-rw-r--r--.config/nvim/lua/plugins/hardtime.lua20
-rw-r--r--.config/nvim/lua/plugins/harpoon.lua34
-rw-r--r--.config/nvim/lua/plugins/heirline.lua1290
-rw-r--r--.config/nvim/lua/plugins/leetcode.lua68
-rw-r--r--.config/nvim/lua/plugins/loclist.lua18
-rw-r--r--.config/nvim/lua/plugins/lsp.lua440
-rw-r--r--.config/nvim/lua/plugins/messages.lua85
-rw-r--r--.config/nvim/lua/plugins/modify-blend.lua43
-rw-r--r--.config/nvim/lua/plugins/navic.lua50
-rw-r--r--.config/nvim/lua/plugins/neodev.lua29
-rw-r--r--.config/nvim/lua/plugins/neoscroll.lua21
-rw-r--r--.config/nvim/lua/plugins/neotest.lua11
-rw-r--r--.config/nvim/lua/plugins/notify.lua18
-rw-r--r--.config/nvim/lua/plugins/nvim-tree.lua403
-rw-r--r--.config/nvim/lua/plugins/overseer.lua1
-rw-r--r--.config/nvim/lua/plugins/quickfix.lua15
-rw-r--r--.config/nvim/lua/plugins/session.lua5
-rw-r--r--.config/nvim/lua/plugins/snippets.lua68
-rw-r--r--.config/nvim/lua/plugins/sniprun.lua57
-rw-r--r--.config/nvim/lua/plugins/statuscol.lua28
-rw-r--r--.config/nvim/lua/plugins/telescope.lua620
-rw-r--r--.config/nvim/lua/plugins/toggleterm.lua179
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua31
-rw-r--r--.config/nvim/lua/plugins/trouble.lua47
-rw-r--r--.config/nvim/lua/plugins/web-devicons.lua22
-rw-r--r--.config/nvim/lua/plugins/which-key.lua60
-rw-r--r--.config/nvim/lua/plugins/zen-mode.lua7
-rw-r--r--.config/nvim/lua/user/keys.lua449
-rw-r--r--.config/nvim/lua/user/mods.lua1059
-rw-r--r--.config/nvim/lua/user/opts.lua351
-rw-r--r--.config/nvim/lua/user/pack.lua378
-rw-r--r--.config/nvim/lua/user/view.lua69
-rw-r--r--.config/nvim/snippets/boilerplate.lua75
-rw-r--r--.config/nvim/snippets/lua.lua264
-rw-r--r--.config/nvim/snippets/markdown.lua58
-rw-r--r--common/config/alacritty/alacritty.yml (renamed from .config/alacritty/alacritty.yml)0
-rw-r--r--linux/home/.bashrc (renamed from .bashrc)0
-rw-r--r--linux/home/.zprofile (renamed from .zprofile)0
53 files changed, 0 insertions, 8100 deletions
diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore
deleted file mode 100644
index f6f2fa2..0000000
--- a/.config/nvim/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-plugin/packer_compiled.lua
-startup.log
-tmp
-*.log
diff --git a/.config/nvim/README.md b/.config/nvim/README.md
deleted file mode 100644
index 2849262..0000000
--- a/.config/nvim/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-## Neovim
-
-#### Dependencies
-
-nvm
-nvm install --lts
-
-#### TODOS:
-
-- [ ] Markdown filetype plugin or autocommand to add two spaces each line
-- [ ] Markdown filetype plugin or autocommand to make backtick auto-correct properly
-- [x] Indent by filetype/fix global indent (2)
-- [x] Check history or telescope history of last files edited or opened.
-- [ ] - Windows native support configuration
-- [ ] - Python debugger
-- [ ] README file heirachcy
-- [ ] Markdown snippet for code blocks with list, ie.- ``and -` `
-- [ ] Snippet for filler text with variations, ie. common sentences: The quick brown fox... and more and placeholder words
-- [ ] Configure snippets.lua
-- [ ] Documentation shortcuts for different languages quote in quote "locally" (preffered) or opening web browser
-- [ ] Dictionary, an actual dictionary
-- [ ] Null-ls/lsp keymap to check current buffer servers must check both same time
- > NOTE: Different servers must be configured only to one or another, research null-ls being archived
-- [ ] Don't highlight whitespaces in lazygit (maybe exclusively markdown)
-- [ ] Configure prettier/prettierd servers to join a lot of different files (null-ls)
-- [ ] Nvim-tree preview window similar to telescope
-- [x] Nvim-tree behaviour when delete current buffer
- > NOTE: One idea is to create an autocmd to make a blank window (hidden) as a secondary window but when creating a opening a new file it does not ask which split to open in
-- [ ] Nvim-tree conditionally when open going in the opposite direction will go back to nvim-tree ie. going right then goes to nvim-tree but is conditionally because of tmux etc...
-- [x] Substitute keybinding
-- [ ] Snippet/filetype plugin for markdown tick boxes
-- [ ] Delete lua/user/func.lua
-- [ ] Clean entire config by prioritizing single quotation marks over double
diff --git a/.config/nvim/after/ftplugin/markdown.lua b/.config/nvim/after/ftplugin/markdown.lua
deleted file mode 100644
index 718a871..0000000
--- a/.config/nvim/after/ftplugin/markdown.lua
+++ /dev/null
@@ -1,16 +0,0 @@
-vim.wo.spell = true
-vim.bo.spelllang = "en"
-vim.wo.wrap = true
-vim.wo.linebreak = true
-vim.wo.breakindent = true
-vim.wo.colorcolumn = "0"
-vim.wo.conceallevel = 3
-vim.opt.softtabstop = 2 -- Tab key indents by 2 spaces.
-vim.opt.shiftwidth = 2 -- >> indents by 2 spaces.
-
-vim.b[0].undo_ftplugin = "setlocal nospell nowrap nolinebreak nobreakindent conceallevel=0"
-
-vim.cmd([[
- autocmd FileType markdown iabbrev <buffer> `` ``
-]])
-
diff --git a/.config/nvim/autoload/utils.vim b/.config/nvim/autoload/utils.vim
deleted file mode 100644
index 23a9178..0000000
--- a/.config/nvim/autoload/utils.vim
+++ /dev/null
@@ -1,237 +0,0 @@
-" Toggle Zoom
-function! utils#ZoomToggle()
- if exists('t:zoomed') && t:zoomed
- execute t:zoom_winrestcmd
- let t:zoomed = 0
- else
- let t:zoom_winrestcmd = winrestcmd()
- resize
- vertical resize
- let t:zoomed = 1
- endif
-endfunction
-"command! ZoomToggle call ZoomToggle()
-
-
-"-------------------------------------------------
-
-" Toggle DiagnosticsOpenFloat
-function! utils#ToggleDiagnosticsOpenFloat()
- " Switch the toggle variable
- let g:DiagnosticsOpenFloat = !get(g:, 'DiagnosticsOpenFloat', 1)
-
- " Reset group
- augroup OpenFloat
- autocmd!
- augroup END
-
- " Enable if toggled on
- if g:DiagnosticsOpenFloat
- augroup OpenFloat
- autocmd! CursorHold * lua vim.diagnostic.open_float(nil, {focusable = false,})
- "autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focusable = false,})
- "autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focusable = false,}) print ("vim.diagnostic.open_float enabled...")
- augroup END
- endif
-endfunction
-"command! ToggleDiagonsticsOpenFloat call ToggleDiagnosticsOpenFloat()
-
-
-"-------------------------------------------------
-
-" Toggle transparency
-let t:is_transparent = 0
-function! utils#Toggle_transparent_background()
- if t:is_transparent == 0
- hi Normal guibg=#111111 ctermbg=black
- let t:is_transparent = 1
- else
- hi Normal guibg=NONE ctermbg=NONE
- let t:is_transparent = 0
- endif
-endfunction
-"nnoremap <leader>tb :call Toggle_transparent_background()<CR>
-
-
-"-------------------------------------------------
-
-" Toggle statusline
-let s:hidden_all = 0
-function! utils#ToggleHiddenAll()
- if s:hidden_all == 0
- let s:hidden_all = 1
- set noshowmode
- set noruler
- set laststatus=0
- set noshowcmd
- else
- let s:hidden_all = 0
- set showmode
- set ruler
- set laststatus=2
- set showcmd
- endif
-endfunction
-"nnoremap <S-h> :call ToggleHiddenAll()<CR>
-
-
-"-------------------------------------------------
-
-" Open last closed buffer
-function! OpenLastClosed()
- let last_buf = bufname('#')
- if empty(last_buf)
- echo "No recently closed buffer found"
- return
- endif
- let result = input("Open ". last_buf . " in (n)ormal (v)split, (t)ab or (s)plit ? (n/v/t/s) : ")
- if empty(result) || (result !=# 'v' && result !=# 't' && result !=# 's' && result !=# 'n')
- return
- endif
- if result ==# 't'
- execute 'tabnew'
- elseif result ==# 'v'
- execute "vsplit"
- elseif result ==# 's'
- execute "split"
- endif
- execute 'b ' . last_buf
-endfunction
-
-
-"-------------------------------------------------
-
-" Toggle Diff
-let g:diff_is_open = 0
-
-function! utils#ToggleDiff()
- if g:diff_is_open
- windo diffoff
- let g:diff_is_open = 0
- else
- windo diffthis
- let g:diff_is_open = 1
- endif
-endfunction
-
-
-"-------------------------------------------------
-
-" Verbose Toggle
-function! utils#VerboseToggle()
- if !&verbose
- set verbosefile=~/.config/nvim/verbose.log
- set verbose=15
- else
- set verbose=0
- set verbosefile=
- endif
-endfunction
-
-
-"-------------------------------------------------
-
-" Jump List
-function! utils#GotoJump()
- jumps
- let j = input("Please select your jump: ")
- if j != ''
- let pattern = '\v\c^\+'
- if j =~ pattern
- let j = substitute(j, pattern, '', 'g')
- execute "normal " . j . "\<c-i>"
- else
- execute "normal " . j . "\<c-o>"
- endif
- endif
-endfunction
-
-
-"-------------------------------------------------
-
-" Disable annoying auto line break
-fu! utils#DisableBr()
- set wrap
- set linebreak
- set nolist " list disables linebreak
- set textwidth=0
- set wrapmargin=0
- set formatoptions-=t
-endfu
-
-" Disable line breaks for all file types
-autocmd! BufNewFile,BufRead *.* call utils#DisableBr()
-
-
-"-------------------------------------------------
-
-" Annoying timestamp issue on write (The file has been changed since reading it...)
-"function! utils#ProcessFileChangedShell()
-" if v:fcs_reason == 'mode' || v:fcs_reason == 'time'
-" let v:fcs_choice = ''
-" else
-" let v:fcs_choice = 'ask'
-" endif
-"endfunction
-"autocmd FileChangedShell <buffer> call utils#ProcessFileChangedShell()
-"
-"let lastline = line('$')
-"let bufcontents = getline(1, lastline)
-"edit!
-"call setline(1, bufcontents)
-"if line('$') > lastline
-" execute lastline+1.',$:d _'
-"endif
-
-" Annoying timestamp issue on write (The file has been changed since reading it...)
-function! utils#ProcessFileChangedShell()
- if v:fcs_reason == 'mode' || v:fcs_reason == 'time'
- let v:fcs_choice = ''
- else
- let v:fcs_choice = 'ask'
- endif
-endfunction
-
-" Triggered when the file is changed externally
-autocmd FileChangedShell <buffer> call utils#ProcessFileChangedShell()
-
-" Triggered before writing the buffer to the file
-autocmd BufWritePre <buffer> call utils#BeforeWrite()
-
-function! utils#BeforeWrite()
- let lastline = line('$')
- let bufcontents = getline(1, lastline)
- edit!
- call setline(1, bufcontents)
- if line('$') > lastline
- execute lastline+1.',$:d _'
- endif
-endfunction
-
-
-"-------------------------------------------------
-
-" On The Fly Table mode
-function! s:isAtStartOfLine(mapping)
- let text_before_cursor = getline('.')[0 : col('.')-1]
- let mapping_pattern = '\V' . escape(a:mapping, '\')
- let comment_pattern = '\V' . escape(substitute(&l:commentstring, '%s.*$', '', ''), '\')
- return (text_before_cursor =~? '^' . ('\v(' . comment_pattern . '\v)?') . '\s*\v' . mapping_pattern . '\v$')
-endfunction
-
-
-"-------------------------------------------------
-
-" :Rename {newname}
-function! utils#RenameFile()
- let old_name = expand('%')
- let new_name = input('New file name: ', expand('%'), 'file')
- if new_name != '' && new_name != old_name
- exec ':saveas ' . new_name
- exec ':silent !rm ' . old_name
- redraw!
- endif
-endfunction
-
-
-"-------------------------------------------------
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
deleted file mode 100644
index 30adcac..0000000
--- a/.config/nvim/init.lua
+++ /dev/null
@@ -1,146 +0,0 @@
---[[
- ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗
- ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║
- ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║
- ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║
- ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║
- ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
- " ------------------------------------------------
- Author: srdusr
- Email: trevorgray@srdusr.com
- Url: https://github.com/srdusr/nvim.git
- ------------------------------------------------ "
---]]
---[[init.]]
--- ========================================================================== --
--- == DEPENDENCIES == --
--- ========================================================================== --
-
--- ripgrep - https://github.com/BurntSushi/ripgrep
--- fd - https://github.com/sharkdp/fd
--- git - https://git-scm.com/
--- make - https://www.gnu.org/software/make/
--- c compiler - gcc or tcc or zig
-
--- -------------------------------------------------------------------------- --
-
--- ================================== --
--- == Install neovim-nightly == --
--- ================================== --
-
--- Download nvim-linux64.tar.gz:
---$ curl -L -o nvim-linux64.tar.gz https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz
--- Extract:
---$ tar xzvf nvim-linux64.tar.gz --install-dir=/bin
--- Run:
---$ ./nvim-linux64/bin/nvim
-
--- ---------------------------------- --
-
--- Initialize config with this one liner in the terminal
---$ nvim --headless -c 'call mkdir(stdpath("config"), "p") | exe "edit" stdpath("config") . "/init.lua" | write | quit'
-
--- Command to see startup time
---$ nvim --startuptime startup.log -c exit && tail -100 startup.log
-
--- Load impatient (Faster loading times)
-local impatient_ok, impatient = pcall(require, 'impatient')
-if impatient_ok then
- impatient.enable_profile()
-end
-
--- Schedule reading shadafile to improve the startup time
-vim.opt.shadafile = 'NONE'
-vim.schedule(function()
- vim.opt.shadafile = ''
- vim.cmd('silent! rsh')
-end)
-
--- Load/reload modules
-local modules = {
- 'user.pack', -- Packer plugin manager
- 'user.opts', -- Options
- 'user.keys', -- Keymaps
- 'user.mods', -- Modules/functions
- 'user.view', -- Colorscheme/UI
- 'plugins.web-devicons',
- 'plugins.treesitter',
- 'plugins.neodev',
- 'plugins.telescope',
- 'plugins.nvim-tree',
- 'plugins.lsp',
- 'plugins.cmp',
- 'plugins.quickfix',
- --"plugins.snippets",
- --"plugins.colorizer",
- --"plugins.prettier",
- --"plugins.git",
- --"plugins.fugitive",
- 'plugins.gitsigns',
- 'plugins.sniprun',
- 'plugins.session',
- 'plugins.neoscroll',
- 'plugins.statuscol',
- 'plugins.trouble',
- 'plugins.goto-preview',
- 'plugins.autopairs',
- 'plugins.navic',
- 'plugins.toggleterm',
- 'plugins.zen-mode',
- 'plugins.fidget',
- 'plugins.dap',
- 'plugins.neotest',
- 'plugins.heirline',
- 'plugins.dashboard',
- 'plugins.which-key',
- 'plugins.harpoon',
- 'plugins.leetcode',
- 'plugins.hardtime',
- 'plugins.notify',
- 'plugins.overseer',
- --"plugins.modify-blend",
-}
-
--- Refresh module cache
-for k, v in pairs(modules) do
- package.loaded[v] = nil
- require(v)
-end
-
--- Improve speed by disabling some default plugins/modules
-local builtins = {
- 'gzip',
- 'zip',
- 'zipPlugin',
- 'tar',
- 'tarPlugin',
- 'getscript',
- 'getscriptPlugin',
- 'vimball',
- 'vimballPlugin',
- '2html_plugin',
- --"matchit",
- --"matchparen",
- 'logiPat',
- 'rrhelper',
- 'netrw',
- 'netrwPlugin',
- 'netrwSettings',
- 'netrwFileHandlers',
- 'tutor_mode_plugin',
- 'fzf',
- 'spellfile_plugin',
- 'sleuth',
-}
-
-for _, plugin in ipairs(builtins) do
- vim.g['loaded_' .. plugin] = 1
-end
-vim.g.do_filetype_lua = 1
-vim.g.did_load_filetypes = 0
-
--- Snippets
---vim.g.snippets = 'luasnip'
-
--- Notifications
-vim.notify = require('notify') -- Requires plugin "rcarriga/nvim-notify"
diff --git a/.config/nvim/lua/plugins/autopairs.lua b/.config/nvim/lua/plugins/autopairs.lua
deleted file mode 100644
index 90c6d35..0000000
--- a/.config/nvim/lua/plugins/autopairs.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-local status_ok, npairs = pcall(require, "nvim-autopairs")
-if not status_ok then
- return
-end
-
-npairs.setup {
- check_ts = true,
- ts_config = {
- lua = { "string", "source" },
- javascript = { "string", "template_string" },
- java = false,
- },
- map = "<M-e>",
- pairs_map = {
-['<'] = '>',
-},
- disable_filetype = { "TelescopePrompt", "spectre_panel" },
- disable_in_macro = true,
- disable_in_visualblock = true,
- enable_moveright = true,
- enable_afterquote = true, -- add bracket pairs after quote
- enable_check_bracket_line = false, --- check bracket in same line
- enable_bracket_in_quote = true, --
- break_undo = true, -- switch for basic rule break undo sequence
- fast_wrap = {
- chars = { "{", "[", "(", '"', "'" },
- pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""),
- offset = 0, -- Offset from pattern match
- end_key = "$",
- keys = "qwertyuiopzxcvbnmasdfghjkl",
- check_comma = true,
- highlight = "PmenuSel",
- highlight_grey = "LineNr",
- },
-}
-
-local cmp_autopairs = require "nvim-autopairs.completion.cmp"
-local cmp_status_ok, cmp = pcall(require, "cmp")
-if not cmp_status_ok then
- return
-end
-cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done { map_char = { tex = "" } })
diff --git a/.config/nvim/lua/plugins/cmp-gh-source.lua b/.config/nvim/lua/plugins/cmp-gh-source.lua
deleted file mode 100644
index 4990c35..0000000
--- a/.config/nvim/lua/plugins/cmp-gh-source.lua
+++ /dev/null
@@ -1,70 +0,0 @@
-local ok, Job = pcall(require, 'plenary.job')
-if not ok then
- return
-end
-
-local source = {}
-
-source.new = function()
- local self = setmetatable({ cache = {} }, { __index = source })
-
- return self
-end
-
-source.complete = function(self, _, callback)
- local bufnr = vim.api.nvim_get_current_buf()
-
- -- This just makes sure that we only hit the GH API once per session.
- --
- -- You could remove this if you wanted, but this just makes it so we're
- -- good programming citizens.
- if not self.cache[bufnr] then
- Job:new({
- -- Uses `gh` executable to request the issues from the remote repository.
- 'gh',
- 'issue',
- 'list',
- '--limit',
- '1000',
- '--json',
- 'title,number,body',
-
- on_exit = function(job)
- local result = job:result()
- local ok, parsed = pcall(vim.json.decode, table.concat(result, ''))
- if not ok then
- vim.notify('Failed to parse gh result')
- return
- end
-
- local items = {}
- for _, gh_item in ipairs(parsed) do
- gh_item.body = string.gsub(gh_item.body or '', '\r', '')
-
- table.insert(items, {
- label = string.format('#%s', gh_item.number),
- documentation = {
- kind = 'markdown',
- value = string.format('# %s\n\n%s', gh_item.title, gh_item.body),
- },
- })
- end
-
- callback({ items = items, isIncomplete = false })
- self.cache[bufnr] = items
- end,
- }):start()
- else
- callback({ items = self.cache[bufnr], isIncomplete = false })
- end
-end
-
-source.get_trigger_characters = function()
- return { '#' }
-end
-
-source.is_available = function()
- return vim.bo.filetype == 'gitcommit'
-end
-
-require('cmp').register_source('gh_issues', source.new())
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
deleted file mode 100644
index edf57de..0000000
--- a/.config/nvim/lua/plugins/cmp.lua
+++ /dev/null
@@ -1,332 +0,0 @@
-
--- Setup nvim-cmp.
-vim.opt.completeopt = "menu,menuone,noselect"
---vim.g.completeopt = "menu,menuone,noselect,noinsert"
-local cmp_status_ok, cmp = pcall(require, "cmp")
-if not cmp_status_ok then
- return
-end
---local WIDE_HEIGHT = 40
-
-local opts = {
- -- whether to highlight the currently hovered symbol
- -- disable if your cpu usage is higher than you want it
- -- or you just hate the highlight
- -- default: true
- highlight_hovered_item = true,
- show_guides = true,
-}
-require("symbols-outline").setup(opts)
-
-
---local snippets_paths = function()
--- local plugins = { "friendly-snippets" }
--- local paths = {}
--- local path
--- local root_path = vim.env.HOME .. "/.vim/plugged/"
--- for _, plug in ipairs(plugins) do
--- path = root_path .. plug
--- if vim.fn.isdirectory(path) ~= 0 then
--- table.insert(paths, path)
--- end
--- end
--- return paths
---end
---
---require("luasnip.loaders.from_vscode").lazy_load({
--- paths = snippets_paths(),
--- include = nil, -- Load all languages
--- exclude = {},
---})
-
---require("luasnip.loaders.from_vscode").lazy_load()
-local lspkind = require("lspkind")
-local kind_icons = {
- Text = "",
- Method = "m", --"",
- Function = "",
- Constructor = "", --"⚙️",
- Field = "",
- Variable = "",
- Class = "ﴯ",
- Interface = "",
- Module = "",
- Property = "",
- Unit = "",
- Value = "",
- Enum = "",
- Keyword = "",
- Snippet = "",
- Color = "",
- File = "",
- Reference = "",
- Folder = "",
- EnumMember = "",
- Constant = "",
- Struct = "",
- Event = "",
- Operator = "",
- TypeParameter = "",
-}
-cmp.setup({
- snippet = {
- --expand = function(args)
- -- require("luasnip").lsp_expand(args.body)
- --end,
- expand = function(args)
- local luasnip = require("luasnip")
- if not luasnip then
- return
- end
- luasnip.lsp_expand(args.body)
- end,
- },
- mapping = cmp.mapping.preset.insert({
--- ["<CR>"] = cmp.mapping.confirm({
--- behavior = cmp.ConfirmBehavior.Replace,
--- select = true,
--- }),
- --["<C-k>"] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 'c' }),
- --["<C-j>"] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 'c' }),
- ['<C-y>'] = cmp.mapping.confirm({ select = true }),
- --["<C-e>"] = cmp.mapping.close(),
- --['<C-e>'] = cmp.mapping({
- -- i = cmp.mapping.abort(),
- -- c = cmp.mapping.close(),
- --}),
- ["<C-e>"] = cmp.mapping({
- i = function()
- if cmp.visible() then
- cmp.abort()
- require("user.mods").toggle_completion()
- require("notify")("completion off")
- else
- cmp.complete()
- require("user.mods").toggle_completion()
- require("notify")("completion on")
- end
- end,
- }),
- --["<CR>"] = cmp.mapping({
- -- i = function(fallback)
- -- if cmp.visible() then
- -- cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false })
- -- require("user.mods").toggle_completion()
- -- else
- -- fallback()
- -- end
- -- end,
- --}),
-
--- ["<C-e>"] = cmp.mapping({
--- i = function()
--- if cmp.visible() then
--- require("notify")("visible")
--- cmp.abort()
--- else
--- require("notify")("not visible")
--- cmp.complete()
--- end
--- end,
--- c = function()
--- if cmp.visible() then
--- require("notify")("visible")
--- cmp.close()
--- else
--- require("notify")("not visible")
--- cmp.complete()
--- end
--- end,
--- }),
- --['<CR>'] = cmp.config.disable,
- ["<C-u>"] = cmp.mapping.scroll_docs(-4),
- ["<C-d>"] = cmp.mapping.scroll_docs(4),
- ["<C-Space>"] = cmp.mapping.complete(),
- --['<C-o>'] = function(fallback)
- -- if cmp.visible() then
- -- cmp.mapping.confirm({ select = true })(fallback)
- -- else
- -- cmp.mapping.complete()(fallback)
- -- end
- --end
- }),
-
- sources = cmp.config.sources({
- --{ name = "nvim_lua" },
- { name = "luasnip" },
- --{ name = 'luasnip', option = { use_show_condition = false } },
- { name = "gh_issues" },
- { name = "nvim_lsp", max_item_count = 6 },
- { name = "nvim_lua" },
- --{ name = "luasnip" },
- --{ name = "luasnip", keyword_length = 4 },
- --{ name = "buffer", keyword_length = 3 },
- { name = "path" },
- { name = "buffer", max_item_count = 6 },
- --{ name = "buffer", option = { get_bufnrs = function()
- -- return vim.api.nvim_list_bufs()
- --end
- --}},
- { name = "cmp_git"},
- { name = "spell"},
- { name = "zsh" },
- { name = "treesitter" },
- { name = "calc" },
- { name = "nvim_lsp_signature_help" },
- --{ name = "cmdline" },
- --{ name = 'treesitter' },
- --{ name = "cmdline", keyword_pattern = [=[[^[:blank:]\!]*]=] }, --exclamation mark hangs a bit without this
- --{name = 'luasnip', keyword_length = 2},
- }),
- formatting = {
- --formatting = {
- --local icons = kind_icons
- --format = function(entry, vim_item)
- ----vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
- ----vim_item.kind = lspkind.presets.default[vim_item.kind]
- --vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind
- ----vim_item.kind = string.format("%s %s", icons[vim_item.kind], vim_item.kind)
- --vim_item.menu = ({
- ----nvim_lsp = "LSP",
- ----luasnip = "snip",
- ----buffer = "buf",
- ----path = "path",
- ----cmdline = "cmd",
- --buffer = "[buf]",
- --nvim_lsp = "[LSP]",
- --nvim_lua = "[api]",
- --path = "[path]",
- --luasnip = "[snip]",
- --cmdline = "[cmd]",
- --gh_issues = "[issues]",
- --})[entry.source.name]
- --return vim_item
- --end,
- format = lspkind.cmp_format {
- with_text = true,
- menu = {
- nvim_lsp = "[LSP]",
- luasnip = "[snip]",
- buffer = "[buf]",
- nvim_lua = "[api]",
- path = "[path]",
- gh_issues = "[issues]",
- spell = "[spell]",
- zsh = "[zsh]",
- treesitter = "[treesitter]",
- calc = "[calc]",
- nvim_lsp_signature_help = "[signature]",
- cmdline = "[cmd]"
-
- },
- },
- --},
-
- --
- --
- --fields = { "abbr", "kind", "menu" },
- -- format = lspkind.cmp_format({
- -- mode = 'symbol_text', -- show only symbol annotations
- -- maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
- -- })
- --format = require('lspkind').cmp_format {
- -- with_text = true,
- -- menu = {
- -- luasnip = "Snip",
- -- buffer = "Buf",
- -- nvim_lsp = "LSP",
- -- path = "Path",
- -- cmdline = "Cmd",
- -- cmp_git = "Git",
- -- },
- --},
- },
- --format = function(entry, vim_item)
- -- -- Kind icons
- -- --vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
- -- vim_item.kind = lspkind.presets.default[vim_item.kind]
- -- -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind
- -- vim_item.menu = ({
- -- nvim_lsp = "LSP",
- -- luasnip = "Snip",
- -- buffer = "Buf",
- -- path = "Path",
- -- cmdline = "Cmd",
- -- })[entry.source.name]
- -- return vim_item
- --end,
- confirm_opts = {
- behavior = cmp.ConfirmBehavior.Replace,
- select = false,
- },
-
-
- event = {},
-
- experimental = {
- ghost_text = true, -- this feature conflicts with copilot.vim's preview.
- hl_group = 'Nontext',
- --native_menu = false,
- },
-
- view = {
- entries = { name = 'custom', selection_order = 'top_down' },
- },
-
- window = {
- --completion = cmp.config.window.bordered(),
- completion = {
- border = { '', '', '', ' ', '', '', '', ' ' },
- --border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" },
- --border = { '', '', '', '', '', '', '', '' },
- --border = "CmpBorder",
- winhighlight = 'Normal:Pmenu,FloatBorder:Pmenu,CursorLine:PmenuSel,Search:None',
- --winhighlight = "Normal:CmpPmenu,CursorLine:PmenuSel,Search:None",
- },
- --documentation = cmp.config.window.bordered(),
- documentation = {
- --max_height = math.floor(WIDE_HEIGHT * (WIDE_HEIGHT / vim.o.lines)),
- --max_width = math.floor((WIDE_HEIGHT * 2) * (vim.o.columns / (WIDE_HEIGHT * 2 * 16 / 9))),
- border = { '', '', '', ' ', '', '', '', ' ' },
- --border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" },
- winhighlight = 'FloatBorder:NormalFloat',
- },
- },
-})
-
-
-cmp.setup.cmdline({ '/', '?' }, {
- mapping = cmp.mapping.preset.cmdline(),
- sources = {
- { name = "buffer" },
- },
-})
-
-cmp.setup.cmdline(":", {
- mapping = {
- ["<C-p>"] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 'c' }),
- ["<C-n>"] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 'c' }),
- ["<C-y>"] = cmp.mapping(cmp.mapping.confirm({ select = true }), { 'i', 'c' }),
- ["<C-e>"] = cmp.mapping(cmp.mapping.close(), { 'i', 'c' }),
- ["<C-u>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
- ["<C-d>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
- ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
- --["<C-k>"] = cmp.mapping.select_prev_item(),
- --["<C-j>"] = cmp.mapping.select_next_item(),
- --['<C-y>'] = cmp.mapping.confirm({ select = true }),
- --["<C-e>"] = cmp.mapping.close(),
- ----['<CR>'] = cmp.config.disable,
- --["<C-u>"] = cmp.mapping.scroll_docs(-4),
- --["<C-d>"] = cmp.mapping.scroll_docs(4),
- --["<C-Space>"] = cmp.mapping.complete(),
- },
-
- sources = cmp.config.sources({
- { name = "path" },
- }, {
- --{ name = "cmdline" },
- { name = "cmdline", keyword_pattern = [=[[^[:blank:]\!]*]=], keyword_length = 3 },
- })
-})
-
-
diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua
deleted file mode 100644
index be78ac8..0000000
--- a/.config/nvim/lua/plugins/colorscheme.lua
+++ /dev/null
@@ -1,344 +0,0 @@
---local function MyHighlights()
--- vim.cmd('highlight Visual cterm=NONE ctermbg=76 ctermfg=16 gui=NONE guibg=#5fd700 guifg=#000000')
--- vim.cmd('highlight StatusLine cterm=NONE ctermbg=231 ctermfg=160 gui=NONE guibg=#ffffff guifg=#d70000')
--- vim.cmd('highlight Normal cterm=NONE ctermbg=17 gui=NONE guibg=#00005f')
--- vim.cmd('highlight NonText cterm=NONE ctermbg=17 gui=NONE guibg=#00005f')
---end
---
---local function setupMyColors()
--- vim.cmd('augroup MyColors')
--- vim.cmd('autocmd!')
--- vim.cmd('autocmd ColorScheme * call v:lua.MyHighlights()')
--- vim.cmd('augroup END')
---end
---
---setupMyColors()
-
---vim.api.nvim_command("highlight FoldColumn guibg=none")
-
---vim.api.nvim_command("highlight SignColumn guifg=none guibg=none cterm=NONE ctermfg=none ctermbg=NONE gui=NONE")
---vim.api.nvim_command("highlight ColorColumn guifg=none guibg=none cterm=NONE ctermfg=none ctermbg=NONE gui=NONE")
---vim.api.nvim_command("highlight TabLineSel guibg=none guifg=none gui=bold")
---vim.api.nvim_command("highlight TabLineNC guibg=none gui=bold")
---vim.api.nvim_command("highlight StatusLine guibg=#333842 gui=bold")
---vim.api.nvim_command("highlight StatusLineNC guibg=none ctermfg=Cyan guifg=#80a0ff gui=bold")
-
--- Custom colorscheme
---vim.cmd([[
--- let g:terminal_color_0 = '#2e3436'
--- let g:terminal_color_1 = '#cc0000'
--- let g:terminal_color_2 = '#4e9a06'
--- let g:terminal_color_3 = '#c4a000'
--- let g:terminal_color_4 = '#3465a4'
--- let g:terminal_color_5 = '#75507b'
--- let g:terminal_color_6 = '#0b939b'
--- let g:terminal_color_7 = '#d3d7cf'
--- let g:terminal_color_8 = '#555753'
--- let g:terminal_color_9 = '#ef2929'
--- let g:terminal_color_10 = '#8ae234'
--- let g:terminal_color_11 = '#fce94f'
--- let g:terminal_color_12 = '#729fcf'
--- let g:terminal_color_13 = '#ad7fa8'
--- let g:terminal_color_14 = '#00f5e9'
--- let g:terminal_color_15 = '#eeeeec'
---
--- set background=dark
--- execute "silent! colorscheme base16-eighties"
--- highlight Comment guifg=#585858
--- highlight Normal guifg=#999999
--- "highlight TabLine guifg=#333333 guibg=#777777
--- "highlight TabLineSel guifg=#FA7F7F
--- highlight MatchParen gui=bold guibg=black guifg=limegreen
---]])
---local colors = {
--- background = '#1c1c1c',
--- foreground = '#cacaca',
--- accent = '#fe5186',
--- blue = '#61afef',
--- cyan = '#3e8fb0',
--- dark_green = '#5faf5f',
--- dark_grey = '#222222',
--- dark_orange = '#ff5d62',
--- dark_red = '#bf1131',
--- dark_yellow = '#ffaf00',
--- green = '#98c379',
--- grey = '#2a2a2a',
--- light_grey = '#727169',
--- light_orange = '#ffa066',
--- light_pink = '#e46876',
--- light_yellow = '#e6db74',
--- magenta = '#c678dd',
--- orange = '#ff8700',
--- purple = '#af87d7',
--- red = '#c4384b',
--- violet = '#a9a1e1',
--- white = '#e3e3e3',
--- yellow = '#d7af5f',
---}
----- Base highlights to override themes to my preferences
---local base = {
--- CursorLine = { bg = 'none', fg = 'none' },
--- -- Avoid changing the foreground color from the main theme
--- MatchParen = { fg = colors.accent, bg = 'none', bold = true },
--- Visual = { bg = colors.grey, fg = 'none' },
--- ActionPreviewBorder = { link = 'XMenuBorder' },
--- ActionPreviewNormal = { link = 'XMenu' },
--- CallHierarchyBorder = { link = 'XMenuBorder' },
--- CallHierarchyNormal = { link = 'XMenu' },
--- CodeActionBorder = { link = 'XMenuBorder' },
--- CodeActionNormal = { link = 'XMenu' },
--- DefinitionBorder = { link = 'XMenuBorder' },
--- DefinitionNormal = { link = 'XMenu' },
--- EndOfBuffer = { fg = colors.background },
--- FinderBorder = { link = 'XMenuBorder' },
--- FinderNormal = { link = 'XMenu' },
--- FloatBorder = { link = 'XMenuBorder' },
--- FloatNormal = { link = 'XMenu' },
--- HoverBorder = { link = 'XMenuBorder' },
--- HoverNormal = { link = 'XMenu' },
--- NormalFloat = { link = 'XMenu' },
--- OutlinePreviewBorder = { link = 'XMenuBorder' },
--- OutlinePreviewNormal = { link = 'XMenu' },
--- Pmenu = { link = 'XMenu' },
--- RenameBorder = { link = 'XMenuBorder' },
--- RenameNormal = { link = 'XMenu' },
--- TerminalBorder = { link = 'XMenuBorder' },
--- TerminalNormal = { link = 'XMenu' },
--- Todo = { fg = colors.orange, bold = true },
--- SagaNormal = { link = 'XMenu' },
--- SagaBorder = { link = 'XMenuBorder' },
--- StatusLine = { bg = colors.background, fg = colors.foreground },
--- TitleString = { link = 'XMenu' },
--- TitleIcon = { link = 'XMenu' },
--- ActionPreviewTitle = { link = 'XMenu' },
--- -- Mason
--- MasonHeader = { link = 'XMenu' },
--- MasonNormal = { link = 'XMenu' },
--- NvimTreeCursorColumn = { bg = 'none', fg = 'none' },
--- --NvimTreeCursorLine = { bg = colors.dark_grey, fg = colors.accent },
--- -- Telescope
--- TelescopeBorder = { link = 'XMenuBorder' },
--- TelescopePromptBorder = { link = 'XMenuBorder' },
--- TelescopePromptNormal = { link = 'XMenu', fg = colors.foreground },
--- TelescopePromptPrefix = { link = 'XMenu', fg = colors.foreground },
--- TelescopeNormal = { bg = colors.background },
--- TelescopePreviewBorder = { link = 'XMenuBorder' },
--- TelescopePreviewNormal = { link = 'XMenu', fg = colors.foreground },
--- TelescopePreviewTitle = { fg = colors.background, bg = colors.light_orange },
--- TelescopePreviewLine = { fg = colors.background, bg = colors.orange },
--- TelescopePromptTitle = { fg = colors.background, bg = colors.light_orange },
--- TelescopeResultsTitle = { fg = colors.background, bg = colors.light_orange },
--- TelescopeResultsBorder = { link = 'XMenuBorder' },
--- TelescopeResultsNormal = { link = 'XMenu' },
---}
---
---local theme = {
--- -- Transparent background
--- Conceal = { bg = 'none', fg = colors.foreground },
--- FoldCoumn = { bg = 'none' },
--- LineNr = { bg = 'none', fg = colors.grey },
--- MsgArea = { bg = 'none', fg = colors.foreground },
--- NonText = { bg = 'none', fg = colors.light_grey },
--- Normal = { bg = 'none', fg = colors.foreground },
--- NormalNC = { bg = 'none', fg = colors.foreground },
--- SignColumn = { bg = 'none' },
--- WinSeparator = { bg = 'none', fg = colors.grey },
--- -- Language Syntax
--- Boolean = { fg = colors.grey },
--- Character = { fg = colors.yellow },
--- Comment = { fg = colors.light_grey },
--- Conditional = { fg = colors.blue },
--- Constant = { fg = colors.grey },
--- Debug = { fg = colors.green },
--- Define = { fg = colors.green },
--- Delimiter = { fg = colors.grey },
--- Error = { fg = colors.red },
--- Exception = { fg = colors.dark_orange },
--- Float = { fg = colors.light_pink },
--- Function = { fg = colors.foreground },
--- Identifier = { fg = colors.foreground },
--- Ignore = { fg = colors.light_grey },
--- Include = { fg = colors.dark_orange },
--- Keyword = { fg = colors.blue },
--- Label = { fg = colors.grey },
--- Macro = { fg = colors.dark_orange },
--- Number = { fg = colors.light_pink },
--- Operator = { fg = colors.purple },
--- PreCondit = { fg = colors.dark_orange },
--- PreProc = { fg = colors.dark_orange },
--- Repeat = { fg = colors.blue },
--- Special = { fg = colors.dark_orange },
--- SpecialChar = { fg = colors.dark_orange },
--- SpecialComment = { fg = colors.orange },
--- Statement = { fg = colors.blue },
--- StorageClass = { fg = colors.light_orange },
--- String = { fg = colors.yellow },
--- Structure = { fg = colors.light_orange },
--- Tag = { fg = colors.orange },
--- Todo = { fg = colors.orange, bold = true },
--- Type = { fg = colors.light_orange },
--- Typedef = { fg = colors.foreground },
--- Underlined = { fg = colors.foreground },
--- -- Rest
--- ColorColumn = { bg = colors.dark_grey },
--- Cursor = { bg = colors.accent },
--- CursorColumn = { bg = 'none', fg = colors.accent },
--- CursorLine = { bg = 'none', fg = 'none' },
--- CursorLineNr = { bg = 'none', fg = colors.light_pink },
--- Directory = { fg = colors.cyan, bold = true },
--- ErrorMsg = { bg = 'none', fg = colors.red },
--- IncSearch = { bg = colors.accent, fg = colors.foreground },
--- MatchParen = { fg = colors.accent, bg = 'none', bold = true },
--- Search = { bg = colors.accent },
--- SpellBad = { bg = 'none', fg = 'none', undercurl = true, ctermbg = 'none', ctermfg = 'none' },
--- SpellLocal = { bg = 'none', fg = 'none', undercurl = true, ctermbg = 'none', ctermfg = 'none' },
--- SpellRare = { bg = 'none', fg = 'none', undercurl = true, ctermbg = 'none', ctermfg = 'none' },
--- StatusLine = { fg = colors.foreground, bg = 'none' },
--- StatusLineNC = { fg = 'none', bg = 'none' },
--- Title = { fg = colors.blue, bg = '', bold = true },
--- VertSplit = { bg = 'none', fg = colors.grey },
--- Visual = { bg = colors.grey, fg = 'none' },
--- -- Diagnostic
--- DiagnosticBorder = { link = 'XMenuBorder' },
--- DiagnosticNormal = { link = 'XMenu' },
--- DiagnosticError = { fg = colors.red },
--- DiagnosticFloatingError = { link = 'XMenu' },
--- DiagnosticFloatingHint = { link = 'XMenu' },
--- DiagnosticFloatingInfo = { link = 'XMenu' },
--- DiagnosticFloatingWarn = { link = 'XMenu' },
--- DiagnosticSignHint = { fg = colors.grey, bold = true, bg = 'none' },
--- DiagnosticUnderlineError = { undercurl = true },
--- DiagnosticVirtualTextHint = { bg = 'none' },
--- DiagnosticWarn = { fg = colors.yellow },
--- -- nvim cmp
--- CmpItemAbbr = { fg = colors.foreground },
--- CmpItemAbbrMatch = { fg = colors.dark_orange },
--- CmpItemAbbrMatchFuzzy = { fg = colors.dark_orange },
--- CmpBorder = { link = 'FloatBorder' },
--- CmpDocBorder = { link = 'FloatBorder' },
--- CmpItemMenuDefault = { link = 'NormalFloat' },
--- CmpMenu = { link = 'NormalFloat' },
--- -- cmp item kinds
--- CmpItemKindConstant = { fg = colors.light_pink },
--- CmpItemKindFunction = { fg = colors.blue },
--- CmpItemKindIdentifier = { fg = colors.purple },
--- CmpItemKindField = { fg = colors.dark_orange },
--- CmpItemKindVariable = { fg = colors.purple },
--- CmpItemKindSnippet = { fg = colors.light_pink },
--- CmpItemKindText = { fg = colors.foreground },
--- CmpItemKindStructure = { fg = colors.blue },
--- CmpItemKindType = { fg = colors.orange },
--- CmpItemKindKeyword = { fg = colors.blue },
--- CmpItemKindMethod = { fg = colors.purple },
--- CmpItemKindConstructor = { fg = colors.blue },
--- CmpItemKindFolder = { fg = colors.blue },
--- CmpItemKindModule = { fg = colors.dark_orange },
--- CmpItemKindProperty = { fg = colors.dark_orange },
--- CmpItemKindEnum = { fg = colors.blue },
--- CmpItemKindUnit = { fg = colors.green },
--- CmpItemKindClass = { fg = colors.blue },
--- CmpItemKindFile = { fg = colors.blue },
--- CmpItemKindInterface = { fg = colors.blue },
--- CmpItemKindColor = { fg = colors.yellow },
--- CmpItemKindReference = { fg = colors.blue },
--- CmpItemKindEnumMember = { fg = colors.green },
--- CmpItemKindStruct = { fg = colors.blue },
--- -- CmpItemKindValue = { fg = "" },
--- -- CmpItemKindEvent = { fg = "" },
--- CmpItemKindOperator = { fg = colors.purple },
--- CmpItemKindTypeParameter = { fg = colors.light_pink },
--- CmpItemKindCopilot = { fg = colors.green },
--- -- LSPSaga
--- OutlinePreviewBorder = { link = 'NormalFloat' },
--- OutlinePreviewNormal = { link = 'FloatBorder' },
--- -- Diffview
--- DiffViewSignColumn = { bg = 'none' },
--- -- Treesitter
--- -- ['@string'] = { fg = colors.yellow, bg = '' },
--- ['@boolean'] = { fg = colors.dark_yellow },
--- ['@character'] = { fg = colors.foreground },
--- ['@character.special'] = { fg = colors.dark_orange },
--- ['@comment'] = { link = 'Comment' },
--- ['@conditional'] = { fg = colors.blue },
--- ['@constant'] = { fg = colors.foreground },
--- ['@constant.builtin'] = { fg = colors.dark_yellow },
--- ['@constant.macro'] = { fg = colors.dark_orange },
--- ['@constructor'] = { fg = colors.blue },
--- ['@debug'] = { link = 'Debug' },
--- ['@define'] = { link = "Define" },
--- ['@exception'] = { fg = colors.dark_orange },
--- ['@field'] = { link = 'Identifier' },
--- ['@field.yaml'] = { fg = colors.light_orange },
--- ['@float'] = { fg = colors.light_pink },
--- ['@function'] = { link = 'Function' },
--- ['@function.builtin'] = { fg = colors.dark_green },
--- ['@function.macro'] = { fg = colors.dark_orange },
--- ['@include'] = { fg = colors.dark_orange },
--- ['@keyword'] = { link = 'Keyword' },
--- ['@keyword.operator'] = { fg = colors.purple },
--- ['@keyword.return'] = { fg = colors.dark_orange },
--- ['@label'] = { fg = colors.blue },
--- ['@macro'] = { fg = colors.dark_orange },
--- ['@method'] = { fg = colors.foreground },
--- ['@namespace'] = { fg = colors.foreground },
--- ['@number'] = { link = 'Number' },
--- ['@operator'] = { link = 'Operator' },
--- ['@parameter'] = { fg = colors.foreground },
--- ['@preproc'] = { link = 'PreProc' },
--- ['@property'] = { fg = colors.foreground },
--- ['@punctuation.Special'] = { fg = colors.purple },
--- ['@punctuation.bracket'] = { fg = colors.purple },
--- ['@punctuation.delimiter'] = { fg = colors.purple },
--- ['@repeat'] = { link = 'Repeat' },
--- ['@storageclass'] = { link = 'StorageClass' },
--- ['@string.escape'] = { fg = colors.dark_orange },
--- ['@string.regex'] = { fg = colors.green },
--- ['@string.special'] = { fg = colors.dark_orange },
--- ['@structure'] = { link = 'Structure' },
--- ['@tag'] = { link = 'Tag' },
--- ['@tag.attribute'] = { fg = colors.foreground },
--- ['@tag.delimiter'] = { fg = colors.purple },
--- ['@text.danger'] = { fg = colors.dark_orange },
--- ['@text.literal'] = { link = 'String' },
--- ['@text.reference'] = { fg = colors.green },
--- ['@text.strong'] = { bold = true },
--- ['@text.title'] = { link = 'Title' },
--- ['@text.todo'] = { link = 'Todo' },
--- ['@text.underline'] = { link = 'Underlined' },
--- ['@text.uri'] = { fg = colors.blue },
--- ['@text.warning'] = { link = 'Todo' },
--- ['@type'] = { link = 'Type' },
--- ['@type.definition'] = { link = 'Typedef' },
--- ['@variable'] = { fg = colors.foreground },
--- ['@variable.builtin'] = { fg = colors.light_orange },
---}
---
---local M = {}
---
---local function _load(config)
--- for group, hl in pairs(config) do
--- if not vim.tbl_isempty(hl) then
--- vim.api.nvim_set_hl(0, group, hl)
--- end
--- end
---end
---
---
---function M.setup()
--- vim.api.nvim_set_hl(0, 'XMenu', { bg = colors.dark_grey, default = true })
--- vim.api.nvim_set_hl(0, 'XMenuBorder', { bg = colors.dark_grey, fg = colors.dark_grey, default = true })
--- vim.g.terminal_color_0 = colors.dark_grey
---end
---
-----function M.load(full)
----- _load(base)
-----
----- if not full then
----- _load_diagnostics()
----- return
----- end
-----
----- _load(theme)
-----end
---
---return M
diff --git a/.config/nvim/lua/plugins/dap.lua b/.config/nvim/lua/plugins/dap.lua
deleted file mode 100644
index 3189f4f..0000000
--- a/.config/nvim/lua/plugins/dap.lua
+++ /dev/null
@@ -1,254 +0,0 @@
-local dap = require('dap')
-
--- options
-dap.defaults.fallback.switchbuf = 'uselast'
-dap.defaults.fallback.focus_terminal = true
-dap.defaults.fallback.external_terminal = {
- command = '/usr/bin/wezterm',
- args = { '-e' },
-}
-
--- Autocmds
-vim.api.nvim_create_autocmd("FileType", {
- pattern = { "dap-float" },
- callback = function(event)
- vim.keymap.set("n", "<Tab>", "", { buffer = event.buf, silent = true })
- vim.keymap.set("n", "<S-Tab>", "", { buffer = event.buf, silent = true })
- end,
-})
-
-dap.adapters.cppdbg = {
- id = 'cppdbg',
- type = 'executable',
- --command = vim.fn.stdpath('data') .. '/mason/bin/OpenDebugAD7',
- command = os.getenv("HOME") .. '/apps/cpptools/extension/debugAdapters/bin/OpenDebugAD7',
- --command = cpptools:get_install_path() .. '/extension/debugAdapters/bin/OpenDebugAD7'
-}
-
-dap.adapters.codelldb = {
- type = 'server',
- port = '${port}',
- --host = "localhost",
- --host = '127.0.0.1',
- --port = 13000, -- 💀 Use the port printed out or specified with `--port`
- executable = {
- --command = os.getenv("HOME") .. '/apps/codelldb/extension/adapter/codelldb',
- command = os.getenv("HOME") .. "/.vscode-oss/extensions/vadimcn.vscode-lldb-1.9.0-universal/adapter/codelldb",
- args = { '--port', '${port}' },
- },
- --detached = true,
-}
-
-dap.adapters.lldb = {
- type = 'executable',
- command = '/usr/bin/lldb-vscode',
- name = "lldb"
-}
-dap.configurations.cpp = {
- {
- name = "Debugger",
- --type = "lldb",
- --type = "cppdbg",
- type = "codelldb",
- request = "launch",
- cwd = '${workspaceFolder}',
- program = function()
- return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
- end,
- --program = '${file}',
- --program = function()
- -- -- First, check if exists CMakeLists.txt
- -- local cwd = vim.fn.getcwd()
- -- if (file.exists(cwd, "CMakeLists.txt")) then
- -- -- Todo. Then invoke cmake commands
- -- -- Then ask user to provide execute file
- -- return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
- -- else
- -- local fileName = vim.fn.expand("%:t:r")
- -- if (not file.exists(cwd, "bin")) then
- -- -- create this directory
- -- os.execute("mkdir " .. "bin")
- -- end
- -- local cmd = "!gcc -g % -o bin/" .. fileName
- -- -- First, compile it
- -- vim.cmd(cmd)
- -- -- Then, return it
- -- return "${fileDirname}/bin/" .. fileName
- -- end
- --end,
- stopAtEntry = true,
- args = {},
- --runInTerminal = true,
- --runInTerminal = false,
- --console = 'integratedTerminal',
-
- --MIMode = 'gdb',
- --miDebuggerServerAddress = 'localhost:1234',
- --miDebuggerPath = 'gdb-oneapi',
- --miDebuggerPath = '/usr/bin/gdb',
- externalConsole = true,
- --setupCommands = {
- -- {
- -- text = '-enable-pretty-printing',
- -- description = 'enable pretty printing',
- -- ignoreFailures = false
- -- }
- --},
- },
-}
-
--- If you want to use this for Rust and C, add something like this:
-dap.configurations.c = dap.configurations.cpp
-dap.configurations.rust = dap.configurations.cpp
-
--- javascript
---dap.adapters.node2 = {
--- type = 'executable',
--- command = 'node-debug2-adapter',
--- args = {},
---}
-
---dap.configurations.javascript = {
--- {
--- name = 'Launch',
--- type = 'node2',
--- request = 'attach',
--- program = '${file}',
--- cwd = vim.fn.getcwd(),
--- sourceMaps = true,
--- protocol = 'inspector',
--- console = 'integratedTerminal',
--- },
---}
-
-dap.adapters.python = {
- type = 'executable',
- command = vim.trim(vim.fn.system('which python')),
- args = { '-m', 'debugpy.adapter' },
-}
-
-dap.configurations.python = {
- {
- -- The first three options are required by nvim-dap
- type = 'python', -- the type here established the link to the adapter definition: `dap.adapters.python`
- request = 'launch',
- name = "Launch file",
- -- Options below are for debugpy, see https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings for supported options
- program = "${file}", -- This configuration will launch the current file if used.
- stopOnEntry = true,
- },
-}
-
-local dapui = require('dapui')
---local dap_ui_status_ok, dapui = pcall(require, "dapui")
---if not dap_ui_status_ok then
--- return
---end
-
--- setup repl
---dap.repl.commands = vim.tbl_extend('force', dap.repl.commands, {
--- exit = { 'q', 'exit' },
--- custom_commands = {
--- ['.run_to_cursor'] = dap.run_to_cursor,
--- ['.restart'] = dap.run_last
--- }
---})
-
--- Load dapui configuration only if it hasn't been loaded before
-if not vim.g.loaded_dapui then
- require("dapui").setup({
- mappings = {
- expand = "<CR>",
- open = "o",
- remove = "D",
- edit = "e",
- repl = "r",
- toggle = "t",
- },
- controls = {
- enabled = true,
- },
- layouts = {
- {
- elements = {
- -- Elements can be strings or table with id and size keys.
- { id = "watches", size = 0.25 },
- { id = "scopes", size = 0.25 },
- { id = "breakpoints", size = 0.25 },
- { id = "stacks", size = 0.25 },
- },
- size = 50, -- 40 columns
- position = "left",
- },
- {
- elements = {
- { id = "console", size = 0.6 },
- { id = "repl", size = 0.4 },
- },
- size = 0.3,
- position = "bottom",
- },
- },
- render = {
- max_value_lines = 3,
- },
- floating = {
- max_height = nil, -- These can be integers or a float between 0 and 1.
- max_width = nil, -- Floats will be treated as percentage of your screen.
- border = "single", -- Border style. Can be "single", "double" or "rounded"
- mappings = {
- close = { "q", "<Esc>" },
- },
- },
- --icons = { expanded = "-", collapsed = "$" },
- icons = {
- expanded = "",
- collapsed = "",
- current_frame = "",
- },
- })
- vim.g.loaded_dapui = true
-end
-
-
--- Signs
-local sign = vim.fn.sign_define
-sign("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = "" })
-sign("DapBreakpointCondition", { text = "◆", texthl = "DapBreakpointCondition", linehl = "", numhl = "" }) --
-sign("DapBreakpointRejected", { text = 'R', texthl = 'DiagnosticError', numhl = 'DiagnosticError' })
-sign("DapLogPoint", { text = "L", texthl = "DapLogPoint", linehl = "", numhl = "" })
-sign('DapStopped', { text = '', texthl = 'DiagnosticSignHint', numbhl = '', linehl = '' })
-
---sign('DapBreakpoint', { text = '', texthl = 'DiagnosticSignError', numbhl = '', linehl = '' })
---sign("DapLogPoint", { text = '.>', texthl = 'DiagnosticInfo', numhl = 'DiagnosticInfo' })
---vim.fn.sign_define("DapBreakpointCondition", { text = '?>', texthl = 'DiagnosticInfo', numhl = 'DiagnosticInfo' })
---vim.fn.sign_define("DapStopped", { text = '=>', texthl = 'DiagnosticWarn', numhl = 'DiagnosticWarn' })
---vim.fn.sign_define("DapBreakpoint", { text = '<>', texthl = 'DiagnosticInfo', numhl = 'DiagnosticInfo' })
-
-dap.listeners.after.event_initialized["dapui_config"] = function()
- dapui.open()
-end
-dap.listeners.before.event_terminated["dapui_config"] = function()
- dapui.close()
-end
-dap.listeners.before.event_exited["dapui_config"] = function()
- dapui.close()
-end
-dap.listeners.before.disconnect["dapui_config"] = function()
- dapui.close()
-end
-
-require("nvim-dap-virtual-text").setup {
- enabled = true,
- enabled_commands = true,
- highlight_changed_variables = true,
- highlight_new_as_changed = false,
- show_stop_reason = true,
- commented = true,
- only_first_definition = true,
- all_references = false,
- filter_references_pattern = "<module",
- virt_text_pos = "eol",
- all_frames = false,
- virt_text_win_col = nil
-}
diff --git a/.config/nvim/lua/plugins/dashboard.lua b/.config/nvim/lua/plugins/dashboard.lua
deleted file mode 100644
index f02242c..0000000
--- a/.config/nvim/lua/plugins/dashboard.lua
+++ /dev/null
@@ -1,90 +0,0 @@
-local db = require('dashboard')
-local messages = require('plugins.messages')
-
-function GetRandomMessage()
- -- Get a random index from the messages array
- local randomIndex = math.random(1, #messages)
- return messages[randomIndex]
-end
-
---vim.api.nvim_create_autocmd("VimEnter", {
--- callback = function()
--- -- disable line numbers
--- vim.opt_local.number = false
--- vim.opt_local.relativenumber = false
--- -- always start in insert mode
--- end,
---})
-
-db.setup({
- theme = 'hyper',
- config = {
- mru = { limit = 10, label = '' },
- project = { limit = 10 },
- header = {
- [[ ███╗ ██╗ ███████╗ ██████╗ ██╗ ██╗ ██╗ ███╗ ███╗]],
- [[ ████╗ ██║ ██╔════╝██╔═══██╗ ██║ ██║ ██║ ████╗ ████║]],
- [[ ██╔██╗ ██║ █████╗ ██║ ██║ ██║ ██║ ██║ ██╔████╔██║]],
- [[ ██║╚██╗██║ ██╔══╝ ██║ ██║ ╚██╗ ██╔╝ ██║ ██║╚██╔╝██║]],
- [[ ██║ ╚████║ ███████╗╚██████╔╝ ╚████╔╝ ██║ ██║ ╚═╝ ██║]],
- [[ ╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝]],
- },
- disable_move = false,
- shortcut = {
- { desc = ' Plugins', group = 'Number', action = 'PackerStatus', key = 'p' },
- --{ desc = " Plugins", group = "@property", action = "PackerStatus", key = "p" },
- {
- desc = ' Files',
- group = 'Number',
- --group = "Label",
- action = 'Telescope find_files',
- key = 'f',
- },
- {
- desc = ' Text',
- group = 'Number',
- --group = "Label",
- action = 'enew',
- key = 't',
- },
- {
- desc = ' Grep',
- group = 'Number',
- --group = "Label",
- action = 'Telescope live_grep',
- key = 'g',
- },
- {
- desc = ' Scheme',
- group = 'Number',
- --group = "Label",
- action = 'Telescope colorscheme',
- key = 's',
- },
- {
- desc = ' Config',
- group = 'Number',
- --group = "Label",
- action = ':edit ~/.config/nvim/init.lua',
- key = 'c',
- },
- },
- footer = function()
- return { '', GetRandomMessage() }
- end,
- },
- hide = {
- statusline = false,
- tabline = false,
- winbar = false,
- },
-})
-
---highlights
----- General
---DashboardHeader DashboardFooter
----- Hyper theme
---DashboardProjectTitle DashboardProjectTitleIcon DashboardProjectIcon
---DashboardMruTitle DashboardMruIcon DashboardFiles DashboardShotCutIcon
----- Doome theme
---DashboardDesc DashboardKey DashboardIcon DashboardShotCut
diff --git a/.config/nvim/lua/plugins/fidget.lua b/.config/nvim/lua/plugins/fidget.lua
deleted file mode 100644
index d401c5f..0000000
--- a/.config/nvim/lua/plugins/fidget.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-require("fidget").setup({
- --event = "LspAttach",
- text = {
- --spinner = "pipe", -- (Default) animation shown when tasks are ongoing
- --spinner = "hamburger", -- animation shown when tasks are ongoing
- --spinner = "dots_pulse", -- animation shown when tasks are ongoing
- spinner = "dots", -- animation shown when tasks are ongoing
- done = "✔", -- character shown when all tasks are complete
- commenced = "Started", -- message shown when task starts
- completed = "Completed", -- message shown when task completes
- },
- fmt = {
- task = function(task_name, message, percentage)
- if task_name == "diagnostics" then
- return false
- end
- return string.format(
- "%s%s [%s]",
- message,
- percentage and string.format(" (%s%%)", percentage) or "",
- task_name
- )
- end,
- },
- --sources = { -- Sources to configure
- --["null-ls"] = { -- Name of source
- --ignore = true, -- Ignore notifications from this source
- --},
- --},
- debug = {
- logging = false, -- whether to enable logging, for debugging
- strict = false, -- whether to interpret LSP strictly
- },
-})
diff --git a/.config/nvim/lua/plugins/fzf.lua b/.config/nvim/lua/plugins/fzf.lua
deleted file mode 100644
index 5675e9f..0000000
--- a/.config/nvim/lua/plugins/fzf.lua
+++ /dev/null
@@ -1,60 +0,0 @@
---vim.cmd([[
--- let g:fzf_history_dir = '~/.local/share/fzf-history'
--- map <leader>z :FZF<CR>
--- map <leader>a :Files<CR>
--- map <leader>l :Lines<CR>
--- map <leader>L :BLines<CR>
--- map <leader>B :Buffers<CR>
--- map <leader>h :History:<CR>
--- nnoremap <leader>g :Rg<CR>
--- "nnoremap <leader>t :Tags<CR>
--- nnoremap <leader>m :Marks<CR>
--- " This is the default extra key bindings
--- let g:fzf_action = {
--- \ 'ctrl-t': 'tab split',
--- \ 'ctrl-x': 'split',
--- \ 'ctrl-y': 'vsplit' }
--- let g:fzf_tags_command = 'ctags -R'
--- " Border color
--- let g:fzf_layout = {'up':'~90%', 'window': { 'width': 0.8, 'height': 0.8,'yoffset':0.5,'xoffset': 0.5, 'highlight': 'Todo', 'border': 'sharp' } }
--- let $FZF_DEFAULT_OPTS = '--layout=reverse --info=inline'
--- let $FZF_DEFAULT_COMMAND="rg --files --hidden"
--- " Customize fzf colors to match your color scheme
--- let g:fzf_colors =
--- \ { 'fg': ['fg', 'Normal'],
--- \ 'bg': ['bg', 'Normal'],
--- \ 'hl': ['fg', 'Comment'],
--- \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
--- \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
--- \ 'hl+': ['fg', 'Statement'],
--- \ 'info': ['fg', 'PreProc'],
--- \ 'border': ['fg', 'Ignore'],
--- \ 'prompt': ['fg', 'Conditional'],
--- \ 'pointer': ['fg', 'Exception'],
--- \ 'marker': ['fg', 'Keyword'],
--- \ 'spinner': ['fg', 'Label'],
--- \ 'header': ['fg', 'Comment'] }
--- " Get Files
--- command! -bang -nargs=? -complete=dir Files
--- \ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline']}), <bang>0)
--- " Get text in files with Rg
--- command! -bang -nargs=* Rg
--- \ call fzf#vim#grep(
--- \ 'rg --column --line-number --no-heading --color=always --smart-case '.shellescape(<q-args>), 1,
--- \ fzf#vim#with_preview(), <bang>0)
--- " Ripgrep advanced
--- function! RipgrepFzf(query, fullscreen)
--- let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case %s || true'
--- let initial_command = printf(command_fmt, shellescape(a:query))
--- let reload_command = printf(command_fmt, '{q}')
--- let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]}
--- call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen)
--- endfunction
--- command! -nargs=* -bang RG call RipgrepFzf(<q-args>, <bang>0)
--- " Git grep
--- command! -bang -nargs=* GGrep
--- \ call fzf#vim#grep(
--- \ 'git grep --line-number '.shellescape(<q-args>), 0,
--- \ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0)
--- command! -bang FM call fzf#run(fzf#wrap({'source': 'cat ~/.fzf-marks | sed "s/.*: \(.*\)$/\1/" | sed "s#~#${HOME}#"', 'sink': 'lcd'}, <bang>0))
---]])
diff --git a/.config/nvim/lua/plugins/gitsigns.lua b/.config/nvim/lua/plugins/gitsigns.lua
deleted file mode 100644
index 8fbdae1..0000000
--- a/.config/nvim/lua/plugins/gitsigns.lua
+++ /dev/null
@@ -1,47 +0,0 @@
-require("gitsigns").setup({
- signs = {
- --add = {
- -- hl = "GitSignsAdd",
- -- text = "▍", --│
- -- numhl = "GitSignsAddNr",
- -- linehl = "GitSignsAddLn",
- --},
- --change = {
- -- hl = "GitSignsChange",
- -- text = "▍", --│
- -- numhl = "GitSignsChangeNr",
- -- linehl = "GitSignsChangeLn",
- --},
- delete = {
- hl = "GitSignsDelete",
- text = "▁", --_━─
- numhl = "GitSignsDeleteNr",
- linehl = "GitSignsDeleteLn",
- },
- topdelete = {
- hl = "GitSignsDelete",
- text = "▔", --‾
- numhl = "GitSignsDeleteNr",
- linehl = "GitSignsDeleteLn",
- },
- changedelete = {
- hl = "GitSignsDelete",
- text = "~",
- numhl = "GitSignsChangeNr",
- linehl = "GitSignsChangeLn",
- },
- },
- current_line_blame = true,
- })
-
-vim.api.nvim_command("highlight DiffAdd guibg=none guifg=#21c7a8")
-vim.api.nvim_command("highlight DiffModified guibg=none guifg=#82aaff")
-vim.api.nvim_command("highlight DiffDelete guibg=none guifg=#fc514e")
-vim.api.nvim_command("highlight DiffText guibg=none guifg=#fc514e")
-vim.cmd([[
-hi link GitSignsAdd DiffAdd
-hi link GitSignsChange DiffModified
-hi link GitSignsDelete DiffDelete
-hi link GitSignsTopDelete DiffDelete
-hi link GitSignsChangedDelete DiffDelete
-]])
diff --git a/.config/nvim/lua/plugins/goto-preview.lua b/.config/nvim/lua/plugins/goto-preview.lua
deleted file mode 100644
index d4d2c67..0000000
--- a/.config/nvim/lua/plugins/goto-preview.lua
+++ /dev/null
@@ -1,18 +0,0 @@
-require('goto-preview').setup {
- width = 120; -- Width of the floating window
- height = 15; -- Height of the floating window
- border = {"↖", "─" ,"┐", "│", "┘", "─", "└", "│"}; -- Border characters of the floating window
- default_mappings = false; -- Bind default mappings
- debug = false; -- Print debug information
- opacity = nil; -- 0-100 opacity level of the floating window where 100 is fully transparent.
- resizing_mappings = false; -- Binds arrow keys to resizing the floating window.
- post_open_hook = nil; -- A function taking two arguments, a buffer and a window to be ran as a hook.
- references = { -- Configure the telescope UI for slowing the references cycling window.
- telescope = require("telescope.themes").get_dropdown({ hide_preview = false })
- };
- -- These two configs can also be passed down to the goto-preview definition and implementation calls for one off "peak" functionality.
- focus_on_open = true; -- Focus the floating window when opening it.
- dismiss_on_move = false; -- Dismiss the floating window when moving the cursor.
- force_close = true, -- passed into vim.api.nvim_win_close's second argument. See :h nvim_win_close
- bufhidden = "wipe", -- the bufhidden option to set on the floating window. See :h bufhidden
-}
diff --git a/.config/nvim/lua/plugins/hardtime.lua b/.config/nvim/lua/plugins/hardtime.lua
deleted file mode 100644
index e058b8b..0000000
--- a/.config/nvim/lua/plugins/hardtime.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-local hardtime = require('hardtime')
-
--- Function to toggle the hardtime state and echo a message
-local hardtime_enabled = true
-
-function ToggleHardtime()
- hardtime.toggle()
- hardtime_enabled = not hardtime_enabled
- local message = hardtime_enabled and 'hardtime on' or 'hardtime off'
- vim.cmd('echo "' .. message .. '"')
-end
-
-hardtime.setup({
- -- hardtime config here
- disabled_filetypes = { 'qf', 'netrw', 'NvimTree', 'NvimTree_1', 'lazy', 'mason', 'oil', 'dashboard' },
-})
-
-return {
- ToggleHardtime = ToggleHardtime,
-}
diff --git a/.config/nvim/lua/plugins/harpoon.lua b/.config/nvim/lua/plugins/harpoon.lua
deleted file mode 100644
index 784ee0b..0000000
--- a/.config/nvim/lua/plugins/harpoon.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-require("harpoon").setup({
- menu = {
- width = vim.api.nvim_win_get_width(0) - 4,
- },
- --keys = {
- -- { "mt", function() require("harpoon.mark").toggle_file() end, desc = "Toggle File" },
- -- { "mm", function() require("harpoon.ui").toggle_quick_menu() end, desc = "Harpoon Menu" },
- -- { "mc", function() require("harpoon.cmd-ui").toggle_quick_menu() end, desc = "Command Menu" },
- -- --{ "<leader>1", function() require("harpoon.ui").nav_file(1) end, desc = "File 1" },
- -- --{ "<leader>2", function() require("harpoon.ui").nav_file(2) end, desc = "File 2" },
- -- --{ "<leader>3", function() require("harpoon.term").gotoTerminal(1) end, desc = "Terminal 1" },
- -- --{ "<leader>4", function() require("harpoon.term").gotoTerminal(2) end, desc = "Terminal 2" },
- -- --{ "<leader>5", function() require("harpoon.term").sendCommand(1,1) end, desc = "Command 1" },
- -- --{ "<leader>6", function() require("harpoon.term").sendCommand(1,2) end, desc = "Command 2" },
- --},
-})
-vim.api.nvim_set_keymap("n", "<leader>ma", ":lua require('harpoon.mark').add_file()<CR>", {})
-vim.api.nvim_set_keymap("n", "<leader>mt", ":lua require('harpoon.mark').toggle_file()<CR>", {})
-vim.api.nvim_set_keymap("n", "<leader>mq", ":lua require('harpoon.ui').toggle_quick_menu()<CR>", {})
-vim.api.nvim_set_keymap("n", "<leader>mh", ":lua require('harpoon.ui').nav_file(1)<CR>", {})
-vim.api.nvim_set_keymap("n", "<leader>mj", ":lua require('harpoon.ui').nav_file(2)<CR>", {})
-vim.api.nvim_set_keymap("n", "<leader>mk", ":lua require('harpoon.ui').nav_file(3)<CR>", {})
-vim.api.nvim_set_keymap("n", "<leader>ml", ":lua require('harpoon.ui').nav_file(4)<CR>", {})
-
---local mark = require("harpoon.mark")
---local ui = require("harpoon.ui")
---
---vim.keymap.set("n", "<leader>a", mark.add_file)
---vim.keymap.set("n", "<C-e>", ui.toggle_quick_menu)
---
---vim.keymap.set("n", "<C-h>", function() ui.nav_file(1) end)
---vim.keymap.set("n", "<C-t>", function() ui.nav_file(2) end)
---vim.keymap.set("n", "<C-n>", function() ui.nav_file(3) end)
---vim.keymap.set("n", "<C-s>", function() ui.nav_file(4) end)
diff --git a/.config/nvim/lua/plugins/heirline.lua b/.config/nvim/lua/plugins/heirline.lua
deleted file mode 100644
index c41aff3..0000000
--- a/.config/nvim/lua/plugins/heirline.lua
+++ /dev/null
@@ -1,1290 +0,0 @@
-local conditions = require('heirline.conditions')
-local utils = require('heirline.utils')
-
-local colors = {
- --bg = "#23232e",
- bg = nil,
- nobg = 'NONE',
- white = '#f8f8f2',
- black = '#000000',
- darkgray = '#23232e',
- gray = '#2d2b3a',
- lightgray = '#d6d3ea',
- pink = '#f92672',
- green = '#50fa7b',
- blue = '#39BAE6',
- yellow = '#f1fa8c',
- orange = '#ffb86c',
- purple = '#BF40BF',
- violet = '#7F00FF',
- red = '#ff5555',
- cyan = '#66d9eC',
- diag = {
- warn = utils.get_highlight('DiagnosticSignWarn').fg,
- error = utils.get_highlight('DiagnosticSignError').fg,
- hint = utils.get_highlight('DiagnosticSignHint').fg,
- info = utils.get_highlight('DiagnosticSignInfo').fg,
- },
- git = {
- active = '#f34f29',
- del = '#ff5555',
- add = '#50fa7b',
- change = '#ae81ff',
- },
-}
-
-require('heirline').load_colors(colors)
-
-local Align = { provider = '%=', hl = { bg = colors.bg } }
-local Space = { provider = ' ', hl = { bg = colors.bg } }
-local Tab = { provider = ' ' }
-local LeftSpace = { provider = '' }
-local RightSpace = { provider = '' }
-
-local ViMode = {
- init = function(self)
- self.mode = vim.fn.mode(1)
- --if not self.once then
- -- vim.cmd("au ModeChanged *:*o redrawstatus")
- --end
- --self.once = true
- end,
- static = {
- mode_names = {
- n = ' NORMAL ',
- no = 'PENDING ',
- nov = ' N? ',
- noV = ' N? ',
- ['no\22'] = ' N? ',
- niI = ' Ni ',
- niR = ' Nr ',
- niV = ' Nv ',
- nt = 'TERMINAL',
- v = ' VISUAL ',
- vs = ' Vs ',
- V = ' V·LINE ',
- ['\22'] = 'V·BLOCK ',
- ['\22s'] = 'V·BLOCK ',
- s = ' SELECT ',
- S = ' S·LINE ',
- ['\19'] = 'S·BLOCK ',
- i = ' INSERT ',
- ix = 'insert x',
- ic = 'insert c',
- R = 'REPLACE ',
- Rc = ' Rc ',
- Rx = ' Rx ',
- Rv = 'V·REPLACE ',
- Rvc = ' Rv ',
- Rvx = ' Rv ',
- c = 'COMMAND ',
- cv = ' VIM EX ',
- ce = ' EX ',
- r = ' PROMPT ',
- rm = ' MORE ',
- ['r?'] = 'CONFIRM ',
- ['!'] = ' SHELL ',
- t = 'TERMINAL',
- },
- },
- provider = function(self)
- return ' %2(' .. self.mode_names[self.mode] .. '%) '
- end,
- hl = function(self)
- return { fg = 'colors.black', bg = self.mode_color, bold = true }
- end,
- update = {
- 'ModeChanged',
- 'VimEnter',
- pattern = '*:*',
- callback = vim.schedule_wrap(function()
- vim.cmd('redrawstatus')
- end),
- },
-}
-
--- LSP
-local LSPActive = {
- condition = conditions.lsp_attached,
- update = { 'LspAttach', 'LspDetach' },
- provider = function()
- local buf_clients = vim.lsp.buf_get_clients()
- local buf_client_names = {}
-
- -- add client
- for _, client in pairs(buf_clients) do
- if client.name ~= 'null-ls' then
- table.insert(buf_client_names, client.name)
- end
- end
- return '⚙️ ' .. table.concat(buf_client_names, '')
- end,
- hl = { fg = colors.lightgray, bold = false },
-}
-local Navic = {
- condition = function()
- return require('nvim-navic').is_available()
- end,
- static = {
- -- create a type highlight map
- type_hl = {
- File = 'Directory',
- Module = '@include',
- Namespace = '@namespace',
- Package = '@include',
- Class = '@structure',
- Method = '@method',
- Property = '@property',
- Field = '@field',
- Constructor = '@constructor',
- Enum = '@field',
- Interface = '@type',
- Function = '@function',
- Variable = '@variable',
- Constant = '@constant',
- String = '@string',
- Number = '@number',
- Boolean = '@boolean',
- Array = '@field',
- Object = '@type',
- Key = '@keyword',
- Null = '@comment',
- EnumMember = '@field',
- Struct = '@structure',
- Event = '@keyword',
- Operator = '@operator',
- TypeParameter = '@type',
- },
- -- bit operation dark magic, see below...
- enc = function(line, col, winnr)
- return bit.bor(bit.lshift(line, 16), bit.lshift(col, 6), winnr)
- end,
- -- line: 16 bit (65535); col: 10 bit (1023); winnr: 6 bit (63)
- dec = function(c)
- local line = bit.rshift(c, 16)
- local col = bit.band(bit.rshift(c, 6), 1023)
- local winnr = bit.band(c, 63)
- return line, col, winnr
- end,
- },
- init = function(self)
- local data = require('nvim-navic').get_data() or {}
- local children = {}
- -- create a child for each level
- for i, d in ipairs(data) do
- -- encode line and column numbers into a single integer
- local pos = self.enc(d.scope.start.line, d.scope.start.character, self.winnr)
- local child = {
- {
- provider = d.icon,
- hl = self.type_hl[d.type],
- },
- {
- -- escape `%`s (elixir) and buggy default separators
- provider = d.name:gsub('%%', '%%%%'):gsub('%s*->%s*', ''),
- -- highlight icon only or location name as well
- -- hl = self.type_hl[d.type],
-
- on_click = {
- -- pass the encoded position through minwid
- minwid = pos,
- callback = function(_, minwid)
- -- decode
- local line, col, winnr = self.dec(minwid)
- vim.api.nvim_win_set_cursor(vim.fn.win_getid(winnr), { line, col })
- end,
- name = 'heirline_navic',
- },
- },
- }
- -- add a separator only if needed
- if #data > 1 and i < #data then
- table.insert(child, {
- provider = ' > ',
- hl = { fg = 'bright_fg' },
- })
- end
- table.insert(children, child)
- end
- -- instantiate the new child, overwriting the previous one
- self.child = self:new(children, 1)
- end,
- -- evaluate the children containing navic components
- provider = function(self)
- return self.child:eval()
- end,
- hl = { fg = 'gray' },
- update = 'CursorMoved',
-}
-
--- Diagnostics
-local Diagnostics = {
- condition = conditions.has_diagnostics,
- static = {
- error_icon = vim.fn.sign_getdefined('DiagnosticSignError')[1].text,
- warn_icon = vim.fn.sign_getdefined('DiagnosticSignWarn')[1].text,
- info_icon = vim.fn.sign_getdefined('DiagnosticSignInfo')[1].text,
- hint_icon = vim.fn.sign_getdefined('DiagnosticSignHint')[1].text,
- },
- init = function(self)
- self.errors = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.ERROR })
- self.warnings = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.WARN })
- self.hints = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.HINT })
- self.info = #vim.diagnostic.get(0, { severity = vim.diagnostic.severity.INFO })
- end,
- update = { 'DiagnosticChanged', 'BufEnter' },
- {
- provider = function(self)
- -- 0 is just another output, we can decide to print it or not!
- return self.errors > 0 and (self.error_icon .. self.errors .. ' ')
- end,
- hl = { fg = colors.diag.error, bg = colors.bg },
- },
- {
- provider = function(self)
- return self.warnings > 0 and (self.warn_icon .. self.warnings .. ' ')
- end,
- hl = { fg = colors.diag.warn, bg = colors.bg },
- },
- {
- provider = function(self)
- return self.info > 0 and (self.info_icon .. self.info .. ' ')
- end,
- hl = { fg = colors.diag.info, bg = colors.bg },
- },
- {
- provider = function(self)
- return self.hints > 0 and (self.hint_icon .. self.hints)
- end,
- hl = { fg = colors.diag.hint, bg = colors.bg },
- },
- on_click = {
- callback = function()
- require('trouble').toggle({ mode = 'document_diagnostics' })
- -- or
- -- vim.diagnostic.setqflist()
- end,
- name = 'heirline_diagnostics',
- },
-}
-
--- Git
--- For the ones who're not (too) afraid of changes! Uses gitsigns.
-local Git = {
- condition = conditions.is_git_repo,
- init = function(self)
- self.status_dict = vim.b.gitsigns_status_dict
- self.has_changes = self.status_dict.added ~= 0 or self.status_dict.removed ~= 0 or self.status_dict.changed ~= 0
- end,
- --{
- -- -- git branch name
- -- provider = function(self)
- -- --return ' ' .. self.status_dict.head
- -- return '  ' .. self.status_dict.head
- -- end,
- -- --hl = { bold = true },
- -- hl = { fg = colors.git.active, bold = true, bg = colors.bg },
- --},
- -- You could handle delimiters, icons and counts similar to Diagnostics
- {
- -- git branch icon
- provider = function()
- return '  '
- end,
- hl = { fg = colors.git.active, bg = colors.bg },
- },
-
- {
- -- git branch name
- provider = function(self)
- return self.status_dict.head
- end,
- hl = { fg = colors.white, bg = colors.bg },
- },
-
- {
- condition = function(self)
- return self.has_changes
- end,
- --provider = "("
- provider = '',
- },
- {
- provider = function(self)
- local count = self.status_dict.added or 0
- --return count > 0 and ("+" .. count)
- return count > 0 and ('  ' .. count)
- end,
- --hl = { fg = "git_add" },
- hl = { fg = colors.git.add, bg = colors.bg },
- },
- {
- provider = function(self)
- local count = self.status_dict.removed or 0
- --return count > 0 and ("-" .. count)
- return count > 0 and ('  ' .. count)
- end,
- --hl = { fg = "git_del" },
- hl = { fg = colors.git.del, bg = colors.bg },
- },
- {
- provider = function(self)
- local count = self.status_dict.changed or 0
- --return count > 0 and ("~" .. count)
- return count > 0 and ('  ' .. count)
- end,
- --hl = { fg = "git_change" },
- hl = { fg = colors.git.change, bg = colors.bg },
- },
- --{
- -- condition = function(self)
- -- return self.has_changes
- -- end,
- -- provider = ")",
- --},
- on_click = {
- callback = function()
- -- If you want to use Fugitive:
- -- vim.cmd("G")
-
- -- If you prefer Lazygit
- -- use vim.defer_fn() if the callback requires
- -- opening of a floating window
- -- (this also applies to telescope)
- vim.defer_fn(function()
- vim.cmd('Lazygit')
- end, 100)
- end,
- name = 'heirline_git',
- },
-}
-
--- Debugger
--- Display informations from nvim-dap!
--- Note that we add spaces separately, so that only the icon characters will be clickable
---local DAPMessages = {
--- condition = function()
--- local session = require("dap").session()
--- return session ~= nil
--- end,
--- provider = function()
--- return " " .. require("dap").status() .. " "
--- end,
--- hl = "Debug",
--- {
--- provider = "",
--- on_click = {
--- callback = function()
--- require("dap").step_into()
--- end,
--- name = "heirline_dap_step_into",
--- },
--- },
--- { provider = " " },
--- {
--- provider = "",
--- on_click = {
--- callback = function()
--- require("dap").step_out()
--- end,
--- name = "heirline_dap_step_out",
--- },
--- },
--- { provider = " " },
--- {
--- provider = " ",
--- on_click = {
--- callback = function()
--- require("dap").step_over()
--- end,
--- name = "heirline_dap_step_over",
--- },
--- },
--- { provider = " " },
--- {
--- provider = "ﰇ",
--- on_click = {
--- callback = function()
--- require("dap").run_last()
--- end,
--- name = "heirline_dap_run_last",
--- },
--- },
--- { provider = " " },
--- {
--- provider = "",
--- on_click = {
--- callback = function()
--- require("dap").terminate()
--- require("dapui").close({})
--- end,
--- name = "heirline_dap_close",
--- },
--- },
--- { provider = " " },
--- -- icons:       ﰇ  
---}
-
--- Tests
--- This requires the great ultest.
---local UltTest = {
--- condition = function()
--- return vim .api.nvim_call_function("ultest#is_test_file", {}) ~= 0
--- end,
--- static = {
--- passed_icon = vim.fn.sign_getdefined("test_pass")[1].text,
--- failed_icon = vim.fn.sign_getdefined("test_fail")[1].text,
--- passed_hl = { fg = utils.get_highlight("UltestPass").fg },
--- failed_hl = { fg = utils.get_highlight("UltestFail").fg },
--- },
--- init = function(self)
--- self.status = vim.api.nvim_call_function("ultest#status", {})
--- end,
---
--- -- again, if you'd like icons and numbers to be colored differently,
--- -- just split the component in two
--- {
--- provider = function(self)
--- return self.passed_icon .. self.status.passed .. " "
--- end,
--- hl = function(self)
--- return self.passed_hl
--- end,
--- },
--- {
--- provider = function(self)
--- return self.failed_icon .. self.status.failed .. " "
--- end,
--- hl = function(self)
--- return self.failed_hl
--- end,
--- },
--- {
--- provider = function(self)
--- return "of " .. self.status.tests - 1
--- end,
--- },
---}
-
--- FileNameBlock: FileIcon, FileName and friends
-local FileNameBlock = {
- -- let's first set up some attributes needed by this component and it's children
- init = function(self)
- self.filename = vim.api.nvim_buf_get_name(0)
- end,
- --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg },
- hl = { bg = colors.bg },
-}
-
--- FileIcon, FileName, FileFlags and FileNameModifier
-local FileIcon = {
- init = function(self)
- local filename = self.filename
- local extension = vim.fn.fnamemodify(filename, ':e')
- self.icon, self.icon_color = require('nvim-web-devicons').get_icon_color(filename, extension, { default = true })
- end,
- provider = function(self)
- return self.icon and (self.icon .. ' ')
- end,
- hl = function(self)
- return { fg = self.icon_color, bg = colors.bg }
- end,
-}
-
-local FileName = {
- provider = function(self)
- -- first, trim the pattern relative to the current directory. For other
- -- options, see :h filename-modifers
- local filename = vim.fn.fnamemodify(self.filename, ':.')
- if filename == '' then
- return 'No Name'
- end
- -- now, if the filename would occupy more than 1/4th of the available
- -- space, we trim the file path to its initials
- -- See Flexible Components section below for dynamic truncation
- if not conditions.width_percent_below(#filename, 0.25) then
- filename = vim.fn.pathshorten(filename)
- end
- return filename
- end,
- --hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg },
- hl = { fg = colors.white, bold = false, bg = colors.bg },
-}
-
-local FileFlags = {
- {
- provider = function()
- if vim.bo.modified then
- return ' [+]' -- ±[+]
- end
- end,
- hl = { fg = colors.green, bg = colors.bg },
- },
- {
- provider = function()
- if not vim.bo.modifiable or vim.bo.readonly then
- return ' '
- end
- end,
- --hl = { fg = colors.orange },
- hl = { fg = colors.orange, bold = true, bg = colors.bg },
- },
-}
-
-local FileNameModifier = {
- hl = function()
- if vim.bo.modified then
- return { fg = colors.green, bold = false, force = true }
- end
- end,
-}
-
--- FileType, FileEncoding and FileFormat
-local FileType = {
- provider = function()
- return vim.bo.filetype
- end,
- hl = { fg = colors.white, bold = false, bg = colors.bg },
-}
-
-local FileEncoding = {
- Space,
- provider = function()
- local enc = (vim.bo.fenc ~= '' and vim.bo.fenc) or vim.o.enc -- :h 'enc'
- return enc:lower()
- end,
- --hl = { fg = utils.get_highlight("Statusline").fg, bold = true, bg = colors.bg },
- hl = { bg = colors.bg, bold = false },
-}
-
-local FileFormat = {
- provider = function()
- local fmt = vim.bo.fileformat
- --return fmt ~= "unix" and fmt:upper()
- return fmt ~= 'unix' and fmt:lower()
- end,
- hl = { fg = utils.get_highlight('Statusline').fg, bold = true, bg = colors.bg },
-}
-
--- FileSize and FileLastModified
-local FileSize = {
- provider = function()
- -- stackoverflow, compute human readable file size
- local suffix = { 'b', 'k', 'M', 'G', 'T', 'P', 'E' }
- local fsize = vim.fn.getfsize(vim.api.nvim_buf_get_name(0))
- fsize = (fsize < 0 and 0) or fsize
- if fsize < 1024 then
- return fsize .. suffix[1]
- end
- local i = math.floor((math.log(fsize) / math.log(1024)))
- return string.format('%.2g%s', fsize / math.pow(1024, i), suffix[i + 1])
- end,
- hl = { fg = utils.get_highlight('Statusline').fg, bold = true, bg = colors.bg },
-}
-
-local FileLastModified = {
- -- did you know? Vim is full of functions!
- provider = function()
- local ftime = vim.fn.getftime(vim.api.nvim_buf_get_name(0))
- return (ftime > 0) and os.date('%c', ftime)
- end,
- hl = { fg = utils.get_highlight('Statusline').fg, bold = true, bg = colors.bg },
-}
-
--- Spell
--- Add indicator when spell is set!
-local Spell = {
- condition = function()
- return vim.wo.spell
- end,
- provider = ' 暈',
- hl = { bold = true, fg = colors.yellow },
-}
-
-local HelpFileName = {
- condition = function()
- return vim.bo.filetype == 'help'
- end,
- provider = function()
- local filename = vim.api.nvim_buf_get_name(0)
- return vim.fn.fnamemodify(filename, ':t')
- end,
- hl = { fg = colors.blue },
-}
-
-local SearchCount = {
- condition = function()
- return vim.v.hlsearch ~= 0 and vim.o.cmdheight == 0
- end,
- init = function(self)
- local ok, search = pcall(vim.fn.searchcount)
- if ok and search.total then
- self.search = search
- end
- end,
- provider = function(self)
- local search = self.search
- return string.format('[%d/%d]', search.current, math.min(search.total, search.maxcount))
- end,
-}
-
-local MacroRec = {
- condition = function()
- return vim.fn.reg_recording() ~= '' and vim.o.cmdheight == 0
- end,
- provider = ' ',
- hl = { fg = 'orange', bold = true },
- utils.surround({ '[', ']' }, nil, {
- provider = function()
- return vim.fn.reg_recording()
- end,
- hl = { fg = 'green', bold = true },
- }),
- update = {
- 'RecordingEnter',
- 'RecordingLeave',
- },
-}
-
-local ShowCmd = {
- condition = function()
- return vim.o.cmdheight == 0
- end,
- provider = ':%3.5(%S%)',
-}
-
-local cursor_location = {
- { provider = '%1(%4l:%-3(%c%)%) %*', hl = { fg = colors.black, bold = true } },
-}
-
-local Ruler = { cursor_location }
-
---utils.make_flexible_component(
--- 3,
--- { Ruler, hl = { fg = utils.get_highlight("statusline").bg, force = true } },
--- { provider = "%<" }
---),
---local cursor_location = {
--- { provider = "%7(%l:%c%) ", hl = { bold = true } },
--- {
--- provider = " ",
--- hl = function(self)
--- local color = self:mode_color()
--- return { fg = color, bold = true }
--- end,
--- },
---}
-
-local WordCount = {
- condition = function()
- return conditions.buffer_matches({
- filetype = {
- 'markdown',
- 'txt',
- 'vimwiki',
- },
- })
- end,
- Space,
- {
- provider = function()
- return 'W:' .. vim.fn.wordcount().words
- end,
- },
-}
-
--- Working Directory
-local WorkDir = {
- init = function(self)
- self.icon = (vim.fn.haslocaldir(0) == 1 and 'l' or 'g') .. ' ' .. ' '
- local cwd = vim.fn.getcwd(0)
- self.cwd = vim.fn.fnamemodify(cwd, ':~')
- end,
- hl = { fg = 'colors.blue', bold = true },
- flexible = 1,
- {
- -- evaluates to the full-lenth path
- provider = function(self)
- local trail = self.cwd:sub(-1) == '/' and '' or '/'
- return self.icon .. self.cwd .. trail .. ' '
- end,
- },
- {
- -- evaluates to the shortened path
- provider = function(self)
- local cwd = vim.fn.pathshorten(self.cwd)
- local trail = self.cwd:sub(-1) == '/' and '' or '/'
- return self.icon .. cwd .. trail .. ' '
- end,
- },
- {
- -- evaluates to "", hiding the component
- provider = '',
- },
-}
-
--- Snippets Indicator
--- This requires ultisnips
---local Snippets = {
--- -- check that we are in insert or select mode
--- condition = function()
--- return vim.tbl_contains({'s', 'i'}, vim.fn.mode())
--- end,
--- provider = function()
--- local forward = (vim.fn["UltiSnips#CanJumpForwards"]() == 1) and "" or ""
--- local backward = (vim.fn["UltiSnips#CanJumpBackwards"]() == 1) and " " or ""
--- return backward .. forward
--- end,
--- hl = { fg = "red", bold = true },
---}
-
--- let's add the children to our FileNameBlock component
-FileNameBlock = utils.insert(
- FileNameBlock,
- FileIcon,
- utils.insert(FileNameModifier, FileName), -- a new table where FileName is a child of FileNameModifier
- unpack(FileFlags), -- A small optimisation, since their parent does nothing
- { provider = '%<' } -- this means that the statusline is cut here when there's not enough space
-)
-
-local FileInfoBlock = {
- -- let's first set up some attributes needed by this component and it's children
- init = function(self)
- self.filename = vim.api.nvim_buf_get_name(0)
- end,
-}
-
-FileInfoBlock = utils.insert(
- FileInfoBlock,
- Space,
- FileIcon,
- FileType,
- { provider = '%<' } -- this means that the statusline is cut here when there's not enough space
-)
-
-LeftSpace = utils.surround({ '', '' }, function(self)
- return self:mode_color()
-end, { LeftSpace, hl = { fg = utils.get_highlight('statusline').bg, force = true } })
-
-RightSpace = utils.surround({ '', '' }, function(self)
- return self:mode_color()
-end, { RightSpace, hl = { fg = utils.get_highlight('statusline').bg, force = true } })
-
-LSPActive = utils.surround({ '', '' }, function(self)
- return self:mode_color()
-end, { Space, LSPActive, hl = { bg = colors.darkgray, force = true } })
-
-FileInfoBlock = utils.surround({ '', '' }, function(self)
- return self:mode_color()
-end, { FileInfoBlock, Space, hl = { bg = colors.black, force = true } })
-
-ViMode = utils.surround({ '', '' }, function(self)
- return self:mode_color()
-end, { ViMode, hl = { fg = colors.black, force = true } })
-
-Ruler = utils.surround({ '', '' }, function(self)
- return self:mode_color()
-end, { Ruler, hl = { fg = colors.black, force = true } })
-
-local left = {
- { RightSpace, hl = { bg = colors.nobg, force = true } },
- { ViMode, hl = { bg = utils.get_highlight('statusline').bg, bold = false } },
- { LeftSpace, hl = { bg = colors.nobg, force = true } },
- { Space, hl = { bg = colors.nobg, force = true } },
- { FileNameBlock, hl = { bg = colors.nobg, force = true } },
- { Space, hl = { bg = colors.nobg, force = true } },
- { Git, hl = { bg = colors.nobg, force = true } },
-}
-
-local middle = {
- { Align, hl = { bg = colors.nobg, force = true } },
- --{ Navic, hl = { bg = colors.nobg, force = true } },
- --{ DAPMessages, hl = { bg = colors.nobg, force = true } },
- { Align, hl = { bg = colors.nobg, force = true } },
-}
-
-local right = {
- --{ Space, hl = { bg = colors.nobg, force = true } },
- { Diagnostics, hl = { bg = colors.nobg, force = true } },
- { Space, hl = { bg = colors.nobg, force = true } },
- { LSPActive, hl = { bg = colors.nobg, force = true } },
- { Space, hl = { bg = colors.nobg, force = true } },
- { FileInfoBlock, hl = { bg = colors.nobg, force = true } },
- { RightSpace, hl = { bg = colors.nobg, force = true } },
- { Ruler, hl = { fg = utils.get_highlight('statusline').bg, bold = false } },
- { LeftSpace, hl = { bg = colors.nobg, force = true } },
-}
-
-local sections = { left, middle, right }
-local DefaultStatusline = { sections }
-
-local specialleft = {
- { RightSpace, hl = { bg = colors.nobg, force = true } },
- { ViMode, hl = { bg = utils.get_highlight('statusline').bg, bold = false } },
- { LeftSpace, hl = { bg = colors.nobg, force = true } },
-}
-
-local specialmiddle = {
- { Align, hl = { bg = colors.nobg, force = true } },
- --{ DAPMessages, hl = { bg = colors.nobg, force = true } },
- { Align, hl = { bg = colors.nobg, force = true } },
-}
-
-local specialright = {
- { RightSpace, hl = { bg = colors.nobg, force = true } },
- { Ruler, hl = { fg = utils.get_highlight('statusline').bg, bold = false } },
- { LeftSpace, hl = { bg = colors.nobg, force = true } },
-}
-
-local specialsections = { specialleft, specialmiddle, specialright }
-
-local InactiveStatusline = {
- condition = conditions.is_not_active,
- --{ FileNameBlock, hl = { bg = colors.nobg, force = true } },
- --{ Align, hl = { bg = colors.nobg, force = true } },
- specialsections,
-}
-
-local SpecialStatusline = {
- condition = function()
- return conditions.buffer_matches({
- buftype = { 'nofile', 'prompt', 'help', 'quickfix' },
- filetype = { '^git.*', 'fugitive', 'dashboard' },
- })
- end,
- specialsections,
-}
-
---local InactiveStatusline = SpecialStatusline
-
-local TerminalStatusline = {
- condition = function()
- return conditions.buffer_matches({ buftype = { 'terminal' } })
- end,
- specialsections,
-}
-
-local StatusLine = {
- static = {
- --mode_colors = {
- -- n = colors.blue,
- -- i = colors.green,
- -- v = colors.purple,
- -- V = colors.purple,
- -- ["\22"] = colors.purple,
- -- c = colors.orange,
- -- s = colors.purple,
- -- S = colors.purple,
- -- ["\19"] = colors.purple,
- -- R = colors.red,
- -- r = colors.red,
- -- ["!"] = colors.orange,
- -- t = colors.orange,
- --},
- mode_colors = {
- n = colors.blue,
- no = colors.blue,
- nov = colors.blue,
- noV = colors.blue,
- ['no\22'] = colors.blue,
- niI = colors.blue,
- niR = colors.blue,
- niV = colors.blue,
- nt = colors.blue,
- v = colors.purple,
- vs = colors.purple,
- V = colors.purple,
- ['\22'] = colors.purple,
- ['\22s'] = colors.purple,
- s = colors.purple,
- S = colors.purple,
- ['\19'] = colors.purple,
- i = colors.green,
- ix = colors.green,
- ic = colors.green,
- R = colors.red,
- Rc = colors.red,
- Rx = colors.red,
- Rv = colors.red,
- Rvc = colors.red,
- Rvx = colors.red,
- c = colors.orange,
- cv = colors.orange,
- ce = colors.orange,
- r = colors.red,
- rm = colors.red,
- ['r?'] = colors.red,
- ['!'] = colors.orange,
- t = colors.orange,
- },
- mode_color = function(self)
- local mode = conditions.is_active() and vim.fn.mode() or 'n'
- return self.mode_colors[mode]
- end,
- hl = function(self)
- local color = self:mode_color() -- here!
- return { bg = color }
- end,
- },
- fallthrough = false,
- SpecialStatusline,
- TerminalStatusline,
- InactiveStatusline,
- DefaultStatusline,
-}
-
---
---- WinBar
---
-local WinbarFileNameBlock = {
- -- let's first set up some attributes needed by this component and it's children
- init = function(self)
- self.filename = vim.api.nvim_buf_get_name(0)
- end,
- hl = { bg = colors.bg },
-}
-
-local WinbarFileName = {
- provider = function(self)
- -- first, trim the pattern relative to the current directory. For other
- -- options, see :h filename-modifers
- local filename = vim.fn.fnamemodify(self.filename, ':.')
- if filename == '' then
- return 'No Name'
- end
- -- now, if the filename would occupy more than 1/4th of the available
- -- space, we trim the file path to its initials
- -- See Flexible Components section below for dynamic truncation
- if not conditions.width_percent_below(#filename, 0.25) then
- filename = vim.fn.pathshorten(filename)
- end
- return filename
- end,
- --hl = { fg = utils.get_highlight("Statusline").fg, bold = false, bg = colors.bg },
- hl = { fg = colors.gray, bold = false, bg = colors.bg },
-}
-
-WinbarFileNameBlock = utils.insert(
- WinbarFileNameBlock,
- FileIcon,
- utils.insert(WinbarFileName), -- a new table where FileName is a child of FileNameModifier
- unpack(FileFlags), -- A small optimisation, since their parent does nothing
- { provider = '%<' } -- this means that the statusline is cut here when there's not enough space
-)
-
-vim.api.nvim_create_autocmd('User', {
- pattern = 'HeirlineInitWinbar',
- callback = function(args)
- local buf = args.buf
- local buftype = vim.tbl_contains({ 'prompt', 'nofile', 'help', 'quickfix' }, vim.bo[buf].buftype)
- local filetype = vim.tbl_contains({ 'gitcommit', 'fugitive' }, vim.bo[buf].filetype)
- if buftype or filetype then
- vim.opt_local.winbar = nil
- end
- end,
-})
-
-On_click = {
- -- get the window id of the window in which the component was evaluated
- minwid = function()
- return vim.api.nvim_get_current_win()
- end,
- callback = function(_, minwid)
- -- winid is the window id of the window the component was clicked from
- local winid = minwid
- -- do something with the window id, e.g.:
- local buf = vim.api.nvim_win_get_buf(winid)
- -- ...
- end,
-}
-
-local CloseButton = {
- condition = function(self)
- return not vim.bo.modified
- end,
- -- a small performance improvement:
- -- re register the component callback only on layout/buffer changes.
- update = { 'WinNew', 'WinClosed', 'BufEnter' },
- { provider = ' ' },
- {
- provider = '',
- hl = { fg = 'gray' },
- On_click = {
- minwid = function()
- return vim.api.nvim_get_current_win()
- end,
- callback = function(_, minwid)
- vim.api.nvim_win_close(minwid, true)
- end,
- name = 'heirline_winbar_close_button',
- },
- },
-}
-
-local Center = {
- fallthrough = false,
- {
- -- Hide the winbar for special buffers
- condition = function()
- return conditions.buffer_matches({
- buftype = { 'terminal', 'nofile', 'prompt', 'help', 'quickfix' },
- filetype = { 'dap-ui', 'NvimTree', '^git.*', 'fugitive', 'dashboard' },
- })
- end,
- init = function()
- vim.opt_local.winbar = nil
- end,
- },
- {
- -- A special winbar for terminals
- condition = function()
- return conditions.buffer_matches({ buftype = { 'terminal' } })
- end,
- FileType,
- Space,
- --TerminalName,
- },
- {
- -- An inactive winbar for regular files
- condition = function()
- return not conditions.is_active()
- end,
- --utils.surround({ "", "" }, colors.nobg, { FileIcon, { WinbarFileName, hl = { fg = colors.gray } }, FileFlags } ),
- utils.surround({ '', '' }, colors.nobg, { WinbarFileNameBlock }),
- },
- -- A winbar for regular files
- utils.surround({ '', '' }, colors.nobg, { FileNameBlock }),
-}
-
---local WinBar = { Align, Center, Align }
-local WinBar = { Space, Center }
-
--- TabLine
---local TablineBufnr = {
--- provider = function(self)
--- return tostring(self.bufnr) .. "."
--- end,
--- hl = { fg = colors.white, bold = false },
----- hl = "Comment",
---}
-
--- we redefine the filename component, as we probably only want the tail and not the relative path
-local TablineFileName = {
- provider = function(self)
- -- self.filename will be defined later, just keep looking at the example!
- local filename = self.filename
- filename = filename == '' and 'No Name' or vim.fn.fnamemodify(filename, ':t')
- return filename
- end,
- hl = function(self)
- return { fg = colors.white, bold = self.is_active or self.is_visible, italic = true }
- end,
-}
-
-local TablineFileFlags = {
- {
- provider = function(self)
- if vim.bo[self.bufnr].modified then
- return ' [+] '
- end
- end,
- hl = { fg = colors.green },
- },
- {
- provider = function(self)
- if not vim.bo[self.bufnr].modifiable or vim.bo[self.bufnr].readonly then
- return '  '
- end
- end,
- hl = { fg = 'orange' },
- },
-}
-
-local TablineFileIcon = {
- init = function(self)
- local filename = self.filename
- local extension = vim.fn.fnamemodify(filename, ':e')
- self.icon, self.icon_color = require('nvim-web-devicons').get_icon_color(filename, extension, { default = true })
- end,
- provider = function(self)
- return self.icon and (' ' .. self.icon .. ' ')
- end,
- hl = function(self)
- return { fg = self.icon_color }
- end,
-}
-
--- Here the filename block finally comes together
-local TablineFileNameBlock = {
- init = function(self)
- self.filename = vim.api.nvim_buf_get_name(self.bufnr)
- end,
- hl = function(self)
- if self.is_active then
- return 'TabLineSel'
- -- why not?
- --elseif not vim.api.nvim_buf_is_loaded(self.bufnr) then
- --return { fg = "gray", bg = colors.bg }
- else
- return 'TabLineFill'
- end
- end,
- on_click = {
- callback = function(_, minwid, _, button)
- if button == 'm' then -- close on mouse middle click
- vim.api.nvim_buf_delete(minwid, { force = false })
- else
- vim.api.nvim_win_set_buf(0, minwid)
- end
- end,
- minwid = function(self)
- return self.bufnr
- end,
- name = 'heirline_tabline_buffer_callback',
- },
- --TablineBufnr,
- TablineFileIcon,
- TablineFileName,
- TablineFileFlags,
-}
-
--- a nice "x" button to close the buffer
-local TablineCloseButton = {
- condition = function(self)
- return not vim.api.nvim_buf_get_option(self.bufnr, 'modified')
- end,
- { provider = ' ' },
- {
- provider = ' ',
- --hl = { fg = "red", bg = colors.bg },
- hl = { fg = colors.red },
- on_click = {
- callback = function(_, minwid)
- vim.api.nvim_buf_delete(minwid, { force = false })
- end,
- minwid = function(self)
- return self.bufnr
- end,
- name = 'heirline_tabline_close_buffer_callback',
- },
- },
-}
-
--- The final touch!
-local TablineBufferBlock = utils.surround({ '', '' }, function(self)
- --local TablineBufferBlock = utils.surround({ "█", "█" }, function(self)
- if self.is_active then
- return utils.get_highlight('TabLineSel').bg
- else
- return utils.get_highlight('TabLineFill').bg
- end
-end, { Tab, TablineFileNameBlock, TablineCloseButton })
-
-local BufferLine = utils.make_buflist(
- TablineBufferBlock,
- { provider = ' ', hl = { fg = colors.white } }, -- left truncation, optional (defaults to "<")
- { provider = ' ', hl = { fg = colors.white } } -- right trunctation, also optional (defaults to ...... yep, ">")
--- by the way, open a lot of buffers and try clicking them ;)
-)
--- TabList
-local Tabpage = {
- provider = function(self)
- return '%' .. self.tabnr .. 'T ' .. self.tabnr .. ' %T'
- end,
- hl = function(self)
- if not self.is_active then
- return 'TabLineFill'
- else
- return 'TabLineSel'
- end
- end,
-}
-
-local TabpageClose = {
- provider = '%999X  %X',
- --hl = "TabLine",
- hl = { fg = colors.red, bg = colors.bg },
-}
-
-local TabPages = {
- -- only show this component if there's 2 or more tabpages
- condition = function()
- return #vim.api.nvim_list_tabpages() >= 2
- end,
- {
- provider = '%=',
- },
- utils.make_tablist(Tabpage),
- TabpageClose,
-}
-
--- TabLineOffset
-local TabLineOffset = {
- condition = function(self)
- local win = vim.api.nvim_tabpage_list_wins(0)[1]
- local bufnr = vim.api.nvim_win_get_buf(win)
- self.winid = win
-
- if vim.api.nvim_buf_get_option(bufnr, 'filetype') == 'NvimTree' then
- self.title = 'NvimTree'
- return true
- end
- end,
- provider = function(self)
- local title = self.title
- local width = vim.api.nvim_win_get_width(self.winid)
- local pad = math.ceil((width - #title) / 2)
- return string.rep(' ', pad) .. title .. string.rep(' ', pad)
- end,
- hl = { fg = colors.white, bg = '#333842', bold = true },
-
- --hl = function(self)
- -- if vim.api.nvim_get_current_win() == self.winid then
- -- return 'TablineSel'
- -- else
- -- return 'TablineFill'
- -- end
- --end,
-}
-
-local TabLine = {
- TabLineOffset,
- BufferLine,
- TabPages,
-}
-
-require('heirline').setup({
- statusline = StatusLine,
- winbar = WinBar,
- tabline = TabLine,
- --statuscolumn = StatusColumn
-})
-
--- Yep, with heirline we're driving manual!
-vim.o.showtabline = 2
-vim.cmd([[au FileType * if index(['wipe', 'delete', 'unload'], &bufhidden) >= 0 | set nobuflisted | endif]])
-
-local function get_bufs()
- return vim.tbl_filter(function(bufnr)
- return vim.api.nvim_buf_is_loaded(bufnr) and vim.bo[bufnr].buflisted
- end, vim.api.nvim_list_bufs())
-end
-
-local function goto_buf(index)
- local bufs = get_bufs()
- if index > #bufs then
- index = #bufs
- end
- vim.api.nvim_win_set_buf(0, bufs[index])
-end
-
-local function addKey(key, index)
- vim.keymap.set('', '<A-' .. key .. '>', function()
- goto_buf(index)
- end, { noremap = true, silent = true })
-end
-
-for i = 1, 9 do
- addKey(i, i)
-end
-addKey('0', 10)
diff --git a/.config/nvim/lua/plugins/leetcode.lua b/.config/nvim/lua/plugins/leetcode.lua
deleted file mode 100644
index 50369e1..0000000
--- a/.config/nvim/lua/plugins/leetcode.lua
+++ /dev/null
@@ -1,68 +0,0 @@
----@alias lc.lang
----| "cpp"
----| "java"
----| "python"
----| "python3"
----| "c"
----| "csharp"
----| "javascript"
----| "typescript"
----| "php"
----| "swift"
----| "kotlin"
----| "dart"
----| "golang"
----| "ruby"
----| "scala"
----| "rust"
----| "racket"
----| "erlang"
----| "elixir"
-
----@alias lc.sql_lang
----| "pythondata"
----| "mysql"
----| "mssql"
----| "oraclesql"
-
----@alias lc.domain
----| "com"
----| "cn"
-
----@class lc.UserConfig
-local M = {
- ---@type lc.domain
- domain = 'com', -- For now "com" is the only one supported
-
- ---@type string
- arg = 'leetcode.nvim',
-
- ---@type lc.lang
- lang = 'cpp',
-
- ---@type lc.sql_lang
- sql = 'mysql',
-
- ---@type string
- directory = vim.fn.stdpath('data') .. '/leetcode/',
-
- ---@type boolean
- logging = true,
-
- console = {
- ---@type boolean
- open_on_runcode = false,
-
- size = {
- width = '75%', ---@type string | integer
- height = '75%', ---@type string | integer
- },
- dir = 'row', ---@type "col" | "row"
- },
-
- description = {
- width = '40%', ---@type string | integer
- },
-}
-
-return M
diff --git a/.config/nvim/lua/plugins/loclist.lua b/.config/nvim/lua/plugins/loclist.lua
deleted file mode 100644
index 9b72a94..0000000
--- a/.config/nvim/lua/plugins/loclist.lua
+++ /dev/null
@@ -1,18 +0,0 @@
-local M = {}
-
-function M.loclist_toggle()
- for _, info in ipairs(vim.fn.getwininfo()) do
- if info.loclist == 1 then
- vim.cmd('lclose')
- return
- end
- end
-
- if next(vim.fn.getloclist(0)) == nil then
- print('loc list empty')
- return
- end
- vim.cmd('lopen')
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua
deleted file mode 100644
index b081cb4..0000000
--- a/.config/nvim/lua/plugins/lsp.lua
+++ /dev/null
@@ -1,440 +0,0 @@
-local lspconfig = require('lspconfig')
-local mason_lspconfig = require('mason-lspconfig')
-local null_ls = require('null-ls')
--- local lsp_lines = require('lsp_lines')
-require('mason').setup()
-require('mason-null-ls').setup({ handlers = {}, ensure_installed = nil, automatic_installation = true, automatic_setup = true })
-
-local keymap = vim.keymap
-local cmd = vim.cmd
-
-local border = { { '┌', 'FloatBorder' }, { '─', 'FloatBorder' }, { '┐', 'FloatBorder' }, { '│', 'FloatBorder' }, { '┘', 'FloatBorder' }, { '─', 'FloatBorder' }, { '└', 'FloatBorder' }, { '│', 'FloatBorder' } }
-
--- Set up LSP servers if not done before
-if not vim.g.lsp_setup_done then
- -- Clear existing LSP clients
- for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
- local clients = require('user.mods').get_lsp_clients(bufnr)
-
- for _, client in ipairs(clients) do
- client.stop()
- end
- end
-
- local signs = { Error = ' ', Warn = '▲', Info = '􀅳', Hint = '⚑' }
- -- 
- for type, icon in pairs(signs) do
- local hl = 'DiagnosticSign' .. type
- vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
- end
-
- -- lsp_lines.setup()
-
- -- vim.keymap.set("n", "g?", function()
- -- local lines_enabled = not vim.diagnostic.config().virtual_lines
- -- vim.diagnostic.config(
- -- {
- -- virtual_lines = lines_enabled,
- -- virtual_text = not lines_enabled
- -- }
- -- )
- -- end, { noremap = true, silent = true })
-
- vim.diagnostic.config({
- underline = false,
- signs = true,
- virtual_text = true, -- virtual_lines = { only_current_line = true },
- virtual_lines = false,
- float = {
- show_header = true,
- source = 'if_many', -- border = 'rounded',
- border = border,
- focusable = true,
- },
- update_in_insert = false, -- default to false
- severity_sort = true, -- default to false
- })
-
- vim.lsp.handlers['textDocument/publishDiagnostics'] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { underline = false, virtual_text = false, signs = true, update_in_insert = false })
-
- vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'rounded' })
- vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = 'rounded' })
-
- -- Use an on_attach function to only map the following keys after the language server attaches to the current buffer
- local on_attach = function(client, bufnr)
- -- Enable completion triggered by <c-x><c-o>
- vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
- local map = function(mode, l, r, opts)
- opts = opts or {}
- opts.silent = true
- opts.noremap = true
- opts.buffer = bufnr
- keymap.set(mode, l, r, opts)
- end
- -- Mappings
- map('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>')
- -- map("n", "gd", "<Cmd>lua vim.lsp.buf.definition()<CR>")
- map('n', 'gd', "<cmd>lua require('goto-preview').goto_preview_definition()<CR>")
- -- map("n", "gi", "<Cmd>lua vim.lsp.buf.implementation()<CR>")
- map('n', 'gi', "<cmd>lua require('goto-preview').goto_preview_implementation()<CR>")
- -- map("n", "gr", "<Cmd>lua vim.lsp.buf.references()<CR>")
- map('n', 'gr', "<cmd>lua require('goto-preview').goto_preview_references()<CR>")
- map('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>') -- most lsp servers don't implement textDocument/Declaration, so gD is useless for now.
- map('n', '<leader>k', '<Cmd>lua vim.lsp.buf.signature_help()<CR>')
- -- map("n", "gt", "<Cmd>lua vim.lsp.buf.type_definition()<CR>")
- map('n', 'gt', "<cmd>lua require('goto-preview').goto_preview_type_definition()<CR>")
- map('n', 'gn', '<Cmd>lua vim.lsp.buf.rename()<CR>')
- map('n', 'ga', '<Cmd>lua vim.lsp.buf.code_action()<CR>')
- map('n', 'gf', '<Cmd>lua vim.lsp.buf.format()<CR>')
- map('n', 'go', '<Cmd>lua vim.diagnostic.open_float()<CR>')
- map('n', '<leader>go', ":call utils#ToggleDiagnosticsOpenFloat()<CR> | :echom ('Toggle Diagnostics Float open/close...')<CR> | :sl! | echo ('')<CR>")
- map('n', 'gq', '<Cmd>lua vim.diagnostic.setloclist()<CR>')
- map('n', '[d', '<Cmd>lua vim.diagnostic.goto_prev()<CR>')
- map('n', ']d', '<Cmd>lua vim.diagnostic.goto_next()<CR>')
- map('n', 'gs', '<Cmd>lua vim.lsp.buf.document_symbol()<CR>')
- map('n', 'gw', '<Cmd>lua vim.lsp.buf.workspace_symbol()<CR>')
- map('n', '<leader>wa', '<Cmd>lua vim.lsp.buf.add_workspace_folder()<CR>')
- map('n', '<leader>wr', '<Cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>')
- map('n', '<leader>wl', function()
- print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
- end)
-
- -- TODO: Use the nicer new API for autocommands
- cmd('augroup lsp_aucmds')
- if client.server_capabilities.documentHighlightProvider then
- cmd('au CursorHold <buffer> lua vim.lsp.buf.document_highlight()')
- cmd('au CursorMoved <buffer> lua vim.lsp.buf.clear_references()')
- end
- cmd('augroup END')
- end
-
- -- Toggle diagnostics visibility
- vim.g.diagnostics_visible = true
- function _G.toggle_diagnostics()
- if vim.g.diagnostics_visible then
- vim.g.diagnostics_visible = false
- vim.diagnostic.disable()
- else
- vim.g.diagnostics_visible = true
- vim.diagnostic.enable()
- end
- end
-
- -- Open float for diagnostics automatically
- vim.cmd([[
- augroup OpenFloat
- " autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focusable = false,})
- autocmd CursorHold * lua vim.diagnostic.open_float(nil, {focusable = false,})
-
- augroup END
- ]])
-
- -- Suppress error messages from lang servers
- vim.lsp.set_log_level('debug')
- local capabilities = vim.lsp.protocol.make_client_capabilities()
- capabilities = require('cmp_nvim_lsp').default_capabilities()
- capabilities.textDocument.completion.completionItem.snippetSupport = true
- capabilities.offsetEncoding = { 'utf-8', 'utf-16' }
-
- local function prefer_null_ls_fmt(client)
- client.server_capabilities.documentHighlightProvider = true
- client.server_capabilities.documentFormattingProvider = true
- on_attach(client)
- end
-
- --local cmp_nvim_lsp = require('cmp_nvim_lsp')
- local servers = {
- asm_lsp = {},
- bashls = {},
- clangd = {
- on_attach = on_attach,
- capabilites = capabilities,
- cmd = { 'clangd', '--offset-encoding=utf-16', '--cross-file-rename', '--header-insertion=never', '--suggest-missing-includes' },
- init_options = {
- clangdFileStatus = true,
- },
- root_files = {
- '.clangd',
- '.clang-tidy',
- '.clang-format',
- 'compile_commands.json',
- 'compile_flags.txt',
- 'configure.ac', -- AutoTools
- },
- },
- cssls = { filetypes = { 'css', 'scss', 'less', 'sass' }, root_dir = lspconfig.util.root_pattern('package.json', '.git') }, -- ghcide = {},
- html = {},
- jsonls = { prefer_null_ls = true, cmd = { '--stdio' } },
- intelephense = {},
- julials = {
- on_new_config = function(new_config, _)
- local julia = vim.fn.expand('~/.julia/environments/nvim-lspconfig/bin/julia')
- if lspconfig.util.path.is_file(julia) then
- new_config.cmd[1] = julia
- end
- end,
- settings = { julia = { format = { indent = 2 } } },
- },
- pyright = { settings = { python = { formatting = { provider = 'yapf' }, linting = { pytypeEnabled = true } } } },
- rust_analyzer = {
- settings = {
- ['rust-analyzer'] = { cargo = { allFeatures = true }, checkOnSave = { command = 'clippy', extraArgs = { '--no-deps' } } },
- },
- },
- dartls = {
- cmd = { 'dart', 'language-server', '--protocol=lsp' },
- filetypes = { 'dart' },
- init_options = {
- closingLabels = true,
- flutterOutline = true,
- onlyAnalyzeProjectsWithOpenFiles = true,
- outline = true,
- suggestFromUnimportedLibraries = true,
- }, -- root_dir = root_pattern("pubspec.yaml"),
- settings = { dart = { completeFunctionCalls = true, showTodos = true } },
- on_attach = function(client, bufnr) end,
- },
- lua_ls = {
- on_attach = on_attach,
- capabilities = capabilities,
- debounce_text_changes = 500,
- settings = {
- Lua = {
- runtime = { version = 'LuaJIT', path = vim.split(package.path, ';') },
- diagnostics = { enable = true, globals = { 'vim' } },
- workspace = { maxPreload = 2000, preloadFileSize = 50000, checkThirdParty = false },
- },
- },
- },
- sqlls = {},
- tsserver = {
- capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()),
- on_attach = function(client)
- client.server_capabilities.document_formatting = false
- client.server_capabilities.document_range_formatting = false
- end,
- filetypes = { 'javascript', 'javascriptreact', 'javascript.jsx', 'typescript', 'typescriptreact', 'typescript.tsx' },
- },
- vimls = {},
- yamlls = {},
- }
-
- mason_lspconfig.setup({
- ensure_installed = servers, -- will be installed by mason
- automatic_installation = true,
- })
-
- -- Your other configurations ...
- -- require("lspconfig").dartls.setup({ capabilities = capabilities })
- -- local installed_lsp = mason_lspconfig.ensure_installed
- -- local mason_lspconfig = require("mason-lspconfig").ensure_installed
-
- -- require("lspconfig").setup({
- -- function()
- -- for _, lsp in ipairs(installed_lsp) do
- -- if
- -- lsp ~= "sqls"
- -- --and lsp ~= "sumneko_lua"
- -- --and lsp ~= "stylelint_lsp"
- -- --and lsp ~= "rust_analyzer"
- -- --and lsp ~= "sourcekit"
- -- and lsp ~= "dartls"
- -- then
- -- lspconfig[lsp].setup({
- -- on_attach = on_attach,
- -- capabilities = capabilities,
- -- })
- -- end
- -- end
- -- end,
- -- })
-
- for server, config in pairs(servers) do
- if config.prefer_null_ls then
- if config.on_attach then
- local old_on_attach = config.on_attach
- config.on_attach = function(client, bufnr)
- old_on_attach(client, bufnr)
- prefer_null_ls_fmt(client)
- end
- else
- config.on_attach = prefer_null_ls_fmt
- end
- elseif not config.on_attach then
- config.on_attach = on_attach
- end
-
- lspconfig[server].setup(config)
- end
-
- -- null_ls setup
- local builtins = null_ls.builtins
- local augroup = vim.api.nvim_create_augroup('LspFormatting', {})
-
- -- local eslint_opts = {
- -- -- condition = function(utils)
- -- -- return utils.root_has_file ".eslintrc.js" or utils.root_has_file ".eslintrc" or utils.root_has_file ".eslintrc.json"
- -- -- end,
- -- -- diagnostics_format = "#{m} [#{c}]",
- -- prefer_local = true,
- -- }
-
- -- null_ls.setup({
- local sources = {
- -- Diagnostics
- builtins.diagnostics.chktex,
- -- null_ls.builtins.code_actions.eslint_d,
- -- null_ls.builtins.diagnostics.eslint_d,
- -- null_ls.builtins.formatting.eslint_d,
- -- null_ls.builtins.diagnostics.cppcheck,
- -- null_ls.builtins.diagnostics.proselint,
- -- null_ls.builtins.diagnostics.pylint,
- -- builtins.diagnostics.selene,
- builtins.diagnostics.dotenv_linter,
- builtins.diagnostics.shellcheck.with({ -- shell script diagnostics
- diagnostic_config = { -- see :help vim.diagnostic.config()
- underline = true,
- virtual_text = false,
- signs = true,
- update_in_insert = false,
- severity_sort = true,
- },
- diagnostics_format = '[#{c}] #{m} (#{s})', -- this will run every time the source runs,
- -- so you should prefer caching results if possible
- }),
- builtins.diagnostics.zsh.with({ filetypes = 'zsh', 'sh' }),
- builtins.diagnostics.todo_comments,
- builtins.diagnostics.teal,
- -- null_ls.builtins.diagnostics.vale,
- builtins.diagnostics.vint,
- builtins.diagnostics.tidy,
- builtins.diagnostics.php,
- builtins.diagnostics.phpcs,
- builtins.diagnostics.flake8,
- builtins.diagnostics.eslint_d.with({
- condition = function(utils)
- return utils.root_has_file('.eslintrc.json')
- end,
- }),
- builtins.formatting.eslint_d,
- -- null_ls.builtins.diagnostics.write_good.with { filetypes = { 'markdown', 'tex' } },
-
- -- Formatting
- builtins.formatting.shfmt.with({ filetypes = { 'bash', 'zsh', 'sh' }, extra_args = { '-i', '2', '-ci' } }),
- builtins.formatting.shellharden,
- builtins.formatting.trim_whitespace.with({ filetypes = { 'tmux', 'teal', 'zsh' } }), -- builtins.formatting.beautysh,
- builtins.formatting.beautysh.with({ filetypes = 'zsh' }),
- builtins.formatting.clang_format.with({
- filetypes = { 'c', 'cpp', 'cs', 'java', 'cuda', 'proto' },
- extra_args = {
- '--style',
- '{BasedOnStyle: Google, IndentWidth: 4, BreakBeforeBinaryOperators: NonAssignment, AllowShortFunctionsOnASingleLine: None}',
- },
- }),
- builtins.formatting.rustfmt,
- builtins.formatting.sql_formatter,
- -- null_ls.builtins.formatting.cmake_format,
- builtins.formatting.isort,
- builtins.formatting.htmlbeautifier, -- null_ls.builtins.formatting.prettier,
- builtins.formatting.prettierd,
- builtins.formatting.prettier.with({
- filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact', 'json', 'yaml', 'markdown', 'html', 'css', 'scss', 'less', 'graphql', 'vue', 'svelte' },
- extra_args = { '--single-quote', '--tab-width 4', '--print-width 200' },
- }),
- builtins.formatting.rustfmt,
- -- builtins.formatting.stylua,
- -- builtins.formatting.lua_format,
- builtins.formatting.stylua.with({
- filetypes = { 'lua' },
- command = 'stylua',
- args = { '--quote_style', 'AutoPreferSingle', '--indent-width', '2', '--column-width', '160', '--indent-type', 'Spaces', '-' },
- }),
- -- builtins.formatting.dart_format,
- builtins.formatting.dart_format.with({ filetypes = { 'dart' } }),
- builtins.formatting.trim_whitespace,
- builtins.formatting.yapf,
- -- null_ls.builtins.formatting.black
-
- -- Code Actions
- builtins.code_actions.shellcheck, -- shell script code actions
- -- builtins.code_actions.eslint_d.with(eslint_opts),
- -- null_ls.builtins.code_actions.refactoring.with { filetypes = { 'javascript', 'typescript', 'lua', 'python', 'c', 'cpp' } },
- builtins.code_actions.gitsigns,
- builtins.code_actions.gitrebase, -- Hover
- builtins.hover.dictionary,
- builtins.hover.printenv,
- }
- -- })
- -- Linters/Formatters ensure installed
- -- for _, pkg_name in ipairs({
- -- "dart-debug-Adaptor",
- -- "stylua",
- -- "prettier",
- -- "prettierd",
- -- }) do
-
- -- Import the builtins table from the null-ls module and store it in the null_ls_sources variable
- null_ls.setup({
- sources = sources,
- update_in_insert = true,
- on_attach = function(client, bufnr)
- if client.supports_method('textDocument/formatting') then
- vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
- vim.api.nvim_create_autocmd('BufWritePre', {
- group = augroup,
- buffer = bufnr,
- callback = function()
- vim.lsp.buf.format()
- end,
- })
- end
- end,
- })
-
- -- Install all the null-ls sources using Mason
- local registry = require('mason-registry')
- for _, source_name in ipairs(sources) do
- local ok, pkg = pcall(registry.get_package, source_name)
- if ok then
- if not pkg:is_installed() then
- pkg:install()
- end
- end
- end
- -- Loop through the null_ls_sources table and install the packages
- -- Install all sources for null-ls
- -- local null_ls_sources = require("null-ls").builtins
-
- -- for _, source_name in ipairs(null_ls_sources) do
- -- local ok, pkg = pcall(mason.get_package, source_name)
- -- if ok then
- -- if not pkg:is_installed() then
- -- pkg:install()
- -- end
- -- end
- -- end
- vim.api.nvim_create_user_command('NullLsToggle', function()
- -- you can also create commands to disable or enable sources
- require('null-ls').toggle({})
- end, {})
-
- local null_ls_stop = function()
- local null_ls_client
- local clients = require('user.mods').get_lsp_clients(bufnr)
-
- for _, client in ipairs(clients) do
- if client.name == 'null-ls' then
- null_ls_client = client
- end
- end
- if not null_ls_client then
- return
- end
-
- null_ls_client.stop()
- end
-
- vim.api.nvim_create_user_command('NullLsStop', null_ls_stop, {})
-
- vim.g.lsp_setup_done = true
-end
diff --git a/.config/nvim/lua/plugins/messages.lua b/.config/nvim/lua/plugins/messages.lua
deleted file mode 100644
index 8e46c09..0000000
--- a/.config/nvim/lua/plugins/messages.lua
+++ /dev/null
@@ -1,85 +0,0 @@
-local M = {
- 'Why do programmers prefer dark mode? Because light attracts bugs!',
- 'Why did the AI break up with its computer? It found someone with better algorithms!',
- "Why do Python programmers prefer snakes? Because they can't stand Java!",
- 'Why did the developer go to the beach? To catch some rays and debug JavaScript!',
- "Why was the HTML document lonely? It didn't have any <body> to share its content with!",
- "Why did the CSS file break up with the HTML file? It couldn't stand the layout!",
- 'Why do programmers always mix up Christmas and Halloween? Because Oct 31 == Dec 25!',
- 'Why did the computer take up gardening? It wanted to improve its root system!',
- 'Why do programmers prefer dark chocolate? It has better byte-size!',
- "Why did the developer get mad at their computer? It couldn't understand their emotional code!",
- 'Why was the JavaScript developer so good at relationships? They knew how to handle callbacks!',
- 'Why did the coder go broke? They lost all their cache!',
- 'Why did the SQL query go to therapy? It had too many inner joins!',
- 'Why did the programmer plant a light bulb? They wanted to grow a power plant!',
- 'Why did the computer keep its drink on the windowsill? It wanted a byte!',
- "Why don't programmers like nature? It has too many bugs!",
- 'Why did the developer go broke? They spent all their money on keyboard shortcuts!',
- 'Why did the computer cross the road? To get to the other website!',
- 'Why was the code cold? It left its Windows open!',
- 'Why did the coder go to therapy? They had too many issues!',
- 'Why was the function sad? It returned null!',
- "Why did the programmer quit their job? They didn't get arrays!",
- 'Why was the loop so fast? It was in a hurry!',
- 'Why was the computer cold? It left its Windows open!',
- "Why did the developer stay calm during the crisis? Because they knew how to 'handle' exceptions!",
- "Why did the JavaScript developer always smile? Because they had 'callbacks' for everything!",
- "Why did the programmer break up with their keyboard? It had too many 'commitment' issues!",
- "Why don't Neovim users ever get lost in their text files? Because they always 'find' their way!",
- "Why don't Neovim users need a GPS? Because they're experts at 'mapping' their routes!",
- 'Why did the Neovim user become a musician? Because they can play the keyboard like a pro!',
- "Why don't Neovim users ever lose track of time? Because they have a 'status line' to keep them informed!",
- "Why did the Neovim user open a detective agency? Because they have an 'eye' for spotting code errors!",
- 'Why did the developer bring a ladder to the coding competition? To take their code to the next level!',
- "When your code is running slowly: 'It's not a bug; it's a feature that takes its time.'",
- "Why did the programmer go to therapy? Because their code had too many 'issues'!",
- "Why was the JavaScript developer sad? Because they didn't 'console' their feelings!",
- "Why did the developer get locked out of their own codebase? They forgot the 'key'!",
- 'Welcome to Neovim, where plugins multiply faster than rabbits!',
- "How many programmers does it take to change a lightbulb? None, that's a hardware problem!",
- "When you're debugging and can't find the issue: 'I swear, it was working yesterday!'",
- "Why don't programmers trust stairs? Because they're always up to 'something'!",
- "When you fix a bug without even trying: 'I guess I'm just that good.'",
- 'Why was the computer cold? It left its Windows open!',
- "Why do Java developers wear glasses? Because they don't C#!",
- "Why did the programmer quit their job? They didn't get arrays!",
- "When you write a one-liner that solves a complex problem: 'I am a genius, yes, I am.'",
- "When you refactor your code and it breaks everything: 'I've made a huge mistake.'",
- "When you accidentally close your editor with unsaved changes: 'Goodbye, cruel world.'",
- "When you discover a bug on a Friday afternoon: 'Looks like we're working late again.'",
- "When you realize your code from last year: 'Who wrote this junk? Oh, wait...'",
- "When you write a comment and six months later can't understand it: 'I speak my own language.'",
- "When you join a new project with zero documentation: 'Here be dragons.'",
- "When you add a 'TODO' comment and hope someone else will deal with it: 'Not my problem.'",
- "Remember, coding is not just about writing code; it's about solving problems.",
- 'Stay curious and never stop learning. Technology is always evolving.',
- "When debugging, don't guess; use systematic troubleshooting techniques.",
- "Keep your code DRY (Don't Repeat Yourself) to make it more maintainable.",
- 'Use meaningful variable and function names. Your code should read like a story.',
- 'Always test your code thoroughly before deploying it. Automated tests are your friends.',
- 'Spend time designing your code before jumping into implementation. Good architecture pays off.',
- 'Learn to break down complex problems into smaller, manageable tasks.',
- "Code with the future in mind. Write code that's easy to understand and maintain.",
- 'Version control is your safety net. Use Git or other VCS systems religiously.',
- 'Document your code and processes. It will save you and your team countless hours.',
- "Don't optimize prematurely. Measure first, then optimize where it matters.",
- "Read other people's code. It's a great way to learn different coding styles and techniques.",
- 'Stay organized with your project structure. Consistency makes collaboration smoother.',
- 'Take regular breaks to prevent burnout. Your productivity will thank you.',
- 'Use comments sparingly but effectively. Explain why, not just what.',
- 'Consider pair programming or code reviews to catch issues early and learn from others.',
- 'Know when to ask for help. Programming is a team effort.',
- "Programming is not just about the code; it's about the problem-solving mindset.",
- 'Keep your development environment clean and well-maintained for consistent productivity.',
- 'Learn from your mistakes and failures; they are valuable lessons in programming.',
- 'When faced with a bug, isolate and reproduce it before attempting to fix it.',
- "Why did the developer stay calm during the crisis? Because they knew how to 'handle' exceptions.",
- "Why was the JavaScript developer always smiling? Because they had 'callbacks' for everything!",
- "Why did the programmer break up with their keyboard? It had too many 'commitment' issues!",
- "Margaret Hamilton coined the term 'software engineer.'",
- 'Why did the function go to therapy? It had too many issues!',
- "Why don't programmers like nature? It has too many bugs!",
-}
-
-return M
diff --git a/.config/nvim/lua/plugins/modify-blend.lua b/.config/nvim/lua/plugins/modify-blend.lua
deleted file mode 100644
index 1b2c6d5..0000000
--- a/.config/nvim/lua/plugins/modify-blend.lua
+++ /dev/null
@@ -1,43 +0,0 @@
-local ui = vim.api.nvim_list_uis()[1]
-
-local bufnr = vim.api.nvim_create_buf(true, true)
-local win = vim.api.nvim_open_win(bufnr, true, {
- relative = "editor",
- --relative = "cursor",
- width = ui.width,
- height = ui.height,
- anchor = "NE",
- row = 10,
- col = 10,
- style = "minimal",
- zindex = 50,
-})
-
-vim.api.nvim_win_set_option(win, "winblend", 1)
-
-local blend_start = 15
-local offset = 1
-
-CANCEL = false
-local timer = vim.loop.new_timer()
-timer:start(
- 0,
- 50,
- vim.schedule_wrap(function()
- blend_start = blend_start + offset
-
- if blend_start > 90 then
- offset = -1
- elseif blend_start < 10 then
- offset = 1
- end
-
- if CANCEL or not vim.api.nvim_win_is_valid(win) then
- timer:close()
- timer:stop()
- return
- end
-
- vim.cmd([[highlight NormalFloat blend=]] .. tostring(blend_start))
- end)
-)
diff --git a/.config/nvim/lua/plugins/navic.lua b/.config/nvim/lua/plugins/navic.lua
deleted file mode 100644
index a95485d..0000000
--- a/.config/nvim/lua/plugins/navic.lua
+++ /dev/null
@@ -1,50 +0,0 @@
-local navic = require("nvim-navic")
---local on_attach = function(client, bufnr)
--- if client.server_capabilities.documentSymbolProvider then
--- navic.attach(client, bufnr)
--- end
---end
-
---require("lspconfig").clangd.setup {
--- on_attach = on_attach
---}
-
-navic.setup {
- icons = {
- File = " ",
- Module = " ",
- Namespace = " ",
- Package = " ",
- Class = " ",
- Method = " ",
- Property = " ",
- Field = " ",
- Constructor = " ",
- Enum = "練",
- Interface = "練",
- Function = " ",
- Variable = " ",
- Constant = " ",
- String = " ",
- Number = " ",
- Boolean = "◩ ",
- Array = " ",
- Object = " ",
- Key = " ",
- Null = "ﳠ ",
- EnumMember = " ",
- Struct = " ",
- Event = " ",
- Operator = " ",
- TypeParameter = " ",
- },
- lsp = {
- auto_attach = true,
- --preference = nil,
- },
- highlight = false,
- separator = " > ",
- depth_limit = 0,
- depth_limit_indicator = "..",
- safe_output = true
-}
diff --git a/.config/nvim/lua/plugins/neodev.lua b/.config/nvim/lua/plugins/neodev.lua
deleted file mode 100644
index f820422..0000000
--- a/.config/nvim/lua/plugins/neodev.lua
+++ /dev/null
@@ -1,29 +0,0 @@
-require("neodev").setup({
- --library = { plugins = { "nvim-dap-ui" }, types = true },
- --library = { plugins = { "neotest" }, types = true },
- library = {
- enabled = true, -- when not enabled, neodev will not change any settings to the LSP server
- -- these settings will be used for your Neovim config directory
- runtime = true, -- runtime path
- types = true, -- full signature, docs and completion of vim.api, vim.treesitter, vim.lsp and others
- --plugins = { "neotest" },
- --{ "nvim-dap-ui" },
- --plugins = true, -- installed opt or start plugins in packpath
- -- you can also specify the list of plugins to make available as a workspace library
- -- plugins = { "nvim-treesitter", "plenary.nvim", "telescope.nvim" },
- plugins = { "nvim-treesitter", "plenary.nvim", "telescope.nvim", "neotest", "nvim-dap-ui" },
- },
- setup_jsonls = true, -- configures jsonls to provide completion for project specific .luarc.json files
- -- for your Neovim config directory, the config.library settings will be used as is
- -- for plugin directories (root_dirs having a /lua directory), config.library.plugins will be disabled
- -- for any other directory, config.library.enabled will be set to false
- override = function(root_dir, options)
- end,
- -- With lspconfig, Neodev will automatically setup your lua-language-server
- -- If you disable this, then you have to set {before_init=require("neodev.lsp").before_init}
- -- in your lsp start options
- lspconfig = true,
- -- much faster, but needs a recent built of lua-language-server
- -- needs lua-language-server >= 3.6.0
- pathStrict = true,
-})
diff --git a/.config/nvim/lua/plugins/neoscroll.lua b/.config/nvim/lua/plugins/neoscroll.lua
deleted file mode 100644
index d122584..0000000
--- a/.config/nvim/lua/plugins/neoscroll.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-require("neoscroll").setup({
- easing_function = "quadratic",
-})
-
-local t = {}
--- Syntax: t[keys] = {function, {function arguments}}
--- Use the "sine" easing function
-t["<C-u>"] = { "scroll", { "-vim.wo.scroll", "true", "20", [['cubic']] } }
-t["<C-d>"] = { "scroll", { "vim.wo.scroll", "true", "20", [['cubic']] } }
--- Use the "circular" easing function
-t["<C-b>"] = { "scroll", { "-vim.api.nvim_win_get_height(0)", "true", "50", [['cubic']] } }
-t["<C-f>"] = { "scroll", { "vim.api.nvim_win_get_height(0)", "true", "50", [['cubic']] } }
--- Pass "nil" to disable the easing animation (constant scrolling speed)
-t["<C-y>"] = { "scroll", { "-0.10", "false", "100", nil } }
-t["<C-e>"] = { "scroll", { "0.10", "false", "100", nil } }
--- When no easing function is provided the default easing function (in this case "quadratic") will be used
-t["zt"] = { "zt", { "10" } }
-t["zz"] = { "zz", { "10" } }
-t["zb"] = { "zb", { "10" } }
-
-require("neoscroll.config").set_mappings(t)
diff --git a/.config/nvim/lua/plugins/neotest.lua b/.config/nvim/lua/plugins/neotest.lua
deleted file mode 100644
index aa73899..0000000
--- a/.config/nvim/lua/plugins/neotest.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-require("neotest").setup({
- adapters = {
- require("neotest-python")({
- dap = { justMyCode = false },
- }),
- require("neotest-plenary"),
- require("neotest-vim-test")({
- ignore_file_types = { "python", "vim", "lua" },
- }),
- },
-})
diff --git a/.config/nvim/lua/plugins/notify.lua b/.config/nvim/lua/plugins/notify.lua
deleted file mode 100644
index dcb496a..0000000
--- a/.config/nvim/lua/plugins/notify.lua
+++ /dev/null
@@ -1,18 +0,0 @@
-require('notify').setup({
- background_colour = '#000000',
- icons = {
- ERROR = '',
- WARN = '',
- INFO = '',
- DEBUG = '',
- TRACE = '✎',
- },
-})
-
-vim.api.nvim_command('hi default link NotifyERRORBody Normal')
-vim.api.nvim_command('hi default link NotifyWARNBody Normal')
-vim.api.nvim_command('hi default link NotifyINFOBody Normal')
-vim.api.nvim_command('hi default link NotifyDEBUGBody Normal')
-vim.api.nvim_command('hi default link NotifyTRACEBody Normal')
-vim.api.nvim_command('hi default link NotifyLogTime Comment')
-vim.api.nvim_command('hi default link NotifyLogTitle Special')
diff --git a/.config/nvim/lua/plugins/nvim-tree.lua b/.config/nvim/lua/plugins/nvim-tree.lua
deleted file mode 100644
index f82a327..0000000
--- a/.config/nvim/lua/plugins/nvim-tree.lua
+++ /dev/null
@@ -1,403 +0,0 @@
------------------------------------------------------------
--- Neovim File Tree Configuration
------------------------------------------------------------
-
---- To see mappings `g?` on nvim-tree
---- To see default mappings `:nvim-tree-default-mappings`
-
-local icons = {
- webdev_colors = true,
- git_placement = 'signcolumn',
- modified_placement = 'after',
- padding = ' ',
- show = {
- file = true,
- folder = true,
- folder_arrow = true,
- git = true,
- modified = true,
- },
-
- glyphs = {
- default = '󰈔',
- symlink = '',
- folder = {
- arrow_open = '',
- arrow_closed = '',
- default = ' ',
- open = ' ',
- empty = ' ',
- empty_open = ' ',
- symlink = '',
- symlink_open = '',
- },
-
- git = {
- deleted = '',
- unmerged = '',
- untracked = '',
- unstaged = '',
- staged = '',
- renamed = '➜',
- ignored = '◌',
- },
- },
- web_devicons = {
- folder = {
- enable = true,
- color = true,
- },
- },
-}
-
-local renderer = {
- group_empty = true, -- default: true. Compact folders that only contain a single folder into one node in the file tree.
- highlight_git = false,
- full_name = false,
- highlight_opened_files = 'icon', -- "none" (default), "icon", "name" or "all"
- highlight_modified = 'icon', -- "none", "name" or "all". Nice and subtle, override the open icon
- root_folder_label = ':~:s?$?/..?',
- indent_width = 2,
- indent_markers = {
- enable = true,
- inline_arrows = true,
- icons = {
- corner = '└',
- edge = '│',
- item = '│',
- bottom = '─',
- none = ' ',
- },
- },
- icons = icons,
-}
-
-local system_open = { cmd = 'zathura' }
-
-local HEIGHT_RATIO = 0.8
-local WIDTH_RATIO = 0.15
-
-local float = {
- enable = false,
- open_win_config = function()
- local screen_w = vim.opt.columns:get()
- local screen_h = vim.opt.lines:get() - vim.opt.cmdheight:get()
- local window_w = screen_w * WIDTH_RATIO
- local window_h = screen_h * HEIGHT_RATIO
- local window_w_int = math.floor(window_w)
- local window_h_int = math.floor(window_h)
- local center_x = (screen_w - window_w) / 2
- local center_y = ((vim.opt.lines:get() - window_h) / 2) - vim.opt.cmdheight:get()
- return {
- border = 'rounded',
- relative = 'editor',
- row = center_y,
- col = center_x,
- width = window_w_int,
- height = window_h_int,
- }
- end,
-}
-
-local view = {
- cursorline = true,
- float = float,
- --signcolumn = 'no',
- width = function()
- return math.floor(vim.opt.columns:get() * WIDTH_RATIO)
- end,
- side = 'left',
-}
-
-local api = require('nvim-tree.api')
-local function on_attach(bufnr)
- local function opts(desc)
- return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
- end
-
- local mappings = {
- ['<C-]>'] = { api.tree.change_root_to_node, 'CD' },
- ['<C-e>'] = { api.node.open.replace_tree_buffer, 'Open: In Place' },
- ['<C-k>'] = { api.node.show_info_popup, 'Info' },
- ['<C-r>'] = { api.fs.rename_sub, 'Rename: Omit Filename' },
- ['<C-t>'] = { api.node.open.tab, 'Open: New Tab' },
- ['<C-v>'] = { api.node.open.vertical, 'Open: Vertical Split' },
- ['<C-x>'] = { api.node.open.horizontal, 'Open: Horizontal Split' },
- ['<BS>'] = { api.node.navigate.parent_close, 'Close Directory' },
- -- ["<CR>"] = { api.node.open.edit, "Open" },
- ['<Tab>'] = { api.node.open.preview, 'Open Preview' },
- ['>'] = { api.node.navigate.sibling.next, 'Next Sibling' },
- ['<'] = { api.node.navigate.sibling.prev, 'Previous Sibling' },
- ['.'] = { api.node.run.cmd, 'Run Command' },
- ['-'] = { api.tree.change_root_to_parent, 'Up' },
- ['a'] = { api.fs.create, 'Create' },
- ['bmv'] = { api.marks.bulk.move, 'Move Bookmarked' },
- ['B'] = { api.tree.toggle_no_buffer_filter, 'Toggle No Buffer' },
- ['c'] = { api.fs.copy.node, 'Copy' },
- -- ["C"] = { api.tree.toggle_git_clean_filter, "Toggle Git Clean" },
- ['[c'] = { api.node.navigate.git.prev, 'Prev Git' },
- [']c'] = { api.node.navigate.git.next, 'Next Git' },
- ['d'] = { api.fs.remove, 'Delete' },
- ['D'] = { api.fs.trash, 'Trash' },
- ['E'] = { api.tree.expand_all, 'Expand All' },
- ['e'] = { api.fs.rename_basename, 'Rename: Basename' },
- [']e'] = { api.node.navigate.diagnostics.next, 'Next Diagnostic' },
- ['[e'] = { api.node.navigate.diagnostics.prev, 'Prev Diagnostic' },
- ['F'] = { api.live_filter.clear, 'Clean Filter' },
- ['f'] = { api.live_filter.start, 'Filter' },
- ['g?'] = { api.tree.toggle_help, 'Help' },
- ['gy'] = { api.fs.copy.absolute_path, 'Copy Absolute Path' },
- ['H'] = { api.tree.toggle_hidden_filter, 'Toggle Dotfiles' },
- ['I'] = { api.tree.toggle_gitignore_filter, 'Toggle Git Ignore' },
- ['J'] = { api.node.navigate.sibling.last, 'Last Sibling' },
- ['K'] = { api.node.navigate.sibling.first, 'First Sibling' },
- ['m'] = { api.marks.toggle, 'Toggle Bookmark' },
- -- ["o"] = { api.node.open.edit, "Open" },
- ['O'] = { api.node.open.no_window_picker, 'Open: No Window Picker' },
- ['p'] = { api.fs.paste, 'Paste' },
- ['P'] = { api.node.navigate.parent, 'Parent Directory' },
- ['q'] = { api.tree.close, 'Close' },
- ['r'] = { api.fs.rename, 'Rename' },
- ['R'] = { api.tree.reload, 'Refresh' },
- ['s'] = { api.node.run.system, 'Run System' },
- ['S'] = { api.tree.search_node, 'Search' },
- ['U'] = { api.tree.toggle_custom_filter, 'Toggle Hidden' },
- ['W'] = { api.tree.collapse_all, 'Collapse' },
- ['x'] = { api.fs.cut, 'Cut' },
- ['y'] = { api.fs.copy.filename, 'Copy Name' },
- ['Y'] = { api.fs.copy.relative_path, 'Copy Relative Path' },
- ['<2-LeftMouse>'] = { api.node.open.edit, 'Open' },
- ['<2-RightMouse>'] = { api.tree.change_root_to_node, 'CD' },
-
- -- Mappings migrated from view.mappings.list
- ['l'] = { api.node.open.edit, 'Open' },
- ['<CR>'] = { api.node.open.edit, 'Open' },
- ['o'] = { api.node.open.edit, 'Open' },
- ['h'] = { api.node.navigate.parent_close, 'Close Directory' },
- ['v'] = { api.node.open.vertical, 'Open: Vertical Split' },
- ['C'] = { api.tree.change_root_to_node, 'CD' },
- }
- for keys, mapping in pairs(mappings) do
- vim.keymap.set('n', keys, mapping[1], opts(mapping[2]))
- end
-end
---api.events.subscribe(api.events.Event.FileCreated, function(file)
--- vim.cmd('edit' .. file.fname)
---end)
-
-require('nvim-tree').setup({
- --auto_reload_on_write = true,
- --create_in_closed_folder = false,
- --hijack_cursor = true,
- --disable_netrw = true,
- --hijack_netrw = true,
- --hijack_unnamed_buffer_when_opening = false,
- --ignore_buffer_on_setup = false,
- update_focused_file = {
- enable = true,
- update_cwd = true,
- update_root = true,
- ignore_list = {},
- },
- root_dirs = {},
- --prefer_startup_root = true,
- --hijack_directories = {
- -- enable = false,
- --},
- --respect_buf_cwd = false,
- sync_root_with_cwd = true,
- --reload_on_bufenter = false,
- view = view,
- system_open = system_open,
- renderer = renderer,
- on_attach = on_attach,
- notify = {
- threshold = vim.log.levels.ERROR,
- },
- git = { ignore = false },
- diagnostics = {
- enable = true,
- show_on_dirs = true,
- icons = {
- hint = '⚑',
- info = '􀅳',
- warning = '▲',
- error = '',
- },
- },
- trash = {
- cmd = 'gio trash',
- require_confirm = true,
- },
- modified = {
- enable = true,
- show_on_dirs = true,
- show_on_open_dirs = true,
- },
- --filters = {
- -- dotfiles = false,
- -- git_clean = false,
- -- no_buffer = false,
- -- custom = {},
- -- exclude = {},
- --},
- actions = {
- use_system_clipboard = true,
- change_dir = {
- enable = true,
- global = false,
- restrict_above_cwd = false,
- },
- remove_file = {
- close_window = true,
- },
- open_file = {
- quit_on_open = true,
- --eject = true,
- resize_window = false,
- window_picker = {
- enable = true,
- chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890',
- exclude = {
- filetype = { 'notify', 'packer', 'qf', 'diff', 'fugitive', 'fugitiveblame' },
- buftype = { 'nofile', 'terminal', 'help' },
- },
- },
- },
- },
-})
-
-local api = require('nvim-tree.api')
-local event = api.events.Event
---api.events.subscribe(event.TreeOpen, function(_)
--- vim.cmd([[setlocal statuscolumn=\ ]])
--- vim.cmd([[setlocal cursorlineopt=number]])
--- vim.cmd([[setlocal fillchars+=vert:🮇]])
--- vim.cmd([[setlocal fillchars+=horizup:🮇]])
--- vim.cmd([[setlocal fillchars+=vertright:🮇]])
---end)
-
-local function open_nvim_tree(data)
- vim.cmd.cd(data.file:match('(.+)/[^/]*$'))
- local directory = vim.fn.isdirectory(data.file) == 1
- if not directory then
- return
- end
- require('nvim-tree.api').tree.open()
-end
-vim.api.nvim_create_autocmd({ 'VimEnter' }, { callback = open_nvim_tree })
-
--- Change Root To Global Current Working Directory
-local function change_root_to_global_cwd()
- local api = require('nvim-tree.api')
- local global_cwd = vim.fn.getcwd(-1, -1)
- api.tree.change_root(global_cwd)
-end
-
-local function copy_file_to(node)
- local file_src = node['absolute_path']
- -- The args of input are {prompt}, {default}, {completion}
- -- Read in the new file path using the existing file's path as the baseline.
- local file_out = vim.fn.input('COPY TO: ', file_src, 'file')
- -- Create any parent dirs as required
- local dir = vim.fn.fnamemodify(file_out, ':h')
- vim.fn.system({ 'mkdir', '-p', dir })
- -- Copy the file
- vim.fn.system({ 'cp', '-R', file_src, file_out })
-end
-
-local function edit_and_close(node)
- api.node.open.edit(node, {})
- api.tree.close()
-end
-
---vim.api.nvim_create_augroup('NvimTreeRefresh', {})
---vim.api.nvim_create_autocmd('BufEnter', {
--- pattern = 'NvimTree_1',
--- command = 'NvimTreeRefresh',
--- group = 'NvimTreeRefresh',
---})
-
-vim.api.nvim_create_autocmd({ 'CursorHold' }, {
- pattern = 'NvimTree*',
- callback = function()
- local def = vim.api.nvim_get_hl_by_name('Cursor', true)
- vim.api.nvim_set_hl(
- 0,
- 'Cursor',
- vim.tbl_extend('force', def, {
- blend = 100,
- })
- )
- vim.opt.guicursor:append('a:Cursor/lCursor')
- end,
-})
-
-vim.api.nvim_create_autocmd({ 'BufLeave', 'WinClosed', 'WinLeave' }, {
- pattern = 'NvimTree*',
- callback = function()
- local def = vim.api.nvim_get_hl_by_name('Cursor', true)
- vim.api.nvim_set_hl(
- 0,
- 'Cursor',
- vim.tbl_extend('force', def, {
- blend = 0,
- })
- )
- vim.opt.guicursor = 'n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20'
- end,
-})
-
--- Highlight Groups
-vim.api.nvim_command('highlight NvimTreeNormal guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight NvimTreeNormalNC guibg=NONE ctermbg=NONE guifg=NONE')
-vim.api.nvim_command('highlight NvimTreeNormalFloat guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight NvimTreeEndOfBuffer guibg=NONE ctermbg=NONE') --(NonText)
-vim.api.nvim_command('highlight NvimTreeCursorLine guibg=#50fa7b guifg=#000000')
-vim.api.nvim_command('highlight NvimTreeSymlinkFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight NvimTreeFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight NvimTreeRootFolder guifg=#f8f8f2 guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight NvimTreeEmptyFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE') --(Directory)
-vim.api.nvim_command('highlight NvimTreeOpenedFolderName guifg=#f8f8f2 guibg=NONE ctermbg=NONE') --(Directory)
-vim.api.nvim_command('highlight NvimTreeOpenedFile guifg=#50fa7b guibg=NONE ctermbg=NONE')
-
---vim.api.nvim_command("highlight NvimTreeSymlink ")
---vim.api.nvim_command("highlight NvimTreeSymlinkFolderName ") --(Directory)
---vim.api.nvim_command("highlight NvimTreeFolderName ") --(Directory)
---vim.api.nvim_command("highlight NvimTreeRootFolder ")
---vim.api.nvim_command("highlight NvimTreeFolderIcon ")
---vim.api.nvim_command("highlight NvimTreeOpenedFolderIcon ") --(NvimTreeFolderIcon)
---vim.api.nvim_command("highlight NvimTreeClosedFolderIcon ") --(NvimTreeFolderIcon)
---vim.api.nvim_command("highlight NvimTreeFileIcon ")
---vim.api.nvim_command("highlight NvimTreeEmptyFolderName ") --(Directory)
---vim.api.nvim_command("highlight NvimTreeOpenedFolderName ") --(Directory)
---vim.api.nvim_command("highlight NvimTreeExecFile ")
---vim.api.nvim_command("highlight NvimTreeOpenedFile ")
---vim.api.nvim_command("highlight NvimTreeModifiedFile ")
---vim.api.nvim_command("highlight NvimTreeSpecialFile ")
---vim.api.nvim_command("highlight NvimTreeImageFile ")
---vim.api.nvim_command("highlight NvimTreeIndentMarker ")
---vim.api.nvim_command("highlight NvimTreeLspDiagnosticsError ") --(DiagnosticError)
---vim.api.nvim_command("highlight NvimTreeLspDiagnosticsWarning ") --(DiagnosticWarn)
---vim.api.nvim_command("highlight NvimTreeLspDiagnosticsInformation ") --(DiagnosticInfo)
---vim.api.nvim_command("highlight NvimTreeLspDiagnosticsHint ") --(DiagnosticHint)
---vim.api.nvim_command("highlight NvimTreeGitDirty ")
---vim.api.nvim_command("highlight NvimTreeGitStaged ")
---vim.api.nvim_command("highlight NvimTreeGitMerge ")
---vim.api.nvim_command("highlight NvimTreeGitRenamed ")
---vim.api.nvim_command("highlight NvimTreeGitNew ")
---vim.api.nvim_command("highlight NvimTreeGitDeleted ")
---vim.api.nvim_command("highlight NvimTreeGitIgnored ") --(Comment)
---vim.api.nvim_command("highlight NvimTreeNormal ")
---vim.api.nvim_command("highlight NvimTreeEndOfBuffer ") --(NonText)
---vim.api.nvim_command("highlight NvimTreeCursorColumn ") --(CursorColumn)
---vim.api.nvim_command("highlight NvimTreeFileDirty ") --(NvimTreeGitDirty)
---vim.api.nvim_command("highlight NvimTreeFileStaged ") --(NvimTreeGitStaged)
---vim.api.nvim_command("highlight NvimTreeFileMerge ") --(NvimTreeGitMerge)
---vim.api.nvim_command("highlight NvimTreeFileRenamed ") --(NvimTreeGitRenamed)
---vim.api.nvim_command("highlight NvimTreeFileNew ") --(NvimTreeGitNew)
---vim.api.nvim_command("highlight NvimTreeFileDeleted ") --(NvimTreeGitDeleted)
---vim.api.nvim_command("highlight NvimTreeFileIgnored ") --(NvimTreeGitIgnored)
---vim.api.nvim_command("highlight NvimTreeLiveFilterPrefix ")
---vim.api.nvim_command("highlight NvimTreeLiveFilterValue ")
---vim.api.nvim_command("highlight NvimTreeBookmark ")
diff --git a/.config/nvim/lua/plugins/overseer.lua b/.config/nvim/lua/plugins/overseer.lua
deleted file mode 100644
index 6319d36..0000000
--- a/.config/nvim/lua/plugins/overseer.lua
+++ /dev/null
@@ -1 +0,0 @@
-require('overseer').setup()
diff --git a/.config/nvim/lua/plugins/quickfix.lua b/.config/nvim/lua/plugins/quickfix.lua
deleted file mode 100644
index 4a76da0..0000000
--- a/.config/nvim/lua/plugins/quickfix.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-local M = {}
-
-M.close = function()
- vim.cmd.cclose()
-end
-
-M.open = function()
- if vim.tbl_count(vim.fn.getqflist()) == 0 then
- vim.notify('Nothing in quickfix list; not opening.', vim.log.levels.WARN)
- else
- vim.cmd.copen()
- end
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/session.lua b/.config/nvim/lua/plugins/session.lua
deleted file mode 100644
index 0c84625..0000000
--- a/.config/nvim/lua/plugins/session.lua
+++ /dev/null
@@ -1,5 +0,0 @@
-require('auto-session').setup({
- log_level = 'error',
- auto_session_suppress_dirs = { '~/', '~/projects', '~/downloads', '/' },
-})
-require('session-lens').setup({})
diff --git a/.config/nvim/lua/plugins/snippets.lua b/.config/nvim/lua/plugins/snippets.lua
deleted file mode 100644
index 7df6b2f..0000000
--- a/.config/nvim/lua/plugins/snippets.lua
+++ /dev/null
@@ -1,68 +0,0 @@
-local ls = require "luasnip" --
-
-require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets/" })
---local options = {
-ls.config.set_config {
- history = true,
- updateevents = "TextChanged,TextChangedI",
- -- Autosnippets:
- enable_autosnippets = true, --
- region_check_events = "InsertEnter",
- delete_check_events = "TextChanged",
- update_events = "TextChanged,TextChangedI",
- store_selection_keys = "<Tab>",
- ext_opts = { --
- [require("luasnip.util.types").choiceNode] = {
- active = {
- virt_text = { { "«", "GruvboxOrange" } },
- },
- },
- },
-}
-
---local keymap = vim.keymap
---local keymap = vim.api.nvim_set_keymap
-local keymap = vim.keymap.set
---keymap('i', '<c-f>', 'luasnip#expand_or_jumpable() ? "<Plug>luasnip-expand-or-jump" : "<Tab>"', {expr = true, silent = true})
-keymap({ "i", "s"}, "<c-f>", function()
- if ls.expand_or_jumpable() then
- ls.expand()
- end
-end)
-
-keymap({ "i", "s"}, "<c-j>", function()
- if ls.jumpable(1) then
- ls.jump(1)
- end
-end)
-
-keymap({ "i", "s"}, "<c-k>", function()
- if ls.jumpable(-1) then
- ls.jump(-1)
- end
-end)
-
-keymap({ "i", "s"}, "<c-c>", function()
- if ls.choice_active() then
- ls.change_choice(1)
- end
-end)
-
-keymap({ "i", "s"}, "<a-c>", function()
- if ls.choice_active() then
- ls.change_choice(-1)
- end
-end)
-
--- Character class Matching
--- %a letters (A-Z, a-z)
--- %c control characters (\n, \t, \r, ...)
--- %d digits (0-9)
--- %l lower-case letter (a-z)
--- %p punctuation characters (!, ?, &, ...)
--- %s space characters
--- %u upper-case letters
--- %w alphanumeric characters (A-Z, a-z, 0-9)
--- %x hexadecimal digits (\3, \4, ...)
--- %z the character with representation 0
--- . Matches any character
diff --git a/.config/nvim/lua/plugins/sniprun.lua b/.config/nvim/lua/plugins/sniprun.lua
deleted file mode 100644
index 418e8cc..0000000
--- a/.config/nvim/lua/plugins/sniprun.lua
+++ /dev/null
@@ -1,57 +0,0 @@
-local status_ok, sniprun = pcall(require, 'sniprun')
-if not status_ok then
- return
-end
-
-sniprun.setup({
- -- selected_interpreters = {}, --# use those instead of the default for the current filetype
- -- repl_enable = { "Python3_original" }, --# enable REPL-like behavior for the given interpreters
- -- repl_disable = {}, --# disable REPL-like behavior for the given interpreters
-
- -- interpreter_options = { --# intepreter-specific options, see docs / :SnipInfo <name>
- -- GFM_original = {
- -- use_on_filetypes = { "markdown.pandoc" }, --# the 'use_on_filetypes' configuration key is
- -- --# available for every interpreter
- -- },
- -- },
-
- --# you can combo different display modes as desired
- display = {
- -- "Classic", --# display results in the command-line area
- --'VirtualTextOk', --# display ok results as virtual text (multiline is shortened)
- -- "VirtualTextErr", --# display error results as virtual text
- -- "TempFloatingWindow", --# display results in a floating window
- -- "LongTempFloatingWindow", --# same as above, but only long results. To use with VirtualText__
- 'Terminal', --# display results in a vertical split
- -- "TerminalWithCode", --# display results and code history in a vertical split
- -- "NvimNotify", --# display with the nvim-notify plugin
- -- "Api" --# return output to a programming interface
- },
-
- display_options = {
- terminal_width = 45, --# change the terminal display option width
- notification_timeout = 5, --# timeout for nvim_notify output
- },
-
- --# You can use the same keys to customize whether a sniprun producing
- --# no output should display nothing or '(no output)'
- show_no_output = {
- 'Classic',
- 'TempFloatingWindow', --# implies LongTempFloatingWindow, which has no effect on its own
- },
-
- --# customize highlight groups (setting this overrides colorscheme)
- -- snipruncolors = {
- -- SniprunVirtualTextOk = { bg = "NONE", fg = "#66eeff", ctermbg = "Black", cterfg = "Cyan" },
- -- SniprunFloatingWinOk = { fg = "NONE", ctermfg = "Cyan" },
- -- SniprunVirtualTextErr = { bg = "#881515", fg = "#000000", ctermbg = "DarkRed", cterfg = "Black" },
- -- SniprunFloatingWinErr = { fg = "#881515", ctermfg = "DarkRed" },
- -- },
-
- --# miscellaneous compatibility/adjustement settings
- inline_messages = 0, --# inline_message (0/1) is a one-line way to display messages
- --# to workaround sniprun not being able to display anything
-
- borders = 'single', --# display borders around floating windows
- --# possible values are 'none', 'single', 'double', or 'shadow'
-})
diff --git a/.config/nvim/lua/plugins/statuscol.lua b/.config/nvim/lua/plugins/statuscol.lua
deleted file mode 100644
index 24a2308..0000000
--- a/.config/nvim/lua/plugins/statuscol.lua
+++ /dev/null
@@ -1,28 +0,0 @@
-local status, statuscol = pcall(require, "statuscol")
-
-if not status then
- vim.notify("statuscol not found")
- return
-end
-
-local builtin = require("statuscol.builtin")
-
-statuscol.setup({
- segments = {
- { text = { builtin.lnumfunc }, click = "v:lua.ScLa" },
- { text = { "%s" }, click = "v:lua.ScSa" },
- { text = { builtin.foldfunc }, click = "v:lua.ScFa" },
- },
- ft_ignore = {
- "NvimTree",
- "packer",
- "NeogitStatus",
- "toggleterm",
- "dapui_scopes",
- "dapui_breakpoints",
- "dapui_stacks",
- "dapui_watches",
- "dapui_console",
- "dapui_repl",
- },
-})
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
deleted file mode 100644
index e4c62c2..0000000
--- a/.config/nvim/lua/plugins/telescope.lua
+++ /dev/null
@@ -1,620 +0,0 @@
-local M = {}
-
--- Shorten function names
-local actions = require('telescope.actions')
-local fb_actions = require('telescope').extensions.file_browser.actions
---local builtin = require("telescope.builtin")
---local utils = require("telescope.utils")
---local layout_actions = require("telescope.actions.layout")
---local themes = require('telescope.themes')
-local actions_set = require('telescope.actions.set')
-local actions_state = require('telescope.actions.state')
-local finders = require('telescope.finders')
-local pickers = require('telescope.pickers')
-local config = require('telescope.config').values
-
-require('telescope').setup({
- defaults = {
- vimgrep_arguments = {
- 'rg',
- '--color=never',
- '--no-heading',
- '--with-filename',
- '--line-number',
- '--column',
- '--smart-case',
- '--hidden',
- '--fixed-strings',
- '--trim',
- },
- prompt_prefix = ' ',
- selection_caret = ' ',
- entry_prefix = ' ',
- path_display = { 'tail' },
- --path_display = { "truncate" },
- --path_display = { "smart" },
- file_ignore_patterns = {
- 'packer_compiled.lua',
- '~/.config/zsh/plugins',
- 'zcompdump',
- '%.DS_Store',
- '%.git/',
- '%.spl',
- --"%.log",
- '%[No Name%]', -- new files / sometimes folders (netrw)
- '/$', -- ignore folders (netrw)
- 'node_modules',
- '%.png',
- '%.zip',
- '%.pxd',
- --"^.vim/",
- '^.local/',
- '^.cache/',
- '^downloads/',
- '^music/',
- --"^node_modules/",
- --"^undodir/",
- },
- mappings = {
- i = {
- ['<C-n>'] = actions.cycle_history_next,
- ['<C-p>'] = actions.cycle_history_prev,
-
- ['<C-j>'] = actions.move_selection_next,
- ['<C-k>'] = actions.move_selection_previous,
-
- --["<C-c>"] = actions.close,
- ['<Esc>'] = actions.close, -- close w/ one esc
- --["<Esc>"] = "close", -- close w/ one esc
- ['<?>'] = actions.which_key, -- keys from pressing <C-/>
-
- ['<Down>'] = actions.move_selection_next,
- ['<Up>'] = actions.move_selection_previous,
-
- ['<CR>'] = actions.select_default,
- ['<C-x>'] = actions.select_horizontal,
- ['<C-y>'] = actions.select_vertical,
- ['<C-t>'] = actions.select_tab,
- ['<C-c>'] = actions.delete_buffer,
-
- ['<C-u>'] = actions.preview_scrolling_up,
- ['<C-d>'] = actions.preview_scrolling_down,
-
- ['<PageUp>'] = actions.results_scrolling_up,
- ['<PageDown>'] = actions.results_scrolling_down,
-
- ['<Tab>'] = actions.toggle_selection + actions.move_selection_worse,
- ['<S-Tab>'] = actions.toggle_selection + actions.move_selection_better,
- ['<C-q>'] = actions.send_to_qflist + actions.open_qflist,
- ['<M-q>'] = actions.send_selected_to_qflist + actions.open_qflist,
- ['<C-l>'] = actions.complete_tag,
- ['<C-_>'] = actions.which_key, -- keys from pressing <C-/>
- --["<C-o>"] = function(prompt_bufnr)
- -- local selection = require("telescope.actions.state").get_selected_entry()
- -- local dir = vim.fn.fnamemodify(selection.path, ":p:h")
- -- require("telescope.actions").close(prompt_bufnr)
- -- -- Depending on what you want put `cd`, `lcd`, `tcd`
- -- vim.cmd(string.format("silent lcd %s", dir))
- --end,
- },
- n = {
- --["cd"] = function(prompt_bufnr)
- -- local selection = require("telescope.actions.state").get_selected_entry()
- -- local dir = vim.fn.fnamemodify(selection.path, ":p:h")
- -- require("telescope.actions").close(prompt_bufnr)
- -- -- Depending on what you want put `cd`, `lcd`, `tcd`
- -- vim.cmd(string.format("silent lcd %s", dir))
- --end,
- ['<esc>'] = actions.close,
- ['<q>'] = actions.close,
- ['<CR>'] = actions.select_default,
- ['<C-x>'] = actions.select_horizontal,
- ['<C-y>'] = actions.select_vertical,
- ['<C-t>'] = actions.select_tab,
- ['<C-c>'] = actions.delete_buffer,
-
- ['<Tab>'] = actions.toggle_selection + actions.move_selection_worse,
- ['<S-Tab>'] = actions.toggle_selection + actions.move_selection_better,
- ['<C-q>'] = actions.send_to_qflist + actions.open_qflist,
- ['<M-q>'] = actions.send_selected_to_qflist + actions.open_qflist,
-
- ['j'] = actions.move_selection_next,
- ['k'] = actions.move_selection_previous,
- ['H'] = actions.move_to_top,
- ['M'] = actions.move_to_middle,
- ['L'] = actions.move_to_bottom,
-
- ['<Down>'] = actions.move_selection_next,
- ['<Up>'] = actions.move_selection_previous,
- ['gg'] = actions.move_to_top,
- ['G'] = actions.move_to_bottom,
-
- ['<C-u>'] = actions.preview_scrolling_up,
- ['<C-d>'] = actions.preview_scrolling_down,
-
- ['<PageUp>'] = actions.results_scrolling_up,
- ['<PageDown>'] = actions.results_scrolling_down,
- ['cd'] = function(prompt_bufnr)
- local selection = require('telescope.actions.state').get_selected_entry()
- local dir = vim.fn.fnamemodify(selection.path, ':p:h')
- require('telescope.actions').close(prompt_bufnr)
- -- Depending on what you want put `cd`, `lcd`, `tcd`
- vim.cmd(string.format('silent lcd %s', dir))
- end,
- ['?'] = actions.which_key,
- --["<C-o>"] = function(prompt_bufnr)
- -- local selection = require("telescope.actions.state").get_selected_entry()
- -- local dir = vim.fn.fnamemodify(selection.path, ":p:h")
- -- require("telescope.actions").close(prompt_bufnr)
- -- -- Depending on what you want put `cd`, `lcd`, `tcd`
- -- vim.cmd(string.format("silent lcd %s", dir))
- --end,
- },
- },
- },
- preview = {
- filesize_limit = 3,
- timeout = 250,
- },
- selection_strategy = 'reset',
- sorting_strategy = 'ascending',
- scroll_strategy = 'limit',
- color_devicons = true,
- layout_strategy = 'horizontal',
- layout_config = {
- horizontal = {
- height = 0.95,
- preview_cutoff = 70,
- width = 0.92,
- preview_width = { 0.55, max = 50 },
- },
- bottom_pane = {
- height = 12,
- preview_cutoff = 70,
- prompt_position = 'bottom',
- },
- },
- find_files = {
- --cwd = '%:p:h',
- cwd = vim.fn.getcwd(),
- prompt_prefix = ' ',
- --hidden = true,
- --no_ignore = false,
- follow = true,
- },
- --pickers = {
- -- live_grep = {
- -- disable_coordinates = true,
- -- layout_config = {
- -- horizontal = {
- -- preview_width = 0.55,
- -- },
- -- },
- -- },
- --},
- --pickers = {
- -- live_grep = {
- -- mappings = {
- -- i = {
- -- ["<C-f>"] = ts_select_dir_for_grep,
- -- },
- -- n = {
- -- ["<C-f>"] = ts_select_dir_for_grep,
- -- },
- -- },
- -- },
- --},
- --pickers = {
- --lsp_references = {
- -- prompt_prefix='⬅️',
- -- show_line=false,
- -- trim_text=true,
- -- include_declaration=false,
- -- initial_mode = "normal",
- --},
- --lsp_definitions = {
- -- prompt_prefix='➡️',
- -- show_line=false,
- -- trim_text=true,
- -- initial_mode = "normal",
- --},
- --lsp_document_symbols = {
- -- prompt_prefix='* ',
- -- show_line = false,
- --},
- --treesitter = {
- -- prompt_prefix=' ',
- -- show_line = false,
- --},
- --keymaps = { prompt_prefix='? ' },
- --oldfiles = { prompt_prefix=' ' },
- --highlights = { prompt_prefix=' ' },
- --git_files = {
- -- prompt_prefix=' ',
- -- show_untracked = true,
- -- path_display = { "tail" },
- --},
- --buffers = {
- -- prompt_prefix=' ',
- -- ignore_current_buffer = true,
- -- initial_mode = "normal",
- -- sort_mru = true,
- --},
- --live_grep = {
- -- cwd='%:p:h',
- -- disable_coordinates=true,
- -- prompt_title='Search in Folder',
- -- prompt_prefix=' ',
- --},
- --spell_suggest = {
- -- initial_mode = "normal",
- -- prompt_prefix = "暈",
- -- theme = "cursor",
- -- layout_config = { cursor = { width = 0.3 } }
- --},
- --colorscheme = {
- -- enable_preview = true,
- -- prompt_prefix = '',
- -- results_title = '',
- -- layout_strategy = "bottom_pane",
- --},
- --},
-
- extensions = {
- file_browser = {
- theme = 'dropdown',
- -- disables netrw and use telescope-file-browser in its place
- hijack_netrw = false,
- mappings = {
- -- your custom insert mode mappings
- ['i'] = {
- ['<C-w>'] = function()
- vim.cmd('normal vbd')
- end,
- ['<C-h>'] = fb_actions.goto_parent_dir,
- },
- ['n'] = {
- -- your custom normal mode mappings
- ['N'] = fb_actions.create,
- ['<C-h>'] = fb_actions.goto_parent_dir,
- --["/"] = function()
- -- vim.cmd("startinsert")
- --end,
- },
- },
- },
- },
-})
-
---------------------------------------------------------------------------------
-
--- Load extensions:
--- have to be loaded after telescope setup/config
-require('telescope').load_extension('fzf')
-require('telescope').load_extension('ui-select')
-require('telescope').load_extension('file_browser')
-require('telescope').load_extension('changed_files')
-require('telescope').load_extension('media_files')
-require('telescope').load_extension('notify')
-require('telescope').load_extension('dap')
-require('telescope').load_extension('session-lens')
-require('telescope').load_extension('flutter')
-require('telescope').load_extension('recent_files')
---require('telescope').load_extension('projects')
-
---M.curbuf = function(opts)
--- opts = opts
--- or themes.get_dropdown({
--- previewer = false,
--- shorten_path = false,
--- border = true,
--- })
--- require("telescope.builtin").current_buffer_fuzzy_find(opts)
---end
-
-function M.find_configs()
- -- Track dotfiles (bare git repository)
- -- Inside shell config file:
- -- alias config='git --git-dir=$HOME/.cfg --work-tree=$HOME'
- -- cfg_files=$(config ls-tree --name-only -r HEAD)
- -- export CFG_FILES="$cfg_files"
- local tracked_files = {}
-
- for file in string.gmatch(os.getenv('CFG_FILES'), '[^\n]+') do
- table.insert(tracked_files, os.getenv('HOME') .. '/' .. file)
- end
-
- require('telescope.builtin').find_files({
- hidden = true,
- no_ignore = false,
- prompt_title = ' Find Configs',
- results_title = 'Config Files',
- path_display = { 'smart' },
- search_dirs = tracked_files,
- layout_strategy = 'horizontal',
- layout_config = { preview_width = 0.65, width = 0.75 },
- })
-end
-
-function M.find_scripts()
- require('telescope.builtin').find_files({
- hidden = true,
- no_ignore = true,
- prompt_title = ' Find Scripts',
- path_display = { 'smart' },
- search_dirs = {
- '~/.scripts',
- },
- layout_strategy = 'horizontal',
- layout_config = { preview_width = 0.65, width = 0.75 },
- })
-end
-
-function M.find_projects()
- local search_dir = '~/projects'
- pickers
- .new({}, {
- prompt_title = 'Find Projects',
- finder = finders.new_oneshot_job({
- 'find',
- vim.fn.expand(search_dir),
- '-type',
- 'd',
- '-maxdepth',
- '1',
- }),
- previewer = require('telescope.previewers').vim_buffer_cat.new({}),
- sorter = config.generic_sorter({}),
- attach_mappings = function(prompt_bufnr, map)
- actions_set.select:replace(function()
- local entry = actions_state.get_selected_entry()
- if entry ~= nil then
- local dir = entry.value
- actions.close(prompt_bufnr, false)
- vim.fn.chdir(dir)
- vim.cmd('e .')
- vim.cmd("echon ''")
- print('cwd: ' .. vim.fn.getcwd())
- end
- end)
- return true
- end,
- })
- :find()
-end
-
-function M.grep_notes()
- local opts = {}
- opts.hidden = false
- opts.search_dirs = {
- '~/documents/notes/',
- }
- opts.prompt_prefix = '  '
- opts.prompt_title = ' Grep Notes'
- opts.path_display = { 'smart' }
- require('telescope.builtin').live_grep(opts)
-end
-
-function M.find_notes()
- require('telescope.builtin').find_files({
- hidden = true,
- no_ignore = false,
- prompt_title = ' Find Notes',
- path_display = { 'smart' },
- search_dirs = {
- '~/documents/notes/private/',
- '~/documents/notes',
- '~/notes/private',
- '~/notes',
- },
- layout_strategy = 'horizontal',
- layout_config = { preview_width = 0.65, width = 0.75 },
- })
-end
-
-function M.find_books()
- local search_dir = '~/documents/books'
- vim.fn.jobstart('$HOME/.scripts/track-books.sh')
- local recent_books_directory = vim.fn.stdpath('config') .. '/tmp/'
- local recent_books_file = recent_books_directory .. 'recent_books.txt'
- local search_cmd = 'find ' .. vim.fn.expand(search_dir) .. ' -type d -o -type f -maxdepth 1'
-
- local recent_books = vim.fn.readfile(recent_books_file)
- local search_results = vim.fn.systemlist(search_cmd)
-
- local results = {}
-
- -- Section for Recent Books
- table.insert(results, ' Recent Books')
- for _, recent_book_path in ipairs(recent_books) do
- local formatted_path = vim.fn.fnameescape(recent_book_path)
- table.insert(results, formatted_path)
- end
-
- -- Section for All Books
- table.insert(results, ' All Books')
- local directories = {}
- local files = {}
-
- for _, search_result in ipairs(search_results) do
- if vim.fn.isdirectory(search_result) == 1 then
- table.insert(directories, search_result)
- else
- table.insert(files, search_result)
- end
- end
-
- table.sort(directories)
- table.sort(files)
-
- for _, dir in ipairs(directories) do
- table.insert(results, dir)
- end
-
- for _, file in ipairs(files) do
- table.insert(results, file)
- end
-
- local picker = pickers.new({}, {
- prompt_title = 'Find Books',
- finder = finders.new_table({
- results = results,
- }),
- file_ignore_patterns = {
- '%.git',
- },
- previewer = require('telescope.previewers').vim_buffer_cat.new({}),
- sorter = config.generic_sorter({}),
- attach_mappings = function(prompt_bufnr, map)
- actions_set.select:replace(function()
- local entry = actions_state.get_selected_entry()
- if entry ~= nil then
- local path = entry.value
-
- actions.close(prompt_bufnr, false)
-
- -- Check if it's under "Recent Books"
- if path == ' Recent Books' or path == ' All Books' then
- vim.notify("Cannot select 'All Books'/'Recent Books', please select a book or directory.", vim.log.levels.WARN, { title = 'Find Books' })
- else
- -- Determine whether it's a directory or a file
- local is_directory = vim.fn.isdirectory(path)
- if is_directory then
- -- It's a directory, navigate to it in the current buffer
- vim.cmd('e ' .. path)
- else
- -- It's a file, open it
- vim.cmd('e ' .. path)
- end
- end
- end
- end)
- return true
- end,
- })
-
- picker:find()
-end
-
-function M.grep_current_dir()
- local buffer_dir = require('telescope.utils').buffer_dir()
- local opts = {
- prompt_title = 'Live Grep in ' .. buffer_dir,
- cwd = buffer_dir,
- }
- require('telescope.builtin').live_grep(opts)
-end
-
---------------------------------------------------------------------------------
-
-local dropdown = require('telescope.themes').get_dropdown({
- hidden = true,
- no_ignore = true,
- previewer = false,
- prompt_title = '',
- preview_title = '',
- results_title = '',
- layout_config = {
- --anchor = "S",
- prompt_position = 'top',
- },
-})
-
--- File browser always relative to buffer
---local opts_file_browser = vim.tbl_extend('force', dropdown, {
--- path_display = { '%:p:h' },
---})
-
--- Set current folder as prompt title
-local with_title = function(opts, extra)
- extra = extra or {}
- local path = opts.cwd or opts.path or extra.cwd or extra.path or nil
- local title = ''
- local buf_path = vim.fn.expand('%:p:h')
- local cwd = vim.fn.getcwd()
- if path ~= nil and buf_path ~= cwd then
- title = require('plenary.path'):new(buf_path):make_relative(cwd)
- else
- title = vim.fn.fnamemodify(cwd, ':t')
- end
-
- return vim.tbl_extend('force', opts, {
- prompt_title = title,
- }, extra or {})
-end
-
--- Find here
-function M.findhere()
- -- Open file browser if argument is a folder
- local arg = vim.api.nvim_eval('argv(0)')
- if arg and (vim.fn.isdirectory(arg) ~= 0 or arg == '') then
- vim.defer_fn(function()
- require('telescope.builtin').find_files(with_title(dropdown))
- -- require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({
- -- hidden = true,
- -- results_title = '',
- -- layout_config = { prompt_position = 'top' },
- -- }))
- end, 10)
- end
-end
-
--- Define the custom command findhere/startup
-vim.cmd('command! Findhere lua require("plugins.telescope").findhere()')
---vim.cmd('command! Startup lua require("plugins.telescope").findhere()')
---vim.api.nvim_command('autocmd VimEnter * lua require("plugins/telescope").findhere()')
-
--- Find dirs
-function M.find_dirs()
- local root_dir = vim.fn.input('Enter the root directory: ')
-
- -- Check if root_dir is empty
- if root_dir == '' then
- print('No directory entered. Aborting.')
- return
- end
-
- local entries = {}
-
- -- Use vim.fn.expand() to get an absolute path
- local root_path = vim.fn.expand(root_dir)
-
- local subentries = vim.fn.readdir(root_path)
- if subentries then
- for _, subentry in ipairs(subentries) do
- local absolute_path = root_path .. '/' .. subentry
- table.insert(entries, subentry)
- end
- end
-
- pickers
- .new({}, {
- prompt_title = 'Change Directory or Open File',
- finder = finders.new_table({
- results = entries,
- }),
- previewer = config.file_previewer({}),
- sorter = config.generic_sorter({}),
- attach_mappings = function(prompt_bufnr, map)
- actions_set.select:replace(function()
- local entry = actions_state.get_selected_entry()
- if entry ~= nil then
- local selected_entry = entry.value
- actions.close(prompt_bufnr, false)
- local selected_path = root_path .. '/' .. selected_entry
- if vim.fn.isdirectory(selected_path) == 1 then
- vim.fn.chdir(selected_path)
- vim.cmd('e .')
- print('cwd: ' .. vim.fn.getcwd())
- else
- vim.cmd('e ' .. selected_path)
- end
- end
- end)
- return true
- end,
- })
- :find()
-end
-
-return M
diff --git a/.config/nvim/lua/plugins/toggleterm.lua b/.config/nvim/lua/plugins/toggleterm.lua
deleted file mode 100644
index e67bdec..0000000
--- a/.config/nvim/lua/plugins/toggleterm.lua
+++ /dev/null
@@ -1,179 +0,0 @@
-local status_ok, toggleterm = pcall(require, 'toggleterm')
-if not status_ok then
- return
-end
-toggleterm.setup({
- --open_mapping = [[<leader>tt]],
- autochdir = true,
- hide_numbers = true,
- shade_filetypes = {},
- shade_terminals = false,
- --shading_factor = 1,
- start_in_insert = true,
- insert_mappings = true,
- terminal_mappings = true,
- persist_size = true,
- direction = 'float',
- --direction = "vertical",
- --direction = "horizontal",
- close_on_exit = true,
- shell = vim.o.shell,
- highlights = {
- -- highlights which map to a highlight group name and a table of it's values
- -- NOTE: this is only a subset of values, any group placed here will be set for the terminal window split
- --Normal = {
- -- background = "#000000",
- --},
- --Normal = { guibg = 'Black', guifg = 'White' },
- --FloatBorder = { guibg = 'Black', guifg = 'DarkGray' },
- --NormalFloat = { guibg = 'Black' },
- float_opts = {
- --winblend = 3,
- },
- },
- size = function(term)
- if term.direction == 'horizontal' then
- return 7
- elseif term.direction == 'vertical' then
- return math.floor(vim.o.columns * 0.4)
- end
- end,
- float_opts = {
- width = 70,
- height = 15,
- border = 'curved',
- highlights = {
- border = 'Normal',
- --background = 'Normal',
- },
- --winblend = 0,
- },
-})
-local mods = require('user.mods')
-local float_handler = function(term)
- if not mods.empty(vim.fn.mapcheck('jk', 't')) then
- vim.keymap.del('t', 'jk', { buffer = term.bufnr })
- vim.keymap.del('t', '<esc>', { buffer = term.bufnr })
- end
-end
-
-function _G.set_terminal_keymaps()
- local opts = { noremap = true }
- --local opts = {buffer = 0}
- --vim.api.nvim_buf_set_keymap(0, "i", ";to", "[[<Esc>]]<cmd>Toggleterm", opts)
- vim.api.nvim_buf_set_keymap(0, 't', '<C-c>', [[<Esc>]], opts)
- vim.api.nvim_buf_set_keymap(0, 't', '<esc>', [[<C-\><C-n>]], opts)
- vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[<C-\><C-n>]], opts)
- vim.api.nvim_buf_set_keymap(0, 't', '<C-h>', [[<C-\><C-n><C-W>h]], opts)
- vim.api.nvim_buf_set_keymap(0, 't', '<C-j>', [[<C-\><C-n><C-W>j]], opts)
- vim.api.nvim_buf_set_keymap(0, 't', '<C-k>', [[<C-\><C-n><C-W>k]], opts)
- vim.api.nvim_buf_set_keymap(0, 't', '<C-l>', [[<C-\><C-n><C-W>l]], opts)
-end
-
--- if you only want these mappings for toggle term use term://*toggleterm#* instead
-vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
-local Terminal = require('toggleterm.terminal').Terminal
-
-local horizontal_term = Terminal:new({ hidden = true, direction = 'horizontal' })
-local vertical_term = Terminal:new({ hidden = true, direction = 'vertical' })
-
-function Horizontal_term_toggle()
- horizontal_term:toggle(8, 'horizontal')
-end
-
-function Vertical_term_toggle()
- horizontal_term:toggle(math.floor(vim.o.columns * 0.5), 'vertical')
-end
-
-local lazygit = Terminal:new({
- cmd = 'lazygit',
- count = 5,
- id = 1000,
- dir = 'git_dir',
- direction = 'float',
- on_open = float_handler,
- hidden = true,
- float_opts = {
- border = { '╒', '═', '╕', '│', '╛', '═', '╘', '│' },
- width = 150,
- height = 40,
- },
-
- ---- Function to run on opening the terminal
- --on_open = function(term)
- -- vim.api.nvim_buf_set_keymap(term.bufnr, 'n', 'q', '<cmd>close<CR>',
- -- {noremap = true, silent = true})
- -- vim.api.nvim_buf_set_keymap(term.bufnr, 'n', '<esc>', '<cmd>close<CR>',
- -- {noremap = true, silent = true})
- -- vim.api.nvim_buf_set_keymap(term.bufnr, 'n', '<C-\\>', '<cmd>close<CR>',
- -- {noremap = true, silent = true})
- --end,
- ---- Function to run on closing the terminal
- --on_close = function(term)
- -- vim.cmd("startinsert!")
- --end
-})
-
-function Lazygit_toggle()
- -- cwd is the root of project. if cwd is changed, change the git.
- local cwd = vim.fn.getcwd()
- if cwd ~= Cur_cwd then
- Cur_cwd = cwd
- lazygit:close()
- lazygit = Terminal:new({
- cmd = "zsh --login -c 'lazygit'",
- dir = 'git_dir',
- direction = 'float',
- hidden = true,
- on_open = float_handler,
- float_opts = {
- border = { '╒', '═', '╕', '│', '╛', '═', '╘', '│' },
- width = 150,
- height = 40,
- },
- })
- end
- lazygit:toggle()
-end
-
-local node = Terminal:new({ cmd = 'node', hidden = true })
-
-function _NODE_TOGGLE()
- node:toggle()
-end
-
-local ncdu = Terminal:new({ cmd = 'ncdu', hidden = true })
-
-function _NCDU_TOGGLE()
- ncdu:toggle()
-end
-
-local htop = Terminal:new({ cmd = 'htop', hidden = true })
-
-function _HTOP_TOGGLE()
- htop:toggle()
-end
-
-local python = Terminal:new({ cmd = 'python', hidden = true })
-
-function _PYTHON_TOGGLE()
- python:toggle()
-end
-
-function Gh_dash()
- Terminal:new({
- cmd = 'gh dash',
- hidden = true,
- direction = 'float',
- on_open = float_handler,
- float_opts = {
- height = function()
- return math.floor(vim.o.lines * 0.8)
- end,
- width = function()
- return math.floor(vim.o.columns * 0.95)
- end,
- },
- })
- Gh_dash:toggle()
-end
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
deleted file mode 100644
index 7f481d3..0000000
--- a/.config/nvim/lua/plugins/treesitter.lua
+++ /dev/null
@@ -1,31 +0,0 @@
-require'nvim-treesitter.configs'.setup {
- -- A list of parser names, or "all" (the four listed parsers should always be installed)
-
- ensure_installed = {
- "c",
- "bash",
- "lua",
- "rust",
- },
- --ensure_installed = "all", -- one of "all" or a list of languages
- --ignore_install = { "" }, -- List of parsers to ignore installing
- sync_install = false,
- auto_install = true,
- highlight = {
- enable = false,
- disable = {},
- },
- indent = {
- enable = true,
- disable = {},
- --disable = { "python", "css" }
- },
- autotag = {
- enable = true,
- },
-}
---vim.opt.foldmethod = "expr"
---vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
-
---local parser_config = require "nvim-treesitter.parsers".get_parser_configs()
---parser_config.tsx.filetype_to_parsername = { "javascript", "typescript.tsx" }
diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua
deleted file mode 100644
index 7d74730..0000000
--- a/.config/nvim/lua/plugins/trouble.lua
+++ /dev/null
@@ -1,47 +0,0 @@
-require('trouble').setup({
- position = 'bottom', -- position of the list can be: bottom, top, left, right
- height = 10, -- height of the trouble list when position is top or bottom
- width = 50, -- width of the list when position is left or right
- icons = true, -- use devicons for filenames
- mode = 'document_diagnostics', -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist"
- fold_open = '', -- icon used for open folds
- fold_closed = '', -- icon used for closed folds
- group = true, -- group results by file
- padding = true, -- add an extra new line on top of the list
- action_keys = { -- key mappings for actions in the trouble list
- -- map to {} to remove a mapping, for example:
- -- close = {},
- close = 'q', -- close the list
- cancel = '<esc>', -- cancel the preview and get back to your last window / buffer / cursor
- refresh = 'r', -- manually refresh
- jump = { '<cr>', '<tab>' }, -- jump to the diagnostic or open / close folds
- open_split = { '<c-x>' }, -- open buffer in new split
- open_vsplit = { '<c-v>' }, -- open buffer in new vsplit
- open_tab = { '<c-t>' }, -- open buffer in new tab
- jump_close = { 'o' }, -- jump to the diagnostic and close the list
- toggle_mode = 'm', -- toggle between "workspace" and "document" diagnostics mode
- toggle_preview = 'P', -- toggle auto_preview
- hover = 'K', -- opens a small popup with the full multiline message
- preview = 'p', -- preview the diagnostic location
- close_folds = { 'zM', 'zm' }, -- close all folds
- open_folds = { 'zR', 'zr' }, -- open all folds
- toggle_fold = { 'zA', 'za' }, -- toggle fold of current file
- previous = 'k', -- previous item
- next = 'j', -- next item
- },
- indent_lines = true, -- add an indent guide below the fold icons
- auto_open = false, -- automatically open the list when you have diagnostics
- auto_close = false, -- automatically close the list when you have no diagnostics
- auto_preview = true, -- automatically preview the location of the diagnostic. <esc> to close preview and go back to last window
- auto_fold = false, -- automatically fold a file trouble list at creation
- auto_jump = { 'lsp_definitions' }, -- for the given modes, automatically jump if there is only a single result
- signs = {
- -- icons / text used for a diagnostic
- error = '',
- warning = '▲',
- information = '􀅳',
- hint = '⚑',
- other = '',
- },
- use_diagnostic_signs = true, -- enabling this will use the signs defined in your lsp client
-})
diff --git a/.config/nvim/lua/plugins/web-devicons.lua b/.config/nvim/lua/plugins/web-devicons.lua
deleted file mode 100644
index 06f2d1c..0000000
--- a/.config/nvim/lua/plugins/web-devicons.lua
+++ /dev/null
@@ -1,22 +0,0 @@
-local devicons = require('nvim-web-devicons')
-
--- Set devicons overrides early.
-devicons.setup({
- override = {
- js = { icon = '󰌞', color = '#f5c06f', name = 'Js' },
- jsx = { icon = '', color = '#689fb6', name = 'Jsx' },
- ts = { icon = '󰛦', color = '#4377c1', name = 'Ts' },
- tsx = { icon = '', color = '#4377c1', name = 'Tsx' },
- png = { icon = '󰋩', color = '#d4843e', name = 'Png' },
- webp = { icon = '󰋩', color = '#3498db', name = 'Webp' },
- jpg = { icon = '󰋩', color = '#16a085', name = 'Jpg' },
- svg = { icon = '󰋩', color = '#3affdb', name = 'Svg' },
- zsh = {
- icon = '',
- color = '#428850',
- cterm_color = '65',
- name = 'Zsh',
- },
- },
- color_icons = true,
-})
diff --git a/.config/nvim/lua/plugins/which-key.lua b/.config/nvim/lua/plugins/which-key.lua
deleted file mode 100644
index 10c0c41..0000000
--- a/.config/nvim/lua/plugins/which-key.lua
+++ /dev/null
@@ -1,60 +0,0 @@
-require("which-key").setup {
- plugins = {
- marks = true, -- shows a list of your marks on ' and `
- registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
- spelling = {
- enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
- suggestions = 9, -- how many suggestions should be shown in the list?
- },
- -- the presets plugin, adds help for a bunch of default keybindings in Neovim
- -- No actual key bindings are created
- presets = {
- operators = true, -- adds help for operators like d, y, ... and registers them for motion / text object completion
- motions = true, -- adds help for motions
- text_objects = true, -- help for text objects triggered after entering an operator
- windows = true, -- default bindings on <c-w>
- nav = true, -- misc bindings to work with windows
- z = true, -- bindings for folds, spelling and others prefixed with z
- g = true, -- bindings for prefixed with g
- },
- },
- -- add operators that will trigger motion and text object completion
- -- to enable all native operators, set the preset / operators plugin above
- operators = { gc = "Comments" },
- key_labels = {
- -- override the label used to display some keys. It doesn't effect WK in any other way.
- -- For example:
- -- ["<space>"] = "SPC",
- -- ["<cr>"] = "RET",
- -- ["<tab>"] = "TAB",
- },
- icons = {
- breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
- separator = "➜", -- symbol used between a key and it's label
- group = "+", -- symbol prepended to a group
- },
- window = {
- border = "none", -- none, single, double, shadow
- position = "bottom", -- bottom, top
- margin = { 0, 0, 0, 0 }, -- extra window margin [top, right, bottom, left]
- padding = { 1, 0, 1, 0 }, -- extra window padding [top, right, bottom, left]
- },
- layout = {
- height = { min = 1, max = 25 }, -- min and max height of the columns
- width = { min = 20, max = 50 }, -- min and max width of the columns
- spacing = 1, -- spacing between columns
- align = "center", -- align columns left, center or right
- },
- ignore_missing = false, -- enable this to hide mappings for which you didn't specify a label
- hidden = { "<silent>", "<cmd>", "<Cmd>", "<CR>", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate
- show_help = true, -- show help message on the command line when the popup is visible
- triggers = "auto", -- automatically setup triggers
- -- triggers = {"<leader>"} -- or specify a list manually
-
- triggers_blacklist = {
- -- list of mode / prefixes that should never be hooked by WhichKey
- -- this is mostly relevant for key maps that start with a native binding
- -- most people should not need to change this
- n = { "o", "O" },
- },
-}
diff --git a/.config/nvim/lua/plugins/zen-mode.lua b/.config/nvim/lua/plugins/zen-mode.lua
deleted file mode 100644
index 7e52854..0000000
--- a/.config/nvim/lua/plugins/zen-mode.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-local status, zenMode = pcall(require, "zen-mode")
-if (not status) then return end
-
-zenMode.setup {
-}
-
-vim.keymap.set('n', '<C-w>o', '<cmd>ZenMode<cr>', { silent = true })
diff --git a/.config/nvim/lua/user/keys.lua b/.config/nvim/lua/user/keys.lua
deleted file mode 100644
index a70eef6..0000000
--- a/.config/nvim/lua/user/keys.lua
+++ /dev/null
@@ -1,449 +0,0 @@
-local keymap = vim.keymap
-local map = function(mode, l, r, opts)
- opts = opts or {}
- opts.silent = true
- opts.noremap = true
- keymap.set(mode, l, r, opts)
-end
-local term_opts = { noremap = true, silent = false }
-local mods = require('user.mods')
-local bufnr = vim.api.nvim_get_current_buf()
-
--- Semi-colon as leader key
-vim.g.mapleader = ';'
-
--- "jk" and "kj" to exit insert-mode
-map('i', 'jk', '<esc>')
-
--- Jump to next match on line using `.` instead of `;` NOTE: commented out in favour of "ggandor/flit.nvim"
---map("n", ".", ";")
-
--- Repeat last command using `<Space>` instead of `.` NOTE: commented out in favour of "ggandor/flit.nvim"
---map("n", "<Space>", ".")
-
--- Reload nvim config
-map('n', '<leader><CR>', "<cmd>luafile ~/.config/nvim/init.lua<CR> | :echom ('Nvim config loading...') | :sl! | echo ('')<CR>")
-
---------------- Extended Operations ---------------
--- Conditional 'q' to quit on floating/quickfix/help windows otherwise still use it for macros
--- TODO: Have a list of if available on system/packages, example "Zen Mode" to not work on it (quit Zen Mode)
-map('n', 'q', function()
- local config = vim.api.nvim_win_get_config(0)
- if config.relative ~= '' then -- is_floating_window?
- return ':silent! close!<CR>'
- elseif vim.o.buftype == 'quickfix' then
- return ':quit<CR>'
- elseif vim.o.buftype == 'help' then
- return ':close<CR>'
- else
- return 'q'
- end
-end, { expr = true, replace_keycodes = true })
-
--- Combine buffers list with buffer name
-map('n', '<Leader>b', ':buffers<CR>:buffer<Space>')
-
--- Buffer confirmation
-map('n', '<leader>y', ':BufferPick<CR>')
-
--- Map buffer next, prev and delete to <leader>+(n/p/d) respectively
-map('n', '<leader>n', ':bn<cr>')
-map('n', '<leader>p', ':bp<cr>')
-map('n', '<leader>d', ':bd<cr>')
-
--- Delete file of current buffer
-map('n', '<leader>rm', "<CMD>call delete(expand('%')) | bdelete!<CR>")
-
--- List marks
-map('n', '<Leader>m', ':marks<CR>')
-
--- Messages
-map('n', '<Leader>M', ':messages<CR>')
-
---- Clear messages or just refresh/redraw the screen
-map('n', '<leader>i', "<cmd>lua require('notify').dismiss()<CR>")
-
--- Unsets the 'last search pattern' register by hitting return
---map("n", "<CR>", "!silent :noh<CR><CR>")
-
--- Toggle set number
-map('n', '<leader>$', ':NumbersToggle<CR>')
-map('n', '<leader>%', ':NumbersOnOff<CR>')
-
--- Easier split navigations, just ctrl-j instead of ctrl-w then j
-map('t', '<C-[>', '<C-\\><C-N>')
-map('t', '<C-h>', '<C-\\><C-N><C-h>')
-map('t', '<C-j>', '<C-\\><C-N><C-j>')
-map('t', '<C-k>', '<C-\\><C-N><C-k>')
-map('t', '<C-l>', '<C-\\><C-N><C-l>')
-
--- Split window
-map('n', '<leader>h', ':split<CR>')
-map('n', '<leader>v', ':vsplit<CR>')
-map('n', '<leader>c', '<C-w>c')
-
--- Resize Panes
-map('n', '<Leader>+', ':resize +5<CR>')
-map('n', '<Leader>-', ':resize -5<CR>')
-map('n', '<Leader><', ':vertical resize +5<CR>')
-map('n', '<Leader>>', ':vertical resize -5<CR>')
-map('n', '<Leader>=', '<C-w>=')
-
--- Map Alt+(h/j/k/l) in insert(include terminal/command) mode to move directional
-map({ 'i', 't', 'c' }, '<A-h>', '<left>')
-map({ 'i', 't', 'c' }, '<A-j>', '<down>')
-map({ 'i', 't', 'c' }, '<A-k>', '<up>')
-map({ 'i', 't', 'c' }, '<A-l>', '<right>')
-
--- Create tab, edit and move between them
-map('n', '<C-T>n', ':tabnew<CR>')
-map('n', '<C-T>e', ':tabedit')
-map('n', '<leader>[', ':tabprev<CR>')
-map('n', '<leader>]', ':tabnext<CR>')
-
--- "Zoom" a split window into a tab and/or close it
---map("n", "<Leader>,", ":tabnew %<CR>")
---map("n", "<Leader>.", ":tabclose<CR>")
-
--- Vim TABs
-map('n', '<leader>1', '1gt<CR>')
-map('n', '<leader>2', '2gt<CR>')
-map('n', '<leader>3', '3gt<CR>')
-map('n', '<leader>4', '4gt<CR>')
-map('n', '<leader>5', '5gt<CR>')
-map('n', '<leader>6', '6gt<CR>')
-map('n', '<leader>7', '7gt<CR>')
-map('n', '<leader>8', '8gt<CR>')
-map('n', '<leader>9', '9gt<CR>')
-map('n', '<leader>0', '10gt<CR>')
-
--- Hitting ESC when inside a terminal to get into normal mode
---map("t", "<Esc>", [[<C-\><C-N>]])
-
--- Move block (indentation) easily
-map('n', '<', '<<', term_opts)
-map('n', '>', '>>', term_opts)
-map('x', '<', '<gv', term_opts)
-map('x', '>', '>gv', term_opts)
-
--- Set alt+(j/k) to switch lines of texts or simply move them
-map('n', '<A-k>', ':let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>')
-map('n', '<A-j>', ':let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>')
-
--- Toggle Diff
-map('n', '<leader>df', '<Cmd>call utils#ToggleDiff()<CR>')
-
--- Toggle Verbose
-map('n', '<leader>uvt', '<Cmd>call utils#VerboseToggle()<CR>')
-
--- Jump List
-map('n', '<leader>j', '<Cmd>call utils#GotoJump()<CR>')
-
--- Rename file
-map('n', '<leader>rf', '<Cmd>call utils#RenameFile()<CR>')
-
--- Map delete to Ctrl+l
-map('i', '<C-l>', '<Del>')
-
--- Clear screen
-map('n', '<leader><C-l>', '<Cmd>!clear<CR>')
-
--- Change file to an executable
-map('n', '<Leader>x', ":lua require('user.mods').Toggle_executable()<CR> | :echom ('Toggle executable')<CR> | :sl! | echo ('')<CR>")
--- map("n", "<leader>x", ":!chmod +x %<CR>")
-
--- Paste without replace clipboard
-map('v', 'p', '"_dP')
-
--- Swap two pieces of text, use x to cut in visual mode, then use Ctrl-x in
--- visual mode to select text to swap with
---map("v", "<C-X>", "<Esc>`.``gvP``P")
-
--- Change Working Directory to current project
-map('n', '<leader>cd', ':cd %:p:h<CR>:pwd<CR>')
-
--- Open the current file in the default program (on Mac this should just be just `open`)
-map('n', '<leader>o', ':!xdg-open %<cr><cr>')
-
--- URL handling
-if vim.fn.has('mac') == 1 then
- map('', 'gx', '<Cmd>call jobstart(["open", expand("<cfile>")], {"detach": v:true})<CR>', {})
-elseif vim.fn.has('unix') == 1 then
- map('', 'gx', '<Cmd>call jobstart(["xdg-open", expand("<cfile>")], {"detach": v:true})<CR>', {})
-elseif vim.fn.has('wsl') == 1 then
- map('', 'gx', '<Cmd>call jobstart(["wslview", expand("<cfile>")], {"detach": v:true})<CR>', {})
-else
- map[''].gx = { '<Cmd>lua print("Error: gx is not supported on this OS!")<CR>' }
-end
-
--- Search and replace
-map('v', '<leader>sr', 'y:%s/<C-r><C-r>"//g<Left><Left>c')
-
--- Substitute globally and locally in the selected region.
-map('n', '<leader>s', ':%s//g<Left><Left>')
-map('v', '<leader>s', ':s//g<Left><Left>')
-
--- Toggle completion
-map('n', '<Leader>tc', ':lua require("user.mods").toggle_completion()<CR>')
-
--- Disable default completion.
-map('i', '<C-n>', '<Nop>')
-map('i', '<C-p>', '<Nop>')
-
--- Set line wrap
-map('n', '<M-z>', function()
- local wrap_status = vim.api.nvim_exec('set wrap ?', true)
-
- if wrap_status == 'nowrap' then
- vim.api.nvim_command('set wrap linebreak')
- print('Wrap enabled')
- else
- vim.api.nvim_command('set wrap nowrap')
- print('Wrap disabled')
- end
-end, { silent = true })
-
--- Toggle between folds
---utils.map("n", "<F2>", "&foldlevel ? 'zM' : 'zR'", { expr = true })
-
--- Use space to toggle fold
-map('n', '<Space>', 'za')
-
--- Make a copy of current file
---vim.cmd([[
--- map <leader>s :up \| saveas! %:p:r-<C-R>=strftime("%y.%m.%d-%H:%M")<CR>-bak.<C-R>=expand("%:e")<CR> \| 3sleep \| e #<CR>
---]])
-map('n', '<leader>.b', ':!cp % %.backup<CR>')
-
--- Toggle transparency
-map('n', '<leader>tb', ':call utils#Toggle_transparent_background()<CR>')
-
--- Toggle zoom
-map('n', '<leader>z', ':call utils#ZoomToggle()<CR>')
-map('n', '<C-w>z', '<C-w>|<C-w>_')
-
--- Toggle statusline
-map('n', '<leader>sl', ':call utils#ToggleHiddenAll()<CR>')
-
--- Open last closed buffer
-map('n', '<C-t>', ':call OpenLastClosed()<CR>')
-
----------------- Plugin Operations ----------------
--- Packer
-map('n', '<leader>Pc', '<cmd>PackerCompile<cr>')
-map('n', '<leader>Pi', '<cmd>PackerInstall<cr>')
-map('n', '<leader>Ps', '<cmd>PackerSync<cr>')
-map('n', '<leader>PS', '<cmd>PackerStatus<cr>')
-map('n', '<leader>Pu', '<cmd>PackerUpdate<cr>')
-
--- Tmux navigation (aserowy/tmux.nvim)
-map('n', '<C-h>', '<CMD>NavigatorLeft<CR>')
-map('n', '<C-l>', '<CMD>NavigatorRight<CR>')
-map('n', '<C-k>', '<CMD>NavigatorUp<CR>')
-map('n', '<C-j>', '<CMD>NavigatorDown<CR>')
-
--- ToggleTerm
-map({ 'n', 't' }, '<leader>tt', '<cmd>ToggleTerm<CR>')
-map({ 'n', 't' }, '<leader>th', '<cmd>lua Horizontal_term_toggle()<CR>')
-map({ 'n', 't' }, '<leader>tv', '<cmd>lua Vertical_term_toggle()<CR>')
-
--- LazyGit
-map({ 'n', 't' }, '<leader>gg', '<cmd>lua Lazygit_toggle()<CR>')
-
-map('n', '<leader>tg', '<cmd>lua Gh_dash()<CR>')
-
--- Fugitive git bindings
-map('n', '<leader>gs', vim.cmd.Git)
-map('n', '<leader>ga', ':Git add %:p<CR><CR>')
---map("n", "<leader>gs", ":Gstatus<CR>")
-map('n', '<leader>gc', ':Gcommit -v -q<CR>')
-map('n', '<leader>gt', ':Gcommit -v -q %:p<CR>')
---map("n", "<leader>gd", ":Gdiff<CR>")
-map('n', '<leader>ge', ':Gedit<CR>')
---map("n", "<leader>gr", ":Gread<Cj>")
-map('n', '<leader>gw', ':Gwrite<CR><CR>')
-map('n', '<leader>gl', ':silent! Glog<CR>:bot copen<CR>')
---map("n", "<leader>gp", ":Ggrep<Space>")
---map("n", "<Leader>gp", ":Git push<CR>")
---map("n", "<Leader>gb", ":Gblame<CR>")
-map('n', '<leader>gm', ':Gmove<Space>')
---map("n", "<leader>gb", ":Git branch<Space>")
---map("n", "<leader>go", ":Git checkout<Space>")
---map("n", "<leader>gps", ":Dispatch! git push<CR>")
---map("n", "<leader>gpl", ":Dispatch! git pull<CR>")
-
--- Telescope
-map('n', '<leader>ff', ":cd %:p:h<CR>:pwd<CR><cmd>lua require('telescope.builtin').find_files()<cr>") -- find files with hidden option
-map('n', '<leader>fF', ":cd %:p:h<CR>:pwd<CR><cmd>lua require('user.mods').findFilesInCwd()<CR>", { noremap = true, silent = true, desc = 'Find files in cwd' })
-map('n', '<leader>f.', function()
- require('telescope.builtin').find_files({ hidden = true, no_ignore = true })
-end) -- find all files
-map('n', '<leader>fg', "<cmd>lua require('telescope.builtin').live_grep()<cr>")
-map('n', '<leader>fb', "<cmd>lua require('telescope.builtin').buffers()<cr>")
-map('n', '<leader>fh', "<cmd>lua require('telescope.builtin').help_tags()<cr>")
-map('n', '<leader>fc', "<cmd>lua require('telescope.builtin').commands()<cr>")
-map('n', '<leader>cf', '<cmd>Telescope changed_files<cr>')
-map('n', '<leader>fp', '<cmd>Telescope pickers<cr>')
-map('n', '<leader>fd', "<cmd>lua require('telescope.builtin').diagnostics()<cr>")
-map('n', '<leader>fk', "<cmd>lua require('telescope.builtin').keymaps()<cr>")
-map('n', '<leader>fr', "<cmd>lua require('telescope.builtin').registers({})<CR>") -- registers picker
-map('n', '<leader>fm', "<cmd>lua require('telescope').extensions.media_files.media_files({})<cr>") -- find media files
-map('n', '<leader>fi', "<cmd>lua require('telescope').extensions.notify.notify({})<cr>") -- find notifications
-map('n', '<Leader>fs', '<cmd>lua require("session-lens").search_session()<CR>')
-map('n', '<leader>ffd', [[<Cmd>lua require'plugins.telescope'.find_dirs()<CR>]]) -- find dies
-map('n', '<leader>ff.', [[<Cmd>lua require'plugins.telescope'.find_configs()<CR>]]) -- find configs
-map('n', '<leader>ffs', [[<Cmd>lua require'plugins.telescope'.find_scripts()<CR>]]) -- find scripts
-map('n', '<leader>ffw', [[<Cmd>lua require'plugins.telescope'.find_projects()<CR>]]) -- find projects
-map('n', '<leader>ffb', [[<Cmd>lua require'plugins.telescope'.find_books()<CR>]]) -- find books
-map('n', '<leader>ffn', [[<Cmd>lua require'plugins.telescope'.find_notes()<CR>]]) -- find notes
-map('n', '<leader>fgn', [[<Cmd>lua require'plugins.telescope'.grep_notes()<CR>]]) -- search notes
-map('n', '<Leader>frf', "<cmd>lua require('telescope').extensions.recent_files.pick()<CR>")
-map('n', '<leader>ffc', "<cmd>lua require('telescope.builtin').current_buffer_fuzzy_find()<cr>")
-map('n', '<Leader>f/', "<cmd>lua require('telescope').extensions.file_browser.file_browser()<CR>")
---map("n", "<leader>f/", "<cmd>lua require('plugins.telescope').curbuf()<cr>") -- find files with hidden option
--- Map a shortcut to open the picker.
-
--- FZF
-map('n', '<leader>fz', "<cmd>lua require('fzf-lua').files()<CR>")
-
--- Nvim-tree
-map('n', '<leader>f', '<cmd>Rooter<CR>:NvimTreeToggle<CR>', {})
-
--- Undotree
-map('n', '<leader>u', vim.cmd.UndotreeToggle)
-
--- Markdown-preview
-map('n', '<leader>md', '<Plug>MarkdownPreviewToggle')
-map('n', '<leader>mg', '<CMD>Glow<CR>')
-
--- Autopairs
-map('n', '<leader>ww', "<cmd>lua require('user.mods').Toggle_autopairs()<CR>")
-
--- Zen-mode toggle
-map('n', '<leader>zm', "<CMD>ZenMode<CR> | :echom ('Zen Mode')<CR> | :sl! | echo ('')<CR>")
-
--- Vim-rooter
-map('n', '<leader>ro', "<CMD>Rooter<CR> | :echom ('cd to root/project directory')<CR> | :sl! | echo ('')<CR>", term_opts)
-
--- Trouble (UI to show diagnostics)
-map('n', '<leader>t', ':cd %:p:h<CR>:pwd<CR><CMD>TroubleToggle<CR>')
-map('n', '<leader>tw', ':cd %:p:h<CR>:pwd<CR><CMD>TroubleToggle workspace_diagnostics<CR>')
-map('n', '<leader>td', ':cd %:p:h<CR>:pwd<CR><CMD>TroubleToggle document_diagnostics<CR>')
-map('n', '<leader>tq', ':cd %:p:h<CR>:pwd<CR><CMD>TroubleToggle quickfix<CR>')
-map('n', '<leader>tl', ':cd %:p:h<CR>:pwd<CR><CMD>TroubleToggle loclist<CR>')
-map('n', 'gR', '<CMD>TroubleToggle lsp_references<CR>')
-
--- Null-ls
-map('n', '<leader>ls', '<CMD>NullLsToggle<CR>')
-
--- Replacer
-map('n', '<Leader>qr', ':lua require("replacer").run()<CR>')
-
--- Quickfix
-map('n', '<leader>q', function()
- if vim.fn.getqflist({ winid = 0 }).winid ~= 0 then
- require('plugins.quickfix').close()
- else
- require('plugins.quickfix').open()
- end
-end, { desc = 'Toggle quickfix window' })
-
--- Move to the next and previous item in the quickfixlist
-map('n', ']c', '<Cmd>cnext<CR>')
-map('n', '[c', '<Cmd>cprevious<CR>')
-
--- Location list
-map('n', '<leader>l', '<cmd>lua require("plugins.loclist").loclist_toggle()<CR>')
-
--- Dap (debugging)
-local dap_ok, dap = pcall(require, 'dap')
-local dap_ui_ok, ui = pcall(require, 'dapui')
-
-if not (dap_ok and dap_ui_ok) then
- require('notify')('nvim-dap or dap-ui not installed!', 'warning')
- return
-end
-
-vim.fn.sign_define('DapBreakpoint', { text = '🐞' })
-
--- Start debugging session
-map('n', '<leader>ds', function()
- dap.continue()
- ui.toggle({})
- vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('<C-w>=', false, true, true), 'n', false) -- Spaces buffers evenly
-end)
-
--- Set breakpoints, get variable values, step into/out of functions, etc.
-map('n', '<leader>dC', dap.continue)
--- map("n", "<leader>dC", dap.close)
--- map("n", "<leader>dt", dap.terminate)
-map('n', '<leader>dt', ui.toggle)
-map('n', '<leader>dd', function()
- dap.disconnect({ terminateDebuggee = true })
-end)
-map('n', '<leader>dn', dap.step_over)
-map('n', '<leader>di', dap.step_into)
-map('n', '<leader>do', dap.step_out)
-map('n', '<leader>db', dap.toggle_breakpoint)
-map('n', '<leader>dB', function()
- dap.clear_breakpoints()
- require('notify')('Breakpoints cleared', 'warn')
-end)
-map('n', '<leader>dl', require('dap.ui.widgets').hover)
-map('n', '<leader>de', function()
- require('dapui').float_element()
-end, { desc = 'Open Element' })
-map('n', '<leader>dq', function()
- require('dapui').close()
- require('dap').repl.close()
- local session = require('dap').session()
- if session then
- require('dap').terminate()
- end
- require('nvim-dap-virtual-text').refresh()
-end, { desc = 'Terminate Debug' })
-map('n', '<leader>dc', function()
- require('telescope').extensions.dap.commands()
-end, { desc = 'DAP-Telescope: Commands' })
---vim.keymap.set("n", "<leader>B", ":lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>")
---vim.keymap.set("v", "<leader>B", ":lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>")
---vim.keymap.set("n", "<leader>lp", ":lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<CR>")
---vim.keymap.set("n", "<leader>dr", ":lua require'dap'.repl.open()<CR>")
-
--- Close debugger and clear breakpoints
---map("n", "<leader>de", function()
--- dap.clear_breakpoints()
--- ui.toggle({})
--- dap.terminate()
--- vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<C-w>=", false, true, true), "n", false)
--- require("notify")("Debugger session ended", "warn")
---end)
-
--- Toggle Dashboard
-map('n', '<leader><Space>', '<CMD>lua require("user.mods").toggle_dashboard()<CR>')
-
--- Lsp Lines toggle
-map('', '<Leader>ll', require('lsp_lines').toggle, { desc = 'Toggle lsp_lines' })
-
--- SnipRun
-map({ 'n', 'v' }, '<leader>r', '<Plug>SnipRun<CR>')
-
--- Codi
-map('n', '<leader>co', '<CMD>lua require("user.mods").toggleCodi()<CR>')
-
--- Scratch buffer
-map('n', '<leader>ss', '<CMD>lua require("user.mods").Scratch("float")<CR>')
-map('n', '<leader>sh', '<CMD>lua require("user.mods").Scratch("horizontal")<CR>')
-map('n', '<leader>sv', '<CMD>lua require("user.mods").Scratch("vertical")<CR>')
-
--- Hardtime
-map('n', '<leader>H', '<CMD>lua require("plugins.hardtime").ToggleHardtime()<CR>')
-
--- Code Run
-map('n', '<leader>rr', '<CMD>lua require("user.mods").toggleCodeRunner()<CR>')
-
--- Run executable file
-map('n', '<leader>rx', ":lua require('user.mods').RunCurrentFile()<CR>:echom 'Running executable file...'<CR>:sl!<CR>:echo ''<CR>")
-
--- Close all floating windows
-map({ 'n', 't', 'c' }, '<leader>w', '<CMD>CloseFloatingWindows<CR>')
diff --git a/.config/nvim/lua/user/mods.lua b/.config/nvim/lua/user/mods.lua
deleted file mode 100644
index c4431df..0000000
--- a/.config/nvim/lua/user/mods.lua
+++ /dev/null
@@ -1,1059 +0,0 @@
-local M = {}
-
---- Shorten Function Names
-local fn = vim.fn
-function M.executable(name)
- if fn.executable(name) > 0 then
- return true
- end
-
- return false
-end
-
---------------------------------------------------
-
---- Check whether a feature exists in Nvim
---- @feat: string
---- the feature name, like `nvim-0.7` or `unix`.
---- return: bool
-M.has = function(feat)
- if fn.has(feat) == 1 then
- return true
- end
-
- return false
-end
-
---------------------------------------------------
-
--- Format on save
-local format_augroup = vim.api.nvim_create_augroup('LspFormatting', {})
-require('null-ls').setup({
- -- you can reuse a shared lspconfig on_attach callback here
- on_attach = function(client, bufnr)
- if client.supports_method('textDocument/formatting') then
- vim.api.nvim_clear_autocmds({ group = format_augroup, buffer = bufnr })
- vim.api.nvim_create_autocmd('BufWritePre', {
- group = format_augroup,
- buffer = bufnr,
- callback = function()
- -- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead
- --vim.lsp.buf.formatting_seq_sync()
- vim.lsp.buf.format({ bufnr = bufnr })
- end,
- })
- end
- end,
-})
-
-vim.cmd([[autocmd BufWritePre <buffer> lua vim.lsp.buf.format()]])
---vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]]
-
---------------------------------------------------
-
----Determine if a value of any type is empty
----@param item any
----@return boolean?
-function M.empty(item)
- if not item then
- return true
- end
- local item_type = type(item)
- if item_type == 'string' then
- return item == ''
- end
- if item_type == 'number' then
- return item <= 0
- end
- if item_type == 'table' then
- return vim.tbl_isempty(item)
- end
- return item ~= nil
-end
-
---------------------------------------------------
-
---- Create a dir if it does not exist
-function M.may_create_dir(dir)
- local res = fn.isdirectory(dir)
-
- if res == 0 then
- fn.mkdir(dir, 'p')
- end
-end
-
---------------------------------------------------
-
---- Toggle cmp completion
-vim.g.cmp_toggle_flag = false -- initialize
-local normal_buftype = function()
- return vim.api.nvim_buf_get_option(0, 'buftype') ~= 'prompt'
-end
-M.toggle_completion = function()
- local ok, cmp = pcall(require, 'cmp')
- if ok then
- local next_cmp_toggle_flag = not vim.g.cmp_toggle_flag
- if next_cmp_toggle_flag then
- print('completion on')
- else
- print('completion off')
- end
- cmp.setup({
- enabled = function()
- vim.g.cmp_toggle_flag = next_cmp_toggle_flag
- if next_cmp_toggle_flag then
- return normal_buftype
- else
- return next_cmp_toggle_flag
- end
- end,
- })
- else
- print('completion not available')
- end
-end
-
---------------------------------------------------
-
---- Make sure using latest neovim version
-function M.get_nvim_version()
- local actual_ver = vim.version()
-
- local nvim_ver_str = string.format('%d.%d.%d', actual_ver.major, actual_ver.minor, actual_ver.patch)
- return nvim_ver_str
-end
-
-function M.add_pack(name)
- local status, error = pcall(vim.cmd, 'packadd ' .. name)
-
- return status
-end
-
---------------------------------------------------
-
--- Define a global function to retrieve LSP clients based on Neovim version
-function M.get_lsp_clients(bufnr)
- local mods = require('user.mods')
- --local expected_ver = '0.10.0'
- local nvim_ver = mods.get_nvim_version()
-
- local version_major, version_minor = string.match(nvim_ver, '(%d+)%.(%d+)')
- version_major = tonumber(version_major)
- version_minor = tonumber(version_minor)
-
- if version_major > 0 or (version_major == 0 and version_minor >= 10) then
- return vim.lsp.get_clients({ buffer = bufnr })
- else
- return vim.lsp.buf_get_clients()
- end
-end
-
---------------------------------------------------
-
---- Toggle autopairs on/off (requires "windwp/nvim-autopairs")
-function M.Toggle_autopairs()
- local ok, autopairs = pcall(require, 'nvim-autopairs')
- if ok then
- if autopairs.state.disabled then
- autopairs.enable()
- print('autopairs on')
- else
- autopairs.disable()
- print('autopairs off')
- end
- else
- print('autopairs not available')
- end
-end
-
---------------------------------------------------
-
---- Make vim-rooter message disappear after making it's changes
---vim.cmd([[
---let timer = timer_start(1000, 'LogTrigger', {})
---func! LogTrigger(timer)
--- silent!
---endfunc
---]])
---
---vim.cmd([[
---function! ConfigureChDir()
--- echo ('')
---endfunction
---" Call after vim-rooter changes the root dir
---autocmd User RooterChDir :sleep! | call LogTrigger(timer) | call ConfigureChDir()
---]])
-
-function M.findFilesInCwd()
- vim.cmd('let g:rooter_manual_only = 1') -- Toggle the rooter plugin
- require('plugins.telescope').findhere()
- vim.defer_fn(function()
- vim.cmd('let g:rooter_manual_only = 0') -- Change back to automatic rooter
- end, 100)
-end
-
---function M.findFilesInCwd()
--- vim.cmd("let g:rooter_manual_only = 1") -- Toggle the rooter plugin
--- require("plugins.telescope").findhere()
--- --vim.cmd("let g:rooter_manual_only = 0") -- Change back to automatic rooter
---end
-
---------------------------------------------------
-
--- Toggle the executable permission
-function M.Toggle_executable()
- local current_file = vim.fn.expand('%:p')
- local executable = vim.fn.executable(current_file) == 1
-
- if executable then
- -- File is executable, unset the executable permission
- vim.fn.system('chmod -x ' .. current_file)
- --print(current_file .. ' is no longer executable.')
- print('No longer executable')
- else
- -- File is not executable, set the executable permission
- vim.fn.system('chmod +x ' .. current_file)
- --print(current_file .. ' is now executable.')
- print('Now executable')
- end
-end
-
---------------------------------------------------
-
--- Set bare dotfiles repository git environment variables dynamically
-
--- Set git enviornment variables
---function M.Set_git_env_vars()
--- local git_dir_job = vim.fn.jobstart({ "git", "rev-parse", "--git-dir" })
--- local command_status = vim.fn.jobwait({ git_dir_job })[1]
--- if command_status > 0 then
--- vim.env.GIT_DIR = vim.fn.expand("$HOME/.cfg")
--- vim.env.GIT_WORK_TREE = vim.fn.expand("~")
--- else
--- vim.env.GIT_DIR = nil
--- vim.env.GIT_WORK_TREE = nil
--- end
--- -- Launch terminal emulator with Git environment variables set
--- --require("toggleterm").exec(string.format([[%s %s]], os.getenv("SHELL"), "-i"))
---end
-
-------
-
-local prev_cwd = ''
-
-function M.Set_git_env_vars()
- local cwd = vim.fn.getcwd()
- if prev_cwd == '' then
- -- First buffer being opened, set prev_cwd to cwd
- prev_cwd = cwd
- elseif cwd ~= prev_cwd then
- -- Working directory has changed since last buffer was opened
- prev_cwd = cwd
- local git_dir_job = vim.fn.jobstart({ 'git', 'rev-parse', '--git-dir' })
- local command_status = vim.fn.jobwait({ git_dir_job })[1]
- if command_status > 0 then
- vim.env.GIT_DIR = vim.fn.expand('$HOME/.cfg')
- vim.env.GIT_WORK_TREE = vim.fn.expand('~')
- else
- vim.env.GIT_DIR = nil
- vim.env.GIT_WORK_TREE = nil
- end
- end
-end
-
-vim.cmd([[augroup my_git_env_vars]])
-vim.cmd([[ autocmd!]])
-vim.cmd([[ autocmd BufEnter * lua require('user.mods').Set_git_env_vars()]])
-vim.cmd([[ autocmd VimEnter * lua require('user.mods').Set_git_env_vars()]])
-vim.cmd([[augroup END]])
-
---------------------------------------------------
-
---- Update Tmux Status Vi-mode
-function M.update_tmux_status()
- local mode = vim.api.nvim_eval('mode()')
- -- Determine the mode name based on the mode value
- local mode_name
- if mode == 'n' then
- mode_name = '-- NORMAL --'
- elseif mode == 'i' or mode == 'ic' then
- mode_name = '-- INSERT --'
- else
- mode_name = '-- NORMAL --' --'-- COMMAND --'
- end
-
- -- Write the mode name to the file
- local file = io.open(os.getenv('HOME') .. '/.vi-mode', 'w')
- file:write(mode_name)
- file:close()
- if nvim_running then
- -- Neovim is running, update the mode file and refresh tmux
- VI_MODE = '' -- Clear VI_MODE to show Neovim mode
- vim.cmd('silent !tmux refresh-client -S')
- end
- ---- Force tmux to update the status
- vim.cmd('silent !tmux refresh-client -S')
-end
-
-vim.cmd([[
- augroup TmuxStatus
- autocmd!
- autocmd InsertLeave,InsertEnter * lua require("user.mods").update_tmux_status()
- autocmd VimEnter * lua require("user.mods").update_tmux_status()
- autocmd BufEnter * lua require("user.mods").update_tmux_status()
- autocmd ModeChanged * lua require("user.mods").update_tmux_status()
- autocmd WinEnter,WinLeave * lua require("user.mods").update_tmux_status()
- augroup END
-]])
-
--- Add autocmd for <esc>
--- Add autocmd to check when tmux switches panes/windows
---autocmd InsertLeave,InsertEnter * lua require("user.mods").update_tmux_status()
---autocmd BufEnter * lua require("user.mods").update_tmux_status()
---autocmd WinEnter,WinLeave * lua require("user.mods").update_tmux_status()
-
---autocmd WinEnter,WinLeave * lua require("user.mods").update_tmux_status()
---autocmd VimResized * lua require("user.mods").update_tmux_status()
---autocmd FocusGained * lua require("user.mods").update_tmux_status()
---autocmd FocusLost * lua require("user.mods").update_tmux_status()
---autocmd CmdwinEnter,CmdwinLeave * lua require("user.mods").update_tmux_status()
-
---------------------------------------------------
-
--- function OpenEmulatorList()
--- local emulatorsBuffer = vim.api.nvim_create_buf(false, true)
--- vim.api.nvim_buf_set_lines(emulatorsBuffer, 0, 0, true, {"Some text"})
--- vim.api.nvim_open_win(
--- emulatorsBuffer,
--- false,
--- {
--- relative='win', row=3, col=3, width=12, height=3
--- }
--- )
--- end
---
--- vim.api.nvim_create_user_command('OpenEmulators', OpenEmulatorList, {})
-
---local api = vim.api
---local fn = vim.fn
---local cmd = vim.cmd
---
---local function bufremove(opts)
--- local target_buf_id = api.nvim_get_current_buf()
---
--- -- Do nothing if buffer is in modified state.
--- if not opts.force and api.nvim_buf_get_option(target_buf_id, 'modified') then
--- return false
--- end
---
--- -- Hide target buffer from all windows.
--- vim.tbl_map(function(win_id)
--- win_id = win_id or 0
---
--- local current_buf_id = api.nvim_win_get_buf(win_id)
---
--- api.nvim_win_call(win_id, function()
--- -- Try using alternate buffer
--- local alt_buf_id = fn.bufnr('#')
--- if alt_buf_id ~= current_buf_id and fn.buflisted(alt_buf_id) == 1 then
--- api.nvim_win_set_buf(win_id, alt_buf_id)
--- return
--- end
---
--- -- Try using previous buffer
--- cmd('bprevious')
--- if current_buf_id ~= api.nvim_win_get_buf(win_id) then
--- return
--- end
---
--- -- Create new listed scratch buffer
--- local new_buf = api.nvim_create_buf(true, true)
--- api.nvim_win_set_buf(win_id, new_buf)
--- end)
---
--- return true
--- end, fn.win_findbuf(target_buf_id))
---
--- cmd(string.format('bdelete%s %d', opts.force and '!' or '', target_buf_id))
---end
---
----- Assign bufremove to a global variable
---_G.bufremove = bufremove
-
---vim.cmd([[
--- augroup NvimTreeDelete
--- autocmd!
--- autocmd FileType NvimTree lua require('user.mods').enew_on_delete()
--- augroup END
---]])
---
---function M.enew_on_delete()
--- if vim.bo.buftype == 'nofile' then
--- vim.cmd('enew')
--- end
---end
-
--- Update Neovim
---function M.Update_neovim()
--- -- Run the commands to download and extract the latest version
--- os.execute("curl -L -o nvim-linux64.tar.gz https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz")
--- os.execute("tar xzvf nvim-linux64.tar.gz")
--- -- Replace the existing Neovim installation with the new version
--- os.execute("rm -rf $HOME/.local/bin/nvim")
--- os.execute("mv nvim-linux64 $HOME/.local/bin/nvim")
---
--- -- Clean up the downloaded file
--- os.execute("rm nvim-linux64.tar.gz")
---
--- -- Print a message to indicate the update is complete
--- print("Neovim has been updated to the latest version.")
---end
---
----- Bind a keymap to the update_neovim function (optional)
---vim.api.nvim_set_keymap('n', '<leader>u', '<cmd> lua require("user.mods").Update_neovim()<CR>', { noremap = true, silent = true })
-
--- Define a function to create a floating window and run the update process inside it
-function M.Update_neovim()
- -- Create a new floating window
- local bufnr, winid = vim.api.nvim_create_buf(false, true)
- vim.api.nvim_open_win(bufnr, true, {
- relative = 'editor',
- width = 80,
- height = 20,
- row = 2,
- col = 2,
- style = 'minimal',
- border = 'single',
- })
-
- -- Function to append a line to the buffer in the floating window
- local function append_line(line)
- vim.api.nvim_buf_set_option(bufnr, 'modifiable', true)
- vim.api.nvim_buf_set_lines(bufnr, -1, -1, false, { line })
- vim.api.nvim_buf_set_option(bufnr, 'modifiable', false)
- end
-
- -- Download the latest version of Neovim
- append_line('Downloading the latest version of Neovim...')
- os.execute('curl -L -o nvim-linux64.tar.gz https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz')
- append_line('Download complete.')
-
- -- Extract the downloaded archive
- append_line('Extracting the downloaded archive...')
- os.execute('tar xzvf nvim-linux64.tar.gz')
- append_line('Extraction complete.')
-
- -- Replace the existing Neovim installation with the new version
- append_line('Replacing the existing Neovim installation...')
- os.execute('rm -rf $HOME/nvim')
- os.execute('mv nvim-linux64 $HOME/nvim')
- append_line('Update complete.')
-
- -- Clean up the downloaded file
- append_line('Cleaning up the downloaded file...')
- os.execute('rm nvim-linux64.tar.gz')
- append_line('Cleanup complete.')
-
- -- Close the floating window after a delay
- vim.defer_fn(function()
- vim.api.nvim_win_close(winid, true)
- end, 5000) -- Adjust the delay as needed
-end
-
--- Bind a keymap to the update_neovim function (optional)
-vim.api.nvim_set_keymap('n', '<leader>U', '<cmd> lua require("user.mods").Update_neovim()<CR>', { noremap = true, silent = true })
-
---------------------------------------------------
-
--- Fix or suppress closing nvim error message (/src/unix/core.c:147: uv_close: Assertion `!uv__is_closing(handle)' failed.)
-vim.api.nvim_create_autocmd({ 'VimLeave' }, {
- callback = function()
- vim.fn.jobstart('!notify-send 2>/dev/null &', { detach = true })
- end,
-})
-
---------------------------------------------------
-
--- Rooter
---vim.cmd([[autocmd BufEnter * lua vim.cmd('Rooter')]])
-
---------------------------------------------------
-
--- Nvim-tree
-local modifiedBufs = function(bufs) -- nvim-tree is also there in modified buffers so this function filter it out
- local t = 0
- for k, v in pairs(bufs) do
- if v.name:match('NvimTree_', 'NvimTree1') == nil then
- t = t + 1
- end
- end
- return t
-end
-
--- Deleting current file opened behaviour
-function M.DeleteCurrentBuffer()
- local cbn = vim.api.nvim_get_current_buf()
- local buffers = vim.fn.getbufinfo({ buflisted = true })
- local size = #buffers
- local idx = 0
-
- for n, e in ipairs(buffers) do
- if e.bufnr == cbn then
- idx = n
- break -- Exit loop as soon as we find the buffer
- end
- end
-
- if idx == 0 then
- return
- end
-
- if idx == size then
- vim.cmd('bprevious')
- else
- vim.cmd('bnext')
- end
-
- vim.cmd('silent! bdelete ' .. cbn)
-
- -- Open a new blank window
- vim.cmd('silent! enew') -- Opens a new vertical split
- -- OR
- -- vim.cmd("new") -- Opens a new horizontal split
- -- Delay before opening a new split
- --vim.defer_fn(function()
- -- vim.cmd("enew") -- Opens a new vertical split
- --end, 100) -- Adjust the delay as needed (in milliseconds)
- -- Delay before closing the nvim-tree window
-end
-
-vim.cmd([[autocmd FileType NvimTree lua require("user.mods").DeleteCurrentBuffer()]])
-
--- On :bd nvim-tree should behave as if it wasn't opened
-vim.api.nvim_create_autocmd('BufEnter', {
- nested = true,
- callback = function()
- -- Only 1 window with nvim-tree left: we probably closed a file buffer
- if #vim.api.nvim_list_wins() == 1 and require('nvim-tree.utils').is_nvim_tree_buf() then
- local api = require('nvim-tree.api')
- -- Required to let the close event complete. An error is thrown without this.
- vim.defer_fn(function()
- -- close nvim-tree: will go to the last buffer used before closing
- api.tree.toggle({ find_file = true, focus = true })
- -- re-open nivm-tree
- api.tree.toggle({ find_file = true, focus = true })
- -- nvim-tree is still the active window. Go to the previous window.
- vim.cmd('wincmd p')
- end, 0)
- end
- end,
-})
-
--- Dismiss notifications when opening nvim-tree window
-local function isNvimTreeOpen()
- local win = vim.fn.win_findbuf(vim.fn.bufnr('NvimTree'))
- return vim.fn.empty(win) == 0
-end
-
-function M.DisableNotify()
- if isNvimTreeOpen() then
- require('notify').dismiss()
- end
-end
-
-vim.cmd([[
- autocmd! WinEnter,WinLeave * lua require('user.mods').DisableNotify()
-]])
-
---------------------------------------------------
-
--- Toggle Dashboard
-function M.toggle_dashboard()
- if vim.bo.filetype == 'dashboard' then
- vim.cmd('bdelete')
- else
- vim.cmd('Dashboard')
- end
-end
-
---------------------------------------------------
-
--- Helper function to suppress errors
-local function silent_execute(cmd)
- vim.fn['serverlist']() -- Required to prevent 'Press ENTER' prompt
- local result = vim.fn.system(cmd .. ' 2>/dev/null')
- vim.fn['serverlist']()
- return result
-end
-
---------------------------------------------------
-
--- Toggle Codi
--- Define a global variable to track Codi's state
-local is_codi_open = false
-
-function M.toggleCodi()
- if is_codi_open then
- -- Close Codi
- vim.cmd('Codi!')
- is_codi_open = false
- print('Codi off')
- else
- -- Open Codi
- vim.cmd('Codi')
- is_codi_open = true
- print('Codi on')
- end
-end
-
---------------------------------------------------
-
----- Function to create or toggle a scratch buffer
--- Define global variables to store the scratch buffer and window
-local scratch_buf = nil
-local scratch_win = nil
-
--- Other global variables
-local scratch_date = os.date('%Y-%m-%d')
-local scratch_dir = vim.fn.expand('~/notes/private')
-local scratch_file = 'scratch-' .. scratch_date .. '.md'
-
--- Function to close and delete a buffer
-function CloseAndDeleteBuffer(bufnr)
- if bufnr and vim.api.nvim_buf_is_valid(bufnr) then
- vim.api.nvim_command('silent! bwipe ' .. bufnr)
- end
-end
-
-function M.Scratch(Split_direction)
- -- Check if the directory exists, and create it if it doesn't
- if vim.fn.isdirectory(scratch_dir) == 0 then
- vim.fn.mkdir(scratch_dir, 'p')
- end
-
- -- Determine the window type based on Split_direction
- local current_window_type = 'float'
- if Split_direction == 'float' then
- current_window_type = 'float'
- elseif Split_direction == 'vertical' then
- current_window_type = 'vertical'
- elseif Split_direction == 'horizontal' then
- current_window_type = 'horizontal'
- end
-
- local file_path = scratch_dir .. '/' .. scratch_file
-
- if scratch_win and vim.api.nvim_win_is_valid(scratch_win) then
- -- Window exists, save buffer to file and close it
- WriteScratchBufferToFile(scratch_buf, file_path)
- vim.cmd(':w!')
- vim.api.nvim_win_close(scratch_win, true)
- CloseAndDeleteBuffer(scratch_buf)
- scratch_win = nil
- scratch_buf = nil
- else
- if scratch_buf and vim.api.nvim_buf_is_valid(scratch_buf) then
- -- Buffer exists, reuse it and open a new window
- OpenScratchWindow(scratch_buf, current_window_type)
- else
- -- Buffer doesn't exist, create it and load the file if it exists
- scratch_buf = OpenScratchBuffer(file_path)
- OpenScratchWindow(scratch_buf, current_window_type)
- end
- end
-end
-
--- Function to write buffer contents to a file
-function WriteScratchBufferToFile(buf, file_path)
- if buf and vim.api.nvim_buf_is_valid(buf) then
- local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false)
- local content = table.concat(lines, '\n')
- local escaped_file_path = vim.fn.fnameescape(file_path)
-
- -- Write the buffer content to the file
- local file = io.open(escaped_file_path, 'w')
- if file then
- file:write(content)
- file:close()
- end
- end
-end
-
--- Function to create or open the scratch buffer
-function OpenScratchBuffer(file_path)
- local buf = vim.api.nvim_create_buf(true, false)
-
- -- Set the file name for the buffer
- local escaped_file_path = vim.fn.fnameescape(file_path)
- vim.api.nvim_buf_set_name(buf, escaped_file_path)
-
- -- Check if the file exists and load it if it does
- if vim.fn.filereadable(file_path) == 1 then
- local file_contents = vim.fn.readfile(file_path)
- vim.api.nvim_buf_set_lines(buf, 0, -1, true, file_contents)
- else
- -- Insert initial content
- vim.api.nvim_buf_set_lines(buf, 0, -1, true, {
- '# Quick Notes - ' .. scratch_date,
- '--------------------------',
- '',
- })
-
- -- Save the initial content to the file
- vim.cmd(':w')
- end
-
- return buf
-end
-
--- Function to open the scratch buffer in a window
-function OpenScratchWindow(buf, current_window_type)
- if buf and vim.api.nvim_buf_is_valid(buf) then
- if current_window_type == 'float' then
- local opts = {
- relative = 'win',
- width = 120,
- height = 10,
- border = 'single',
- row = 20,
- col = 20,
- }
- scratch_win = vim.api.nvim_open_win(buf, true, opts)
- -- Go to the last line of the buffer
- vim.api.nvim_win_set_cursor(scratch_win, { vim.api.nvim_buf_line_count(buf), 1 })
- elseif current_window_type == 'vertical' then
- vim.cmd('vsplit')
- vim.api.nvim_win_set_buf(0, buf)
- scratch_win = 0
- elseif current_window_type == 'horizontal' then
- vim.cmd('split')
- vim.api.nvim_win_set_buf(0, buf)
- scratch_win = 0
- end
- end
-end
-
---------------------------------------------------
-
--- Intercept file open
-local augroup = vim.api.nvim_create_augroup('user-autocmds', { clear = true })
-local intercept_file_open = true
-vim.api.nvim_create_user_command('InterceptToggle', function()
- intercept_file_open = not intercept_file_open
- local intercept_state = '`Enabled`'
- if not intercept_file_open then
- intercept_state = '`Disabled`'
- end
- vim.notify('Intercept file open set to ' .. intercept_state, vim.log.levels.INFO, {
- title = 'Intercept File Open',
- ---@param win integer The window handle
- on_open = function(win)
- vim.api.nvim_buf_set_option(vim.api.nvim_win_get_buf(win), 'filetype', 'markdown')
- end,
- })
-end, { desc = 'Toggles intercepting BufNew to open files in custom programs' })
-
--- NOTE: Add "BufReadPre" to the autocmd events to also intercept files given on the command line, e.g.
--- `nvim myfile.txt`
-vim.api.nvim_create_autocmd({ 'BufNew' }, {
- group = augroup,
- callback = function(args)
- ---@type string
- local path = args.match
- ---@type integer
- local bufnr = args.buf
-
- ---@type string? The file extension if detected
- local extension = vim.fn.fnamemodify(path, ':e')
- ---@type string? The filename if detected
- local filename = vim.fn.fnamemodify(path, ':t')
-
- ---Open a given file path in a given program and remove the buffer for the file.
- ---@param buf integer The buffer handle for the opening buffer
- ---@param fpath string The file path given to the program
- ---@param fname string The file name used in notifications
- ---@param prog string The program to execute against the file path
- local function open_in_prog(buf, fpath, fname, prog)
- vim.notify(string.format('Opening `%s` in `%s`', fname, prog), vim.log.levels.INFO, {
- title = 'Open File in External Program',
- ---@param win integer The window handle
- on_open = function(win)
- vim.api.nvim_buf_set_option(vim.api.nvim_win_get_buf(win), 'filetype', 'markdown')
- end,
- })
- local mods = require('user.mods')
- local nvim_ver = mods.get_nvim_version()
-
- local version_major, version_minor = string.match(nvim_ver, '(%d+)%.(%d+)')
- version_major = tonumber(version_major)
- version_minor = tonumber(version_minor)
-
- if version_major > 0 or (version_major == 0 and version_minor >= 10) then
- vim.system({ prog, fpath }, { detach = true })
- else
- vim.fn.jobstart({ prog, fpath }, { detach = true })
- end
- vim.api.nvim_buf_delete(buf, { force = true })
- end
-
- local extension_callbacks = {
- ['pdf'] = function(buf, fpath, fname)
- open_in_prog(buf, fpath, fname, 'zathura')
- end,
- ['epub'] = function(buf, fpath, fname)
- open_in_prog(buf, fpath, fname, 'zathura')
- end,
- ['mobi'] = 'pdf',
- ['png'] = function(buf, fpath, fname)
- open_in_prog(buf, fpath, fname, 'vimiv')
- end,
- ['jpg'] = 'png',
- ['mp4'] = function(buf, fpath, fname)
- open_in_prog(buf, fpath, fname, 'vlc')
- end,
- ['gif'] = 'mp4',
- }
-
- ---Get the extension callback for a given extension. Will do a recursive lookup if an extension callback is actually
- ---of type string to get the correct extension
- ---@param ext string A file extension. Example: `png`.
- ---@return fun(bufnr: integer, path: string, filename: string?) extension_callback The extension callback to invoke, expects a buffer handle, file path, and filename.
- local function extension_lookup(ext)
- local callback = extension_callbacks[ext]
- if type(callback) == 'string' then
- callback = extension_lookup(callback)
- end
- return callback
- end
-
- if extension ~= nil and not extension:match('^%s*$') and intercept_file_open then
- local callback = extension_lookup(extension)
- if type(callback) == 'function' then
- callback(bufnr, path, filename)
- end
- end
- end,
-})
-
---------------------------------------------------
-
--- Delete [No Name] buffers
-vim.api.nvim_create_autocmd('BufHidden', {
- desc = 'Delete [No Name] buffers',
- callback = function(event)
- if event.file == '' and vim.bo[event.buf].buftype == '' and not vim.bo[event.buf].modified then
- vim.schedule(function()
- pcall(vim.api.nvim_buf_delete, event.buf, {})
- end)
- end
- end,
-})
-
---------------------------------------------------
-
-local codeRunnerEnabled = false
-
-function M.toggleCodeRunner()
- codeRunnerEnabled = not codeRunnerEnabled
- if codeRunnerEnabled then
- print('Code Runner enabled')
- M.RunCode() -- Execute when enabled
- else
- print('Code Runner disabled')
- -- Close the terminal window when disabled
- local buffers = vim.fn.getbufinfo()
-
- for _, buf in ipairs(buffers) do
- local type = vim.api.nvim_buf_get_option(buf.bufnr, 'buftype')
- if type == 'terminal' then
- vim.api.nvim_command('silent! bdelete ' .. buf.bufnr)
- end
- end
- end
-end
-
-local function substitute(cmd)
- cmd = cmd:gsub('%%', vim.fn.expand('%'))
- cmd = cmd:gsub('$fileBase', vim.fn.expand('%:r'))
- cmd = cmd:gsub('$filePath', vim.fn.expand('%:p'))
- cmd = cmd:gsub('$file', vim.fn.expand('%'))
- cmd = cmd:gsub('$dir', vim.fn.expand('%:p:h'))
- cmd = cmd:gsub('#', vim.fn.expand('#'))
- cmd = cmd:gsub('$altFile', vim.fn.expand('#'))
-
- return cmd
-end
-
-function M.RunCode()
- if not codeRunnerEnabled then
- print('Code Runner is currently disabled. Toggle it on to execute code.')
- return
- end
- local file_extension = vim.fn.expand('%:e')
- local selected_cmd = ''
- local supported_filetypes = {
- html = {
- default = '%',
- },
- c = {
- default = 'gcc % -o $fileBase && ./$fileBase',
- debug = 'gcc -g % -o $fileBase && ./$fileBase',
- },
- cs = {
- default = 'dotnet run',
- },
- cpp = {
- default = 'g++ % -o $fileBase && ./$fileBase',
- debug = 'g++ -g % -o ./$fileBase',
- competitive = 'g++ -std=c++17 -Wall -DAL -O2 % -o $fileBase && $fileBase<input.txt',
- },
- py = {
- default = 'python %',
- },
- go = {
- default = 'go run %',
- },
- java = {
- default = 'java %',
- },
- js = {
- default = 'node %',
- debug = 'node --inspect %',
- },
- lua = {
- default = 'lua %',
- },
- ts = {
- default = 'tsc % && node $fileBase',
- },
- rs = {
- default = 'rustc % && $fileBase',
- },
- php = {
- default = 'php %',
- },
- r = {
- default = 'Rscript %',
- },
- jl = {
- default = 'julia %',
- },
- rb = {
- default = 'ruby %',
- },
- pl = {
- default = 'perl %',
- },
- }
-
- local term_cmd = 'bot 10 new | term '
- local choices = {}
-
- -- Add 'default' as the first option if available
- if supported_filetypes[file_extension]['default'] then
- table.insert(choices, 'default')
- end
-
- -- Add 'debug' as the second option if available
- if supported_filetypes[file_extension]['debug'] then
- table.insert(choices, 'debug')
- end
-
- -- Add other available options
- for key, _ in pairs(supported_filetypes[file_extension]) do
- if key ~= 'default' and key ~= 'debug' then
- table.insert(choices, key)
- end
- end
- if #choices == 0 then
- vim.notify("It doesn't contain any command", vim.log.levels.WARN, { title = 'Code Runner' })
- elseif #choices == 1 then
- selected_cmd = supported_filetypes[file_extension][choices[1]]
- vim.cmd(term_cmd .. substitute(selected_cmd))
- else
- vim.ui.select(choices, {
- prompt = 'Choose a command: ',
- layout_config = {
- height = 10,
- width = 40,
- prompt_position = 'top',
- -- other options as required
- },
- }, function(choice)
- selected_cmd = supported_filetypes[file_extension][choice]
- if selected_cmd then
- vim.cmd(term_cmd .. substitute(selected_cmd))
- end
- end)
- end
-
- if not supported_filetypes[file_extension] then
- vim.notify("The filetype isn't included in the list", vim.log.levels.WARN, { title = 'Code Runner' })
- end
-end
-
---------------------------------------------------
-
--- Run executable file
-local interpreters = {
- python = 'python',
- lua = 'lua',
- bash = 'bash',
- zsh = 'zsh',
- perl = 'perl',
- ruby = 'ruby',
- node = 'node',
- rust = 'rust',
- php = 'php',
-}
-
-function M.RunCurrentFile()
- local file_path = vim.fn.expand('%:p')
- local file = io.open(file_path, 'r')
-
- if not file then
- print('Error: Unable to open the file')
- return
- end
-
- local shebang = file:read()
- file:close()
-
- local interpreter = shebang:match('#!%s*(.-)$')
- if not interpreter then
- print('Error: No shebang line found in the file')
- return
- end
-
- -- Remove leading spaces and any arguments, extracting the interpreter name
- interpreter = interpreter:gsub('^%s*([^%s]+).*', '%1')
-
- local cmd = interpreters[interpreter]
-
- if not cmd then
- cmd = interpreter -- Set the command to the interpreter directly
- end
-
- -- Run the file using the determined interpreter
- vim.fn.jobstart(cmd .. ' ' .. file_path, {
- cwd = vim.fn.expand('%:p:h'),
- })
-end
-
---------------------------------------------------
-
--- Close all floating windows
-vim.api.nvim_create_user_command('CloseFloatingWindows', function(opts)
- for _, window_id in ipairs(vim.api.nvim_list_wins()) do
- -- If window is floating
- if vim.api.nvim_win_get_config(window_id).relative ~= '' then
- -- Force close if called with !
- vim.api.nvim_win_close(window_id, opts.bang)
- end
- end
-end, { bang = true, nargs = 0 })
-
---------------------------------------------------
-
--- ...
-return M
diff --git a/.config/nvim/lua/user/opts.lua b/.config/nvim/lua/user/opts.lua
deleted file mode 100644
index cc8debc..0000000
--- a/.config/nvim/lua/user/opts.lua
+++ /dev/null
@@ -1,351 +0,0 @@
---[[ opts.lua ]]
-
--- Environment
---vim.opt.shell = "zsh" --
-vim.o.updatetime = 250
-vim.o.shell = '/bin/zsh'
-vim.scriptencoding = 'utf-8' --
-vim.opt.encoding = 'utf-8' --
-vim.opt.fileencoding = 'utf-8' --
-vim.g.python3_host_prog = '/usr/bin/python3' --
-vim.g.loaded_python3_provider = 1 --
-vim.g.sh_noisk = 1 -- iskeyword word boundaries when editing a 'sh' file
-vim.o.autochdir = true
---vim.o.writeany= true
-
--- Clipboard
-vim.opt.clipboard:append({ 'unnamedplus' }) -- Install xclip or this will slowdown startup
-
--- Behaviour
-vim.opt.backspace = { 'start', 'eol', 'indent' } -- Make backspace work as you would expect.
-vim.opt.hidden = true -- Switch between buffers without having to save first.
-vim.opt.splitbelow = true -- make split put the new buffer below the current buffer
-vim.opt.splitright = true -- make vsplit put the new buffer on the right of the current buffer
-vim.opt.scrolloff = 8 --
-vim.opt.sidescrolloff = 8 -- how many lines to scroll when using the scrollbar
-vim.opt.autoread = true -- reload files if changed externally
-vim.opt.display = 'lastline' -- Show as much as possible of the last line.
-vim.opt.inccommand = 'split' --
-vim.opt.ttyfast = true -- Faster redrawing.
-vim.opt.lazyredraw = false -- Only redraw when necessary
-vim.opt.keywordprg = ':help' -- :help options
-vim.opt.ruler = true --
-vim.opt.errorbells = false --
-vim.opt.list = true -- Show non-printable characters.
-vim.opt.showmatch = true --
-vim.opt.matchtime = 3 --
-vim.opt.showbreak = '↪ ' --
-vim.opt.linebreak = true --
-vim.opt.exrc = true --
---vim.opt.autochdir = true -- or use this to use <:e> to create a file in current directory
-vim.opt.autoread = true -- if a file is changed outside of vim, automatically reload it without asking
---vim.opt.notimeout = true -- Timeout on keycodes and not mappings
-vim.opt.ttimeout = true -- Makes terminal vim work sanely
-vim.opt.ttimeoutlen = 10 --
---vim.opt.timeoutlen = 100 -- time to wait for a mapped sequence to complete (in milliseconds)
---vim.cmd([[set diffopt = vertical = true]]) -- diffs are shown side-by-side not above/below
-
--- Indent/tab
-vim.opt.breakindent = true --
-vim.opt.autoindent = true -- Indent according to previous line.
-vim.opt.copyindent = true -- Copy indent from the previous line
-vim.opt.smarttab = false --
-vim.opt.tabstop = 2 --
-vim.opt.expandtab = true -- Indent according to previous line.
---vim.opt.expandtab = true -- Use spaces instead of tabs.
-vim.opt.softtabstop = 2 -- Tab key indents by 2 spaces.
-vim.opt.shiftwidth = 2 -- >> indents by 2 spaces.
-vim.opt.shiftround = true -- >> indents to next multiple of 'shiftwidth'.
-vim.opt.smartindent = true -- smart indent
-
--- Column/statusline/Cl
-vim.opt.number = true --
-vim.opt.title = true --
---vim.opt.colorcolumn = "+1" --
-vim.opt.signcolumn = 'yes:1' -- always show the sign column
---vim.opt.signcolumn = "yes:" .. vim.o.numberwidth
---vim.opt.signcolumn = "number"
---vim.opt.signcolumn = "no" --
-vim.opt.laststatus = 3 -- " Always show statusline.
-vim.opt.showmode = true -- Show current mode in command-line, example: -- INSERT -- mode
-vim.opt.showcmd = true -- Show the command in the status bar
-vim.opt.cmdheight = 1 --
---vim.opt.cmdheight = 0 --
-vim.opt.report = 0 -- Always report changed lines.
---local autocmd = vim.api.nvim_create_autocmd
---autocmd("bufenter", {
--- pattern = "*",
--- callback = function()
--- if vim.bo.ft ~= "terminal" then
--- vim.opt.statusline = "%!v:lua.require'ui.statusline'.run()"
--- else
--- vim.opt.statusline = "%#normal# "
--- end
--- end,
---})
----- With vertical splits, the statusline would still show up at the
----- bottom of the split. A quick fix is to just set the statusline
----- to empty whitespace (it can't be an empty string because then
----- it'll get replaced by the default stline).
---vim.opt.stl = " "
-
--- Backup/undo/swap
-local prefix = vim.env.XDG_CONFIG_HOME or vim.fn.expand('~/.config')
---vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
-vim.opt.undodir = { prefix .. '/nvim/tmp/.undo//' }
-vim.opt.directory = { prefix .. '/nvim/tmp/.swp//' }
-vim.opt.backupdir = { prefix .. '/nvim/tmp/.backup//' }
-vim.opt.undofile = true --
-vim.opt.swapfile = true --
-vim.opt.backup = true --
---vim.opt.backupcopy =
--- Add timestamp as extension for backup files
-vim.api.nvim_create_autocmd('BufWritePre', {
- group = vim.api.nvim_create_augroup('timestamp_backupext', { clear = true }),
- desc = 'Add timestamp to backup extension',
- pattern = '*',
- callback = function()
- vim.opt.backupext = '-' .. vim.fn.strftime('%Y%m%d%H%M')
- end,
-})
-
--- Format
---vim.opt.textwidth = 80 --
-vim.opt.isfname:append('@-@')
-vim.cmd([[let &t_Cs = "\e[4:3m"]]) -- Undercurl
-vim.cmd([[let &t_Ce = "\e[4:0m"]]) --
-vim.opt.path:append({ '**' }) -- Finding files - Search down into subfolder
-vim.cmd('set whichwrap+=<,>,[,],h,l') --
-vim.cmd([[set iskeyword+=-]]) --
---vim.cmd([[set formatoptions-=cro]]) -- TODO: this doesn't seem to work
-vim.opt.formatoptions = vim.opt.formatoptions
- - 't' -- wrap with text width
- + 'c' -- wrap comments
- + 'r' -- insert comment after enter
- - 'o' -- insert comment after o/O
- - 'q' -- allow formatting of comments with gq
- - 'a' -- format paragraphs
- + 'n' -- recognized numbered lists
- - '2' -- use indent of second line for paragraph
- + 'l' -- long lines are not broken
- + 'j' -- remove comment when joining lines
-vim.opt.wrapscan = true -- " Searches wrap around end-of-file.
---vim.wo.number = true --
---vim.opt.wrap = false -- No Wrap lines
---vim.opt.foldmethod = 'manual' --
---vim.opt.foldmethod = "expr" --
-vim.opt.foldmethod = 'manual'
-vim.opt.foldlevel = 3
-vim.opt.confirm = false
---vim.opt.shortmess:append("sI")
---vim.opt.shortmess = "a"
---vim.opt.shortmess = "sI"
---vim.o.shortmess = vim.o.shortmess:gsub('s', '')
-vim.opt.shortmess = table.concat({ -- Use abbreviations and short messages in command menu line.
- 'f', -- Use "(3 of 5)" instead of "(file 3 of 5)".
- 'i', -- Use "[noeol]" instead of "[Incomplete last line]".
- 'l', -- Use "999L, 888C" instead of "999 lines, 888 characters".
- 'm', -- Use "[+]" instead of "[Modified]".
- 'n', -- Use "[New]" instead of "[New File]".
- 'r', -- Use "[RO]" instead of "[readonly]".
- 'w', -- Use "[w]", "[a]" instead of "written", "appended".
- 'x', -- Use "[dos]", "[unix]", "[mac]" instead of "[dos format]", "[unix format]", "[mac format]".
- 'o', -- Overwrite message for writing a file with subsequent message.
- 'O', -- Message for reading a file overwrites any previous message.
- 's', -- Disable "search hit BOTTOM, continuing at TOP" such messages.
- 't', -- Truncate file message at the start if it is too long.
- 'T', -- Truncate other messages in the middle if they are too long.
- 'I', -- Don't give the :intro message when starting.
- 'c', -- Don't give ins-completion-menu messages.
- 'F', -- Don't give the file info when editing a file.
-})
-vim.opt.fillchars = {
- horiz = '─',
- horizup = '┴',
- horizdown = '┬',
- vert = '│',
- vertleft = '┤',
- vertright = '├',
- verthoriz = '┼',
- foldopen = '',
- foldsep = '│',
- foldclose = '',
- fold = '─',
- eob = ' ',
- --diff = "┃",
- diff = '░',
- msgsep = '━',
- --msgsep = "‾",
-}
-vim.opt.listchars = { tab = '▸ ', trail = '·' } --
---vim.opt.fillchars:append({ eob = " " }) -- remove the ~ from end of buffer
-vim.opt.modeline = true --
-vim.opt.modelines = 3 -- modelines (comments that set vim options on a per-file basis)
---vim.opt.modelineexpr = true
---vim.opt.nofoldenable = true -- turn folding off
---vim.opt.foldenable = false -- turn folding off
-vim.o.showtabline = 2
-
--- Highlights
-vim.opt.incsearch = true -- Highlight while searching with / or ?.
-vim.opt.hlsearch = true -- Keep matches highlighted.
-vim.opt.ignorecase = true -- ignore case in search patterns UNLESS /C or capital in search
-vim.opt.smartcase = true -- smart case
-vim.opt.synmaxcol = 200 -- Only highlight the first 200 columns.
---vim.opt.winblend = 30
---vim.opt.winblend = 5
-vim.opt.wildoptions = 'pum' --
---vim.opt.pumblend = 5 --
-vim.opt.pumblend = 12 --
---vim.opt.pumblend=15
-vim.opt.pumheight = 10 -- pop up menu height
-
--- Better Completion
-vim.opt.complete = { '.', 'w', 'b', 'u', 't' } --
---vim.opt.completeopt = { "longest,menuone,preview" } --
-vim.opt.completeopt = { 'menu', 'menuone', 'noselect' }
---vim.opt.completeopt = { "menuone", "noselect" } -- mostly just for cmp
---vim.opt.completeopt = { "menu", "menuone", "noselect" } --
-
--- Wildmenu completion --
-vim.opt.wildmenu = true --
-vim.opt.wildmode = { 'list:longest' } --
-vim.opt.wildignore:append({ '.hg', '.git', '.svn' }) -- Version control
-vim.opt.wildignore:append({ '*.aux', '*.out', '*.toc' }) -- LaTeX intermediate files
-vim.opt.wildignore:append({ '*.jpg', '*.bmp', '*.gif', '*.png', '*.jpeg' }) -- binary images
-vim.opt.wildignore:append({ '*.o', '*.obj', '*.exe', '*.dll', '*.manifest' }) -- compiled object files
-vim.opt.wildignore:append({ '*.spl' }) -- compiled spelling word lists
-vim.opt.wildignore:append({ '*.sw?' }) -- Vim swap files
-vim.opt.wildignore:append({ '*.DS_Store' }) -- OSX bullshit
-vim.opt.wildignore:append({ '*.luac' }) -- Lua byte code
-vim.opt.wildignore:append({ 'migrations' }) -- Django migrations
-vim.opt.wildignore:append({ '*.pyc' }) -- Python byte code
-vim.opt.wildignore:append({ '*.orig' }) -- Merge resolution files
-vim.opt.wildignore:append({ '*/node_modules/*' }) --
-
--- Shada
-vim.opt.shada = "!,'1000,f1,<1000,s100,:1000,/1000,h"
-
--- Sessions
-vim.opt.sessionoptions = 'blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal'
---vim.opt.sessionoptions = "curdir,folds,help,options,tabpages,winsize,winpos,terminal,globals" --
---vim.opt.sessionoptions = "buffers,curdir,folds,help,tabpages,winsize,winpos,terminal"
---vim.opt.sessionoptions:remove({ "blank", "buffers", "globals" })
-
--- Netrw file tree
-vim.g.netrw_browse_split = 0
-vim.g.netrw_banner = 0
-vim.g.netrw_winsize = 25
-
--- " Load indent files, to automatically do language-dependent indenting.
---vim.cmd([[
--- "filetype plugin indent on
---]])
-vim.cmd('filetype plugin on')
-vim.cmd('filetype indent off')
-
--- Let clipboard register be +
-vim.cmd([[
- let g:clipbrdDefaultReg = '+'
-]])
-
---vim.cmd([[
--- "autocmd BufEnter * :syntax sync fromstart
--- "syntax enable
--- "set nocompatible
--- "autocmd FileType lua set comments=s1:---,m:--,ex:--
---]])
-
--- Fast macros without lazyredraw
-vim.cmd([[
- set re=0
- nnoremap @ <cmd>execute "noautocmd norm! " . v:count1 . "@" . getcharstr()<cr>
- xnoremap @ :<C-U>execute "noautocmd '<,'>norm! " . v:count1 . "@" . getcharstr()<cr>
-]])
-
--- Stop annoying auto commenting on new lines
-vim.cmd([[
- augroup annoying
- au!
- au BufEnter * set fo-=c fo-=r fo-=o
- augroup end
-]])
-
--- Cursorline
-vim.cmd([[ " Only show cursorline in the current window and in normal mode
- augroup cline
- au!
- au WinLeave,InsertEnter * set nocursorline
- au WinEnter,InsertLeave * set cursorline
- augroup END
-]])
-vim.opt.cursorline = true --
-vim.opt.guicursor = 'i:ver100,r:hor100' --
-
--- Trailing whitespace
-vim.cmd([[ " Only show in insert mode
- augroup trailing
- au!
- au InsertEnter * :set listchars-=trail:⌴
- au InsertLeave * :set listchars+=trail:⌴
- augroup END
-]])
-
--- Line Return
-vim.cmd([[ " Return to the same line when we reopen a file
- augroup line_return
- au!
- au BufReadPost *
- \ if line("'\"") > 0 && line("'\"") <= line("$") |
- \ execute 'normal! g`"zvzz' |
- \ endif
- augroup END
-]])
-
--- Enable mouse scrollback
-vim.cmd([[
- set mouse=a
- tnoremap <Esc> <C-\><C-n>
- tnoremap <c-b> <c-\><c-n>
- function! ClearTerminal()
- set scrollback=1
- let &g:scrollback=1
- echo &scrollback
- call feedkeys("\i")
- call feedkeys("clear\<CR>")
- call feedkeys("\<C-\>\<C-n>")
- call feedkeys("\i")
- sleep 100m
- let &scrollback=s:scroll_value
- endfunction
-]])
-
--- Yank to clipboard in Termux
-if vim.fn.has('termux') == 1 then
- local Job = require('plenary.job')
- vim.api.nvim_create_autocmd('TextYankPost', {
- pattern = '*',
- callback = function()
- Job:new({
- command = 'termux-clipboard-set',
- writer = vim.fn.getreg('@'),
- }):start()
- end,
- })
-end
-
-function GetTermuxClipboard()
- if vim.fn.has('termux') == 1 then
- local sysclip = vim.fn.system('termux-clipboard-get')
- if sysclip ~= '@' then
- vim.fn.setreg('@', sysclip)
- end
- end
- return ''
-end
-
-if vim.fn.has('termux') == 1 then
- vim.cmd('autocmd TextYankPost * call GetTermuxClipboard()')
- vim.cmd('noremap <expr> p Paste("p")')
- vim.cmd('noremap <expr> P Paste("P")')
-end
diff --git a/.config/nvim/lua/user/pack.lua b/.config/nvim/lua/user/pack.lua
deleted file mode 100644
index 1a37d28..0000000
--- a/.config/nvim/lua/user/pack.lua
+++ /dev/null
@@ -1,378 +0,0 @@
-local fn = vim.fn
-
---------------------------------------------------
-
--- Automatically install packer
-local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim'
-if fn.empty(fn.glob(install_path)) > 0 then
- PACKER_BOOTSTRAP = fn.system({
- 'git',
- 'clone',
- '--depth',
- '1',
- 'https://github.com/wbthomason/packer.nvim',
- install_path,
- })
- print('Installing packer, please close and reopen Neovim...')
- vim.cmd([[packadd packer.nvim]])
-end
-
---------------------------------------------------
-
--- Autocommand that reloads neovim whenever you save this file
-vim.cmd([[
- augroup packer_user_config
- autocmd!
- autocmd BufWritePost pack.lua source <afile> | PackerSync
- augroup end
-]])
-
---------------------------------------------------
-
--- Use a protected call so don't error out on first use
-local status_ok, packer = pcall(require, 'packer')
-if not status_ok then
- return
-end
-
---------------------------------------------------
-
--- Have packer use a popup window and set a maximum number of jobs
-packer.init({
- auto_reload_compiled = true,
- --max_jobs = 90,
- display = {
- open_fn = function()
- return require('packer.util').float({ border = 'rounded' })
- end,
- },
-})
-
---------------------------------------------------
-
--- Install plugins here
-return packer.startup(function(use)
- -- Defaults
- use('wbthomason/packer.nvim') -- Have packer manage itself (package manager)
- use('nvim-lua/plenary.nvim') -- Useful lua functions used by lots of plugins
- use('lewis6991/impatient.nvim') -- Faster loading/startup times
-
- -- Tree-sitter
- use({ 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' }) -- For language parsing, examples: highlighting, folding, jumping, refactoring...
- use('nvim-treesitter/nvim-treesitter-refactor') -- Refactor module for nvim-treesitter
-
- -- lsp
- use('williamboman/mason.nvim') -- Package manager to install and manage LSP servers, DAP servers, linters and formatters
- use('neovim/nvim-lspconfig') -- Collection of LSP configs
- use('williamboman/mason-lspconfig.nvim') -- Bridges mason.nvim with nvim-lspconfig to help use them together
- use({
- 'https://git.sr.ht/~whynothugo/lsp_lines.nvim',
- config = function()
- require('lsp_lines').setup()
- end,
- })
- use('rmagatti/goto-preview')
-
- -- Debugger
- use('mfussenegger/nvim-dap') -- Debug Adapter Protocol client implementation for Neovim
- use('rcarriga/nvim-dap-ui') -- UI for nvim-dap
- --use { "rcarriga/nvim-dap-ui", requires = {"mfussenegger/nvim-dap"} }
- use('theHamsta/nvim-dap-virtual-text')
- use('gabrielpoca/replacer.nvim')
- use('jayp0521/mason-nvim-dap.nvim')
- --use({
- -- "jayp0521/mason-nvim-dap.nvim",
- -- config = function()
- -- require("mason-nvim-dap").setup({
- -- automatic_installation = true,
- -- ensure_installed = { "python", "cppdbg", "codelldb" },
- -- })
- -- end,
- --})
-
- -- Linters/Formatters
- use('mhartington/formatter.nvim')
- use('jay-babu/mason-null-ls.nvim')
- --use({"jayp0521/mason-null-ls.nvim",
- -- config = function()
- -- require('mason-null-ls.nvim').setup({
- -- automatic_setup = true,
- -- })
- -- end
- --})
- use({
- 'jose-elias-alvarez/null-ls.nvim', -- Provides LSP: linters, formatters, diagnostics, code actions and etc...
- requires = { 'jay-babu/mason-null-ls.nvim' },
- })
-
- -- Completion
- use('hrsh7th/nvim-cmp') -- Completion engine plugin
- use('hrsh7th/cmp-nvim-lsp') -- Completion source for nvim-lsp
- use('hrsh7th/cmp-buffer') -- Completion source for content of current buffer
- use('hrsh7th/cmp-path') -- Completion source for paths
- use('hrsh7th/cmp-cmdline') -- Completion source for command-line
- use('petertriho/cmp-git') -- Completion source for git
- use('tamago324/cmp-zsh') -- Completion source for zsh
- use('f3fora/cmp-spell') -- Completion source for spell-checking
- use('hrsh7th/cmp-calc') -- Completion source for math calculation
- use('saadparwaiz1/cmp_luasnip') -- Completion source for snippets, specifically for luasnip
- use('hrsh7th/cmp-nvim-lsp-signature-help') -- Completion source for displaying function signatures with the current parameter emphasized
- use('rcarriga/cmp-dap')
-
- -- Snippets
- use('L3MON4D3/LuaSnip') -- Snippet engine
- use('rafamadriz/friendly-snippets') -- Collection of snippets to use
-
- -- Git
- use('tpope/vim-fugitive') --
- --use("dinhhuy258/git.nvim") -- For git blame & browse
- use('kdheepak/lazygit.nvim') -- Terminal UI for git commands
- use('lewis6991/gitsigns.nvim') -- Git decorations
-
- -- File explorer/fuzzy finder
- use('kyazdani42/nvim-tree.lua') -- File explorer
- use('ibhagwan/fzf-lua') -- Fuzzy finder
- use('ThePrimeagen/harpoon')
- --use("nvim-telescope/telescope.nvim") -- Fuzzy finder with lots of features/extendabilities
- use({
- 'nvim-telescope/telescope.nvim',
- branch = '0.1.x',
- --config = function()
- -- require('plugins.telescope').setup()
- --end,
- requires = {
- 'nvim-lua/plenary.nvim',
- 'nvim-telescope/telescope-live-grep-args.nvim',
- 'nvim-telescope/telescope-file-browser.nvim',
- { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make' },
- },
- })
- use({ 'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }) -- Support fzf syntax/algorithm
- use('nvim-telescope/telescope-ui-select.nvim') --
- use('nvim-telescope/telescope-project.nvim') --
- use('nvim-telescope/telescope-media-files.nvim') --
- use('nvim-telescope/telescope-file-browser.nvim') --
- use({ 'nvim-telescope/telescope-symbols.nvim', after = 'telescope.nvim' }) -- Search emoji(s) and other symbols
- use('nvim-telescope/telescope-dap.nvim')
- use('axkirillov/telescope-changed-files') --
- use('smartpde/telescope-recent-files')
- use('rmagatti/auto-session')
- use('rmagatti/session-lens')
-
- -- UX
- use('folke/neodev.nvim')
- use({
- 'numToStr/Navigator.nvim', -- Navigate between Tmux and Nvim
- config = function()
- require('Navigator').setup()
- end,
- })
- use({ 'tpope/vim-eunuch', cmd = { 'Rename', 'Delete', 'Mkdir' } }) -- Handy unix commands inside Vim (Rename, Move etc.)
- --use("tpope/vim-surround") --
- --use("tpope/vim-obsession") --
- use('tpope/vim-unimpaired') --
- --use("vimpostor/vim-tpipeline") --
- --use("nathom/filetype.nvim") --
- use('mbbill/undotree')
- use({
- 'myusuf3/numbers.vim', --
- vim.cmd("let g:numbers_exclude = ['dashboard']"),
- })
- use('windwp/nvim-autopairs') --
- use('numToStr/Comment.nvim') --
- use('akinsho/toggleterm.nvim') --
- use('tweekmonster/startuptime.vim') --
- use('qpkorr/vim-bufkill')
- use({
- 'ggandor/leap.nvim', --
- config = function()
- require('leap').add_default_mappings()
- --require("leap").set_default_keymaps()
- --vim.keymap.set('n', '-', '<Plug>(leap-forward)', {})
- --vim.keymap.set('n', '_', '<Plug>(leap-backward)', {})
- end,
- })
- use({
- 'ggandor/flit.nvim', --
- config = function()
- require('flit').setup()
- end,
- })
- use('folke/which-key.nvim') --
- use('folke/zen-mode.nvim') --
- use('romainl/vim-cool') --
- use('antoinemadec/FixCursorHold.nvim') --
- use({
- 'folke/trouble.nvim',
- requires = 'nvim-tree/nvim-web-devicons',
- })
- use({
- 'airblade/vim-rooter', --
- --vim.cmd("let g:rooter_change_directory_for_non_project_files = ''"),
- --vim.cmd("let g:rooter_change_directory_for_non_project_files = 'current'")
- })
- use({ 'michaelb/sniprun', run = 'bash ./install.sh' })
- use({ 'stevearc/overseer.nvim' })
- --use("vim-test/vim-test") --
- --use({
- -- "rcarriga/vim-ultest", --
- -- requires = { "vim-test/vim-test" },
- -- run = ":UpdateRemotePlugins",
- -- config = function()
- -- require("plugins.ultest")
- -- end,
- --})
- --use({"rcarriga/neotest",
- -- config = function()
- -- require("neotest").setup()
- --end,
- --})
- use({
- 'nvim-neotest/neotest',
- requires = {
- {
- 'nvim-neotest/neotest-python',
- 'nvim-neotest/neotest-plenary',
- 'nvim-neotest/neotest-vim-test',
- },
- },
- })
- use('kawre/leetcode.nvim')
- use('m4xshen/hardtime.nvim')
- use({
- 'luckasRanarison/nvim-devdocs',
- config = function()
- require('nvim-devdocs').setup()
- end,
- })
-
- -- Colorschemes
- use('bluz71/vim-nightfly-guicolors')
- use('ayu-theme/ayu-vim')
- use('joshdick/onedark.vim')
- use('NTBBloodbath/doom-one.nvim')
- use('nyngwang/nvimgelion')
- use('projekt0n/github-nvim-theme')
- use('folke/tokyonight.nvim')
- use('ribru17/bamboo.nvim')
-
- -- UI
- use('kyazdani42/nvim-web-devicons') --
- use('onsails/lspkind-nvim') --
- use({ 'kevinhwang91/nvim-ufo', requires = 'kevinhwang91/promise-async' }) -- Fold code
- use({
- 'luukvbaal/statuscol.nvim',
- config = function()
- local builtin = require('statuscol.builtin')
- require('statuscol').setup({
- relculright = true,
- segments = {
- { text = { builtin.foldfunc }, click = 'v:lua.ScFa' },
- { text = { '%s' }, click = 'v:lua.ScSa' },
- { text = { builtin.lnumfunc, ' ' }, click = 'v:lua.ScLa' },
- },
- })
- end,
- })
- use({
- 'glepnir/dashboard-nvim',
- --event = 'VimEnter',
- requires = { 'nvim-tree/nvim-web-devicons' },
- })
- use('rcarriga/nvim-notify') -- Notification plugin
- use('karb94/neoscroll.nvim') -- Faster/smooth scrolling
- --use("MunifTanjim/prettier.nvim") -- Prettier plugin for Neovim's built-in LSP client
- use({
- 'norcalli/nvim-colorizer.lua', -- colorize hexa and rgb strings
- cmd = { 'ColorizerToggle', 'ColorizerAttachToBuffer' },
- config = function()
- require('colorizer').setup({
- --'*';
- user_default_options = {
- RGB = true,
- RRGGBB = true,
- names = false,
- RRGGBBAA = false,
- css = false,
- css_fn = true,
- mode = 'foreground',
- },
- })
- end,
- })
- use('MunifTanjim/nui.nvim')
- use({
- 'j-hui/fidget.nvim',
- tag = 'legacy',
- }) -- UI to show nvim-lsp progress
- use('metakirby5/codi.vim')
- use({
- 'simrat39/symbols-outline.nvim', --
- config = function()
- require('symbols-outline').setup({
- auto_close = true,
- })
- end,
- })
- use({
- 'kosayoda/nvim-lightbulb', --
- requires = 'antoinemadec/FixCursorHold.nvim',
- })
- use({
- 'SmiteshP/nvim-navic', -- Statusline/Winbar component that uses LSP to show current code context
- requires = 'neovim/nvim-lspconfig',
- })
- use({
- 'rebelot/heirline.nvim', -- Statusline that is highly configurable
- --requires = 'kyazdani42/nvim-web-devicons',
- --event = 'VimEnter',
- })
-
- -- Language specific tools
- use('simrat39/rust-tools.nvim') -- Rust tooling ecosystem
- use({
- 'saecki/crates.nvim', --
- requires = { 'nvim-lua/plenary.nvim' },
- config = function()
- require('crates').setup()
- end,
- })
- use({
- 'akinsho/flutter-tools.nvim',
- requires = {
- 'nvim-lua/plenary.nvim',
- 'stevearc/dressing.nvim', -- optional for vim.ui.select
- },
- config = function()
- require('flutter-tools').setup({
- debugger = {
- enabled = true,
- run_via_dap = true,
- },
- })
- end,
- })
- use({
- 'iamcco/markdown-preview.nvim', -- Markdown Preview
- run = function()
- vim.fn['mkdp#util#install']()
- end,
- vim.cmd('let g:mkdp_auto_close = 0'),
- })
- use({
- 'ellisonleao/glow.nvim', -- Markdown Preview
- config = function()
- require('glow').setup({
- style = 'dark',
- })
- end,
- })
-
- --------------------------------------------------
-
- -- Automatically set up your configuration after cloning packer.nvim
- -- Put this at the end after all plugins
- if PACKER_BOOTSTRAP then
- require('packer').sync()
- end
-end)
diff --git a/.config/nvim/lua/user/view.lua b/.config/nvim/lua/user/view.lua
deleted file mode 100644
index 837fce4..0000000
--- a/.config/nvim/lua/user/view.lua
+++ /dev/null
@@ -1,69 +0,0 @@
--- Colorscheme
-
--- Colors
-vim.opt.termguicolors = true
-
--- Available colorschemes:
--- [[ nightfly ayu onedark doom-one nvimgelion github_dark tokyonight bamboo ]]
-
-require('tokyonight').setup({
- style = 'night',
- transparent = true,
- transparent_sidebar = true,
- dim_inactive = false,
- styles = {
- sidebars = 'transparent',
- floats = 'transparent',
- },
-})
-
--- Define default color scheme
-local default_colorscheme = 'tokyonight-night'
-local fallback_colorscheme = 'desert'
-
--- Attempt to set the default color scheme
-local status_ok, _ = pcall(vim.cmd, 'colorscheme ' .. default_colorscheme)
-
--- If the default color scheme is not found, use the fallback color scheme
-if not status_ok then
- vim.cmd('colorscheme ' .. fallback_colorscheme)
-end
-
-vim.api.nvim_command('syntax on')
-vim.api.nvim_command('highlight Normal guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight NormalNC guibg=NONE')
-vim.api.nvim_command('highlight NormalFloat guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight Float guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight NonText guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight SignColumn guibg=NONE')
-vim.api.nvim_command('highlight FoldColumn guibg=NONE')
-vim.api.nvim_command('highlight CursorLineSign guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight Title guibg=NONE gui=bold')
-vim.api.nvim_command('highlight TabLine guibg=#333842 gui=bold')
-vim.api.nvim_command('highlight TabLineSel guibg=#333842 gui=bold')
-vim.api.nvim_command('highlight TabLineFill guibg=NONE gui=bold')
-vim.api.nvim_command('highlight WinBar guibg=NONE ctermbg=NONE gui=bold')
-vim.api.nvim_command('highlight WinBarNC guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight LineNr guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight WinSeparator guibg=NONE gui=bold ctermbg=NONE')
-vim.api.nvim_command('highlight MsgSeparator guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight EndOfBuffer guibg=NONE guifg=Normal')
-vim.api.nvim_command('highlight Comment guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight Winblend guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight NormalFloat guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight Pumblend guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight WildMenu guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight WarningMsg guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight Pmenu guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight PmenuSel guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight PmenuThumb guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight PmenuSbar guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight PmenuExtra guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight PmenuExtraSel guibg=NONE ctermbg=NONE')
-vim.api.nvim_command('highlight MoreMsg guibg=NONE ctermbg=NONE')
-
--- Set different window separator colorscheme
-vim.cmd([[
-au WinEnter * setl winhl=WinSeparator:WinSeparatorA
-au WinLeave * setl winhl=WinSeparator:WinSeparator
-]])
diff --git a/.config/nvim/snippets/boilerplate.lua b/.config/nvim/snippets/boilerplate.lua
deleted file mode 100644
index 04e973a..0000000
--- a/.config/nvim/snippets/boilerplate.lua
+++ /dev/null
@@ -1,75 +0,0 @@
-local ls = require("luasnip") --{{{
-local s = ls.s
-local i = ls.i
-local t = ls.t
-
-local d = ls.dynamic_node
-local c = ls.choice_node
-local f = ls.function_node
-local sn = ls.snippet_node
-
-local fmt = require("luasnip.extras.fmt").fmt
-local rep = require("luasnip.extras").rep
-
-local snippets, autosnippets = {}, {} --}}}
-
-local group = vim.api.nvim_create_augroup("Lua Snippets", { clear = true })
-local file_pattern = "*.lua"
-
-local function cs(trigger, nodes, opts) --{{{
- local snippet = s(trigger, nodes)
- local target_table = snippets
-
- local pattern = file_pattern
- local keymaps = {}
-
- if opts ~= nil then
- -- check for custom pattern
- if opts.pattern then
- pattern = opts.pattern
- end
-
- -- if opts is a string
- if type(opts) == "string" then
- if opts == "auto" then
- target_table = autosnippets
- else
- table.insert(keymaps, { "i", opts })
- end
- end
-
- -- if opts is a table
- if opts ~= nil and type(opts) == "table" then
- for _, keymap in ipairs(opts) do
- if type(keymap) == "string" then
- table.insert(keymaps, { "i", keymap })
- else
- table.insert(keymaps, keymap)
- end
- end
- end
-
- -- set autocmd for each keymap
- if opts ~= "auto" then
- for _, keymap in ipairs(keymaps) do
- vim.api.nvim_create_autocmd("BufEnter", {
- pattern = pattern,
- group = group,
- callback = function()
- vim.keymap.set(keymap[1], keymap[2], function()
- ls.snip_expand(snippet)
- end, { noremap = true, silent = true, buffer = true })
- end,
- })
- end
- end
- end
-
- table.insert(target_table, snippet) -- insert snippet into appropriate table
-end --}}}
-
--- Start Refactoring --
-
--- End Refactoring --
-
-return snippets, autosnippets
diff --git a/.config/nvim/snippets/lua.lua b/.config/nvim/snippets/lua.lua
deleted file mode 100644
index eb46b67..0000000
--- a/.config/nvim/snippets/lua.lua
+++ /dev/null
@@ -1,264 +0,0 @@
-
-local ls = require("luasnip") --{{{
-local s = ls.s --> snippet
-local i = ls.i --> insert node
-local t = ls.t --> text node
-
-local d = ls.dynamic_node
-local c = ls.choice_node --> takes in a pos as first arg and a table of nodes
-local f = ls.function_node
-local sn = ls.snippet_node
-
-local fmt = require("luasnip.extras.fmt").fmt
-local rep = require("luasnip.extras").rep
-
-local snippets, autosnippets = {}, {} --}}}
-
-local group = vim.api.nvim_create_augroup("Lua Snippets", { clear = true })
-local file_pattern = "*.lua"
-
-local function cs(trigger, nodes, opts) --{{{
- local snippet = s(trigger, nodes)
- local target_table = snippets
-
- local pattern = file_pattern
- local keymaps = {}
-
- if opts ~= nil then
- -- check for custom pattern
- if opts.pattern then
- pattern = opts.pattern
- end
-
- -- if opts is a string
- if type(opts) == "string" then
- if opts == "auto" then
- target_table = autosnippets
- else
- table.insert(keymaps, { "i", opts })
- end
- end
-
- -- if opts is a table
- if opts ~= nil and type(opts) == "table" then
- for _, keymap in ipairs(opts) do
- if type(keymap) == "string" then
- table.insert(keymaps, { "i", keymap })
- else
- table.insert(keymaps, keymap)
- end
- end
- end
-
- -- set autocmd for each keymap
- if opts ~= "auto" then
- for _, keymap in ipairs(keymaps) do
- vim.api.nvim_create_autocmd("BufEnter", {
- pattern = pattern,
- group = group,
- callback = function()
- vim.keymap.set(keymap[1], keymap[2], function()
- ls.snip_expand(snippet)
- end, { noremap = true, silent = true, buffer = true })
- end,
- })
- end
- end
- end
-
- table.insert(target_table, snippet) -- insert snippet into appropriate table
-end --}}}
-
--- Start Refactoring --
-
-cs("CMD", { -- [CMD] multiline vim.cmd{{{
- t({ "vim.cmd[[", " " }),
- i(1, ""),
- t({ "", "]]" }),
-}) --}}}
-cs("cmd", fmt("vim.cmd[[{}]]", { i(1, "") })) -- single line vim.cmd
-cs({ -- github import for packer{{{
- trig = "https://github%.com/([%w-%._]+)/([%w-%._]+)!",
- regTrig = true,
- hidden = true,
-}, {
- t([[use "]]),
- f(function(_, snip)
- return snip.captures[1]
- end),
- t("/"),
- f(function(_, snip)
- return snip.captures[2]
- end),
- t({ [["]], "" }),
- i(1, ""),
-}, "auto") --}}}
-
-cs( -- {regexSnippet} LuaSnippet{{{
- "regexSnippet",
- fmt(
- [=[
-cs( -- {}
-{{ trig = "{}", regTrig = true, hidden = true }}, fmt([[
-{}
-]], {{
- {}
-}}))
- ]=],
- {
- i(1, "Description"),
- i(2, ""),
- i(3, ""),
- i(4, ""),
- }
- ),
- { pattern = "*/snippets/*.lua", "<C-d>" }
-) --}}}
-cs( -- [luaSnippet] LuaSnippet{{{
- "luaSnippet",
- fmt(
- [=[
-cs("{}", fmt( -- {}
-[[
-{}
-]], {{
- {}
- }}){})
- ]=],
- {
- i(1, ""),
- i(2, "Description"),
- i(3, ""),
- i(4, ""),
- c(5, {
- t(""),
- fmt([[, "{}"]], { i(1, "keymap") }),
- fmt([[, {{ pattern = "{}", {} }}]], { i(1, "*/snippets/*.lua"), i(2, "keymap") }),
- }),
- }
- ),
- { pattern = "*/snippets/*.lua", "jcs" }
-) --}}}
-
-cs( -- choice_node_snippet luaSnip choice node{{{
- "choice_node_snippet",
- fmt(
- [[
-c({}, {{ {} }}),
-]],
- {
- i(1, ""),
- i(2, ""),
- }
- ),
- { pattern = "*/snippets/*.lua", "jcn" }
-) --}}}
-
-cs( -- [function] Lua function snippet{{{
- "function",
- fmt(
- [[
-function {}({})
- {}
-end
-]],
- {
- i(1, ""),
- i(2, ""),
- i(3, ""),
- }
- ),
- "jff"
-) --}}}
-cs( -- [local_function] Lua function snippet{{{
- "local_function",
- fmt(
- [[
-local function {}({})
- {}
-end
-]],
- {
- i(1, ""),
- i(2, ""),
- i(3, ""),
- }
- ),
- "jlf"
-) --}}}
-cs( -- [local] Lua local variable snippet{{{
- "local",
- fmt(
- [[
-local {} = {}
- ]],
- { i(1, ""), i(2, "") }
- ),
- "jj"
-) --}}}
--- Tutorial Snippets go here --
-local myFirstSnippet = s("myFirstSnippet", {
- t("Hi! This is my first snippet in Luasnip "),
- i(1, "placeholder"),
- t({"", "this is another text node", ""}),
- i(2, "put here"),
-})
-table.insert(snippets, myFirstSnippet)
-
-
-
-local mySecondSnippet = s(
- "mySecondSnippet",
- fmt(
- [[
- local {} = function({})
- {} {{ im in a curly braces }}
- end {}
- ]],
- {
- i(1, "myVar"),
- c(2, { t(""), i(1, "myArg") }),
- i(3, "-- TODO: something"),
- i(4, "-- nice")
- }
- )
-)
-table.insert(snippets, mySecondSnippet)
-
-local myFirstAutoSnippet = s("automatic", { t("This was auto triggered") })
-table.insert(autosnippets, myFirstAutoSnippet)
-
-local mySecondAutoSnippet = s({ trig = "digit(%d)(%d)", regTrig = true }, {
- f(function(_, snip)
- return snip.captures[1] .. " + "
- end),
- f(function(_, snip)
- return snip.captures[2]
- end),
-})
-table.insert(autosnippets, mySecondAutoSnippet)
-
-
-
-
-
-
-
-
--- End Refactoring --
-
-return snippets, autosnippets
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.config/nvim/snippets/markdown.lua b/.config/nvim/snippets/markdown.lua
deleted file mode 100644
index d0d1487..0000000
--- a/.config/nvim/snippets/markdown.lua
+++ /dev/null
@@ -1,58 +0,0 @@
-local ls = require("luasnip")
-local s = ls.s
-local i = ls.i
-local t = ls.t
-
-local d = ls.dynamic_node
-local c = ls.choice_node
-local f = ls.function_node
-local sn = ls.snippet_node
-
-local fmt = require("luasnip.extras.fmt").fmt
-local rep = require("luasnip.extras").rep
-
--- --
-
-local snippets = {}
-local autosnippets = {}
-
-local autocmd = vim.api.nvim_create_autocmd
-local augroup = vim.api.nvim_create_augroup
-local map = vim.keymap.set
-local opts = { noremap = true, silent = true, buffer = true }
-local group = augroup("Markdown Snippets", { clear = true })
-
-local function cs(trigger, nodes, keymap) --> cs stands for create snippet
- local snippet = s(trigger, nodes)
- table.insert(snippets, snippet)
-
- if keymap ~= nil then
- local pattern = "*.md"
- if type(keymap) == "table" then
- pattern = keymap[1]
- keymap = keymap[2]
- end
- autocmd("BufEnter", {
- pattern = pattern,
- group = group,
- callback = function()
- map({ "i" }, keymap, function()
- ls.snip_expand(snippet)
- end, opts)
- end,
- })
- end
-end
-
-local function lp(package_name) -- Load Package Function
- package.loaded[package_name] = nil
- return require(package_name)
-end
-
--- Utility Functions --
-
--- Start Refactoring --
-
--- Start Refactoring --
-
-return snippets, autosnippets
diff --git a/.config/alacritty/alacritty.yml b/common/config/alacritty/alacritty.yml
index 21e70c7..21e70c7 100644
--- a/.config/alacritty/alacritty.yml
+++ b/common/config/alacritty/alacritty.yml
diff --git a/.bashrc b/linux/home/.bashrc
index 9b7dc26..9b7dc26 100644
--- a/.bashrc
+++ b/linux/home/.bashrc
diff --git a/.zprofile b/linux/home/.zprofile
index 322d2ce..322d2ce 100644
--- a/.zprofile
+++ b/linux/home/.zprofile