360 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			360 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
se nocompatible
 | 
						|
 | 
						|
call plug#begin('~/.vim/plugged')
 | 
						|
 | 
						|
Plug 'tpope/vim-sensible'
 | 
						|
 | 
						|
Plug 'ntpeters/vim-better-whitespace'
 | 
						|
Plug 'nathanaelkane/vim-indent-guides'
 | 
						|
 | 
						|
Plug 'chrisbra/Recover.vim'
 | 
						|
 | 
						|
Plug 'Shougo/vimproc.vim' , { 'do': 'make -f make_unix.mak' }
 | 
						|
 | 
						|
Plug 'ciaranm/securemodelines'
 | 
						|
 | 
						|
Plug 'chrisbra/SudoEdit.vim'
 | 
						|
 | 
						|
Plug 'majutsushi/tagbar'
 | 
						|
Plug 'bling/vim-airline'
 | 
						|
Plug 'tomtom/tcomment_vim'
 | 
						|
" Plug 'jalcine/cmake.vim' --slow
 | 
						|
 | 
						|
Plug 'editorconfig/editorconfig-vim'
 | 
						|
" vim-sleuth?
 | 
						|
 | 
						|
Plug 'kchmck/vim-coffee-script'
 | 
						|
Plug 'pangloss/vim-javascript'
 | 
						|
Plug 'mtscout6/vim-cjsx'
 | 
						|
Plug 'mxw/vim-jsx'
 | 
						|
Plug 'othree/html5.vim'
 | 
						|
Plug 'digitaltoad/vim-jade'
 | 
						|
 | 
						|
Plug 'ledger/vim-ledger'
 | 
						|
 | 
						|
Plug 'dag/vim2hs'
 | 
						|
 | 
						|
" clojure
 | 
						|
Plug 'tpope/vim-leiningen'
 | 
						|
Plug 'tpope/vim-projectionist'
 | 
						|
Plug 'tpope/vim-dispatch'
 | 
						|
Plug 'tpope/vim-fireplace'
 | 
						|
 | 
						|
Plug 'jnwhiteh/vim-golang'
 | 
						|
Plug 'Blackrush/vim-gocode'
 | 
						|
 | 
						|
Plug 'zah/nimrod.vim'
 | 
						|
 | 
						|
Plug 'wting/rust.vim'
 | 
						|
Plug 'cespare/vim-toml'
 | 
						|
 | 
						|
Plug 'derekwyatt/vim-scala'
 | 
						|
 | 
						|
Plug 'dogrover/vim-pentadactyl'
 | 
						|
Plug 'superbrothers/vim-vimperator'
 | 
						|
 | 
						|
Plug 'idris-hackers/idris-vim'
 | 
						|
 | 
						|
Plug 'tpope/vim-fugitive' " git integration
 | 
						|
Plug 'airblade/vim-gitgutter'
 | 
						|
 | 
						|
Plug 'lervag/vimtex'
 | 
						|
Plug 'kana/vim-textobj-user'
 | 
						|
Plug 'kana/vim-textobj-indent'
 | 
						|
 | 
						|
Plug 'rhysd/vim-grammarous'
 | 
						|
 | 
						|
Plug 'tpope/vim-surround'
 | 
						|
 | 
						|
Plug 'tpope/vim-characterize'
 | 
						|
 | 
						|
Plug 'peterhoeg/vim-qml'
 | 
						|
 | 
						|
Plug 'ekalinin/Dockerfile.vim'
 | 
						|
 | 
						|
Plug 'jvoorhis/coq.vim'
 | 
						|
 | 
						|
Plug 'LnL7/vim-nix'
 | 
						|
 | 
						|
Plug 'urbit/hoon.vim'
 | 
						|
 | 
						|
Plug 'ahf/twelf-syntax'
 | 
						|
 | 
						|
Plug 'c-cube/vim-tptp'
 | 
						|
 | 
						|
Plug 'sirtaj/vim-openscad'
 | 
						|
 | 
						|
Plug 'nanotech/jellybeans.vim'
 | 
						|
Plug 'sonph/onehalf', { 'rtp': 'vim' }
 | 
						|
 | 
						|
" Plug '~/dgapt', { 'rtp': 'vim' }
 | 
						|
 | 
						|
Plug 'rickhowe/diffchar.vim'
 | 
						|
 | 
						|
