From 965016f0de95d69fb548ec67977bf8b9491cf125 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Wed, 11 Jan 2012 16:44:39 -0800 Subject: [PATCH] Add Peter Provost's PowerShell plugin for Vim See headers of any of the committed files. --- vim/ftdetect/ps1.vim | 27 +++++++++++ vim/indent/ps1.vim | 18 ++++++++ vim/syntax/ps1.vim | 104 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 vim/ftdetect/ps1.vim create mode 100644 vim/indent/ps1.vim create mode 100644 vim/syntax/ps1.vim diff --git a/vim/ftdetect/ps1.vim b/vim/ftdetect/ps1.vim new file mode 100644 index 0000000..6101108 --- /dev/null +++ b/vim/ftdetect/ps1.vim @@ -0,0 +1,27 @@ +" Vim filetype plugin file +" Language: Windows PowerShell +" Maintainer: Peter Provost +" Version: 1.0 +" +" $LastChangedDate $ +" $Rev $ + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") | finish | endif + +" Don't load another plug-in for this buffer +let b:did_ftplugin = 1 + +setlocal tw=0 +setlocal commentstring=#%s +setlocal formatoptions=tcqro + +" Change the browse dialog on Win32 to show mainly PowerShell-related files +if has("gui_win32") + let b:browsefilter = "PowerShell Files (*.ps1)\t*.ps1\n" . + \ "All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed +let b:undo_ftplugin = "setlocal tw< cms< fo<" . + \ " | unlet! b:browsefilter" diff --git a/vim/indent/ps1.vim b/vim/indent/ps1.vim new file mode 100644 index 0000000..d936633 --- /dev/null +++ b/vim/indent/ps1.vim @@ -0,0 +1,18 @@ +" Vim indent file +" Language: Windows PowerShell +" Maintainer: Peter Provost +" Version: 1.0 +" +" $LastChangedDate $ +" $Rev $ + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" PS indenting is like indenting C +setlocal cindent cinoptions& cinoptions+=+0 + +let b:undo_indent = "setl cin<" diff --git a/vim/syntax/ps1.vim b/vim/syntax/ps1.vim new file mode 100644 index 0000000..9bafaa9 --- /dev/null +++ b/vim/syntax/ps1.vim @@ -0,0 +1,104 @@ +" Vim syntax file +" Language: Windows PowerShell +" Maintainer: Peter Provost +" Version: 2.7 +" Url: http://www.vim.org/scripts/script.php?script_id=1327 +" +" $LastChangedDate: 2007-03-05 21:18:39 -0800 (Mon, 05 Mar 2007) $ +" $Rev: 58 $ +" +" Contributions by: +" Jared Parsons +" Heath Stewart + +" Compatible VIM syntax file start +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" PowerShell doesn't care about case +syn case ignore + +" Sync-ing method +syn sync minlines=100 + +" Comments and special comment words +syn keyword ps1CommentTodo TODO FIXME XXX TBD HACK contained +syn match ps1Comment /#.*/ contains=ps1CommentTodo + +" Language keywords and elements +syn keyword ps1Conditional if else elseif switch +syn keyword ps1Repeat while default for do until break continue +syn match ps1Repeat /\/ nextgroup=ps1Cmdlet +syn keyword ps1Keyword return filter in trap throw param begin process end +syn match ps1Keyword /\/ nextgroup=ps1Cmdlet + +" Functions and Cmdlets +syn match ps1Cmdlet /\w\+-\w\+/ +syn keyword ps1Keyword function nextgroup=ps1Function skipwhite +syn match ps1Function /\w\+-*\w*/ contained + +" Type declarations +syn match ps1Type /\[[a-z0-9_:.]\+\(\[\]\)\?\]/ +syn match ps1StandaloneType /[a-z0-9_.]\+/ contained +syn keyword ps1Scope global local private script contained + +" Variables and other user defined items +syn match ps1Variable /\$\w\+/ +syn match ps1Variable /\${\w\+:\\\w\+}/ +syn match ps1ScopedVariable /\$\w\+:\w\+/ contains=ps1Scope +syn match ps1VariableName /\w\+/ contained + +" Operators all start w/ dash +syn match ps1OperatorStart /-c\?/ nextgroup=ps1Operator +syn keyword ps1Operator eq ne ge gt lt le like notlike match notmatch replace /contains/ notcontains contained +syn keyword ps1Operator ieq ine ige igt ile ilt ilike inotlike imatch inotmatch ireplace icontains inotcontains contained +syn keyword ps1Operator ceq cne cge cgt clt cle clike cnotlike cmatch cnotmatch creplace ccontains cnotcontains contained +syn keyword ps1Operator is isnot as +syn keyword ps1Operator and or band bor not +syn keyword ps1Operator f + +" Regular Strings +syn region ps1String start=/"/ skip=/`"/ end=/"/ +syn region ps1String start=/'/ end=/'/ + +" Here-Strings +syn region ps1String start=/@"$/ end=/^"@$/ +syn region ps1String start=/@'$/ end=/^'@$/ + +" Numbers +syn match ps1Number /\<[0-9]\+/ + +" Setup default color highlighting +if version >= 508 || !exists("did_ps1_syn_inits") + if version < 508 + let did_ps1_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink ps1String String + HiLink ps1Conditional Conditional + HiLink ps1Function Function + HiLink ps1Variable Identifier + HiLink ps1ScopedVariable Identifier + HiLink ps1VariableName Identifier + HiLink ps1Type Type + HiLink ps1Scope Type + HiLink ps1StandaloneType Type + HiLink ps1Number Number + HiLink ps1Comment Comment + HiLink ps1CommentTodo Todo + HiLink ps1Operator Operator + HiLink ps1Repeat Repeat + HiLink ps1RepeatAndCmdlet Repeat + HiLink ps1Keyword Keyword + HiLink ps1KeywordAndCmdlet Keyword + HiLink ps1Cmdlet Statement + delcommand HiLink +endif + +let b:current_syntax = "powershell"