" don't spam the user when Vim is started in Vi compatibility mode
let s:cpo_save = &cpo
set cpo&vim

let s:templatepath = go#util#Join(resolve(expand('<sfile>:p:h:h:h')), '.github', 'issue_template.md')

function! go#issue#New() abort
  let body = go#uri#Encode(s:issuebody())
  let url = "https://github.com/fatih/vim-go/issues/new?body=" . l:body
  call go#util#OpenBrowser(l:url)
endfunction

function! s:issuebody() abort
  let lines = readfile(s:templatepath)

  let rtrimpat = '[[:space:]]\+$'
  let body = []
  for l in lines
    let body = add(body, l)

    if l =~ '^<!-- :version'
      let out = execute('version')
      let body = extend(body, split(out, "\n")[0:2])
    elseif l =~ '^<!-- go version -->'
      let [out, err] = go#util#Exec(['go', 'version'])
      let body = add(body, substitute(l:out, rtrimpat, '', ''))
    elseif l =~ '^<!-- go env -->'
      let [out, err] = go#util#ExecInDir(['go', 'env'])
      let body = add(body, substitute(l:out, rtrimpat, '', ''))
    elseif l=~ '^<!-- gopls version -->'
      let [out, err] = go#util#Exec(['gopls', 'version'])
      let body = add(body, substitute(l:out, rtrimpat, '', ''))
    endif
  endfor

  let body = add(body, "\n#### vim-go configuration:\n<details><summary>vim-go configuration</summary><br><pre>")

  for k in keys(g:)
    if k =~ '^go_'
      let body = add(body, 'g:' . k . ' = ' . string(get(g:, k)))
    endif
  endfor

  let body = add(body, '</pre></details>')

  let body = add(body, printf("\n#### filetype detection configuration:\n<details><summary>filetype detection</summary><br><pre>%s", execute('filetype')))
  let body = add(body, '</pre></details>')

  return join(body, "\n")
endfunction

" restore Vi compatibility settings
let &cpo = s:cpo_save
unlet s:cpo_save

" vim: sw=2 ts=2 et
