Use unix slashes in the path of a possible exe to run

This commit is contained in:
Michael Campagnaro 2024-01-20 22:18:57 -05:00
parent 65500a66ea
commit dc88f6cc36

32
.vimrc
View File

@ -1069,6 +1069,24 @@ fu! CountChar(str, char) abort
return strlen(l:filtered)
endfu
fu! WindowsToUnixPath(str) abort
let l:result = substitute(a:str, '\\', '/', 'g')
return l:result
endfu
fu! ConvertQuickfixPathsToUnixSlashes()
let l:qflist = getqflist()
for i in range(len(l:qflist))
let l:bufnr = l:qflist[i]['bufnr']
if l:bufnr != -1 && bufexists(l:bufnr)
let l:filename = bufname(l:bufnr)
let l:filename = substitute(l:filename, '\\', '/', 'g')
let l:qflist[i]['module'] = l:filename
endif
endfor
call setqflist(l:qflist)
endfu
"##################################################################################
" COMPILING CODE
"##################################################################################
@ -1290,19 +1308,24 @@ fu! RunProgram() abort
return
endif
let l:file_exe_name = expand('%:t:r').'.exe' " Just the filename without the path
" Sometimes vim mixes unix and windows slashes so we need to normalize and
" use this in future fnamemodify calls (can't use expand with a string
" that doesn't contain wildcards).
let l:full_path = WindowsToUnixPath(expand('%'))
let l:file_exe_name = fnamemodify(l:full_path, ':t:r').'.exe' " Just the filename without the path
" Easy case is the current file has an exe with the same name in the
" same directory. We run that if found.
if filereadable(expand('%:p:h') . '/' . l:file_exe_name)
exec 'AsyncRun! ' . expand('%:p:h') . '/' . l:file_exe_name
if filereadable(fnamemodify(l:full_path, ':p:h') . '/' . l:file_exe_name)
exec 'AsyncRun! ' . fnamemodify(l:full_path, ':p:h') . '/' . l:file_exe_name
return
endif
" We start by looking for something to run relative to the current file's
" path. If nothing is found then we start over looking in the current
" working directory (the directory vim was opened in).
let l:current_path = expand('%:p:h')
let l:current_path = fnamemodify(l:full_path, ':p:h')
if !RunProgramInDirectory(l:current_path, l:file_exe_name)
let l:cwd = getcwd()
@ -1314,7 +1337,6 @@ endfu
fu! RunProgramInDirectory(starting_path, file_exe_name) abort
let l:search_path = a:starting_path
let l:ext = tolower(expand('%:e'))
let l:also_search_for_cpp_run_script = 0 " Covers the case of having a run-cpp file in a jai project.