-- General Settings vim.opt.number = true vim.opt.mouse = '' vim.opt.ignorecase = true vim.opt.smartcase = true vim.opt.hlsearch = false vim.opt.wrap = true vim.opt.breakindent = true vim.opt.tabstop = 2 vim.opt.shiftwidth = 2 vim.opt.expandtab = true vim.opt.termguicolors = true vim.opt.splitbelow = true vim.opt.mouse = 'a' vim.api.nvim_set_option('clipboard','unnamedplus') vim.opt.ruler = false vim.cmd.colorscheme('rasmus') -- Reset Cursor On Exit local au_id = vim.api.nvim_create_augroup('RestoreCursorShapeOnExit', {clear = true}) vim.api.nvim_create_autocmd('VimLeave',{ command = 'set guicursor=a:ver20', group = au_id }) -- Setup Packages require('packer').startup(function(use) use 'wbthomason/packer.nvim' use 'lukas-reineke/indent-blankline.nvim' use 'windwp/nvim-autopairs' use 'numToStr/Comment.nvim' use 'kvrohit/rasmus.nvim' use 'hrsh7th/cmp-nvim-lsp' use 'hrsh7th/nvim-cmp' use 'neovim/nvim-lspconfig' use 'hrsh7th/cmp-nvim-lsp-signature-help' use { 'nvim-telescope/telescope.nvim', requires = { {'nvim-lua/plenary.nvim'} } } use { "nvim-telescope/telescope-file-browser.nvim", requires = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" } } use 'akinsho/toggleterm.nvim' if install_plugins then require('packer').sync() end end) if install_plugins then return end require('indent_blankline').setup { char = '▏', show_trailing_blankline_indent = false, show_first_indent_level = false, show_current_context = false } require('Comment').setup { padding = true, toggler = { line = '\\\\' }, opleader = { block = '\\\\' } } -- CMP Setup local cmp = require'cmp' cmp.setup({ window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = 'nvim_lsp' } }, { { name = 'buffer' }, } ) }) cmp.setup.filetype('gitcommit', { sources = cmp.config.sources({ { name = 'cmp_git' }, }, { { name = 'buffer' }, }) }) cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) cmp.setup.cmdline(':', { sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }) }) -- Set Up Lspconfig local lspconfig = require('lspconfig') local capabilities = require('cmp_nvim_lsp').default_capabilities() servers = { 'pyright', 'ccls' } for _, lsp in pairs(servers) do lspconfig[lsp].setup { capabilities = capabilities } end -- Set Up Telescope local actions = require('telescope.actions') local fb_actions = require("telescope").extensions.file_browser.actions local telescope = require('telescope') telescope.setup({ pickers = { find_files = { hidden = true } }, extensions = { file_browser = { theme = "ivy", hijack_netrw = true, } }, defaults = { layout_strategy = 'bottom_pane', layout_config = { height = 0.4 }, mappings = { i = { [""] = fb_actions.create, }, }, }, }) telescope.load_extension "file_browser" -- Set Up ToggleTerm require('toggleterm').setup { direction = 'horizontal', size = math.floor(0.8 * vim.api.nvim_win_get_height(0)) } -- Set Up Autopairs require('nvim-autopairs').setup({ map_cr = true }) -- Set Up Compile.lua require('compile') -- Keyboard Shortcuts vim.keymap.set('n', 'P', 'pu', { noremap = true }) vim.keymap.set('n', '', 'Telescope find_files', { noremap = true }) vim.keymap.set('n', 'b', 'Telescope buffers', { noremap = true }) vim.keymap.set('n', 'f', 'Telescope live_grep', { noremap = true }) vim.keymap.set('n', 'n', 'Telescope file_browser', { noremap = true }) vim.keymap.set('n', 'cw', 'bdelete!', { noremap = true }) vim.keymap.set('t', '', '', { noremap = true }) vim.keymap.set('n', 'D', vim.lsp.buf.definition, { noremap = true }) vim.keymap.set('n', 'F', vim.lsp.buf.declaration, { noremap = true }) vim.keymap.set('n', 'K', vim.lsp.buf.hover, { noremap = true }) vim.keymap.set('n', '', 'ToggleTerm', { noremap = true }) vim.keymap.set('t', '', 'ToggleTerm', { noremap = true }) -- Splitting The Window vim.api.nvim_set_keymap('n', '|', ':vsplit', { noremap = true }) vim.api.nvim_set_keymap('n', '-', ':split', { noremap = true })