You've already forked dotfiles
Merge branch 'main' into development
This commit is contained in:
1
nvim/after/ftplugin/r.lua
Normal file
1
nvim/after/ftplugin/r.lua
Normal file
@@ -0,0 +1 @@
|
||||
vim.bo.shiftwidth=2
|
||||
@@ -1,9 +0,0 @@
|
||||
return {
|
||||
cmd = {
|
||||
"arduino-language-server",
|
||||
"-clangd", "/usr/lib/llvm/21/bin/clangd",
|
||||
"-cli", "/usr/bin/arduino-cli",
|
||||
"-cli-config", "~/.arduino15/arduino-cli.yaml",
|
||||
"-fqbn", "esp32:esp32:adafruit_qtpy_esp32s3_nopsram"
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,10 @@
|
||||
return {
|
||||
filetypes = { 'zsh', 'bash', 'sh' }
|
||||
cmd = { 'bash-language-server', 'start' },
|
||||
settings = {
|
||||
bashIde = {
|
||||
globPattern = vim.env.GLOB_PATTERN or '*@(.sh|.inc|.bash|.command)',
|
||||
},
|
||||
},
|
||||
filetypes = { 'zsh', 'bash', 'sh' },
|
||||
root_markers = { '.git' },
|
||||
}
|
||||
|
||||
91
nvim/after/lsp/clangd.lua
Normal file
91
nvim/after/lsp/clangd.lua
Normal file
@@ -0,0 +1,91 @@
|
||||
-- https://clangd.llvm.org/extensions.html#switch-between-sourceheader
|
||||
local function switch_source_header(bufnr, client)
|
||||
local method_name = 'textDocument/switchSourceHeader'
|
||||
---@diagnostic disable-next-line:param-type-mismatch
|
||||
if not client or not client:supports_method(method_name) then
|
||||
return vim.notify(('method %s is not supported by any servers active on the current buffer'):format(method_name))
|
||||
end
|
||||
local params = vim.lsp.util.make_text_document_params(bufnr)
|
||||
---@diagnostic disable-next-line:param-type-mismatch
|
||||
client:request(method_name, params, function(err, result)
|
||||
if err then
|
||||
error(tostring(err))
|
||||
end
|
||||
if not result then
|
||||
vim.notify('corresponding file cannot be determined')
|
||||
return
|
||||
end
|
||||
vim.cmd.edit(vim.uri_to_fname(result))
|
||||
end, bufnr)
|
||||
end
|
||||
|
||||
local function symbol_info(bufnr, client)
|
||||
local method_name = 'textDocument/symbolInfo'
|
||||
---@diagnostic disable-next-line:param-type-mismatch
|
||||
if not client or not client:supports_method(method_name) then
|
||||
return vim.notify('Clangd client not found', vim.log.levels.ERROR)
|
||||
end
|
||||
local win = vim.api.nvim_get_current_win()
|
||||
local params = vim.lsp.util.make_position_params(win, client.offset_encoding)
|
||||
---@diagnostic disable-next-line:param-type-mismatch
|
||||
client:request(method_name, params, function(err, res)
|
||||
if err or #res == 0 then
|
||||
-- Clangd always returns an error, there is no reason to parse it
|
||||
return
|
||||
end
|
||||
local container = string.format('container: %s', res[1].containerName) ---@type string
|
||||
local name = string.format('name: %s', res[1].name) ---@type string
|
||||
vim.lsp.util.open_floating_preview({ name, container }, '', {
|
||||
height = 2,
|
||||
width = math.max(string.len(name), string.len(container)),
|
||||
focusable = false,
|
||||
focus = false,
|
||||
title = 'Symbol Info',
|
||||
})
|
||||
end, bufnr)
|
||||
end
|
||||
|
||||
---@class ClangdInitializeResult: lsp.InitializeResult
|
||||
---@field offsetEncoding? string
|
||||
|
||||
---@type vim.lsp.Config
|
||||
return {
|
||||
cmd = { 'clangd' },
|
||||
filetypes = { 'c', 'c.doxygen', 'cpp', 'cpp.doxygen', 'objc', 'objcpp', 'cuda' },
|
||||
root_markers = {
|
||||
'.clangd',
|
||||
'.clang-tidy',
|
||||
'.clang-format',
|
||||
'compile_commands.json',
|
||||
'compile_flags.txt',
|
||||
'configure.ac', -- AutoTools
|
||||
'.git',
|
||||
},
|
||||
get_language_id = function(_, ftype)
|
||||
local t = { objc = 'objective-c', objcpp = 'objective-cpp', cuda = 'cuda-cpp' }
|
||||
return t[ftype] or ftype
|
||||
end,
|
||||
capabilities = {
|
||||
textDocument = {
|
||||
completion = {
|
||||
editsNearCursor = true,
|
||||
},
|
||||
},
|
||||
offsetEncoding = { 'utf-8', 'utf-16' },
|
||||
},
|
||||
---@param init_result ClangdInitializeResult
|
||||
on_init = function(client, init_result)
|
||||
if init_result.offsetEncoding then
|
||||
client.offset_encoding = init_result.offsetEncoding
|
||||
end
|
||||
end,
|
||||
on_attach = function(client, bufnr)
|
||||
vim.api.nvim_buf_create_user_command(bufnr, 'LspClangdSwitchSourceHeader', function()
|
||||
switch_source_header(bufnr, client)
|
||||
end, { desc = 'Switch between source/header' })
|
||||
|
||||
vim.api.nvim_buf_create_user_command(bufnr, 'LspClangdShowSymbolInfo', function()
|
||||
symbol_info(bufnr, client)
|
||||
end, { desc = 'Show symbol info' })
|
||||
end,
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
return {
|
||||
cmd = vim.lsp.rpc.connect('127.0.0.1', 6005),
|
||||
filetypes = {
|
||||
'gd', 'gdscript', 'gdscript3'
|
||||
},
|
||||
root_markers = { 'project.godot', '.git' },
|
||||
cmd = vim.lsp.rpc.connect('127.0.0.1', 6005)
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
return {
|
||||
template_extension = { 'html', 'jinja', 'j2', 'tera' }
|
||||
}
|
||||
15
nvim/after/lsp/jinja_lsp.lua
Normal file
15
nvim/after/lsp/jinja_lsp.lua
Normal file
@@ -0,0 +1,15 @@
|
||||
vim.filetype.add {
|
||||
extension = {
|
||||
-- tera = 'jinja',
|
||||
jinja = 'jinja',
|
||||
jinja2 = 'jinja',
|
||||
j2 = 'jinja',
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
name = 'jinja_lsp',
|
||||
cmd = { 'jinja-lsp' },
|
||||
filetypes = { 'jinja', 'tera', 'html' },
|
||||
-- template_extension = { 'html', 'jinja', 'j2', 'tera' },
|
||||
}
|
||||
@@ -1,19 +1,28 @@
|
||||
return {
|
||||
cmd = { 'pylsp' },
|
||||
filetypes = { 'python' },
|
||||
root_markers = {
|
||||
'pyproject.toml',
|
||||
'setup.py',
|
||||
'setup.cfg',
|
||||
'requirements.txt',
|
||||
'Pipfile',
|
||||
'.git',
|
||||
},
|
||||
settings = {
|
||||
pylsp = {
|
||||
plugins = {
|
||||
pycodestyle = {
|
||||
enabled = false,
|
||||
enabled = true,
|
||||
ignore = {
|
||||
'E501'
|
||||
'E501' -- line-too-long
|
||||
},
|
||||
maxLineLength = 120,
|
||||
},
|
||||
pylint = {
|
||||
enabled = true,
|
||||
args = {
|
||||
'--disable=line-too-long',
|
||||
'--disable=missing-function-docstring'
|
||||
'--disable=line-too-long,import-error',
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,43 @@
|
||||
-- Autocommands for handling large files and switching between large file buffers and others
|
||||
local largefile_group = vim.api.nvim_create_augroup('largefile', { clear = true })
|
||||
local max_filesize = 4 * (1024 * 1024) -- 4 MB
|
||||
|
||||
local old_eventignore = false
|
||||
|
||||
-- Disables syntax, treesitter and folding on larger files
|
||||
vim.api.nvim_create_autocmd({ 'BufReadPre' }, {
|
||||
pattern = '*',
|
||||
group = vim.api.nvim_create_augroup('largefile', { clear = true }),
|
||||
callback = function(args)
|
||||
local max_filesize_MiB = 1
|
||||
group = largefile_group,
|
||||
callback = function(ev)
|
||||
if ev.file then
|
||||
local status, size = pcall(function() return vim.loop.fs_stat(ev.file).size end)
|
||||
if status and size > max_filesize then
|
||||
old_eventignore = vim.o.eventignore
|
||||
vim.o.eventignore = 'FileType' -- Reduce the calls for filetype specific plugins or syntax highlighting
|
||||
|
||||
local _, stats = pcall(function()
|
||||
return vim.loop.fs_stat(vim.api.nvim_buf_get_name(args.buf))
|
||||
end)
|
||||
|
||||
local file_size = math.floor(0.5 + (stats.size / (1024 * 1024)))
|
||||
|
||||
if file_size > max_filesize_MiB then
|
||||
print(string.format('File detected above %sMiB. Disabling syntax, treesitter, and folding.', max_filesize_MiB))
|
||||
vim.api.nvim_command('set foldmethod=manual')
|
||||
vim.api.nvim_command('set noswapfile')
|
||||
vim.api.nvim_command('set noundofile')
|
||||
vim.api.nvim_command('set noloadplugins')
|
||||
vim.b[ev.buf].is_large_file = true
|
||||
vim.bo['bufhidden'] = 'unload'
|
||||
vim.bo['buftype'] = 'nowrite'
|
||||
vim.bo['swapfile'] = false
|
||||
vim.bo['undofile'] = false
|
||||
vim.bo['undolevels'] = -1
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ 'BufWinEnter' }, {
|
||||
group = largefile_group,
|
||||
callback = function(ev)
|
||||
if old_eventignore ~= false then
|
||||
vim.o.eventignore = old_eventignore -- Restore the old setting
|
||||
old_eventignore = false
|
||||
end
|
||||
if vim.b[ev.buf].is_large_file then
|
||||
vim.wo.wrap = false
|
||||
else
|
||||
vim.wo.wrap = vim.o.wrap -- Restore to default setting
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- End large file handling
|
||||
|
||||
@@ -10,7 +10,7 @@ end, { nargs = '*' })
|
||||
vim.api.nvim_create_user_command('TreeSitterInstall', function(opts)
|
||||
for index, value in ipairs(opts.fargs) do
|
||||
if index > 0 then
|
||||
local result = vim.system({ 'luarocks', 'install', 'tree-sitter-' .. value }, { text = true }):wait()
|
||||
local result = vim.system({ 'luarocks', '--local', '--lua-version', '5.1', 'install', 'tree-sitter-' .. value }, { text = true }):wait()
|
||||
|
||||
if result.code == 0 then
|
||||
print('Completed install of tree-sitter-' .. value)
|
||||
|
||||
@@ -66,3 +66,10 @@ vim.keymap.set('n', '<leader>eo', ':Lexplore<CR>', options)
|
||||
|
||||
-- Allow for leaving Terminal mode using the escape key instead of the odd default
|
||||
vim.keymap.set('t', '<Esc>', '<C-\\><C-n>')
|
||||
|
||||
local sc = require('statuscolumn')
|
||||
vim.keymap.set('n', '<leader>q', function ()
|
||||
print('woot')
|
||||
sc.show_both_nums = not sc.show_both_nums
|
||||
vim.opt.statuscolumn = "%!v:lua.require('statuscolumn').statusColumn()"
|
||||
end)
|
||||
|
||||
@@ -14,11 +14,10 @@ vim.schedule(function()
|
||||
require('plugins.telescope') -- Floating window fuzzy searching different sources
|
||||
require('plugins.telekasten') -- Note taking plugin
|
||||
require('plugins.mason') -- LSP and DAP manager
|
||||
-- require('plugins.twilight') -- Focus mode, dim lines around the cursor's location
|
||||
require('plugins.render-markdown') -- Render markdown directly in neovim
|
||||
|
||||
vim.pack.add({
|
||||
'https://github.com/windwp/nvim-autopairs', -- Autocomplete symbol pairs when typing
|
||||
'https://github.com/windwp/nvim-autopairs', -- Autocomplete symbol pairs when typing TODO: disabled for now, using snippets instead. remove if that feels better
|
||||
'https://github.com/tpope/vim-surround', -- Change surrounding characters (doesn't need setup called)
|
||||
'https://github.com/tpope/vim-fugitive', -- _The_ Git integration plugin people have been using forever
|
||||
'https://github.com/habamax/vim-godot' -- Godot specific bindings and debug
|
||||
@@ -30,5 +29,4 @@ vim.schedule(function()
|
||||
|
||||
-- Experimental
|
||||
-- require('plugins.note_taking') -- In house note taking plugin (TODO: rename once the plugin name is solidified)
|
||||
-- require('plugins.nvim-lint') -- Linter loader
|
||||
end)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
-- Treesitter
|
||||
local rocks_path = os.getenv('HOME') .. "/.luarocks/lib/luarocks/rocks-5.1"
|
||||
|
||||
-- Pick up the installed
|
||||
-- Pick up the installed parsers in the install dir
|
||||
for _, parser_dir in ipairs(vim.fn.glob(rocks_path .. '/tree-sitter-*/*/', true, true)) do
|
||||
vim.opt.runtimepath:prepend(parser_dir)
|
||||
end
|
||||
@@ -9,7 +9,6 @@ end
|
||||
-- Start treesitter parsing on the current buffer
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
callback = function(ev)
|
||||
-- Use pcall to prevent blocking errors
|
||||
pcall(vim.treesitter.start, ev.buf)
|
||||
end
|
||||
})
|
||||
@@ -53,12 +52,11 @@ vim.api.nvim_create_autocmd('LspAttach', {
|
||||
-- end,
|
||||
-- })
|
||||
|
||||
-- Keyboard Mappings
|
||||
local bufnr = args.buf
|
||||
|
||||
local bufopts = { noremap = true, silent = true, buffer = bufnr }
|
||||
vim.keymap.set('n', '<C-[>', vim.diagnostic.goto_prev, bufopts)
|
||||
vim.keymap.set('n', '<C-]>', vim.diagnostic.goto_next, bufopts)
|
||||
|
||||
vim.keymap.set('n', '<C-[>', function() vim.diagnostic.jump({ count = -1, float = true }) end, bufopts)
|
||||
vim.keymap.set('n', '<C-]>', function() vim.diagnostic.jump({ count = 1, float = true }) end, bufopts)
|
||||
vim.keymap.set('n', 'ga', vim.lsp.buf.code_action, bufopts)
|
||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
||||
@@ -74,5 +72,14 @@ vim.api.nvim_create_autocmd('LspAttach', {
|
||||
})
|
||||
|
||||
-- Enable LSP engines
|
||||
-- vim.lsp.enable('clangd')
|
||||
vim.lsp.enable('gdscript')
|
||||
local enabled_lsps = {
|
||||
'clangd',
|
||||
'gdscript',
|
||||
'jinja_lsp',
|
||||
'pylsp',
|
||||
'r_language_server',
|
||||
}
|
||||
|
||||
for _, lsp in pairs(enabled_lsps) do
|
||||
vim.lsp.enable(lsp)
|
||||
end
|
||||
|
||||
@@ -7,7 +7,6 @@ local function get_schema()
|
||||
end
|
||||
|
||||
vim.pack.add({
|
||||
-- 'https://github.com/nvim-tree/nvim-web-devicons',
|
||||
'https://github.com/nvim-lualine/lualine.nvim'
|
||||
})
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
vim.pack.add({
|
||||
-- 'https://github.com/saadparwaiz1/cmp_luasnip',
|
||||
'https://github.com/saadparwaiz1/cmp_luasnip',
|
||||
'https://github.com/rafamadriz/friendly-snippets',
|
||||
'https://github.com/L3MON4D3/LuaSnip'
|
||||
})
|
||||
@@ -18,7 +18,8 @@ local function luasnip_dependency_update()
|
||||
if out.code == 0 then
|
||||
vim.notify('LuaSnip jsregexp built successfully!', vim.log.levels.INFO)
|
||||
else
|
||||
vim.notify('Failed to build LuaSnip jsregexp:\n' .. (out.stderr or out.stdout or ''), vim.log.levels.ERROR)
|
||||
vim.notify('Failed to build LuaSnip jsregexp:\n' .. (out.stderr or out.stdout or ''),
|
||||
vim.log.levels.ERROR)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
@@ -42,6 +43,6 @@ require('luasnip.loaders.from_vscode').lazy_load()
|
||||
require('luasnip.loaders.from_lua').lazy_load({ paths = "./snippets" })
|
||||
|
||||
-- TODO: Figure out keymappings that make sense
|
||||
vim.keymap.set({ 'i' }, '<C-k>', function() require('luasnip').expand() end, { silent = true })
|
||||
vim.keymap.set({ 'i', 's' }, '<C-l>', function() require('luasnip').jump(1) end, { silent = true })
|
||||
vim.keymap.set({ 'i', 's' }, '<C-j>', function() require('luasnip').jump(-1) end, { silent = true })
|
||||
vim.keymap.set({ 'i' }, '<C-K>', function() require('luasnip').expand() end, { silent = true })
|
||||
vim.keymap.set({ 'i', 's' }, '<C-L>', function() require('luasnip').jump(1) end, { silent = true })
|
||||
vim.keymap.set({ 'i', 's' }, '<C-H>', function() require('luasnip').jump(-1) end, { silent = true })
|
||||
|
||||
@@ -16,7 +16,6 @@ require('mason-lspconfig').setup {
|
||||
'marksman', -- markdown
|
||||
'pylsp', -- Python
|
||||
'rust_analyzer', -- Rust
|
||||
'ts_ls', -- Typscript
|
||||
'yamlls', -- YAML
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
vim.pack.add({
|
||||
'https://github.com/kevinhwang91/nvim-bqf',
|
||||
'https://github.com/nvim-telescope/telescope-file-browser.nvim',
|
||||
-- 'https://github.com/kevinhwang91/nvim-bqf',
|
||||
'https://github.com/nvim-lua/plenary.nvim',
|
||||
'https://github.com/nvim-telescope/telescope.nvim',
|
||||
})
|
||||
@@ -23,9 +22,7 @@ require('telescope').setup {
|
||||
layout_config = { prompt_position = 'bottom' },
|
||||
-- layout_strategy = 'vertical',
|
||||
mappings = {
|
||||
i = {
|
||||
['<ESC>'] = require('telescope.actions').close,
|
||||
},
|
||||
i = { ['<ESC>'] = require('telescope.actions').close, },
|
||||
},
|
||||
prompt_prefix = ' ',
|
||||
results_title = false,
|
||||
@@ -35,7 +32,6 @@ require('telescope').setup {
|
||||
},
|
||||
pickers = {
|
||||
diagnostics = {
|
||||
-- theme = 'ivy',
|
||||
initial_mode = 'normal',
|
||||
layout_config = {
|
||||
preview_cutoff = 9999,
|
||||
@@ -46,18 +42,12 @@ require('telescope').setup {
|
||||
|
||||
local builtin = require('telescope.builtin')
|
||||
|
||||
vim.keymap.set('n', ';f', function()
|
||||
builtin.find_files({
|
||||
no_ignore = false,
|
||||
hidden = true,
|
||||
})
|
||||
end)
|
||||
|
||||
vim.keymap.set('n', ';r', function() builtin.live_grep() end)
|
||||
vim.keymap.set('n', ';b', function() builtin.buffers() end)
|
||||
vim.keymap.set('n', ';h', function() builtin.help_tags() end)
|
||||
vim.keymap.set('n', ';;', function() builtin.resume() end)
|
||||
vim.keymap.set('n', ';b', function() builtin.buffers() end)
|
||||
vim.keymap.set('n', ';d', function() builtin.diagnostics() end)
|
||||
vim.keymap.set('n', ';t', function() builtin.treesitter() end)
|
||||
vim.keymap.set('n', ';f', function() builtin.find_files({ no_ignore = false, hidden = true }) end)
|
||||
vim.keymap.set('n', ';h', function() builtin.help_tags() end)
|
||||
vim.keymap.set('n', ';r', function() builtin.live_grep() end)
|
||||
vim.keymap.set('n', ';s', function() builtin.lsp_document_symbols() end)
|
||||
vim.keymap.set('n', ';t', function() builtin.treesitter() end)
|
||||
vim.keymap.set('n', ';w', function() builtin.lsp_dynamic_workspace_symbols() end)
|
||||
|
||||
@@ -1,47 +1,46 @@
|
||||
-- Experimental
|
||||
-- vim.o.autocomplete = true
|
||||
|
||||
vim.opt.background = 'dark' -- Force a dark background for the colorscheme
|
||||
vim.opt.clipboard = 'unnamed,unnamedplus' -- Use both the "*" and "+" registers for yanks and deletes (puts things in the system clipboard)
|
||||
vim.opt.completeopt = 'fuzzy,menuone,noinsert,popup' -- Change how the completion menu is interacted with and displays
|
||||
vim.opt.cursorcolumn = true -- Highlight the column the cursor is on
|
||||
vim.opt.cursorline = true -- Highlight the line the cursor is on.
|
||||
vim.opt.expandtab = true -- Expand tabs into spaces
|
||||
vim.opt.fileformat = 'unix' -- Explicitly state that files should use the unix style EOL characters.
|
||||
-- vim.opt.fillchars = 'fold: ' -- Sets the character that fills in a fold line (removes the dots)
|
||||
vim.opt.foldcolumn = '0' -- Disables the foldcolumn
|
||||
vim.opt.foldexpr = 'v:lua.vim.treesitter.foldexpr()' -- Uses Treesitter to determine where code folding should occur
|
||||
vim.opt.foldlevel = 10 -- Sets the initial level at which folds will be closed
|
||||
vim.opt.foldlevelstart = 4 -- Sets the initial fold level
|
||||
vim.opt.foldmethod = 'expr' -- Attempt to use the syntax of a file to set folds.
|
||||
vim.opt.foldnestmax = 4 -- Maximum level of fold nesting
|
||||
vim.opt.formatoptions = 'cqrto' -- Allow auto insertion of comment lines when using o or O on a comment.
|
||||
vim.opt.ignorecase = true -- Case-insensitive searching
|
||||
vim.opt.list = true -- Show the listchars
|
||||
vim.opt.listchars = 'tab:|·,trail:¬,extends:»,precedes:«,nbsp:+' -- Characters to display when showing whitespace
|
||||
vim.opt.mouse = 'a' -- Enable mouse mode
|
||||
vim.opt.number = true -- Show the line number in the gutter.
|
||||
vim.opt.pumheight = 15 -- Maximum height of the auto complete floating window
|
||||
vim.opt.relativenumber = true -- Relative line number
|
||||
vim.opt.sidescrolloff = 8 -- Side scrolling leadoff to keep the cursor a few characters from the screen edge instead of going all the way to it
|
||||
vim.opt.shiftround = true -- Round indentation to shiftwidth
|
||||
vim.opt.shiftwidth = 4 -- Number of spaces a tab counts for when converting tabs to spaces
|
||||
vim.opt.shortmess = 'at' -- Abbreviations and truncation of cmd messages
|
||||
vim.opt.showmatch = true -- Show matching bracket
|
||||
vim.opt.signcolumn = 'yes' -- Always show the gutter
|
||||
vim.opt.smartcase = true -- Keeps searches Case-insensitive until the search has an upper case character
|
||||
vim.opt.smartindent = true -- Attempt to insert indentation to fit traditional languages.
|
||||
vim.opt.softtabstop = 4 -- Number of spaces a tab counts for when converting tabs to spaces
|
||||
vim.opt.splitbelow = true -- Split windows below when horizontal splitting
|
||||
vim.opt.splitright = true -- Split windows right when vertical splitting
|
||||
vim.opt.swapfile = false -- Disable the creation of swap files for open files
|
||||
vim.opt.tabstop = 4 -- Setting the value of spaces per tab
|
||||
vim.opt.termguicolors = true -- Enable the truecolor GUI colors in a terminal
|
||||
vim.opt.undodir = os.getenv('HOME') .. '/.config/nvim/undodir' -- Set a specific undo file directory
|
||||
vim.opt.undofile = true -- Enable undo files
|
||||
vim.opt.updatetime = 300 -- Swapfile update time in milliseconds
|
||||
vim.opt.wrap = false -- Do _not_ wrap lines
|
||||
vim.opt.background = 'dark' -- Force a dark background for the colorscheme
|
||||
vim.opt.clipboard = 'unnamed,unnamedplus' -- Use both the "*" and "+" registers for yanks and deletes (puts things in the system clipboard)
|
||||
vim.opt.completeopt = 'fuzzy,menuone,noinsert,popup' -- Change how the completion menu is interacted with and displays
|
||||
vim.opt.cursorcolumn = true -- Highlight the column the cursor is on
|
||||
vim.opt.cursorline = true -- Highlight the line the cursor is on.
|
||||
vim.opt.expandtab = true -- Expand tabs into spaces
|
||||
vim.opt.fileformat = 'unix' -- Explicitly state that files should use the unix style EOL characters.
|
||||
vim.opt.fillchars = 'fold: ' -- Sets the character that fills in a fold line (removes the dots)
|
||||
vim.opt.foldcolumn = '0' -- Disables the foldcolumn
|
||||
vim.opt.foldexpr = 'v:lua.vim.treesitter.foldexpr()' -- Uses Treesitter to determine where code folding should occur
|
||||
vim.opt.foldlevelstart = 4 -- Sets the initial fold level
|
||||
vim.opt.foldmethod = 'expr' -- Attempt to use the syntax of a file to set folds.
|
||||
vim.opt.foldnestmax = 4 -- Maximum level of fold nesting
|
||||
vim.opt.formatoptions = 'cqrto' -- Allow auto insertion of comment lines when using o or O on a comment.
|
||||
vim.opt.ignorecase = true -- Case-insensitive searching
|
||||
vim.opt.list = true -- Show the listchars
|
||||
vim.opt.listchars = 'tab:|·,trail:¬,extends:»,precedes:«,nbsp:+' -- Characters to display when showing whitespace
|
||||
vim.opt.mouse = 'a' -- Enable mouse mode
|
||||
vim.opt.number = true -- Show the line number in the gutter.
|
||||
vim.opt.pumheight = 15 -- Maximum height of the auto complete floating window
|
||||
vim.opt.relativenumber = true -- Show the relative line numbers
|
||||
vim.opt.sidescrolloff = 8 -- Side scrolling leadoff to keep the cursor a few characters from the screen edge instead of going all the way to it
|
||||
vim.opt.shiftround = true -- Round indentation to shiftwidth
|
||||
vim.opt.shiftwidth = 4 -- Number of spaces a tab counts for when converting tabs to spaces
|
||||
vim.opt.shortmess = 'at' -- Abbreviations and truncation of cmd messages
|
||||
vim.opt.showmatch = true -- Show matching bracket
|
||||
vim.opt.signcolumn = 'yes' -- Always show the gutter
|
||||
vim.opt.smartcase = true -- Keeps searches Case-insensitive until the search has an upper case character
|
||||
vim.opt.smartindent = true -- Attempt to insert indentation to fit traditional languages.
|
||||
vim.opt.softtabstop = 4 -- Number of spaces a tab counts for when converting tabs to spaces
|
||||
vim.opt.splitbelow = true -- Split windows below when horizontal splitting
|
||||
vim.opt.splitright = true -- Split windows right when vertical splitting
|
||||
vim.opt.swapfile = false -- Disable the creation of swap files for open files
|
||||
vim.opt.tabstop = 4 -- Setting the value of spaces per tab
|
||||
vim.opt.termguicolors = true -- Enable the truecolor GUI colors in a terminal
|
||||
vim.opt.undodir = os.getenv('HOME') .. '/.config/nvim/undodir' -- Set a specific undo file directory
|
||||
vim.opt.undofile = true -- Enable undo files
|
||||
vim.opt.updatetime = 300 -- Swapfile update time in milliseconds
|
||||
vim.opt.wrap = false -- Do _not_ wrap lines
|
||||
|
||||
vim.g.netrw_banner = 0
|
||||
vim.g.netrw_liststyle = 3 -- Use the tree style display for netrw directory listings
|
||||
vim.g.netrw_winsize = 25 -- Percentage based pane size for directory exploring
|
||||
vim.g.netrw_banner = 0 -- Remove the banner
|
||||
vim.g.netrw_liststyle = 3 -- Use the tree style display for netrw directory listings
|
||||
vim.g.netrw_winsize = 25 -- Percentage based pane size for directory exploring
|
||||
|
||||
81
nvim/lua/statuscolumn.lua
Normal file
81
nvim/lua/statuscolumn.lua
Normal file
@@ -0,0 +1,81 @@
|
||||
local statuscolumn = {}
|
||||
|
||||
local show_both_nums = false
|
||||
|
||||
statuscolumn.setHL = function ()
|
||||
local colors = {
|
||||
'#888cd8',
|
||||
'#8081cd',
|
||||
'#7877c2',
|
||||
'#706cb7',
|
||||
'#6862ad',
|
||||
'#6057a2',
|
||||
'#584d97',
|
||||
'#50438d',
|
||||
'#493a82',
|
||||
'#413078',
|
||||
}
|
||||
for i, color in ipairs(colors) do
|
||||
vim.api.nvim_set_hl(0, 'Gradient_' .. i, { fg = color })
|
||||
end
|
||||
end
|
||||
|
||||
statuscolumn.border = function()
|
||||
-- if vim.v.relnum < 9 then
|
||||
-- return '%#Gradient_' .. (vim.v.relnum + 1) .. '#│'
|
||||
-- else
|
||||
-- return '%#Gradient_10#│'
|
||||
-- end
|
||||
return '│'
|
||||
end
|
||||
|
||||
statuscolumn.folds = function()
|
||||
local foldlevel = vim.fn.foldlevel(vim.v.lnum)
|
||||
local foldlevel_before = vim.fn.foldlevel((vim.v.lnum - 1) >= 1 and vim.v.lnum - 1 or 1)
|
||||
local foldlevel_after = vim.fn.foldlevel((vim.v.lnum + 1) <= vim.fn.line('$') and (vim.v.lnum + 1) or vim.fn.line('$'))
|
||||
|
||||
local foldclosed = vim.fn.foldclosed(vim.v.lnum)
|
||||
|
||||
if foldlevel == 0 then
|
||||
return ' '
|
||||
end
|
||||
|
||||
if foldclosed ~= -1 and foldclosed == vim.v.lnum then
|
||||
return '▶'
|
||||
end
|
||||
|
||||
if foldlevel > foldlevel_before then
|
||||
return '▽'
|
||||
end
|
||||
|
||||
if foldlevel > foldlevel_after then
|
||||
return '╰'
|
||||
end
|
||||
|
||||
return '╎'
|
||||
end
|
||||
|
||||
statuscolumn.numbers = function()
|
||||
if show_both_nums then
|
||||
return string.format('%-3s %2s ', vim.v.lnum, vim.v.relnum)
|
||||
else
|
||||
return string.format('%2s', vim.v.relnum)
|
||||
end
|
||||
end
|
||||
|
||||
statuscolumn.statusColumn = function()
|
||||
local column_text = ''
|
||||
|
||||
-- statuscolumn.setHL()
|
||||
|
||||
column_text = table.concat({
|
||||
'%s',
|
||||
statuscolumn.numbers(),
|
||||
-- statuscolumn.border(),
|
||||
-- statuscolumn.folds(), ' ',
|
||||
})
|
||||
|
||||
return column_text
|
||||
end
|
||||
|
||||
return statuscolumn
|
||||
37
nvim/snippets/all.lua
Normal file
37
nvim/snippets/all.lua
Normal file
@@ -0,0 +1,37 @@
|
||||
-- require('luasnip.session.snippet_collection').clear_snippets('all')
|
||||
|
||||
-- local ls = require('luasnip')
|
||||
-- local s = ls.snippet
|
||||
-- local sn = ls.snippet_node
|
||||
-- local i = ls.insert_node
|
||||
-- local t = ls.text_node
|
||||
-- local c = ls.choice_node
|
||||
-- local r = ls.restore_node
|
||||
--
|
||||
-- -- Replacement of autopairs
|
||||
-- local function pair(pair_begin, pair_end)
|
||||
-- -- Auto-pair using snippets
|
||||
-- return s({ trig = pair_begin, wordTrig = false }, {
|
||||
-- t({ pair_begin }),
|
||||
-- c(1, {
|
||||
-- r(1, "content", i(1)),
|
||||
-- sn(nil, { t({"", "\t"}), r(1, "content", i(1)), t({ "", "" }) }),
|
||||
-- }),
|
||||
-- t({ pair_end }),
|
||||
-- })
|
||||
-- end
|
||||
--
|
||||
-- ls.add_snippets('all', {
|
||||
-- pair('(', ')'),
|
||||
-- pair('{', '}'),
|
||||
-- pair('[', ']'),
|
||||
-- pair('<', '>'),
|
||||
-- pair("'", "'"),
|
||||
-- pair('"', '"'),
|
||||
-- pair('`', '`'),
|
||||
-- }, {
|
||||
-- -- type = 'autosnippets',
|
||||
-- -- key = 'all_auto',
|
||||
-- })
|
||||
|
||||
-- end autopairs
|
||||
@@ -1,44 +1,36 @@
|
||||
local ls = require('luasnip')
|
||||
local s = ls.snippet
|
||||
-- local sn = ls.snippet_node
|
||||
local i = ls.insert_node
|
||||
local t = ls.text_node
|
||||
local l = require('luasnip.extras').lambda
|
||||
-- local l = require('luasnip.extras').lambda
|
||||
local fmt = require('luasnip.extras.fmt').fmt
|
||||
local ts_post = require('luasnip.extras.treesitter_postfix').treesitter_postfix
|
||||
-- local ts_post = require('luasnip.extras.treesitter_postfix').treesitter_postfix
|
||||
|
||||
return {
|
||||
ts_post({
|
||||
matchTSNode = {
|
||||
query = [[
|
||||
(function_definition
|
||||
parameters: (parameters) @params
|
||||
return_type: (type) @return
|
||||
) @prefix
|
||||
]],
|
||||
query_lang = "python",
|
||||
},
|
||||
trig = "docstring",
|
||||
}, fmt([[
|
||||
''' {}
|
||||
|
||||
Keyword arguments:
|
||||
{} () -
|
||||
|
||||
Return:
|
||||
{} - {}
|
||||
'''
|
||||
ls.add_snippets('python', {
|
||||
s('docstring single', {
|
||||
t("''' "), i(0, 'text'), t(" '''")
|
||||
}),
|
||||
s('def', fmt([[
|
||||
def {func}({args}) -> {ret}:
|
||||
''' {doc} '''
|
||||
{body}
|
||||
]], {
|
||||
i(1, 'Description'),
|
||||
l(l.LS_TSCAPTURE_PARAMS),
|
||||
l(l.LS_TSCAPTURE_RETURN),
|
||||
l(l.LS_TSDATA),
|
||||
func = i(1, 'fname'),
|
||||
args = i(2),
|
||||
ret = i(3, 'None'),
|
||||
doc = i(4, 'docstring'),
|
||||
body = i(5, 'pass'),
|
||||
}, {
|
||||
})),
|
||||
-- s(
|
||||
-- { trig = "thingy" },
|
||||
-- { t('Woot!') }
|
||||
-- ),
|
||||
-- s(
|
||||
-- { trig = 'thingy2' },
|
||||
-- { t('Woot2!') }
|
||||
-- )
|
||||
}
|
||||
s('ternary', {
|
||||
i(1, 'then'), t(' if '), i(2, 'condition'), t(' else '), i(3, 'else')
|
||||
}),
|
||||
s('tuple ternary', fmt([[
|
||||
({if_true}, {if_false})[{condition}]
|
||||
]], {
|
||||
if_true = i(1, 'if_true'),
|
||||
if_false = i(2, 'if_false'),
|
||||
condition = i(3, 'condition'),
|
||||
})),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user