BIG CHANGES! Moving from Packer to Lazy package manager. 25% complete!

This commit is contained in:
Norm Rasmussen
2023-02-10 15:15:13 -05:00
parent 65504a2f47
commit 8632f79d4a
25 changed files with 570 additions and 2190 deletions

View File

@ -1,63 +0,0 @@
-----------------------------------------------------------
-- Color schemes configuration file
-----------------------------------------------------------
-- Import color scheme with:
--- require('colors').colorscheme_name
local M = {}
M.dracula_nvim = {
bg = '#282A36',
fg = '#F8F8F2',
selection = '#44475A',
comment = '#6272A4',
red = '#FF5555',
orange = '#FFB86C',
yellow = '#F1FA8C',
green = '#50fa7b',
purple = '#BD93F9',
cyan = '#8BE9FD',
pink = '#FF79C6',
bright_red = '#FF6E6E',
bright_green = '#69FF94',
bright_yellow = '#FFFFA5',
bright_blue = '#D6ACFF',
bright_magenta = '#FF92DF',
bright_cyan = '#A4FFFF',
bright_white = '#FFFFFF',
menu = '#21222C',
visual = '#3E4452',
gutter_fg = '#4B5263',
nontext = '#3B4048',
}
-- Theme: Monokai
M.monokai = {
bg = '#202328', --default: #272a30
fg = '#f8f8f0',
pink = '#f92672',
green = '#a6e22e',
cyan = '#66d9ef',
yellow = '#e6db74',
orange = '#fd971f',
purple = '#ae81ff',
red = '#e95678',
}
-- Theme: Rosé Pine (main)
--- See: https://github.com/rose-pine/neovim/blob/main/lua/rose-pine/palette.lua
--- color names are adapted to the format above
M.rose_pine = {
bg = '#111019', --default: #191724
fg = '#e0def4',
gray = '#908caa',
pink = '#eb6f92',
green = '#9ccfd8',
cyan = '#31748f',
yellow = '#f6c177',
orange = '#2a2837',
purple = '#c4a7e7',
red = '#ebbcba',
}
return M

View File

@ -1,53 +0,0 @@
-----------------------------------------------------------
-- Dashboard configuration file
-----------------------------------------------------------
-- Plugin: alpha-nvim
-- url: https://github.com/goolord/alpha-nvim
-- For configuration examples see: https://github.com/goolord/alpha-nvim/discussions/16
local alpha = require 'alpha'
local dashboard = require 'alpha.themes.dashboard'
-- Footer
local function footer()
local version = vim.version()
local print_version = "v" .. version.major .. '.' .. version.minor .. '.' .. version.patch
local datetime = os.date('%Y/%m/%d %H:%M:%S')
return print_version .. ' ' .. datetime
end
-- Banner
local banner = {
" ",
" █████ █████ ██████ █████ ███ ",
"░░███ ░░███ ░░██████ ░░███ ░███ ",
" ░███ ░███ ██████ █████ ████ ░███░███ ░███ ██████ ████████ █████████████ ░███ ",
" ░███████████ ███░░███░░███ ░███ ░███░░███░███ ███░░███░░███░░███░░███░░███░░███░███ ",
" ░███░░░░░███ ░███████ ░███ ░███ ░███ ░░██████ ░███ ░███ ░███ ░░░ ░███ ░███ ░███░███ ",
" ░███ ░███ ░███░░░ ░███ ░███ ░███ ░░█████ ░███ ░███ ░███ ░███ ░███ ░███░░░ ",
" █████ █████░░██████ ░░███████ █████ ░░█████░░██████ █████ █████░███ ████████ ",
"░░░░░ ░░░░░ ░░░░░░ ░░░░░███ ░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░ ░░░ ░░░░░░░░ ",
" ███ ░███ ",
" ░░██████ ",
" ░░░░░░ ",
}
dashboard.section.header.val = banner
-- Menu
dashboard.section.buttons.val = {
dashboard.button('e', ' New file', ':ene <BAR> startinsert<CR>'),
dashboard.button('f', ' Find file', ':Telescope file_browser<CR>'),
dashboard.button('s', '⋅ Find Word', ':Telescope live_grep<CR>'),
dashboard.button('u', ' Update plugins', ':PackerUpdate<CR>'),
dashboard.button('q', ' Quit', ':qa<CR>'),
}
dashboard.section.footer.val = footer()
alpha.setup(dashboard.config)

55
lua/plugins/alpha.lua Normal file
View File

@ -0,0 +1,55 @@
-----------------------------------------------------------
-- Dashboard configuration file
-----------------------------------------------------------
-- Plugin: alpha-nvim
-- url: https://github.com/goolord/alpha-nvim
-- For configuration examples see: https://github.com/goolord/alpha-nvim/discussions/16
return {
"goolord/alpha-nvim",
dependencies = {
"kyazdani42/nvim-web-devicons",
},
config = function ()
local alpha = require 'alpha'
local dashboard = require 'alpha.themes.dashboard'
-- Banner
dashboard.section.header.val = {
[[ ]],
[[ █████ █████ ██████ █████ ███ ]],
[[ ░░███ ░░███ ░░██████ ░░███ ░███ ]],
[[ ░███ ░███ ██████ █████ ████ ░███░███ ░███ ██████ ████████ █████████████ ░███ ]],
[[ ░███████████ ███░░███░░███ ░███ ░███░░███░███ ███░░███░░███░░███░░███░░███░░██ ]],
[[ ░███░░░░░███ ░███████ ░███ ░███ ░███ ░░██████ ░███ ░███ ░███ ░░░ ░███ ░███ ░███░███ ]],
[[ ░███ ░███ ░███░░░ ░███ ░███ ░███ ░░█████ ░███ ░███ ░███ ░███ ░███ ░███░░░ ]],
[[ █████ █████░░██████ ░░███████ █████ ░░█████░░██████ █████ █████░███ ████████ ]],
[[ ░░░░░ ░░░░░ ░░░░░░ ░░░░░███ ░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░ ░░░ ░░░░░░░░ ]],
[[ ███ ░███ ]],
[[ ░░██████ ]],
[[ ░░░░░░ ]],
}
-- Menu
dashboard.section.buttons.val = {
dashboard.button('e', ' New file', ':ene <BAR> startinsert<CR>'),
dashboard.button('f', ' Find file', ':Telescope file_browser<CR>'),
dashboard.button('s', '⋅ Find Word', ':Telescope live_grep<CR>'),
dashboard.button('u', ' Update plugins', ':PackerUpdate<CR>'),
dashboard.button('q', ' Quit', ':qa<CR>'),
}
local handle = io.popen('fortune')
-- Footer
local function footer()
local version = vim.version()
local print_version = "v" .. version.major .. '.' .. version.minor .. '.' .. version.patch
local datetime = os.date('%Y/%m/%d %H:%M:%S')
return print_version .. ' ' .. datetime
end
dashboard.section.footer.val = footer()
alpha.setup(dashboard.config)
end
}

View File

