aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/init.lua
diff options
context:
space:
mode:
authorLuca Matei Pintilie <lucafulger@gmail.com>2022-05-16 16:56:37 +0000
committerLuca Matei Pintilie <lucafulger@gmail.com>2022-05-16 16:56:37 +0000
commit208ca50d939785d0838d5b76d0fd542d2833c41f (patch)
treec59cb67ed76113865efe8c2790e30b52ca0916d7 /.config/nvim/init.lua
parent89e17f068f5ddb6616ddd42841913a630876fe13 (diff)
downloaddotfiles-208ca50d939785d0838d5b76d0fd542d2833c41f.tar
dotfiles-208ca50d939785d0838d5b76d0fd542d2833c41f.tar.gz
dotfiles-208ca50d939785d0838d5b76d0fd542d2833c41f.tar.bz2
dotfiles-208ca50d939785d0838d5b76d0fd542d2833c41f.tar.lz
dotfiles-208ca50d939785d0838d5b76d0fd542d2833c41f.tar.xz
dotfiles-208ca50d939785d0838d5b76d0fd542d2833c41f.tar.zst
dotfiles-208ca50d939785d0838d5b76d0fd542d2833c41f.zip
Custom neovim config
Diffstat (limited to '.config/nvim/init.lua')
-rw-r--r--.config/nvim/init.lua369
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)
+