neoscroll and keybindings
This commit is contained in:
parent
291ae1ea52
commit
ca178b641d
109
init.lua
109
init.lua
|
|
@ -2,7 +2,7 @@ vim.g.maplocalleader = ' '
|
||||||
vim.g.mapleader = ' '
|
vim.g.mapleader = ' '
|
||||||
|
|
||||||
-- install deps if need to
|
-- install deps if need to
|
||||||
require("bootstrap.pacman")
|
require 'bootstrap.pacman'
|
||||||
|
|
||||||
-- =========================
|
-- =========================
|
||||||
-- Lazy.nvim bootstrap
|
-- Lazy.nvim bootstrap
|
||||||
|
|
@ -34,6 +34,61 @@ require('lazy').setup({
|
||||||
|
|
||||||
{ 'numToStr/Comment.nvim', opts = {} },
|
{ 'numToStr/Comment.nvim', opts = {} },
|
||||||
|
|
||||||
|
{
|
||||||
|
'karb94/neoscroll.nvim',
|
||||||
|
opts = {},
|
||||||
|
config = function()
|
||||||
|
local neoscroll = require 'neoscroll'
|
||||||
|
|
||||||
|
neoscroll.setup {
|
||||||
|
-- remove <C-u>/<C-d> from defaults so your custom maps win
|
||||||
|
mappings = {
|
||||||
|
'<C-b>',
|
||||||
|
'<C-f>',
|
||||||
|
'<C-y>',
|
||||||
|
'<C-e>',
|
||||||
|
'zt',
|
||||||
|
'zz',
|
||||||
|
'zb',
|
||||||
|
},
|
||||||
|
hide_cursor = true, -- Hide cursor while scrolling
|
||||||
|
stop_eof = true, -- Stop at <EOF> when scrolling downwards
|
||||||
|
respect_scrolloff = true, -- Stop scrolling when the cursor reaches the scrolloff margin of the file
|
||||||
|
cursor_scrolls_alone = true, -- The cursor will keep on scrolling even if the window cannot scroll further
|
||||||
|
duration_multiplier = 0.3, -- Global duration multiplier
|
||||||
|
easing = 'quadratic', -- Default easing function
|
||||||
|
pre_hook = function(info)
|
||||||
|
if info == 'center' then
|
||||||
|
vim.cmd 'normal! M'
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
post_hook = nil,
|
||||||
|
}
|
||||||
|
local function near_file_edge()
|
||||||
|
local line = vim.api.nvim_win_get_cursor(0)[1]
|
||||||
|
local last = vim.api.nvim_buf_line_count(0)
|
||||||
|
local so = vim.wo.scrolloff
|
||||||
|
return line <= so + 1 or line >= last - so
|
||||||
|
end
|
||||||
|
|
||||||
|
local modes = { 'n', 'v', 'x' }
|
||||||
|
|
||||||
|
vim.keymap.set(modes, '<C-d>', function()
|
||||||
|
neoscroll.ctrl_d { duration = 300 }
|
||||||
|
if not near_file_edge() then
|
||||||
|
vim.cmd 'normal! M'
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
vim.keymap.set(modes, '<C-u>', function()
|
||||||
|
neoscroll.ctrl_u { duration = 300 }
|
||||||
|
if not near_file_edge() then
|
||||||
|
vim.cmd 'normal! M'
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
'nvim-treesitter/nvim-treesitter',
|
'nvim-treesitter/nvim-treesitter',
|
||||||
lazy = false,
|
lazy = false,
|
||||||
|
|
@ -53,7 +108,9 @@ require('lazy').setup({
|
||||||
'yaml',
|
'yaml',
|
||||||
'toml',
|
'toml',
|
||||||
},
|
},
|
||||||
highlight = { enable = true },
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -126,17 +183,6 @@ require('lazy').setup({
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Colors
|
|
||||||
{
|
|
||||||
'folke/tokyonight.nvim',
|
|
||||||
lazy = false,
|
|
||||||
priority = 1000,
|
|
||||||
config = function()
|
|
||||||
vim.cmd.colorscheme 'gruvbox-material'
|
|
||||||
vim.cmd.hi 'Comment gui=none'
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
'sphamba/smear-cursor.nvim',
|
'sphamba/smear-cursor.nvim',
|
||||||
opts = {
|
opts = {
|
||||||
|
|
@ -191,7 +237,7 @@ require('lazy').setup({
|
||||||
system_open = function(state)
|
system_open = function(state)
|
||||||
local node = state.tree:get_node()
|
local node = state.tree:get_node()
|
||||||
local path = node:get_id() -- absolute path
|
local path = node:get_id() -- absolute path
|
||||||
vim.fn.jobstart({ 'imv', path }, { detach = true })
|
vim.fn.jobstart({ 'xdg-open', path }, { detach = true })
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
window = {
|
window = {
|
||||||
|
|
@ -794,6 +840,7 @@ require('lazy').setup({
|
||||||
return { 'isort', 'black' }
|
return { 'isort', 'black' }
|
||||||
end,
|
end,
|
||||||
yaml = { 'prettier' },
|
yaml = { 'prettier' },
|
||||||
|
rust = { 'rustfmt' },
|
||||||
['*'] = { 'injected' },
|
['*'] = { 'injected' },
|
||||||
},
|
},
|
||||||
ignore_errors = true,
|
ignore_errors = true,
|
||||||
|
|
@ -1465,11 +1512,11 @@ vim.api.nvim_create_autocmd({ 'BufLeave', 'InsertEnter', 'FocusLost' }, {
|
||||||
-- Keymaps (treesitter keymaps removed)
|
-- Keymaps (treesitter keymaps removed)
|
||||||
-- =========================
|
-- =========================
|
||||||
|
|
||||||
-- scrolling / search centering
|
-- scrolling / search centering, disabled for neoscroll
|
||||||
vim.keymap.set('n', '<C-d>', '<C-d>zz', { desc = 'Scroll down and center cursor' })
|
-- vim.keymap.set('n', '<C-d>', '<C-d>zz', { desc = 'Scroll down and center cursor' })
|
||||||
vim.keymap.set('n', '<C-u>', '<C-u>zz', { desc = 'Scroll up and center cursor' })
|
-- vim.keymap.set('n', '<C-u>', '<C-u>zz', { desc = 'Scroll up and center cursor' })
|
||||||
vim.keymap.set('n', 'n', 'nzzzv', { desc = 'Next search result and center' })
|
-- vim.keymap.set('n', 'n', 'nzzzv', { desc = 'Next search result and center' })
|
||||||
vim.keymap.set('n', 'N', 'Nzzzv', { desc = 'Previous search result and center' })
|
-- vim.keymap.set('n', 'N', 'Nzzzv', { desc = 'Previous search result and center' })
|
||||||
|
|
||||||
-- move selected lines
|
-- move selected lines
|
||||||
vim.keymap.set('v', 'J', ":m '>+1<CR>gv=gv", { desc = 'Move selection down' })
|
vim.keymap.set('v', 'J', ":m '>+1<CR>gv=gv", { desc = 'Move selection down' })
|
||||||
|
|
@ -1497,6 +1544,7 @@ vim.keymap.set('n', '<leader>de', vim.diagnostic.enable, { desc = 'Enable diagno
|
||||||
vim.keymap.set('n', '<leader>cw', ':cd %:p:h<CR>:pwd<CR>', { desc = 'cd to current file directory' })
|
vim.keymap.set('n', '<leader>cw', ':cd %:p:h<CR>:pwd<CR>', { desc = 'cd to current file directory' })
|
||||||
vim.keymap.set('n', '<C-I>', '<C-I>', { noremap = true, desc = 'Jump forward in jumplist' })
|
vim.keymap.set('n', '<C-I>', '<C-I>', { noremap = true, desc = 'Jump forward in jumplist' })
|
||||||
vim.keymap.set('n', '<C-s>', ':write<CR>', { desc = 'Save file' })
|
vim.keymap.set('n', '<C-s>', ':write<CR>', { desc = 'Save file' })
|
||||||
|
vim.keymap.set('i', '<C-s>', ':write<CR>', { desc = 'Save file' })
|
||||||
vim.keymap.set('n', '<leader>cd', ':ToggleAutoComplete<CR>', { desc = 'Toggle autocomplete' })
|
vim.keymap.set('n', '<leader>cd', ':ToggleAutoComplete<CR>', { desc = 'Toggle autocomplete' })
|
||||||
vim.keymap.set('n', '<leader>ce', ':ToggleAutoComplete<CR>', { desc = 'Toggle autocomplete (alias)' })
|
vim.keymap.set('n', '<leader>ce', ':ToggleAutoComplete<CR>', { desc = 'Toggle autocomplete (alias)' })
|
||||||
|
|
||||||
|
|
@ -1615,10 +1663,6 @@ vim.keymap.set('n', '<C-w>', '<cmd>wqa<cr>')
|
||||||
vim.keymap.set('n', '<leader>sv', '<cmd>vsplit<CR>')
|
vim.keymap.set('n', '<leader>sv', '<cmd>vsplit<CR>')
|
||||||
vim.keymap.set('n', '<leader>sh', '<cmd>split<CR>')
|
vim.keymap.set('n', '<leader>sh', '<cmd>split<CR>')
|
||||||
|
|
||||||
-- signature help
|
|
||||||
vim.api.nvim_set_keymap('i', '<C-S-Space>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', { noremap = true, silent = true })
|
|
||||||
vim.api.nvim_set_keymap('n', '<C-S-Space>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', { noremap = true, silent = true })
|
|
||||||
|
|
||||||
-- toggle neotree
|
-- toggle neotree
|
||||||
local function toggle_neotree()
|
local function toggle_neotree()
|
||||||
local manager = require 'neo-tree.sources.manager'
|
local manager = require 'neo-tree.sources.manager'
|
||||||
|
|
@ -1650,8 +1694,21 @@ vim.api.nvim_set_keymap('i', '<C-H>', '<C-W>', { noremap = true })
|
||||||
vim.keymap.set('n', '<leader>ga', ':Telescope coauthors<CR>')
|
vim.keymap.set('n', '<leader>ga', ':Telescope coauthors<CR>')
|
||||||
|
|
||||||
-- install treesitter parsers
|
-- install treesitter parsers
|
||||||
require('nvim-treesitter').install { 'c', 'rust', 'gdscript', 'c#' }
|
require('nvim-treesitter').install { 'c', 'rust', 'gdscript', 'c_sharp' }
|
||||||
|
|
||||||
-- LSP basics
|
-- ======== LSP settings ===========
|
||||||
|
-- signature help
|
||||||
|
vim.api.nvim_set_keymap('i', '<C-S-Space>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', '<C-S-Space>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('i', '<C-S-Space>', '<cmd>lua vim.lsp.buf.hover()<CR>', { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', '<C-S-Space>', '<cmd>lua vim.lsp.buf.hover()<CR>', { noremap = true, silent = true })
|
||||||
|
-- code actions (normal + insert)
|
||||||
|
vim.keymap.set({ 'n', 'i' }, '<C-.>', vim.lsp.buf.code_action, { silent = true, desc = 'Code Action' })
|
||||||
|
-- rename bindings
|
||||||
vim.keymap.set('n', '<F2>', vim.lsp.buf.rename, { silent = true, desc = 'LSP: Rename' })
|
vim.keymap.set('n', '<F2>', vim.lsp.buf.rename, { silent = true, desc = 'LSP: Rename' })
|
||||||
vim.keymap.set('n', '<F12>', vim.lsp.buf.references, { silent = true, desc = 'LSP: References' })
|
vim.keymap.set('n', '<F12>', vim.lsp.buf.definition, { silent = true, desc = 'LSP: Go To Defintion' })
|
||||||
|
|
||||||
|
-- put after colorscheme load
|
||||||
|
vim.api.nvim_set_hl(0, '@lsp.type.typeAlias', { link = 'Type' })
|
||||||
|
vim.api.nvim_set_hl(0, '@lsp.type.type', { link = 'Type' })
|
||||||
|
vim.api.nvim_set_hl(0, '@lsp.type.struct', { link = 'Type' })
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue