summaryrefslogtreecommitdiff
path: root/nvim/init.lua
blob: 30e1e77c3805a9797724ebf15d29b4bb3c048d2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
vim.o.relativenumber = true
vim.o.expandtab = true
vim.o.shiftwidth = 4
vim.o.softtabstop = 4
vim.o.mouse = 'a'
vim.o.makeprg = './build.sh'
vim.o.clipboard = 'unnamedplus'
vim.o.breakindent = true
vim.o.ignorecase = true
vim.o.smartcase = true
vim.o.signcolumn = 'auto'
vim.o.cursorline = false
vim.o.scrolloff = 10
vim.o.confirm = true
vim.o.autochdir = false
vim.o.cinoptions = 'l1,t0,(0,:0'

vim.g.mapleader = ' '
vim.g.maplocalleader = ' '

local colemakdh_binds = {
  -- movement
  { modes = { 'n', 'o', 'x' }, lhs = 'n', rhs = 'h', },
  { modes = { 'n', 'o', 'x' }, lhs = 'e', rhs = 'j', },
  { modes = { 'n', 'o', 'x' }, lhs = 'i', rhs = 'k', },
  { modes = { 'n', 'o', 'x' }, lhs = 'o', rhs = 'l', },
  { modes = { 'n' },           lhs = 'N', rhs = '^', },
  { modes = { 'n' },           lhs = 'O', rhs = '$', },

  -- closing the loop of overwritten binds
  { modes = { 'n', 'o', 'x'}, lhs = 'j', rhs = 'e', },
  { modes = { 'n', 'o', 'x'}, lhs = 'k', rhs = 'n', },
  { modes = { 'n', 'o', 'x'}, lhs = 'K', rhs = 'N', },
  { modes = { 'n', 'o', 'x'}, lhs = 'h', rhs = 'o', },
  { modes = { 'n', 'o', 'x'}, lhs = 'H', rhs = 'O', },
  { modes = { 'n', 'o', 'x'}, lhs = 'l', rhs = 'i', },
  { modes = { 'n', 'o', 'x'}, lhs = 'L', rhs = 'I', },
}

for _, bind in ipairs(colemakdh_binds) do
  for _, mode in ipairs(bind.modes) do
    vim.keymap.set(mode, bind.lhs, bind.rhs)
  end
end

-- disable man mode remaps
vim.g.no_man_maps = 1

vim.keymap.set('n', '<M-e>', '<cmd>cnext<CR>')
vim.keymap.set('n', '<M-i>', '<cmd>cprev<CR>')

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.hl.on_yank()
  end,
})

local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not (vim.uv or vim.loop).fs_stat(lazypath) then
  local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
  local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
  if vim.v.shell_error ~= 0 then
    error('Error cloning lazy.nvim:\n' .. out)
  end
end

local rtp = vim.opt.runtimepath
rtp:prepend(lazypath)

require('lazy').setup({
  require 'plugins.nvim-mini',
  require 'plugins.catppuccin',
  require 'plugins.treesitter',
  require 'plugins.telescope',
})