aboutsummaryrefslogblamecommitdiff
path: root/.config/nvim/init.lua
blob: f3b5f554a293d8fe3153f36615f8016c31b60f54 (plain) (tree)
















































































































































































































































































































































































                                                                                                                                                         
local fn = vim.fn
local install_path = fn.stdpath("data").."/site/pack/packer/start/packer.nvim"
local packer_bootstrap
if fn.empty(fn.glob(install_path)) > 0 then
	packer_bootstrap = fn.system({"git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path})
end

vim.api.nvim_set_option("mouse", "a")
vim.api.nvim_command("set number relativenumber mouse")

vim.opt.list = true
vim.opt.listchars:append("space:⋅")
vim.opt.listchars:append("eol:↴")
vim.opt.listchars:append("tab:-->")

vim.api.nvim_command("nnoremap <A-j> :m .+1<CR>==")
vim.api.nvim_command("nnoremap <A-k> :m .-2<CR>==")
vim.api.nvim_command("inoremap <A-j> <Esc>:m .+1<CR>==gi")
vim.api.nvim_command("inoremap <A-k> <Esc>:m .-2<CR>==gi")
vim.api.nvim_command("vnoremap <A-j> :m '>+1<CR>gv=gv")
vim.api.nvim_command("vnoremap <A-k> :m '<-2<CR>gv=gv")

return require("packer").startup(function(use)
	-- Package manager
	use "wbthomason/packer.nvim"
	-- My plugins here
	-- use "foo1/bar1.nvim"
	-- use "foo2/bar2.nvim"

	-- File tree
	use {
		"kyazdani42/nvim-tree.lua",
		requires = {
			"kyazdani42/nvim-web-devicons", -- optional, for file icon
		},
		cmd = { "NvimTreeToggle" },
		setup = function()
			vim.api.nvim_set_keymap('n', "<c-n>", ":NvimTreeToggle<CR>", { noremap = true, silent = true })
		end,
		config = function()
			require'nvim-tree'.setup { -- BEGIN_DEFAULT_OPTS
				auto_reload_on_write = true,
				disable_netrw = false,
				hijack_cursor = false,
				hijack_netrw = true,
				hijack_unnamed_buffer_when_opening = false,
				ignore_buffer_on_setup = false,
				open_on_setup = false,
				open_on_setup_file = false,
				open_on_tab = false,
				sort_by = "name",
				update_cwd = false,
				view = {
					width = 30,
					height = 30,
					hide_root_folder = false,
					side = "left",
					preserve_window_proportions = false,
					number = false,
					relativenumber = false,
					signcolumn = "yes",
					mappings = {
						custom_only = false,
						list = {
							-- user mappings go here
						},
					},
				},
				renderer = {
					indent_markers = {
						enable = false,
						icons = {
							corner = "└ ",
							edge = "│ ",
							none = "	",
						},
					},
					icons = {
						webdev_colors = true,
						git_placement = "before",
					}
				},
				hijack_directories = {
					enable = true,
					auto_open = true,
				},
				update_focused_file = {
					enable = false,
					update_cwd = false,
					ignore_list = {},
				},
				ignore_ft_on_setup = {},
				system_open = {
					cmd = "",
					args = {},
				},
				diagnostics = {
					enable = false,
					show_on_dirs = false,
					icons = {
						hint = "",
						info = "",
						warning = "",
						error = "",
					},
				},
				filters = {
					dotfiles = false,
					custom = {},
					exclude = {},
				},
				git = {
					enable = true,
					ignore = true,
					timeout = 400,
				},
				actions = {
					use_system_clipboard = true,
					change_dir = {
						enable = true,
						global = false,
						restrict_above_cwd = false,
					},
					open_file = {
						quit_on_open = false,
						resize_window = false,
						window_picker = {
							enable = true,
							chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
							exclude = {
								filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
								buftype = { "nofile", "terminal", "help" },
							},
						},
					},
				},
				trash = {
					cmd = "trash",
					require_confirm = true,
				},
				log = {
					enable = false,
					truncate = false,
					types = {
						all = false,
						config = false,
						copy_paste = false,
						diagnostics = false,
						git = false,
						profile = false,
					},
				},
			} -- END_DEFAULT_OPTS
		end
		-- tag = "nightly" -- optional, updated every week. (see issue #1193)
	}

	use {
		'nvim-telescope/telescope.nvim',
		requires = { {'nvim-lua/plenary.nvim'} },
		config = function()
			vim.api.nvim_set_keymap('n', "<c-f>", ":Telescope find_files<CR>", { noremap = true, silent = true })
			vim.api.nvim_set_keymap('n', "<c-TAB>", ":Telescope buffers<CR>", { noremap = true, silent = true })
		end,
	}

	use {
		'kdheepak/tabline.nvim',
		config = function()
			require'tabline'.setup {
				-- Defaults configuration options
				enable = true,
				options = {
				-- If lualine is installed tabline will use separators configured in lualine by default.
				-- These options can be used to override those settings.
					section_separators = {'', ''},
					component_separators = {'', ''},
					max_bufferline_percent = 66, -- set to nil by default, and it uses vim.o.columns * 2/3
					show_tabs_always = false, -- this shows tabs only when there are more than one tab or if the first tab is named
					show_devicons = true, -- this shows devicons in buffer section
					show_bufnr = false, -- this appends [bufnr] to buffer section,
					show_filename_only = false, -- shows base filename only instead of relative path in filename
					modified_icon = "+ ", -- change the default modified icon
					modified_italic = false, -- set to true by default; this determines whether the filename turns italic if modified
					show_tabs_only = false, -- this shows only tabs instead of tabs + buffers
				}
			}
			vim.cmd[[
				set guioptions-=e " Use showtabline in gui vim
				set sessionoptions+=tabpages,globals " store tabpages and globals in session
			]]
		end,
		requires = { { 'hoob3rt/lualine.nvim', opt=true }, {'kyazdani42/nvim-web-devicons', opt = true} }
	}

	use {
		'nvim-lualine/lualine.nvim',
		requires = { 'kyazdani42/nvim-web-devicons', opt = true },
		config = function()
			local tabline = require("tabline")
			require('lualine').setup {
				options = {
					icons_enabled = true,
					theme = 'auto',
					component_separators = { left = '', right = ''},
					section_separators = { left = '', right = ''},
					disabled_filetypes = {},
					always_divide_middle = true,
					globalstatus = false,
				},
				sections = {
					lualine_a = {'mode'},
					lualine_b = {'branch', 'diff', 'diagnostics'},
					lualine_c = {'filename'},
					lualine_x = {'encoding', 'fileformat', 'filetype'},
					lualine_y = {'progress'},
					lualine_z = {'location'}
				},
				inactive_sections = {
					lualine_a = {},
					lualine_b = {},
					lualine_c = {'filename'},
					lualine_x = {'location'},
					lualine_y = {},
					lualine_z = {}
				},
				tabline = {
					lualine_a = {},
					lualine_b = {},
					lualine_c = { tabline.tabline_buffers },
					lualine_x = { tabline.tabline_tabs },
					lualine_y = {},
					lualine_z = {},

				},
				extensions = {}
			}
		end,
	}

	use {
		"karb94/neoscroll.nvim",
		 config = function()
			require("neoscroll").setup()
		 end,
	}

	use {
		"lukas-reineke/indent-blankline.nvim",
		config = function()
			vim.opt.termguicolors = true
			-- vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]]
			-- vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]]
			-- vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]]
			-- vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]]
			-- vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]]
			-- vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]]

			require("indent_blankline").setup {
				show_end_of_line = true,
				space_char_blankline = " ",
				-- char_highlight_list = {
				-- 	"IndentBlanklineIndent1",
				-- 	"IndentBlanklineIndent2",
				-- 	"IndentBlanklineIndent3",
				-- 	"IndentBlanklineIndent4",
				-- 	"IndentBlanklineIndent5",
				-- 	"IndentBlanklineIndent6",
				-- },

			}
		end
	}

	use {
		"nvim-treesitter/nvim-treesitter",
		config = function()
			require'nvim-treesitter.configs'.setup {
				-- A list of parser names, or "all"
				ensure_installed = { "javascript", "lua", "rust" },

				-- Install parsers synchronously (only applied to `ensure_installed`)
				sync_install = false,

				-- List of parsers to ignore installing (for "all")
				-- ignore_install = {},

				highlight = {
					-- `false` will disable the whole extension
					enable = true,

					-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
					-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
					-- the name of the parser)
					-- list of language that will be disabled
					-- disable = { "c", "rust" },

					-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
					-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
					-- Using this option may slow down your editor, and you may see some duplicate highlights.
					-- Instead of true it can also be a list of languages
					additional_vim_regex_highlighting = false,
				},
			}
		end
	}

	use {
		"norcalli/nvim-colorizer.lua"
	}

	use {
		"google/vim-coverage",
		requires = "google/vim-maktaba",
	}

	use {
		"prettier/vim-prettier",
	}

	use {
		"editorconfig/editorconfig-vim",
	}

	use {
		requires = "neovim/nvim-lspconfig",
		"williamboman/nvim-lsp-installer",
		config = function()
			 local lsp_installer = require "nvim-lsp-installer"

			 lsp_installer.on_server_ready(function(server)
					local opts = {}

					if server.name == "denols" then
						 opts.root_dir = vim.loop.cwd
					end

					server:setup(opts)
					vim.cmd [[ do User LspAttachBuffers ]]
			 end)
		end,
	 }

	use "nathom/filetype.nvim"

	use {
		"dracula/vim",
		config = function()
			vim.api.nvim_command("colorscheme dracula")
		end
	}

	use {
		"lukas-reineke/lsp-format.nvim",
		config = function()
			require "lsp-format".setup {
				typescript = { tab_width = 4 },
				yaml = { tab_width = 2 },
			}
		end,
	}

	-- 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)