aboutsummaryrefslogtreecommitdiff
path: root/runtime/syntax/sed.vim
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2014-07-11 04:05:51 +0000
committerJustin M. Keyes <justinkz@gmail.com>2014-07-29 02:12:31 +0000
commita98a6996c291b3e300d27b791eded9eed333d677 (patch)
tree51d92f6cac128f938cd0aaa9a8dd0ce7a83d63a9 /runtime/syntax/sed.vim
parent66bc13163398786c88e20b7cdd61c66978b4d3fb (diff)
downloadrneovim-a98a6996c291b3e300d27b791eded9eed333d677.tar.gz
rneovim-a98a6996c291b3e300d27b791eded9eed333d677.tar.bz2
rneovim-a98a6996c291b3e300d27b791eded9eed333d677.zip
re-integrate runtime/ vim-patch:0 #938
Vim runtime files based on 7.4.384 / hg changeset 7090d7f160f7 Excluding: Amiga icons (*.info, icons/) doc/hangulin.txt tutor/ spell/ lang/ (only used for menu translations) macros/maze/, macros/hanoi/, macros/life/, macros/urm/ These were used to test vi compatibility. termcap "Demonstration of a termcap file (for the Amiga and Archimedes)" Helped-by: Rich Wareham <rjw57@cam.ac.uk> Helped-by: John <john.schmidt.h@gmail.com> Helped-by: Yann <yann@yann-salaun.com> Helped-by: Christophe Badoit <c.badoit@lesiteimmo.com> Helped-by: drasill <github@tof2k.com> Helped-by: Tae Sandoval Murgan <taecilla@gmail.com> Helped-by: Lowe Thiderman <lowe.thiderman@gmail.com>
Diffstat (limited to 'runtime/syntax/sed.vim')
-rw-r--r--runtime/syntax/sed.vim122
1 files changed, 122 insertions, 0 deletions
diff --git a/runtime/syntax/sed.vim b/runtime/syntax/sed.vim
new file mode 100644
index 0000000000..42ad6d8e62
--- /dev/null
+++ b/runtime/syntax/sed.vim
@@ -0,0 +1,122 @@
+" Vim syntax file
+" Language: sed
+" Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
+" URL: http://folk.uio.no/hakonrk/vim/syntax/sed.vim
+" Last Change: 2010 May 29
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syn clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn match sedError "\S"
+
+syn match sedWhitespace "\s\+" contained
+syn match sedSemicolon ";"
+syn match sedAddress "[[:digit:]$]"
+syn match sedAddress "\d\+\~\d\+"
+syn region sedAddress matchgroup=Special start="[{,;]\s*/\(\\/\)\="lc=1 skip="[^\\]\(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
+syn region sedAddress matchgroup=Special start="^\s*/\(\\/\)\=" skip="[^\\]\(\\\\\)*\\/" end="/I\=" contains=sedTab,sedRegexpMeta
+syn match sedComment "^\s*#.*$"
+syn match sedFunction "[dDgGhHlnNpPqQx=]\s*\($\|;\)" contains=sedSemicolon,sedWhitespace
+syn match sedLabel ":[^;]*"
+syn match sedLineCont "^\(\\\\\)*\\$" contained
+syn match sedLineCont "[^\\]\(\\\\\)*\\$"ms=e contained
+syn match sedSpecial "[{},!]"
+if exists("highlight_sedtabs")
+ syn match sedTab "\t" contained
+endif
+
+" Append/Change/Insert
+syn region sedACI matchgroup=sedFunction start="[aci]\\$" matchgroup=NONE end="^.*$" contains=sedLineCont,sedTab
+
+syn region sedBranch matchgroup=sedFunction start="[bt]" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace
+syn region sedRW matchgroup=sedFunction start="[rw]" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace
+
+" Substitution/transform with various delimiters
+syn region sedFlagwrite matchgroup=sedFlag start="w" matchgroup=sedSemicolon end=";\|$" contains=sedWhitespace contained
+syn match sedFlag "[[:digit:]gpI]*w\=" contains=sedFlagwrite contained
+syn match sedRegexpMeta "[.*^$]" contained
+syn match sedRegexpMeta "\\." contains=sedTab contained
+syn match sedRegexpMeta "\[.\{-}\]" contains=sedTab contained
+syn match sedRegexpMeta "\\{\d\*,\d*\\}" contained
+syn match sedRegexpMeta "\\(.\{-}\\)" contains=sedTab contained
+syn match sedReplaceMeta "&\|\\\($\|.\)" contains=sedTab contained
+
+" Metacharacters: $ * . \ ^ [ ~
+" @ is used as delimiter and treated on its own below
+let __at = char2nr("@")
+let __sed_i = char2nr(" ") " ASCII: 32, EBCDIC: 64
+if has("ebcdic")
+ let __sed_last = 255
+else
+ let __sed_last = 126
+endif
+let __sed_metacharacters = '$*.\^[~'
+while __sed_i <= __sed_last
+ let __sed_delimiter = escape(nr2char(__sed_i), __sed_metacharacters)
+ if __sed_i != __at
+ exe 'syn region sedAddress matchgroup=Special start=@\\'.__sed_delimiter.'\(\\'.__sed_delimiter.'\)\=@ skip=@[^\\]\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'I\=@ contains=sedTab'
+ exe 'syn region sedRegexp'.__sed_i 'matchgroup=Special start=@'.__sed_delimiter.'\(\\\\\|\\'.__sed_delimiter.'\)*@ skip=@[^\\'.__sed_delimiter.']\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'@me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement'.__sed_i
+ exe 'syn region sedReplacement'.__sed_i 'matchgroup=Special start=@'.__sed_delimiter.'\(\\\\\|\\'.__sed_delimiter.'\)*@ skip=@[^\\'.__sed_delimiter.']\(\\\\\)*\\'.__sed_delimiter.'@ end=@'.__sed_delimiter.'@ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag'
+ endif
+ let __sed_i = __sed_i + 1
+endwhile
+syn region sedAddress matchgroup=Special start=+\\@\(\\@\)\=+ skip=+[^\\]\(\\\\\)*\\@+ end=+@I\=+ contains=sedTab,sedRegexpMeta
+syn region sedRegexp64 matchgroup=Special start=+@\(\\\\\|\\@\)*+ skip=+[^\\@]\(\\\\\)*\\@+ end=+@+me=e-1 contains=sedTab,sedRegexpMeta keepend contained nextgroup=sedReplacement64
+syn region sedReplacement64 matchgroup=Special start=+@\(\\\\\|\\@\)*+ skip=+[^\\@]\(\\\\\)*\\@+ end=+@+ contains=sedTab,sedReplaceMeta keepend contained nextgroup=sedFlag
+
+" Since the syntax for the substituion command is very similar to the
+" syntax for the transform command, I use the same pattern matching
+" for both commands. There is one problem -- the transform command
+" (y) does not allow any flags. To save memory, I ignore this problem.
+syn match sedST "[sy]" nextgroup=sedRegexp\d\+
+
+if version >= 508 || !exists("did_sed_syntax_inits")
+ if version < 508
+ let did_sed_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink sedAddress Macro
+ HiLink sedACI NONE
+ HiLink sedBranch Label
+ HiLink sedComment Comment
+ HiLink sedDelete Function
+ HiLink sedError Error
+ HiLink sedFlag Type
+ HiLink sedFlagwrite Constant
+ HiLink sedFunction Function
+ HiLink sedLabel Label
+ HiLink sedLineCont Special
+ HiLink sedPutHoldspc Function
+ HiLink sedReplaceMeta Special
+ HiLink sedRegexpMeta Special
+ HiLink sedRW Constant
+ HiLink sedSemicolon Special
+ HiLink sedST Function
+ HiLink sedSpecial Special
+ HiLink sedWhitespace NONE
+ if exists("highlight_sedtabs")
+ HiLink sedTab Todo
+ endif
+ let __sed_i = char2nr(" ") " ASCII: 32, EBCDIC: 64
+ while __sed_i <= __sed_last
+ exe "HiLink sedRegexp".__sed_i "Macro"
+ exe "HiLink sedReplacement".__sed_i "NONE"
+ let __sed_i = __sed_i + 1
+ endwhile
+
+ delcommand HiLink
+endif
+
+unlet __sed_i __sed_last __sed_delimiter __sed_metacharacters
+
+let b:current_syntax = "sed"
+
+" vim: sts=4 sw=4 ts=8