diff --git a/configs/nvim/init.lua b/configs/nvim/init.lua new file mode 100644 index 0000000..cf59ffd --- /dev/null +++ b/configs/nvim/init.lua @@ -0,0 +1,11 @@ +-------------------- HELPERS ------------------------------- +local helpers = require('helpers') + +-------------------- OPTIONS ------------------------------- +helpers.call_with_helpers(require('options').init) + +-------------------- PLUGINS ------------------------------- +helpers.call_with_helpers(require('plugins').init) + +-------------------- MAPPINGS ------------------------------ +helpers.call_with_helpers(require('mappings').init) \ No newline at end of file diff --git a/configs/nvim/init.vim b/configs/nvim/init.vim deleted file mode 100644 index 84f9819..0000000 --- a/configs/nvim/init.vim +++ /dev/null @@ -1,54 +0,0 @@ -" auto toggle relativenumber -set number! relativenumber! -augroup numbertoggle - autocmd! - autocmd BufEnter,FocusGained,InsertLeave * set relativenumber - autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber -augroup END - -" Tab options -set tabstop=4 softtabstop=4 -set shiftwidth=4 -set expandtab -set smartindent - -set signcolumn=yes - -set noerrorbells - -set nobackup -set nowrap -set undodir=~/.vim/undodir -set undofile - -set updatetime=500 - -let mapleader = " " - -lua require("adopi") - -" smartsearch -set smartcase ignorecase -set incsearch - -" toggle nu column -augroup vimrc-incsearch-highlight - autocmd! - autocmd CmdlineEnter /,\? :set hlsearch - autocmd CmdlineLeave /,\? :set nohlsearch -augroup END - -command! LogPath :lua print(vim.inspect(vim.lsp.get_log_path())) - -nnoremap ps :lua require('telescope.builtin').grep_string({ search = vim.fn.input("Grep For >")}) - -" Find files using Telescope command-line sugar. -nnoremap ff Telescope find_files -nnoremap fg Telescope live_grep -nnoremap fb Telescope buffers -nnoremap fh Telescope help_tags - -" NvimTreeToggle -nnoremap tt :NvimTreeToggle -nnoremap tr :NvimTreeRefresh - diff --git a/configs/nvim/lua/adopi/init.lua b/configs/nvim/lua/adopi/init.lua deleted file mode 100644 index 29b49f5..0000000 --- a/configs/nvim/lua/adopi/init.lua +++ /dev/null @@ -1,140 +0,0 @@ -local execute = vim.api.nvim_command -local fn = vim.fn - -local install_path = fn.stdpath('data')..'/site/pack/packer/opt/packer.nvim' - -if fn.empty(fn.glob(install_path)) > 0 then - fn.system({'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path}) - execute 'packadd packer.nvim' -end - -vim.cmd [[packadd packer.nvim]] - - -require('packer').startup(function() - -- Packer can manage itself - use 'wbthomason/packer.nvim' - - use {'dracula/vim'} - use {'whatyouhide/vim-gotham'} - use {'neovim/nvim-lspconfig'} - use {'hrsh7th/nvim-compe'} - use {'shaunsingh/moonlight.nvim'} - - -- Telescope project search - use { - 'nvim-telescope/telescope.nvim', - requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}} - } - - use {'nvim-treesitter/nvim-treesitter'} - - use 'kyazdani42/nvim-web-devicons' -- removing this line doesn't change the error - use 'kyazdani42/nvim-tree.lua' -end) - - -vim.cmd('colorscheme moonlight') - --- Setup LSP servers -local system_name -if vim.fn.has("mac") == 1 then - system_name = "macOS" -elseif vim.fn.has("unix") == 1 then - system_name = "Linux" -elseif vim.fn.has('win32') == 1 then - system_name = "Windows" -else - print("Unsupported system for sumneko") -end - -local sumneko_root_path = vim.fn.stdpath('cache')..'/lspconfig/sumneko_lua/lua-language-server' -local sumneko_binary = sumneko_root_path.."/bin/"..system_name.."/lua-language-server" - -require'lspconfig'.sumneko_lua.setup{ - cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"}; - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - -- Setup your lua path - path = vim.split(package.path, ';'), - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'}, - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = { - [vim.fn.expand('$VIMRUNTIME/lua')] = true, - [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, - }, - }, - -- Do not send telemetry data containing a randomized but unique identifier - telemetry = { - enable = false, - }, - }, - }, -} - - -require'lspconfig'.rls.setup { - settings = { - rust = { - unstable_features = true, - build_on_save = false, - all_features = true, - }, - }, -} - -require'lspconfig'.tsserver.setup{} - -require'lspconfig'.pyls.setup{} - -vim.o.completeopt = "menuone,noselect" -require'compe'.setup { - enabled = true; - autocomplete = true; - debug = false; - min_length = 1; - preselect = 'enable'; - throttle_time = 80; - source_timeout = 200; - incomplete_delay = 400; - max_abbr_width = 100; - max_kind_width = 100; - max_menu_width = 100; - documentation = true; - - source = { - path = true; - buffer = true; - calc = true; - nvim_lsp = true; - nvim_lua = true; - vsnip = true; - ultisnips = true; - }; -} - - - -require'lspconfig'.solargraph.setup{} ---require'lspconfig'.sorbet.setup{} - - ---nvim treesitter -require'nvim-treesitter.configs'.setup { - ensure_installed = "maintained", -- list of languages - highlight = { - enable = true, - }, - rainbow = { - enable = true, - extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean - } -} diff --git a/configs/nvim/lua/helpers.lua b/configs/nvim/lua/helpers.lua new file mode 100644 index 0000000..c507093 --- /dev/null +++ b/configs/nvim/lua/helpers.lua @@ -0,0 +1,40 @@ +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 function map(mode, lhs, rhs, opts) + local options = {noremap = true} + if opts then options = vim.tbl_extend('force', options, opts) end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) +end + +local function dump(...) + local objects = vim.tbl_map(vim.inspect, {...}) + print(unpack(objects)) +end + +local function call_with_helpers(user_func) + setfenv(user_func, + vim.tbl_extend('force', getfenv(), get_helpers())) + local status, err = pcall(user_func) + if not status then + print('Failure running setup function: ' .. vim.inspect(err)) + else + return status + end +end + +function get_helpers() + return { + map = map, + cmd = cmd, + fn = fn, + g = g, + opt = opt, + dump = dump, + call_with_helpers = call_with_helpers, + } +end + +return get_helpers() \ No newline at end of file diff --git a/configs/nvim/lua/mappings.lua b/configs/nvim/lua/mappings.lua new file mode 100644 index 0000000..c81dd6e --- /dev/null +++ b/configs/nvim/lua/mappings.lua @@ -0,0 +1,32 @@ +local function init() + -- command! LogPath :lua print(vim.inspect(vim.lsp.get_log_path())) + + -------------------- Telescope ----------------------------- + map('n', 'ff', 'Telescope find_files') + map('n', 'fg', 'Telescope live_grep') + map('n', 'fb', 'Telescope buffers') + map('n', 'fh', 'Telescope help_tags') + map('n', 'ps', [[lua require('telescope.builtin').grep_string({ search = vim.fn.input("Grep For >")})]]) + + -------------------- NvimTreeToggle ------------------------ + map('n', 'tt', 'NvimTreeToggle') + map('n', 'tr', 'NvimTreeRefresh') + + -------------------- LSP ----------------------------------- + map('n', ',', 'lua vim.lsp.diagnostic.goto_prev()') + map('n', ';', 'lua vim.lsp.diagnostic.goto_next()') + map('n', 'a', 'lua vim.lsp.buf.code_action()') + map('n', 'd', 'lua vim.lsp.buf.definition()') + map('n', 'f', 'lua vim.lsp.buf.formatting()') + map('n', 'h', 'lua vim.lsp.buf.hover()') + map('n', 'm', 'lua vim.lsp.buf.rename()') + map('n', 'r', 'lua vim.lsp.buf.references()') + map('n', 's', 'lua vim.lsp.buf.document_symbol()') + + -------------------- COMMANDS ------------------------------ + cmd 'au TextYankPost * lua vim.highlight.on_yank {on_visual = false}' -- disabled in visual mode +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/options.lua b/configs/nvim/lua/options.lua new file mode 100644 index 0000000..faccefc --- /dev/null +++ b/configs/nvim/lua/options.lua @@ -0,0 +1,28 @@ +local function init(){ + cmd('colorscheme moonlight') + + opt.completeopt = {'menuone', 'noinsert', 'noselect'} -- Completion options (for deoplete) + opt.expandtab = true -- Use spaces instead of tabs + opt.hidden = true -- Enable background buffers + opt.ignorecase = true -- Ignore case + opt.joinspaces = false -- No double spaces with join + opt.list = true -- Show some invisible characters + opt.number = true -- Show line numbers + opt.relativenumber = true -- Relative line numbers + opt.scrolloff = 4 -- Lines of context + opt.shiftround = true -- Round indent + opt.shiftwidth = 2 -- Size of an indent + opt.sidescrolloff = 8 -- Columns of context + opt.smartcase = true -- Do not ignore case with capitals + opt.smartindent = true -- Insert indents automatically + opt.splitbelow = true -- Put new windows below current + opt.splitright = true -- Put new windows right of current + opt.tabstop = 2 -- Number of spaces tabs count for + opt.termguicolors = true -- True color support + opt.wildmode = {'list', 'longest'} -- Command-line completion mode + opt.wrap = false -- Disable line wrap +} + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/plugins/compe.lua b/configs/nvim/lua/plugins/compe.lua new file mode 100644 index 0000000..0877dbd --- /dev/null +++ b/configs/nvim/lua/plugins/compe.lua @@ -0,0 +1,31 @@ +local function init() + vim.o.completeopt = "menuone,noselect" + require'compe'.setup { + enabled = true; + autocomplete = true; + debug = false; + min_length = 1; + preselect = 'enable'; + throttle_time = 80; + source_timeout = 200; + incomplete_delay = 400; + max_abbr_width = 100; + max_kind_width = 100; + max_menu_width = 100; + documentation = true; + + source = { + path = true; + buffer = true; + calc = true; + nvim_lsp = true; + nvim_lua = true; + vsnip = true; + ultisnips = true; + }; + } +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/plugins/init.lua b/configs/nvim/lua/plugins/init.lua new file mode 100644 index 0000000..8a27146 --- /dev/null +++ b/configs/nvim/lua/plugins/init.lua @@ -0,0 +1,46 @@ +function configure_packages() + call_with_helpers(require('plugins.lspconfig').init) + call_with_helpers(require('plugins.compe').init) + call_with_helpers(require('plugins.nvim-treesitter').init) +end + +function install_packages() + -- Packer can manage itself + use 'wbthomason/packer.nvim' + + use {'dracula/vim'} + use {'whatyouhide/vim-gotham'} + use {'neovim/nvim-lspconfig'} + use {'hrsh7th/nvim-compe'} + use {'shaunsingh/moonlight.nvim'} + + -- Telescope project search + use { + 'nvim-telescope/telescope.nvim', + requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}} + } + + use {'nvim-treesitter/nvim-treesitter'} + + use 'kyazdani42/nvim-web-devicons' -- removing this line doesn't change the error + use 'kyazdani42/nvim-tree.lua' +end + +function init() + local install_path = fn.stdpath('data')..'/site/pack/packer/opt/packer.nvim' + + if fn.empty(fn.glob(install_path)) > 0 then + fn.system({'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path}) + cmd 'packadd packer.nvim' + end + + cmd 'packadd packer.nvim' + + require('packer').startup(install_packages) + + call_with_helpers(configure_packages) +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/plugins/lspconfig/init.lua b/configs/nvim/lua/plugins/lspconfig/init.lua new file mode 100644 index 0000000..571297c --- /dev/null +++ b/configs/nvim/lua/plugins/lspconfig/init.lua @@ -0,0 +1,10 @@ +local function init() + call_with_helpers(require('plugins.lspconfig.lua').init) + call_with_helpers(require('plugins.lspconfig.rust').init) + call_with_helpers(require('plugins.lspconfig.typescript').init) + call_with_helpers(require('plugins.lspconfig.ruby').init) +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/plugins/lspconfig/lua.lua b/configs/nvim/lua/plugins/lspconfig/lua.lua new file mode 100644 index 0000000..8175d4f --- /dev/null +++ b/configs/nvim/lua/plugins/lspconfig/lua.lua @@ -0,0 +1,48 @@ +local function init() + local system_name + if vim.fn.has("mac") == 1 then + system_name = "macOS" + elseif vim.fn.has("unix") == 1 then + system_name = "Linux" + elseif vim.fn.has('win32') == 1 then + system_name = "Windows" + else + print("Unsupported system for sumneko") + end + + local sumneko_root_path = fn.stdpath('cache')..'/lspconfig/sumneko_lua/lua-language-server' + local sumneko_binary = sumneko_root_path.."/bin/"..system_name.."/lua-language-server" + + require'lspconfig'.sumneko_lua.setup{ + cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"}; + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Setup your lua path + path = vim.split(package.path, ';'), + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, + }, + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, + }, + } +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/plugins/lspconfig/ruby.lua b/configs/nvim/lua/plugins/lspconfig/ruby.lua new file mode 100644 index 0000000..4f0a939 --- /dev/null +++ b/configs/nvim/lua/plugins/lspconfig/ruby.lua @@ -0,0 +1,7 @@ +local function init() + require'lspconfig'.solargraph.setup{} +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/plugins/lspconfig/rust.lua b/configs/nvim/lua/plugins/lspconfig/rust.lua new file mode 100644 index 0000000..3a47569 --- /dev/null +++ b/configs/nvim/lua/plugins/lspconfig/rust.lua @@ -0,0 +1,15 @@ +local function init() + require'lspconfig'.rls.setup { + settings = { + rust = { + unstable_features = true, + build_on_save = false, + all_features = true, + }, + }, + } +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/plugins/lspconfig/typescript.lua b/configs/nvim/lua/plugins/lspconfig/typescript.lua new file mode 100644 index 0000000..b41fa45 --- /dev/null +++ b/configs/nvim/lua/plugins/lspconfig/typescript.lua @@ -0,0 +1,7 @@ +local function init() + require'lspconfig'.tsserver.setup{} +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/lua/plugins/nvim-treesitter.lua b/configs/nvim/lua/plugins/nvim-treesitter.lua new file mode 100644 index 0000000..72f554b --- /dev/null +++ b/configs/nvim/lua/plugins/nvim-treesitter.lua @@ -0,0 +1,16 @@ +local function init() + require'nvim-treesitter.configs'.setup { + ensure_installed = "maintained", -- list of languages + highlight = { + enable = true, + }, + rainbow = { + enable = true, + extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean + } + } +end + +return { + init = init +} \ No newline at end of file diff --git a/configs/nvim/plugin/packer_compiled.vim b/configs/nvim/plugin/packer_compiled.vim deleted file mode 100644 index 0395896..0000000 --- a/configs/nvim/plugin/packer_compiled.vim +++ /dev/null @@ -1,127 +0,0 @@ -" Automatically generated packer.nvim plugin loader code - -if !has('nvim-0.5') - echohl WarningMsg - echom "Invalid Neovim version for packer.nvim!" - echohl None - finish -endif - -packadd packer.nvim - -try - -lua << END - local time - local profile_info - local should_profile = false - if should_profile then - local hrtime = vim.loop.hrtime - profile_info = {} - time = function(chunk, start) - if start then - profile_info[chunk] = hrtime() - else - profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 - end - end - else - time = function(chunk, start) end - end - -local function save_profiles(threshold) - local sorted_times = {} - for chunk_name, time_taken in pairs(profile_info) do - sorted_times[#sorted_times + 1] = {chunk_name, time_taken} - end - table.sort(sorted_times, function(a, b) return a[2] > b[2] end) - local results = {} - for i, elem in ipairs(sorted_times) do - if not threshold or threshold and elem[2] > threshold then - results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' - end - end - - _G._packer = _G._packer or {} - _G._packer.profile_output = results -end - -time([[Luarocks path setup]], true) -local package_path_str = "/home/matcha/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/matcha/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/matcha/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/matcha/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" -local install_cpath_pattern = "/home/matcha/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" -if not string.find(package.path, package_path_str, 1, true) then - package.path = package.path .. ';' .. package_path_str -end - -if not string.find(package.cpath, install_cpath_pattern, 1, true) then - package.cpath = package.cpath .. ';' .. install_cpath_pattern -end - -time([[Luarocks path setup]], false) -time([[try_loadstring definition]], true) -local function try_loadstring(s, component, name) - local success, result = pcall(loadstring(s)) - if not success then - vim.schedule(function() - vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) - end) - end - return result -end - -time([[try_loadstring definition]], false) -time([[Defining packer_plugins]], true) -_G.packer_plugins = { - ["moonlight.nvim"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/moonlight.nvim" - }, - ["nvim-compe"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/nvim-compe" - }, - ["nvim-lspconfig"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/nvim-lspconfig" - }, - ["nvim-treesitter"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/nvim-treesitter" - }, - ["packer.nvim"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/packer.nvim" - }, - ["plenary.nvim"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/plenary.nvim" - }, - ["popup.nvim"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/popup.nvim" - }, - ["telescope.nvim"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/telescope.nvim" - }, - vim = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/vim" - }, - ["vim-gotham"] = { - loaded = true, - path = "/home/matcha/.local/share/nvim/site/pack/packer/start/vim-gotham" - } -} - -time([[Defining packer_plugins]], false) -if should_profile then save_profiles() end - -END - -catch - echohl ErrorMsg - echom "Error in packer_compiled: " .. v:exception - echom "Please check your config for correctness" - echohl None -endtry