From 05f9bc5afd5ac5f671f1dcd3d20774b0987545ec Mon Sep 17 00:00:00 2001 From: Raghuram Subramani Date: Sat, 27 Jan 2024 12:45:54 +0530 Subject: refactor dotfiles, and use nix --- config/nvim/init.lua | 197 ++++++++++++++++++++++++++++++++++++++++++++ config/nvim/lua/compile.lua | 38 +++++++++ 2 files changed, 235 insertions(+) create mode 100644 config/nvim/init.lua create mode 100644 config/nvim/lua/compile.lua (limited to 'config/nvim') 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({ + [''] = 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', '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', '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', '', 'close', { noremap = true }) +vim.keymap.set('n', '', '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 }) +vim.keymap.set('t', '', 'ToggleTerm', { noremap = true }) + +vim.keymap.set('n', '', 'bnext', { noremap = true }) +vim.keymap.set('n', '', 'bprev', { noremap = true }) + +vim.keymap.set('n', '', 'TmuxNavigateLeft', { noremap = true }) +vim.keymap.set('n', '', 'TmuxNavigateDown', { noremap = true }) +vim.keymap.set('n', '', 'TmuxNavigateUp', { noremap = true }) +vim.keymap.set('n', '', 'TmuxNavigateRight', { noremap = true }) + +vim.keymap.set('n', '', 'lua oil.toggle_float()', { noremap = true }) + +-- Splitting The Window +vim.api.nvim_set_keymap('n', '', ':vsplit', { noremap = true }) +vim.api.nvim_set_keymap('n', '', ':split', { 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) -- cgit v1.2.3