commit fbee4ec4f6504283fbf511ad808c66d29c305f66 Author: dsutanto Date: Tue Feb 20 10:10:38 2024 +0700 Latest NVIM Config diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..819f7ab --- /dev/null +++ b/init.lua @@ -0,0 +1,3 @@ +require("core.keymaps") +require("core.plugins") +require("core.plugin_config") diff --git a/lua/core/keymaps.lua b/lua/core/keymaps.lua new file mode 100644 index 0000000..a058959 --- /dev/null +++ b/lua/core/keymaps.lua @@ -0,0 +1,18 @@ +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +vim.opt.backspace = '2' +vim.opt.showcmd = true +vim.opt.laststatus = 2 +vim.opt.autowrite = true +vim.opt.cursorline = true +vim.opt.autoread = true + +-- use space for tab +vim.opt.tabstop = 4 +vim.opt.shiftwidth = 4 +vim.opt.shiftround = true +vim.opt.expandtab = true + +vim.keymap.set('n', 'h', ':nohlsearch') +vim.api.nvim_command('set number') diff --git a/lua/core/plugin_config/colorscheme.lua b/lua/core/plugin_config/colorscheme.lua new file mode 100644 index 0000000..6443de4 --- /dev/null +++ b/lua/core/plugin_config/colorscheme.lua @@ -0,0 +1,2 @@ +vim.o.termguicolors = true +vim.cmd [[ colorscheme moonfly ]] diff --git a/lua/core/plugin_config/completions.lua b/lua/core/plugin_config/completions.lua new file mode 100644 index 0000000..65706e2 --- /dev/null +++ b/lua/core/plugin_config/completions.lua @@ -0,0 +1,22 @@ +local cmp = require("cmp") + +cmp.setup({ + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + }), + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, { + { name = 'buffer' }, + }), +}) diff --git a/lua/core/plugin_config/flutter.lua b/lua/core/plugin_config/flutter.lua new file mode 100644 index 0000000..484fa63 --- /dev/null +++ b/lua/core/plugin_config/flutter.lua @@ -0,0 +1 @@ +require("flutter-tools").setup {} -- use defaults diff --git a/lua/core/plugin_config/gruvbox.lua b/lua/core/plugin_config/gruvbox.lua new file mode 100644 index 0000000..c5f8d69 --- /dev/null +++ b/lua/core/plugin_config/gruvbox.lua @@ -0,0 +1,2 @@ +vim.o.termguicolors = true +vim.cmd [[ colorscheme gruvbox ]] diff --git a/lua/core/plugin_config/init.lua b/lua/core/plugin_config/init.lua new file mode 100644 index 0000000..f421a3e --- /dev/null +++ b/lua/core/plugin_config/init.lua @@ -0,0 +1,8 @@ +require("core.plugin_config.colorscheme") +require("core.plugin_config.lualine") +require("core.plugin_config.nvim-tree") +require("core.plugin_config.telescope") +require("core.plugin_config.treesitter") +require("core.plugin_config.lsp_config") +require("core.plugin_config.completions") +require("core.plugin_config.flutter") diff --git a/lua/core/plugin_config/lsp_config.lua b/lua/core/plugin_config/lsp_config.lua new file mode 100644 index 0000000..fb91526 --- /dev/null +++ b/lua/core/plugin_config/lsp_config.lua @@ -0,0 +1,25 @@ +require("mason").setup() + +require("luasnip.loaders.from_vscode").lazy_load() + +local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) + +require("mason-lspconfig").setup({ + ensure_installed = { "pyright", "bashls", "lua_ls", "html" } +}) + +vim.keymap.set("n", "gd", "Lspsaga lsp_finder", { silent = true }) +vim.keymap.set('n', 'K', 'Lspsaga hover_doc', { silent = true }) +vim.keymap.set({"n","v"}, "ca", "Lspsaga code_action", { silent = true }) +vim.keymap.set("n", "rn", "Lspsaga rename", { silent = true }) + +require("lspconfig").pyright.setup { + capabilities = capabilities, +} +require("lspconfig").bashls.setup {} +require("lspconfig").html.setup { + capabilities = capabilities, +} +require("lspconfig").lua_ls.setup { + capabilities = capabilities, +} diff --git a/lua/core/plugin_config/lualine.lua b/lua/core/plugin_config/lualine.lua new file mode 100644 index 0000000..b4eb1de --- /dev/null +++ b/lua/core/plugin_config/lualine.lua @@ -0,0 +1,14 @@ +require('lualine').setup { + options = { + icons_enabled = true, + theme = 'moonfly', + }, + sections = { + lualine_a = { + { + 'filename', + path = 1, + } + } + } +} diff --git a/lua/core/plugin_config/moonfly.lua b/lua/core/plugin_config/moonfly.lua new file mode 100644 index 0000000..6443de4 --- /dev/null +++ b/lua/core/plugin_config/moonfly.lua @@ -0,0 +1,2 @@ +vim.o.termguicolors = true +vim.cmd [[ colorscheme moonfly ]] diff --git a/lua/core/plugin_config/nightfly.lua b/lua/core/plugin_config/nightfly.lua new file mode 100644 index 0000000..3b2b9f3 --- /dev/null +++ b/lua/core/plugin_config/nightfly.lua @@ -0,0 +1,2 @@ +vim.o.termguicolors = true +vim.cmd [[ colorscheme nightfly ]] diff --git a/lua/core/plugin_config/nvim-tree.lua b/lua/core/plugin_config/nvim-tree.lua new file mode 100644 index 0000000..eeb97a0 --- /dev/null +++ b/lua/core/plugin_config/nvim-tree.lua @@ -0,0 +1,6 @@ +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +require("nvim-tree").setup() + +vim.keymap.set('n', '', ':NvimTreeFindFileToggle') diff --git a/lua/core/plugin_config/telescope.lua b/lua/core/plugin_config/telescope.lua new file mode 100644 index 0000000..6c9ee43 --- /dev/null +++ b/lua/core/plugin_config/telescope.lua @@ -0,0 +1,7 @@ +require('telescope').setup() +local builtin = require('telescope.builtin') + +vim.keymap.set('n', '', builtin.find_files, {}) +vim.keymap.set('n', '', builtin.oldfiles, {}) +vim.keymap.set('n', 'fg', builtin.live_grep, {}) +vim.keymap.set('n', 'fh', builtin.help_tags, {}) diff --git a/lua/core/plugin_config/treesitter.lua b/lua/core/plugin_config/treesitter.lua new file mode 100644 index 0000000..05cd90f --- /dev/null +++ b/lua/core/plugin_config/treesitter.lua @@ -0,0 +1,11 @@ +require'nvim-treesitter.configs'.setup { + -- A list of parser names, or "all" + ensure_installed = { "c", "lua", "rust", "html", "vim", "python", "bash", "javascript", "typescript", "markdown" }, + + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + auto_install = true, + highlight = { + enable = true, + }, +} diff --git a/lua/core/plugins.lua b/lua/core/plugins.lua new file mode 100644 index 0000000..85a36fe --- /dev/null +++ b/lua/core/plugins.lua @@ -0,0 +1,60 @@ +local ensure_packer = function() + local fn = vim.fn + local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim' + if fn.empty(fn.glob(install_path)) > 0 then + fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path}) + vim.cmd [[packadd packer.nvim]] + return true + end + return false +end + +local packer_bootstrap = ensure_packer() + +return require('packer').startup(function(use) + use 'wbthomason/packer.nvim' + use 'ellisonleao/gruvbox.nvim' + use 'nvim-tree/nvim-tree.lua' + use 'nvim-tree/nvim-web-devicons' + use 'nvim-lualine/lualine.nvim' + use 'nvim-treesitter/nvim-treesitter' + use { "bluz71/vim-moonfly-colors", as = "moonfly" } + use { + 'nvim-telescope/telescope.nvim', tag = '0.1.1', + requires = { {'nvim-lua/plenary.nvim'} } + } + + -- LSP + use { 'williamboman/mason.nvim' } + use { 'neovim/nvim-lspconfig' } + use { 'williamboman/mason-lspconfig.nvim' } + + -- Completion + use { 'hrsh7th/nvim-cmp' } + use { 'hrsh7th/cmp-nvim-lsp' } + + -- Flutter + use { + 'akinsho/flutter-tools.nvim', + requires = { + 'nvim-lua/plenary.nvim', + 'stevearc/dressing.nvim', -- optional for vim.ui.select + }, + } + + -- Snippet + use({ + "L3MON4D3/LuaSnip", + -- follow latest release. + tag = "v.*", + -- install jsregexp (optional!:). + run = "make install_jsregexp" + }) + use { 'saadparwaiz1/cmp_luasnip' } + use { 'rafamadriz/friendly-snippets' } + -- Automatically set up your configuration after cloning packer.nvim + -- Put this at the end after all plugins + if packer_bootstrap then + require('packer').sync() + end +end) diff --git a/plugin/packer_compiled.lua b/plugin/packer_compiled.lua new file mode 100644 index 0000000..de2a855 --- /dev/null +++ b/plugin/packer_compiled.lua @@ -0,0 +1,179 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +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 + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/dsutanto/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/dsutanto/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/dsutanto/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/dsutanto/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/dsutanto/.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), name, _G.packer_plugins[name]) + 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 = { + LuaSnip = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + cmp_luasnip = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/cmp_luasnip", + url = "https://github.com/saadparwaiz1/cmp_luasnip" + }, + ["friendly-snippets"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/friendly-snippets", + url = "https://github.com/rafamadriz/friendly-snippets" + }, + ["gruvbox.nvim"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/gruvbox.nvim", + url = "https://github.com/ellisonleao/gruvbox.nvim" + }, + ["lualine.nvim"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/lualine.nvim", + url = "https://github.com/nvim-lualine/lualine.nvim" + }, + ["mason-lspconfig.nvim"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", + url = "https://github.com/williamboman/mason-lspconfig.nvim" + }, + ["mason.nvim"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/mason.nvim", + url = "https://github.com/williamboman/mason.nvim" + }, + moonfly = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/moonfly", + url = "https://github.com/bluz71/vim-moonfly-colors" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-tree.lua"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/nvim-tree.lua", + url = "https://github.com/nvim-tree/nvim-tree.lua" + }, + ["nvim-treesitter"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-web-devicons"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", + url = "https://github.com/nvim-tree/nvim-web-devicons" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["telescope.nvim"] = { + loaded = true, + path = "/home/dsutanto/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + } +} + +time([[Defining packer_plugins]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end