Just for Jer-Bear
commit
c87c7e53b0
@ -0,0 +1,11 @@
|
|||||||
|
-- Add a buffer bar at the top.
|
||||||
|
vim.api.nvim_set_var('airline#extensions#tabline#enabled', true)
|
||||||
|
|
||||||
|
-- Change the formatter for the tab/buffer bar.
|
||||||
|
-- Here's a full list of the different formatters:
|
||||||
|
-- - default
|
||||||
|
-- - jsformatter
|
||||||
|
-- - unique_tail
|
||||||
|
-- - unique_tail_improved
|
||||||
|
vim.api.nvim_set_var('airline#extensions#tabline#formatter',
|
||||||
|
'unique_tail_improved')
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
-- local chatgpt = require("chatgpt")
|
||||||
|
-- wk.register({
|
||||||
|
-- p = {
|
||||||
|
-- name = "ChatGPT",
|
||||||
|
-- e = {
|
||||||
|
-- function()
|
||||||
|
-- chatgpt.edit_with_instructions()
|
||||||
|
-- end,
|
||||||
|
-- "Edit with instructions",
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- }, {
|
||||||
|
-- prefix = "<leader>",
|
||||||
|
-- mode = "v",
|
||||||
|
-- })
|
||||||
@ -0,0 +1,156 @@
|
|||||||
|
local cmp_status_ok, cmp = pcall(require, "cmp")
|
||||||
|
if not cmp_status_ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local snip_status_ok, luasnip = pcall(require, "luasnip")
|
||||||
|
if not snip_status_ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Not sure if this just works or needs vscode to be installed. This came from
|
||||||
|
-- the same place as the snippet below.
|
||||||
|
require("luasnip/loaders/from_vscode").lazy_load()
|
||||||
|
|
||||||
|
-- This function, along with most of the code in this file, was copied from
|
||||||
|
-- LunarVim/Neovim-from-scratch branch: 05-completion, commit: a0e07fc
|
||||||
|
-- I'm not 100% sure what it does, it has something to do with "supertab" for
|
||||||
|
-- snippets, autocomplete, and normal mode.
|
||||||
|
local check_backspace = function()
|
||||||
|
local col = vim.fn.col "." - 1
|
||||||
|
return col == 0 or vim.fn.getline("."):sub(col, col):match "%s"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- פּ ﯟ some other good icons
|
||||||
|
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 = "",
|
||||||
|
Copilot = "",
|
||||||
|
}
|
||||||
|
-- find more here: https://www.nerdfonts.com/cheat-sheet
|
||||||
|
|
||||||
|
cmp.setup {
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body) -- For `luasnip` users.
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
["<C-k>"] = cmp.mapping.select_prev_item(),
|
||||||
|
["<C-j>"] = cmp.mapping.select_next_item(),
|
||||||
|
["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
|
||||||
|
["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
|
||||||
|
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
|
||||||
|
-- Specify `cmp.config.disable` if you want to remove the default `<C-y>`
|
||||||
|
-- mapping.
|
||||||
|
["<C-y>"] = cmp.config.disable,
|
||||||
|
["<C-e>"] = cmp.mapping {
|
||||||
|
i = cmp.mapping.abort(),
|
||||||
|
c = cmp.mapping.close(),
|
||||||
|
},
|
||||||
|
['<C-x>'] = cmp.mapping(
|
||||||
|
cmp.mapping.complete({
|
||||||
|
config = {
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'cmp_ai' },
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
{ 'i' }
|
||||||
|
),
|
||||||
|
-- Accept currently selected item. If none selected, `select` first item.
|
||||||
|
-- Set `select` to `false` to only confirm explicitly selected items.
|
||||||
|
["<CR>"] = cmp.mapping.confirm { select = true },
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expandable() then
|
||||||
|
luasnip.expand()
|
||||||
|
elseif luasnip.expand_or_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
elseif check_backspace() then
|
||||||
|
fallback()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
"i",
|
||||||
|
"s",
|
||||||
|
}),
|
||||||
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
"i",
|
||||||
|
"s",
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
formatting = {
|
||||||
|
fields = { "kind", "abbr", "menu" },
|
||||||
|
format = function(entry, vim_item)
|
||||||
|
-- Kind icons
|
||||||
|
-- TODO Need to make icons toggleable,
|
||||||
|
vim_item.kind = string.format("%s", kind_icons[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 = ({
|
||||||
|
copilot = "[Copilot]",
|
||||||
|
cmp_ai = "[AI]",
|
||||||
|
nvim_lsp = "[LSP]",
|
||||||
|
nvim_lua = "[NVIM_LUA]",
|
||||||
|
luasnip = "[Snippet]",
|
||||||
|
buffer = "[Buffer]",
|
||||||
|
path = "[Path]",
|
||||||
|
})[entry.source.name]
|
||||||
|
return vim_item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
{ name = "copilot" },
|
||||||
|
-- Uncomment to run on every keystroke.
|
||||||
|
-- { name = "cmp_ai" },
|
||||||
|
{ name = "nvim_lsp" },
|
||||||
|
{ name = "nvim_lua" },
|
||||||
|
{ name = "buffer" },
|
||||||
|
{ name = "path" },
|
||||||
|
{ name = "luasnip" },
|
||||||
|
},
|
||||||
|
confirm_opts = {
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = false,
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
documentation = cmp.config.window.bordered()
|
||||||
|
},
|
||||||
|
experimental = {
|
||||||
|
ghost_text = true,
|
||||||
|
native_menu = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
function ColorMyPencils(color)
|
||||||
|
|
||||||
|
color = color or "base16-gruvbox-dark-hard"
|
||||||
|
-- color = color or "default"
|
||||||
|
vim.cmd.colorscheme(color)
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "Normal", { ctermbg="none" })
|
||||||
|
vim.api.nvim_set_hl(0, "NormalFloat", { link="Normal" })
|
||||||
|
vim.api.nvim_set_hl(0, "NonText", { link="Normal" })
|
||||||
|
vim.api.nvim_set_hl(0, "LineNr", { link="Normal" })
|
||||||
|
vim.api.nvim_set_hl(0, "SignColumn", { link="Normal" })
|
||||||
|
vim.api.nvim_set_hl(0, "Visual", { ctermfg=0, ctermbg=3 })
|
||||||
|
vim.api.nvim_set_hl(0, "Search", { ctermfg=4, ctermbg=3 })
|
||||||
|
vim.api.nvim_set_hl(0, "Folded", { ctermfg=2, ctermbg=0 })
|
||||||
|
|
||||||
|
-- diff colors
|
||||||
|
-- The one issue with this is you won't be as easy to tell where the diff
|
||||||
|
-- sections are if there is no transparency in the terminal.
|
||||||
|
vim.api.nvim_set_hl(0, "DiffAdd", { ctermfg=2, ctermbg=0 })
|
||||||
|
vim.api.nvim_set_hl(0, "DiffDelete", { ctermfg=1, ctermbg=0 })
|
||||||
|
vim.api.nvim_set_hl(0, "DiffChange", { ctermfg=8, ctermbg=0 })
|
||||||
|
vim.api.nvim_set_hl(0, "DiffText", { ctermfg=3, ctermbg=0 })
|
||||||
|
|
||||||
|
-- Popup menu
|
||||||
|
vim.api.nvim_set_hl(0, "Pmenu", { ctermfg=7, ctermbg=0 })
|
||||||
|
vim.api.nvim_set_hl(0, "PmenuSel", { ctermfg=0, ctermbg=8 })
|
||||||
|
|
||||||
|
-- Current line highlight and line wrap column.
|
||||||
|
vim.opt.colorcolumn = '-0'
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
vim.api.nvim_set_hl(0, "ColorColumn", { ctermbg=0 })
|
||||||
|
vim.api.nvim_set_hl(0, "CursorLine",
|
||||||
|
{ ctermbg=0, underline=false })
|
||||||
|
vim.api.nvim_set_hl(0, "CursorLineNr",
|
||||||
|
{ ctermbg="none", underline=false })
|
||||||
|
vim.api.nvim_set_hl(0, "CursorLineSign",
|
||||||
|
{ ctermbg="none", underline=false })
|
||||||
|
|
||||||
|
-- Other stuff
|
||||||
|
vim.api.nvim_set_hl(0, "WinSeparator",
|
||||||
|
{ ctermfg = 3, ctermbg = "none" })
|
||||||
|
vim.api.nvim_set_hl(0, "SpellBad",
|
||||||
|
{ cterm = { undercurl = true }, ctermfg = 1, ctermbg = 0 })
|
||||||
|
|
||||||
|
-- GitSigns colors
|
||||||
|
--
|
||||||
|
-- TODO this should be moved to gitsigns.lua
|
||||||
|
-- It would have been nice to link these to 'DiffAdd', 'DiffChange', and
|
||||||
|
-- 'DiffDelete', but currently this has a transparent background, while the
|
||||||
|
-- others don't. This may change though so keep the possibility of linking
|
||||||
|
-- in mind.
|
||||||
|
vim.api.nvim_set_hl(0, "GitSignsAdd", { ctermfg=2, ctermbg="none" })
|
||||||
|
vim.api.nvim_set_hl(0, "GitSignsChange", { ctermfg=3, ctermbg="none" })
|
||||||
|
vim.api.nvim_set_hl(0, "GitSignsDelete", { ctermfg=1, ctermbg="none" })
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
ColorMyPencils()
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
vim.api.nvim_set_keymap('n', 'ga', "<Plug>(EasyAlign)", { noremap = true, silent = true });
|
||||||
|
vim.api.nvim_set_keymap('x', 'ga', "<Plug>(EasyAlign)", { noremap = true, silent = true });
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
require('gitsigns').setup{
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
local gs = package.loaded.gitsigns
|
||||||
|
|
||||||
|
local function map(mode, l, r, opts)
|
||||||
|
opts = opts or {}
|
||||||
|
opts.buffer = bufnr
|
||||||
|
vim.keymap.set(mode, l, r, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Navigation
|
||||||
|
map('n', ']c', function()
|
||||||
|
if vim.wo.diff then return ']c' end
|
||||||
|
vim.schedule(function() gs.next_hunk() end)
|
||||||
|
return '<Ignore>'
|
||||||
|
end, {expr=true})
|
||||||
|
|
||||||
|
map('n', '[c', function()
|
||||||
|
if vim.wo.diff then return '[c' end
|
||||||
|
vim.schedule(function() gs.prev_hunk() end)
|
||||||
|
return '<Ignore>'
|
||||||
|
end, {expr=true})
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
map('n', '<leader>hs', gs.stage_hunk)
|
||||||
|
map('n', '<leader>hr', gs.reset_hunk)
|
||||||
|
map('v', '<leader>hs', function() gs.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
|
||||||
|
map('v', '<leader>hr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
|
||||||
|
map('n', '<leader>hS', gs.stage_buffer)
|
||||||
|
map('n', '<leader>hu', gs.undo_stage_hunk)
|
||||||
|
map('n', '<leader>hR', gs.reset_buffer)
|
||||||
|
map('n', '<leader>hp', gs.preview_hunk)
|
||||||
|
map('n', '<leader>hb', function() gs.blame_line{full=true} end)
|
||||||
|
map('n', '<leader>tb', gs.toggle_current_line_blame)
|
||||||
|
map('n', '<leader>hd', gs.diffthis)
|
||||||
|
map('n', '<leader>hD', function() gs.diffthis('~') end)
|
||||||
|
-- Commented out because we use this binding for trouble.
|
||||||
|
-- map('n', '<leader>td', gs.toggle_deleted)
|
||||||
|
|
||||||
|
-- Text object
|
||||||
|
map({'o', 'x'}, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
|
||||||
|
end
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
local builtin = require('telescope.builtin')
|
||||||
|
vim.keymap.set('n', '<C-p>', builtin.git_files, {})
|
||||||
|
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||||
|
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||||
|
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||||
|
vim.keymap.set('n', '<leader>fs', builtin.lsp_document_symbols, {})
|
||||||
@ -0,0 +1,80 @@
|
|||||||
|
-- TODO Here are some ways to run this plugin just on the current file.
|
||||||
|
-- :exe ":TodoQuickFix cwd=" .. fnameescape(expand("%:p"))
|
||||||
|
-- :exe ":TodoTrouble cwd=" .. fnameescape(expand("%:p"))
|
||||||
|
|
||||||
|
-- TODO Add a way to add TODO REM.
|
||||||
|
-- TODO Remove unused keywords.
|
||||||
|
|
||||||
|
-- TODO REM Most of this was copied from the default config. Instead we should
|
||||||
|
-- only override the settings we want to change. Maybe put the whole
|
||||||
|
-- default config in a comment.
|
||||||
|
|
||||||
|
-- All settings in this config are the default values from commit 3094ead,
|
||||||
|
-- unless noted by CHANGE_FROM_DEFAULT.
|
||||||
|
require("todo-comments").setup {
|
||||||
|
signs = true, -- show icons in the signs column
|
||||||
|
sign_priority = 8, -- sign priority
|
||||||
|
-- keywords recognized as todo comments
|
||||||
|
keywords = {
|
||||||
|
FIX = {
|
||||||
|
icon = " ", -- icon used for the sign, and in search results
|
||||||
|
color = "error", -- can be a hex color, or a named color (see below)
|
||||||
|
alt = { "FIXME", "BUG", "FIXIT", "ISSUE" }, -- a set of other keywords that all map to this FIX keywords
|
||||||
|
-- signs = false, -- configure signs for some keywords individually
|
||||||
|
},
|
||||||
|
TODO = { icon = " ", color = "info" },
|
||||||
|
HACK = { icon = " ", color = "warning" },
|
||||||
|
WARN = { icon = " ", color = "warning", alt = { "WARNING", "XXX" } },
|
||||||
|
PERF = { icon = " ", alt = { "OPTIM", "PERFORMANCE", "OPTIMIZE" } },
|
||||||
|
NOTE = { icon = " ", color = "hint", alt = { "INFO" } },
|
||||||
|
TEST = { icon = "⏲ ", color = "test", alt = { "TESTING", "PASSED", "FAILED" } },
|
||||||
|
},
|
||||||
|
gui_style = {
|
||||||
|
fg = "NONE", -- The gui style to use for the fg highlight group.
|
||||||
|
bg = "BOLD", -- The gui style to use for the bg highlight group.
|
||||||
|
},
|
||||||
|
merge_keywords = true, -- when true, custom keywords will be merged with the defaults
|
||||||
|
-- highlighting of the line containing the todo comment
|
||||||
|
-- * before: highlights before the keyword (typically comment characters)
|
||||||
|
-- * keyword: highlights of the keyword
|
||||||
|
-- * after: highlights after the keyword (todo text)
|
||||||
|
highlight = {
|
||||||
|
multiline = true, -- enable multine todo comments
|
||||||
|
multiline_pattern = "^.", -- lua pattern to match the next multiline from the start of the matched keyword
|
||||||
|
multiline_context = 10, -- extra lines that will be re-evaluated when changing a line
|
||||||
|
before = "", -- "fg" or "bg" or empty
|
||||||
|
keyword = "wide", -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg, but will also highlight surrounding characters, wide_fg acts accordingly but with fg)
|
||||||
|
after = "fg", -- "fg" or "bg" or empty
|
||||||
|
-- CHANGE_FROM_DEFAULT: Changed to make the ':' optional.
|
||||||
|
-- pattern = [[.*<(KEYWORDS)\s*:]], -- pattern or table of patterns, used for highlighting (vim regex)
|
||||||
|
pattern = [[.*<(KEYWORDS)(:| )]], -- pattern or table of patterns, used for highlighting (vim regex)
|
||||||
|
comments_only = true, -- uses treesitter to match keywords in comments only
|
||||||
|
max_line_len = 400, -- ignore lines longer than this
|
||||||
|
exclude = {}, -- list of file types to exclude highlighting
|
||||||
|
},
|
||||||
|
-- list of named colors where we try to extract the guifg from the
|
||||||
|
-- list of highlight groups or use the hex color if hl not found as a fallback
|
||||||
|
colors = {
|
||||||
|
error = { "DiagnosticError", "ErrorMsg", "#DC2626" },
|
||||||
|
warning = { "DiagnosticWarn", "WarningMsg", "#FBBF24" },
|
||||||
|
info = { "DiagnosticInfo", "#2563EB" },
|
||||||
|
hint = { "DiagnosticHint", "#10B981" },
|
||||||
|
default = { "Identifier", "#7C3AED" },
|
||||||
|
test = { "Identifier", "#FF00FF" }
|
||||||
|
},
|
||||||
|
search = {
|
||||||
|
command = "rg",
|
||||||
|
args = {
|
||||||
|
"--color=never",
|
||||||
|
"--no-heading",
|
||||||
|
"--with-filename",
|
||||||
|
"--line-number",
|
||||||
|
"--column",
|
||||||
|
},
|
||||||
|
-- regex that will be used to match keywords.
|
||||||
|
-- don't replace the (KEYWORDS) placeholder
|
||||||
|
-- CHANGE_FROM_DEFAULT: Changed to make the ':' optional.
|
||||||
|
-- pattern = [[\b(KEYWORDS):]], -- ripgrep regex
|
||||||
|
pattern = [[\b(KEYWORDS)( |:)]],
|
||||||
|
},
|
||||||
|
}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
require'nvim-treesitter.configs'.setup {
|
||||||
|
-- A list of parser names, or "all" (the five listed parsers should always be installed)
|
||||||
|
-- ensure_installed = { "bash", "lua", "vim", "vimdoc" },
|
||||||
|
|
||||||
|
-- Install parsers synchronously (only applied to `ensure_installed`)
|
||||||
|
-- sync_install = false,
|
||||||
|
|
||||||
|
-- Automatically install missing parsers when entering buffer
|
||||||
|
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
|
||||||
|
-- auto_install = true,
|
||||||
|
|
||||||
|
-- List of parsers to ignore installing (for "all")
|
||||||
|
-- ignore_install = { "javascript" },
|
||||||
|
|
||||||
|
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
|
||||||
|
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
|
||||||
|
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
|
||||||
|
-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
|
||||||
|
-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
|
||||||
|
-- the name of the parser)
|
||||||
|
-- list of language that will be disabled
|
||||||
|
-- disable = { "c", "rust" },
|
||||||
|
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
|
||||||
|
-- disable = function(lang, buf)
|
||||||
|
-- local max_filesize = 100 * 1024 -- 100 KB
|
||||||
|
-- local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
||||||
|
-- if ok and stats and stats.size > max_filesize then
|
||||||
|
-- return true
|
||||||
|
-- end
|
||||||
|
-- end,
|
||||||
|
|
||||||
|
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
|
||||||
|
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
|
||||||
|
-- Using this option may slow down your editor, and you may see some duplicate highlights.
|
||||||
|
-- Instead of true it can also be a list of languages
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
local keymap = function(mode, key, command)
|
||||||
|
vim.api.nvim_set_keymap(mode, key, command, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
keymap("n", "<leader>td", ":Trouble document_diagnostics<cr>")
|
||||||
|
keymap("n", "<leader>tt", ":TroubleToggle<cr>")
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
require("shnee.lsp")
|
||||||
|
require("shnee.packer")
|
||||||
|
require("shnee.remap")
|
||||||
|
require("shnee.set")
|
||||||
|
require("shnee.splits")
|
||||||
@ -0,0 +1,109 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
-- TODO Need to make icons toggleable,
|
||||||
|
-- TODO: backfill this to template
|
||||||
|
M.setup = function()
|
||||||
|
local signs = {
|
||||||
|
{ name = "DiagnosticSignError", text = "" },
|
||||||
|
{ name = "DiagnosticSignWarn", text = "" },
|
||||||
|
{ name = "DiagnosticSignHint", text = "" },
|
||||||
|
{ name = "DiagnosticSignInfo", text = "" },
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, sign in ipairs(signs) do
|
||||||
|
vim.fn.sign_define(sign.name, { texthl = sign.name,
|
||||||
|
text = sign.text,
|
||||||
|
numhl = "" })
|
||||||
|
end
|
||||||
|
|
||||||
|
local config = {
|
||||||
|
-- "ghost" text in the line where the error is.
|
||||||
|
virtual_text = true,
|
||||||
|
-- show signs
|
||||||
|
signs = {
|
||||||
|
active = signs,
|
||||||
|
},
|
||||||
|
update_in_insert = true,
|
||||||
|
underline = true,
|
||||||
|
severity_sort = true,
|
||||||
|
float = {
|
||||||
|
focusable = false,
|
||||||
|
style = "minimal",
|
||||||
|
border = "rounded",
|
||||||
|
source = "always",
|
||||||
|
-- TODO REM LunarVim/Neovim-from-scratch had these set to empty, I want to
|
||||||
|
-- what happens when they are not cleared.
|
||||||
|
-- header = "",
|
||||||
|
-- prefix = "",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.diagnostic.config(config)
|
||||||
|
|
||||||
|
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",
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- TODO REM I think this is for highlighting a symbol everywhere in a file while
|
||||||
|
-- your cursor is over it.
|
||||||
|
local function lsp_highlight_document(client)
|
||||||
|
-- Set autocommands conditional on server_capabilities
|
||||||
|
if client.server_capabilities.documentHighlight then
|
||||||
|
vim.api.nvim_exec(
|
||||||
|
[[
|
||||||
|
augroup lsp_document_highlight
|
||||||
|
autocmd! * <buffer>
|
||||||
|
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
|
||||||
|
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
|
||||||
|
augroup END
|
||||||
|
]],
|
||||||
|
false
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function lsp_keymaps(bufnr)
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>", opts)
|
||||||
|
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>", opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
|
||||||
|
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
|
||||||
|
-- vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>f", "<cmd>lua vim.diagnostic.open_float()<CR>", opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "[d", '<cmd>lua vim.diagnostic.goto_prev({ border = "rounded" })<CR>', opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(
|
||||||
|
bufnr,
|
||||||
|
"n",
|
||||||
|
"gl",
|
||||||
|
'<cmd>lua vim.diagnostic.open_float()<CR>',
|
||||||
|
opts
|
||||||
|
)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "]d", '<cmd>lua vim.diagnostic.goto_next({ border = "rounded" })<CR>', opts)
|
||||||
|
vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>q", "<cmd>lua vim.diagnostic.setloclist()<CR>", opts)
|
||||||
|
vim.cmd [[ command! Format execute 'lua vim.lsp.buf.formatting()' ]]
|
||||||
|
end
|
||||||
|
|
||||||
|
M.on_attach = function(client, bufnr)
|
||||||
|
if client.name == "tsserver" then
|
||||||
|
client.server_capabilities.documentFormattingProvider = false
|
||||||
|
end
|
||||||
|
lsp_keymaps(bufnr)
|
||||||
|
lsp_highlight_document(client)
|
||||||
|
end
|
||||||
|
|
||||||
|
local status_ok, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
|
||||||
|
if status_ok then
|
||||||
|
M.capabilities = cmp_nvim_lsp.default_capabilities()
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
local status_ok, _ = pcall(require, "lspconfig")
|
||||||
|
if not status_ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
require "shnee.lsp.mason"
|
||||||
|
require("shnee.lsp.handlers").setup()
|
||||||
|
require "shnee.lsp.null-ls"
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
local servers = {
|
||||||
|
"bashls",
|
||||||
|
"lua_ls",
|
||||||
|
"pyright",
|
||||||
|
-- TODO Never got this to work
|
||||||
|
"marksman",
|
||||||
|
"jsonls",
|
||||||
|
}
|
||||||
|
|
||||||
|
local settings = {
|
||||||
|
ui = {
|
||||||
|
border = "none",
|
||||||
|
icons = {
|
||||||
|
package_installed = "◍",
|
||||||
|
package_pending = "◍",
|
||||||
|
package_uninstalled = "◍",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
log_level = vim.log.levels.INFO,
|
||||||
|
max_concurrent_installers = 4,
|
||||||
|
}
|
||||||
|
|
||||||
|
require("mason").setup(settings)
|
||||||
|
require("mason-lspconfig").setup({
|
||||||
|
ensure_installed = servers,
|
||||||
|
automatic_installation = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig")
|
||||||
|
if not lspconfig_status_ok then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local opts = {}
|
||||||
|
|
||||||
|
for _, server in pairs(servers) do
|
||||||
|
opts = {
|
||||||
|
on_attach = require("shnee.lsp.handlers").on_attach,
|
||||||
|
capabilities = require("shnee.lsp.handlers").capabilities,
|
||||||
|
}
|
||||||
|
|
||||||
|
server = vim.split(server, "@")[1]
|
||||||
|
|
||||||
|
local require_ok, conf_opts = pcall(require, "shnee.lsp.settings." .. server)
|
||||||
|
if require_ok then
|
||||||
|
opts = vim.tbl_deep_extend("force", conf_opts, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
lspconfig[server].setup(opts)
|
||||||
|
end
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
local null_ls_status_ok, null_ls = pcall(require, "null-ls")
|
||||||
|
if not null_ls_status_ok then
|
||||||
|
print("null-ls not found")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
|
||||||
|
local formatting = null_ls.builtins.formatting
|
||||||
|
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
|
||||||
|
local diagnostics = null_ls.builtins.diagnostics
|
||||||
|
|
||||||
|
null_ls.setup({
|
||||||
|
debug = false,
|
||||||
|
sources = {
|
||||||
|
formatting.prettier.with({
|
||||||
|
extra_args = { "--prose-wrap", "always",
|
||||||
|
"--print-width", "80",
|
||||||
|
}}),
|
||||||
|
formatting.black.with({ extra_args = { "--fast" } }),
|
||||||
|
formatting.stylua,
|
||||||
|
diagnostics.proselint.with({ filetypes = {} }),
|
||||||
|
diagnostics.hadolint,
|
||||||
|
},
|
||||||
|
})
|
||||||
@ -0,0 +1,192 @@
|
|||||||
|
-- Find more schemas here: https://www.schemastore.org/json/
|
||||||
|
local schemas = {
|
||||||
|
{
|
||||||
|
description = "TypeScript compiler configuration file",
|
||||||
|
fileMatch = {
|
||||||
|
"tsconfig.json",
|
||||||
|
"tsconfig.*.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/tsconfig.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Lerna config",
|
||||||
|
fileMatch = { "lerna.json" },
|
||||||
|
url = "https://json.schemastore.org/lerna.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Babel configuration",
|
||||||
|
fileMatch = {
|
||||||
|
".babelrc.json",
|
||||||
|
".babelrc",
|
||||||
|
"babel.config.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/babelrc.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "ESLint config",
|
||||||
|
fileMatch = {
|
||||||
|
".eslintrc.json",
|
||||||
|
".eslintrc",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/eslintrc.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Bucklescript config",
|
||||||
|
fileMatch = { "bsconfig.json" },
|
||||||
|
url = "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/8.2.0/docs/docson/build-schema.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Prettier config",
|
||||||
|
fileMatch = {
|
||||||
|
".prettierrc",
|
||||||
|
".prettierrc.json",
|
||||||
|
"prettier.config.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/prettierrc",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Vercel Now config",
|
||||||
|
fileMatch = { "now.json" },
|
||||||
|
url = "https://json.schemastore.org/now",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Stylelint config",
|
||||||
|
fileMatch = {
|
||||||
|
".stylelintrc",
|
||||||
|
".stylelintrc.json",
|
||||||
|
"stylelint.config.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/stylelintrc",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "A JSON schema for the ASP.NET LaunchSettings.json files",
|
||||||
|
fileMatch = { "launchsettings.json" },
|
||||||
|
url = "https://json.schemastore.org/launchsettings.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Schema for CMake Presets",
|
||||||
|
fileMatch = {
|
||||||
|
"CMakePresets.json",
|
||||||
|
"CMakeUserPresets.json",
|
||||||
|
},
|
||||||
|
url = "https://raw.githubusercontent.com/Kitware/CMake/master/Help/manual/presets/schema.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Configuration file as an alternative for configuring your repository in the settings page.",
|
||||||
|
fileMatch = {
|
||||||
|
".codeclimate.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/codeclimate.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "LLVM compilation database",
|
||||||
|
fileMatch = {
|
||||||
|
"compile_commands.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/compile-commands.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Config file for Command Task Runner",
|
||||||
|
fileMatch = {
|
||||||
|
"commands.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/commands.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment.",
|
||||||
|
fileMatch = {
|
||||||
|
"*.cf.json",
|
||||||
|
"cloudformation.json",
|
||||||
|
},
|
||||||
|
url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/cloudformation.schema.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "The AWS Serverless Application Model (AWS SAM, previously known as Project Flourish) extends AWS CloudFormation to provide a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.",
|
||||||
|
fileMatch = {
|
||||||
|
"serverless.template",
|
||||||
|
"*.sam.json",
|
||||||
|
"sam.json",
|
||||||
|
},
|
||||||
|
url = "https://raw.githubusercontent.com/awslabs/goformation/v5.2.9/schema/sam.schema.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Json schema for properties json file for a GitHub Workflow template",
|
||||||
|
fileMatch = {
|
||||||
|
".github/workflow-templates/**.properties.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/github-workflow-template-properties.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "golangci-lint configuration file",
|
||||||
|
fileMatch = {
|
||||||
|
".golangci.toml",
|
||||||
|
".golangci.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/golangci-lint.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "JSON schema for the JSON Feed format",
|
||||||
|
fileMatch = {
|
||||||
|
"feed.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/feed.json",
|
||||||
|
versions = {
|
||||||
|
["1"] = "https://json.schemastore.org/feed-1.json",
|
||||||
|
["1.1"] = "https://json.schemastore.org/feed.json",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Packer template JSON configuration",
|
||||||
|
fileMatch = {
|
||||||
|
"packer.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/packer.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "NPM configuration file",
|
||||||
|
fileMatch = {
|
||||||
|
"package.json",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/package.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "JSON schema for Visual Studio component configuration files",
|
||||||
|
fileMatch = {
|
||||||
|
"*.vsconfig",
|
||||||
|
},
|
||||||
|
url = "https://json.schemastore.org/vsconfig.json",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description = "Resume json",
|
||||||
|
fileMatch = { "resume.json" },
|
||||||
|
url = "https://raw.githubusercontent.com/jsonresume/resume-schema/v1.0.0/schema.json",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- local function extend(tab1, tab2)
|
||||||
|
-- for _, value in ipairs(tab2 or {}) do
|
||||||
|
-- table.insert(tab1, value)
|
||||||
|
-- end
|
||||||
|
-- return tab1
|
||||||
|
-- end
|
||||||
|
|
||||||
|
local extended_schemas = extend(schemas, default_schemas)
|
||||||
|
|
||||||
|
local opts = {
|
||||||
|
settings = {
|
||||||
|
json = {
|
||||||
|
schemas = schemas,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup = {
|
||||||
|
commands = {
|
||||||
|
Format = {
|
||||||
|
function()
|
||||||
|
vim.lsp.buf.range_formatting({}, { 0, 0 }, { vim.fn.line "$", 0 })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return opts
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
return {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
diagnostics = {
|
||||||
|
globals = { "vim" },
|
||||||
|
},
|
||||||
|
workspace = {
|
||||||
|
library = {
|
||||||
|
[vim.fn.expand("$VIMRUNTIME/lua")] = true,
|
||||||
|
[vim.fn.stdpath("config") .. "/lua"] = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@ -0,0 +1,170 @@
|
|||||||
|
-- This file can be loaded by calling `lua require('plugins')` from your init.vim
|
||||||
|
|
||||||
|
-- Only required if you have packer configured as `opt`
|
||||||
|
vim.cmd [[packadd packer.nvim]]
|
||||||
|
|
||||||
|
return require('packer').startup(function(use)
|
||||||
|
-- Packer can manage itself
|
||||||
|
use 'wbthomason/packer.nvim'
|
||||||
|
|
||||||
|
use 'chriskempson/base16-vim'
|
||||||
|
use({
|
||||||
|
"jackMort/ChatGPT.nvim",
|
||||||
|
config = function()
|
||||||
|
require("chatgpt").setup()
|
||||||
|
end,
|
||||||
|
requires = {
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"nvim-telescope/telescope.nvim"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ansible
|
||||||
|
-- TODO This didnt work. Commented out and trying the Ansible LSP installed
|
||||||
|
-- via Mason instead.
|
||||||
|
-- use 'mfussenegger/nvim-ansible'
|
||||||
|
|
||||||
|
-- copilot stuff
|
||||||
|
use {
|
||||||
|
"zbirenbaum/copilot.lua",
|
||||||
|
--cmd = "Copilot",
|
||||||
|
--event = "InsertEnter",
|
||||||
|
config = function()
|
||||||
|
require("copilot").setup({
|
||||||
|
suggestion = { enabled = false },
|
||||||
|
panel = { enabled = false },
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
use {
|
||||||
|
"zbirenbaum/copilot-cmp",
|
||||||
|
after = { "copilot.lua" },
|
||||||
|
config = function ()
|
||||||
|
require("copilot_cmp").setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
use {
|
||||||
|
"tzachar/cmp-ai",
|
||||||
|
config = function ()
|
||||||
|
require("cmp_ai.config"):setup({
|
||||||
|
max_lines = 1000,
|
||||||
|
provider = 'Ollama',
|
||||||
|
provider_options = {
|
||||||
|
base_url = 'http://192.168.1.100:11434/api/generate',
|
||||||
|
model = 'codellama:13b',
|
||||||
|
prompt = function(lines_before, lines_after)
|
||||||
|
-- require('notify').notify('lines_before: ' .. lines_before, vim.log.levels.INFO, {
|
||||||
|
-- title = 'lines_before',
|
||||||
|
-- })
|
||||||
|
-- require('notify').notify('lines_after: ' .. lines_after, vim.log.levels.INFO, {
|
||||||
|
-- title = 'lines_after',
|
||||||
|
-- })
|
||||||
|
return '<PRE> ' .. lines_before .. ' <SUF>' .. lines_after .. ' <MID>' -- for codellama
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
notify = true,
|
||||||
|
notify_callback = function(msg)
|
||||||
|
-- vim.notify(msg)
|
||||||
|
require('notify').notify(msg, vim.log.levels.INFO, {
|
||||||
|
title = 'ollama',
|
||||||
|
render = 'compact',
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
run_on_every_keystroke = true,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
use 'rcarriga/nvim-notify'
|
||||||
|
|
||||||
|
use 'junegunn/vim-easy-align'
|
||||||
|
|
||||||
|
-- indent guides
|
||||||
|
-- TODO Consider using lukas-reineke/indent-blankline.nvim for this.
|
||||||
|
--
|
||||||
|
-- It would be nice to have these lines toggleable.
|
||||||
|
|
||||||
|
-- This is a generic and configurable sidebar, it's lacking some features that
|
||||||
|
-- I'm looking for. For now I think we're going to use specific plugins for
|
||||||
|
-- tags and file exploring, etc.
|
||||||
|
-- use 'sidebar-nvim/sidebar.nvim'
|
||||||
|
|
||||||
|
use {
|
||||||
|
'nvim-telescope/telescope.nvim', tag = '0.1.2',
|
||||||
|
-- or , branch = '0.1.x',
|
||||||
|
requires = { {'nvim-lua/plenary.nvim'} }
|
||||||
|
}
|
||||||
|
use('nvim-treesitter/nvim-treesitter', { tag = 'v.0.9.0', run = ':TSUpdate' })
|
||||||
|
use 'vim-airline/vim-airline'
|
||||||
|
use 'vim-airline/vim-airline-themes'
|
||||||
|
|
||||||
|
-- git
|
||||||
|
use 'tpope/vim-fugitive'
|
||||||
|
use 'lewis6991/gitsigns.nvim'
|
||||||
|
|
||||||
|
-- tagbar
|
||||||
|
--
|
||||||
|
-- I'm not in love with either of these. Symbols-outline has a ton of info but
|
||||||
|
-- there isn't any kind of sorting or filtering. Aerial is only showing
|
||||||
|
-- functions for me although it's supposed to show variables too.
|
||||||
|
use {
|
||||||
|
'simrat39/symbols-outline.nvim',
|
||||||
|
config = function() require'symbols-outline'.setup{} end,
|
||||||
|
}
|
||||||
|
use {
|
||||||
|
'stevearc/aerial.nvim',
|
||||||
|
config = function()
|
||||||
|
require('aerial').setup({
|
||||||
|
-- filter_kind = false,
|
||||||
|
filter_kind = { "Class", "Function", "Method, Variable" },
|
||||||
|
}) end
|
||||||
|
}
|
||||||
|
|
||||||
|
use {
|
||||||
|
'folke/todo-comments.nvim',
|
||||||
|
requires = "nvim-lua/plenary.nvim",
|
||||||
|
}
|
||||||
|
use 'folke/trouble.nvim'
|
||||||
|
-- TODO REM have to make icons optional.
|
||||||
|
use {
|
||||||
|
'nvim-tree/nvim-web-devicons',
|
||||||
|
config = function()
|
||||||
|
require'nvim-web-devicons'.setup {
|
||||||
|
color_icons = true;
|
||||||
|
default = true;
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
use {
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
config = function()
|
||||||
|
vim.o.timeout = true
|
||||||
|
vim.o.timeoutlen = 300
|
||||||
|
require("which-key").setup {
|
||||||
|
-- your configuration comes here
|
||||||
|
-- or leave it empty to use the default settings
|
||||||
|
-- refer to the configuration section below
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- cmp plugins
|
||||||
|
use "hrsh7th/nvim-cmp" -- The completion plugin
|
||||||
|
use "hrsh7th/cmp-buffer" -- buffer completions
|
||||||
|
use "hrsh7th/cmp-path" -- path completions
|
||||||
|
use "hrsh7th/cmp-cmdline" -- cmdline completions
|
||||||
|
use "saadparwaiz1/cmp_luasnip" -- snippet completions
|
||||||
|
use "hrsh7th/cmp-nvim-lsp"
|
||||||
|
use "hrsh7th/cmp-nvim-lua"
|
||||||
|
|
||||||
|
-- snippets
|
||||||
|
use "L3MON4D3/LuaSnip" --snippet engine
|
||||||
|
use "rafamadriz/friendly-snippets" -- a bunch of snippets to use
|
||||||
|
|
||||||
|
-- lsp
|
||||||
|
use "neovim/nvim-lspconfig"
|
||||||
|
use "williamboman/mason.nvim"
|
||||||
|
use "williamboman/mason-lspconfig.nvim"
|
||||||
|
use 'jose-elias-alvarez/null-ls.nvim'
|
||||||
|
|
||||||
|
end)
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
-- vim.g.mapleader = ','
|
||||||
|
|
||||||
|
--remap space as leader key
|
||||||
|
vim.api.nvim_set_keymap("", "<Space>", "<Nop>", opts)
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.maplocalleader = " "
|
||||||
|
|
||||||
|
-- navigate buffers
|
||||||
|
vim.api.nvim_set_keymap("n", "<s-l>", ":bnext<cr>", opts)
|
||||||
|
vim.api.nvim_set_keymap("n", "<S-h>", ":bprevious<CR>", opts)
|
||||||
|
|
||||||
|
-- visual --
|
||||||
|
-- stay in indent mode
|
||||||
|
vim.api.nvim_set_keymap("v", "<", "<gv", opts)
|
||||||
|
vim.api.nvim_set_keymap("v", ">", ">gv", opts)
|
||||||
|
|
||||||
|
-- move text up and down
|
||||||
|
vim.api.nvim_set_keymap("v", "<A-j>", ":m .+1<CR>==", opts)
|
||||||
|
vim.api.nvim_set_keymap("v", "<A-k>", ":m .-2<CR>==", opts)
|
||||||
|
-- keep yanked text in the register even after you paste in visual mode.
|
||||||
|
vim.api.nvim_set_keymap("v", "p", '"_dP', opts)
|
||||||
|
|
||||||
|
-- visual block --
|
||||||
|
-- move text up and down
|
||||||
|
-- TODO not super sure what the difference between these are... Got these from
|
||||||
|
-- https://github.com/LunarVim/Neovim-from-scratch
|
||||||
|
-- branch: 02-keymaps, commit: e1ac274
|
||||||
|
vim.api.nvim_set_keymap("x", "J", ":move '>+1<CR>gv-gv", opts)
|
||||||
|
vim.api.nvim_set_keymap("x", "K", ":move '<-2<CR>gv-gv", opts)
|
||||||
|
vim.api.nvim_set_keymap("x", "<A-j>", ":move '>+1<CR>gv-gv", opts)
|
||||||
|
vim.api.nvim_set_keymap("x", "<A-k>", ":move '<-2<CR>gv-gv", opts)
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
vim.opt.nu = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
|
||||||
|
vim.opt.textwidth = 80
|
||||||
|
vim.opt.wrap = false
|
||||||
|
|
||||||
|
vim.opt.spell = true
|
||||||
|
|
||||||
|
-- search highlighting
|
||||||
|
vim.opt.hlsearch = false
|
||||||
|
vim.opt.incsearch = true
|
||||||
|
|
||||||
|
vim.opt.mouse = "a"
|
||||||
|
|
||||||
|
-- Adds '-' to the list of characters that are considered part of a word.
|
||||||
|
vim.opt.iskeyword:append("-")
|
||||||
|
|
||||||
|
-- This should allow seamless copy/paste between vim and the system clipboard
|
||||||
|
-- with both ctrl-c/ctrl-v and middle mouse button.
|
||||||
|
vim.opt.clipboard = { "unnamedplus", "unnamed" }
|
||||||
|
|
||||||
|
vim.opt.swapfile = false
|
||||||
|
|
||||||
|
-- time to wait for a mapped sequence to complete (in milliseconds)
|
||||||
|
vim.opt.timeoutlen = 1000
|
||||||
|
|
||||||
|
-- enable persistent undo
|
||||||
|
vim.opt.undofile = true
|
||||||
|
|
||||||
|
-- faster completion (4000ms default)
|
||||||
|
vim.opt.updatetime = 300
|
||||||
|
|
||||||
|
vim.opt.scrolloff = 8
|
||||||
|
-- I don't think we want the sidescroll option. This causes the view to shift to
|
||||||
|
-- the right when the cursor is near the right edge of the screen, even if there
|
||||||
|
-- is no text to the right of the cursor. So as long as we obey good line
|
||||||
|
-- lengths this should not be needed.
|
||||||
|
-- vim.opt.sidescrolloff = 8
|
||||||
|
|
||||||
|
-- spellfiles
|
||||||
|
--
|
||||||
|
-- TODO Currently the default 'add' spellfile is in source control. It would
|
||||||
|
-- probably be better to put those words in a different file and add it in this
|
||||||
|
-- config.
|
||||||
|
--
|
||||||
|
-- In vimscript this would maybe look like:
|
||||||
|
-- set spellfile+=shnee.utf-8.add
|
||||||
|
-- or
|
||||||
|
-- set spelllang+=shnee
|
||||||
|
--
|
||||||
|
-- Not sure hot do this in lua yet.
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
-- splits
|
||||||
|
vim.opt.splitbelow = true
|
||||||
|
vim.opt.splitright = true
|
||||||
|
vim.api.nvim_set_keymap('n', '<C-_>', ':split<CR>', opts);
|
||||||
|
vim.api.nvim_set_keymap('n', '<C-\\>', ':vsplit<CR>', opts);
|
||||||
|
|
||||||
|
-- window navigation
|
||||||
|
vim.api.nvim_set_keymap('n', '<C-J>', '<C-W><C-J>', opts);
|
||||||
|
vim.api.nvim_set_keymap('n', '<C-K>', '<C-W><C-K>', opts);
|
||||||
|
vim.api.nvim_set_keymap('n', '<C-L>', '<C-W><C-L>', opts);
|
||||||
|
vim.api.nvim_set_keymap('n', '<C-H>', '<C-W><C-H>', opts);
|
||||||
|
|
||||||
|
-- resize with arrows
|
||||||
|
vim.api.nvim_set_keymap("n", "<C-Up>", ":resize +2<CR>", opts)
|
||||||
|
vim.api.nvim_set_keymap("n", "<C-Down>", ":resize -2<CR>", opts)
|
||||||
|
vim.api.nvim_set_keymap("n", "<C-Left>", ":vertical resize -2<CR>", opts)
|
||||||
|
vim.api.nvim_set_keymap("n", "<C-Right>", ":vertical resize +2<CR>", opts)
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
AWS
|
||||||
|
Artifactory
|
||||||
|
EC2
|
||||||
|
GitLab
|
||||||
|
MSS
|
||||||
|
Peraton
|
||||||
|
RHEL
|
||||||
|
VPCs
|
||||||
|
args
|
||||||
|
config
|
||||||
|
gitlab
|
||||||
|
json
|
||||||
|
off
|
||||||
|
popup
|
||||||
|
stdout
|
||||||
|
tmp
|
||||||
|
url
|
||||||
|
api
|
||||||
|
auth
|
||||||
|
params
|
||||||
|
Dockerfile
|
||||||
|
Dockerfiles
|
||||||
|
ANDSAS
|
||||||
Binary file not shown.
Loading…
Reference in New Issue