add more configs
- add basic.lua - plugin/explorer: add nvim-tree plugin - plugin/theme: add catppuccin-nvim plugin - plugin/syntax: add more grammars
This commit is contained in:
parent
b82eb761c4
commit
841751ff30
7 changed files with 263 additions and 5 deletions
210
basic.lua
Normal file
210
basic.lua
Normal file
|
@ -0,0 +1,210 @@
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
--
|
||||||
|
-- Basic Settings
|
||||||
|
--
|
||||||
|
|
||||||
|
vim.cmd("filetype off")
|
||||||
|
|
||||||
|
-- Leaders
|
||||||
|
vim.g.mapleader = ","
|
||||||
|
vim.g.maplocalleader = "-"
|
||||||
|
|
||||||
|
-- Better Unix support
|
||||||
|
vim.opt.viewoptions = { "folds", "options", "cursor", "unix", "slash" }
|
||||||
|
vim.opt.encoding = "utf-8"
|
||||||
|
|
||||||
|
-- True color support
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
|
||||||
|
-- Theme (required plugin 'material-vim')
|
||||||
|
-- Available styles: default, planight, ocean, lighter
|
||||||
|
-- darker, default-community, palenight-community, ocean-community,
|
||||||
|
-- lighter-community, darker-community
|
||||||
|
-- vim.g.material_theme_style = "default"
|
||||||
|
-- vim.g.lightline = { colorscheme = "material_vim" }
|
||||||
|
-- vim.cmd("colorscheme material")
|
||||||
|
|
||||||
|
-- Other options
|
||||||
|
vim.cmd("syntax on")
|
||||||
|
vim.opt.backspace = { "indent", "eol", "start" }
|
||||||
|
vim.opt.laststatus = 2
|
||||||
|
vim.opt.showmode = false
|
||||||
|
|
||||||
|
-- Tabs as spaces
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.tabstop = 2
|
||||||
|
vim.opt.softtabstop = 2
|
||||||
|
vim.opt.shiftwidth = 2
|
||||||
|
|
||||||
|
-- Fixes broken cursor on Linux
|
||||||
|
vim.opt.guicursor = ""
|
||||||
|
|
||||||
|
-- Disable mouse / touchpad
|
||||||
|
vim.opt.mouse = ""
|
||||||
|
|
||||||
|
-- Incremental substitutin
|
||||||
|
vim.opt.inccommand = "split"
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
--
|
||||||
|
-- General editor options
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Hide files when leaving them.
|
||||||
|
vim.opt.hidden = true
|
||||||
|
-- Show line numbers.
|
||||||
|
vim.opt.number = true
|
||||||
|
-- Minimum line number column width.
|
||||||
|
vim.opt.numberwidth = 1
|
||||||
|
-- Number of screen lines to use for the commandline.
|
||||||
|
vim.opt.cmdheight = 2
|
||||||
|
-- Lines length limit (0 if no limit).
|
||||||
|
vim.opt.textwidth = 0
|
||||||
|
-- Don't cut lines in the middle of a work.
|
||||||
|
vim.opt.linebreak = true
|
||||||
|
-- Show matching parenthesis.
|
||||||
|
vim.opt.showmatch = true
|
||||||
|
-- Time during which the matching parenthesis is shown.
|
||||||
|
vim.opt.matchtime = 2
|
||||||
|
-- Sensible default line auto cutting and formatting.
|
||||||
|
vim.opt.formatoptions = "jtcrq"
|
||||||
|
-- Copy/Past to/from clipboard.
|
||||||
|
vim.opt.clipboard = "unnamedplus"
|
||||||
|
-- Highlight line cursor is currently on.
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
-- Invisible characters representation when :set list
|
||||||
|
vim.opt.listchars = {
|
||||||
|
tab = "→ ",
|
||||||
|
trail = "~",
|
||||||
|
nbsp = "␣",
|
||||||
|
eol = "¬",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Search
|
||||||
|
-- Incremental search.
|
||||||
|
vim.opt.incsearch = true
|
||||||
|
-- Case insensitive.
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
-- Case insensitive if no uppercase letter in pattern, case sensitive otherwise.
|
||||||
|
vim.opt.smartcase = true
|
||||||
|
|
||||||
|
-- Spell
|
||||||
|
vim.opt.spelllang = "en,ru"
|
||||||
|
|
||||||
|
-- Fold level
|
||||||
|
vim.opt.foldlevel = 99
|
||||||
|
vim.opt.foldlevelstart = 99
|
||||||
|
vim.opt.foldminlines = 3
|
||||||
|
vim.opt.foldnestmax = 5
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
--
|
||||||
|
-- File type specified
|
||||||
|
--
|
||||||
|
local bufReadFile = { "BufNewFile", "BufRead" }
|
||||||
|
|
||||||
|
-- Set up a line limiter for each lang
|
||||||
|
local line_limiter_augroup = vim.api.nvim_create_augroup("line_limiter", {})
|
||||||
|
local function set_line_limiter(limit, patterns)
|
||||||
|
vim.api.nvim_create_autocmd(bufReadFile, {
|
||||||
|
pattern = patterns,
|
||||||
|
group = line_limiter_augroup,
|
||||||
|
callback = function()
|
||||||
|
vim.wo.colorcolumn = tostring(limit)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
set_line_limiter(101, {
|
||||||
|
"*.nix",
|
||||||
|
"*.vim",
|
||||||
|
"*.lua",
|
||||||
|
"*.ts",
|
||||||
|
"*.tsx",
|
||||||
|
"*.js",
|
||||||
|
"*.jsx",
|
||||||
|
"*.rs",
|
||||||
|
})
|
||||||
|
set_line_limiter(81, {
|
||||||
|
"*.json",
|
||||||
|
"*.yml",
|
||||||
|
"*.yaml",
|
||||||
|
"*.md",
|
||||||
|
"*.html",
|
||||||
|
"*.css",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Spell check for markdown files
|
||||||
|
local spell_check_augroup = vim.api.nvim_create_augroup("spell_check", {})
|
||||||
|
vim.api.nvim_create_autocmd(bufReadFile, {
|
||||||
|
pattern = { "*.md" },
|
||||||
|
group = spell_check_augroup,
|
||||||
|
callback = function()
|
||||||
|
vim.wo.spell = true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Set up fold method for each lang
|
||||||
|
local folding_augroup = vim.api.nvim_create_augroup("folding", {})
|
||||||
|
vim.api.nvim_create_autocmd(bufReadFile, {
|
||||||
|
group = folding_augroup,
|
||||||
|
pattern = {
|
||||||
|
"*.js",
|
||||||
|
"*.jsx",
|
||||||
|
"*.ts",
|
||||||
|
"*.tsx",
|
||||||
|
},
|
||||||
|
callback = function()
|
||||||
|
vim.cmd("syntax on")
|
||||||
|
vim.wo.foldmethod = "syntax"
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
--
|
||||||
|
-- Bindings
|
||||||
|
--
|
||||||
|
local function clear_search_hl()
|
||||||
|
vim.opt.hlsearch = false
|
||||||
|
end
|
||||||
|
vim.keymap.set("n", "<C-z>", clear_search_hl, { desc = "Clear search highlighting" })
|
||||||
|
|
||||||
|
-- Enable fast navigation between windows
|
||||||
|
vim.keymap.set("n", "<C-h>", "<C-W>h")
|
||||||
|
vim.keymap.set("n", "<C-l>", "<C-W>l")
|
||||||
|
vim.keymap.set("n", "<C-j>", "<C-W>j")
|
||||||
|
vim.keymap.set("n", "<C-k>", "<C-W>k")
|
||||||
|
|
||||||
|
-- Disable the annoying and useless ex-mode
|
||||||
|
vim.keymap.set("n", "Q", "<nop>")
|
||||||
|
vim.keymap.set("n", "gQ", "<nop>")
|
||||||
|
|
||||||
|
-- Disable arrow keys
|
||||||
|
vim.keymap.set("n", "<Up>", "<nop>")
|
||||||
|
vim.keymap.set("n", "<Down>", "<nop>")
|
||||||
|
vim.keymap.set("n", "<Left>", "<nop>")
|
||||||
|
vim.keymap.set("n", "<Right>", "<nop>")
|
||||||
|
vim.keymap.set("v", "<Up>", "<nop>")
|
||||||
|
vim.keymap.set("v", "<Down>", "<nop>")
|
||||||
|
vim.keymap.set("v", "<Left>", "<nop>")
|
||||||
|
vim.keymap.set("v", "<Right>", "<nop>")
|
||||||
|
-- ... instead of insert mode for rus lang and popups
|
||||||
|
-- vim.keymap.set("i", "<Up>", "<nop>")
|
||||||
|
-- vim.keymap.set("i", "<Down>", "<nop>")
|
||||||
|
-- vim.keymap.set("i", "<Left>", "<nop>")
|
||||||
|
-- vim.keymap.set("i", "<Right>", "<nop>")
|
||||||
|
|
||||||
|
-- Disable page up / down
|
||||||
|
vim.keymap.set("n", "<PageUp>", "<nop>")
|
||||||
|
vim.keymap.set("n", "<PageDown>", "<nop>")
|
||||||
|
vim.keymap.set("v", "<PageUp>", "<nop>")
|
||||||
|
vim.keymap.set("v", "<PageDown>", "<nop>")
|
||||||
|
vim.keymap.set("i", "<PageUp>", "<nop>")
|
||||||
|
vim.keymap.set("i", "<PageDown>", "<nop>")
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
--
|
||||||
|
-- Abbreviatures
|
||||||
|
--
|
||||||
|
vim.cmd("cabbrev bsp belowright split")
|
||||||
|
vim.cmd("cabbrev rvsp belowright vsplit")
|
12
default.nix
12
default.nix
|
@ -3,10 +3,16 @@
|
||||||
let
|
let
|
||||||
lib = import ./lib.nix;
|
lib = import ./lib.nix;
|
||||||
|
|
||||||
plugins = [
|
callPlugins = list: builtins.map (p: callPackage p { }) list;
|
||||||
(callPackage ./syntax { })
|
|
||||||
|
plugins = callPlugins [
|
||||||
|
./syntax
|
||||||
|
./explorer
|
||||||
|
./theme
|
||||||
];
|
];
|
||||||
|
|
||||||
|
basicConfig = builtins.readFile ./basic.lua;
|
||||||
|
|
||||||
in
|
in
|
||||||
wrapNeovim neovim-unwrapped {
|
wrapNeovim neovim-unwrapped {
|
||||||
withPython3 = false;
|
withPython3 = false;
|
||||||
|
@ -14,7 +20,7 @@ wrapNeovim neovim-unwrapped {
|
||||||
withRuby = false;
|
withRuby = false;
|
||||||
|
|
||||||
configure = {
|
configure = {
|
||||||
customRC = lib.mkLuaRc (lib.extractAttrs "luaConfig" plugins);
|
customRC = lib.mkLuaRc ([ basicConfig ] ++ lib.extractAttrs "luaConfig" plugins);
|
||||||
|
|
||||||
packages.myVimPackages =
|
packages.myVimPackages =
|
||||||
{ start = lib.extractAttrs "plugins" plugins; };
|
{ start = lib.extractAttrs "plugins" plugins; };
|
||||||
|
|
9
explorer/default.nix
Normal file
9
explorer/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ vimPlugins, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
luaConfig = builtins.readFile ./nvim-tree.lua;
|
||||||
|
|
||||||
|
plugins = [
|
||||||
|
vimPlugins.nvim-tree-lua
|
||||||
|
];
|
||||||
|
}
|
12
explorer/nvim-tree.lua
Normal file
12
explorer/nvim-tree.lua
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
-- See: https://github.com/kyazdani42/nvim-tree.lua/blob/master/doc/nvim-tree-lua.txt
|
||||||
|
|
||||||
|
-- disable netrw at the very start of your init.lua (strongly advised)
|
||||||
|
vim.g.loaded = 1
|
||||||
|
vim.g.loaded_netrwPlugin = 1
|
||||||
|
|
||||||
|
-- empty setup using defaults
|
||||||
|
require("nvim-tree").setup()
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>nt", ":NvimTreeFocus<CR>")
|
||||||
|
vim.keymap.set("n", "<leader>nf", ":NvimTreeFindFile<CR>")
|
||||||
|
|
|
@ -5,8 +5,17 @@
|
||||||
|
|
||||||
plugins = [
|
plugins = [
|
||||||
(vimPlugins.nvim-treesitter.withPlugins
|
(vimPlugins.nvim-treesitter.withPlugins
|
||||||
(ts: [
|
(ts: with ts; [
|
||||||
ts.tree-sitter-nix
|
tree-sitter-nix
|
||||||
|
tree-sitter-lua
|
||||||
|
tree-sitter-ledger
|
||||||
|
tree-sitter-yaml
|
||||||
|
tree-sitter-json
|
||||||
|
tree-sitter-typescript
|
||||||
|
tree-sitter-javascript
|
||||||
|
tree-sitter-rust
|
||||||
|
tree-sitter-haskell
|
||||||
|
tree-sitter-bash
|
||||||
]))
|
]))
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
5
theme/catppuccin-nvim.lua
Normal file
5
theme/catppuccin-nvim.lua
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
vim.g.catppuccin_flavour = "frappe" -- latte, frappe, macchiato, mocha
|
||||||
|
|
||||||
|
require("catppuccin").setup()
|
||||||
|
|
||||||
|
vim.cmd [[colorscheme catppuccin]]
|
7
theme/default.nix
Normal file
7
theme/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{ vimPlugins, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
luaConfig = builtins.readFile ./catppuccin-nvim.lua;
|
||||||
|
|
||||||
|
plugins = [ vimPlugins.catppuccin-nvim ];
|
||||||
|
}
|
Reference in a new issue