packadd lsp

call plug#begin()
Plug 'junegunn/fzf'
Plug 'morhetz/gruvbox'
Plug 'junegunn/fzf.vim'
Plug 'preservim/nerdtree'
Plug 'airblade/vim-gitgutter'
Plug 'mg979/vim-visual-multi'
Plug 'vim-airline/vim-airline'
Plug 'tribela/vim-transparent'
call plug#end()

autocmd vimenter * ++nested colorscheme gruvbox

colorscheme gruvbox

let mapleader=" "
let g:gruvbox_italic=1
let g:gruvbox_transparent_bg=1
let g:gitgutter_sign_priority = 0
let g:gruvbox_contrast_dark="hard"

set mouse=a
set hlsearch
set background=dark
set rtp+=/opt/homebrew/bin/fzf
set clipboard=unnamed
set backspace=indent,eol,start
set noexpandtab
set preserveindent
set softtabstop=0
set shiftwidth=2
set tabstop=2
set autoindent
set copyindent
set termguicolors
set listchars=tab:\|\ ,trail:$
set list
set term=xterm

syntax on

" Javascript/Typescript language server
call LspAddServer([#{
	\    name: 'typescriptlang',
	\    filetype: ['javascript', 'typescript', 'typescriptreact'],
	\    path: '/Users/vimarrow/.nvm/versions/node/v24.11.1/bin/typescript-language-server',
	\    args: ['--stdio'],
	\  }])

call LspAddServer([#{name: 'dart',
	\   filetype: ['dart'],
	\   path: '/Users/vimarrow/flutter/bin/dart',
	\   args: ['language-server', '--client-id', 'vim']
	\ }])

nnoremap K <cmd>LspHover<CR>
nnoremap yf :let @* = expand("%:p")<cr>
nnoremap <leader>e :NERDTree<CR>
nnoremap <leader>f :NERDTreeFind<CR>
nnoremap <leader>d :LspDiagCurrent<CR>
nnoremap gd :LspGotoDefinition<CR>
inoremap <expr> <Right> ((pumvisible())?("\<C-y>"):("\<Right>"))" Java LS
