summaryrefslogtreecommitdiff
path: root/.config/nvim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim')
-rw-r--r--.config/nvim/init.lua3
-rwxr-xr-x.config/nvim/lua/config/keymaps.lua8
-rwxr-xr-x.config/nvim/lua/config/options.lua19
-rw-r--r--.config/nvim/lua/config/plugins.lua4
-rw-r--r--.config/nvim/nvim-pack-lock.json4
5 files changed, 37 insertions, 1 deletions
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index e0ef470..de075d5 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -6,3 +6,6 @@ vim.api.nvim_create_autocmd("FocusGained", {
require("config.keymaps")
require("config.options")
require("config.plugins")
+
+-- must be last: translates all registered mappings (incl. built-ins)
+require('langmapper').automapping({ global = true, buffer = true })
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
index e2987bc..0d482da 100755
--- a/.config/nvim/lua/config/keymaps.lua
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -11,3 +11,11 @@ vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv", { desc = "moves lines up in visual
vim.keymap.set("n", "<leader>al", "<CMD>term<CR>", { desc = "Open terminal" })
vim.keymap.set("n", "<leader>f", vim.lsp.buf.format)
+
+-- universal clipboard hotkeys (niri sends these synthesized to the focused app)
+-- super+c (Ctrl+Insert): copy selection
+vim.keymap.set({"n", "v"}, "<C-Insert>", '"+y', { desc = "Copy selection to system clipboard" })
+-- super+v (Shift+Insert): paste
+vim.keymap.set({"n", "i", "v"}, "<S-Insert>", '"+p', { desc = "Paste from system clipboard" })
+-- super+x (Shift+Delete): cut (delete selection into system clipboard)
+vim.keymap.set({"v"}, "<S-Delete>", '"+d', { desc = "Cut selection to system clipboard" })
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index dac7c76..b9d7e90 100755
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -2,8 +2,9 @@ vim.cmd("let g:netrw_banner = 0")
vim.cmd("set termguicolors")
vim.opt.guicursor = ""
+vim.opt.clipboard = "unnamedplus"
vim.opt.nu = true
-vim.opt.relativenumber = false
+vim.opt.relativenumber = true
vim.opt.tabstop = 2
vim.opt.softtabstop = 2
@@ -37,4 +38,20 @@ vim.opt.hlsearch = true
vim.opt.mouse = "a"
vim.g.editorconfig = true
+-- Russian layout: base layer so QWERTY motions work while Ru is active
+-- (langmapper.nvim handles translated *mappings* on top of this)
+do
+ local function escape(str)
+ return vim.fn.escape(str, [[;,."|\]])
+ end
+ local en = [[`qwertyuiop[]asdfghjkl;'zxcvbnm]]
+ local ru = [[ёйцукенгшщзхъфывапролджэячсмить]]
+ local en_shift = [[~QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>]]
+ local ru_shift = [[ËЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]]
+ vim.opt.langmap = vim.fn.join({
+ escape(ru_shift) .. ";" .. escape(en_shift),
+ escape(ru) .. ";" .. escape(en),
+ }, ",")
+end
+
vim.g.markdown_folding = 1
diff --git a/.config/nvim/lua/config/plugins.lua b/.config/nvim/lua/config/plugins.lua
index 464a5ae..0cd74b2 100644
--- a/.config/nvim/lua/config/plugins.lua
+++ b/.config/nvim/lua/config/plugins.lua
@@ -27,8 +27,12 @@ vim.pack.add {
'https://github.com/antosha417/nvim-lsp-file-operations',
'https://github.com/nvim-telescope/telescope-ui-select.nvim',
'https://github.com/MeanderingProgrammer/render-markdown.nvim',
+ 'https://github.com/Wansmer/langmapper.nvim',
}
+-- langmapper: translates registered mappings so they work while Ru is active
+require('langmapper').setup()
+
-- vlang
--vim.lsp.config.vlang.setup({})
diff --git a/.config/nvim/nvim-pack-lock.json b/.config/nvim/nvim-pack-lock.json
index dc69b9a..dae1c4d 100644
--- a/.config/nvim/nvim-pack-lock.json
+++ b/.config/nvim/nvim-pack-lock.json
@@ -16,6 +16,10 @@
"rev": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3",
"src": "https://github.com/thePrimeagen/harpoon"
},
+ "langmapper.nvim": {
+ "rev": "49462fd9f4f33cf8cfbaa779ba07d3c0b255cc06",
+ "src": "https://github.com/Wansmer/langmapper.nvim"
+ },
"lualine.nvim": {
"rev": "47f91c416daef12db467145e16bed5bbfe00add8",
"src": "https://github.com/nvim-lualine/lualine.nvim"