summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/user
diff options
context:
space:
mode:
authoryuzu-eva <stevenhu@web.de>2022-12-23 22:01:25 +0100
committeryuzu-eva <stevenhu@web.de>2022-12-23 22:01:25 +0100
commitc9502c9c4b61c4cab7655c484ef7e577308343cf (patch)
tree699e8a51e94a3b2a1ba42b83d0c0cfa1b7a142cf /.config/nvim/lua/user
parentee92c6100fd18a80309bcaa86d1cbc20f8f2cd49 (diff)
readded nvim
Diffstat (limited to '.config/nvim/lua/user')
-rw-r--r--.config/nvim/lua/user/keymaps.lua31
-rw-r--r--.config/nvim/lua/user/misc.lua6
-rw-r--r--.config/nvim/lua/user/options.lua24
-rw-r--r--.config/nvim/lua/user/plugins.lua101
-rw-r--r--.config/nvim/lua/user/plugins/cmp.lua73
-rw-r--r--.config/nvim/lua/user/plugins/dracula.lua13
-rw-r--r--.config/nvim/lua/user/plugins/lspconfig.lua131
-rw-r--r--.config/nvim/lua/user/plugins/lualine.lua64
-rw-r--r--.config/nvim/lua/user/plugins/luasnip.lua9
-rw-r--r--.config/nvim/lua/user/plugins/nvim-tree.lua13
-rw-r--r--.config/nvim/lua/user/plugins/telescope.lua25
-rw-r--r--.config/nvim/lua/user/plugins/treesitter.lua31
12 files changed, 521 insertions, 0 deletions
diff --git a/.config/nvim/lua/user/keymaps.lua b/.config/nvim/lua/user/keymaps.lua
new file mode 100644
index 0000000..59c323c
--- /dev/null
+++ b/.config/nvim/lua/user/keymaps.lua
@@ -0,0 +1,31 @@
+local keymap = require 'lib.utils'.keymap
+
+vim.g.mapleader = ' '
+vim.g.maplocalleader = ' '
+
+keymap('n', '<leader>Q', ':bufdo bdelete<CR>')
+
+-- Allow gf to open non-existant files
+keymap('n', 'gf', ':edit <cfile><CR>')
+
+-- Quick navigation between splits
+keymap('n', '<c-h>', '<c-w>h')
+keymap('n', '<c-j>', '<c-w>j')
+keymap('n', '<c-k>', '<c-w>k')
+keymap('n', '<c-l>', '<c-w>l')
+
+-- Open the current file in the default program
+keymap('n', '<leader>x', ':!xdg-open %<CR><CR>')
+
+-- Resize with arrows
+keymap('n', '<C-Up>', ':resize +2<CR>')
+keymap('n', '<C-Down>', ':resize -2<CR>')
+keymap('n', '<C-Left>', ':vertical resize -2<CR>')
+keymap('n', '<C-Right>', ':vertical resize +2<CR>')
+
+-- Quickly escape to normal mode
+keymap('i', 'jj', '<Esc>')
+
+keymap('n', '<leader>cd', ':cd %:p:h<CR>:pwd<CR>')
+
+keymap('n', '<leader>E', ':EslintFixAll<CR>')
diff --git a/.config/nvim/lua/user/misc.lua b/.config/nvim/lua/user/misc.lua
new file mode 100644
index 0000000..88d47cf
--- /dev/null
+++ b/.config/nvim/lua/user/misc.lua
@@ -0,0 +1,6 @@
+vim.cmd [[
+ augroup Indentation
+ autocmd!
+ autocmd FileType html set inde=
+ augroup END
+]]
diff --git a/.config/nvim/lua/user/options.lua b/.config/nvim/lua/user/options.lua
new file mode 100644
index 0000000..0c35dfc
--- /dev/null
+++ b/.config/nvim/lua/user/options.lua
@@ -0,0 +1,24 @@
+vim.o.guicursor = 'a:block'
+vim.o.expandtab = true
+vim.o.shiftwidth = 4
+vim.o.tabstop = 4
+vim.o.signcolumn = 'yes:2'
+vim.o.relativenumber = true
+vim.o.number = true
+vim.o.termguicolors = true
+vim.o.ignorecase = true
+vim.o.smartcase = true
+vim.o.wildmode = 'longest:full,full'
+vim.o.wrap = false
+vim.o.scrolloff = 8
+vim.o.sidescrolloff = 8
+vim.o.cursorline = 1
+vim.o.splitright = 1
+vim.o.splitbelow = 1
+vim.o.clipboard = 'unnamedplus' -- Use Linux system clipboard
+vim.o.updatetime = 250 -- Decrease CursorHold delay
+vim.o.redrawtime = 10000 -- Allow more time for loading syntax on large files
+vim.o.foldmethod = "expr"
+vim.o.foldlevelstart = 10
+vim.o.foldexpr = "nvim_treesitter#foldexpr()"
+vim.o.hlsearch = 0
diff --git a/.config/nvim/lua/user/plugins.lua b/.config/nvim/lua/user/plugins.lua
new file mode 100644
index 0000000..755f0e9
--- /dev/null
+++ b/.config/nvim/lua/user/plugins.lua
@@ -0,0 +1,101 @@
+require('packer').startup(function()
+ use { 'wbthomason/packer.nvim' } -- Let packer manage itself
+ use { 'tpope/vim-commentary' }
+ use { 'tpope/vim-surround' }
+ use { 'tpope/vim-eunuch' }
+ use { 'tpope/vim-sleuth' }
+
+ use {
+ 'dracula/vim',
+ as = 'dracula',
+ config = function()
+ require('user.plugins.dracula')
+ end
+ }
+ use {
+ 'windwp/nvim-autopairs',
+ config = function()
+ require('nvim-autopairs').setup()
+ end
+ }
+
+ use {
+ 'windwp/nvim-ts-autotag',
+ config = function()
+ require('nvim-ts-autotag').setup()
+ end
+ }
+
+ use {
+ 'kyazdani42/nvim-tree.lua',
+ requires = 'kyazdani42/nvim-web-devicons',
+ config = function()
+ require('user.plugins.nvim-tree')
+ end
+ }
+ use {
+ 'nvim-treesitter/nvim-treesitter',
+ run = ':TSUpdate',
+ requires = {
+ 'nvim-treesitter/playground',
+ 'nvim-treesitter/nvim-treesitter-textobjects',
+ 'lewis6991/spellsitter.nvim',
+ 'JoosepAlviste/nvim-ts-context-commentstring',
+ },
+ config = function()
+ require('spellsitter').setup()
+ require('user.plugins.treesitter')
+ end
+ }
+
+ use {
+ 'neovim/nvim-lspconfig',
+ requires = {
+ 'b0o/schemastore.nvim',
+ 'folke/lsp-colors.nvim',
+ 'weilbith/nvim-code-action-menu',
+ },
+ config = function()
+ require('user.plugins.lspconfig')
+ end
+ }
+ use {
+ 'hrsh7th/nvim-cmp',
+ requires = {
+ 'hrsh7th/cmp-nvim-lsp',
+ 'hrsh7th/cmp-buffer',
+ 'jessarcher/cmp-path',
+ 'hrsh7th/cmp-nvim-lua',
+ 'L3MON4D3/LuaSnip',
+ 'onsails/lspkind-nvim',
+ 'hrsh7th/cmp-nvim-lsp-signature-help',
+ },
+ config = function()
+ require('user.plugins.cmp')
+ end
+ }
+ use {
+ 'nvim-telescope/telescope.nvim',
+ requires = {
+ 'nvim-lua/popup.nvim',
+ 'nvim-lua/plenary.nvim',
+ 'kyazdani42/nvim/nvim-web-devicons',
+ },
+ config = function()
+ require('user.plugins.telescope')
+ end
+ }
+ use {
+ 'nvim-lualine/lualine.nvim',
+ requires = 'kyazdani42/nvim-web-devicons',
+ config = function()
+ require('user.plugins.lualine')
+ end
+ }
+ use {
+ 'L3MON4D3/LuaSnip',
+ config = function()
+ require('user.plugins.luasnip')
+ end
+ }
+end)
diff --git a/.config/nvim/lua/user/plugins/cmp.lua b/.config/nvim/lua/user/plugins/cmp.lua
new file mode 100644
index 0000000..81cd2ee
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/cmp.lua
@@ -0,0 +1,73 @@
+local has_words_before = function()
+ local line, col = unpack(vim.api.nvim_win_get_cursor(0))
+ return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match '%s' == nil
+end
+
+local luasnip = require 'luasnip'
+local cmp = require 'cmp'
+local lspkind = require 'lspkind'
+
+-- Set completeopt to have a better completion experience
+vim.o.completeopt = 'menuone,longest,preview'
+
+cmp.setup({
+ experimental = {
+ ghost_text = true,
+ },
+ formatting = {
+ format = lspkind.cmp_format {
+ mode = 'symbol',
+ menu = {
+ nvim_lsp = '[LSP]',
+ nvim_lua = '[Lua]',
+ buffer = '[BUF]',
+ },
+ },
+ },
+ snippet = {
+ expand = function(args)
+ require('luasnip').lsp_expand(args.body)
+ end,
+ },
+ mapping = {
+ ['<C-p>'] = cmp.mapping.select_prev_item(),
+ ['<C-n>'] = cmp.mapping.select_next_item(),
+ ['<C-d>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-r>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<C-e>'] = cmp.mapping.close(),
+ ['<CR>'] = cmp.mapping.confirm {
+ behavior = cmp.ConfirmBehavior.replace,
+ select = false,
+ },
+ ['<Tab>'] = cmp.mapping(function(fallback)
+ if luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ elseif cmp.visible() then
+ cmp.select_next_item()
+ elseif has_words_before() then
+ cmp.complete()
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ ['<S-Tab>'] = cmp.mapping(function(fallback)
+ if luasnip.jumpable(-1) then
+ luasnip.jump(-1)
+ elseif cmp.visible() then
+ cmp.select_prev_item()
+ else
+ fallback()
+ end
+
+ end, { 'i', 's' }),
+ },
+ sources = {
+ { name = 'nvim_lsp' },
+ { name = 'nvim_lsp_signature_help' },
+ { name = 'nvim_lua' },
+ { name = 'luasnip' },
+ { name = 'path' },
+ { name = 'buffer' },
+ },
+})
diff --git a/.config/nvim/lua/user/plugins/dracula.lua b/.config/nvim/lua/user/plugins/dracula.lua
new file mode 100644
index 0000000..3d1e91a
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/dracula.lua
@@ -0,0 +1,13 @@
+vim.cmd([[
+ augroup DraculaOverrides
+ autocmd!
+ autocmd ColorScheme dracula highlight! link Pmenu DraculaBg
+ autocmd ColorScheme dracula highlight link NormalFloat DraculaBgLight
+ autocmd ColorScheme dracula highlight FloatBorder guifg=#343746 guibg=#343746
+ autocmd ColorScheme dracula highlight DraculaBoundary guibg=none
+ autocmd ColorScheme dracula highlight DraculaDiffDelete ctermbg=none guibg=none
+ autocmd ColorScheme dracula highlight DraculaComment cterm=italic gui=italic
+ autocmd ColorScheme dracula highlight Normal guibg=#000000
+ augroup end
+ colorscheme dracula
+]])
diff --git a/.config/nvim/lua/user/plugins/lspconfig.lua b/.config/nvim/lua/user/plugins/lspconfig.lua
new file mode 100644
index 0000000..a63975b
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/lspconfig.lua
@@ -0,0 +1,131 @@
+local buf_option = vim.api.nvim_buf_set_option
+local buf_keymap = require 'lib.utils'.buf_keymap
+
+vim.diagnostic.config {
+ virtual_text = false,
+ severity_sort = true,
+ float = {
+ source = true,
+ focus = false,
+ format = function(diagnostic)
+ if diagnostic.user_data ~= nil and diagnostic.user_data.lsp.code ~= nil then
+ return string.format("%s: %s", diagnostic.user_data.lsp.code, diagnostic.message)
+ end
+ return diagnostic.message
+ end,
+ }
+}
+
+local on_attach = function(_, bufnr)
+ buf_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
+
+ buf_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>')
+ buf_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>')
+ buf_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
+ buf_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>')
+ buf_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>')
+ buf_keymap(bufnr, 'n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
+ buf_keymap(bufnr, 'n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>')
+ buf_keymap(bufnr, 'n', 'gr', ':Telescope lsp_references<CR>')
+
+ buf_keymap(bufnr, 'n', '<leader>ca', ':CodeActionMenu<CR>')
+ buf_keymap(bufnr, 'v', '<leader>ca', ':CodeActionMenu<CR>')
+
+ buf_keymap(bufnr, 'n', '<leader>d', '<cmd>lua vim.diagnostic.open_float()<CR>')
+ buf_keymap(bufnr, 'n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>')
+ buf_keymap(bufnr, 'n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>')
+ buf_keymap(bufnr, 'n', '<leader>F', '<cmd>lua vim.lsp.buf.format { async = true }<CR>')
+
+ -- Autoformat on save doesn't work with server_capabilities, even
+ -- though it's the replacement for the deprecated resolved_capabilities.
+
+ -- if _.server_capabilities.document_formatting then
+ -- vim.api.nvim_command [[augroup Format]]
+ -- vim.api.nvim_command [[autocmd! * <buffer>]]
+ -- vim.api.nvim_command [[autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_seq_sync()]]
+ -- vim.api.nvim_command [[augroup END]]
+ -- end
+end
+
+-- provide additional completion capabilities
+local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities())
+
+require 'lspconfig'.emmet_ls.setup {
+ on_attach = on_attach,
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+ filetypes = { 'html', 'javascript', 'typescript', 'javascriptreact', 'typescriptreact' }
+}
+
+local runtime_path = vim.split(package.path, ';')
+table.insert(runtime_path, "lua/?.lua")
+table.insert(runtime_path, "lua/?/init.lua")
+require 'lspconfig'.sumneko_lua.setup {
+ on_attach = on_attach,
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+ cmd = { "/home/cafebabe/.local/src/lua-language-server/bin/lua-language-server", "-E", "/home/cafebabe/.local/src/lua-language-server/bin/main.lua" };
+ settings = {
+ Lua = {
+ runtime = {
+ -- Tell language server which version of lua is used.
+ version = 'LuaJIT',
+ -- Setup lua path
+ path = runtime_path,
+ },
+ diagnostics = {
+ -- Recognize globals
+ globals = { 'vim', 'use', 'parse' },
+ },
+ workspace = {
+ -- Make server aware of Neovim runtime files
+ library = vim.api.nvim_get_runtime_file("", true),
+ },
+ -- Do not send telemetry data
+ telemetry = {
+ enable = false,
+ },
+ },
+ },
+}
+
+require 'lspconfig'.bashls.setup {
+ on_attach = on_attach,
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+}
+
+require 'lspconfig'.pylsp.setup {
+ on_attach = on_attach,
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+}
+
+require 'lspconfig'.clangd.setup {
+ on_attach = on_attach,
+ capabilities = capabilities,
+ flags = {
+ debounce_text_changes = 150,
+ },
+}
+
+
+-- suppress error messages from lang servers
+vim.notify = function(msg, log_level, _)
+ if msg:match 'exit code' then
+ return
+ end
+ if log_level == vim.log.levels.ERROR then
+ vim.api.nvim_err_writeln(msg)
+ else
+ vim.api.nvim_echo({ { msg } }, true, {})
+ end
+end
diff --git a/.config/nvim/lua/user/plugins/lualine.lua b/.config/nvim/lua/user/plugins/lualine.lua
new file mode 100644
index 0000000..6ac5cee
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/lualine.lua
@@ -0,0 +1,64 @@
+-- local tabLineHl = vim.api.nvim_get_hl_by_name('TabLine', true)
+-- local bg = '#' .. bit.tohex(tabLineHl.background, 6)
+-- local fg = '#' .. bit.tohex(tabLineHl.foreground, 6)
+local fg = '#F8F8F2' -- DraculaFg
+local bg = '#21222C' -- DraculaBgDark
+local separator = '#424450' -- DraculaSubtle
+-- local fg = '#' .. bit.tohex(vim.api.nvim_get_hl_by_name('DraculaFg', true).foreground, 6)
+-- local bg = '#' .. bit.tohex(vim.api.nvim_get_hl_by_name('DraculaBgDark', true).background, 6)
+-- local separator = '#' .. bit.tohex(vim.api.nvim_get_hl_by_name('DraculaSubtle', true).foreground, 6)
+
+require('lualine').setup {
+ options = {
+ component_separators = '',
+ section_separators = '▕',
+ theme = {
+ normal = {
+ a = { fg = fg, bg = bg },
+ b = { fg = fg, bg = bg },
+ c = { fg = fg, bg = bg },
+ x = { fg = fg, bg = bg },
+ y = { fg = fg, bg = bg },
+ z = { fg = fg, bg = bg },
+ },
+ inactive = { c = { fg = fg, bg = bg } },
+ },
+ },
+ sections = {
+ lualine_a = {
+ 'mode',
+ { '"▏"', color = { fg = separator } },
+ },
+ lualine_b = {
+ 'branch',
+ 'diff',
+ { '"▕"', color = { fg = separator } },
+ '"🖧  " .. tostring(#vim.tbl_keys(vim.lsp.buf_get_clients()))',
+ { 'diagnostics', sources = { 'nvim_diagnostic' } },
+ { '"▏"', color = { fg = separator } },
+ },
+ lualine_c = { 'filename' },
+ lualine_x = {
+ 'filetype',
+ 'encoding',
+ 'fileformat',
+ },
+ lualine_y = {
+ { '"▕"', color = { fg = separator } },
+ '(vim.bo.expandtab and "␠ " or "⇥ ") .. " " .. vim.bo.shiftwidth',
+ { '"▏"', color = { fg = separator } },
+ },
+ lualine_z = {
+ 'location',
+ 'progress',
+ },
+ },
+ -- tabline = {
+ -- lualine_a = {
+ -- {'buffers'}
+ -- },
+ -- lualine_z = {
+ -- {'tabs'}
+ -- }
+ -- }
+}
diff --git a/.config/nvim/lua/user/plugins/luasnip.lua b/.config/nvim/lua/user/plugins/luasnip.lua
new file mode 100644
index 0000000..2e7462a
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/luasnip.lua
@@ -0,0 +1,9 @@
+local ls = require "luasnip"
+require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets" })
+
+ls.config.set_config {
+ history = true,
+ updateevents = 'TextChanged,TextChangedI',
+ enable_autosnippets = true,
+}
+
diff --git a/.config/nvim/lua/user/plugins/nvim-tree.lua b/.config/nvim/lua/user/plugins/nvim-tree.lua
new file mode 100644
index 0000000..3c425c5
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/nvim-tree.lua
@@ -0,0 +1,13 @@
+require('nvim-tree').setup {
+ renderer = {
+ highlight_opened_files = "all",
+ group_empty = true,
+ },
+ git = {
+ ignore = false,
+ },
+}
+
+vim.cmd [[highlight NvimTreeIndentMarker guifg=#30323E]]
+
+vim.api.nvim_set_keymap('n', '<leader>n', ':NvimTreeFindFileToggle<CR>', { silent = true, noremap = true })
diff --git a/.config/nvim/lua/user/plugins/telescope.lua b/.config/nvim/lua/user/plugins/telescope.lua
new file mode 100644
index 0000000..b1d1136
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/telescope.lua
@@ -0,0 +1,25 @@
+local telescope = require 'telescope'
+local actions = require 'telescope.actions'
+local keymap = require 'lib.utils'.keymap
+
+keymap('n', ';f', [[<cmd>lua require('telescope.builtin').find_files()<CR>]])
+keymap('n', ';r', [[<cmd>lua require('telescope.builtin').live_grep()<CR>]])
+keymap('n', ';\\', [[<cmd>lua require('telescope.builtin').buffers()<CR>]])
+
+require('telescope').setup {
+ defaults = {
+ sorting_strategy = 'ascending',
+ mappings = {
+ i = {
+ ["<Esc>"] = actions.close,
+ ['<C-Down>'] = actions.cycle_history_next,
+ ['<C-Up>'] = actions.cycle_history_prev,
+ },
+ },
+ file_ignore_patterns = {
+ '.git/',
+ 'node_modules/',
+ 'android/',
+ },
+ }
+}
diff --git a/.config/nvim/lua/user/plugins/treesitter.lua b/.config/nvim/lua/user/plugins/treesitter.lua
new file mode 100644
index 0000000..32c74ee
--- /dev/null
+++ b/.config/nvim/lua/user/plugins/treesitter.lua
@@ -0,0 +1,31 @@
+require('nvim-treesitter.configs').setup {
+ indent = {
+ enable = true,
+ disable = { 'html' },
+ },
+ highlight = {
+ enable = true,
+ disable = { 'NvimTree' },
+ additional_vim_regex_highlighting = true,
+ },
+ textobjects = {
+ select = {
+ enable = true,
+ lookahead = true,
+ keymaps = {
+ ['ia'] = '@parameter.inner',
+ -- ['aa'] = {
+ -- php = "" '@parameter.outer',
+
+ -- python = "(function_definition) @function",
+ -- cpp = "(function_definition) @function",
+ -- c = "(function_definition) @function",
+ -- java = "(method_declaration) @function",
+ -- },
+ },
+ },
+ },
+ context_commentstring = {
+ enable = true,
+ },
+}