-
Notifications
You must be signed in to change notification settings - Fork 3
Open

Description
-- *
-- Settings
-- *
local init_custom_options = function()
local custom_options = {
relativenumber = true, -- Set relative numbered lines
colorcolumn = "120", -- Indent line at what column? Set something like '99999' to not display it
scrolloff = 5, -- Determines the number of context lines you would like to see above and below the cursor
ignorecase = true, -- Ignore case in search
smartcase = true, -- Case-sensitive search when search term contains uppercase characters. Otherwise, case-sensitive search. timeoutlen = 200, -- Time to wait for a mapped sequence to complete (in milliseconds)
}
for k, v in pairs(custom_options) do
vim.opt[k] = v
end
end
init_custom_options()
-- *
-- Key mappings
-- *
lvim.leader = "space"
lvim.keys.insert_mode = {
-- Disable arrow keys
{ "<Up>", "<NOP>" },
{ "<Down>", "<NOP>" },
{ "<Left>", "<NOP>" },
{ "<Right>", "<NOP>" },
}
lvim.keys.normal_mode = {
-- Disable Ex mode, beause what the fuck is that...
{ "Q", "<NOP>" },
-- Alternative way to save
{ "<C-s>", ":w<CR>" },
-- Use CTRL+C instead of <ESC>...
{ "<C-c>", "<ESC>" },
-- Better window movement
{ "<C-h>", "<C-w>h" },
{ "<C-j>", "<C-w>j" },
{ "<C-k>", "<C-w>k" },
{ "<C-l>", "<C-w>l" },
-- Resize with arrows
{ "<Up>", ":resize +2<CR>" },
{ "<Down>", ":resize -2<CR>" },
{ "<Left>", ":vertical resize -2<CR>" },
{ "<Right>", ":vertical resize +2<CR>" },
-- QuickFix
{ "]q", ":cnext<CR>" },
{ "[q", ":cprev<CR>" },
{ "<C-q>", ":call QuickFixToggle()<CR>" },
-- LSP/Trouble
{ "gR", "<cmd>Trouble lsp_references<CR>" },
}
lvim.keys.term_mode = {
-- Terminal window navigation
{ "<C-h>", "<C-\\><C-N><C-w>h" },
{ "<C-j>", "<C-\\><C-N><C-w>j" },
{ "<C-k>", "<C-\\><C-N><C-w>k" },
{ "<C-l>", "<C-\\><C-N><C-w>l" },
}
lvim.keys.visual_mode = {
-- Better indenting
{ "<", "<gv" },
{ ">", ">gv" },
-- Paste most recent yank
{ "p", '"0p', { silent = true } },
{ "P", '"0P', { silent = true } },
}
lvim.keys.visual_block_mode = {
-- Move selected line / block of text in visual mode
{ "K", ":move '<-2<CR>gv-gv" },
{ "J", ":move '>+1<CR>gv-gv" },
}
-- *
-- Format
-- *
lvim.format_on_save = true
-- *
-- Linting
-- *
lvim.lint_on_save = true
-- *
-- Telescope
-- *
lvim.builtin.telescope.active = true
lvim.builtin.telescope.defaults.file_ignore_patterns = { ".git", "node_modules" }
local get_telescope_mappings = function()
local actions = require("telescope.actions")
return {
i = {
["<C-n>"] = actions.cycle_history_next,
["<C-p>"] = actions.cycle_history_prev,
["<C-c>"] = actions.close,
["<C-j>"] = actions.move_selection_next,
["<C-k>"] = actions.move_selection_previous,
["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
["<CR>"] = actions.select_default + actions.center,
["<c-x>"] = false,
},
n = {
["<C-j>"] = actions.move_selection_next,
["<C-k>"] = actions.move_selection_previous,
["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
},
}
end
lvim.builtin.telescope.defaults.mappings = get_telescope_mappings()
-- *
-- Dashboard
-- *
lvim.builtin.dashboard.active = true
lvim.builtin.dashboard.custom_section.a.command = "Telescope find_files find_command=rg,--ignore,--hidden,--files"
-- *
-- Terminal
-- *
lvim.builtin.terminal.active = true
lvim.builtin.terminal.shading_factor = 1
-- *
-- Nvimtree
-- *
lvim.builtin.nvimtree.side = "left"
lvim.builtin.nvimtree.show_icons.git = 1
lvim.builtin.nvimtree.hide_dotfiles = 0
-- *
-- Treesitter
-- *
lvim.builtin.treesitter.ensure_installed = "maintained"
lvim.builtin.treesitter.ignore_install = { "haskell" }
lvim.builtin.treesitter.highlight.enabled = true
lvim.builtin.treesitter.matchup.enable = true
lvim.builtin.treesitter.context_commentstring.enable = true
-- *
-- Whichkey
-- *
lvim.builtin.which_key.active = true
lvim.builtin.which_key.mappings["w"] = { "<cmd>w<CR>", "Save" }
lvim.builtin.which_key.mappings["W"] = { "<cmd>w!<CR>", "Force Save" }
lvim.builtin.which_key.mappings["q"] = { "<cmd>q<CR>", "Quit" }
lvim.builtin.which_key.mappings["Q"] = { "<cmd>q!<CR>", "Force Quit" }
lvim.builtin.which_key.mappings["f"] = { "<cmd>lua vim.lsp.buf.formatting()<cr>", "Format" }
lvim.builtin.which_key.mappings["b"]["c"] = { "<cmd>Telescope current_buffer_fuzzy_find<cr>", "Search Current Buffer" }
lvim.builtin.which_key.mappings["s"]["f"] = {
"<cmd>Telescope find_files find_command=rg,--ignore,--hidden,--files<CR>",
"Find File",
}
lvim.builtin.which_key.mappings["s"]["m"] = { "<cmd>Telescope marks<cr>", "Search Marks" }
lvim.builtin.which_key.mappings["s"]["g"] = { "<cmd>Telescope git_files<cr>", "Search Git Files" }
lvim.builtin.which_key.mappings["t"] = {
name = "Toggle",
h = { "<cmd>set hlsearch!<CR>", "Toggle Highlight" },
q = { "<cmd>call QuickFixToggle()<CR>", "Toggle Quick Fix List" },
b = { "<cmd>GitBlameToggle<CR>", "Toggle Git Blame" },
t = { "<cmd>Twilight<CR>", "Toggle Twilight" },
i = { "<cmd>IndentBlanklineToggle<CR>", "Toggle Indent Line" },
x = { "<cmd>TroubleToggle<CR>", "Toggle Trouble" },
}
lvim.builtin.which_key.mappings["z"] = { "<cmd>ZenMode<CR>", "Zen Mode" }
lvim.builtin.which_key.mappings["x"] = {
name = "Trouble",
w = { "<cmd>Trouble lsp_workspace_diagnostics<CR>", "Trouble Workspaces" },
d = { "<cmd>Trouble lsp_document_diagnostics<CR>", "Trouble Document" },
l = { "<cmd>Trouble loclist<CR>", "Trouble Location List" },
q = { "<cmd>Trouble quickfix<CR>", "Trouble Quickfix List" },
}
-- *
-- LSP
-- *
-- generic LSP settings
-- you can set a custom on_attach function that will be used for all the language servers
-- See <https://github.com/neovim/nvim-lspconfig#keybindings-and-completion>
-- lvim.lsp.on_attach_callback = function(client, bufnr)
-- 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")
-- end
-- *
-- Lang
-- *
lvim.lang.go.formatter.exe = "goimports"
-- *
-- Additional Plugins
-- *
lvim.plugins = {
{
"f-person/git-blame.nvim",
event = "BufRead",
config = function()
vim.cmd("highlight default link gitblame SpecialComment")
vim.g.gitblame_enabled = 0
end,
},
{
"karb94/neoscroll.nvim",
event = "BufRead",
config = function()
require("neoscroll").setup({
-- All these keys will be mapped to their corresponding default scrolling animation
mappings = { "<C-u>", "<C-d>", "<C-b>", "<C-f>", "<C-y>", "<C-e>", "zt", "zz", "zb" },
hide_cursor = true, -- Hide cursor while scrolling
stop_eof = true, -- Stop at <EOF> when scrolling downwards
use_local_scrolloff = false, -- Use the local scope of scrolloff instead of the global scope
respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file
cursor_scrolls_alone = false, -- The cursor will keep on scrolling even if the window cannot scroll further
easing_function = nil, -- Default easing function
})
end,
},
{
"folke/zen-mode.nvim",
cmd = "ZenMode",
event = "BufRead",
config = function()
require("zen-mode").setup({
window = {
backdrop = 1,
height = 0.85, -- height of the Zen window
options = {
signcolumn = "no", -- disable signcolumn
number = false, -- disable number column
relativenumber = false, -- disable relative numbers
-- cursorline = false, -- disable cursorline
-- cursorcolumn = false, -- disable cursor column
-- foldcolumn = "0", -- disable fold column
-- list = false, -- disable whitespace characters
},
},
plugins = {
gitsigns = { enabled = false }, -- disables git signs
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
},
})
end,
},
{
"mfussenegger/nvim-lint",
event = "BufRead",
},
{
"folke/twilight.nvim",
event = "BufRead",
config = function()
require("twilight").setup({
dimming = {
alpha = 0.25, -- amount of dimming
-- we try to get the foreground from the highlight groups or fallback color
color = { "Normal", "#ffffff" },
},
context = 20, -- amount of lines we will try to show around the current line
-- treesitter is used to automatically expand the visible text,
-- but you can further control the types of nodes that should always be fully expanded
expand = { -- for treesitter, we we always try to expand to the top-most ancestor with these types
"function",
"method",
"table",
"if_statement",
},
exclude = {}, -- exclude these filetypes
})
end,
},
{
"lukas-reineke/indent-blankline.nvim",
setup = function()
vim.g.indentLine_enabled = 1
vim.g.indent_blankline_char = "‚ñè"
vim.g.indent_blankline_filetype_exclude = {
"help",
"terminal",
"dashboard",
}
vim.g.indent_blankline_buftype_exclude = { "terminal" }
vim.g.indent_blankline_show_trailing_blankline_indent = false
vim.g.indent_blankline_show_first_indent_level = false
end,
},
{
"projekt0n/github-nvim-theme",
config = function()
require("github-theme").setup({
themeStyle = "dimmed",
commentStyle = "NONE",
keywordStyle = "NONE",
functionStyle = "NONE",
variableStyle = "NONE",
sidebars = { "qf", "vista_kind", "terminal", "packer" },
})
vim.cmd([[
colorscheme "github-theme"
]])
end,
},
{
"andymass/vim-matchup",
event = "CursorMoved",
config = function()
vim.g.matchup_matchparen_offscreen = { method = "popup" }
end,
},
{ "JoosepAlviste/nvim-ts-context-commentstring", event = "BufRead" },
{
"folke/trouble.nvim",
requires = "kyazdani42/nvim-web-devicons",
config = function()
require("trouble").setup({
position = "bottom", -- position of the list can be: bottom, top, left, right
height = 10, -- height of the trouble list when position is top or bottom
width = 50, -- width of the list when position is left or right
icons = true, -- use devicons for filenames
mode = "lsp_document_diagnostics",
action_keys = { -- key mappings for actions in the trouble list
-- map to {} to remove a mapping, for example:
-- close = {},
close = "q", -- close the list
cancel = "<esc>", -- cancel the preview and get back to your last window / buffer / cursor
refresh = "r", -- manually refresh
jump = { "<cr>", "<tab>" }, -- jump to the diagnostic or open / close folds
open_split = { "<c-x>" }, -- open buffer in new split
open_vsplit = { "<c-v>" }, -- open buffer in new vsplit
open_tab = { "<c-t>" }, -- open buffer in new tab
jump_close = { "o" }, -- jump to the diagnostic and close the list
toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode
toggle_preview = "P", -- toggle auto_preview
hover = "K", -- opens a small popup with the full multiline message
preview = "p", -- preview the diagnostic location
close_folds = { "zM", "zm" }, -- close all folds
open_folds = { "zR", "zr" }, -- open all folds
toggle_fold = { "zA", "za" }, -- toggle fold of current file
previous = "k", -- preview item
next = "j", -- next item
},
indent_lines = true, -- add an indent guide below the fold icons
auto_open = false, -- automatically open the list when you have diagnostics
auto_close = true, -- automatically close the list when you have no diagnostics
auto_preview = true, -- automatically preview the location of the diagnostic. <esc> to close preview and go back to last window
auto_fold = false, -- automatically fold a file trouble list at creation
use_lsp_diagnostic_signs = true, -- enabling this will use the signs defined in your lsp client
})
end,
},
{
"norcalli/nvim-colorizer.lua",
config = function()
require("colorizer").setup()
end,
},
}
AnthonyAsDev, UltiRequiem, mayankdutta, enkodr, J1a-wei and 17 more
Metadata
Metadata
Assignees
Labels
No labels