mirror of
https://github.com/kristoferssolo/SoloVim.git
synced 2026-02-04 06:42:05 +00:00
Update 03.09.2023
Changed file structure (again); Added some plugings and more
This commit is contained in:
83
lua/solo/autocmds.lua
Normal file
83
lua/solo/autocmds.lua
Normal file
@@ -0,0 +1,83 @@
|
||||
-- Use 'q' to quit from common plugins
|
||||
vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||
pattern = { "qf", "help", "man", "lspinfo", "spectre_panel", "lir", "git", "dap-float" },
|
||||
callback = function()
|
||||
vim.cmd([[ nnoremap <silent> <buffer> q :close<cr>
|
||||
set nobuflisted
|
||||
]])
|
||||
end,
|
||||
})
|
||||
|
||||
-- Fixes Autocomment
|
||||
vim.api.nvim_create_autocmd({ "BufWinEnter" }, {
|
||||
callback = function()
|
||||
vim.cmd("set formatoptions-=cro")
|
||||
end,
|
||||
})
|
||||
|
||||
-- Highlight Yanked Text
|
||||
vim.api.nvim_create_autocmd({ "TextYankPost" }, {
|
||||
callback = function()
|
||||
vim.highlight.on_yank({ higroup = "Visual", timeout = 200 })
|
||||
end,
|
||||
})
|
||||
|
||||
-- Format File on Save
|
||||
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
|
||||
callback = function()
|
||||
vim.lsp.buf.format()
|
||||
end,
|
||||
})
|
||||
|
||||
-- Center on InsertEnter
|
||||
vim.api.nvim_create_autocmd({ "InsertEnter" }, {
|
||||
callback = function()
|
||||
vim.cmd("norm zz")
|
||||
end,
|
||||
})
|
||||
|
||||
-- Autocommand that reloads waybar whenever you save the ~/.config/waybar/config file
|
||||
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
|
||||
group = vim.api.nvim_create_augroup("AutoReloadWaybar", { clear = true }),
|
||||
pattern = { "**/waybar/config", "**/waybar/style.css" },
|
||||
callback = function()
|
||||
vim.cmd("!pkill waybar && waybar & disown")
|
||||
end,
|
||||
})
|
||||
|
||||
-- Autocommand that sources neovim files on save
|
||||
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
|
||||
group = vim.api.nvim_create_augroup("AutoReloadConfig", { clear = true }),
|
||||
pattern = { "**/nvim/**/*.lua", "**/SoloVim/**/*.lua" },
|
||||
callback = function()
|
||||
local file_path = vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf())
|
||||
vim.cmd.source(file_path)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Remove trailing whitespaces on save
|
||||
-- vim.api.nvim_create_autocmd({ "BufWritePre" }, {
|
||||
-- group = vim.api.nvim_create_augroup("RemoveTrailingWhitespaces", { clear = true }),
|
||||
-- pattern = "*",
|
||||
-- callback = function()
|
||||
-- vim.cmd([[%s/\s\+$//e]])
|
||||
-- end,
|
||||
-- })
|
||||
|
||||
-- Run `Lazy` on file save
|
||||
-- vim.api.nvim_create_autocmd({ "BufWritePost" }, {
|
||||
-- group = vim.api.nvim_create_augroup("AutoPackerSync", { clear = true }),
|
||||
-- pattern = { "**/lua/plugins/*" },
|
||||
-- callback = function()
|
||||
-- require("lazy").sync()
|
||||
-- end,
|
||||
-- })
|
||||
|
||||
-- Set vertical column for specific files
|
||||
-- vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||
-- group = vim.api.nvim_create_augroup("SetColorColumn", { clear = true }),
|
||||
-- pattern = { "lua" },
|
||||
-- callback = function()
|
||||
-- vim.cmd.setlocal("colorcolumn=120")
|
||||
-- end,
|
||||
-- })
|
||||
5
lua/solo/init.lua
Normal file
5
lua/solo/init.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
require("solo.options")
|
||||
require("solo.keymaps")
|
||||
require("solo.vimwiki")
|
||||
require("solo.lazy")
|
||||
require("solo.autocmds")
|
||||
58
lua/solo/keymaps.lua
Normal file
58
lua/solo/keymaps.lua
Normal file
@@ -0,0 +1,58 @@
|
||||
local nmap = require("solo.mappings").nmap
|
||||
local xmap = require("solo.mappings").xmap
|
||||
local vmap = require("solo.mappings").vmap
|
||||
local tmap = require("solo.mappings").tmap
|
||||
|
||||
vim.keymap.set("", "<space>", "<nop>")
|
||||
nmap("Q", "<nop>")
|
||||
nmap("q", "<nop>")
|
||||
nmap("<C-space>", "<nop>")
|
||||
|
||||
nmap("J", "mzJ`z")
|
||||
nmap("<C-d>", "<C-d>zz")
|
||||
nmap("<C-u>", "<C-u>zz")
|
||||
nmap("n", "nzzzv")
|
||||
nmap("N", "Nzzzv")
|
||||
|
||||
nmap("<C-h>", vim.cmd.TmuxNavigateLeft, "Focus window left")
|
||||
nmap("<C-j>", vim.cmd.TmuxNavigateDown, "Focus window down")
|
||||
nmap("<C-k>", vim.cmd.TmuxNavigateUp, "Focus window up")
|
||||
nmap("<C-l>", vim.cmd.TmuxNavigateRight, "Focus window right")
|
||||
|
||||
nmap("<C-Up>", "<cmd>resize -2<cr>", "Resize window up")
|
||||
nmap("<C-Down>", "<cmd>resize +2<cr>", "Resize window down")
|
||||
nmap("<C-Left>", "<cmd>vertical resize -2<cr>", "Resize window left")
|
||||
nmap("<C-Right>", "<cmd>vertical resize +2<cr>", "Resize window right")
|
||||
|
||||
nmap("<C-f>", "<cmd>!tmux neww tmux-sessionizer<cr>", "Open tmux sessionizer")
|
||||
|
||||
nmap("<A-k>", "<cmd>m .-2<cr>==", "Move line up")
|
||||
nmap("<A-j>", "<cmd>m .+1<cr>==", "Move line down")
|
||||
|
||||
nmap("<S-s>", ":%s/<C-r><C-w>/<C-r><C-w>/gI<Left><Left><Left>", "[S]ubstitute word")
|
||||
-- nmap("<C-b>", "<cmd>w!<cr><cmd>!compiler '%:p'<cr>")
|
||||
-- nmap("<C-o>", "<cmd>w!<cr><cmd>!opout '%:p'<cr>")
|
||||
|
||||
xmap("p", '"_dP')
|
||||
vim.keymap.set(
|
||||
"c",
|
||||
"<C-j>",
|
||||
'pumvisible() ? "\\<C-n>" : "\\<C-j>"',
|
||||
{ expr = true, noremap = true, desc = "Prev command" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"c",
|
||||
"<C-k>",
|
||||
'pumvisible() ? "\\<C-p>" : "\\<C-k>"',
|
||||
{ expr = true, noremap = true, desc = "Next command" }
|
||||
)
|
||||
|
||||
vmap(">", ">gv", "Right Indent")
|
||||
vmap("<", "<gv", "Left Indent")
|
||||
vmap("<A-k>", ":m '<-2<cr>gv=gv", "Move lines up")
|
||||
vmap("<A-j>", ":m '>+1<cr>gv=gv", "Move lines down")
|
||||
|
||||
tmap("t", "<C-h>", "<C-\\><C-N><C-w>h")
|
||||
tmap("t", "<C-j>", "<C-\\><C-N><C-w>j")
|
||||
tmap("t", "<C-k>", "<C-\\><C-N><C-w>k")
|
||||
tmap("t", "<C-l>", "<C-\\><C-N><C-w>l")
|
||||
14
lua/solo/lazy.lua
Normal file
14
lua/solo/lazy.lua
Normal file
@@ -0,0 +1,14 @@
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system({
|
||||
"git",
|
||||
"clone",
|
||||
"--filter=blob:none",
|
||||
"https://github.com/folke/lazy.nvim.git",
|
||||
"--branch=stable", -- latest stable release
|
||||
lazypath,
|
||||
})
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("lazy").setup("plugins")
|
||||
35
lua/solo/mappings.lua
Normal file
35
lua/solo/mappings.lua
Normal file
@@ -0,0 +1,35 @@
|
||||
local M = {}
|
||||
|
||||
-- Modes
|
||||
-- normal_mode = "n",
|
||||
-- insert_mode = "i",
|
||||
-- visual_mode = "v",
|
||||
-- visual_block_mode = "x",
|
||||
-- term_mode = "t",
|
||||
-- command_mode = "c",
|
||||
--
|
||||
|
||||
M.nmap = function(keys, func, desc)
|
||||
vim.keymap.set("n", keys, func, { desc = desc })
|
||||
end
|
||||
|
||||
M.imap = function(keys, func, desc)
|
||||
vim.keymap.set("i", keys, func, { desc = desc })
|
||||
end
|
||||
|
||||
M.vmap = function(keys, func, desc)
|
||||
vim.keymap.set("v", keys, func, { desc = desc })
|
||||
end
|
||||
|
||||
M.xmap = function(keys, func, desc)
|
||||
vim.keymap.set("x", keys, func, { desc = desc })
|
||||
end
|
||||
|
||||
M.tmap = function(keys, func, desc)
|
||||
vim.keymap.set("t", keys, func, { desc = desc })
|
||||
end
|
||||
|
||||
M.cmap = function(keys, func, desc)
|
||||
vim.keymap.set("c", keys, func, { desc = desc })
|
||||
end
|
||||
return M
|
||||
63
lua/solo/options.lua
Normal file
63
lua/solo/options.lua
Normal file
@@ -0,0 +1,63 @@
|
||||
vim.opt.backup = false -- creates a backup file
|
||||
vim.opt.breakindent = true -- Enable break indent
|
||||
vim.opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard
|
||||
vim.opt.cmdheight = 1 -- more space in the neovim command line for displaying messages
|
||||
vim.opt.colorcolumn = "120"
|
||||
vim.opt.completeopt = { "menuone", "noselect" } -- mostly just for cmp
|
||||
vim.opt.conceallevel = 0 -- so that `` is visible in markdown files
|
||||
vim.opt.cursorcolumn = true -- highlight the current column
|
||||
vim.opt.cursorline = true -- highlight the current line
|
||||
vim.opt.expandtab = true -- convert tabs to spaces
|
||||
vim.opt.fileencoding = "utf-8" -- the encoding written to a file
|
||||
vim.opt.fillchars.eob = " "
|
||||
vim.opt.foldmethod = "manual"
|
||||
vim.opt.guifont = "JetBrainsMono NF:h11" -- the font used in graphical neovim applications
|
||||
vim.opt.hlsearch = false -- highlight all matches on previous search pattern
|
||||
vim.opt.ignorecase = true -- ignore case in search patterns
|
||||
vim.opt.incsearch = true
|
||||
vim.opt.isfname:append("@-@")
|
||||
vim.opt.iskeyword:append("-")
|
||||
vim.opt.laststatus = 3
|
||||
vim.opt.mouse = "a" -- allow the mouse to be used in neovim
|
||||
vim.opt.number = true -- set numbered lines
|
||||
vim.opt.numberwidth = 4 -- set number column width to 4 {default 4}
|
||||
vim.opt.pumheight = 10 -- pop up menu height
|
||||
vim.opt.relativenumber = true -- set relative numbered lines
|
||||
vim.opt.ruler = false
|
||||
vim.opt.scrolloff = 8 -- is one of my fav
|
||||
vim.opt.shiftwidth = 4 -- the number of spaces inserted for each indentation
|
||||
vim.opt.shortmess:append("c")
|
||||
vim.opt.showcmd = false
|
||||
vim.opt.showmode = false -- we don't need to see things like -- INSERT -- anymore
|
||||
vim.opt.showtabline = 0 -- disable tabs
|
||||
vim.opt.sidescrolloff = 8
|
||||
vim.opt.signcolumn = "yes" -- always show the sign column otherwise it would shift the text each time
|
||||
vim.opt.smartcase = true -- smart case
|
||||
vim.opt.smartindent = true -- make indenting smarter again
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.spell = false
|
||||
vim.opt.spelloptions:append("camel")
|
||||
vim.opt.splitbelow = true -- force all horizontal splits to go below current window
|
||||
vim.opt.splitright = true -- force all vertical splits to go to the right of current window
|
||||
vim.opt.swapfile = false -- creates a swapfile
|
||||
vim.opt.tabstop = 4 -- insert 4 spaces for a tab
|
||||
vim.opt.termguicolors = true -- set term gui colors (most terminals support this)
|
||||
vim.opt.timeoutlen = 250 -- time to wait for a mapped sequence to complete (in milliseconds)
|
||||
vim.opt.undodir = vim.fn.stdpath("data") .. "/nvim/undodir"
|
||||
vim.opt.undofile = true -- enable persistent undo
|
||||
vim.opt.updatetime = 50 -- faster completion (4000ms default)
|
||||
vim.opt.whichwrap:append("<,>,[,],h,l")
|
||||
vim.opt.wrap = false -- display lines as one long line
|
||||
vim.opt.writebackup = false -- if a file is being edited by another program (or was written to file while editing with another program) it is not allowed to be edit
|
||||
|
||||
vim.opt_local.path:prepend(vim.fn.stdpath("config") .. "/lua")
|
||||
vim.opt_local.suffixesadd:prepend(".lua")
|
||||
vim.opt_local.suffixesadd:prepend("init.lua")
|
||||
|
||||
vim.g.mapleader = " "
|
||||
vim.g.maplocalleader = " "
|
||||
vim.g.netrw_banner = 0
|
||||
vim.g.netrw_browse_split = 0
|
||||
vim.g.netrw_keepdir = 0
|
||||
vim.g.netrw_localcopydircmd = "cp -r"
|
||||
vim.g.netrw_winsize = 30
|
||||
80
lua/solo/snips.lua
Normal file
80
lua/solo/snips.lua
Normal file
@@ -0,0 +1,80 @@
|
||||
if not pcall(require, "luasnip") then
|
||||
return
|
||||
end
|
||||
|
||||
local ls = require("luasnip")
|
||||
local f = ls.function_node
|
||||
local s = ls.snippet
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
|
||||
--[[
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local sn = ls.snippet_node
|
||||
local isn = ls.indent_snippet_node
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
local f = ls.function_node
|
||||
local c = ls.choice_node
|
||||
local d = ls.dynamic_node
|
||||
local r = ls.restore_node
|
||||
local events = require("luasnip.util.events")
|
||||
local ai = require("luasnip.nodes.absolute_indexer")
|
||||
local extras = require("luasnip.extras")
|
||||
local l = extras.lambda
|
||||
local rep = extras.rep
|
||||
local p = extras.partial
|
||||
local m = extras.match
|
||||
local n = extras.nonempty
|
||||
local dl = extras.dynamic_lambda
|
||||
local fmt = require("luasnip.extras.fmt").fmt
|
||||
local fmta = require("luasnip.extras.fmt").fmta
|
||||
local conds = require("luasnip.extras.expand_conditions")
|
||||
local postfix = require("luasnip.extras.postfix").postfix
|
||||
local types = require("luasnip.util.types")
|
||||
local parse = require("luasnip.util.parser").parse_snippet
|
||||
local ms = ls.multi_snippet
|
||||
]]
|
||||
|
||||
require("luasnip/loaders/from_vscode").lazy_load()
|
||||
|
||||
local shortcut = function(val)
|
||||
if type(val) == "string" then
|
||||
return { t({ val }), i(0) }
|
||||
end
|
||||
if type(val) == "table" then
|
||||
for k, v in ipairs(val) do
|
||||
if type(v) == "string" then
|
||||
val[k] = t({ v })
|
||||
end
|
||||
end
|
||||
end
|
||||
return val
|
||||
end
|
||||
|
||||
local M = {}
|
||||
|
||||
M.same = function(index)
|
||||
return f(function(args)
|
||||
return args[1]
|
||||
end, { index })
|
||||
end
|
||||
|
||||
M.year = function()
|
||||
return os.date("%Y")
|
||||
end
|
||||
|
||||
M.date = function()
|
||||
return os.date("%d.%m.%Y")
|
||||
end
|
||||
|
||||
M.make = function(tbl)
|
||||
local result = {}
|
||||
for k, v in pairs(tbl) do
|
||||
table.insert(result, (s({ trig = k, desc = v.desc }, shortcut(v))))
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
return M
|
||||
13
lua/solo/vimwiki.lua
Normal file
13
lua/solo/vimwiki.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
vim.g.vimwiki_list = {
|
||||
{
|
||||
path = "~/vimwiki",
|
||||
syntax = "markdown",
|
||||
ext = ".md",
|
||||
},
|
||||
}
|
||||
vim.g.vimwiki_ext2syntax = {
|
||||
[".md"] = "markdown",
|
||||
[".markdown"] = "markdown",
|
||||
[".mdown"] = "markdown",
|
||||
}
|
||||
vim.g.vimwiki_global_ext = 1
|
||||
Reference in New Issue
Block a user