aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua')
-rw-r--r--.config/nvim/lua/autocomplete.lua22
-rw-r--r--.config/nvim/lua/lsp.lua47
-rw-r--r--.config/nvim/lua/mappings.lua60
-rw-r--r--.config/nvim/lua/plugins.lua78
-rw-r--r--.config/nvim/lua/powerline.lua47
-rw-r--r--.config/nvim/lua/settings.lua88
6 files changed, 342 insertions, 0 deletions
diff --git a/.config/nvim/lua/autocomplete.lua b/.config/nvim/lua/autocomplete.lua
new file mode 100644
index 0000000..5213258
--- /dev/null
+++ b/.config/nvim/lua/autocomplete.lua
@@ -0,0 +1,22 @@
+local cmp = require("cmp")
+
+cmp.setup({
+ mapping = cmp.mapping.preset.insert({ -- Preset: ^n, ^p, ^y, ^e, you know the drill..
+ ["<C-d>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ }),
+ snippet = {
+ expand = function(args)
+ require("luasnip").lsp_expand(args.body)
+ end,
+ },
+ sources = cmp.config.sources({
+ { name = "nvim_lsp" },
+ { name = "nvim_lsp_signature_help" },
+ { name = "nvim_lua" },
+ { name = "luasnip" },
+ { name = "path" },
+ }, {
+ { name = "buffer", keyword_length = 3 },
+ }),
+})
diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua
new file mode 100644
index 0000000..65eaedc
--- /dev/null
+++ b/.config/nvim/lua/lsp.lua
@@ -0,0 +1,47 @@
+-- See `:help vim.diagnostic.*` for documentation on any of the below functions
+local opts = { noremap=true, silent=true }
+vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
+vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
+
+-- Use an on_attach function to only map the following keys
+-- after the language server attaches to the current buffer
+local on_attach = function(client, bufnr)
+ -- Enable completion triggered by <c-x><c-o>
+ vim.api.nvim_buf_set_option(bufnr, "formatexpr", "v:lua.vim.lsp.formatexpr()")
+ vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
+ vim.api.nvim_buf_set_option(bufnr, "tagfunc", "v:lua.vim.lsp.tagfunc")
+
+ -- Mappings.
+ -- See `:help vim.lsp.*` for documentation on any of the below functions
+ local bufopts = { noremap=true, silent=true, buffer=bufnr }
+ vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
+ vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
+ vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
+ vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
+ vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
+ vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
+ vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
+ vim.keymap.set('n', '<space>wl', function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end, bufopts)
+ vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
+ vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
+ vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
+ vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
+ vim.keymap.set('n', '<space>f', function() vim.lsp.buf.format { async = true } end, bufopts)
+end
+-- Setup buffer-local keymaps / options for LSP buffers
+local capabilities = require("cmp_nvim_lsp").default_capabilities()
+-- Setup rust_analyzer via rust-tools.nvim
+require("rust-tools").setup({
+ server = {
+ capabilities = capabilities,
+ on_attach = on_attach,
+ }
+})
+
+
+-- local autocmd = vim.api.nvim_create_autocmd
+-- autocmd({ "BufLeave" }, { pattern = { "*" }, command = "if &buftype == 'quickfix'|q|endif" })
diff --git a/.config/nvim/lua/mappings.lua b/.config/nvim/lua/mappings.lua
new file mode 100644
index 0000000..5a0050f
--- /dev/null
+++ b/.config/nvim/lua/mappings.lua
@@ -0,0 +1,60 @@
+-- https://github.com/arnvald/viml-to-lua/blob/main/lua/mappings.lua
+vim.cmd('noremap <C-b> :noh<cr>:call clearmatches()<cr>') -- clear matches Ctrl+b
+
+function map(mode, shortcut, command)
+ vim.api.nvim_set_keymap(mode, shortcut, command, { noremap = true, silent = true })
+end
+
+function nmap(shortcut, command)
+ map('n', shortcut, command)
+end
+
+function imap(shortcut, command)
+ map('i', shortcut, command)
+end
+
+function vmap(shortcut, command)
+ map('v', shortcut, command)
+end
+
+function cmap(shortcut, command)
+ map('c', shortcut, command)
+end
+
+function tmap(shortcut, command)
+ map('t', shortcut, command)
+end
+
+
+-- PLUGINS
+-- Keymaps for Luasnip
+local ls = require("luasnip")
+vim.keymap.set({ "i", "s" }, "<C-k>", function()
+ if ls.expand_or_jumpable() then
+ ls.expand_or_jump()
+ end
+end, { silent = true })
+
+vim.keymap.set({ "i", "s" }, "<C-j>", function()
+ if ls.jumpable(-1) then
+ ls.jump(-1)
+ end
+end, { silent = true })
+
+vim.keymap.set("i", "<C-l>", function()
+ if ls.choice_active() then
+ ls.change_choice(1)
+ end
+end)
+
+-- Find files using Telescope command-line sugar.
+nmap("<C-p>", "<cmd>Telescope find_files<cr>")
+nmap("<leader>f", "<cmd>Telescope live_grep<cr>")
+nmap("<leader>bb", "<cmd>Telescope buffers<cr>")
+nmap("<leader>hh", "<cmd>Telescope help_tags<cr>")
+
+-- LSP
+nmap('K', '<cmd>Lspsaga hover_doc<cr>')
+imap('<C-k>', '<cmd>Lspsaga hover_doc<cr>')
+nmap('gh', '<cmd>Lspsaga lsp_finder<cr>')
+nmap('<C-e>', '<cmd>Lspsaga show_line_diagnostics<CR>')
diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua
new file mode 100644
index 0000000..165139e
--- /dev/null
+++ b/.config/nvim/lua/plugins.lua
@@ -0,0 +1,78 @@
+-- sourced from https://github.com/arnvald/viml-to-lua/blob/main/lua/plugins.lua
+
+return require('packer').startup(function()
+ use 'wbthomason/packer.nvim'
+
+ use 'morhetz/gruvbox'
+ use 'psliwka/vim-smoothie'
+ use 'edkolev/tmuxline.vim'
+ use 'romainl/vim-cool'
+
+ -- common
+ use 'tpope/vim-fugitive' -- Git commands
+ use {
+ 'nvim-lualine/lualine.nvim',
+ requires = { 'kyazdani42/nvim-web-devicons', opt = true }
+ }
+ use 'rhysd/vim-grammarous' -- grammar check
+ use 'andymass/vim-matchup' -- matching parens and more
+ use 'rhysd/git-messenger.vim'
+
+
+ -- better quickfix buffer
+ use {'kevinhwang91/nvim-bqf',
+ ft = 'qf',
+ config = function()
+ require("bqf").setup {
+ -- your configuration comes here
+ -- or leave it empty to use the default settings
+ -- refer to the configuration section below
+ }
+ end
+ }
+
+
+ -- general dev
+ use 'neovim/nvim-lspconfig'
+ use 'kabouzeid/nvim-lspinstall'
+ use 'glepnir/lspsaga.nvim'
+ use 'hrsh7th/nvim-cmp'
+ use 'hrsh7th/cmp-buffer'
+ use 'hrsh7th/cmp-nvim-lua'
+ use 'hrsh7th/cmp-nvim-lsp'
+ use 'hrsh7th/cmp-nvim-lsp-signature-help'
+ use "hrsh7th/cmp-path"
+ use 'L3MON4D3/LuaSnip'
+ use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' }
+ use 'scrooloose/nerdcommenter' -- commenting shortcuts
+ use {
+ "folke/which-key.nvim",
+ config = function()
+ vim.o.timeout = true
+ vim.o.timeoutlen = 300
+ require("which-key").setup {
+ -- your configuration comes here
+ -- or leave it empty to use the default settings
+ -- refer to the configuration section below
+ }
+ end
+}
+
+ -- search
+ use { 'nvim-telescope/telescope.nvim', requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}} }
+ use 'tpope/vim-eunuch' -- wrappers UNIX commands
+ use 'tpope/vim-surround' -- surround characters shortcuts
+ use 'tpope/vim-vinegar' -- file browser
+ use 'kyazdani42/nvim-web-devicons' -- icons when searching
+
+ -- go
+ use 'fatih/vim-go'
+
+ -- rust
+ use 'rust-lang/rust.vim'
+ use 'simrat39/rust-tools.nvim'
+
+ -- debugging
+ use 'nvim-lua/plenary.nvim'
+ use 'mfussenegger/nvim-dap'
+end)
diff --git a/.config/nvim/lua/powerline.lua b/.config/nvim/lua/powerline.lua
new file mode 100644
index 0000000..5bee6be
--- /dev/null
+++ b/.config/nvim/lua/powerline.lua
@@ -0,0 +1,47 @@
+require('lualine').setup {
+ options = {
+ icons_enabled = true,
+ theme = 'gruvbox_dark',
+ component_separators = { left = '', right = ''},
+ section_separators = { left = '', right = ''},
+ disabled_filetypes = {
+ statusline = {},
+ winbar = {},
+ },
+ ignore_focus = {},
+ always_divide_middle = true,
+ globalstatus = false,
+ refresh = {
+ statusline = 1000,
+ tabline = 1000,
+ winbar = 1000,
+ }
+ },
+ 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 = {'buffers'},
+ lualine_b = {'branch'},
+ lualine_c = {},
+ lualine_x = {},
+ lualine_y = {},
+ lualine_z = {'tabs'}
+ },
+ winbar = {},
+ inactive_winbar = {},
+ extensions = {}
+}
diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/settings.lua
new file mode 100644
index 0000000..cae0968
--- /dev/null
+++ b/.config/nvim/lua/settings.lua
@@ -0,0 +1,88 @@
+HOME = os.getenv("HOME")
+
+vim.g.mapleader = ' '
+
+-- basic settings
+vim.o.encoding = "utf-8"
+vim.o.backspace = "indent,eol,start" -- backspace works on every char in insert mode
+vim.o.completeopt = 'menuone,noselect'
+vim.o.history = 1000
+vim.o.dictionary = '/usr/share/dict/words'
+vim.o.startofline = true
+
+-- Mapping waiting time
+vim.o.timeout = false
+vim.o.ttimeout = true
+vim.o.ttimeoutlen = 100
+
+-- Display
+vim.o.showmatch = true -- show matching brackets
+vim.o.scrolloff = 3 -- always show 3 rows from edge of the screen
+vim.o.synmaxcol = 300 -- stop syntax highlight after x lines for performance
+vim.o.laststatus = 2 -- always show status line
+
+vim.o.list = false -- do not display white characters
+vim.o.foldenable = false
+vim.o.foldlevel = 4 -- limit folding to 4 levels
+vim.o.foldmethod = 'syntax' -- use language syntax to generate folds
+vim.o.wrap = false --do not wrap lines even if very long
+vim.o.eol = false -- show if there's no eol char
+vim.o.showbreak= '↪' -- character to show when line is broken
+
+-- Sidebar
+vim.o.number = true -- line number on the left
+vim.o.numberwidth = 3 -- always reserve 3 spaces for line number
+vim.o.signcolumn = 'yes' -- keep 1 column for coc.vim check
+vim.o.modelines = 0
+vim.o.showcmd = true -- display command in bottom bar
+
+-- Search
+vim.o.incsearch = true -- starts searching as soon as typing, without enter needed
+vim.o.ignorecase = true -- ignore letter case when searching
+vim.o.smartcase = true -- case insentive unless capitals used in search
+
+vim.o.matchtime = 2 -- delay before showing matching paren
+vim.o.mps = vim.o.mps .. ",<:>"
+
+-- White characters
+vim.o.autoindent = true
+vim.o.smartindent = true
+vim.o.tabstop = 2 -- 1 tab = 2 spaces
+vim.o.shiftwidth = 2 -- indentation rule
+vim.o.formatoptions = 'qnj1' -- q - comment formatting; n - numbered lists; j - remove comment when joining lines; 1 - don't break after one-letter word
+vim.o.expandtab = true -- expand tab to spaces
+
+-- Backup files
+vim.o.backup = true -- use backup files
+vim.o.writebackup = false
+vim.o.swapfile = false -- do not use swap file
+vim.o.undodir = HOME .. '/.vim/tmp/undo//' -- undo files
+vim.o.backupdir = HOME .. '/.vim/tmp/backup//' -- backups
+vim.o.directory = '/.vim/tmp/swap//' -- swap files
+
+vim.cmd([[
+
+
+ au FileType python set ts=4 sw=4
+ au BufRead,BufNewFile *.md set ft=mkd tw=80 syntax=markdown
+ au BufRead,BufNewFile *.ppmd set ft=mkd tw=80 syntax=markdown
+ au BufRead,BufNewFile *.markdown set ft=mkd tw=80 syntax=markdown
+ au BufRead,BufNewFile *.slimbars set syntax=slim
+]])
+
+vim.cmd('colorscheme gruvbox')
+vim.cmd([[
+" ### Transparency ###
+hi Normal guibg=none ctermbg=none
+hi LineNr guibg=none ctermbg=none
+hi Folded guibg=none ctermbg=none
+hi NonText guibg=none ctermbg=none
+hi SpecialKey guibg=none ctermbg=none
+hi VertSplit guibg=none ctermbg=none
+hi SignColumn guibg=none ctermbg=none
+hi EndOfBuffer guibg=none ctermbg=none
+]])
+
+-- Commands mode
+vim.o.wildmenu = true -- on TAB, complete options for system command
+vim.o.wildignore = 'deps,.svn,CVS,.git,.hg,*.o,*.a,*.class,*.mo,*.la,*.so,*.obj,*.swp,*.jpg,*.png,*.xpm,*.gif,.DS_Store,*.aux,*.out,*.toc'