Plug 'raichoo/smt-vim'
 | 
						|
 | 
						|
Plug 'tkztmk/vim-vala'
 | 
						|
 | 
						|
Plug 'wlangstroth/vim-racket'
 | 
						|
 | 
						|
Plug 'dag/vim-fish'
 | 
						|
 | 
						|
Plug 'elixir-editors/vim-elixir'
 | 
						|
 | 
						|
" Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(0) } }
 | 
						|
 | 
						|
if has('nvim-0.5')
 | 
						|
 | 
						|
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
 | 
						|
Plug 'nvim-treesitter/nvim-treesitter-textobjects'
 | 
						|
Plug 'nvim-treesitter/playground'
 | 
						|
 | 
						|
Plug 'hrsh7th/nvim-compe'
 | 
						|
if isdirectory(expand('~/lean.nvim'))
 | 
						|
  Plug '~/lean.nvim'
 | 
						|
else
 | 
						|
  Plug 'Julian/lean.nvim'
 | 
						|
endif
 | 
						|
if isdirectory(expand('~/lean.vim'))
 | 
						|
  Plug '~/lean.vim'
 | 
						|
else
 | 
						|
  Plug 'leanprover/lean.vim'
 | 
						|
endif
 | 
						|
Plug 'neovim/nvim-lspconfig'
 | 
						|
 | 
						|
Plug 'folke/lua-dev.nvim'
 | 
						|
Plug 'simrat39/rust-tools.nvim'
 | 
						|
 | 
						|
Plug 'nvim-lua/popup.nvim'
 | 
						|
Plug 'nvim-lua/plenary.nvim'
 | 
						|
Plug 'nvim-telescope/telescope.nvim'
 | 
						|
 | 
						|
else
 | 
						|
 | 
						|
Plug 'junegunn/fzf', { 'dir': '~/.fzf' }
 | 
						|
Plug 'junegunn/fzf.vim'
 | 
						|
 | 
						|
endif
 | 
						|
 | 
						|
call plug#end()
 | 
						|
 | 
						|
filetype plugin indent on
 | 
						|
 | 
						|
set tw=0 expandtab ts=8 sts=2 sw=2 sm ai si
 | 
						|
set noml mls=5				" scan 5 lines for modelines
 | 
						|
syn on						" enable syntax highlighting
 | 
						|
set hls						" highlight search
 | 
						|
set bg=dark					" dark background
 | 
						|
se foldlevel=99
 | 
						|
set vb                          " turn on the "visual bell" - which is much quieter than the "audio blink"
 | 
						|
set nobackup
 | 
						|
se bs=2
 | 
						|
se nosc " disable flashing partial commands in status bar
 | 
						|
 | 
						|
set backupcopy=yes
 | 
						|
 | 
						|
se inccommand=nosplit
 | 
						|
 | 
						|
set mouse=
 | 
						|
set title
 | 
						|
 | 
						|
se scl=yes:1 " say no to wobbly side column
 | 
						|
 | 
						|
let mapleader=" "
 | 
						|
 | 
						|
let g:jellybeans_overrides = {
 | 
						|
  \    'background': { 'guibg': '000000' },
 | 
						|
  \    'Normal': { 'guifg': 'ffffff' },
 | 
						|
  \    'SignColumn': { 'guibg': '191919' },
 | 
						|
  \}
 | 
						|
 | 
						|
if exists('g:started_by_firenvim')
 | 
						|
  set bg=light
 | 
						|
  colors onehalflight
 | 
						|
else
 | 
						|
  colors jellybeans
 | 
						|
endif
 | 
						|
 | 
						|
au syntax java  setl ts=4 sts=4 sw=4
 | 
						|
 | 
						|
au BufNewFile,BufRead *.s setl ft=tptp
 | 
						|
au BufNewFile,BufRead *.s.out setl ft=tptp
 | 
						|
au BufNewFile,BufRead *.tptp setl ft=tptp
 | 
						|
au BufNewFile,BufRead *.smt2 setl ft=smt
 | 
						|
 | 
						|
au BufReadCmd *.epub call zip#Browse(expand("<amatch>"))
 | 
						|
au BufReadCmd *.FCStd call zip#Browse(expand("<amatch>"))
 | 
						|
 | 
						|
let g:haskell_conceal              = 0
 | 
						|
 | 
						|
call tcomment#type#Define('nix', '# %s')
 | 
						|
