Hi,

I got reentrancy side effect with a bufenter autocommand on header 
considering these feature.


   - First def func1 is processing current buffer (cpp, h) to add text_prop 
   on header file and underline them. => works Fin
   - Inside this   func1  declare  func2 to search and open underlined 
   header double cliked.


The vim9script that do the job :
*export def* UnderLineHeaders(): void

  var *headers*: dict<string> = {}
      .. some stuff
      .. some stuff


  *def* *g:OpeningHeader*(): void
      .. some stuff 
      .. some stuff
  *enddef*

  nnoremap <buffer> <2-Leftmouse> :call *g:OpeningHeader*()<CR>
*enddef*



The error I got when double clik on header :
Error detected while processing function OpeningHeader[21]..BufEnter 
Autocommands for "*.h"..function nvhelper#UnderLineHeaders:
line   28:
*E122: *Function OpeningHeader *already exists, add ! *to replace it        
 


How can I force the g:OpeningHeader def func ?
Thank you
Nicolas


*The complete code *




























































*export def UnderLineHeaders(): void  var patterns: dict<string> = { 
'header': '\w\+\.h' }  var headers: dict<string> = {}  var list_of_line: 
list<string> = getline(1, '$')  var lineno: number = 1  var res: string = 
''  # identify headers' lines  for line in list_of_line    res = 
matchstr(line, patterns.header)    if res != ""      headers[lineno] = res  
  endif    lineno = lineno + 1  endfor  # some declarations before adding 
text prop  call prop_type_delete('header')  hi Underlined_Header   
 ctermbg=NONE ctermfg=NONE  cterm=UNDERLINE guibg=NONE    guifg=NONE     
 gui=UNDERLINE  call prop_type_add('header', {'highlight': 
'Underlined_Header'})  # add prop on headers  var col: number = -1  for key 
in keys(headers)    lineno = key->str2nr()    col = stridx(getline(lineno), 
headers[key]) + 1    call prop_add(lineno, col, {'length': 
headers[key]->len(), 'type': 'header'})  endfor  def g:OpeningHeader(): 
void    var curlnum: number = getcurpos()[1]    var key: string = 
getcurpos()[1]->string()    if has_key(headers, key)      var searchedfile: 
string = headers[getcurpos()[1]->string()]      echomsg 'File to search for 
is ' .. searchedfile      var currentpath: list<string> = 
expand("%:p:h")->split('\\')      var idxfolder: number = 1      var 
maxfolders: number = currentpath->len()      var foundedfile: string = ''  
    while  idxfolder < maxfolders        foundedfile = globpath( 
currentpath[ : -1 * idxfolder ]->join('\'), "**/" .. searchedfile )        
if foundedfile != ''          break        endif        idxfolder += 1      
endwhile      echomsg foundedfile      exe 'e ' .. foundedfile    else      
echomsg 'Sorry no File to search for.'    endif  enddef  # add double 
clickable feature => opening header  nnoremap <buffer> <2-Leftmouse> :call 
g:OpeningHeader()<CR>enddef*

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/264f2b7f-3f8d-453a-a38b-5b20e5c45023n%40googlegroups.com.

Reply via email to