Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
PProvost committed Mar 5, 2012
0 parents commit 6c0f3a5
Show file tree
Hide file tree
Showing 4 changed files with 159 additions and 0 deletions.
9 changes: 9 additions & 0 deletions doc/ps1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*ps1.txt* A Windows PowerShell syntax plugin for Vim

Author: Peter Provost <http://www.github.com/PProvost>
License: Apache 2.0

OVERVIEW

This plugin provides Vim syntax, indent and filetype detection for Windows
PowerShell.
27 changes: 27 additions & 0 deletions ftplugin/ps1.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
" Vim filetype plugin file
" Language: Windows PowerShell
" Maintainer: Peter Provost <peter@provost.org>
" 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"
18 changes: 18 additions & 0 deletions indent/ps1.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
" Vim indent file
" Language: Windows PowerShell
" Maintainer: Peter Provost <peter@provost.org>
" 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<"
105 changes: 105 additions & 0 deletions syntax/ps1.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
" Vim syntax file
" Language: Windows PowerShell
" Maintainer: Peter Provost <peter@provost.org>
" Version: 2.7
" Url: http://www.vim.org/scripts/script.php?script_id=1327
"
" $LastChangedDate: 2011-12-17 14:40:44 -0700 (Sat, 17 Dec 2011) $
" $Rev: 405 $
"
" Contributions by:
" Jared Parsons <jaredp@beanseed.org>
" Heath Stewart <heaths@microsoft.com>

" 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 /\<foreach\>/ nextgroup=ps1Cmdlet
syn keyword ps1Keyword return filter in trap throw param begin process end
syn keyword ps1Keyword try catch finally
syn match ps1Keyword /\<while\>/ 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 <args>
else
command -nargs=+ HiLink hi def link <args>
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"

0 comments on commit 6c0f3a5

Please sign in to comment.