Merge branch 'nvim-lsp' of /home/leon/terminal-dotfiles

This commit is contained in:
elkowar 2021-04-23 11:07:03 +02:00
commit 9c6904d5f6
11 changed files with 866 additions and 0 deletions

12
.netrwhist Normal file
View file

@ -0,0 +1,12 @@
let g:netrw_dirhistmax =10
let g:netrw_dirhistcnt =8
let g:netrw_dirhist_8='/home/leon/coding/projects/trup-rs/src/commands'
let g:netrw_dirhist_7='/home/leon/coding/projects/trup-rs/src/features/ban'
let g:netrw_dirhist_6='/home/leon/coding/projects/trup-rs/migrations'
let g:netrw_dirhist_5='/home/leon/coding/projects/trup-rs/.git'
let g:netrw_dirhist_4='/home/leon/a-box-of-gruv/styles'
let g:netrw_dirhist_3='/home/leon/tmp/pythonshit'
let g:netrw_dirhist_2='/home/leon/dotfiles/.vim'
let g:netrw_dirhist_1='/home/leon/.config/discord'
let g:netrw_dirhist_0='/home/leon/coding/projects/eww/src'
let g:netrw_dirhist_9='/home/leon/.config/polybar'

1
nvim/coc-settings.json Symbolic link
View file

@ -0,0 +1 @@
../../.vim/coc-settings.json

62
nvim/fnl/init.fnl Normal file
View file