call tcomment#type#Define('chaskell', '-- %s')
 | 
						|
call tcomment#type#Define('vala', '// %s')
 | 
						|
call tcomment#type#Define('tptp', '%% %s')
 | 
						|
call tcomment#type#Define('lean', '-- %s')
 | 
						|
 | 
						|
au syntax tex setl iskeyword+=:
 | 
						|
au syntax tex syn region texZone start="\\begin{clilisting}" end="\\end{clilisting}\|%stopzone\>"
 | 
						|
au syntax tex syn region texZone start="\\begin{tacticslisting}" end="\\end{tacticslisting}\|%stopzone\>"
 | 
						|
au syntax tex syn region texZone start="\\begin{tacticsoutput}" end="\\end{tacticsoutput}\|%stopzone\>"
 | 
						|
 | 
						|
" disable annoying "file is read-only" warnings
 | 
						|
au FileChangedRO * set noreadonly
 | 
						|
 | 
						|
if has('nvim-0.5')
 | 
						|
lua <<EOF
 | 
						|
  require('lean').setup{
 | 
						|
    treesitter = {},
 | 
						|
    lsp = {
 | 
						|
      on_attach = function(client, bufnr)
 | 
						|
	vim.api.nvim_exec([[
 | 
						|
	  augroup lsp_document_highlight
 | 
						|
	    autocmd!
 | 
						|
	    autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
 | 
						|
	    autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
 | 
						|
	  augroup END
 | 
						|
	]], false)
 | 
						|
      end,
 | 
						|
      init_options = {
 | 
						|
        semanticHighlighting = true,
 | 
						|
      },
 | 
						|
      cmd = {"lean", "--server"},
 | 
						|
    },
 | 
						|
  }
 | 
						|
 | 
						|
  require('nvim-treesitter.configs').setup{
 | 
						|
    -- playground = {
 | 
						|
    --   enable = true,
 | 
						|
    --   disable = {},
 | 
						|
    --   updatetime = 25,
 | 
						|
    -- },
 | 
						|
    -- query_linter = {
 | 
						|
    --   enable = true,
 | 
						|
    --   use_virtual_text = true,
 | 
						|
    --   lint_events = {"BufWrite", "CursorHold"},
 | 
						|
    -- },
 | 
						|
    highlight = { enable = true },
 | 
						|
    indent = { enable = true },
 | 
						|
    textobjects = {
 | 
						|
      select = {
 | 
						|
	enable = true,
 | 
						|
	keymaps = {
 | 
						|
	  ["af"] = "@function.outer",
 | 
						|
	  ["if"] = "@function.inner",
 | 
						|
	  ["ac"] = "@class.outer",
 | 
						|
	  ["ic"] = "@class.inner",
 | 
						|
	  ["aa"] = "@parameter.outer",
 | 
						|
	  ["ia"] = "@parameter.inner",
 | 
						|
	},
 | 
						|
      },
 | 
						|
    },
 | 
						|
  }
 | 
						|
 | 
						|
