summaryrefslogtreecommitdiff
path: root/nvim/init.lua
blob: 22f375cc609b4e94f6bc5503732abbfc6565a2cc (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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
vim.pack.add({
  { src = "https://github.com/neovim/nvim-lspconfig" },
  { src = "https://github.com/hrsh7th/nvim-cmp" },
  { src = "https://github.com/hrsh7th/cmp-nvim-lsp" },
  { src = "https://github.com/L3MON4D3/LuaSnip" },
  { src = "https://github.com/saadparwaiz1/cmp_luasnip" },
  { src = "https://github.com/nvim-treesitter/nvim-treesitter",    build = ":TSUpdate" },
  { src = "https://github.com/stevearc/oil.nvim" },
  { src = "https://github.com/echasnovski/mini.pick" },
  { src = "https://github.com/lukas-reineke/indent-blankline.nvim" },
  { src = "https://github.com/rafamadriz/friendly-snippets" },
  { src = "https://github.com/folke/which-key.nvim" },
  { src = "https://github.com/catppuccin/nvim" },
  { src = "https://github.com/windwp/nvim-autopairs" },
  { src = "https://github.com/Hoffs/omnisharp-extended-lsp.nvim" },
  { src = "https://github.com/linux-cultist/venv-selector.nvim" },
  { src = "https://github.com/romgrk/barbar.nvim" },
  { src = "https://github.com/nvim-tree/nvim-web-devicons" },
})

vim.g.mapleader = " "
vim.o.number = true
vim.o.relativenumber = true
vim.o.clipboard = "unnamedplus"
vim.o.termguicolors = true
vim.o.expandtab = true
vim.o.shiftwidth = 2
vim.o.tabstop = 2
vim.o.signcolumn = "yes"
vim.o.scrolloff = 5

vim.api.nvim_create_autocmd("BufWritePre", {
  callback = function(args)
    vim.lsp.buf.format({ bufnr = args.buf })
  end,
})

vim.api.nvim_create_autocmd("TextYankPost", {
  callback = function()
    vim.highlight.on_yank({ higroup = "IncSearch", timeout = 150 })
  end,
})


require("nvim-treesitter.configs").setup({
  ensure_installed = { "lua", "vim", "bash", "json", "python", "cpp", "css", "arduino", "java", "c_sharp" },
  highlight = { enable = true },
})

require("ibl").setup({
  indent = { char = "▏" },
  scope = { enabled = true },
})

require("nvim-autopairs").setup({
  map_cr = true,
  map_bs = true,
  check_ts = true,
  fast_wrap = {},
})

vim.keymap.set("i", "<Tab>", function()
  local col = vim.fn.col(".") - 1
  local line = vim.fn.getline(".")
  local next_char = line:sub(col + 1, col + 1)
  if next_char == '"' or next_char == "'" or next_char == ")" or next_char == "]" or next_char == "}" then
    return "<Right>"
  else
    return "<Tab>"
  end
end, { expr = true, noremap = true })


require("luasnip.loaders.from_vscode").lazy_load()
local lspconfig = require("lspconfig")
lspconfig.lua_ls.setup({
  settings = {
    Lua = {
      diagnostics = { globals = { "vim" } },
      workspace = { checkThirdParty = true },
    },
  },
})
lspconfig.pyright.setup({})
lspconfig.jdtls.setup({})
lspconfig.cssls.setup({})
lspconfig.clangd.setup({})


local pid = vim.fn.getpid()
lspconfig.omnisharp.setup({
  cmd = { "/usr/bin/omnisharp", "--languageserver", "--hostPID", tostring(pid) },
  enable_roslyn_analyzers = true,
  organize_imports_on_format = true,
  enable_import_completion = true,
  handlers = {
    ["textDocument/definition"] = require("omnisharp_extended").handler,
  },
  capabilities = require('cmp_nvim_lsp').default_capabilities(),
})



vim.keymap.set("n", "<leader>d", "<cmd>bdelete<CR>", { noremap = true, silent = true })
vim.keymap.set("n", "<Tab>", "<cmd>bnext<CR>", { noremap = true, silent = true })
vim.keymap.set("n", "<leader><Tab>", "<cmd>bprevious<CR>", { noremap = true, silent = true })
vim.keymap.set("n", "K", vim.diagnostic.open_float, { noremap = true, silent = true })
vim.keymap.set("i", "<C-s>", vim.lsp.buf.signature_help, { buffer = true })
vim.keymap.set("x", "<leader>p", '"_dP', { desc = "aaaa" })

local cmp = require("cmp")
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
local luasnip = require("luasnip")

cmp.setup({
  snippet = {
    expand = function(args)
      luasnip.lsp_expand(args.body)
    end,
  },
  mapping = cmp.mapping.preset.insert({
    ["<Tab>"] = cmp.mapping.select_next_item(),
    ["<S-Tab>"] = cmp.mapping.select_prev_item(),
    ["<CR>"] = cmp.mapping.confirm({ select = true }),
  }),
  sources = {
    { name = "nvim_lsp" },
    { name = "luasnip" },
  },
})

cmp.event:on(
  "confirm_done",
  cmp_autopairs.on_confirm_done()
)

require("oil").setup({
  view_options = {
    show_hidden = true,
  },
})
vim.keymap.set("n", "<leader>e", require("oil").open)

require("mini.pick").setup()
vim.keymap.set("n", "<leader>p", function()
  require("mini.pick").builtin.files()
end, { desc = "Pick files" })

require("which-key").setup()

require("catppuccin").setup {
  color_overrides = {
    mocha = {
      base = "#121212"
    },
  }
}
vim.cmd("colorscheme catppuccin-mocha")
vim.cmd(":hi statusline guibg=NONE")