@ -0,0 +1,62 @@
(module init
{require {a aniseed.core
fennel aniseed.fennel
nvim aniseed.nvim
kb keybinds
utils utils}
require-macros [macros]})
(require "plugins.telescope")
(require "plugins.lsp")
(require "plugins.galaxyline")
(global pp
(fn [x]
(print (fennel.view x))))
;(set nvim.g.conjure#client#fennel#aniseed#aniseed_module_prefix "aniseed.")
(local colors (utils.colors))
(local bufferline (require "bufferline"))
; :h bufferline-lua-highlights
(let [selected { :guibg colors.neutral_aqua :guifg colors.dark0 :gui ""}
visible { :guibg colors.dark1 :guifg colors.neutral_aqua :gui ""}]
(bufferline.setup
{ :options
{ :diagnostics "nvim_lsp"
:diagnostics_indicator (fn [cnt lvl diagnostics-dict] (.. " (" cnt ")"))
:show_buffer_close_icons false
:show_close_icon false
:show_tab_indicators false
:enforce_regular_tabs false
:tab_size 10}
:highlights
{ :fill { :guibg colors.dark0 :guifg colors.light0}
:background visible
:buffer_visible visible
:buffer_selected selected
:modified visible
:modified_visible visible
:modified_selected selected
:error visible
:error_selected selected
:error_visible visible
:warning visible
:warning_selected selected
:warning_visible visible
:separator visible
:indicator_selected {:guibg colors.neutral_aqua :guifg colors.neutral_aqua}
; stuff I've never seen before :thonk:
:pick_selected {:guibg colors.bright_red :guifg colors.bright_red}
:tab_selected {:guibg colors.bright_green :guifg colors.bright_green}
:tab {:guibg colors.bright_yellow :guifg colors.bright_yellow}}}))
(utils.highlight :BufferLineInfoSelected { :bg colors.neutral_aqua :fg colors.dark0 :gui "NONE"})

82
nvim/fnl/keybinds.fnl Normal file
View file

@ -0,0 +1,82 @@
(module keybinds
{require {a aniseed.core
nvim aniseed.nvim
utils utils
fennel aniseed.fennel}
require-macros [macros]})
(utils.noremap :n :<leader> ":<c-u>WhichKey '<Space>'<CR>")
(utils.noremap :v :<leader> ":<c-u>WhichKeyVisual '<Space>'<CR>")
;(utils.mapexpr :i :<CR> "compe#confirm(lexima#expand('<LT>CR>', 'i'))")
(utils.mapexpr :i :<C-Space> "compe#complete()")
(utils.mapexpr :i :<esc> "compe#close('<esc>')")
(fn le [s] (.. ":call luaeval(\"" s "\")"))
(set nvim.g.which_key_map {})
(nvim.command "call which_key#register('<Space>', \"g:which_key_map\")")
(set nvim.g.which_key_map
{ "h" [ ":bprevious" "previous buffer"]
"l" [ ":bnext" "next buffer"]
"f" "which_key_ignore"
"s" "which_key_ignore"
"o" [":Telescope live_grep" "Grep files"]
"p" [":Telescope file_browser" "Open file-browser"]
"[" ["<Plug>(YoinkPostPasteSwapBack)" "Swap last paste backwards"]
"]" ["<Plug>(YoinkPostPasteSwapForward)" "Swap last paste backwards"]
":" [":Commands" "Search command with fzf"]
"c" { :name "+comment_out"}
"e" { :name "+emmet"}
"z" { :name "+folds"
"c" ["foldclose" "close fold"]
"o" ["foldopen" "open fold"]}
"m" { :name "+Code-actions"
"d" [ ":Lspsaga hover_doc" "show documentation"]
"b" [ ":Lspsaga lsp_finder" "find stuff"]
"x" [ ":Lspsaga preview_definition" "Preview definition"]
"o" [ ":Telescope lsp_document_symbols" "symbols in document"]
"s" [ ":Telescope lsp_workspace_symbols" "symbols in workspace"]
"t" [ ":Lspsaga signature_help" "Show signature help"]
"n" [ ":Lspsaga rename" "rename"]
"v" [ ":Lspsaga code_action" "apply codeaction"]
"a" [ ":Lspsaga show_cursor_diagnostics" "Cursor diagnostics"]
"A" [ ":Lspsaga show_line_diagnostics" "Line diagnostics"]
"E" [ ":Telescope lsp_workspace_diagnostics" "List diagnostics"]
"e" [ (le "vim.lsp.diagnostic.goto_next()") "Jump to the next error"]
"g" [ (le "vim.lsp.buf.definition()") "go to definition"]
"i" [ (le "vim.lsp.buf.implementation()") "show implementation"]
;"r" [ (le "vim.lsp.buf.references()") "show references"]
"r" [ ":Telescope lsp_references" "show references"]
"f" [ (le "vim.lsp.buf.formatting()") "format file"]}
"f" { :name "+folds"
"o" [ ":foldopen" "open fold"]
"n" [ ":foldclose" "close fold"]
"j" [ "zj" "jump to next fold"]
"k" [ "zk" "jump to previous fold"]}
"v" { :name "+view-and-layout"
"n" [":set relativenumber!" "toggle relative numbers"]
"m" [":set nonumber! norelativenumber" "toggle numbers"]
"g" [":Goyo | set linebreak" "toggle focus mode"]
"i" [":IndentGuidesToggle" "toggle indent guides"]}
"b" { :name "+buffers"
"b" [":Buffers" "select open buffer"]
"c" [":bdelete!" "close open buffer"]
"w" [":bwipeout!" "wipeout open buffer"]}})
(set nvim.o.timeoutlen 200)
(nvim.command
"autocmd! VimEnter * :unmap <space>ig
autocmd! FileType which_key")

19
nvim/fnl/macros.fnl Normal file
View file

@ -0,0 +1,19 @@
{:augroup
(fn [name ...]
`(do
(nvim.ex.augroup ,(tostring name))
(nvim.ex.autocmd_)
,...
(nvim.ex.augroup :END)))
:autocmd
(fn [...]
`(nvim.ex.autocmd ,...))
:_:
(fn [name ...]
`((. nvim.ex ,(tostring name)) ,...))
:viml->fn
(fn [name]
`(.. "lua require('" *module-name* "')['" ,(tostring name) "']()"))}

View file

@ -0,0 +1,109 @@
(module plugins.galaxyline
{require {a aniseed.core
fennel aniseed.fennel
nvim aniseed.nvim
utils utils
galaxyline galaxyline
gl-condition galaxyline.condition
gl-fileinfo galaxyline.provider_fileinfo
gl-diagnostic galaxyline.provider_diagnostic
gl-vcs galaxyline.provider_vcs}
require-macros [macros]})
(local colors (utils.colors))
(local modes
{ :n { :text "NORMAL" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:i { :text "INSERT" :colors { :bg colors.neutral_yellow :fg colors.dark0}}
:c { :text "CMD" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:ce { :text "NORMEX" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:cv { :text "EX" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:ic { :text "INSCOMP" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:no { :text "OP-PENDING" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:r { :text "HIT-ENTER" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:r? { :text "CONFIRM" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:R { :text "REPLACE" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:Rv { :text "VIRTUAL" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:s { :text "SELECT" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:S { :text "SELECT" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:t { :text "TERM" :colors { :bg colors.neutral_aqua :fg colors.dark0}}
:v { :text "VISUAL" :colors { :bg colors.neutral_blue :fg colors.dark0}}
:V { :text "VISUAL LINE" :colors { :bg colors.neutral_blue :fg colors.dark0}}
"" { :text "VISUAL BLOCK" :colors { :bg colors.neutral_blue :fg colors.dark0}}})
(fn buf-empty? []
(= 1 (nvim.fn.empty (nvim.fn.expand "%:t"))))
(fn get-current-file-name []
(let [file (nvim.fn.expand "%:t")]
(if
(= 1 (nvim.fn.empty file)) ""
nvim.bo.readonly (.. "RO " file)
(and nvim.bo.modifiable nvim.bo.modified) (.. file " ")
file)))
(fn get-mode-data []
(or (. modes (nvim.fn.mode))
{ :text (nvim.fn.mode)
:colors {:bg colors.neutral_orange :fg colors.dark0}}))
(fn vim-mode-provider []
(let [modedata (get-mode-data)]
(utils.highlight "GalaxyViMode" modedata.colors)
(.. " " modedata.text " ")))
(utils.highlight "StatusLine" {:bg colors.dark1 :fg colors.light0 })
(set galaxyline.short_line_list ["dbui" "diff" "peekaboo" "undotree" "vista" "vista_markdown"])
(set galaxyline.section.left
[ { :ViMode { :provider vim-mode-provider}}
{ :FileName { :provider get-current-file-name
:highlight [colors.light4 colors.dark1]}}
{ :Space { :provider (fn [] "")
:highlight [colors.light0 colors.dark1]}}])
(fn make-lsp-diagnostic-provider [kind]
(fn []
(let [n (vim.lsp.diagnostic.get_count 0 kind)]
(if (= n 0) "" (.. " " n " ")))))
(fn git-branch-provider []
(let [branch (gl-vcs.get_git_branch)]
(if (= "master" branch) "" branch)))
(set galaxyline.section.right
[ { :GitBranch { :provider git-branch-provider
:highlight [colors.light4 colors.dark1]}}
{ :FileType { :provider (fn [] nvim.bo.filetype)
:highlight [colors.neutral_aqua colors.dark1]}}
{ :DiagnosticInfo { :provider (make-lsp-diagnostic-provider "Info")
:highlight [colors.dark1 colors.neutral_blue]}}
{ :DiagnosticWarn { :provider (make-lsp-diagnostic-provider "Warning")
:highlight [colors.dark1 colors.neutral_yellow]
:separator ""}}
{ :DiagnosticError { :provider (make-lsp-diagnostic-provider "Error")
:highlight [colors.dark1 colors.bright_red]
:separator ""}}
{ :LineInfo { :provider (fn [] (.. " " (gl-fileinfo.line_column) " "))
:highlight "GalaxyViMode"
:separator ""}}])
(do
(fn add-segment-defaults [data]
(a.merge { :highlight [colors.light0 colors.dark1]
:separator " "
:separator_highlight "StatusLine"}
data))
(fn map-gl-section [f section]
(icollect [_ elem (ipairs section)]
(collect [k v (pairs elem)] (values k (f v)))))
(set galaxyline.section.left (map-gl-section add-segment-defaults galaxyline.section.left))
(set galaxyline.section.right (map-gl-section add-segment-defaults galaxyline.section.right)))

107
nvim/fnl/plugins/lsp.fnl Normal file
View file

@ -0,0 +1,107 @@
(module plugins.lsp
{require {a aniseed.core
fennel aniseed.fennel
nvim aniseed.nvim
lsp lspconfig
lsp-configs lspconfig.configs
saga lspsaga
utils utils
compe compe}
require-macros [macros]})
(fn on_attach [client bufnr]
(if client.resolved_capabilities.document_highlight
(do
(utils.highlight "LspReferenceRead" {:gui "underline"})
(utils.highlight "LspReferenceText" {:gui "underline"})
(utils.highlight "LspReferenceWrite" {:gui "underline"})
(vim.api.nvim_exec
"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))))
(fn better_root_pattern [patterns except-patterns]
"match path if one of the given patterns is matched, EXCEPT if one of the except-patterns is matched"
(fn [path]
(when (not ((lsp.util.root_pattern except-patterns) path))
((lsp.util.root_pattern patterns) path))))
(local capabilities (vim.lsp.protocol.make_client_capabilities))
(set capabilities.textDocument.completion.completionItem.snippetSupport true)
(set capabilities.textDocument.completion.completionItem.resolveSupport
{ :properties ["documentation" "detail" "additionalTextEdits"]})
(fn init-lsp [lsp-name ?opts]
"initialize a language server with defaults"
(let [merged-opts {:on_attach on_attach}]
(each [k v (pairs (or opts {}))]
(tset merged-opts k v))
((. lsp lsp-name :setup) merged-opts)))
(init-lsp :rust_analyzer { :capabilities capabilities})
(init-lsp :tsserver { :root_dir (lsp.util.root_pattern "package.json")})
(init-lsp :jsonls { :commands { :Format [ #(vim.lsp.buf.range_formatting [] [0 0] [(vim.fn.line "$") 0])]}})
(init-lsp :denols { :root_dir (better_root_pattern [".git"] ["package.json"])})
(init-lsp :hls { :settings { :languageServerHaskell { :formattingProvider "stylish-haskell"}}})
(init-lsp :vimls)
(init-lsp :bashls)
(init-lsp :erlangls)
(init-lsp :yamlls)
(init-lsp :html)
(init-lsp :cssls)
;(lsp.vimls.setup { :on_attach on_attach})
(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
:nvim_lua true
:vsnip false}})
(saga.init_lsp_saga
{ :border_style 1
:code_action_keys { :quit "<esc>" :exec "<CR>"}
:rename_action_keys { :quit "<esc>" :exec "<CR>"}
:finder_action_keys { :quit "<esc>"
:open "<CR>"
:vsplit "v"
:split "b"
:scroll_up "<C-u>"
:scroll_down "<C-d>"}})
(utils.highlight "LspSagaCodeActionTitle" {:fg "#8ec07c"})
(utils.highlight "LspSagaBorderTitle" {:fg "#8ec07c"})
(utils.highlight "LspSagaCodeActionContent" {:fg "#8ec07c"})
(utils.highlight "LspSagaFinderSelection" {:fg "#8ec07c"})
(utils.highlight "LspSagaDiagnosticHeader" {:fg "#8ec07c"})
(utils.highlight "TargetWord" {:fg "#8ec07c"})
(set nvim.o.signcolumn "yes")

View file

@ -0,0 +1,18 @@
(module plugins.telescope
{require {a aniseed.core
fennel aniseed.fennel
nvim aniseed.nvim
utils utils
telescope telescope
actions telescope.actions}})
(telescope.setup
{:defaults
{:i { "<esc>" actions.close}}})
(telescope.load_extension "media_files")
(utils.noremap :n :<C-p> ":Telescope find_files<CR>")

63
nvim/fnl/utils.fnl Normal file
View file

@ -0,0 +1,63 @@
(module utils
{require {a aniseed.core
nvim aniseed.nvim}
require-macros [macros]})
(defn noremap [mode from to]
"Sets a mapping with {:noremap true :silent true}."
(nvim.set_keymap mode from to {:noremap true :silent true}))
(defn mapexpr [mode from to]
"Sets a mapping with {:noremap true :silent true :expr true}."
(nvim.set_keymap mode from to {:noremap true :silent true :expr true}))
(defn colors []
{ :dark0_hard "#1d2021"
:dark0 "#282828"
:dark0_soft "#32302f"
:dark1 "#3c3836"
:dark2 "#504945"
:dark3 "#665c54"
:dark4 "#7c6f64"
:light0_hard "#f9f5d7"
:light0 "#fbf1c7"
:light0_soft "#f2e5bc"
:light1 "#ebdbb2"
:light2 "#d5c4a1"
:light3 "#bdae93"
:light4 "#a89984"
:bright_red "#fb4934"
:bright_green "#b8bb26"
:bright_yellow "#fabd2f"
:bright_blue "#83a598"
:bright_purple "#d3869b"
:bright_aqua "#8ec07c"
:bright_orange "#fe8019"
:neutral_red "#cc241d"
:neutral_green "#98971a"
:neutral_yellow "#d79921"
:neutral_blue "#458588"
:neutral_purple "#b16286"
:neutral_aqua "#689d6a"
:neutral_orange "#d65d0e"
:faded_red "#9d0006"
:faded_green "#79740e"
:faded_yellow "#b57614"
:faded_blue "#076678"
:faded_purple "#8f3f71"
:faded_aqua "#427b58"
:faded_orange "#af3a03"
:gray "#928374"})
(defn highlight [group colset]
(let [default { :fg "NONE" :bg "NONE" :gui "NONE"}
opts (a.merge default colset)]
(nvim.command (.. "hi! "group" guifg='"opts.fg"' guibg='"opts.bg"' gui='"opts.gui"'"))))
(defn comp [f g]
(fn [...]
(f (g ...))))

271
nvim/init.vim Normal file
View file

@ -0,0 +1,271 @@
" __ _(_)_ __ ___ _ __ ___
" \ \ / / | '_ ` _ \| '__/ __|
" \ V /| | | | | | | | | (__
" \_/ |_|_| |_| |_|_| \___|
"set runtimepath^=~/coding/tmp/coc.nvim/
let g:vim_config_root = expand('<sfile>:p:h')
let $VIM_ROOT = g:vim_config_root
source $VIM_ROOT/plugins.vim
if &shell =~# 'fish$'
set shell=bash
endif
let mapleader ="\<Space>"
" Vanilla VIM configuration ------------------------------------ {{{
filetype plugin indent on
syntax on
set noshowmode " mode is already shown in airline
set foldmethod=marker
set undodir=~/.vim/undo-dir
set undofile
set shortmess+=c " Don't give completion messages like 'match 1 of 2' or 'The only match'
set hidden
set encoding=utf-8
set nonumber norelativenumber
set nocompatible
set cursorline
set incsearch
set hlsearch
set inccommand=nosplit
if (has("termguicolors"))
set termguicolors
endif
" Indentation
set shiftwidth=2
set tabstop=2
set backspace=indent,eol,start
set autoindent smartindent noet expandtab
set nowrap
set noshowmode " hide the mode as shown by vim, because the status line does it better!
set completeopt=longest,menuone,noselect " Enable autocompletion
set laststatus=2
set noshowmode
set background=dark
colorscheme gruvbox
let g:onedark_terminal_italics=1
hi LineNr ctermbg=NONE guibg=NONE
hi Comment cterm=italic
let &t_ut=''
" hide empty line ~'s
highlight EndOfBuffer ctermfg=black ctermbg=black guibg=NONE guifg='#282828'
hi Pmenu ctermbg=black guibg='#1d2021'
hi PmenuSel guibg='#8ec07c'
hi PmenuSbar guibg='#1d2021'
hi PmenuThumb guibg='#3c3836'
hi WhichKeyFloating ctermbg=black guibg='#282828'
hi NormalFloat ctermbg=black guibg='#1d2021'
hi SignColumn ctermbg=NONE guibg='#282828'
hi link Function GruvboxGreen
if !has("nvim")
set term=xterm-256color
endif
" Clipboard support in WSL
func! GetSelectedText()
normal gv"xy
let result = getreg("x")
return result
endfunc
if !has("clipboard") && executable("clip.exe")
vnoremap <C-C> :call system('clip.exe', GetSelectedText())<CR>
vnoremap <C-X> :call system('clip.exe', GetSelectedText())<CR>gvx
endif
" Mouse config
set mouse=a
if !has("nvim")
if has("mouse_sgr")
set ttymouse=sgr
else
set ttymouse=xterm2
end
end
if !has('gui_running')
set t_Co=256
endif
augroup basics
autocmd!
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o "Disables automatic commenting on newline:
autocmd FileType vim setlocal foldmethod=marker
" file type assignments
autocmd BufRead,BufNewFile *.ddl setlocal filetype=sql
" Auto-close quickfix list when element
autocmd FileType qf nnoremap <buffer> <CR> <CR>:cclose<CR>
augroup END
" autoclose empty unedited buffers
function! CleanNoNameEmptyBuffers()
let buffers = filter(range(1, bufnr('$')), 'buflisted(v:val) && empty(bufname(v:val)) && bufwinnr(v:val) < 0 && (getbufline(v:val, 1, "$") == [""])')
if !empty(buffers)
exe 'bd '.join(buffers, ' ')
else
echo 'No buffer deleted'
endif
endfunction
autocmd BufCreate * execute 'call CleanNoNameEmptyBuffers()'
" ===============
" Basic remapping
" ===============
" Split configs
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
set splitbelow splitright
" Buffer switching
"noremap <silent> <leader>l :bnext<CR>
"noremap <silent> <leader>h :bprevious<CR>
" Disable default K mapping (would open man page of hovered word)
nnoremap K <Nop>
vnoremap K <Nop>
" }}}
" Plugin configuration --------------------------------------------------- {{{
let g:VM_leader = 'm'
autocmd BufReadPost * :DetectIndent
let g:detectindent_preferred_expandtab = 1
let g:detectindent_preferred_indent = 2
autocmd BufReadPost *.hs :set shiftwidth=2
let g:vim_parinfer_filetypes = ['carp']
let g:sneak#label = 1
nmap <DEL> <Plug>Sneak_s
nmap <S-DEL> <Plug>Sneak_S
omap <DEL> <Plug>Sneak_s
omap <S-DEL> <Plug>Sneak_S
let g:rust_clip_command = 'xclip -selection clipboard'
let g:rustfmt_autosave = 1
let g:user_emmet_leader_key='<leader>e'
let g:user_emmet_settings = { 'javascript.jsx' : { 'extends' : 'jsx' }, 'typescript.jsx' : { 'extends' : 'jsx' } }
let g:qs_highlight_on_keys = ['f', 'F', 't', 'T']
let g:qs_lazy_highlight = 1
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
"map <Leader>f <Plug>(easymotion-bd-f)
"map <Leader>s <Plug>(easymotion-overwin-f2)
"let g:EasyMotion_smartcase = 1
let g:signify_sign_add = '▍'
let g:signify_sign_delete = '▍'
let g:signify_sign_delete_first_line = '▍'
let g:signify_sign_change = '▍'
"let g:signify_sign_show_text = 0
hi SignifySignDelete cterm=NONE gui=NONE guifg='#fb4934'
hi SignifySignChange cterm=NONE gui=NONE guifg='#83a598'
hi SignifySignAdd cterm=NONE gui=NONE guifg='#8ec07c'
" }}}
" }}}
" :: and _ as space ------------------------------------------------------------------- {{{
function RebindShit(newKey)
let b:RemappedSpace={
\ 'old': maparg("<Space>", "i"),
\ 'cur': a:newKey
\ }
exe 'inoremap <buffer> <Space>' a:newKey
endfun
function! UnbindSpaceStuff()
if get(b:, "RemappedSpace", {}) != {}
exe 'iunmap <buffer> <Space>'
if b:RemappedSpace['old'] != ""
exe 'inoremap <buffer> <space>' b:RemappedSpace['old']
endif
unlet b:RemappedSpace
endif
endfun
augroup UnmapSpaceStuff
autocmd!
autocmd InsertLeave * call UnbindSpaceStuff()
augroup END
nnoremap <Tab>j :call RebindShit("_")<CR>a
nnoremap <Tab>k :call RebindShit("::")<CR>a
inoremap <Tab>j <space><C-o>:call RebindShit("_")<CR>
inoremap <Tab>k <space><C-o>:call RebindShit("::")<CR>
nnoremap ö a
" }}}
" how 2 highlight group at cursor
":exe 'hi '.synIDattr(synID(line("."), col("."), 0),"name")
"source $VIM_ROOT/whichkeyConfig.vim
let g:aniseed#env = v:true
"let g:lexima_no_default_rules = v:true
"call lexima#set_default_rules()

122
nvim/plugins.vim Normal file
View file

@ -0,0 +1,122 @@
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
call plug#begin('~/.vim/plugged')
Plug 'kevinhwang91/nvim-bqf'
Plug 'akinsho/nvim-bufferline.lua'
Plug 'Olical/aniseed', { 'tag': 'v3.16.0' }
" general purpose lua wrappers for nvim stuff
Plug 'norcalli/nvim.lua'
Plug 'tweekmonster/startuptime.vim'
Plug 'tpope/vim-repeat'
Plug 'junegunn/goyo.vim', {'on': 'Goyo'}
Plug 'liuchengxu/vim-which-key'
Plug 'mhinz/vim-signify'
Plug 'tpope/vim-fugitive'
Plug 'preservim/nerdcommenter'
Plug 'glepnir/galaxyline.nvim'
Plug 'gruvbox-community/gruvbox'
Plug 'godlygeek/tabular' " :Tab /regex can align code on occurrences of the given regex. I.e. :Tab /= aligns all = signs in a block.
Plug 'tpope/vim-surround'
Plug 'christoomey/vim-tmux-navigator' " good integration with tmux pane switching
Plug 'nathanaelkane/vim-indent-guides' " Can be toggled using <leader>ig (intent-guides)
" <C-n> to select current word. <C-n> to select next occurrence.
" with multiple lines selected in Visual mode, <C-n> to insert cursor in each line. I not i to insert in Visual-mode.
"Plug 'terryma/vim-multiple-cursors'
Plug 'mg979/vim-visual-multi'
Plug 'hauleth/sad.vim' " Use siw instead of ciw. when using . afterwards, will find the next occurrence of the changed word and change it too
Plug 'wellle/targets.vim' " more text objects. IE: cin) (change in next parens). generally better handling of surrounding objects.
Plug 'unblevable/quick-scope' " highlight targets when pressing f<character>
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() } } " :MarkdownPreview for live markdown preview
Plug 'machakann/vim-highlightedyank'
Plug 'ciaranm/detectindent'
Plug 'pechorin/any-jump.vim'
Plug 'justinmk/vim-sneak'
Plug 'psliwka/vim-smoothie'
Plug 'editorconfig/editorconfig-vim'
Plug 'honza/vim-snippets'
Plug 'tommcdo/vim-exchange'
Plug 'kien/rainbow_parentheses.vim'
Plug 'bhurlow/vim-parinfer'
"Plug 'Olical/conjure', {'tag': 'v4.17.0'}
" Language Plugins ----------------------------------------------------- {{{
Plug 'bduggan/vim-raku'
Plug 'LnL7/vim-nix'
Plug 'kevinoid/vim-jsonc'
Plug 'ap/vim-css-color'
Plug 'pangloss/vim-javascript' " syntax highlighting JS
Plug 'ianks/vim-tsx'
Plug 'leafgarland/typescript-vim'
Plug 'sheerun/vim-polyglot' " Syntax highlighting for most languages
"Plug 'mattn/emmet-vim'
Plug 'purescript-contrib/purescript-vim'
Plug 'HerringtonDarkholme/yats.vim' " typescript syntax highlighting
Plug 'mxw/vim-jsx'
"" Haskell
Plug 'neovimhaskell/haskell-vim'
" Rust
Plug 'rust-lang/rust.vim'
Plug 'mattn/webapi-vim'
Plug 'bakpakin/fennel.vim'
Plug 'tjdevries/nlua.nvim'
"Plug 'mxw/vim-prolog'
Plug 'neovim/nvim-lspconfig'
"Plug 'nvim-lua/completion-nvim'
Plug 'hrsh7th/nvim-compe'
Plug 'glepnir/lspsaga.nvim'
"Plug 'cohama/lexima.vim'
Plug 'nvim-lua/popup.nvim'
Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim'
Plug 'RishabhRD/popfix'
Plug 'RishabhRD/nvim-lsputils'
Plug 'nvim-telescope/telescope-media-files.nvim'
" }}}
call plug#end()