@ -1,257 +0,0 @@
----------------------------------------------------------
-- Statusline configuration file
-----------------------------------------------------------
-- Plugin: feline.nvim
-- url: https://github.com/famiu/feline.nvim
--- For the configuration see the Usage section:
--- https://github.com/famiu/feline.nvim/blob/master/USAGE.md
--- Thanks to ibhagwan for the example to follow:
--- https://github.com/ibhagwan/nvim-lua
local colors = require('colors').dracula_nvim
local vi_mode_colors = {
NORMAL = colors.cyan,
INSERT = colors.green,
VISUAL = colors.yellow,
OP = colors.cyan,
BLOCK = colors.cyan,
REPLACE = colors.red,
['V-REPLACE'] = colors.red,
ENTER = colors.orange,
MORE = colors.orange,
SELECT = colors.yellow,
COMMAND = colors.pink,
SHELL = colors.pink,
TERM = colors.pink,
NONE = colors.purple
}
-- Providers (LSP, vi_mode)
local lsp = require 'feline.providers.lsp'
local vi_mode_utils = require 'feline.providers.vi_mode'
-- LSP diagnostic
local lsp_get_diag = function(str)
local count = vim.lsp,diagnostic.get_count(0, str)
return (count > 0) and ' '..count..' ' or ''
end
-- My components
local comps = {
-- vi_mode -> NORMAL, INSERT..
vi_mode = {
left = {
provider = function()
local label = ' '..vi_mode_utils.get_vim_mode()..' '
return label
end,
hl = function()
local set_color = {
name = vi_mode_utils.get_mode_highlight_name(),
fg = colors.bg,
bg = vi_mode_utils.get_mode_color(),
style = 'bold',
}
return set_color
end,
left_sep = ' ',
right_sep = ' ',
}
},
-- Parse file information:
file = {
-- File name
info = {
provider = {
name = 'file_info',
opts = {
type = 'relative',
file_modified_icon = '',
}
},
hl = { fg = colors.cyan },
icon = '',
},
-- File type
type = {
provider = function()
local type = vim.bo.filetype:lower()
local extension = vim.fn.expand '%:e'
local icon = require('nvim-web-devicons').get_icon(extension)
if icon == nil then
icon = ''
end
return ' ' .. icon .. ' ' .. type
end,
hl = { fg = colors.fg },
left_sep = ' ',
righ_sep = ' ',
},
-- Operating system
os = {
provider = function()
local os = vim.bo.fileformat:lower()
local icon
if os == 'unix' then
icon = ''
elseif os == 'mac' then
icon = ''
else
icon = ''
end
return icon .. os
end,
hl = { fg = colors.fg },
--left_sep = ' ',
right_sep = ' ',
},
-- Line-column
position = {
provider = { name = 'position' },
hl = {
fg = colors.fg,
style = 'bold',
},
left_sep = ' ',
right_sep = ' ',
},
-- Cursor position in %
line_percentage = {
provider = { name = 'line_percentage' },
hl = {
fg = colors.cyan,
style = 'bold',
},
left_sep = ' ',
right_sep = ' ',
},
-- Simple scrollbar
scroll_bar = {
provider = { name = 'scroll_bar' },
hl = { fg = colors.fg },
left_sep = ' ',
right_sep = ' ',
},
},
-- LSP info
diagnos = {
err = {
provider = 'diagnostic_errors',
icon = '',
hl = { fg = colors.red },
left_sep = ' ',
},
warn = {
provider = 'diagnostic_warnings',
icon = '',
hl = { fg = colors.yellow },
left_sep = ' ',
},
info = {
provider = 'diagnostic_info',
icon = '',
hl = { fg = colors.green },
left_sep = ' ',
},
hint = {
provider = 'diagnostic_hints',
icon = '',
hl = { fg = colors.cyan },
left_sep = ' ',
},
},
lsp = {
name = {
provider = 'lsp_client_names',
icon = '',
hl = { fg = colors.pink },
left_sep = ' ',
right_sep = ' ',
}
},
-- git info
git = {
branch = {
provider = 'git_branch',
icon = '',
hl = { fg = colors.pink },
left_sep = ' ',
},
add = {
provider = 'git_diff_added',
icon = '',
hl = { fg = colors.green },
left_sep = ' ',
},
change = {
provider = 'git_diff_changed',
icon = '',
hl = { fg = colors.orange },
left_sep = ' ',
},
remove = {
provider = 'git_diff_removed',
icon = '',
hl = { fg = colors.red },
left_sep = ' ',
}
}
}
-- Get active/inactive components
--- see: https://github.com/famiu/feline.nvim/blob/master/USAGE.md#components
local components = {
active = {},
inactive = {},
}
table.insert(components.active, {})
table.insert(components.active, {})
table.insert(components.inactive, {})
table.insert(components.inactive, {})
-- Right section
table.insert(components.active[1], comps.vi_mode.left)
table.insert(components.active[1], comps.file.info)
table.insert(components.active[1], comps.git.branch)
table.insert(components.active[1], comps.git.add)
table.insert(components.active[1], comps.git.change)
table.insert(components.active[1], comps.git.remove)
table.insert(components.inactive[1], comps.file.info)
-- Left Section
table.insert(components.active[2], comps.diagnos.err)
table.insert(components.active[2], comps.diagnos.warn)
table.insert(components.active[2], comps.diagnos.hint)
table.insert(components.active[2], comps.diagnos.info)
table.insert(components.active[2], comps.lsp.name)
table.insert(components.active[2], comps.file.type)
table.insert(components.active[2], comps.file.os)
table.insert(components.active[2], comps.file.position)
table.insert(components.active[2], comps.file.line_percentage)
-- Call feline
require('feline').setup {
theme = {
bg = colors.bg,
fg = colors.fg,
},
components = components,
vi_mode_colors = vi_mode_colors,
force_inactive = {
filetypes = {
'^NvimTree$',
'^packer$',
'^vista$',
'^help$',
},
buftypes = {
'^terminal$'
},
bufnames = {},
},
}

View File

@ -1,42 +1,48 @@
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 = 'GitSignsChange', text = '~', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'},
},
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
interval = 1000,
follow_files = true
},
attach_to_untracked = true,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
ignore_whitespace = false,
},
current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
sign_priority = 1,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000,
preview_config = {
-- Options passed to nvim_open_win
border = 'double',
style = 'normal',
relative = 'cursor',
row = 0,
col = 2
},
yadm = {
enable = false
},
return -- Signs for Git Status Information
{
'lewis6991/gitsigns.nvim',
config = function()
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 = 'GitSignsChange', text = '~', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'},
},
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
watch_gitdir = {
interval = 1000,
follow_files = true
},
attach_to_untracked = true,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
ignore_whitespace = false,
},
current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
sign_priority = 1,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000,
preview_config = {
-- Options passed to nvim_open_win
border = 'double',
style = 'normal',
relative = 'cursor',
row = 0,
col = 2
},
yadm = {
enable = false
},
}
end
}

View File

