diff options
Diffstat (limited to '.config/nvim/init.lua')
-rw-r--r-- | .config/nvim/init.lua | 369 |
1 files changed, 369 insertions, 0 deletions
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua new file mode 100644 index 0000000..f3b5f55 --- /dev/null +++ b/.config/nvim/init.lua @@ -0,0 +1,369 @@ +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) + |