require'compe'.setup {
 | 
						|
  enabled = true;
 | 
						|
  autocomplete = false;
 | 
						|
  debug = false;
 | 
						|
  min_length = 1;
 | 
						|
  preselect = 'enable';
 | 
						|
  throttle_time = 80;
 | 
						|
  source_timeout = 200;
 | 
						|
  incomplete_delay = 400;
 | 
						|
  max_abbr_width = 100;
 | 
						|
  max_kind_width = 100;
 | 
						|
  max_menu_width = 100;
 | 
						|
  documentation = true;
 | 
						|
 | 
						|
  source = {
 | 
						|
    path = true;
 | 
						|
    buffer = true;
 | 
						|
    calc = true;
 | 
						|
    nvim_lsp = true;
 | 
						|
    emoji = true;
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
 | 
						|
  vim.lsp.diagnostic.on_publish_diagnostics, {
 | 
						|
    -- Enable underline, use default values
 | 
						|
    underline = true,
 | 
						|
    -- Enable virtual text, override spacing to 4
 | 
						|
    virtual_text = {
 | 
						|
      spacing = 4,
 | 
						|
    },
 | 
						|
    -- Use a function to dynamically turn signs off
 | 
						|
    -- and on, using buffer local variables
 | 
						|
    -- signs = function(bufnr, client_id)
 | 
						|
    --   return vim.bo[bufnr].show_signs == false
 | 
						|
    -- end,
 | 
						|
    update_in_insert = true,
 | 
						|
  })
 | 
						|
 | 
						|
local luadev = require("lua-dev").setup({
 | 
						|
  lspconfig = {
 | 
						|
    cmd = {"lua-language-server"}
 | 
						|
  },
 | 
						|
})
 | 
						|
 | 
						|
local lspconfig = require('lspconfig')
 | 
						|
lspconfig.sumneko_lua.setup(luadev)
 | 
						|
lspconfig.ccls.setup{}
 | 
						|
lspconfig.pyright.setup{}
 | 
						|
lspconfig.tsserver.setup{}
 | 
						|
lspconfig.texlab.setup{}
 | 
						|
 | 
						|
require('rust-tools').setup{}
 | 
						|
 | 
						|
EOF
 | 
						|
 | 
						|
hi LspReferenceRead cterm=bold ctermbg=red guibg=LightYellow
 | 
						|
hi LspReferenceText cterm=bold ctermbg=red guibg=LightYellow
 | 
						|
hi LspReferenceWrite cterm=bold ctermbg=red guibg=LightYellow
 | 
						|
hi LspDiagnosticsDefaultError cterm=bold ctermfg=Red
 | 
						|
hi LspDiagnosticsDefaultWarning cterm=bold ctermfg=Yellow
 | 
						|
hi LspDiagnosticsDefaultInformation ctermfg=Blue
 | 
						|
hi link SpecialChar Character
 | 
						|
 | 
						|
au syntax leaninfo setl scl=no
 | 
						|
 | 
						|
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 })
 | 
						|
 | 
						|
nnoremap gD <Cmd>lua vim.lsp.buf.declaration()<CR>
 | 
						|
nnoremap gd <Cmd>lua vim.lsp.buf.definition()<CR>
 | 
						|
nnoremap K <Cmd>lua vim.lsp.buf.hover()<CR>
 | 
						|
nnoremap <leader>K <cmd>lua vim.lsp.diagnostic.show_line_diagnostics{show_header = false}<CR>
 | 
						|
nnoremap gi <cmd>lua vim.lsp.buf.implementation()<CR>
 | 
						|
nnoremap <C-k> <cmd>lua vim.lsp.buf.signature_help()<CR>
 | 
						|
nnoremap <space>wa <cmd>lua vim.lsp.buf.add_workspace_folder()<CR>
 | 
						|
nnoremap <space>wr <cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>
 | 
						|
nnoremap <space>wl <cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>
 | 
						|
nnoremap <space>D <cmd>lua vim.lsp.buf.type_definition()<CR>
 | 
						|
nnoremap <space>rn <cmd>lua vim.lsp.buf.rename()<CR>
 | 
						|
nnoremap <space>ca <cmd>lua vim.lsp.buf.code_action()<CR>
 | 
						|
nnoremap gr <cmd>lua vim.lsp.buf.references()<CR>
 | 
						|
nnoremap <space>e <cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>
 | 
						|
nnoremap [d <cmd>lua vim.lsp.diagnostic.goto_prev()<CR>
 | 
						|
nnoremap ]d <cmd>lua vim.lsp.diagnostic.goto_next()<CR>
 | 
						|
nnoremap <space>q <cmd>lua vim.lsp.diagnostic.set_loclist()<CR>
 | 
						|
nnoremap <space>f <cmd>lua vim.lsp.buf.formatting()<CR>
 | 
						|
 | 
						|
nnoremap <c-p> <cmd>Telescope find_files<cr>
 | 
						|
nnoremap <leader>ff <cmd>Telescope find_files<cr>
 | 
						|
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
 | 
						|
nnoremap <leader>fb <cmd>Telescope buffers<cr>
 | 
						|
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
 | 
						|
 | 
						|
else
 | 
						|
 | 
						|
nnoremap <c-p> :FZF<cr>
 | 
						|
 | 
						|
endif
 | 
						|
 | 
						|
let g:tex_flavor = 'latex'
 | 
						|
let g:vimtex_compiler_progname = 'nvr'
 | 
						|
let g:vimtex_indent_enabled = 0
 | 
						|
au syntax tex setl indentexpr= " disable vim crap: https://github.com/lervag/vimtex/issues/2007#issuecomment-808768783
 |