readseek 0.7.6

structural source reader with stable line hashes
" SPDX-License-Identifier: MIT
" Copyright (c) 2026 Jarkko Sakkinen

vim9script

if exists('g:loaded_readseek')
  finish
endif
g:loaded_readseek = true

if !exists('g:readseek_root_markers')
  g:readseek_root_markers = ['.git']
endif
if !exists('g:readseek_list_type')
  g:readseek_list_type = 'quickfix'
endif

command! ReadSeekCheckHealth readseek#CheckHealth()
command! ReadSeekHover readseek#Hover()
command! ReadSeekDefinition readseek#Definition()
command! ReadSeekReferences readseek#References()
command! ReadSeekRename readseek#Rename()
command! ReadSeekSearch readseek#Search()
command! ReadSeekMap readseek#Map()
command! ReadSeekInit readseek#Init()

def MapPlugDefault(lhs: string, rhs: string)
  if !empty(maparg(lhs, 'n'))
    return
  endif
  execute $'nnoremap <silent> {lhs} {rhs}'
enddef

MapPlugDefault('<Plug>(ReadSeekDefinition)', '<ScriptCmd>ReadSeekDefinition<CR>')
MapPlugDefault('<Plug>(ReadSeekReferences)', '<ScriptCmd>ReadSeekReferences<CR>')
MapPlugDefault('<Plug>(ReadSeekHover)', '<ScriptCmd>ReadSeekHover<CR>')
MapPlugDefault('<Plug>(ReadSeekRename)', '<ScriptCmd>ReadSeekRename<CR>')
MapPlugDefault('<Plug>(ReadSeekSearch)', '<ScriptCmd>ReadSeekSearch<CR>')
MapPlugDefault('<Plug>(ReadSeekMap)', '<ScriptCmd>ReadSeekMap<CR>')
MapPlugDefault('<Plug>(ReadSeekInit)', '<ScriptCmd>ReadSeekInit<CR>')

highlight default ReadSeekOk ctermfg=green guifg=#00d700
highlight default ReadSeekInfo ctermfg=blue guifg=#5f87af
highlight default ReadSeekWarn ctermfg=yellow guifg=#d7d700
highlight default ReadSeekError ctermfg=red guifg=#d70000
highlight default ReadSeekBorder ctermfg=blue guifg=#5f87af
highlight default ReadSeekTitle cterm=bold ctermfg=blue gui=bold guifg=#5f87af
highlight default link ReadSeekFloat Normal

import autoload 'readseek/config.vim'
import autoload 'readseek/install.vim'

def OnAutoInstall(result: dict<any>)
enddef

if empty(get(g:, 'readseek_executable', '')) && (!config.IsExecutableAvailable() || config.Version() !=# config.PluginVersion)
  install.Install(OnAutoInstall)
endif