@ -1,124 +0,0 @@
require("headlines").setup {
markdown = {
query = vim.treesitter.parse_query(
"markdown",
[[
(atx_heading [
(atx_h1_marker)
(atx_h2_marker)
(atx_h3_marker)
(atx_h4_marker)
(atx_h5_marker)
(atx_h6_marker)
] @headline)
(thematic_break) @dash
(fenced_code_block) @codeblock
(block_quote_marker) @quote
(block_quote (paragraph (inline (block_continuation) @quote)))
]]
),
headline_highlights = { "Headline" },
codeblock_highlight = "CodeBlock",
dash_highlight = "Dash",
dash_string = "-",
quote_highlight = "Quote",
quote_string = "",
fat_headlines = true,
},
rmd = {
query = vim.treesitter.parse_query(
"markdown",
[[
(atx_heading [
(atx_h1_marker)
(atx_h2_marker)
(atx_h3_marker)
(atx_h4_marker)
(atx_h5_marker)
(atx_h6_marker)
] @headline)
(thematic_break) @dash
(fenced_code_block) @codeblock
(block_quote_marker) @quote
(block_quote (paragraph (inline (block_continuation) @quote)))
]]
),
treesitter_language = "markdown",
headline_highlights = { "Headline" },
codeblock_highlight = "CodeBlock",
dash_highlight = "Dash",
dash_string = "-",
quote_highlight = "Quote",
quote_string = "",
fat_headlines = true,
},
norg = {
query = vim.treesitter.parse_query(
"norg",
[[
[
(heading1_prefix)
(heading2_prefix)
(heading3_prefix)
(heading4_prefix)
(heading5_prefix)
(heading6_prefix)
] @headline
(weak_paragraph_delimiter) @dash
(strong_paragraph_delimiter) @doubledash
((ranged_tag
name: (tag_name) @_name
(#eq? @_name "code")
) @codeblock (#offset! @codeblock 0 0 1 0))
(quote1_prefix) @quote
]]
),
headline_highlights = { "Headline" },
codeblock_highlight = "CodeBlock",
dash_highlight = "Dash",
dash_string = "-",
doubledash_highlight = "DoubleDash",
doubledash_string = "=",
quote_highlight = "Quote",
quote_string = "",
fat_headlines = true,
},
org = {
query = vim.treesitter.parse_query(
"org",
[[
(headline (stars) @headline)
(
(expr) @dash
(#match? @dash "^-----+$")
)
(block
name: (expr) @_name
(#eq? @_name "SRC")
) @codeblock
(paragraph . (expr) @quote
(#eq? @quote ">")
)
]]
),
headline_highlights = { "Headline" },
codeblock_highlight = "CodeBlock",
dash_highlight = "Dash",
dash_string = "-",
quote_highlight = "Quote",
quote_string = "",
fat_headlines = true,
},
}

View File

@ -1,42 +0,0 @@
-----------------------------------------------------------
-- Indent line configuration file
-----------------------------------------------------------
-- Plugin: indent-blankline
-- url: https://github.com/lukas-reineke/indent-blankline.nvim
vim.opt.termguicolors = true
vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]]
vim.opt.list = true
vim.opt.listchars:append "space:⋅"
vim.opt.listchars:append "eol: "
require("indent_blankline").setup {
space_char_blankline = " ",
char_highlight_list = {
"IndentBlanklineIndent1",
"IndentBlanklineIndent2",
"IndentBlanklineIndent3",
"IndentBlanklineIndent4",
"IndentBlanklineIndent5",
"IndentBlanklineIndent6",
},
}
--[[
vim.opt.list = true
vim.opt.listchars:append "space:⋅"
vim.opt.listchars:append "eol:↴"
require("indent_blankline").setup {
space_char_blankline = " ",
show_current_context = true,
show_current_context_start = true,
}
--]]

View File

@ -1,12 +1,4 @@
local cmd = vim.cmd
cmd [[packadd packer.nvim]]
return require'packer'.startup(function()
-- Needed to run Packer, it can run itself
use 'wbthomason/packer.nvim'
-- Wakatime Tracking
use 'wakatime/vim-wakatime'
return {
----------------------------------------------------------------
-- LSP and Autocomplete Plugins
@ -14,25 +6,25 @@ return require'packer'.startup(function()
-----------------------------------------------------------------
-- Easy Way to install Language Servers
use { 'williamboman/mason.nvim',
{ 'williamboman/mason.nvim',
config = function()
require("mason").setup()
end
}
use 'williamboman/mason-lspconfig.nvim'
use 'neovim/nvim-lspconfig'
},
'williamboman/mason-lspconfig.nvim',
'neovim/nvim-lspconfig',
-- Manage all your Keymaps!
use {
{
"lazytanuki/nvim-mapper",
config = function() require("nvim-mapper").setup{} end,
before = "telescope.nvim"
}
},
-- Neovim Autocomplete with LSP
use {
{
'hrsh7th/nvim-cmp',
requires = {
dependencies = {
'neovim/nvim-lspconfig',
'L3MON4D3/LuaSnip',
'hrsh7th/cmp-nvim-lsp',
@ -44,75 +36,75 @@ return require'packer'.startup(function()
'hrsh7th/cmp-nvim-lsp-signature-help',
'f3fora/cmp-spell',
}
}
use ({
},
{
'L3MON4D3/LuaSnip', tag = "v1.1.0",
wants = { "friendly-snippets", "vim-snippets" },
})
},
-- Treesitter interface
use {
{
'nvim-treesitter/nvim-treesitter',
run = function() require('nvim-treesitter.install').update({ with_sync = true }) end,
}
build = function() require('nvim-treesitter.install').update({ with_sync = true }) end,
},
-- Null-LS
use({
{
"jose-elias-alvarez/null-ls.nvim",
config = function()
require("null-ls").setup({
debug = true,
})
end,
requires = { "nvim-lua/plenary.nvim" },
})
dependencies = { "nvim-lua/plenary.nvim" },
},
------------------------------------------------------------
-- General Functionality
------------------------------------------------------------
-- Change Color of virtual column bar
-- use "lukas-reineke/virt-column.nvim"
-- 'lukas-reineke/virt-column.nvim'
-- Tmux Navigation
use({
{
"aserowy/tmux.nvim",
config = function() require("tmux").setup() end
})
},
-- Find & Search LSP Tags
use 'liuchengxu/vista.vim'
'liuchengxu/vista.vim',
-- Snippets
use 'rafamadriz/friendly-snippets'
'rafamadriz/friendly-snippets',
-- Rename and Work with Buffer & Tabs
use 'pacha/vem-tabline'
'pacha/vem-tabline',
-- Nvim Tree File Manager on the Left
use 'nvim-tree/nvim-tree.lua'
'nvim-tree/nvim-tree.lua',
-- Trouble Shows Errors with Files.
use {
{
"folke/trouble.nvim",
requires = "nvim-tree/nvim-web-devicons",
dependencies = "kyazdani42/nvim-web-devicons",
config = function()
require("trouble").setup {
}
end
}
},
-- Which Key
use {
{
"folke/which-key.nvim",
config = function()
require("which-key").setup {
}
end
}
},
-- Top Right Notify Pop Up
use 'rcarriga/nvim-notify'
'rcarriga/nvim-notify',
-- echasnovski Mini Modules (Selected)
use {
{
'echasnovski/mini.move',
config = function()
require('mini.move').setup({
@ -129,26 +121,26 @@ return require'packer'.startup(function()
}
})
end
}
use 'echasnovski/mini.trailspace'
use {
},
'echasnovski/mini.trailspace',
{
'echasnovski/mini.pairs', branch = 'stable',
config = function()
require('mini.pairs').setup()
end
}
use {
},
{
'echasnovski/mini.fuzzy', branch = 'stable',
config = function()
require('mini.fuzzy').setup()
end
}
},
-----------------------------------------------------------
-- Markdown Plugins
------------------------------------------------------------
use({
{
'jakewvincent/mkdnflow.nvim',
config = function()
require('mkdnflow').setup({
@ -164,61 +156,66 @@ return require'packer'.startup(function()
wrap = true
})
end
})
},
use({ "iamcco/markdown-preview.nvim", run = "cd app && npm install", setup = function() vim.g.mkdp_filetypes = {
"markdown" } end, ft = { "markdown" }, })
{ "iamcco/markdown-preview.nvim", build = "cd app && npm install", setup = function() vim.g.mkdp_filetypes = {
"markdown" } end, ft = { "markdown" }, },
-- Prettier Plugin for Neovim specifically
use'MunifTanjim/prettier.nvim'
'MunifTanjim/prettier.nvim',
-- DAP (Debug adaptor Protocol)
use 'mfussenegger/nvim-dap'
'mfussenegger/nvim-dap',
use ({
{
'mfussenegger/nvim-dap-python',
config = function()
require('dap-python').setup(
'~/.virtualenvs/debugpy/bin/python'
)
end
})
},
-- Sidebar
use ({
{
'sidebar-nvim/sidebar.nvim',
config = function()
require("sidebar-nvim").setup({
sections = {
"datetime",
"symbols",
"git",
"diagnostics",
"todos",
},
},
initial_width = 45,
hide_statusline = true,
todos = {
initially_closed = true, -- whether the groups should be initially closed on start. You can manually open/close groups later.
}
})
end
})
},
---------------------------------------------------------
-- Text, Icons, Symbols
----------------------------------------------------------
use 'lukas-reineke/indent-blankline.nvim'
'lukas-reineke/indent-blankline.nvim',
use 'simrat39/symbols-outline.nvim'
'simrat39/symbols-outline.nvim',
use 'nvim-tree/nvim-web-devicons'
-- 'nvim-tree/nvim-web-devicons',
use 'folke/lsp-colors.nvim'
'folke/lsp-colors.nvim',
use 'karb94/neoscroll.nvim'
'karb94/neoscroll.nvim',
-- Allow Popups for Telescope etc
use 'nvim-lua/popup.nvim'
use "nvim-lua/plenary.nvim"
'nvim-lua/popup.nvim',
'nvim-lua/plenary.nvim',
-- Todo & Comments for Organization
use {
{
'folke/todo-comments.nvim',
requires = "nvim-lua/plenary.nvim",
dependencies = "nvim-lua/plenary.nvim",
config = function()
require("todo-comments").setup {
keywords = {
@ -248,55 +245,44 @@ use({ "iamcco/markdown-preview.nvim", run = "cd app && npm install", setup = fun
},
}
end
}
},
-- The all famous telescope
use {
'nvim-telescope/telescope.nvim', tag = '0.1.0',
requires = {
'nvim-lua/plenary.nvim',
'nvim-telescope/telescope-live-grep-args.nvim',
},
config = function()
require("telescope").setup({
})
end
}
use {
{
"nvim-telescope/telescope-file-browser.nvim"
}
},
use {
'nvim-telescope/telescope-fzf-native.nvim',
run = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build'
}
{
'nvim-telescope/telescope-fzf-native.nvim',
build = 'make'
},
-----------------------------------------------------------
-- Various Color Schemes, Dashboard, etc
-----------------------------------------------------------
use 'tanvirtin/monokai.nvim'
use 'gbprod/nord.nvim'
use 'Mofiqul/dracula.nvim'
use 'lunarvim/colorschemes'
use { 'rose-pine/neovim', as = 'rose-pine' }
use { "catppuccin/nvim", as = "catppuccin" }
use {
'tanvirtin/monokai.nvim',
'gbprod/nord.nvim',
'Mofiqul/dracula.nvim',
'lunarvim/colorschemes',
{ 'rose-pine/neovim', as = 'rose-pine' },
{ "catppuccin/nvim", as = "catppuccin" },
{
"folke/tokyonight.nvim",
lazy = false, -- make sure we load this during startup if it is your main colorscheme
priority = 1000, -- make sure to load this before all the other start plugins
config = function()
-- load the colorscheme here
vim.cmd([[colorscheme tokyonight]])
end,
},
{
'feline-nvim/feline.nvim',
requires = { 'nvim-tree/nvim-web-devicons' },
}
use {"ellisonleao/glow.nvim"}
-- Signs for Git Status Information
use {
'lewis6991/gitsigns.nvim',
config = function()
require('gitsigns').setup()
end
}
dependencies = { 'kyazdani42/nvim-web-devicons' },
},
{"ellisonleao/glow.nvim"},
-- Plugin that causes your code to crumble >:)
use 'eandrju/cellular-automaton.nvim'
'eandrju/cellular-automaton.nvim',
-- Wakatime Tracking
'wakatime/vim-wakatime'
}
-- The Dashboard
use {
'goolord/alpha-nvim',
requires = { 'nvim-tree/nvim-web-devicons' },
}
end)

View File

@ -1,10 +0,0 @@
local lsp_installer = require("mason-lspconfig").setup({
automatic_instalsation = true,
ui = {
icons = {
server_installed = "",
server_pending = "",
server_uninstalled = ""
}
}
})

View File

@ -1,17 +0,0 @@
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)

View File

@ -1,22 +0,0 @@
local null_ls = require("null-ls")
null_ls.setup({
--[[ on_attach = function(client, bufnr)
if client.resolved_capabilities.document_formatting then
vim.cmd("nnoremap <silent><buffer> <Leader>f :lua vim.lsp.buf.formatting()<CR>")
-- format on save
vim.cmd("autocmd BufWritePost <buffer> lua vim.lsp.buf.formatting()")
end
if client.resolved_capabilities.document_range_formatting then
vim.cmd("xnoremap <silent><buffer> <Leader>f :lua vim.lsp.buf.range_formatting({})<CR>")
end
end,--]]
sources = {
null_ls.builtins.completion.spell,
null_ls.builtins.diagnostics.codespell,
null_ls.builtins.diagnostics.markdownlint.with({ extra_args = { "--disable", "MD013", "MD024", "--" }
,}),
null_ls.builtins.diagnostics.pycodestyle.with({ extra_args = { "--max-line-length=150" }}),
null_ls.builtins.formatting.black.with({ extra_args = { "--fast" }}),
},
})

View File

@ -1,101 +0,0 @@
-----------------------------------------------------------
-- Autocomplete configuration file
-----------------------------------------------------------
-- Plugin: nvim-cmp
-- url: https://github.com/hrsh7th/nvim-cmp
local cmp_status_ok, cmp = pcall(require, 'cmp')
if not cmp_status_ok then
return
end
local luasnip_status_ok, luasnip = pcall(require, 'luasnip')
if not luasnip_status_ok then
return
end
cmp.setup {
-- Load snippet support
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
-- Completion settings
completion = {
--completeopt = 'menu,menuone,noselect'
keyword_length = 2
},
-- Key mapping
mapping = {
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping({
i = cmp.mapping.abort(),
c = cmp.mapping.close(),
}),
["<C-y>"] = cmp.config.disable,
['<CR>'] = cmp.mapping.confirm {
select = false,
},
-- Tab mapping
['<Tab>'] = function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end,
['<S-Tab>'] = function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end
},
-- Load sources, see: https://github.com/topics/nvim-cmp
sources = {
{ name = 'nvim-lsp' },
{ name = 'luasnip' },
{ name = 'path' },
{ name = 'buffer' },
{ name = 'zsh' },
},
}
-- see https://github.com/hrsh7th/nvim-cmp/wiki/Menu-Appearance#how-to-add-visual-studio-code-dark-theme-colors-to-the-menu
vim.cmd[[
highlight! link CmpItemMenu Comment
" gray
highlight! CmpItemAbbrDeprecated guibg=NONE gui=strikethrough guifg=#808080
" blue
highlight! CmpItemAbbrMatch guibg=NONE guifg=#569CD6
highlight! CmpItemAbbrMatchFuzzy guibg=NONE guifg=#569CD6
" light blue
highlight! CmpItemKindVariable guibg=NONE guifg=#9CDCFE
highlight! CmpItemKindInterface guibg=NONE guifg=#9CDCFE
highlight! CmpItemKindText guibg=NONE guifg=#9CDCFE
" pink
highlight! CmpItemKindFunction guibg=NONE guifg=#C586C0
highlight! CmpItemKindMethod guibg=NONE guifg=#C586C0
" front
highlight! CmpItemKindKeyword guibg=NONE guifg=#D4D4D4
highlight! CmpItemKindProperty guibg=NONE guifg=#D4D4D4
highlight! CmpItemKindUnit guibg=NONE guifg=#D4D4D4
]]

View File

@ -1,109 +0,0 @@
-----------------------------------------------------------
-- Neovim LSP configuration file
-----------------------------------------------------------
-- Plugin: nvim-lspconfig
-- url: https://github.com/neovim/nvim-lspconfig
local lsp_status_ok, lspconfig = pcall(require, 'lspconfig')
if not lsp_status_ok then
return
end
local cmp_status_ok, cmp_nvim_lsp = pcall(require, 'cmp_nvim_lsp')
if not cmp_status_ok then
return
end
-- Diagnostic options, see: `:help vim.diagnostic.config`
vim.diagnostic.config({
update_in_insert = true,
float = {
focusable = false,
style = "minimal",
border = "rounded",
source = "always",
header = "",
prefix = "",
},
})
-- Show line diagnostics automatically in hover window
vim.cmd([[
autocmd CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, { focus = false })
]])
-- 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)
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
-- Enable completion triggered by <c-x><c-o>
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings.
local opts = { noremap = true, silent = true }
-- See `:help vim.lsp.*` for documentation on any of the below functions
buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
end
--[[
Language servers setup:
For language servers list see:
https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
Language server installed:
Bash -> bashls
Python -> pyright
C-C++ -> clangd
HTML/CSS/JSON -> vscode-html-languageserver
JavaScript/TypeScript -> tsserver
--]]
-- Define `root_dir` when needed
-- See: https://github.com/neovim/nvim-lspconfig/issues/320
-- This is a workaround, maybe not work with some servers.
local root_dir = function()
return vim.fn.getcwd()
end
-- Use a loop to conveniently call 'setup' on multiple servers and
-- map buffer local keybindings when the language server attaches.
-- Add your language server below:
local servers = { 'bashls', 'pyright', 'clangd', 'html', 'cssls', 'tsserver', 'theme_check'}
-- Call setup
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
on_attach = on_attach,
root_dir = root_dir,
capabilities = capabilities,
flags = {
-- default in neovim 0.7+
debounce_text_changes = 150,
}
}
end

View File

@ -1,12 +0,0 @@
require("nvim-mapper").setup({
-- do not assign the default keymap (<leader>MM)
no_map = false,
-- where should ripgrep look for your keybinds definitions.
-- Default config search path is ~/.config/nvim/lua
search_path = os.getenv("~/.config/nvim/lua/keymaps.lua"),
-- what should be done with the selected keybind when pressing enter.
-- Available actions:
-- * "definition" - Go to keybind definition (default)
-- * "execute" - Execute the keybind command
action_on_enter = "execute",
})

View File

@ -1,29 +0,0 @@
-----------------------------------------------------------
-- File manager configuration file
-----------------------------------------------------------
-- Plugin: nvim-tree
-- url: https://github.com/kyazdani42/nvim-tree.lua
--- Keybindings are defined in `keymapping.lua`:
--- https://github.com/kyazdani42/nvim-tree.lua#keybindings
--- Note: options under the g: command should be set BEFORE running the
--- setup function: https://github.com/kyazdani42/nvim-tree.lua#setup
--- See: `help NvimTree`
local g = vim.g
require('nvim-tree').setup {
update_cwd = true,
filters = {
dotfiles = true,
custom = { '.git', 'node_modules', '.cache', '.bin' },
},
git = {
enable = true,
ignore = true,
},
view = {
width = 37,
},
}

View File

@ -1,26 +0,0 @@
-----------------------------------------------------------
-- Treesitter configuration file
----------------------------------------------------------
-- Plugin: nvim-treesitter
-- url: https://github.com/nvim-treesitter/nvim-treesitter
local status_ok, nvim_treesitter = pcall(require, 'nvim-treesitter.configs')
if not status_ok then
return
end
-- See: https://github.com/nvim-treesitter/nvim-treesitter#quickstart
nvim_treesitter.setup {
-- A list of parser names, or "all"
ensure_installed = {
'bash', 'css', 'html', 'javascript', 'json', 'lua', 'python',
'vim', 'yaml', 'typescript',
},
sync_install = true,
highlight = {
-- `false` will disable the whole extension
enable = true,
additional_vim_regex_highlighting = true,
},
}

View File

@ -1,38 +0,0 @@
local prettier = require("prettier")
prettier.setup({
bin = 'prettier', -- or `prettierd`
filetypes = {
"css",
"graphql",
"html",
"javascript",
"javascriptreact",
"json",
"less",
"markdown",
"scss",
"typescript",
"typescriptreact",
"yaml",
"python",
},
-- prettier format options (you can use config files too. ex: `.prettierrc`)
arrow_parens = "always",
bracket_spacing = true,
embedded_language_formatting = "auto",
end_of_line = "lf",
html_whitespace_sensitivity = "css",
jsx_bracket_same_line = false,
jsx_single_quote = false,
print_width = 80,
prose_wrap = "preserve",
quote_props = "as-needed",
semi = true,
single_quote = false,
tab_width = 2,
trailing_comma = "es5",
use_tabs = false,
vue_indent_script_and_style = false,
})

View File

@ -1,533 +0,0 @@
local ls = require("luasnip")
-- some shorthands...
local s = ls.snippet
local sn = ls.snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local d = ls.dynamic_node
local r = ls.restore_node
local l = require("luasnip.extras").lambda
local rep = require("luasnip.extras").rep
local p = require("luasnip.extras").partial
local m = require("luasnip.extras").match
local n = require("luasnip.extras").nonempty
local dl = require("luasnip.extras").dynamic_lambda
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local types = require("luasnip.util.types")
local conds = require("luasnip.extras.expand_conditions")
-- If you're reading this file for the first time, best skip to around line 190
-- where the actual snippet-definitions start.
-- Every unspecified option will be set to the default.
ls.setup({
history = true,
-- Update more often, :h events for more info.
update_events = "TextChanged,TextChangedI",
-- Snippets aren't automatically removed if their text is deleted.
-- `delete_check_events` determines on which events (:h events) a check for
-- deleted snippets is performed.
-- This can be especially useful when `history` is enabled.
delete_check_events = "TextChanged",
ext_opts = {
[types.choiceNode] = {
active = {
virt_text = { { "choiceNode", "Comment" } },
},
},
},
-- treesitter-hl has 100, use something higher (default is 200).
ext_base_prio = 300,
-- minimal increase in priority.
ext_prio_increase = 1,
enable_autosnippets = true,
-- mapping for cutting selected text so it's usable as SELECT_DEDENT,
-- SELECT_RAW or TM_SELECTED_TEXT (mapped via xmap).
store_selection_keys = "<Tab>",
-- luasnip uses this function to get the currently active filetype. This
-- is the (rather uninteresting) default, but it's possible to use
-- eg. treesitter for getting the current filetype by setting ft_func to
-- require("luasnip.extras.filetype_functions").from_cursor (requires
-- `nvim-treesitter/nvim-treesitter`). This allows correctly resolving
-- the current filetype in eg. a markdown-code block or `vim.cmd()`.
ft_func = function()
return vim.split(vim.bo.filetype, ".", true)
end,
})
-- args is a table, where 1 is the text in Placeholder 1, 2 the text in
-- placeholder 2,...
local function copy(args)
return args[1]
end
-- 'recursive' dynamic snippet. Expands to some text followed by itself.
local rec_ls
rec_ls = function()
return sn(
nil,
c(1, {
-- Order is important, sn(...) first would cause infinite loop of expansion.
t(""),
sn(nil, { t({ "", "\t\\item " }), i(1), d(2, rec_ls, {}) }),
})
)
end
-- complicated function for dynamicNode.
local function jdocsnip(args, _, old_state)
-- !!! old_state is used to preserve user-input here. DON'T DO IT THAT WAY!
-- Using a restoreNode instead is much easier.
-- View this only as an example on how old_state functions.
local nodes = {
t({ "/**", " * " }),
i(1, "A short Description"),
t({ "", "" }),
}
-- These will be merged with the snippet; that way, should the snippet be updated,
-- some user input eg. text can be referred to in the new snippet.
local param_nodes = {}
if old_state then
nodes[2] = i(1, old_state.descr:get_text())
end
param_nodes.descr = nodes[2]
-- At least one param.
if string.find(args[2][1], ", ") then
vim.list_extend(nodes, { t({ " * ", "" }) })
end
local insert = 2
for indx, arg in ipairs(vim.split(args[2][1], ", ", true)) do
-- Get actual name parameter.
arg = vim.split(arg, " ", true)[2]
if arg then
local inode
-- if there was some text in this parameter, use it as static_text for this new snippet.
if old_state and old_state[arg] then
inode = i(insert, old_state["arg" .. arg]:get_text())
else
inode = i(insert)
end
vim.list_extend(
nodes,
{ t({ " * @param " .. arg .. " " }), inode, t({ "", "" }) }
)
param_nodes["arg" .. arg] = inode
insert = insert + 1
end
end
if args[1][1] ~= "void" then
local inode
if old_state and old_state.ret then
inode = i(insert, old_state.ret:get_text())
else
inode = i(insert)
end
vim.list_extend(
nodes,
{ t({ " * ", " * @return " }), inode, t({ "", "" }) }
)
param_nodes.ret = inode
insert = insert + 1
end
if vim.tbl_count(args[3]) ~= 1 then
local exc = string.gsub(args[3][2], " throws ", "")
local ins
if old_state and old_state.ex then
ins = i(insert, old_state.ex:get_text())
else
ins = i(insert)
end
vim.list_extend(
nodes,
{ t({ " * ", " * @throws " .. exc .. " " }), ins, t({ "", "" }) }
)
param_nodes.ex = ins
insert = insert + 1
end
vim.list_extend(nodes, { t({ " */" }) })
local snip = sn(nil, nodes)
-- Error on attempting overwrite.
snip.old_state = param_nodes
return snip
end
-- Make sure to not pass an invalid command, as io.popen() may write over nvim-text.
local function bash(_, _, command)
local file = io.popen(command, "r")
local res = {}
for line in file:lines() do
table.insert(res, line)
end
return res
end
-- Returns a snippet_node wrapped around an insert_node whose initial
-- text value is set to the current date in the desired format.
local date_input = function(args, snip, old_state, fmt)
local fmt = fmt or "%Y-%m-%d"
return sn(nil, i(1, os.date(fmt)))
end
-- snippets are added via ls.add_snippets(filetype, snippets[, opts]), where
-- opts may specify the `type` of the snippets ("snippets" or "autosnippets",
-- for snippets that should expand directly after the trigger is typed).
--
-- opts can also specify a key. By passing an unique key to each add_snippets, it's possible to reload snippets by
-- re-`:luafile`ing the file in which they are defined (eg. this one).
ls.add_snippets("all", {
-- trigger is `fn`, second argument to snippet-constructor are the nodes to insert into the buffer on expansion.
s("fn", {
-- Simple static text.
t("//Parameters: "),
-- function, first parameter is the function, second the Placeholders
-- whose text it gets as input.
f(copy, 2),
t({ "", "function " }),
-- Placeholder/Insert.
i(1),
t("("),
-- Placeholder with initial text.
i(2, "int foo"),
-- Linebreak
t({ ") {", "\t" }),
-- Last Placeholder, exit Point of the snippet.
i(0),
t({ "", "}" }),
}),
s("class", {
-- Choice: Switch between two different Nodes, first parameter is its position, second a list of nodes.
c(1, {
t("public "),
t("private "),
}),
t("class "),
i(2),
t(" "),
c(3, {
t("{"),
-- sn: Nested Snippet. Instead of a trigger, it has a position, just like insert-nodes. !!! These don't expect a 0-node!!!!
-- Inside Choices, Nodes don't need a position as the choice node is the one being jumped to.
sn(nil, {
t("extends "),
-- restoreNode: stores and restores nodes.
-- pass position, store-key and nodes.
r(1, "other_class", i(1)),
t(" {"),
}),
sn(nil, {
t("implements "),
-- no need to define the nodes for a given key a second time.
r(1, "other_class"),
t(" {"),
}),
}),
t({ "", "\t" }),
i(0),
t({ "", "}" }),
}),
-- Alternative printf-like notation for defining snippets. It uses format
-- string with placeholders similar to the ones used with Python's .format().
s(
"fmt1",
fmt("To {title} {} {}.", {
i(2, "Name"),
i(3, "Surname"),
title = c(1, { t("Mr."), t("Ms.") }),
})
),
-- To escape delimiters use double them, e.g. `{}` -> `{{}}`.
-- Multi-line format strings by default have empty first/last line removed.
-- Indent common to all lines is also removed. Use the third `opts` argument
-- to control this behaviour.
s(
"fmt2",
fmt(
[[
foo({1}, {3}) {{
return {2} * {4}
}}
]],
{
i(1, "x"),
rep(1),
i(2, "y"),
rep(2),
}
)
),
-- Empty placeholders are numbered automatically starting from 1 or the last
-- value of a numbered placeholder. Named placeholders do not affect numbering.
s(
"fmt3",
fmt("{} {a} {} {1} {}", {
t("1"),
t("2"),
a = t("A"),
})
),
-- The delimiters can be changed from the default `{}` to something else.
s("fmt4", fmt("foo() { return []; }", i(1, "x"), { delimiters = "[]" })),
-- `fmta` is a convenient wrapper that uses `<>` instead of `{}`.
s("fmt5", fmta("foo() { return <>; }", i(1, "x"))),
-- By default all args must be used. Use strict=false to disable the check
s(
"fmt6",
fmt("use {} only", { t("this"), t("not this") }, { strict = false })
),
-- Use a dynamic_node to interpolate the output of a
-- function (see date_input above) into the initial
-- value of an insert_node.
s("novel", {
t("It was a dark and stormy night on "),
d(1, date_input, {}, { user_args = { "%A, %B %d of %Y" } }),
t(" and the clocks were striking thirteen."),
}),
-- Parsing snippets: First parameter: Snippet-Trigger, Second: Snippet body.
-- Placeholders are parsed into choices with 1. the placeholder text(as a snippet) and 2. an empty string.
-- This means they are not SELECTed like in other editors/Snippet engines.
ls.parser.parse_snippet(
"lspsyn",
"Wow! This ${1:Stuff} really ${2:works. ${3:Well, a bit.}}"
),
-- When wordTrig is set to false, snippets may also expand inside other words.
ls.parser.parse_snippet(
{ trig = "te", wordTrig = false },
"${1:cond} ? ${2:true} : ${3:false}"
),
-- When regTrig is set, trig is treated like a pattern, this snippet will expand after any number.
ls.parser.parse_snippet({ trig = "%d", regTrig = true }, "A Number!!"),
-- Using the condition, it's possible to allow expansion only in specific cases.
s("cond", {
t("will only expand in c-style comments"),
}, {
condition = function(line_to_cursor, matched_trigger, captures)
-- optional whitespace followed by //
return line_to_cursor:match("%s*//")
end,
}),
-- there's some built-in conditions in "luasnip.extras.expand_conditions".
s("cond2", {
t("will only expand at the beginning of the line"),
}, {
condition = conds.line_begin,
}),
-- The last entry of args passed to the user-function is the surrounding snippet.
s(
{ trig = "a%d", regTrig = true },
f(function(_, snip)
return "Triggered with " .. snip.trigger .. "."
end, {})
),
-- It's possible to use capture-groups inside regex-triggers.
s(
{ trig = "b(%d)", regTrig = true },
f(function(_, snip)
return "Captured Text: " .. snip.captures[1] .. "."
end, {})
),
s({ trig = "c(%d+)", regTrig = true }, {
t("will only expand for even numbers"),
}, {
condition = function(line_to_cursor, matched_trigger, captures)
return tonumber(captures[1]) % 2 == 0
end,
}),
-- Use a function to execute any shell command and print its text.
s("bash", f(bash, {}, { user_args = { "ls" } })),
-- Short version for applying String transformations using function nodes.
s("transform", {
i(1, "initial text"),
t({ "", "" }),
-- lambda nodes accept an l._1,2,3,4,5, which in turn accept any string transformations.
-- This list will be applied in order to the first node given in the second argument.
l(l._1:match("[^i]*$"):gsub("i", "o"):gsub(" ", "_"):upper(), 1),
}),
s("transform2", {
i(1, "initial text"),
t("::"),
i(2, "replacement for e"),
t({ "", "" }),
-- Lambdas can also apply transforms USING the text of other nodes:
l(l._1:gsub("e", l._2), { 1, 2 }),
}),
s({ trig = "trafo(%d+)", regTrig = true }, {
-- env-variables and captures can also be used:
l(l.CAPTURE1:gsub("1", l.TM_FILENAME), {}),
}),
-- Set store_selection_keys = "<Tab>" (for example) in your
-- luasnip.config.setup() call to populate
-- TM_SELECTED_TEXT/SELECT_RAW/SELECT_DEDENT.
-- In this case: select a URL, hit Tab, then expand this snippet.
s("link_url", {
t('<a href="'),
f(function(_, snip)
-- TM_SELECTED_TEXT is a table to account for multiline-selections.
-- In this case only the first line is inserted.
return snip.env.TM_SELECTED_TEXT[1] or {}
end, {}),
t('">'),
i(1),
t("</a>"),
i(0),
}),
-- Shorthand for repeating the text in a given node.
s("repeat", { i(1, "text"), t({ "", "" }), rep(1) }),
-- Directly insert the ouput from a function evaluated at runtime.
s("part", p(os.date, "%Y")),
-- use matchNodes (`m(argnode, condition, then, else)`) to insert text
-- based on a pattern/function/lambda-evaluation.
-- It's basically a shortcut for simple functionNodes:
s("mat", {
i(1, { "sample_text" }),
t(": "),
m(1, "%d", "contains a number", "no number :("),
}),
-- The `then`-text defaults to the first capture group/the entire
-- match if there are none.
s("mat2", {
i(1, { "sample_text" }),
t(": "),
m(1, "[abc][abc][abc]"),
}),
-- It is even possible to apply gsubs' or other transformations
-- before matching.
s("mat3", {
i(1, { "sample_text" }),
t(": "),
m(
1,
l._1:gsub("[123]", ""):match("%d"),
"contains a number that isn't 1, 2 or 3!"
),
}),
-- `match` also accepts a function in place of the condition, which in
-- turn accepts the usual functionNode-args.
-- The condition is considered true if the function returns any
-- non-nil/false-value.
-- If that value is a string, it is used as the `if`-text if no if is explicitly given.
s("mat4", {
i(1, { "sample_text" }),
t(": "),
m(1, function(args)
-- args is a table of multiline-strings (as usual).
return (#args[1][1] % 2 == 0 and args[1]) or nil
end),
}),
-- The nonempty-node inserts text depending on whether the arg-node is
-- empty.
s("nempty", {
i(1, "sample_text"),
n(1, "i(1) is not empty!"),
}),
-- dynamic lambdas work exactly like regular lambdas, except that they
-- don't return a textNode, but a dynamicNode containing one insertNode.
-- This makes it easier to dynamically set preset-text for insertNodes.
s("dl1", {
i(1, "sample_text"),
t({ ":", "" }),
dl(2, l._1, 1),
}),
-- Obviously, it's also possible to apply transformations, just like lambdas.
s("dl2", {
i(1, "sample_text"),
i(2, "sample_text_2"),
t({ "", "" }),
dl(3, l._1:gsub("\n", " linebreak ") .. l._2, { 1, 2 }),
}),
}, {
key = "all",
})
ls.add_snippets("java", {
-- Very long example for a java class.
s("fn", {
d(6, jdocsnip, { 2, 4, 5 }),
t({ "", "" }),
c(1, {
t("public "),
t("private "),
}),
c(2, {
t("void"),
t("String"),
t("char"),
t("int"),
t("double"),
t("boolean"),
i(nil, ""),
}),
t(" "),
i(3, "myFunc"),
t("("),
i(4),
t(")"),
c(5, {
t(""),
sn(nil, {
t({ "", " throws " }),
i(1),
}),
}),
t({ " {", "\t" }),
i(0),
t({ "", "}" }),
}),
}, {
key = "java",
})
ls.add_snippets("tex", {
-- rec_ls is self-referencing. That makes this snippet 'infinite' eg. have as many
-- \item as necessary by utilizing a choiceNode.
s("ls", {
t({ "\\begin{itemize}", "\t\\item " }),
i(1),
d(2, rec_ls, {}),
t({ "", "\\end{itemize}" }),
}),
}, {
key = "tex",
})
-- set type to "autosnippets" for adding autotriggered snippets.
ls.add_snippets("all", {
s("autotrigger", {
t("autosnippet"),
}),
}, {
type = "autosnippets",
key = "all_auto",
})
-- in a lua file: search lua-, then c-, then all-snippets.
ls.filetype_extend("lua", { "c" })
-- in a cpp file: search c-snippets, then all-snippets only (no cpp-snippets!!).
ls.filetype_set("cpp", { "c" })
-- Beside defining your own snippets you can also load snippets from "vscode-like" packages
-- that expose snippets in json files, for example <https://github.com/rafamadriz/friendly-snippets>.
require("luasnip.loaders.from_vscode").load({ include = { "python" } }) -- Load only python snippets
-- The directories will have to be structured like eg. <https://github.com/rafamadriz/friendly-snippets> (include
-- a similar `package.json`)
--require("luasnip.loaders.from_vscode").load({ paths = { "./my-snippets" } }) -- Load snippets from my-snippets folder
-- You can also use lazy loading so snippets are loaded on-demand, not all at once (may interfere with lazy-loading luasnip itself).
require("luasnip.loaders.from_vscode").lazy_load() -- You can pass { paths = "./my-snippets/"} as well

View File

@ -1,59 +0,0 @@
local M = {}
M.setup = function ()
vim.g.symbols_outline = {
highlight_hovered_item = true,
show_guides = true,
auto_preview = true,
position = "right",
relative_width = true,
width = 20,
auto_close = false,
show_numbers = true,
show_relative_numbers = false,
show_symbol_details = true,
preview_bg_highlight = "Pmenu",
keymaps = {
close = { "<Esc>", "q" },
goto_location = "<Cr>",
focus_location = "o",
hover_symbol = "<C-space>",
toggle_preview = "K",
rename_symbol = "r",
code_actions = "a",
},
lsp_blacklist = {},
symbol_blacklist = {},
symbols = {
File = { icon = "", hl = "TSURI" },
Module = { icon = "", hl = "TSNamespace" },
Namespace = { icon = "", hl = "TSNamespace" },
Package = { icon = "", hl = "TSNamespace" },
Class = { icon = "𝓒", hl = "TSType" },
Method = { icon = "ƒ", hl = "TSMethod" },
Property = { icon = "", hl = "TSMethod" },
Field = { icon = "", hl = "TSField" },
Constructor = { icon = "", hl = "TSConstructor" },
Enum = { icon = "", hl = "TSType" },
Interface = { icon = "", hl = "TSType" },
Function = { icon = "", hl = "TSFunction" },
Variable = { icon = "", hl = "TSConstant" },
Constant = { icon = "", hl = "TSConstant" },
String = { icon = "𝓐", hl = "TSString" },
Number = { icon = "#", hl = "TSNumber" },
Boolean = { icon = "", hl = "TSBoolean" },
Array = { icon = "", hl = "TSConstant" },
Object = { icon = "", hl = "TSType" },
Key = { icon = "🔐", hl = "TSType" },
Null = { icon = "NULL", hl = "TSType" },
EnumMember = { icon = "", hl = "TSField" },
Struct = { icon = "𝓢", hl = "TSType" },
Event = { icon = "", hl = "TSType" },
Operator = { icon = "+", hl = "TSOperator" },
TypeParameter = { icon = "𝙏", hl = "TSParameter" },
},
}
end
return M

View File

@ -1,27 +1,160 @@
local g = vim.g
local fb_actions = require "telescope".extensions.file_browser.actions
local telescope_installer = require('telescope').setup({
extensions = {
file_browser = {
mappings = {
["i"] = {
["<C-c>"] = fb_actions.create,
["<C-y>"] = fb_actions.copy,
["<C-r>"] = fb_actions.rename,
["<C-w>"] = fb_actions.goto_cwd,
["<C-o>"] = fb_actions.open
},
["n"] = {
},
return {
{
'nvim-telescope/telescope.nvim', tag = '0.1.0',
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-telescope/telescope-live-grep-args.nvim',
},
},
},
})
require("telescope").load_extension "file_browser",
require("telescope").load_extension "mapper",
require("telescope").load_extension "live_grep_args",
require("telescope").load_extension "fzf",
config = function ()
local g = vim.g
local fb_actions = require "telescope".extensions.file_browser.actions
local themes = {
popup_list = {
theme = 'popup_list',
border = true,
preview = false,
prompt_title = false,
results_title = false,
sorting_strategy = 'ascending',
layout_strategy = 'center',
borderchars = {
prompt = { '', '', '', '', '', '', '', '' },
results = { '', '', '', '', '', '', '', '' },
preview = { '', '', '', '', '', '', '', '' },
},
},
popup_extended = {
theme = 'popup_extended',
prompt_title = false,
results_title = false,
layout_strategy = 'center',
layout_config = {
width = 0.7,
height = 0.3,
mirror = true,
preview_cutoff = 1,
},
borderchars = {
prompt = { '', '', ' ', '', '', '', '', '' },
results = { '', '', '', '', '', '', '', '' },
preview = { '', '', '', '', '', '', '', '' },
},
},
command_pane = {
theme = 'command_pane',
preview = false,
prompt_title = false,
results_title = false,
sorting_strategy = 'descending',
layout_strategy = 'bottom_pane',
layout_config = {
height = 13,
preview_cutoff = 1,
prompt_position = 'bottom'
},
},
ivy_plus = {
theme = 'ivy_plus',
preview = false,
prompt_title = false,
results_title = false,
layout_strategy = 'bottom_pane',
layout_config = {
height = 13,
preview_cutoff = 120,
prompt_position = 'bottom'
},
borderchars = {
prompt = { '', '', '', '', '', '', '', '' },
results = { '', '', '', '', '', '', '', '' },
preview = { '', '', ' ', ' ', '', '', '', ' ' },
},
},
}
local telescope_installer = require('telescope').setup({
defaults = {
border = true,
prompt_title = false,
results_title = false,
color_devicons = false,
layout_strategy = 'horizontal',
borderchars = {
prompt = { '', '', '', '', '', '', '', '' },
results = { '', '', '', '', '', '', '', '' },
preview = { '', '', '', '', '', '', '', '' },
},
layout_config = {
bottom_pane = {
height = 20,
preview_cutoff = 120,
prompt_position = 'top'
},
center = {
height = 0.4,
preview_cutoff = 40,
prompt_position = 'top',
width = 0.7
},
horizontal = {
prompt_position = 'top',
preview_cutoff = 40,
height = 0.9,
width = 0.8
}
},
sorting_strategy = 'ascending',
prompt_prefix = ' ',
selection_caret = '',
entry_prefix = ' ',
file_ignore_patterns = {'node_modules'},
path_display = { 'truncate' },
results_title = false,
prompt_title =false,
preview = {
treesitter = {
enable = {
'css', 'dockerfile', 'elixir', 'erlang', 'fish',
'html', 'http', 'javascript', 'json', 'lua', 'php',
'python', 'regex', 'ruby', 'rust', 'scss', 'svelte',
'typescript', 'vue', 'yaml', 'markdown', 'bash', 'c',
'cmake', 'comment', 'cpp', 'dart', 'go', 'jsdoc',
'json5', 'jsonc', 'llvm', 'make', 'ninja', 'prisma',
'proto', 'pug', 'swift', 'todotxt', 'toml', 'tsx',
}
}
},
mappings = {
i = {
['<esc>'] = require('telescope.actions').close,
},
}
},
extensions = {
file_browser = {
mappings = {
["i"] = {
["<C-c>"] = fb_actions.create,
["<C-y>"] = fb_actions.copy,
["<C-r>"] = fb_actions.rename,
["<C-w>"] = fb_actions.goto_cwd,
["<C-o>"] = fb_actions.open
},
},
},
fzf = {
fuzzy = true, -- false will only do exact matching
override_generic_sorter = true, -- override the generic sorter
override_file_sorter = true, -- override the file sorter
case_mode = 'smart_case', -- other options: 'ignore_case' or 'respect_case'
}
}
})
end
}}
require("telescope").load_extension "file_browser"
require("telescope").load_extension "mapper"
require("telescope").load_extension "live_grep_args"
require("telescope").load_extension "fzf"

View File

@ -1,29 +0,0 @@
local g = vim.g
require('todo-comments').setup {
keywords = {
FIX = {
icon = "", -- icon used for the sign, and in search results
color = "error", -- can be a hex color, or a named color (see below)
alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
-- signs = false, -- configure signs for some keywords individually
},
DONE = { icon = "", color = "info" },
FEAT = { icon = "", color = "warning", alt = { "NEED", "REQUEST" } },
WARN = { icon = "", color = "error", alt = { "WARNING", "ERROR" } },
TODO = { icon = "", color = "test", alt = { "TASK", "TBD" } },
NOTE = { icon = "", color = "hint", alt = { "INFO" } },
SENG = { icon = "", color = "test", alt = { "SOLUTIONS", "SE", "WORKAROUND" } },
},
highlight = {
comments_only = false,
},
colors = {
error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
warning = { "DiagnosticWarning", "WarningMsg", "#ffba08" },
info = { "DiagnosticInfo", "#05eb42" },
hint = { "DiagnosticHint", "#ff12d7" },
default = { "Identifier", "#711fff" },
test = { "Identifier", "#FF00FF" }
},
}

View File

@ -56,7 +56,6 @@ opt.synmaxcol = 240 -- Max column for syntax highlight
-- Colorscheme
-----------------------------------------------------------
opt.termguicolors = true -- Enable 24-bit RGB colors
cmd [[colorscheme catppuccin-macchiato]]
-----------------------------------------------------------
-- Tabs, indent
-----------------------------------------------------------