Compare commits
10 Commits
596c33595c
...
25b36c4c2a
Author | SHA1 | Date |
---|---|---|
Sven Vogel | 25b36c4c2a | |
Sven Vogel | 574c1f27ba | |
Sven Vogel | 1898a105f6 | |
Sven Vogel | 7e851622c6 | |
Sven Vogel | d8a6a44f70 | |
Sven Vogel | ec10265eb7 | |
Sven Vogel | 40d53234e5 | |
Sven Vogel | e02d24606d | |
Sven Vogel | accd0237d3 | |
Sven Vogel | ecaf12f283 |
16
init.lua
16
init.lua
|
@ -1,2 +1,16 @@
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Initialize Neovim configuration
|
||||||
|
-- ..............................................
|
||||||
|
--
|
||||||
|
-- Author: Sven Vogel
|
||||||
|
-- Created: 01.11.2024
|
||||||
|
-- Edited: 01.11.2024
|
||||||
|
--
|
||||||
|
-- ==============================================
|
||||||
|
|
||||||
|
-- Load plugin manager
|
||||||
|
-- and plugins, additonally setup global options
|
||||||
require("config.lazy")
|
require("config.lazy")
|
||||||
require("config.opts")
|
-- install custom keymaps
|
||||||
|
require("config.keys")
|
||||||
|
|
|
@ -0,0 +1,156 @@
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Global custom plugin agnostic keymaps
|
||||||
|
-- ..............................................
|
||||||
|
--
|
||||||
|
-- Author: Sven Vogel
|
||||||
|
-- Created: 01.11.2024
|
||||||
|
-- Edited: 01.11.2024
|
||||||
|
--
|
||||||
|
-- ==============================================
|
||||||
|
|
||||||
|
local keymaps = {
|
||||||
|
--
|
||||||
|
-- Write buffer to disk
|
||||||
|
-- ..............................................
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<C-s>',
|
||||||
|
cmd = vim.cmd.write,
|
||||||
|
desc = "Write buffer to disk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<C-z>',
|
||||||
|
cmd = vim.cmd.undo,
|
||||||
|
desc = "Undo last edit"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<C-y>',
|
||||||
|
cmd = vim.cmd.redo,
|
||||||
|
desc = "Redo last edit that was undone"
|
||||||
|
},
|
||||||
|
--
|
||||||
|
-- Shift line(s) by one shiftwidth
|
||||||
|
-- ..............................................
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<S-tab>',
|
||||||
|
cmd = '<cmd>:<<cr>',
|
||||||
|
desc = "Shift cursor line left"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<tab>',
|
||||||
|
cmd = '<cmd>:><cr>',
|
||||||
|
desc = "Shift cursor line right"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = { 'v' },
|
||||||
|
keys = '<tab>',
|
||||||
|
cmd = '>gv',
|
||||||
|
desc = "Shift selection in visual mode right"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = { 'v' },
|
||||||
|
keys = '<S-tab>',
|
||||||
|
cmd = '<gv',
|
||||||
|
desc = "Shift selection in visual right"
|
||||||
|
},
|
||||||
|
--
|
||||||
|
-- Buffer management
|
||||||
|
-- ..............................................
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<C-t>',
|
||||||
|
cmd = '<cmd>:enew<cr>',
|
||||||
|
desc = "Edit new, unnamed buffer"
|
||||||
|
},
|
||||||
|
--
|
||||||
|
-- Window controls
|
||||||
|
-- ..............................................
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<C-w>v',
|
||||||
|
cmd = '<cmd>:vsplit<cr>',
|
||||||
|
desc = "Split window vertically"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<C-w>h',
|
||||||
|
cmd = '<cmd>:split<cr>',
|
||||||
|
desc = "Split window horizontally"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = { 'n' },
|
||||||
|
keys = 'q',
|
||||||
|
cmd = function()
|
||||||
|
-- list of file types to ignore when counting split buffers
|
||||||
|
local ignore = { "neo-tree" }
|
||||||
|
-- number of windows per tab
|
||||||
|
local wins = vim.api.nvim_tabpage_list_wins(0)
|
||||||
|
-- count of open windows without those on ignore list
|
||||||
|
local count = 0
|
||||||
|
|
||||||
|
-- check each window for its type
|
||||||
|
for _, win in ipairs(wins) do
|
||||||
|
local buf = vim.api.nvim_win_get_buf(win)
|
||||||
|
local buf_type = vim.api.nvim_buf_get_option(buf, 'buftype')
|
||||||
|
local file_type = vim.api.nvim_buf_get_option(buf, 'filetype')
|
||||||
|
|
||||||
|
if buf_type == '' then
|
||||||
|
|
||||||
|
-- check if buffer is in ignore
|
||||||
|
in_ignore = false
|
||||||
|
for _, v in ipairs(ignore) do
|
||||||
|
if v == file_type then
|
||||||
|
in_ignore = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not in_ignore then
|
||||||
|
count = count + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if count == 1 then
|
||||||
|
-- only one buffer without any split
|
||||||
|
-- account for barbar specific behavior
|
||||||
|
vim.cmd('BufferClose')
|
||||||
|
else
|
||||||
|
-- close window
|
||||||
|
vim.cmd('q')
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
desc = "Close buffer"
|
||||||
|
},
|
||||||
|
--
|
||||||
|
-- Tab (barbar) controls
|
||||||
|
-- ..............................................
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<C-tab>',
|
||||||
|
cmd = vim.cmd('BufferNext'),
|
||||||
|
desc = "Switch to the next buffer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mode = { 'n', 'i' },
|
||||||
|
keys = '<C-S-tab>',
|
||||||
|
cmd = vim.cmd('BufferPrevious'),
|
||||||
|
desc = "Switch to the previous buffer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, keymap in pairs(keymaps) do
|
||||||
|
local mode = keymap.mode
|
||||||
|
local lhs = keymap.keys
|
||||||
|
local rhs = keymap.cmd
|
||||||
|
local opts = {
|
||||||
|
desc = keymap.desc,
|
||||||
|
noremap = keymap.noremap
|
||||||
|
}
|
||||||
|
vim.keymap.set(mode, lhs, rhs, opts)
|
||||||
|
end
|
|
@ -1,3 +1,19 @@
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Bootstrap and start Lazy.nvim plugins
|
||||||
|
-- manager.
|
||||||
|
-- ..............................................
|
||||||
|
--
|
||||||
|
-- Author: Sven Vogel
|
||||||
|
-- Created: 01.11.2024
|
||||||
|
-- Edited: 01.11.2024
|
||||||
|
--
|
||||||
|
-- ==============================================
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Bootstrap Lazy.nvim package manager
|
||||||
|
-- ..............................................
|
||||||
|
|
||||||
-- Bootstrap lazy.nvim
|
-- Bootstrap lazy.nvim
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
|
@ -15,12 +31,23 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
end
|
end
|
||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Early setup of Neovim and VIM options
|
||||||
|
-- ..............................................
|
||||||
|
|
||||||
-- Make sure to setup `mapleader` and `maplocalleader` before
|
-- Make sure to setup `mapleader` and `maplocalleader` before
|
||||||
-- loading lazy.nvim so that mappings are correct.
|
-- loading lazy.nvim so that mappings are correct.
|
||||||
-- This is also a good place to setup other settings (vim.opt)
|
-- This is also a good place to setup other settings (vim.opt)
|
||||||
vim.g.mapleader = " "
|
vim.g.mapleader = " "
|
||||||
vim.g.maplocalleader = "\\"
|
vim.g.maplocalleader = "\\"
|
||||||
|
|
||||||
|
-- load options
|
||||||
|
require("config.opts")
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Start Lazy.nvim
|
||||||
|
-- ..............................................
|
||||||
|
|
||||||
-- Setup lazy.nvim
|
-- Setup lazy.nvim
|
||||||
require("lazy").setup({
|
require("lazy").setup({
|
||||||
spec = {
|
spec = {
|
||||||
|
@ -32,4 +59,17 @@ require("lazy").setup({
|
||||||
install = { colorscheme = { "habamax" } },
|
install = { colorscheme = { "habamax" } },
|
||||||
-- automatically check for plugin updates
|
-- automatically check for plugin updates
|
||||||
checker = { enabled = false },
|
checker = { enabled = false },
|
||||||
|
rtp = {
|
||||||
|
disabled_plugins = {
|
||||||
|
"gzip",
|
||||||
|
"matchit",
|
||||||
|
"matchparen",
|
||||||
|
"netrw",
|
||||||
|
"netrwplugin",
|
||||||
|
"tarplugin",
|
||||||
|
"tohtml",
|
||||||
|
"tutor",
|
||||||
|
"zipplugin",
|
||||||
|
}
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,3 +1,19 @@
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Neovim and VIM global configuration
|
||||||
|
-- and options
|
||||||
|
-- ..............................................
|
||||||
|
--
|
||||||
|
-- Author: Sven Vogel
|
||||||
|
-- Created: 01.11.2024
|
||||||
|
-- Edited: 01.11.2024
|
||||||
|
--
|
||||||
|
-- ==============================================
|
||||||
|
|
||||||
|
--
|
||||||
|
-- neovim global options
|
||||||
|
-- ..............................................
|
||||||
|
|
||||||
local opt = vim.opt
|
local opt = vim.opt
|
||||||
|
|
||||||
opt.clipboard = vim.env.SSH_TTY and "" or "unnamedplus" -- Sync with system clipboard
|
opt.clipboard = vim.env.SSH_TTY and "" or "unnamedplus" -- Sync with system clipboard
|
||||||
|
@ -14,3 +30,14 @@ opt.termguicolors = true -- True color support
|
||||||
opt.virtualedit = "block" -- Allow cursor to move where there is no text in visual block mode
|
opt.virtualedit = "block" -- Allow cursor to move where there is no text in visual block mode
|
||||||
opt.wrap = false
|
opt.wrap = false
|
||||||
opt.smoothscroll = true
|
opt.smoothscroll = true
|
||||||
|
opt.swapfile = false -- disable swapfiles because they are fucking garbage
|
||||||
|
opt.smartindent = true
|
||||||
|
|
||||||
|
--
|
||||||
|
-- VIM global options
|
||||||
|
-- ..............................................
|
||||||
|
|
||||||
|
-- disable netrw
|
||||||
|
vim.g.loaded_netrw = 1
|
||||||
|
vim.g.loaded_netrwPlugin = 1
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'romgrk/barbar.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'lewis6991/gitsigns.nvim', -- OPTIONAL: for git status
|
||||||
|
'nvim-tree/nvim-web-devicons', -- OPTIONAL: for file icons
|
||||||
|
},
|
||||||
|
init = function()
|
||||||
|
vim.g.barbar_auto_setup = false
|
||||||
|
end,
|
||||||
|
opts = {
|
||||||
|
auto_hide = 1,
|
||||||
|
tabpages = true,
|
||||||
|
clickable = true,
|
||||||
|
-- Set the filetypes which barbar will offset itself for
|
||||||
|
sidebar_filetypes = {
|
||||||
|
['neo-tree'] = {event = 'BufWipeout'}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
version = '^1.0.0'
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Global custom plugin agnostic keymaps
|
||||||
|
--
|
||||||
|
-- Source: https://github.com/Eandrju/cellular-automaton.nvim
|
||||||
|
-- ..............................................
|
||||||
|
--
|
||||||
|
-- Author: Sven Vogel
|
||||||
|
-- Created: 01.11.2024
|
||||||
|
-- Edited: 01.11.2024
|
||||||
|
--
|
||||||
|
-- ==============================================
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'eandrju/cellular-automaton.nvim'
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
return {
|
||||||
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
|
lazy = false,
|
||||||
|
branch = "v3.x",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
"MunifTanjim/nui.nvim"
|
||||||
|
},
|
||||||
|
cmd = "Neotree",
|
||||||
|
opts = {
|
||||||
|
source_selector = {
|
||||||
|
winbar = true,
|
||||||
|
statusline = false,
|
||||||
|
sources = {
|
||||||
|
{
|
||||||
|
source = "filesystem",
|
||||||
|
display_name = " Files "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source = "buffers",
|
||||||
|
display_name = " Buffers "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
source = "document_symbols",
|
||||||
|
display_name = " Git "
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filesystem = {
|
||||||
|
bind_to_cwd = false,
|
||||||
|
follow_current_file = { enabled = true },
|
||||||
|
use_libuv_file_watcher = true,
|
||||||
|
hijack_netrw_behavior = "open_default",
|
||||||
|
filtered_items = {
|
||||||
|
hide_dotfiles = false,
|
||||||
|
hide_gitignored = false,
|
||||||
|
hide_hidden = false, -- only works on Windows for hidden files/directories
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
position = "left"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
close_if_last_window = false,
|
||||||
|
default_component_configs = {
|
||||||
|
container = {
|
||||||
|
enable_character_fade = true
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
indent_size = 2,
|
||||||
|
padding = 1, -- extra padding on left hand side
|
||||||
|
with_markers = true,
|
||||||
|
indent_marker = "│",
|
||||||
|
last_indent_marker = "└",
|
||||||
|
with_expanders = true, -- if nil and file nesting is enabled, will enable expanders
|
||||||
|
expander_collapsed = "",
|
||||||
|
expander_expanded = "",
|
||||||
|
expander_highlight = "NeoTreeExpander",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue