dotfiles-test/.config/nvim/lua/goodhumored/common-vim-settings.lua
goodhumored 161e082bf2 nvim configs updated
- 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
2024-09-17 13:00:47 +03:00

147 lines
5.1 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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,
})