move to lua and make a poor man's ide
This commit is contained in:
parent
8017c2ac22
commit
f551318edc
14 changed files with 418 additions and 143 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
plugin/packer_compiled.lua
|
0
_init.vim
Normal file
0
_init.vim
Normal file
79
init.lua
Normal file
79
init.lua
Normal file
|
@ -0,0 +1,79 @@
|
|||
-- LSP
|
||||
-- Map leader to space
|
||||
vim.g.mapleader = ' '
|
||||
|
||||
local fn = vim.fn
|
||||
local execute = vim.api.nvim_command
|
||||
|
||||
-- Sensible defaults
|
||||
require('settings')
|
||||
|
||||
-- Auto install packer.nvim if not exists
|
||||
local install_path = fn.stdpath('data')..'/site/pack/packer/opt/packer.nvim'
|
||||
if fn.empty(fn.glob(install_path)) > 0 then
|
||||
execute('!git clone https://github.com/wbthomason/packer.nvim '..install_path)
|
||||
end
|
||||
vim.cmd [[packadd packer.nvim]]
|
||||
vim.cmd 'autocmd BufWritePost plugins.lua PackerCompile' -- Auto compile when there are changes in plugins.lua
|
||||
|
||||
vim.opt.autoindent = true
|
||||
vim.opt.background = 'light'
|
||||
vim.opt.errorformat:prepend('%f|%l col %c|%m')
|
||||
vim.opt.expandtab = true
|
||||
vim.opt.fileformat = 'unix'
|
||||
vim.opt.number = true
|
||||
vim.opt.pastetoggle = '<F2>'
|
||||
vim.opt.shiftwidth = 4
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.tabstop = 4
|
||||
vim.opt.textwidth = 125
|
||||
vim.opt.undofile = true
|
||||
-- Enable vimrc files per project and disable unsafe commands in project vimrc
|
||||
vim.opt.exrc = true
|
||||
vim.opt.secure = true
|
||||
|
||||
vim.cmd 'noremap <tab> :bn<CR>'
|
||||
vim.cmd 'noremap <S-tab> :bp<CR>'
|
||||
|
||||
-- Toggles on different plugins/modes
|
||||
vim.cmd 'nmap <F1> :ToggleMouse<CR>'
|
||||
vim.cmd 'nmap <F3> :set nonumber!<CR>'
|
||||
vim.cmd 'nmap <F5> :NERDTreeToggle<CR>'
|
||||
--
|
||||
-- Highlight trailing whitespace (darker red) and remove all with Ctrl+k
|
||||
vim.cmd 'highlight WhitespaceEOL ctermbg=red guibg=#ab0d0d'
|
||||
vim.cmd 'match WhitespaceEOL /\\s\\+\\%#\\@<!$/'
|
||||
vim.cmd 'nnoremap <C-k> :let _s=@/<Bar>:%s/\\s\\+$//e<Bar>:let @/=_s<Bar><CR>'
|
||||
|
||||
vim.cmd 'highlight Visual cterm=bold ctermbg=Grey ctermfg=NONE'
|
||||
vim.cmd 'highlight Search ctermfg=Black'
|
||||
vim.cmd 'highlight Comment ctermfg=DarkGrey'
|
||||
vim.cmd 'highlight SignColumn ctermbg=0'
|
||||
vim.cmd 'highlight LineNr ctermbg=0 ctermfg=248'
|
||||
vim.cmd 'highlight Folded ctermbg=Green ctermfg=Black'
|
||||
vim.cmd 'highlight Pmenu ctermbg=gray guibg=gray'
|
||||
vim.cmd 'let g:airline_theme=\'papercolor\''
|
||||
|
||||
-- Find files using Telescope command-line sugar.
|
||||
vim.cmd 'nnoremap <leader>ff <cmd>Telescope find_files<cr>'
|
||||
vim.cmd 'nnoremap <leader>fg <cmd>Telescope live_grep<cr>'
|
||||
vim.cmd 'nnoremap <leader>fb <cmd>Telescope buffers<cr>'
|
||||
vim.cmd 'nnoremap <leader>fh <cmd>Telescope help_tags<cr>'
|
||||
vim.cmd 'nnoremap <leader>fl <cmd>Telescope git_files<cr>'
|
||||
|
||||
|
||||
-- Install plugins
|
||||
require('plugins')
|
||||
|
||||
-- Key mappings
|
||||
require('keymappings')
|
||||
|
||||
-- Setup Lua language server using submodule
|
||||
require('lsp_lua')
|
||||
|
||||
-- OR you can invoke them individually here
|
||||
--require('colorscheme') -- color scheme
|
||||
require('config.compe') -- completion
|
||||
--require('fugitive') -- fugitive
|
||||
|
||||
require('lang')
|
143
init.vim
143
init.vim
|
@ -1,143 +0,0 @@
|
|||
call plug#begin('~/.local/share/nvim/plugged')
|
||||
|
||||
Plug 'davidhalter/jedi-vim'
|
||||
Plug 'ncm2/float-preview.nvim'
|
||||
Plug 'dense-analysis/ale'
|
||||
Plug 'jacoborus/tender.vim'
|
||||
Plug 'vim-airline/vim-airline'
|
||||
Plug 'vim-airline/vim-airline-themes'
|
||||
Plug 'airblade/vim-gitgutter'
|
||||
Plug 'scrooloose/nerdtree'
|
||||
Plug 'gleam-lang/gleam.vim'
|
||||
Plug 'cespare/vim-toml'
|
||||
Plug 'rust-lang/rust.vim'
|
||||
Plug 'vim-scripts/DrawIt'
|
||||
|
||||
call plug#end()
|
||||
|
||||
let g:airline_theme='papercolor'
|
||||
let g:airline#extensions#ale#enabled=1
|
||||
|
||||
inoremap <expr><tab> pumvisible() ? "\<C-n>" : "\<tab>"
|
||||
inoremap <expr><S-Tab> pumvisible() ? "\<C-p>" : "\<S-TAB>"
|
||||
|
||||
let g:jedi#completions_enabled=0
|
||||
let g:jedi#use_splits_not_buffers="right"
|
||||
|
||||
" Preview window is floating
|
||||
let g:float_preview#docked=0
|
||||
let g:float_preview#max_width=100
|
||||
let g:float_preview#max_height=150
|
||||
let g:float_preview#auto_close=0
|
||||
|
||||
set tabstop=4
|
||||
set softtabstop=4
|
||||
set shiftwidth=4
|
||||
set textwidth=79
|
||||
set expandtab
|
||||
set autoindent
|
||||
set fileformat=unix
|
||||
set number
|
||||
" Hide top preview window, use float_preview instead
|
||||
set completeopt-=preview
|
||||
" Enable folding on indent
|
||||
set foldmethod=indent
|
||||
set foldlevel=79
|
||||
set omnifunc=ale#completion#OmniFunc
|
||||
|
||||
" Lint and check types
|
||||
let b:ale_linters={
|
||||
\ 'python': ['mypy', 'pyls', 'pylint'],
|
||||
\ 'ocaml': ['merlin'],
|
||||
\ 'rust': ['analyzer', 'cargo']
|
||||
\ }
|
||||
let b:ale_fixers = {
|
||||
\ 'rust': ['rustfmt'],
|
||||
\ 'python': ['autopep8'],
|
||||
\ 'ocaml': ['ocamlformat']
|
||||
\}
|
||||
|
||||
let g:ale_rust_rustfmt_options='--edition 2018'
|
||||
|
||||
let g:ale_fix_on_save=1
|
||||
let g:ale_lint_on_save=1
|
||||
let g:ale_lint_on_enter=0
|
||||
let g:ale_list_window_size=20
|
||||
" Use .venv as a global default
|
||||
let g:ale_virtualenv_dir_names=['.venv']
|
||||
let g:ale_completion_enabled=1
|
||||
let g:ale_sign_error="✗"
|
||||
let g:ale_sign_warning="⚠"
|
||||
let g:ale_echo_msg_error_str = 'E'
|
||||
let g:ale_echo_msg_warning_str = 'W'
|
||||
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
|
||||
|
||||
" Enable warnings about trailing whitespace for all files.
|
||||
let b:ale_warn_about_trailing_whitespace=1
|
||||
|
||||
nmap <leader>e :ALEDetail<CR>
|
||||
noremap <leader>d :ALEGoToDefinition<CR>
|
||||
noremap g] :ALEGoToDefinition<CR>
|
||||
noremap <leader>h :ALEHover<CR>
|
||||
|
||||
" ALE colors
|
||||
highlight ALEError ctermbg=DarkRed ctermfg=Black
|
||||
highlight ALEWarning ctermbg=Yellow ctermfg=White
|
||||
|
||||
" Use TAB to switch between buffers
|
||||
noremap <tab> :bn<CR>
|
||||
noremap <S-tab> :bp<CR>
|
||||
|
||||
" Highlight trailing whitespace (darker red) and remove all with Ctrl+k
|
||||
highlight WhitespaceEOL ctermbg=red guibg=#ab0d0d
|
||||
match WhitespaceEOL /\s\+\%#\@<!$/
|
||||
nnoremap <C-k> :let _s=@/<Bar>:%s/\s\+$//e<Bar>:let @/=_s<Bar><CR>
|
||||
|
||||
" Much better with Tomorrow Night Bright color theme set in alacritty
|
||||
" set background=dark
|
||||
highlight Search ctermfg=Black
|
||||
highlight Comment ctermfg=Grey
|
||||
highlight SignColumn ctermbg=0
|
||||
highlight LineNr ctermbg=0 ctermfg=248
|
||||
highlight Folded ctermbg=Green ctermfg=Black
|
||||
highlight Pmenu ctermbg=gray guibg=gray
|
||||
|
||||
highlight GitGutterAdd ctermfg=Green
|
||||
highlight GitGutterChange ctermfg=Red
|
||||
highlight GitGutterDelete ctermfg=DarkRed
|
||||
highlight GitGutterAddLine ctermbg=LightGreen
|
||||
highlight GitGutterChangeLine ctermbg=Yellow
|
||||
highlight GitGutterDeleteLine ctermbg=LightRed
|
||||
highlight GitGutterChangeDeleteLine ctermbg=LightRed
|
||||
|
||||
nmap ]h <Plug>(GitGutterNextHunk)
|
||||
nmap [h <Plug>(GitGutterPrevHunk)
|
||||
|
||||
let g:gitgutter_sign_added='+'
|
||||
let g:gitgutter_sign_modified='±'
|
||||
let g:gitgutter_sign_removed='-'
|
||||
let g:gitgutter_sign_removed_first_line='^'
|
||||
let g:gitgutter_sign_modified_removed='-'
|
||||
let g:gitgutter_map_keys=0
|
||||
let g:gitgutter_set_sign_backgrounds=1
|
||||
|
||||
" Toggles on different plugins/modes
|
||||
nmap <F1> :ToggleMouse<CR>
|
||||
set pastetoggle=<F2>
|
||||
nmap <F3> :set nonumber!<CR>
|
||||
nmap <F4> :GitGutterBufferToggle<CR>
|
||||
nmap <F5> :NERDTreeToggle<CR>
|
||||
nmap <F6> :GitGutterLineHighlightsToggle<CR>
|
||||
|
||||
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
|
||||
|
||||
" Maintain undo history between sessions
|
||||
if !isdirectory("/tmp/.vim-undo-dir-vladan")
|
||||
call mkdir("/tmp/.vim-undo-dir-vladan", "", 0700)
|
||||
endif
|
||||
set undodir=/tmp/.vim-undo-dir-vladan
|
||||
set undofile
|
||||
" Enable vimrc files per project
|
||||
set exrc
|
||||
" Disable unsafe commands in project vimrc
|
||||
set secure
|
7
lua/completion.lua
Normal file
7
lua/completion.lua
Normal file
|
@ -0,0 +1,7 @@
|
|||
local utils = require('utils')
|
||||
utils.opt('o', 'completeopt', 'menuone,noinsert,noselect')
|
||||
vim.cmd [[set shortmess+=c]]
|
||||
vim.g.completion_confirm_key = ""
|
||||
vim.g.completion_matching_strategy_list = {'exact', 'substring', 'fuzzy'}-- <Tab> to navigate the completion menu
|
||||
utils.map('i', '<S-Tab>', 'pumvisible() ? "\\<C-p>" : "\\<Tab>"', {expr = true})
|
||||
utils.map('i', '<Tab>', 'pumvisible() ? "\\<C-n>" : "\\<Tab>"', {expr = true})
|
78
lua/config/compe.lua
Normal file
78
lua/config/compe.lua
Normal file
|
@ -0,0 +1,78 @@
|
|||
-- Configuration for nvim-compe
|
||||
|
||||
local utils = require('utils')
|
||||
|
||||
vim.cmd [[set shortmess+=c]]
|
||||
utils.opt('o', 'completeopt', 'menuone,noselect')
|
||||
|
||||
require'compe'.setup {
|
||||
enabled = true;
|
||||
autocomplete = true;
|
||||
debug = false;
|
||||
min_length = 1;
|
||||
preselect = 'enable';
|
||||
throttle_time = 80;
|
||||
source_timeout = 200;
|
||||
incomplete_delay = 400;
|
||||
allow_prefix_unmatch = false;
|
||||
max_abbr_width = 1000;
|
||||
max_kind_width = 1000;
|
||||
max_menu_width = 1000000;
|
||||
documentation = true;
|
||||
|
||||
|
||||
source = {
|
||||
path = true;
|
||||
buffer = true;
|
||||
calc = true;
|
||||
vsnip = true;
|
||||
nvim_lsp = true;
|
||||
nvim_lua = true;
|
||||
spell = true;
|
||||
tags = true;
|
||||
snippets_nvim = true;
|
||||
treesitter = true;
|
||||
};
|
||||
}
|
||||
|
||||
local t = function(str)
|
||||
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
||||
end
|
||||
|
||||
local check_back_space = function()
|
||||
local col = vim.fn.col('.') - 1
|
||||
if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
-- Use (s-)tab to:
|
||||
--- move to prev/next item in completion menuone
|
||||
--- jump to prev/next snippet's placeholder
|
||||
-- _G.tab_complete = function()
|
||||
-- if vim.fn.pumvisible() == 1 then
|
||||
-- return t "<C-n>"
|
||||
-- elseif vim.fn.call("vsnip#available", {1}) == 1 then
|
||||
-- return t "<Plug>(vsnip-expand-or-jump)"
|
||||
-- elseif check_back_space() then
|
||||
-- return t "<Tab>"
|
||||
-- else
|
||||
-- return vim.fn['compe#complete']()
|
||||
-- end
|
||||
-- end
|
||||
-- _G.s_tab_complete = function()
|
||||
-- if vim.fn.pumvisible() == 1 then
|
||||
-- return t "<C-p>"
|
||||
-- elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then
|
||||
-- return t "<Plug>(vsnip-jump-prev)"
|
||||
-- else
|
||||
-- return t "<S-Tab>"
|
||||
-- end
|
||||
-- end
|
||||
|
||||
-- utils.map("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
||||
-- utils.map("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
||||
-- utils.map("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
|
||||
-- utils.map("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
|
2
lua/config/init.lua
Normal file
2
lua/config/init.lua
Normal file
|
@ -0,0 +1,2 @@
|
|||
-- nvim-compe
|
||||
require('config.compe')
|
2
lua/keymappings.lua
Normal file
2
lua/keymappings.lua
Normal file
|
@ -0,0 +1,2 @@
|
|||
local utils = require('utils')
|
||||
utils.map('n', '<C-h>', '<cmd>noh<CR>') -- Clear highlights
|
133
lua/lang.lua
Normal file
133
lua/lang.lua
Normal file
|
@ -0,0 +1,133 @@
|
|||
USER = vim.fn.expand('$USER')
|
||||
|
||||
-- Language specific key mappings
|
||||
--require('lang.keymappings')
|
||||
|
||||
local on_attach = function(client, bufnr)
|
||||
|
||||
require'lsp_signature'.on_attach(client)
|
||||
|
||||
local function buf_set_keymap(...)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, ...)
|
||||
end
|
||||
local function buf_set_option(...)
|
||||
vim.api.nvim_buf_set_option(bufnr, ...)
|
||||
end
|
||||
|
||||
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||
|
||||
-- Mappings.
|
||||
local opts = {noremap = true, silent = true}
|
||||
buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
||||
buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
||||
buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
||||
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
|
||||
buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
|
||||
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
|
||||
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
|
||||
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
|
||||
buf_set_keymap('n', '[l', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
|
||||
buf_set_keymap('n', ']l', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
|
||||
buf_set_keymap('n', '<leader>law', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
|
||||
buf_set_keymap('n', '<leader>lrw', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
|
||||
buf_set_keymap('n', '<leader>llw', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
|
||||
buf_set_keymap('n', '<leader>lt', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
|
||||
buf_set_keymap('n', '<leader>lrn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
|
||||
buf_set_keymap('n', '<leader>lca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
|
||||
|
||||
-- Set some keybinds conditional on server capabilities
|
||||
if client.resolved_capabilities.document_formatting then
|
||||
buf_set_keymap("n", "<leader>lf",
|
||||
"<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
|
||||
elseif client.resolved_capabilities.document_range_formatting then
|
||||
buf_set_keymap("n", "<leader>lf",
|
||||
"<cmd>lua vim.lsp.buf.range_formatting()<CR>", opts)
|
||||
end
|
||||
|
||||
-- Set autocommands conditional on server_capabilities
|
||||
if client.resolved_capabilities.document_highlight then
|
||||
vim.api.nvim_exec([[
|
||||
hi LspReferenceRead cterm=bold ctermbg=red guibg=LightYellow
|
||||
hi LspReferenceText cterm=bold ctermbg=red guibg=LightYellow
|
||||
hi LspReferenceWrite cterm=bold ctermbg=red guibg=LightYellow
|
||||
augroup lsp_document_highlight
|
||||
autocmd! * <buffer>
|
||||
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
|
||||
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
|
||||
augroup END
|
||||
]], false)
|
||||
end
|
||||
end
|
||||
|
||||
local nvim_lsp = require('lspconfig')
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
|
||||
-- Code actions
|
||||
capabilities.textDocument.codeAction = {
|
||||
dynamicRegistration = true,
|
||||
codeActionLiteralSupport = {
|
||||
codeActionKind = {
|
||||
valueSet = (function()
|
||||
local res = vim.tbl_values(vim.lsp.protocol.CodeActionKind)
|
||||
table.sort(res)
|
||||
return res
|
||||
end)()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
capabilities.textDocument.completion.completionItem.snippetSupport = true;
|
||||
|
||||
-- LSPs
|
||||
local servers = {"pylsp", "rust_analyzer", "vimls"}
|
||||
for _, lsp in ipairs(servers) do
|
||||
nvim_lsp[lsp].setup {capabilities = capabilities, on_attach = on_attach}
|
||||
end
|
||||
|
||||
-- symbols-outline.nvim
|
||||
vim.g.symbols_outline = {
|
||||
highlight_hovered_item = true,
|
||||
show_guides = true,
|
||||
auto_preview = false, -- experimental
|
||||
position = 'right',
|
||||
keymaps = {
|
||||
close = "<Esc>",
|
||||
goto_location = "<Cr>",
|
||||
focus_location = "o",
|
||||
hover_symbol = "<C-space>",
|
||||
rename_symbol = "r",
|
||||
code_actions = "a"
|
||||
},
|
||||
lsp_blacklist = {}
|
||||
}
|
||||
|
||||
-- LSP Enable diagnostics
|
||||
vim.lsp.handlers["textDocument/publishDiagnostics"] =
|
||||
vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
|
||||
virtual_text = false,
|
||||
underline = true,
|
||||
signs = true,
|
||||
update_in_insert = false
|
||||
})
|
||||
|
||||
-- Send diagnostics to quickfix list
|
||||
do
|
||||
local method = "textDocument/publishDiagnostics"
|
||||
local default_handler = vim.lsp.handlers[method]
|
||||
vim.lsp.handlers[method] = function(err, method, result, client_id, bufnr,
|
||||
config)
|
||||
default_handler(err, method, result, client_id, bufnr, config)
|
||||
local diagnostics = vim.lsp.diagnostic.get_all()
|
||||
local qflist = {}
|
||||
for bufnr, diagnostic in pairs(diagnostics) do
|
||||
for _, d in ipairs(diagnostic) do
|
||||
d.bufnr = bufnr
|
||||
d.lnum = d.range.start.line + 1
|
||||
d.col = d.range.start.character + 1
|
||||
d.text = d.message
|
||||
table.insert(qflist, d)
|
||||
end
|
||||
end
|
||||
vim.lsp.util.set_qflist(qflist)
|
||||
end
|
||||
end
|
27
lua/lsp_lua.lua
Normal file
27
lua/lsp_lua.lua
Normal file
|
@ -0,0 +1,27 @@
|
|||
-- Your custom attach function for nvim-lspconfig goes here.
|
||||
local on_attach = function(client, bufnr)
|
||||
require('completion').on_attach()
|
||||
|
||||
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
|
||||
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
|
||||
|
||||
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
|
||||
|
||||
-- Mappings
|
||||
local opts = { noremap=true, silent=true }
|
||||
buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
||||
buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
||||
buf_set_keymap('n', 'H', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
||||
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
|
||||
buf_set_keymap('n', '<C-h>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
|
||||
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
|
||||
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
|
||||
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
|
||||
|
||||
end
|
||||
|
||||
-- To get builtin LSP running, do something like:
|
||||
-- NOTE: This replaces the calls where you would have before done `require('nvim_lsp').sumneko_lua.setup()`
|
||||
--require('nlua.lsp.nvim').setup(require('lspconfig'), {
|
||||
-- on_attach = on_attach,
|
||||
--})
|
44
lua/plugins.lua
Normal file
44
lua/plugins.lua
Normal file
|
@ -0,0 +1,44 @@
|
|||
return require('packer').startup(function()
|
||||
|
||||
-- Packer can manage itself as an optional plugin
|
||||
use {'wbthomason/packer.nvim', opt = true}
|
||||
|
||||
-- Fuzzy finder
|
||||
use {
|
||||
'nvim-telescope/telescope.nvim',
|
||||
requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}}
|
||||
}
|
||||
|
||||
-- LSP and completion
|
||||
use { 'neovim/nvim-lspconfig' }
|
||||
use { 'nvim-lua/completion-nvim' }
|
||||
|
||||
-- Lua development
|
||||
use { 'tjdevries/nlua.nvim' }
|
||||
|
||||
|
||||
-- Vim dispatch
|
||||
use { 'tpope/vim-dispatch' }
|
||||
|
||||
-- Fugitive for Git
|
||||
use { 'tpope/vim-fugitive' }
|
||||
|
||||
-- Fugitive for Git
|
||||
use { 'ray-x/lsp_signature.nvim' }
|
||||
|
||||
-- Airline status bar
|
||||
use { 'vim-airline/vim-airline' }
|
||||
use { 'vim-airline/vim-airline-themes' }
|
||||
|
||||
use { 'cespare/vim-toml' }
|
||||
use { 'folke/trouble.nvim' }
|
||||
use { 'glepnir/lspsaga.nvim' }
|
||||
use { 'hrsh7th/nvim-compe' }
|
||||
use { 'jacoborus/tender.vim' }
|
||||
use { 'kyazdani42/nvim-web-devicons' }
|
||||
use { 'RRethy/vim-illuminate' }
|
||||
use { 'rust-lang/rust.vim' }
|
||||
use { 'scrooloose/nerdtree' }
|
||||
use { 'vim-scripts/DrawIt' }
|
||||
|
||||
end)
|
24
lua/settings.lua
Normal file
24
lua/settings.lua
Normal file
|
@ -0,0 +1,24 @@
|
|||
local utils = require('utils')
|
||||
|
||||
local cmd = vim.cmd
|
||||
local indent = 4
|
||||
|
||||
cmd 'syntax enable'
|
||||
cmd 'filetype plugin indent on'
|
||||
utils.opt('b', 'expandtab', true)
|
||||
utils.opt('b', 'shiftwidth', indent)
|
||||
utils.opt('b', 'smartindent', true)
|
||||
utils.opt('b', 'tabstop', indent)
|
||||
utils.opt('o', 'hidden', true)
|
||||
utils.opt('o', 'ignorecase', true)
|
||||
utils.opt('o', 'scrolloff', 4 )
|
||||
utils.opt('o', 'shiftround', true)
|
||||
utils.opt('o', 'smartcase', true)
|
||||
utils.opt('o', 'splitbelow', true)
|
||||
utils.opt('o', 'splitright', true)
|
||||
utils.opt('o', 'wildmode', 'list:longest')
|
||||
utils.opt('w', 'number', true)
|
||||
utils.opt('o', 'clipboard','unnamed,unnamedplus')
|
||||
|
||||
-- Highlight on yank
|
||||
vim.cmd 'au TextYankPost * lua vim.highlight.on_yank {on_visual = false}'
|
16
lua/utils/init.lua
Normal file
16
lua/utils/init.lua
Normal file
|
@ -0,0 +1,16 @@
|
|||
local utils = { }
|
||||
|
||||
local scopes = {o = vim.o, b = vim.bo, w = vim.wo}
|
||||
|
||||
function utils.opt(scope, key, value)
|
||||
scopes[scope][key] = value
|
||||
if scope ~= 'o' then scopes['o'][key] = value end
|
||||
end
|
||||
|
||||
function utils.map(mode, lhs, rhs, opts)
|
||||
local options = {noremap = true}
|
||||
if opts then options = vim.tbl_extend('force', options, opts) end
|
||||
vim.api.nvim_set_keymap(mode, lhs, rhs, options)
|
||||
end
|
||||
|
||||
return utils
|
5
plugin/compe.vim
Normal file
5
plugin/compe.vim
Normal file
|
@ -0,0 +1,5 @@
|
|||
inoremap <silent><expr> <C-Space> compe#complete()
|
||||
inoremap <silent><expr> <CR> compe#confirm('<CR>')
|
||||
inoremap <silent><expr> <C-e> compe#close('<C-e>')
|
||||
inoremap <silent><expr> <C-f> compe#scroll({ 'delta': +4 })
|
||||
inoremap <silent><expr> <C-d> compe#scroll({ 'delta': -4 })
|
Loading…
Reference in a new issue