" .ideavimrc is a configuration file for IdeaVim plugin. It uses
"   the same commands as the original .vimrc configuration.
" You can find a list of commands here: https://jb.gg/h38q75
" Find more examples here: https://jb.gg/share-ideavimrc

" Source your .vimrc
source ~/.vimrc

"" -- Suggested options --
" Show a few lines of context around the cursor. Note that this makes the
" text scroll if you mouse-click near the start or end of the window.
set scrolloff=5

" Do incremental searching.
set incsearch

" Don't use Ex mode, use Q for formatting.
map Q gq

" --- Enable IdeaVim plugins https://jb.gg/ideavim-plugins

" Highlight copied text
Plug 'machakann/vim-highlightedyank'
" Commentary plugin
Plug 'tpope/vim-commentary'
" Surround text objects and changes
Plug 'tpope/vim-surround'
" Better text objects around quotes, brackets, arguments, and separators
Plug 'wellle/targets.vim'
" Fast cursor jumps. Requires the IdeaVim-EasyMotion and AceJump IDE plugins.
Plug 'easymotion/vim-easymotion'
" Multi-cursor editing
Plug 'terryma/vim-multiple-cursors'

" --- Better IdeaVim / IDE integration ---
set ideajoin
set ideaput
set ideamarks

" --- Optional built-in IdeaVim extensions ---
set mini-ai
set youcompleteme

" --- IDE navigation ---
nmap gd <Action>(GotoDeclaration)
nmap gi <Action>(GotoImplementation)
nmap gr <Action>(FindUsages)
nmap gb <Action>(Back)
nmap gB <Action>(Forward)

" --- Search / files / project ---
nmap <leader>ff <Action>(GotoFile)
nmap <leader>fs <Action>(FindInPath)
nmap <leader>fa <Action>(GotoAction)
nmap <leader>fr <Action>(RecentFiles)
nmap <leader>e  <Action>(SelectInProjectView)

" --- Code actions ---
nmap <leader>ca <Action>(ShowIntentionActions)
nmap <leader>cf <Action>(ReformatCode)
nmap <leader>co <Action>(OptimizeImports)
nmap <leader>R  <Action>(RenameElement)

" --- Run / debug ---
nmap <leader>rr <Action>(Run)
nmap <leader>dd <Action>(Debug)
nmap <leader>db <Action>(ToggleLineBreakpoint)

" --- Tool windows ---
nmap <leader>tt <Action>(ActivateTerminalToolWindow)
nmap <leader>hh <Action>(HideAllWindows)


"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t
"" Map \r to the Reformat Code action
"map \r <Action>(ReformatCode)

"" Map <leader>d to start debug
"map <leader>d <Action>(Debug)

"" Map \b to toggle the breakpoint on the current line
"map \b <Action>(ToggleLineBreakpoint)
