123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- " 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:
|