diff options
Diffstat (limited to 'config/nvim')
| -rw-r--r-- | config/nvim/init.lua | 197 | ||||
| -rw-r--r-- | config/nvim/lua/compile.lua | 38 | 
2 files changed, 235 insertions, 0 deletions
| diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 0000000..f3873b6 --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1,197 @@ +-- 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.scrolloff = 5 +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 'stevearc/oil.nvim' + +  use 'akinsho/toggleterm.nvim' +  use 'christoomey/vim-tmux-navigator' + +	if install_plugins then +		require('packer').sync() +	end +end) + +if install_plugins then +  return +end + + +local oil = require('oil') +_G.oil = oil +oil.setup { +  default_file_explorer = true, +  columns = { +    'icon', +  }, +  view_options = { +    show_hidden = true +  } +} + +require('ibl').setup() + +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({ +		['<C-b>'] = cmp.mapping.scroll_docs(-4), +		['<C-f>'] = cmp.mapping.scroll_docs(4), +		['<C-Space>'] = cmp.mapping.complete(), +		['<TAB>'] = 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', 'gopls' } +for _, lsp in pairs(servers) do +  lspconfig[lsp].setup { +    capabilities = capabilities +  } +end + +-- Set Up Telescope +local actions = require('telescope.actions') +local telescope = require('telescope') +telescope.setup({ +  pickers = { +    find_files = { +      hidden = true +    } +  }, +  defaults = { +    layout_strategy = 'bottom_pane', +    layout_config = { +      height = 0.4 +    }, +  }, +}) + +-- 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', '<cmd>pu<cr>', { noremap = true }) + +vim.keymap.set('n', '<space><space>', '<cmd>Telescope find_files<cr>', { noremap = true }) +vim.keymap.set('n', '<space>b', '<cmd>Telescope buffers<cr>', { noremap = true }) +vim.keymap.set('n', '<space>f', '<cmd>Telescope live_grep<cr>', { noremap = true }) + +vim.keymap.set('n', '<A-x>', '<cmd>close<cr>', { noremap = true }) +vim.keymap.set('n', '<A-q>', '<cmd>bdelete!<cr>', { noremap = true }) + +vim.keymap.set('t', '<Esc>', '<C-\\><C-n>', { 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', '<A-y>', '<cmd>ToggleTerm<cr>', { noremap = true }) +vim.keymap.set('t', '<A-y>', '<cmd>ToggleTerm<cr>', { noremap = true }) +vim.keymap.set('t', '<A-y>', '<cmd>ToggleTerm<cr>', { noremap = true }) + +vim.keymap.set('n', '<A-n>', '<cmd>bnext<cr>', { noremap = true }) +vim.keymap.set('n', '<A-p>', '<cmd>bprev<cr>', { noremap = true }) + +vim.keymap.set('n', '<C-h>', '<cmd>TmuxNavigateLeft<cr>', { noremap = true }) +vim.keymap.set('n', '<C-j>', '<cmd>TmuxNavigateDown<cr>', { noremap = true }) +vim.keymap.set('n', '<C-k>', '<cmd>TmuxNavigateUp<cr>', { noremap = true }) +vim.keymap.set('n', '<C-l>', '<cmd>TmuxNavigateRight<cr>', { noremap = true }) + +vim.keymap.set('n', '<A-a>', '<cmd>lua oil.toggle_float()<cr>', { noremap = true }) + +-- Splitting The Window +vim.api.nvim_set_keymap('n', '<A-\\>', ':vsplit<CR>', { noremap = true }) +vim.api.nvim_set_keymap('n', '<A-->', ':split<CR>', { noremap = true }) diff --git a/config/nvim/lua/compile.lua b/config/nvim/lua/compile.lua new file mode 100644 index 0000000..f529b90 --- /dev/null +++ b/config/nvim/lua/compile.lua @@ -0,0 +1,38 @@ +local openTerminal = function(command) +  local Terminal  = require('toggleterm.terminal').Terminal +  local term = Terminal:new({ +      cmd = command, +      direction = 'horizontal' +  }) +  term:toggle() +end + +local path = vim.fn.getcwd() .. '/.compile' + +local run = function() +  local file_exists = os.rename(path, path) +   +  if file_exists then +    openTerminal( +      'echo "Directory: $(pwd)"; echo "Compilation started at $(date +"%H:%M:%S")"; echo; ' +      .. 'bash ' .. path .. +      '; echo; echo "Compilation finished at $(date +"%H:%M:%S")"; read' +    ) +    return +  end + +  local file = io.open(path, 'w') + +  file:seek('set') +  file:write([[#!/bin/sh +set -xe +]] +  ) +  file:close() +  print('Created ' .. path) +  return nil +end + +vim.keymap.set('n', 'zz', function() +  run() +end) | 
