feat: use HEAD@neovim instead of arch package
BREAKING: require neovim v0.5+ to work!!! migrate neovim configuration to lua
This commit is contained in:
parent
bb099a294e
commit
8ec80d78f5
11
.config/nvim/init.lua
Normal file
11
.config/nvim/init.lua
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
-- Author : swytch
|
||||||
|
-- Created : Friday Mar 12, 2021 17:42:34 CET
|
||||||
|
-- License : GPLv3
|
||||||
|
-- Description : neovim configuration file
|
||||||
|
|
||||||
|
require("settings") -- ./lua/settings.lua
|
||||||
|
require("plugins") -- ./lua/plugins.lua
|
||||||
|
require("maps") -- ./lua/maps.lua
|
||||||
|
require("statusline") -- ./lua/statusline.lua
|
||||||
|
|
||||||
|
require("polyjuice") -- colorscheme
|
15
.config/nvim/lua/maps.lua
Normal file
15
.config/nvim/lua/maps.lua
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
-- Author : swytch
|
||||||
|
-- Created : Friday Mar 12, 2021 20:17:19 CET
|
||||||
|
-- License : GPLv3
|
||||||
|
-- Description : neovim mappings file
|
||||||
|
|
||||||
|
utils = require("utils")
|
||||||
|
|
||||||
|
utils.map("n", "<space>", "<leader>")
|
||||||
|
utils.map("n", "<leader>j", "<cmd>bn<CR>")
|
||||||
|
utils.map("n", "<leader>k", "<cmd>bp<CR>")
|
||||||
|
utils.map("n", "<leader>y", "\"+y")
|
||||||
|
utils.map("v", "<leader>p", "\"+P")
|
||||||
|
utils.map("n", "<leader><enter>", "<cmd>w! | !compiler %<CR>")
|
||||||
|
utils.map("n", "<leader>s", "<cmd>PackerSync<CR>")
|
||||||
|
utils.map("n", "<leader>c", "<cmd>ColorizerToggle<CR>")
|
45
.config/nvim/lua/plugins.lua
Normal file
45
.config/nvim/lua/plugins.lua
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
-- Author : swytch
|
||||||
|
-- Created : Friday Mar 12, 2021 22:28:34 CET
|
||||||
|
-- License : GPLv3
|
||||||
|
-- Description : neovim plugins file
|
||||||
|
|
||||||
|
|
||||||
|
local execute = vim.api.nvim_command
|
||||||
|
local fn = vim.fn
|
||||||
|
|
||||||
|
local install_path = fn.stdpath("data").."/site/pack/packer/start/packer.nvim"
|
||||||
|
|
||||||
|
if fn.empty(fn.glob(install_path)) > 0 then
|
||||||
|
fn.system({"git", "clone", "https://github.com/wbthomason/packer.nvim", install_path})
|
||||||
|
execute "packadd packer.nvim"
|
||||||
|
end
|
||||||
|
|
||||||
|
return require("packer").startup(function()
|
||||||
|
-- packer manages itself
|
||||||
|
use "wbthomason/packer.nvim"
|
||||||
|
|
||||||
|
-- colorscheme
|
||||||
|
use {
|
||||||
|
"~/.local/src/polyjuice/",
|
||||||
|
requires = "tjdevries/colorbuddy.nvim"
|
||||||
|
}
|
||||||
|
|
||||||
|
-- tree-sitter
|
||||||
|
use "nvim-treesitter/nvim-treesitter"
|
||||||
|
|
||||||
|
-- fuzzy finder
|
||||||
|
use {
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
requires = {{"nvim-lua/popup.nvim"}, {"nvim-lua/plenary.nvim"}},
|
||||||
|
opt = true,
|
||||||
|
cmd = {"Telescope"}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- display colors directly in editor
|
||||||
|
use {
|
||||||
|
"norcalli/nvim-colorizer.lua",
|
||||||
|
opt = true,
|
||||||
|
cmd = {"ColorizerToggle"}
|
||||||
|
}
|
||||||
|
|
||||||
|
end)
|
66
.config/nvim/lua/settings.lua
Normal file
66
.config/nvim/lua/settings.lua
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
-- Author : swytch
|
||||||
|
-- Created : Friday Mar 12, 2021 17:43:21 CET
|
||||||
|
-- License : GPLv3
|
||||||
|
-- Description : neovim settings file
|
||||||
|
|
||||||
|
utils = require("utils")
|
||||||
|
|
||||||
|
local g = vim.g
|
||||||
|
|
||||||
|
local o = vim.o
|
||||||
|
local w = vim.wo
|
||||||
|
local b = vim.bo
|
||||||
|
|
||||||
|
-- general
|
||||||
|
o.wildignore = [[
|
||||||
|
.git
|
||||||
|
*.o,*.class
|
||||||
|
*.jpg,*.jpeg,*.png
|
||||||
|
*.avi,*.mp4,*.mkv
|
||||||
|
*.mp3,*.ogg,*.flac
|
||||||
|
*.eot,*.otf,*.ttf,*.woff
|
||||||
|
*.pdf
|
||||||
|
*.zip,*.gz,*.rar,*.tar.xz
|
||||||
|
]]
|
||||||
|
o.wildmode = "longest,full"
|
||||||
|
o.wildoptions = "pum"
|
||||||
|
o.clipboard = "unnamedplus"
|
||||||
|
g.netrw_dirhistmax = 0
|
||||||
|
|
||||||
|
-- editor
|
||||||
|
o.splitright = true
|
||||||
|
o.splitbelow = true
|
||||||
|
o.scrolloff = 4
|
||||||
|
o.termguicolors = true
|
||||||
|
o.background = "dark"
|
||||||
|
o.shortmess = o.shortmess .. "c"
|
||||||
|
w.number = true
|
||||||
|
w.relativenumber = true
|
||||||
|
o.listchars = "tab:<->,nbsp:␣,trail:·,extends:>,precedes:<"
|
||||||
|
o.showmatch = true
|
||||||
|
o.ignorecase = true
|
||||||
|
o.smartcase = true
|
||||||
|
o.inccommand = "split"
|
||||||
|
o.completeopt = "menuone,noinsert,noselect"
|
||||||
|
|
||||||
|
-- statusline
|
||||||
|
o.laststatus = 2
|
||||||
|
o.showmode = false
|
||||||
|
|
||||||
|
-- text, tabs, indents
|
||||||
|
b.textwidth = 79
|
||||||
|
b.shiftwidth = 8
|
||||||
|
b.softtabstop = -1
|
||||||
|
b.expandtab = true
|
||||||
|
b.shiftwidth = 0
|
||||||
|
o.backspace = "indent,eol,start"
|
||||||
|
o.cindent = true
|
||||||
|
|
||||||
|
-- augroups
|
||||||
|
utils.create_augroup({
|
||||||
|
{"BufWritePre", "*", "%s/\\s\\+$//e"}
|
||||||
|
}, "remove_trailing_whitespaces")
|
||||||
|
utils.create_augroup({
|
||||||
|
{"BufNewFile,BufRead", "*.mom", "set filetype=groff"},
|
||||||
|
{"BufNewFile,BufRead", "*.tex", "set filetype=tex"},
|
||||||
|
}, "enforce_filetypes")
|
203
.config/nvim/lua/statusline.lua
Normal file
203
.config/nvim/lua/statusline.lua
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
-- Author : swytch
|
||||||
|
-- Created : Friday Mar 12, 2021 21:45:21 CET
|
||||||
|
-- License : GPLv3
|
||||||
|
-- Description : neovim statusline file
|
||||||
|
-- based on github/nihilistkitten's work
|
||||||
|
|
||||||
|
|
||||||
|
local function gen_section(hl_string, items)
|
||||||
|
out = ""
|
||||||
|
for _, item in pairs(items) do
|
||||||
|
if item ~= "" then
|
||||||
|
out = out .. " " .. item
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if out ~="" then
|
||||||
|
return hl_string .. out .. " "
|
||||||
|
else
|
||||||
|
return out
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- sensible names for vim modes
|
||||||
|
local function get_mode(m)
|
||||||
|
local mode_group = {
|
||||||
|
["n"] = "Normal",
|
||||||
|
["no"] = "O-Pending",
|
||||||
|
["nov"] = "O-Pending",
|
||||||
|
["noV"] = "O-Pending",
|
||||||
|
["no"] = "O-Pending",
|
||||||
|
["niI"] = "Normal",
|
||||||
|
["niR"] = "Normal",
|
||||||
|
["niV"] = "Normal",
|
||||||
|
["v"] = "Visual",
|
||||||
|
["V"] = "V-Line",
|
||||||
|
[""] = "V-Block",
|
||||||
|
["s"] = "Select",
|
||||||
|
["S"] = "S-Line",
|
||||||
|
[""] = "S-Block",
|
||||||
|
["i"] = "Insert",
|
||||||
|
["ic"] = "Insert",
|
||||||
|
["ix"] = "Insert",
|
||||||
|
["R"] = "Replace",
|
||||||
|
["Rc"] = "Replace",
|
||||||
|
["Rv"] = "V-Replace",
|
||||||
|
["Rx"] = "Replace",
|
||||||
|
["c"] = "Command",
|
||||||
|
["cv"] = "Ex",
|
||||||
|
["ce"] = "Ex",
|
||||||
|
["r"] = "Prompt",
|
||||||
|
["rm"] = "Prompt",
|
||||||
|
["r?"] = "Prompt",
|
||||||
|
["!"] = "Shell",
|
||||||
|
["t"] = "Terminal",
|
||||||
|
}
|
||||||
|
return mode_group[m] or "None"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_mode_display_name(m)
|
||||||
|
local mode = {
|
||||||
|
["Normal"] = "[ NRM ]",
|
||||||
|
["O-Pending"] = "[ OTR ]",
|
||||||
|
["Visual"] = "[ VSL ]",
|
||||||
|
["V-Line"] = "[ V·L ]",
|
||||||
|
["V-Block"] = "[ V·B ]",
|
||||||
|
["Select"] = "[ SEL ]",
|
||||||
|
["S-Line"] = "[ S·L ]",
|
||||||
|
["S-Block"] = "[ S·B ]",
|
||||||
|
["Insert"] = "[ INS ]",
|
||||||
|
["Replace"] = "[ RPL ]",
|
||||||
|
["Command"] = "[ CMD ]",
|
||||||
|
["Prompt"] = "[ PMT ]",
|
||||||
|
["Shell"] = "[ SHL ]",
|
||||||
|
["Terminal"] = "[ TRM ]",
|
||||||
|
["None"] = "[ --- ]"
|
||||||
|
}
|
||||||
|
return mode[m]
|
||||||
|
end
|
||||||
|
|
||||||
|
-- get the highlight group for a mode group
|
||||||
|
local function get_mode_color(m)
|
||||||
|
local color = {
|
||||||
|
["Normal"] = "%#NormalMode#",
|
||||||
|
["O-Pending"] = "%#NormalMode#",
|
||||||
|
["Visual"] = "%#VisualMode#",
|
||||||
|
["V-Line"] = "%#VisualMode#",
|
||||||
|
["V-Block"] = "%#VisualMode#",
|
||||||
|
["Select"] = "%#NormalMode#",
|
||||||
|
["S-Line"] = "%#NormalMode#",
|
||||||
|
["S-Block"] = "%#NormalMode#",
|
||||||
|
["Insert"] = "%#InsertMode#",
|
||||||
|
["Replace"] = "%#ReplaceMode#",
|
||||||
|
["Command"] = "%#CommandMode#",
|
||||||
|
["Prompt"] = "%#NormalMode#",
|
||||||
|
["Shell"] = "%#NormalMode#",
|
||||||
|
["Terminal"] = "%#NormalMode#",
|
||||||
|
["None"] = "%#NormalMode#"
|
||||||
|
}
|
||||||
|
return color[m]
|
||||||
|
end
|
||||||
|
|
||||||
|
-- don't return a filename that's too long
|
||||||
|
local function filename()
|
||||||
|
if vim.api.nvim_win_get_width(0) > 80 then
|
||||||
|
return "%F"
|
||||||
|
else
|
||||||
|
return "%t"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- from https://github.com/nvim-lua/lsp-status.nvim/blob/master/lua/lsp-status/diagnostics.lua
|
||||||
|
local function get_lsp_diagnostics(bufnr)
|
||||||
|
local result = {}
|
||||||
|
local levels = {
|
||||||
|
errors = "Error",
|
||||||
|
warnings = "Warning",
|
||||||
|
info = "Information",
|
||||||
|
hints = "Hint"
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, level in pairs(levels) do
|
||||||
|
result[k] = vim.lsp.diagnostic.get_count(bufnr, level)
|
||||||
|
end
|
||||||
|
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
local function process_diagnostics(prefix, n, hl)
|
||||||
|
if n > 0 then
|
||||||
|
return hl .. prefix .. n
|
||||||
|
else
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function spell_check()
|
||||||
|
if vim.wo.spell then
|
||||||
|
lang = vim.o.spelllang
|
||||||
|
return "[SPELL=" .. lang .. "]"
|
||||||
|
else
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function statusline_focused()
|
||||||
|
local diagnostics = get_lsp_diagnostics()
|
||||||
|
local mode = vim.fn.mode()
|
||||||
|
local mg = get_mode(mode)
|
||||||
|
local accent_color = get_mode_color(mg)
|
||||||
|
|
||||||
|
local left = table.concat {
|
||||||
|
gen_section("%#Buffer#", {"[%n]"}),
|
||||||
|
gen_section(accent_color, {get_mode_display_name(mg)}),
|
||||||
|
gen_section("%#Middle#", {filename()}),
|
||||||
|
gen_section("%#Bottom#", {"%m", "%r"}),
|
||||||
|
gen_section(
|
||||||
|
"%#Alert#",
|
||||||
|
{
|
||||||
|
process_diagnostics("E:", diagnostics.errors, "%#LspDiagnosticsDefaultError#"),
|
||||||
|
process_diagnostics("W:", diagnostics.warnings, "%#LspDiagnosticsDefaultWarning#"),
|
||||||
|
process_diagnostics("I:", diagnostics.info, "%#LspDiagnosticsDefaultInformation#")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
local right = table.concat {
|
||||||
|
gen_section(
|
||||||
|
"%#Bottom#",
|
||||||
|
{
|
||||||
|
spell_check(),
|
||||||
|
vim.bo.filetype
|
||||||
|
}
|
||||||
|
),
|
||||||
|
gen_section("%#Middle#", {"%03.p%%"}),
|
||||||
|
gen_section("%#Top#", {"-%03.c-"})
|
||||||
|
}
|
||||||
|
|
||||||
|
return table.concat {
|
||||||
|
left,
|
||||||
|
"%#Statusline#",
|
||||||
|
"%=",
|
||||||
|
right
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
local function statusline_not_focused()
|
||||||
|
return table.concat {
|
||||||
|
gen_section("%#StatuslineNF#", {"[%n]"}),
|
||||||
|
gen_section("%#StatuslineNF#", {filename(), "%m"}),
|
||||||
|
"%=",
|
||||||
|
gen_section("%#StatuslineNF#", {"%03.p%%"}),
|
||||||
|
gen_section("%#StatuslineNF#", {"-%03.c-"})
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function gen_statusline()
|
||||||
|
if vim.g.statusline_winid == vim.fn.win_getid() then
|
||||||
|
return statusline_focused()
|
||||||
|
else
|
||||||
|
return statusline_not_focused()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.o.statusline = "%!luaeval(\"gen_statusline()\")"
|
34
.config/nvim/lua/utils.lua
Normal file
34
.config/nvim/lua/utils.lua
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
-- Author : swytch
|
||||||
|
-- Created : Friday Mar 12, 2021 20:07:39 CET
|
||||||
|
-- License : GPLv3
|
||||||
|
-- Description : neovim utils file
|
||||||
|
|
||||||
|
local M = {} -- The module to export
|
||||||
|
local cmd = vim.cmd
|
||||||
|
|
||||||
|
-- augroup helper
|
||||||
|
function M.create_augroup(autocmds, name)
|
||||||
|
cmd("augroup " .. name)
|
||||||
|
cmd("autocmd!")
|
||||||
|
for _, autocmd in ipairs(autocmds) do
|
||||||
|
cmd("autocmd " .. table.concat(autocmd, " "))
|
||||||
|
end
|
||||||
|
cmd("augroup END")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- add a path to the rtp
|
||||||
|
function M.add_rtp(path)
|
||||||
|
local rtp = vim.o.rtp
|
||||||
|
rtp = rtp .. "," .. path
|
||||||
|
end
|
||||||
|
|
||||||
|
-- map a key with optional options
|
||||||
|
function M.map(mode, keys, action, options)
|
||||||
|
options = options or {}
|
||||||
|
vim.api.nvim_set_keymap(mode, keys, action, options)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Make it accessible everywhere
|
||||||
|
_G.utils = M
|
||||||
|
-- Export the module
|
||||||
|
return M
|
@ -16,6 +16,7 @@ binutils
|
|||||||
bison
|
bison
|
||||||
capitaine-cursors
|
capitaine-cursors
|
||||||
cdparanoia
|
cdparanoia
|
||||||
|
cmake
|
||||||
cronie
|
cronie
|
||||||
dash
|
dash
|
||||||
dunst
|
dunst
|
||||||
@ -53,7 +54,7 @@ mpv
|
|||||||
msmtp
|
msmtp
|
||||||
ncmpcpp
|
ncmpcpp
|
||||||
neomutt
|
neomutt
|
||||||
neovim
|
ninja
|
||||||
nnn
|
nnn
|
||||||
notmuch
|
notmuch
|
||||||
openvpn
|
openvpn
|
||||||
@ -80,6 +81,7 @@ texinfo
|
|||||||
texlive-core
|
texlive-core
|
||||||
texlive-latexextra
|
texlive-latexextra
|
||||||
transmission-cli
|
transmission-cli
|
||||||
|
tree-sitter
|
||||||
tremc
|
tremc
|
||||||
ttf-dejavu
|
ttf-dejavu
|
||||||
ttf-fira-sans
|
ttf-fira-sans
|
||||||
|
Reference in New Issue
Block a user