" Vim compiler file " Compiler: powershell " URL: https://github.com/PProvost/vim-ps1 " Contributors: Enno Nagel " Last Change: 2024 Mar 29 " 2024 Apr 03 by the Vim Project (removed :CompilerSet definition) " 2024 Apr 05 by the Vim Project (avoid leaving behind g:makeprg) " 2024 Nov 19 by the Vim Project (properly escape makeprg setting) if exists("current_compiler") finish endif let current_compiler = "powershell" let s:cpo_save = &cpo set cpo-=C if !exists("g:ps1_makeprg_cmd") if executable('pwsh') " pwsh is the future let g:ps1_makeprg_cmd = 'pwsh' elseif executable('pwsh.exe') let g:ps1_makeprg_cmd = 'pwsh.exe' elseif executable('powershell.exe') let g:ps1_makeprg_cmd = 'powershell.exe' else let g:ps1_makeprg_cmd = '' endif endif if !executable(g:ps1_makeprg_cmd) echoerr "To use the powershell compiler, please set g:ps1_makeprg_cmd to the powershell executable!" endif " Show CategoryInfo, FullyQualifiedErrorId, etc? let g:ps1_efm_show_error_categories = get(g:, 'ps1_efm_show_error_categories', 0) " Use absolute path because powershell requires explicit relative paths " (./file.ps1 is okay, but # expands to file.ps1) let s:makeprg = g:ps1_makeprg_cmd .. ' %:p:S' " Parse file, line, char from callstacks: " Write-Ouput : The term 'Write-Ouput' is not recognized as the name of a " cmdlet, function, script file, or operable program. Check the spelling " of the name, or if a path was included, verify that the path is correct " and try again. " At C:\script.ps1:11 char:5 " + Write-Ouput $content " + ~~~~~~~~~~~ " + CategoryInfo : ObjectNotFound: (Write-Ouput:String) [], CommandNotFoundException " + FullyQualifiedErrorId : CommandNotFoundException execute 'CompilerSet makeprg=' .. escape(s:makeprg, ' \|"') " Showing error in context with underlining. CompilerSet errorformat=%+G+%m " Error summary. CompilerSet errorformat+=%E%*\\S\ :\ %m " Error location. CompilerSet errorformat+=%CAt\ %f:%l\ char:%c " Errors that span multiple lines (may be wrapped to width of terminal). CompilerSet errorformat+=%C%m " Ignore blank/whitespace-only lines. CompilerSet errorformat+=%Z\\s%# if g:ps1_efm_show_error_categories CompilerSet errorformat^=%+G\ \ \ \ +\ %.%#\\s%#:\ %m else CompilerSet errorformat^=%-G\ \ \ \ +\ %.%#\\s%#:\ %m endif " Parse file, line, char from of parse errors: " At C:\script.ps1:22 char:16 " + Stop-Process -Name "invalidprocess " + ~~~~~~~~~~~~~~~ " The string is missing the terminator: ". " + CategoryInfo : ParserError: (:) [], ParseException " + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString CompilerSet errorformat+=At\ %f:%l\ char:%c let &cpo = s:cpo_save unlet s:cpo_save " vim:set sw=2 sts=2: