diff --git a/nvim/autoload/plug.vim b/nvim/autoload/plug.vim index 8a195d3..652caa8 100644 --- a/nvim/autoload/plug.vim +++ b/nvim/autoload/plug.vim @@ -352,7 +352,7 @@ function! plug#end() endif let lod = { 'ft': {}, 'map': {}, 'cmd': {} } - if exists('g:did_load_filetypes') + if get(g:, 'did_load_filetypes', 0) filetype off endif for name in g:plugs_order @@ -2621,26 +2621,34 @@ function! s:preview_commit() let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-f]\{7,9}') if empty(sha) - return + let name = matchstr(getline('.'), '^- \zs[^:]*\ze:$') + if empty(name) + return + endif + let title = 'HEAD@{1}..' + let command = 'git diff --no-color HEAD@{1}' + else + let title = sha + let command = 'git show --no-color --pretty=medium '.sha + let name = s:find_name(line('.')) endif - let name = s:find_name(line('.')) if empty(name) || !has_key(g:plugs, name) || !isdirectory(g:plugs[name].dir) return endif if exists('g:plug_pwindow') && !s:is_preview_window_open() execute g:plug_pwindow - execute 'e' sha + execute 'e' title else - execute 'pedit' sha + execute 'pedit' title wincmd P endif - setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable + setlocal previewwindow filetype=git buftype=nofile bufhidden=wipe nobuflisted modifiable let batchfile = '' try let [sh, shellcmdflag, shrd] = s:chsh(1) - let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && git show --no-color --pretty=medium '.sha + let cmd = 'cd '.plug#shellescape(g:plugs[name].dir).' && '.command if s:is_win let [batchfile, cmd] = s:batchfile(cmd) endif @@ -2766,9 +2774,9 @@ function! s:snapshot(force, ...) abort 1 let anchor = line('$') - 3 let names = sort(keys(filter(copy(g:plugs), - \'has_key(v:val, "uri") && !has_key(v:val, "commit") && isdirectory(v:val.dir)'))) + \'has_key(v:val, "uri") && isdirectory(v:val.dir)'))) for name in reverse(names) - let sha = s:git_revision(g:plugs[name].dir) + let sha = has_key(g:plugs[name], 'commit') ? g:plugs[name].commit : s:git_revision(g:plugs[name].dir) if !empty(sha) call append(anchor, printf("silent! let g:plugs['%s'].commit = '%s'", name, sha)) redraw diff --git a/nvim/init.vim b/nvim/init.vim index 78fd6b6..a1f8014 100644 --- a/nvim/init.vim +++ b/nvim/init.vim @@ -11,12 +11,12 @@ call plug#begin() " UI Plug 'ctrlpvim/ctrlp.vim' -"Plug 'Shougo/echodoc.vim' " Formatting helpers Plug 'tpope/vim-commentary' " Language specific +Plug 'neovim/nvim-lspconfig' Plug 'fatih/vim-go' Plug 'exu/pgsql.vim' @@ -105,11 +105,9 @@ let g:cm_sources_override = { au FileType go nmap :GoAlternate " Go -let g:go_fmt_command = "gofumports" +let g:go_fmt_command = "gofumpt" let g:go_fmt_fail_silently = 1 -" let g:go_gocode_unimported_packages = 0 - let g:go_highlight_functions = 1 let g:go_highlight_methods = 1 let g:go_highlight_types = 1 @@ -120,45 +118,75 @@ let g:go_highlight_build_constraints = 1 let g:go_highlight_generate_tags = 1 let g:go_metalinter_autosave = 0 -" let g:go_metalinter_autosave_enabled = ['golint', 'ineffassign'] let g:go_template_autocreate = 0 -" let g:go_auto_type_info=1 -" let g:go_updatetime = 250 - au BufNewFile,BufRead *.gohtml setf gohtmltmpl au BufNewFile,BufRead *.tmpl setf gohtmltmpl " Rust - -let g:rustfmt_autosave = 0 - -let g:racer_experimental_completer = 1 - autocmd BufRead,BufNewFile *.rs set tabstop=4 shiftwidth=4 expandtab - -au FileType rust nmap gd (rust-def) -au FileType rust nmap K (rust-doc) +autocmd BufRead,BufNewFile *.wgsl set tabstop=4 shiftwidth=4 expandtab syntax=rust " Set keybindings +nnoremap ^ +vnoremap ^ +inoremap ^ -nnoremap -nnoremap > <\>> -nnoremap <\<> - -nnoremap ^ -vnoremap ^ -inoremap ^ - -map :nohl +map :nohl inoremap +" Disable copying on delete nnoremap d "_d vnoremap d "_d nnoremap D "_D -map q: -map Q +" Disable annoying typo bindings +map q: +map Q + +" LSP +lua << EOF +vim.diagnostic.config({ + virtual_text = false, +}) + +local on_attach = function(client, bufnr) + vim.opt.updatetime = 200 + + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + + -- Show diagnostic popup on cursor hover + local diag_float_grp = vim.api.nvim_create_augroup("DiagnosticFloat", { clear = true }) + vim.api.nvim_create_autocmd("CursorHold", { + callback = function() + vim.diagnostic.open_float(nil, { focusable = false }) + end, + group = diag_float_grp, + }) + + local format_sync_grp = vim.api.nvim_create_augroup("Format", {}) + vim.api.nvim_create_autocmd("BufWritePre", { + pattern = "*.rs", + callback = function() + vim.lsp.buf.format({ timeout_ms = 200 }) + end, + group = format_sync_grp, + }) +end +require'lspconfig'.rust_analyzer.setup{ + on_attach=on_attach, + settings = { + ["rust-analyzer"] = { + checkOnSave = { + command = "clippy", + }, + }, + }, +} +require'lspconfig'.gopls.setup{ + on_attach=on_attach, +} +EOF