Share your lv-config.lua here
lunarvim / lunarvimcommunity Goto Github PK
View Code? Open in Web Editor NEWShare your lv-config.lua here
Share your lv-config.lua here
-- *
-- 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,
},
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.