Skip to content

Instantly share code, notes, and snippets.

@Aadv1k
Last active December 25, 2023 12:36
Show Gist options
  • Save Aadv1k/105ed4a4b2e03773f7985cea241fbb0c to your computer and use it in GitHub Desktop.
Save Aadv1k/105ed4a4b2e03773f7985cea241fbb0c to your computer and use it in GitHub Desktop.
Configuration file for Aadvik's Neovim v0.9+
-- File: init.lua
-- Description: Configuration file for Aadvik's Neovim v0.9+
-- Author: Aadvik <aadv1k@outlook.com>
-- License: Public Domain or Unilicense
vim.o.number = true
vim.o.relativenumber = true
vim.o.smartindent = true
vim.o.autoindent = true
vim.o.signcolumn = "yes"
vim.o.smartcase = true
vim.o.ignorecase = true
vim.o.hlsearch = false
vim.o.cmdheight = 1
vim.o.hidden = true
vim.o.wrap = false
vim.o.scrolloff = 8
vim.g.netrw_liststyle=3
vim.g.netrw_banner=0
vim.g.netrw_browse_split=2
vim.g.netrw_winsize=80
function SetIndent(width)
vim.o.tabstop=width
vim.o.softtabstop=width
vim.o.shiftwidth=width
end
SetIndent(2)
vim.cmd([[packadd packer.nvim]])
require('packer').startup(function(use)
use 'wbthomason/packer.nvim'
use {'iamcco/markdown-preview.nvim', run = 'cd app && yarn install', cmd = 'MarkdownPreview'}
use { "ellisonleao/gruvbox.nvim" }
use { "https://github.com/tpope/vim-surround" }
use { "neovim/nvim-lspconfig" }
use {
'nvim-telescope/telescope.nvim', tag = '0.1.5',
requires = { {'nvim-lua/plenary.nvim'} }
}
use {
"williamboman/mason.nvim"
}
end)
require("gruvbox").setup({
italic = {
strings = false,
emphasis = false,
comments = false,
operators = false,
folds = false,
},
palette_overrides = {},
})
vim.cmd("colorscheme gruvbox")
require('telescope').setup({
defaults = {
file_ignore_patterns = {
"node_modules/", ".git/"
}
},
pickers = {
find_files = {
theme = "dropdown",
}
},
})
vim.keymap.set('n', '<C-p>', require('telescope.builtin').find_files, {})
local lspconfig = require('lspconfig')
local servers = {"gopls"}
lspconfig.gopls.setup{}
require("mason").setup({
ui = {
icons = {
package_installed = "✓",
package_pending = "➜",
package_uninstalled = "✗"
}
}
})
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist)
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)
-- Enable completion triggered by <c-x><c-o>
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
-- Buffer local mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { buffer = ev.buf }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set('n', '<space>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
vim.keymap.set('n', '<space>f', function()
vim.lsp.buf.format { async = true }
end, opts)
end,
})
function Format(givenCommand)
local currentFile = vim.fn.expand('%:r')
vim.fn.system(givenCommand .. ' ' .. currentFile)
vim.cmd('edit!')
end
function Execute(runA, runB)
local currentFile = vim.fn.expand('%')
local cmdA = '!' .. runA .. ' ' .. currentFile
if runB == nil then
vim.cmd(cmdA)
else
local cmdB = '!' .. runB .. ' ' .. currentFile
vim.cmd(cmdA .. ' && ' .. cmdB)
end
end
local nvim_create_augroup = vim.api.nvim_create_augroup
local nvim_create_autocmd = vim.api.nvim_create_autocmd
vim.g.mapleader = ' '
RUN_KEY = "<leader>js"
FMT_KEY = "<leader>fmt"
nvim_create_augroup("GoMode", {})
nvim_create_augroup("PyMode", {})
nvim_create_autocmd("BufWritePost", {
pattern = "*.go",
group = "GoMode",
callback = function()
vim.cmd("silent !gofmt -w %")
vim.cmd("edit")
end
})
nvim_create_autocmd("BufWritePost", {
pattern = "*.py",
group = "PyMode",
callback = function()
vim.cmd("silent !python3 -m autopep8 --in-place --aggressive %")
vim.cmd("edit")
end
})
-- Keymaps
vim.api.nvim_set_keymap('t', '<Esc>', '<C-\\><C-n>', { noremap = true })
vim.api.nvim_set_keymap('t', '<C-v>', '<C-W>"+', { noremap = true })
vim.api.nvim_set_keymap('n', '<S-l>', ':tabn<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('n', '<S-h>', ':tabp<CR>', { noremap = true, silent = true })
vim.api.nvim_set_keymap('i', ',', ',<c-g>u', { noremap = true })
vim.api.nvim_set_keymap('i', '.', '.<c-g>u', { noremap = true })
vim.api.nvim_set_keymap('i', '(', '(<c-g>u', { noremap = true })
vim.cmd('cnoreabbrev W w')
vim.cmd('cnoreabbrev Wq wq')
vim.cmd('cnoreabbrev WQ wq')
vim.cmd('cnoreabbrev Q q')
vim.cmd('cnoreabbrev so so %')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment