local cmd = vim.cmd -- to execute Vim commands e.g. cmd('pwd') local fn = vim.fn -- to call Vim functions e.g. fn.bufnr() local g = vim.g -- a table to access global variables local opt = vim.opt -- to set options local fn = vim.fn -- Auto install packer.nvim if not exists local fn = vim.fn local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' if fn.empty(fn.glob(install_path)) > 0 then fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) vim.cmd 'packadd packer.nvim' end vim.cmd [[packadd packer.nvim]] local utils = require('utils') -- Install plugins require('plugins') require('keymappings') -------------------- OPTIONS ------------------------------- cmd 'colorscheme gruvbox-material' -- Put your favorite colorscheme here cmd 'syntax enable' cmd 'filetype plugin indent on' cmd 'language en_US' utils.opt('o', 'hlsearch', true) utils.opt('o', 'guifont', 'Hack NF:h9') utils.opt('o', 'swapfile', false) utils.opt('o', 'backup', false) utils.opt('o', 'spelllang', 'en,de') local indent = 2 utils.opt('b', 'expandtab', true) utils.opt('b', 'shiftwidth', indent) utils.opt('b', 'smartindent', true) utils.opt('b', 'tabstop', indent) utils.opt('o', 'hidden', true) utils.opt('o', 'ignorecase', true) utils.opt('o', 'scrolloff', 4 ) utils.opt('o', 'shiftround', true) utils.opt('o', 'relativenumber', true) utils.opt('o', 'smartcase', true) utils.opt('o', 'splitbelow', true) utils.opt('o', 'splitright', true) utils.opt('o', 'wildmode', 'list:longest') utils.opt('w', 'number', true) utils.opt('w', 'relativenumber', true) utils.opt('o', 'clipboard', 'unnamed,unnamedplus') utils.opt('o', 'mouse', 'a') utils.opt('o', 'wrap', false) utils.opt('o', 'termguicolors', true) utils.opt('o', 'splitbelow', true) utils.opt('o', 'splitright', true) utils.opt('o', 'list', true) utils.opt('o', 'updatetime', 300) utils.opt('o', 'wrap', true) utils.opt('o', 'showmatch', true) -------------------- AUTOCOMMANDS -------------------------- require("autocommands") -------------------- MAPPINGS ------------------------------ -- to navigate the completion menu utils.map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) utils.map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) -------------------- TREE-SITTER --------------------------- local ts = require 'nvim-treesitter.configs' ts.setup {ensure_installed = 'maintained', highlight = {enable = true}} -------------------- FZF ----------------------------------- --utils.map('n', '', ':FZF') -------------------- TELESCOPE ----------------------------- utils.map('n', 'f', 'Telescope find_files') utils.map('n', '', 'Telescope find_files') utils.map('n', 'g', 'Telescope git_files') utils.map('n', 'o', 'Telescope oldfiles') utils.map('n', 'h', 'Telescope command_history') utils.map('v', 'h', 'Telescope command_history') utils.map('n', '', 'Telescope commands') utils.map('n', 'b', 'Telescope buffers') utils.map('n', 'r', 'Telescope lsp_references') utils.map('n', '', 'Telescope lsp_document_symbols') utils.map('n', '', 'Telescope lsp_document_symbols') utils.map('n', 'v', 'Telescope lsp_document_diagnostics') -------------------- LSP ----------------------------------- require('mylsp') -------------------- GITSIGNS ------------------------------ -- require('gitsigns').setup() -------------------- LIGHTBULB ----------------------------- require('nvim-lightbulb').update_lightbulb() vim.cmd [[autocmd CursorHold,CursorHoldI * lua require'nvim-lightbulb'.update_lightbulb()]] -------------------- CMP ----------------------------------- require('cmp_plug') -------------------- NVIM-TREE ----------------------------- g.nvim_tree_auto_open = 0 -- g.nvim_tree_show_icons = { 'git': 1, 'folders': 1, 'files': 1, 'folder_arrows': 1 } utils.map('n', 'tt', 'NvimTreeToggle') g.nvim_tree_follow = 1 g.nvim_tree_highlight_opened_files = 1 -------------------- COMMENTED ----------------------------- require('commented').setup() -------------------- CMAKE --------------------------------- require('telescope').load_extension('cmake') g.cmake_build_dir = '{cwd}/build_nvim' utils.map('n', '', ':CMake build:copen') -------------------- NEOCLIP ------------------------------- require('neoclip').setup() require('telescope').load_extension('neoclip') -------------------- LUALINE ------------------------------- require('lualine').setup() -------------------- PROJECT ------------------------------- require("project_nvim").setup { silent_chdir = false, } require('telescope').load_extension('projects') g.nvim_tree_update_cwd = 1 utils.map('n', 'p', 'Telescope projects') -------------------- TS-RAINBOW ---------------------------- require'nvim-treesitter.configs'.setup { rainbow = { enable = true, extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean max_file_lines = nil, -- Do not enable for files with more than n lines, int -- colors = {}, -- table of hex strings -- termcolors = {} -- table of colour name strings } } -------------------- LUASNIP ------------------------------- require("luasnip.loaders.from_vscode").load()