You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.9 KiB
143 lines
3.9 KiB
|
|
-- general configuration |
|
vim.opt.background = 'dark' -- the theme background is dark |
|
vim.opt.termguicolors = true |
|
|
|
vim.opt.cursorline = true -- highlight the line with the cursor |
|
vim.opt.wrap = false -- do not wrap long lines |
|
vim.opt.foldmethod = 'marker' -- when folding, use the marker |
|
vim.opt.laststatus = 2 -- always show the status line |
|
vim.opt.showtabline = 2 -- always show the tab bar |
|
vim.opt.scrolloff = 2 -- number of lines to always have around cursor |
|
vim.opt.splitright = true -- vertical splits open on the right |
|
vim.opt.splitbelow = true -- horizontal splits open on the bottom |
|
vim.g.mapleader = ' ' -- space is the leader character |
|
|
|
-- commands that don't exist in lua yet |
|
vim.cmd [[ |
|
color molokai |
|
]] |
|
|
|
-- Keybind: use '-' to open the file explorer |
|
vim.api.nvim_set_keymap('n', '-', ':Ex<CR>', { noremap=true, silent=true }) |
|
|
|
-- lsp configuration |
|
local nvim_lsp = require('lspconfig') |
|
local function buf_set_keymap(...) |
|
vim.api.nvim_buf_set_keymap(bufnr, ...) |
|
end |
|
local opts = { noremap=true, silent=true } |
|
|
|
local on_attach = function(client, bufnr) |
|
-- let's use the lsp filetype attach to set buffer (and window) options |
|
vim.bo.expandtab = true |
|
vim.bo.tabstop = 4 |
|
vim.bo.shiftwidth = 4 |
|
vim.bo.softtabstop = 4 |
|
vim.bo.textwidth = 79 |
|
|
|
vim.wo.number = true |
|
vim.wo.colorcolumn = '80' |
|
|
|
vim.diagnostic.config({signs = false}) |
|
|
|
buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) |
|
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) |
|
buf_set_keymap('n', 'gF', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts) |
|
buf_set_keymap('n', 'gR', '<cmd>lua vim.lsp.buf.rename()<CR>', opts) |
|
buf_set_keymap('n', 'g?', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts) |
|
buf_set_keymap('n', 'gp', '<cmd>lua vim.lsp.buf.completion()<CR>', opts) |
|
buf_set_keymap('n', 'ge', '<cmd>lua vim.diagnostic.open_float()<CR>', opts) |
|
|
|
if client.resolved_capabilities.document_formatting then |
|
vim.api.nvim_command [[augroup Format]] |
|
vim.api.nvim_command [[autocmd! * <buffer>]] |
|
vim.api.nvim_command [[autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_seq_sync()]] |
|
vim.api.nvim_command [[augroup END]] |
|
end |
|
end |
|
|
|
-- attach the keymaps |
|
-- lsp servers/languages configuration |
|
nvim_lsp.rust_analyzer.setup { |
|
on_attach = on_attach |
|
} |
|
|
|
nvim_lsp.pyright.setup { |
|
on_attach = on_attach |
|
} |
|
|
|
-- treesitter |
|
require 'nvim-treesitter.configs'.setup { |
|
ensure_installed = 'maintained', |
|
sync_install = false, |
|
highlight = { |
|
enable = true, |
|
}, |
|
} |
|
|
|
-- lualine (better statusline) |
|
require 'lualine'.setup { |
|
options = { |
|
icons_enabled = true, |
|
-- theme = 'ayu_dark', |
|
theme = 'ayu_mirage', |
|
component_separators = { left = '', right = '' }, |
|
section_separators = { left = '', right = '' }, |
|
disabled_filetypes = {}, |
|
always_divide_middle = true, |
|
}, |
|
sections = { |
|
lualine_a = {'mode'}, |
|
lualine_b = {'filename', 'branch'}, |
|
lualine_c = { |
|
{ |
|
'diagnostics', |
|
symbols = {error = 'Errors:', warn = 'Warns:', info = 'Info:', hint = 'Hints:'}, |
|
sources = { 'nvim_diagnostic' } |
|
} |
|
}, |
|
lualine_w = {'encoding'}, |
|
lualine_x = {'filetype'}, |
|
lualine_y = {'progress'}, |
|
lualine_z = {'location'} |
|
}, |
|
inactive_sections = { |
|
lualine_a = {}, |
|
lualine_b = {}, |
|
lualine_c = {'filename'}, |
|
lualine_x = {'location'}, |
|
lualine_y = {}, |
|
lualine_z = {} |
|
}, |
|
tabline = { |
|
lualine_a = {'tabs'}, |
|
lualine_b = {}, |
|
lualine_c = {}, |
|
lualine_x = {}, |
|
lualine_y = {}, |
|
lualine_z = {} |
|
}, |
|
extensions = {} |
|
} |
|
|
|
-- nvim-snippy |
|
require('snippy').setup({ |
|
mappings = { |
|
is = { |
|
['<Tab>'] = 'expand_or_advance', |
|
['<S-Tab>'] = 'previous', |
|
}, |
|
nx = { |
|
['<leader>x'] = 'cut_text', |
|
}, |
|
}, |
|
}) |
|
|
|
-- Telescope |
|
require('telescope').setup{} |
|
vim.api.nvim_set_keymap('n', '<leader><space>', '<cmd>Telescope find_files<CR>', { noremap = true, silent = true }) |
|
vim.api.nvim_set_keymap('n', '<leader>g', '<cmd>Telescope live_grep<CR>', { noremap = true, silent = true }) |
|
|
|
-- Auto-pairs |
|
require('nvim-autopairs').setup{}
|
|
|