A collection of plugins that were at some point sitting in my dotfiles.
require('myplugins').setup {
bigfile = {},
bufcomplete = {},
lspecho = {},
lspsignature = {},
zoom = {}
-- Etc etc, format is <plugin_name> = { <plugin_configuration> }
}
Automatically disable stuff for large files
{
max_size = 1024 * 1024,
}
Bookmark files using native marks.
local bookmarks = require('myplugins.bookmarks')
vim.keymap.set('n', '<leader>mm', bookmarks.select, { desc = 'Bookmarks Select' })
vim.keymap.set('n', '<leader>mq', bookmarks.quickfix, { desc = 'Bookmarks Quickfix' })
vim.keymap.set('n', '<leader>md', bookmarks.delete_buffer, { desc = 'Bookmarks Delete Buffer' })
vim.keymap.set('n', '<leader>mD', bookmarks.delete_all, { desc = 'Bookmarks Delete All' })
vim.keymap.set('n', "'", function()
bookmarks.jump_to_mark(vim.fn.getcharstr())
end, { desc = 'Bookmarks Jump to Mark' })
vim.keymap.set('n', 'm', function()
bookmarks.toggle_mark(vim.fn.getcharstr())
end, { desc = 'Bookmarks Toggle Mark' })
LSP + treesitter autocompletion
Warning
Requires neovim 0.11.0+
{
entry_mapper = nil, -- Custom completion entry mapper
debounce_delay = 100,
}
For best completion experience:
vim.o.completeopt = 'menuone,noselect,noinsert,popup'
Command-line autocompletion
Warning
Requires neovim 0.11.0+
Automatically disable DiagnosticUnnecessary
highlighting for code under cursor.
Simple plugin for running http files using httpyac
local http = require('myplugins.httpyac')
vim.keymap.set('n', '<leader>ho', http.toggle)
vim.keymap.set('n', '<leader>hh', http.run)
vim.keymap.set('n', '<leader>hH', http.run_all)
vim.keymap.set('n', '<leader>he', http.select_env)
Automatically show LSP documentation on completion item hover.
{
debounce_delay = 100,
}
Echo LSP progress to cmdline
{
echo = true, -- Echo progress messages, if set to false you can use .message() to get the current message
decay = 3000, -- Message decay time in milliseconds
interval = 100, -- Minimum time between echo updates in milliseconds
attach_log = false, -- Attach to logMessage and showMessage
}
Automatically show LSP function signature on cursor hover in insert mode.
{
debounce_delay = 100,
}
Automatically changes working directory to project root.
{
dirs = {
-- version control markers
'.git/',
'_darcs/',
'.hg/',
'.bzr/',
'.svn/',
-- exrc markers
'.nvim.lua',
'.nvimrc',
'.exrc',
-- generic root markers
'.editorconfig',
'Makefile',
-- javascript
'node_modules/',
'package.json',
-- python
'.venv/',
'pyproject.toml',
'.pylintrc',
'requirements.txt',
'setup.py',
-- c
'CMakeLists.txt',
-- rust
'Cargo.toml',
-- go
'go.mod',
-- java
'mvnw',
'gradlew',
},
}
Automatically saves and restores session in predefined folders (default ~/git)
{
session_dir = vim.fn.stdpath('data') .. '/sessions/',
-- Directories where sessions are automatically saved
dirs = {
vim.fn.expand('~/git'),
},
-- Extra data to manage that is not normally saved in sessions
extra = {
quickfix = true, -- Save/load also quickfix lists
}
}
Simple wiki/note-taking functionality using fzf-lua
.
{
dir = vim.fn.expand('~/vimwiki'),
}
local wiki = require('myplugins.wiki')
vim.keymap.set('n', '<leader>wt', wiki.today)
vim.keymap.set('n', '<leader>wd', wiki.list_diary)
vim.keymap.set('n', '<leader>ww', wiki.list_wiki)
vim.keymap.set('n', '<leader>wn', wiki.new)
Zoom in/out on the current window.
local zoom = require('myplugins.zoom')
vim.keymap.set('n', '<leader>z', zoom.toggle)