Update Neovim and Emacs configurations
This commit is contained in:
@@ -1,33 +1,33 @@
|
||||
-- Autocmds are automatically loaded on the VeryLazy event
|
||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||
-- Add any additional autocmds here
|
||||
|
||||
local augroup = vim.api.nvim_create_augroup
|
||||
local autocmd = vim.api.nvim_create_autocmd
|
||||
local view_group = augroup("auto_view", { clear = true })
|
||||
|
||||
autocmd({ "BufWinLeave", "BufWritePost", "WinLeave" }, {
|
||||
desc = "Save view with mkview for real files",
|
||||
group = view_group,
|
||||
callback = function(args)
|
||||
if vim.b[args.buf].view_activated then
|
||||
vim.cmd.mkview({ mods = { emsg_silent = true } })
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
autocmd("BufWinEnter", {
|
||||
desc = "Try to load file view if available and enable view saving for real files",
|
||||
group = view_group,
|
||||
callback = function(args)
|
||||
if not vim.b[args.buf].view_activated then
|
||||
local filetype = vim.api.nvim_get_option_value("filetype", { buf = args.buf })
|
||||
local buftype = vim.api.nvim_get_option_value("buftype", { buf = args.buf })
|
||||
local ignore_filetypes = { "gitcommit", "gitrebase", "svg", "hgcommit" }
|
||||
if buftype == "" and filetype and filetype ~= "" and not vim.tbl_contains(ignore_filetypes, filetype) then
|
||||
vim.b[args.buf].view_activated = true
|
||||
vim.cmd.loadview({ mods = { emsg_silent = true } })
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
-- Autocmds are automatically loaded on the VeryLazy event
|
||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||
-- Add any additional autocmds here
|
||||
|
||||
local augroup = vim.api.nvim_create_augroup
|
||||
local autocmd = vim.api.nvim_create_autocmd
|
||||
local view_group = augroup("auto_view", { clear = true })
|
||||
|
||||
autocmd({ "BufWinLeave", "BufWritePost", "WinLeave" }, {
|
||||
desc = "Save view with mkview for real files",
|
||||
group = view_group,
|
||||
callback = function(args)
|
||||
if vim.b[args.buf].view_activated then
|
||||
vim.cmd.mkview({ mods = { emsg_silent = true } })
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
autocmd("BufWinEnter", {
|
||||
desc = "Try to load file view if available and enable view saving for real files",
|
||||
group = view_group,
|
||||
callback = function(args)
|
||||
if not vim.b[args.buf].view_activated then
|
||||
local filetype = vim.api.nvim_get_option_value("filetype", { buf = args.buf })
|
||||
local buftype = vim.api.nvim_get_option_value("buftype", { buf = args.buf })
|
||||
local ignore_filetypes = { "gitcommit", "gitrebase", "svg", "hgcommit" }
|
||||
if buftype == "" and filetype and filetype ~= "" and not vim.tbl_contains(ignore_filetypes, filetype) then
|
||||
vim.b[args.buf].view_activated = true
|
||||
vim.cmd.loadview({ mods = { emsg_silent = true } })
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
@@ -1,45 +1,42 @@
|
||||
-- Keymaps are automatically loaded on the VeryLazy event
|
||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||
-- Add any additional keymaps here
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
-- Buffer management
|
||||
map("n", "<leader>bn", ":bnext<CR>", { noremap = true, silent = true, desc = "Next buffer" })
|
||||
map("n", "<leader>bp", ":bprevious<CR>", { noremap = true, silent = true, desc = "Previous buffer" })
|
||||
map("n", "<leader>bd", ":bdelete<CR>", { noremap = true, silent = true, desc = "Delete buffer" })
|
||||
|
||||
-- Copy to system clipboard (if not already mapped)
|
||||
map({ "n", "v" }, "<leader>y", [["+y]], { noremap = true, silent = true, desc = "Copy to system clipboard" })
|
||||
|
||||
-- Paste from system clipboard
|
||||
map("n", "<leader>p", [["+p]], { noremap = true, silent = true, desc = "Paste from system clipboard" })
|
||||
|
||||
-- Markdown menu
|
||||
map("n", "<leader>M", [["+M]], { noremap = true, silent = true, desc = "Markdown" })
|
||||
|
||||
vim.keymap.set("n", "<leader>cc", function()
|
||||
local file1 = vim.fn.expand("%")
|
||||
|
||||
local project_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1]
|
||||
if project_root == "" then
|
||||
project_root = vim.fn.getcwd()
|
||||
end
|
||||
|
||||
require("telescope.builtin").find_files({
|
||||
prompt_title = "Compare with...",
|
||||
cwd = project_root,
|
||||
hidden = true,
|
||||
follow = true,
|
||||
attach_mappings = function(_, map)
|
||||
map("i", "<CR>", function(prompt_bufnr)
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require("telescope.actions.state")
|
||||
local file2 = action_state.get_selected_entry().path
|
||||
actions.close(prompt_bufnr)
|
||||
require("user.utils").meld_diff(file1, file2)
|
||||
end)
|
||||
return true
|
||||
end,
|
||||
})
|
||||
end, { desc = "Compare with" })
|
||||
-- Keymaps are automatically loaded on the VeryLazy event
|
||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||
-- Add any additional keymaps here
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
-- Buffer management
|
||||
map("n", "<leader>bn", ":bnext<CR>", { noremap = true, silent = true, desc = "Next buffer" })
|
||||
map("n", "<leader>bp", ":bprevious<CR>", { noremap = true, silent = true, desc = "Previous buffer" })
|
||||
map("n", "<leader>bd", ":bdelete<CR>", { noremap = true, silent = true, desc = "Delete buffer" })
|
||||
|
||||
-- Copy to system clipboard (if not already mapped)
|
||||
map({ "n", "v" }, "<leader>y", [["+y]], { noremap = true, silent = true, desc = "Copy to system clipboard" })
|
||||
|
||||
-- Paste from system clipboard
|
||||
map("n", "<leader>p", [["+p]], { noremap = true, silent = true, desc = "Paste from system clipboard" })
|
||||
|
||||
vim.keymap.set("n", "<leader>cc", function()
|
||||
local file1 = vim.fn.expand("%")
|
||||
|
||||
local project_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1]
|
||||
if project_root == "" then
|
||||
project_root = vim.fn.getcwd()
|
||||
end
|
||||
|
||||
require("telescope.builtin").find_files({
|
||||
prompt_title = "Compare with...",
|
||||
cwd = project_root,
|
||||
hidden = true,
|
||||
follow = true,
|
||||
attach_mappings = function(_, map)
|
||||
map("i", "<CR>", function(prompt_bufnr)
|
||||
local actions = require("telescope.actions")
|
||||
local action_state = require("telescope.actions.state")
|
||||
local file2 = action_state.get_selected_entry().path
|
||||
actions.close(prompt_bufnr)
|
||||
require("user.utils").meld_diff(file1, file2)
|
||||
end)
|
||||
return true
|
||||
end,
|
||||
})
|
||||
end, { desc = "Compare with" })
|
||||
|
||||
@@ -1,50 +1,170 @@
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import/override with your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||
lazy = false,
|
||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||
-- have outdated releases, which may break your Neovim install.
|
||||
version = false, -- always use the latest git commit
|
||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||
},
|
||||
checker = { enabled = true }, -- automatically check for plugin updates
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"matchit",
|
||||
"matchparen",
|
||||
"netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
cache = true,
|
||||
})
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- Start LazyVim plugins
|
||||
require("lazy").setup({
|
||||
spec = {
|
||||
-- add LazyVim and import its plugins
|
||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||
-- import/override with your plugins
|
||||
{ import = "plugins" },
|
||||
},
|
||||
defaults = {
|
||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||
lazy = false,
|
||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||
-- have outdated releases, which may break your Neovim install.
|
||||
version = false, -- always use the latest git commit
|
||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||
},
|
||||
checker = { enabled = true }, -- automatically check for plugin updates
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"matchit",
|
||||
"matchparen",
|
||||
"netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"tutor",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
cache = true,
|
||||
})
|
||||
|
||||
-- Configure status bar
|
||||
require("config.statusline")
|
||||
|
||||
-- Configure Markdown rendering rules
|
||||
require("render-markdown").setup({
|
||||
heading = { position = "inline" },
|
||||
quote = { repeat_linebreak = true },
|
||||
win_options = {
|
||||
showbreak = {
|
||||
default = "",
|
||||
rendered = " ",
|
||||
},
|
||||
breakindent = {
|
||||
default = false,
|
||||
rendered = true,
|
||||
},
|
||||
breakindentopt = {
|
||||
default = "",
|
||||
rendered = "",
|
||||
},
|
||||
},
|
||||
checkbox = {
|
||||
unchecked = { icon = "✘ " },
|
||||
checked = { icon = "✔ " },
|
||||
},
|
||||
code = {
|
||||
position = "right",
|
||||
width = "block",
|
||||
right_pad = 10,
|
||||
},
|
||||
latex = {
|
||||
enabled = false,
|
||||
},
|
||||
link = {
|
||||
custom = {
|
||||
c = {
|
||||
pattern = "%.[ch]$",
|
||||
icon = " ",
|
||||
},
|
||||
golang = {
|
||||
pattern = "%.go$",
|
||||
icon = " ",
|
||||
},
|
||||
python = {
|
||||
pattern = "%.py$",
|
||||
icon = " ",
|
||||
},
|
||||
lua = {
|
||||
pattern = "%.lua$",
|
||||
icon = " ",
|
||||
},
|
||||
-- shell = {
|
||||
-- pattern = "%.[sh|zsh]$",
|
||||
-- icon = " ",
|
||||
-- },
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Configure TreeSitter syntax parsers
|
||||
require("nvim-treesitter.configs").setup({
|
||||
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
|
||||
ensure_installed = {
|
||||
"c",
|
||||
"lua",
|
||||
"bash",
|
||||
"go",
|
||||
"gomod",
|
||||
"gowork",
|
||||
"gosum",
|
||||
"json",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"python",
|
||||
"zig",
|
||||
},
|
||||
|
||||
-- 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 (or "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 = {},
|
||||
-- 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,
|
||||
},
|
||||
})
|
||||
|
||||
-- Configure Mini.AI for textobjects command
|
||||
require("mini.ai").setup()
|
||||
|
||||
@@ -1,57 +1,57 @@
|
||||
-- Options are automatically loaded before lazy.nvim startup
|
||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||
-- Add any additional options here
|
||||
|
||||
local opt = vim.opt
|
||||
|
||||
-- Encoding
|
||||
opt.encoding = "utf-8"
|
||||
opt.fileencoding = "utf-8"
|
||||
|
||||
-- Line numbers
|
||||
opt.number = true
|
||||
opt.relativenumber = true
|
||||
|
||||
-- Enable mouse in all modes
|
||||
opt.mouse = "a"
|
||||
|
||||
-- Better searching
|
||||
opt.ignorecase = true
|
||||
opt.smartcase = true
|
||||
|
||||
-- Highlight current line
|
||||
opt.cursorline = true
|
||||
opt.cursorlineopt = "number"
|
||||
|
||||
-- Enable true color support
|
||||
opt.termguicolors = true
|
||||
|
||||
-- Enable system clipboard
|
||||
opt.clipboard = "unnamedplus"
|
||||
|
||||
-- Indentation
|
||||
opt.softtabstop = 8
|
||||
opt.shiftwidth = 8
|
||||
opt.tabstop = 8
|
||||
opt.expandtab = true
|
||||
opt.smartindent = true
|
||||
|
||||
-- Split behavior
|
||||
opt.splitright = true
|
||||
opt.splitbelow = true
|
||||
|
||||
-- Enable undo file to persist undo history
|
||||
opt.undofile = true
|
||||
|
||||
-- Set upbar similar to statusline (optional)
|
||||
opt.statusline = "%f %m %r %=%-14.(%l,%c%V%) %P"
|
||||
|
||||
-- Persistent signcolumn to avoid text shifting
|
||||
opt.signcolumn = "yes"
|
||||
|
||||
-- Show file name and modified flag in the window bar
|
||||
opt.winbar = "%=%m %f"
|
||||
|
||||
-- Backup files
|
||||
opt.swapfile = false
|
||||
opt.backup = false
|
||||
-- Options are automatically loaded before lazy.nvim startup
|
||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||
-- Add any additional options here
|
||||
|
||||
local opt = vim.opt
|
||||
|
||||
-- Encoding
|
||||
opt.encoding = "utf-8"
|
||||
opt.fileencoding = "utf-8"
|
||||
|
||||
-- Line numbers
|
||||
opt.number = true
|
||||
opt.relativenumber = true
|
||||
|
||||
-- Enable mouse in all modes
|
||||
opt.mouse = "a"
|
||||
|
||||
-- Better searching
|
||||
opt.ignorecase = true
|
||||
opt.smartcase = true
|
||||
|
||||
-- Highlight current line
|
||||
opt.cursorline = true
|
||||
opt.cursorlineopt = "number"
|
||||
|
||||
-- Enable true color support
|
||||
opt.termguicolors = true
|
||||
|
||||
-- Enable system clipboard
|
||||
opt.clipboard = "unnamedplus"
|
||||
|
||||
-- Indentation
|
||||
-- opt.softtabstop = 8
|
||||
-- opt.shiftwidth = 8
|
||||
-- opt.tabstop = 8
|
||||
opt.expandtab = true
|
||||
opt.smartindent = true
|
||||
|
||||
-- Split behavior
|
||||
opt.splitright = true
|
||||
opt.splitbelow = true
|
||||
|
||||
-- Enable undo file to persist undo history
|
||||
opt.undofile = true
|
||||
|
||||
-- Set upbar similar to statusline (optional)
|
||||
opt.statusline = "%f %m %r %=%-14.(%l,%c%V%) %P"
|
||||
|
||||
-- Persistent signcolumn to avoid text shifting
|
||||
opt.signcolumn = "yes"
|
||||
|
||||
-- Show file name and modified flag in the window bar
|
||||
opt.winbar = "%=%m %f"
|
||||
|
||||
-- Backup files
|
||||
opt.swapfile = false
|
||||
opt.backup = false
|
||||
|
||||
219
lazyvim/.config/nvim/lua/config/statusline.lua
Executable file
219
lazyvim/.config/nvim/lua/config/statusline.lua
Executable file
@@ -0,0 +1,219 @@
|
||||
-- Eviline config for lualine
|
||||
-- Author: shadmansaleh
|
||||
-- Credit: glepnir
|
||||
local lualine = require("lualine")
|
||||
|
||||
-- Color table for highlights
|
||||
-- stylua: ignore
|
||||
local colors = {
|
||||
bg = '#202328',
|
||||
fg = '#bbc2cf',
|
||||
yellow = '#ECBE7B',
|
||||
cyan = '#008080',
|
||||
darkblue = '#081633',
|
||||
green = '#98be65',
|
||||
orange = '#FF8800',
|
||||
violet = '#a9a1e1',
|
||||
magenta = '#c678dd',
|
||||
blue = '#51afef',
|
||||
red = '#ec5f67',
|
||||
}
|
||||
|
||||
local conditions = {
|
||||
buffer_not_empty = function()
|
||||
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
|
||||
end,
|
||||
hide_in_width = function()
|
||||
return vim.fn.winwidth(0) > 80
|
||||
end,
|
||||
check_git_workspace = function()
|
||||
local filepath = vim.fn.expand("%:p:h")
|
||||
local gitdir = vim.fn.finddir(".git", filepath .. ";")
|
||||
return gitdir and #gitdir > 0 and #gitdir < #filepath
|
||||
end,
|
||||
}
|
||||
|
||||
-- Config
|
||||
local config = {
|
||||
options = {
|
||||
-- Disable sections and component separators
|
||||
component_separators = "",
|
||||
section_separators = "",
|
||||
theme = "catppuccin",
|
||||
},
|
||||
sections = {
|
||||
-- these are to remove the defaults
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
-- These will be filled later
|
||||
lualine_c = {},
|
||||
lualine_x = {},
|
||||
},
|
||||
inactive_sections = {
|
||||
-- these are to remove the defaults
|
||||
lualine_a = {},
|
||||
lualine_b = {},
|
||||
lualine_y = {},
|
||||
lualine_z = {},
|
||||
lualine_c = {},
|
||||
lualine_x = {},
|
||||
},
|
||||
}
|
||||
|
||||
-- Inserts a component in lualine_c at left section
|
||||
local function ins_left(component)
|
||||
table.insert(config.sections.lualine_c, component)
|
||||
end
|
||||
|
||||
-- Inserts a component in lualine_x at right section
|
||||
local function ins_right(component)
|
||||
table.insert(config.sections.lualine_x, component)
|
||||
end
|
||||
|
||||
ins_left({
|
||||
function()
|
||||
return "▊"
|
||||
end,
|
||||
color = { fg = colors.blue }, -- Sets highlighting of component
|
||||
padding = { left = 0, right = 1 }, -- We don't need space before this
|
||||
})
|
||||
|
||||
-- -- Function to get the current mode indicator as a single character
|
||||
local function mode()
|
||||
-- Map of modes to their respective shorthand indicators
|
||||
local mode_map = {
|
||||
n = "NORMAL", -- Normal mode
|
||||
v = "VISUAL", -- Visual mode
|
||||
[""] = "VISUAL BLOCK", -- Visual block mode
|
||||
V = "VISUAL LINE", -- Visual line mode
|
||||
c = "COMMAND", -- Command-line mode
|
||||
no = "N-INSERT", -- NInsert mode
|
||||
s = "SELECT", -- Select mode
|
||||
S = "SELECT-LINE", -- Select line mode
|
||||
ic = "INSERT", -- Insert mode (completion)
|
||||
R = "REPLACE", -- Replace mode
|
||||
Rv = "VISUAL REPLACE", -- Virtual Replace mode
|
||||
cv = "COMMAND-LINE", -- Command-line mode
|
||||
ce = "C", -- Ex mode
|
||||
r = "R", -- Prompt mode
|
||||
rm = "M", -- More mode
|
||||
["r?"] = "?", -- Confirm mode
|
||||
["!"] = "!", -- Shell mode
|
||||
t = "TERMINAL", -- Terminal mode
|
||||
}
|
||||
-- Return the mode shorthand or [UNKNOWN] if no match
|
||||
return mode_map[vim.fn.mode()] or "[UNKNOWN]"
|
||||
end
|
||||
|
||||
ins_left({
|
||||
-- mode component
|
||||
mode,
|
||||
color = function()
|
||||
-- auto change color according to neovims mode
|
||||
local mode_color = {
|
||||
n = colors.red,
|
||||
i = colors.green,
|
||||
v = colors.blue,
|
||||
[""] = colors.blue,
|
||||
V = colors.blue,
|
||||
c = colors.magenta,
|
||||
no = colors.red,
|
||||
s = colors.orange,
|
||||
S = colors.orange,
|
||||
[""] = colors.orange,
|
||||
ic = colors.yellow,
|
||||
R = colors.violet,
|
||||
Rv = colors.violet,
|
||||
cv = colors.red,
|
||||
ce = colors.red,
|
||||
r = colors.cyan,
|
||||
rm = colors.cyan,
|
||||
["r?"] = colors.cyan,
|
||||
["!"] = colors.red,
|
||||
t = colors.red,
|
||||
}
|
||||
return { fg = mode_color[vim.fn.mode()] }
|
||||
end,
|
||||
padding = { right = 1 },
|
||||
})
|
||||
|
||||
ins_left({
|
||||
-- filesize component
|
||||
"filesize",
|
||||
cond = conditions.buffer_not_empty,
|
||||
})
|
||||
|
||||
ins_left({
|
||||
"filename",
|
||||
cond = conditions.buffer_not_empty,
|
||||
color = { fg = colors.magenta, gui = "bold" },
|
||||
})
|
||||
|
||||
ins_left({ "location" })
|
||||
|
||||
ins_left({ "progress", color = { fg = colors.fg, gui = "bold" } })
|
||||
|
||||
ins_left({
|
||||
"diagnostics",
|
||||
sources = { "nvim_diagnostic" },
|
||||
symbols = { error = " ", warn = " ", info = " " },
|
||||
diagnostics_color = {
|
||||
error = { fg = colors.red },
|
||||
warn = { fg = colors.yellow },
|
||||
info = { fg = colors.cyan },
|
||||
},
|
||||
})
|
||||
|
||||
-- Insert mid section. You can make any number of sections in neovim :)
|
||||
-- for lualine it's any number greater then 2
|
||||
ins_left({
|
||||
function()
|
||||
return "%="
|
||||
end,
|
||||
})
|
||||
|
||||
-- Add components to right sections
|
||||
ins_right({
|
||||
"o:encoding", -- option component same as &encoding in viml
|
||||
fmt = string.upper, -- I'm not sure why it's upper case either ;)
|
||||
cond = conditions.hide_in_width,
|
||||
color = { fg = colors.green, gui = "bold" },
|
||||
})
|
||||
|
||||
ins_right({
|
||||
"fileformat",
|
||||
fmt = string.upper,
|
||||
icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
|
||||
color = { fg = colors.green, gui = "bold" },
|
||||
})
|
||||
|
||||
ins_right({
|
||||
"branch",
|
||||
icon = "",
|
||||
color = { fg = colors.violet, gui = "bold" },
|
||||
})
|
||||
|
||||
ins_right({
|
||||
"diff",
|
||||
-- Is it me or the symbol for modified us really weird
|
||||
symbols = { added = " ", modified = " ", removed = " " },
|
||||
diff_color = {
|
||||
added = { fg = colors.green },
|
||||
modified = { fg = colors.orange },
|
||||
removed = { fg = colors.red },
|
||||
},
|
||||
cond = conditions.hide_in_width,
|
||||
})
|
||||
|
||||
ins_right({
|
||||
function()
|
||||
return "▊"
|
||||
end,
|
||||
color = { fg = colors.blue },
|
||||
padding = { left = 1 },
|
||||
})
|
||||
|
||||
-- Now don't forget to initialize lualine
|
||||
lualine.setup(config)
|
||||
Reference in New Issue
Block a user