├── lua ├── plugins.lua ├── .luarc.json ├── plugins │ ├── oil.lua │ ├── catppuccin.lua │ ├── treesitter.lua │ ├── telescope.lua │ ├── lsp-config.lua │ └── completions.lua └── vim-options.lua ├── .luarc.json └── init.lua /lua/plugins.lua: -------------------------------------------------------------------------------- 1 | return {} 2 | -------------------------------------------------------------------------------- /.luarc.json: -------------------------------------------------------------------------------- 1 | { 2 | "diagnostics.globals": [ 3 | "vim" 4 | ] 5 | } -------------------------------------------------------------------------------- /lua/.luarc.json: -------------------------------------------------------------------------------- 1 | { 2 | "diagnostics.globals": [ 3 | "vim" 4 | ] 5 | } -------------------------------------------------------------------------------- /lua/plugins/oil.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "stevearc/oil.nvim", 3 | config = function() 4 | local oil = require("oil") 5 | oil.setup() 6 | vim.keymap.set("n", "-", oil.toggle_float, {}) 7 | end, 8 | } 9 | -------------------------------------------------------------------------------- /lua/plugins/catppuccin.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "catppuccin/nvim", 3 | lazy = false, 4 | name = "catppuccin", 5 | priority = 1000, 6 | config = function() 7 | vim.cmd.colorscheme "catppuccin-mocha" 8 | end 9 | } 10 | -------------------------------------------------------------------------------- /lua/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-treesitter/nvim-treesitter", 4 | build = ":TSUpdate", 5 | config = function() 6 | local config = require("nvim-treesitter.configs") 7 | config.setup({ 8 | auto_install = true, 9 | highlight = { enable = true }, 10 | indent = { enable = false }, 11 | }) 12 | end 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /init.lua: -------------------------------------------------------------------------------- 1 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 2 | if not vim.loop.fs_stat(lazypath) then 3 | vim.fn.system({ 4 | "git", 5 | "clone", 6 | "--filter=blob:none", 7 | "https://github.com/folke/lazy.nvim.git", 8 | "--branch=stable", -- latest stable release 9 | lazypath, 10 | }) 11 | end 12 | vim.opt.rtp:prepend(lazypath) 13 | 14 | require("vim-options") 15 | require("lazy").setup("plugins") 16 | -------------------------------------------------------------------------------- /lua/vim-options.lua: -------------------------------------------------------------------------------- 1 | vim.cmd("set expandtab") 2 | vim.cmd("set tabstop=2") 3 | vim.cmd("set softtabstop=2") 4 | vim.cmd("set shiftwidth=2") 5 | vim.g.mapleader = " " 6 | 7 | vim.opt.swapfile = false 8 | 9 | -- Navigate vim panes better 10 | vim.keymap.set('n', '', ':wincmd k') 11 | vim.keymap.set('n', '', ':wincmd j') 12 | vim.keymap.set('n', '', ':wincmd h') 13 | vim.keymap.set('n', '', ':wincmd l') 14 | 15 | vim.keymap.set('n', 'h', ':nohlsearch') 16 | vim.wo.number = true 17 | -------------------------------------------------------------------------------- /lua/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-telescope/telescope-ui-select.nvim", 4 | }, 5 | { 6 | "nvim-telescope/telescope.nvim", 7 | tag = "0.1.5", 8 | dependencies = { "nvim-lua/plenary.nvim" }, 9 | config = function() 10 | require("telescope").setup({ 11 | pickers = { 12 | find_files = { 13 | hidden = true, 14 | theme = "ivy", 15 | }, 16 | }, 17 | extensions = { 18 | ["ui-select"] = { 19 | require("telescope.themes").get_dropdown({}), 20 | }, 21 | }, 22 | }) 23 | local builtin = require("telescope.builtin") 24 | vim.keymap.set("n", "", builtin.find_files, {}) 25 | vim.keymap.set("n", "fg", builtin.live_grep, {}) 26 | vim.keymap.set("n", "", builtin.oldfiles, {}) 27 | 28 | require("telescope").load_extension("ui-select") 29 | end, 30 | }, 31 | } 32 | -------------------------------------------------------------------------------- /lua/plugins/lsp-config.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "williamboman/mason.nvim", 4 | lazy = false, 5 | config = function() 6 | require("mason").setup() 7 | end, 8 | }, 9 | { 10 | "williamboman/mason-lspconfig.nvim", 11 | lazy = false, 12 | opts = { 13 | auto_install = true, 14 | }, 15 | }, 16 | { 17 | "neovim/nvim-lspconfig", 18 | lazy = false, 19 | config = function() 20 | local capabilities = require('cmp_nvim_lsp').default_capabilities() 21 | 22 | local lspconfig = require("lspconfig") 23 | lspconfig.ruby_lsp.setup({ 24 | capabilities = capabilities 25 | }) 26 | 27 | vim.keymap.set("n", "K", vim.lsp.buf.hover, {}) 28 | vim.keymap.set("n", "gd", vim.lsp.buf.definition, {}) 29 | vim.keymap.set("n", "gr", vim.lsp.buf.references, {}) 30 | vim.keymap.set("n", "gf", vim.lsp.buf.format, {}) 31 | vim.keymap.set("n", "ca", vim.lsp.buf.code_action, {}) 32 | vim.keymap.set('n', 'rn', vim.lsp.buf.rename, {}) 33 | end, 34 | }, 35 | } 36 | -------------------------------------------------------------------------------- /lua/plugins/completions.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "hrsh7th/cmp-nvim-lsp" 4 | }, 5 | { 6 | "L3MON4D3/LuaSnip", 7 | dependencies = { 8 | "saadparwaiz1/cmp_luasnip", 9 | "rafamadriz/friendly-snippets", 10 | }, 11 | }, 12 | { 13 | "hrsh7th/nvim-cmp", 14 | config = function() 15 | local cmp = require("cmp") 16 | require("luasnip.loaders.from_vscode").lazy_load() 17 | 18 | cmp.setup({ 19 | snippet = { 20 | expand = function(args) 21 | require("luasnip").lsp_expand(args.body) 22 | end, 23 | }, 24 | window = { 25 | completion = cmp.config.window.bordered(), 26 | documentation = cmp.config.window.bordered(), 27 | }, 28 | mapping = cmp.mapping.preset.insert({ 29 | [""] = cmp.mapping.scroll_docs(-4), 30 | [""] = cmp.mapping.scroll_docs(4), 31 | [""] = cmp.mapping.complete(), 32 | [""] = cmp.mapping.abort(), 33 | [""] = cmp.mapping.confirm({ select = true }), 34 | }), 35 | sources = cmp.config.sources({ 36 | { name = "nvim_lsp" }, 37 | { name = "luasnip" }, -- For luasnip users. 38 | }, { 39 | { name = "buffer" }, 40 | }), 41 | }) 42 | end, 43 | }, 44 | } 45 | --------------------------------------------------------------------------------