- toggle term added - langmap added - norg and markdown files wordwrap and linebreak - clipboard image plugin added - dap go added - dressing plugin added - easytables plugin - image viewer plugin added - kanagawa theme added, but disabled - ltex (checks writing correctness) plugin added - markdown preview plugin added - markview plugin added - lsp signature plugin added - neorg plugin added - otter plugin added - pastify plugin added - project nvim plugin added
147 lines
5.1 KiB
Lua
147 lines
5.1 KiB
Lua
-- Set <space> as the leader key
|
||
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
|
||
vim.g.mapleader = " "
|
||
vim.g.maplocalleader = " "
|
||
|
||
-- Set the number of spaces to use for each step of (auto)indent
|
||
vim.opt.tabstop = 2 -- Number of spaces that a <Tab> counts for
|
||
vim.opt.shiftwidth = 2 -- Number of spaces to use for each step of (auto)indent
|
||
vim.opt.expandtab = true -- Use spaces instead of tabs
|
||
|
||
-- word wrap options
|
||
vim.opt.wrap = false -- disable wrap
|
||
|
||
-- true if have nerd font installed
|
||
vim.g.have_nerd_font = true
|
||
|
||
-- [[ Setting options ]]
|
||
-- See `:help vim.opt`
|
||
-- NOTE: You can change these options as you wish!
|
||
-- For more options, you can see `:help option-list`
|
||
|
||
-- Make line numbers default
|
||
vim.opt.relativenumber = true
|
||
|
||
-- Enable mouse mode, can be useful for resizing splits for example!
|
||
vim.opt.mouse = "a"
|
||
|
||
-- Don't show the mode, since it's already in the status line
|
||
vim.opt.showmode = false
|
||
|
||
-- Sync clipboard between OS and Neovim.
|
||
vim.opt.clipboard = "unnamedplus"
|
||
|
||
-- Enable break indent
|
||
vim.opt.breakindent = true
|
||
|
||
-- Save undo history
|
||
vim.opt.undofile = true
|
||
|
||
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
|
||
vim.opt.ignorecase = true
|
||
vim.opt.smartcase = true
|
||
|
||
-- Keep signcolumn on by default
|
||
vim.opt.signcolumn = "yes"
|
||
|
||
-- Decrease update time
|
||
vim.opt.updatetime = 250
|
||
|
||
-- Decrease mapped sequence wait time
|
||
-- Displays which-key popup sooner
|
||
vim.opt.timeoutlen = 300
|
||
|
||
-- Configure how new splits should be opened
|
||
vim.opt.splitright = true
|
||
vim.opt.splitbelow = true
|
||
|
||
-- Sets how neovim will display certain whitespace characters in the editor.
|
||
-- See `:help 'list'`
|
||
-- and `:help 'listchars'`
|
||
vim.opt.list = true
|
||
vim.opt.listchars = { tab = " ", trail = "·", nbsp = "␣" }
|
||
|
||
-- Preview substitutions live, as you type!
|
||
vim.opt.inccommand = "split"
|
||
|
||
-- Show which line your cursor is on
|
||
vim.opt.cursorline = true
|
||
|
||
-- Minimal number of screen lines to keep above and below the cursor.
|
||
vim.opt.scrolloff = 10
|
||
|
||
-- [[ Basic Keymaps ]]
|
||
-- See `:help vim.keymap.set()`
|
||
|
||
-- Set highlight on search, but clear on pressing <Esc> in normal mode
|
||
vim.opt.hlsearch = true
|
||
-- vim.filetype.add({
|
||
-- pattern = { [".*/hypr/.*%.conf"] = "hyprlang" },
|
||
--
|
||
-- })
|
||
|
||
-- [[ Basic Autocommands ]]
|
||
-- See `:help lua-guide-autocommands`
|
||
|
||
-- Highlight when yanking (copying) text
|
||
-- Try it with `yap` in normal mode
|
||
-- See `:help vim.highlight.on_yank()`
|
||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||
desc = "Highlight when yanking (copying) text",
|
||
group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }),
|
||
callback = function()
|
||
vim.highlight.on_yank()
|
||
end,
|
||
})
|
||
|
||
-- Hyprlang LSP
|
||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||
pattern = { "*.hl", "hypr*.conf" },
|
||
callback = function(event)
|
||
print(string.format("starting hyprls for %s", vim.inspect(event)))
|
||
vim.lsp.start({
|
||
name = "hyprlang",
|
||
cmd = { "hyprls" },
|
||
root_dir = vim.fn.getcwd(),
|
||
})
|
||
end,
|
||
})
|
||
|
||
-- ╭─────────────────────────────────────────────────────────╮
|
||
-- │ Langmap │
|
||
-- ╰─────────────────────────────────────────────────────────╯
|
||
|
||
local function escape(str)
|
||
-- Эти символы должны быть экранированы, если встречаются в langmap
|
||
local escape_chars = [[;,."|\]]
|
||
return vim.fn.escape(str, escape_chars)
|
||
end
|
||
|
||
-- Наборы символов, введенных с зажатым шифтом
|
||
local en_shift = [[~QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>]]
|
||
local ru_shift = [[ËЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]]
|
||
-- Наборы символов, введенных как есть
|
||
-- Здесь я не добавляю ',.' и 'бю', чтобы впоследствии не было рекурсивного вызова комманды
|
||
local en = [[`qwertyuiop[]asdfghjkl;'zxcvbnm,.]]
|
||
local ru = [[ёйцукенгшщзхъфывапролджэячсмитьбю]]
|
||
vim.opt.langmap = vim.fn.join({
|
||
-- ; - разделитель, который не нужно экранировать
|
||
-- |
|
||
escape(ru_shift)
|
||
.. ";"
|
||
.. escape(en_shift),
|
||
escape(ru) .. ";" .. escape(en),
|
||
}, ",")
|
||
|
||
-- ╭─────────────────────────────────────────────────────────╮
|
||
-- │ enable word wrap and linebreak for norg and markdown │
|
||
-- │ files │
|
||
-- ╰─────────────────────────────────────────────────────────╯
|
||
vim.api.nvim_create_autocmd("FileType", {
|
||
pattern = { "norg", "markdown" },
|
||
callback = function()
|
||
vim.opt_local.wrap = true
|
||
vim.opt_local.linebreak = true
|
||
end,
|
||
})
|