Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

VHDL.tmbundle r12073:http://svn.textmate.org/trunk/Review/Bundles/VHD…

  • Loading branch information...
commit 290f3b57d00980f6995a8f7e2a4af00a85952d59 0 parents
@yangsu authored
Showing with 3,886 additions and 0 deletions.
  1. +30 −0 Commands/Tidy.tmCommand
  2. +144 −0 Commands/instantiate component.tmCommand
  3. +143 −0 Commands/instantiate entity.tmCommand
  4. +24 −0 Preferences/Comments.tmPreferences
  5. +19 −0 Preferences/Indent Pattern.tmPreferences
  6. +53 −0 Preferences/Smart Typing Pairs.tmPreferences
  7. +19 −0 Preferences/Symbol List - Architecture.tmPreferences
  8. +19 −0 Preferences/Symbol List - Component Instantiation.tmPreferences
  9. +19 −0 Preferences/Symbol List - Component.tmPreferences
  10. +19 −0 Preferences/Symbol List - Entity Instantiation.tmPreferences
  11. +19 −0 Preferences/Symbol List - Entity.tmPreferences
  12. +19 −0 Preferences/Symbol List - Function.tmPreferences
  13. +19 −0 Preferences/Symbol List - Generate.tmPreferences
  14. +17 −0 Preferences/Symbol List - Ignored Ends.tmPreferences
  15. +19 −0 Preferences/Symbol List - Package Body.tmPreferences
  16. +19 −0 Preferences/Symbol List - Package.tmPreferences
  17. +19 −0 Preferences/Symbol List - Procedure.tmPreferences
  18. +24 −0 Preferences/Symbol List - Process.tmPreferences
  19. +19 −0 Preferences/Symbol List - Record.tmPreferences
  20. +19 −0 Preferences/Symbol List - Subtype.tmPreferences
  21. +19 −0 Preferences/Symbol List - Type.tmPreferences
  22. +23 −0 Snippets/aprocess.tmSnippet
  23. +22 −0 Snippets/architecture.tmSnippet
  24. +23 −0 Snippets/case.tmSnippet
  25. +17 −0 Snippets/else.tmSnippet
  26. +17 −0 Snippets/elsif.tmSnippet
  27. +20 −0 Snippets/entity.tmSnippet
  28. +30 −0 Snippets/entity_architecture.tmSnippet
  29. +18 −0 Snippets/for.tmSnippet
  30. +18 −0 Snippets/forg.tmSnippet
  31. +18 −0 Snippets/if.tmSnippet
  32. +18 −0 Snippets/package.tmSnippet
  33. +19 −0 Snippets/process.tmSnippet
  34. +16 −0 Snippets/signed downto.tmSnippet
  35. +16 −0 Snippets/signed range.tmSnippet
  36. +21 −0 Snippets/sprocess.tmSnippet
  37. +16 −0 Snippets/std_logic_vector downto.tmSnippet
  38. +16 −0 Snippets/std_logic_vector range.tmSnippet
  39. +16 −0 Snippets/unsigned downto.tmSnippet
  40. +16 −0 Snippets/unsigned range.tmSnippet
  41. +30 −0 Snippets/vhdl template.tmSnippet
  42. +18 −0 Snippets/while.tmSnippet
  43. +2,562 −0 Syntaxes/VHDL.tmLanguage
  44. +18 −0 Templates/Entity and Architecture.tmTemplate/info.plist
  45. +15 −0 Templates/Entity and Architecture.tmTemplate/template_entity.vhd
  46. +18 −0 Templates/Package and Package Body.tmTemplate/info.plist
  47. +15 −0 Templates/Package and Package Body.tmTemplate/template_package.vhd
  48. +14 −0 comments.mdown
  49. +135 −0 info.plist
30 Commands/Tidy.tmCommand
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>beforeRunningCommand</key>
+ <string>saveActiveFile</string>
+ <key>command</key>
+ <string>#!/bin/bash
+# beautifies VHDL code using Emacs
+
+EMACS=emacs
+
+$EMACS --batch "$TM_FILEPATH" --eval="(setq-default vhdl-basic-offset $TM_TAB_SIZE)" --eval="(vhdl-beautify-buffer)" -f save-buffer &amp;&gt; /dev/null
+
+cat "$TM_FILEPATH"
+</string>
+ <key>input</key>
+ <string>none</string>
+ <key>keyEquivalent</key>
+ <string>^H</string>
+ <key>name</key>
+ <string>Tidy</string>
+ <key>output</key>
+ <string>replaceDocument</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>uuid</key>
+ <string>44B95BB0-70BB-45A6-A3D6-3FC8D7F33F21</string>
+</dict>
+</plist>
144 Commands/instantiate component.tmCommand
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>beforeRunningCommand</key>
+ <string>nop</string>
+ <key>command</key>
+ <string>#!/usr/bin/perl
+# use: ./transform.pl in_file &gt; out_file
+# use warnings;
+# use strict;
+
+use File::Find ;
+
+our $keyword = &lt;&gt; ;
+$keyword = lc($keyword) ;
+
+# Check to see if the keyword is set
+if( $keyword eq "" ) {
+ print "\${0: keyword not set\}" ;
+ exit ;
+}
+
+my $dir = $ENV{'TM_PROJECT_DIRECTORY'} ;
+
+# Check to see if the directory is set
+if( $dir eq "" ) {
+ print $keyword . "\$\{0: project directory not set\}" ;
+ exit ;
+}
+
+# Find the entity
+finddepth( { wanted =&gt; \&amp;wanted, follow =&gt; 1 }, $dir ) ;
+
+# Didn't find anything
+print $keyword . "\$\{0: component not found\}" ;
+
+sub wanted {
+ if (opendir(DIR, $File::Find::fullname)) {
+ return ;
+ }
+ else {
+ my @parts = split(/\./) ;
+ $ext = lc(@parts[$#parts]) ;
+ if( $ext eq "vhd" or $ext eq "vhdl" ) {
+ $_ = parsefile($File::Find::fullname, $keyword) ;
+ if( $_ =~ m/.*$keyword.*/ ) {
+ print $_ ;
+ exit ;
+ }
+ }
+ }
+}
+
+sub parsefile {
+ open(FILE, shift) or return ;
+ my @in = &lt;FILE&gt;;
+ my $in = join "", @in;
+ my $key = shift ;
+ # split the file apart
+ $in =~ m{(.*)\s+(^\s*component.*)(?=^\s*end component)[^;]*;\s*(.*)}ms;
+ # my $before = $1;
+ my $component = $2;
+ # my $after = $3;
+
+ return findcomponent($component, $key) ;
+}
+
+# Format an entity
+sub findcomponent {
+ my $in = shift ;
+ my $key = shift ;
+ my $max_w = 0;
+ my $i = 2 ;
+ my $found = 0 ;
+ # discard the "end entity" line
+ $in =~ s{^end\s*component\s*\w+\s*;$}{}m;
+ my @in = split /\n/, $in;
+ foreach (@in) {
+ # change the "component X is" definition line to "U_X : X"
+ $_ =~ s{^\s*component\s+([^ ]+)\s+is\s*$}{U_$1\$\{1:_0\} : $1};
+
+ # flag if we have found a component with the keyword
+ if ( lc($1) =~ /\b($key)\b/ and $found == 0 ) {
+ $found = 1 ;
+ }
+
+ # re-set comments interspersed formatted properly
+ $_ =~ s{\s*\-\-}{ \-\-} ;
+
+ # change comments at the end of lines to nothing
+ $_ =~ s{;\s*\-\-.*$}{} ;
+
+ # remove any attributes
+ $_ =~ s{^\s*attribute.*$}{} ;
+
+ # change "X : integer :=" or "X : in std_logic;" line to "X =&gt;"
+ $_ =~ s{^\s+(\w+)\s*\:\s*[^;]+;?\s*$}{ $1\t=&gt; \$\{$i+1:$1\},};
+ # determine the largest length of the generic/signal for fill
+ if (length $1 &gt; $max_w) {
+ $max_w = length $1;
+ }
+ # change "X (" to "X map ("
+ $_ =~ s{^\s+(\))?(\s*;\s*)?(\w+)\s*\(}{$1 $3 map \(};
+ if( $found == 0 ) {
+ return ;
+ }
+ }
+
+ # Reformat generic/signal lines to be filled properly
+ my $fmt = ' %-' . $max_w . "s\t=&gt;\t\$\{%d:%s\},";
+ my $fmtend = ' %_' . $max_w . "s\t=&gt;\t\$\{%d:%s\}" ;
+ foreach (@in) {
+ if (m{=\&gt; }) {
+ $_ =~ s{^\s+(\w+)\s*=\&gt;}{};
+ $_ = sprintf $fmt, $1, $i, $1 ;
+ $i = $i + 1 ;
+ }
+ }
+ $in = join("\n", @in) . "\n";
+ # remove ending commas
+ $in =~ s{,\s*\)}{\n \)}g ;
+ # nestle parenthesis where possible
+ $in =~ s{^\s+\)\s+;\s*port\s*([^ ]+)\s*\(\s*$}{ ) port $1 (}ms;
+
+ return $in;
+}
+</string>
+ <key>fallbackInput</key>
+ <string>word</string>
+ <key>input</key>
+ <string>selection</string>
+ <key>keyEquivalent</key>
+ <string>@|</string>
+ <key>name</key>
+ <string>instantiate component</string>
+ <key>output</key>
+ <string>insertAsSnippet</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>uuid</key>
+ <string>6752C387-8CEC-48A0-9CA6-76EE51ED8701</string>
+</dict>
+</plist>
143 Commands/instantiate entity.tmCommand
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>beforeRunningCommand</key>
+ <string>nop</string>
+ <key>command</key>
+ <string>#!/usr/bin/perl
+# use: ./transform.pl in_file &gt; out_file
+# use warnings;
+# use strict;
+
+use File::Find ;
+
+our $keyword = &lt;&gt; ;
+$keyword = lc($keyword) ;
+
+# Check to see if the keyword is set
+if( $keyword eq "" ) {
+ print "\${0: keyword not set\}" ;
+ exit ;
+}
+
+my $dir = $ENV{'TM_PROJECT_DIRECTORY'} ;
+
+# Check to see if the directory is set
+if( $dir eq "" ) {
+ print $keyword . "\$\{0: project directory not set\}" ;
+ exit ;
+}
+
+# Find the entity
+finddepth( { wanted =&gt; \&amp;wanted, follow =&gt; 1 }, $dir ) ;
+
+# Didn't find anything
+print $keyword . "\$\{0: entity not found\}" ;
+
+sub wanted {
+ if (opendir(DIR, $File::Find::fullname)) {
+ return ;
+ }
+ else {
+ my @parts = split(/\./) ;
+ $ext = lc(@parts[$#parts]) ;
+ if( $ext eq "vhd" or $ext eq "vhdl" ) {
+ $_ = parsefile($File::Find::fullname, $keyword) ;
+ if( $_ =~ m/.*$keyword.*/ ) {
+ print $_ ;
+ exit ;
+ }
+ }
+ }
+}
+
+sub parsefile {
+ open(FILE, shift) or return ;
+ my @in = &lt;FILE&gt;;
+ my $in = join "", @in;
+ my $key = shift ;
+ # split the file apart
+ $in =~ m{(.*)\s+(^\s*entity.*)(?=^\s*end entity)[^;]*;\s*(.*)}ms;
+ # my $before = $1;
+ my $entity = $2;
+ # my $after = $3;
+
+ return findentity($entity, $key) ;
+}
+
+# Format an entity
+sub findentity {
+ my $in = shift ;
+ my $key = shift ;
+ my $max_w = 0;
+ my $i = 4 ;
+ my $found = 0 ;
+ # discard the "end entity" line
+ $in =~ s{^end\s*entity\s*\w+\s*;$}{}m;
+ my @in = split /\n/, $in;
+ foreach (@in) {
+ # change the "entity X is" definition line to "U_X : X"
+ $_ =~ s{^\s*entity\s+([^ ]+)\s+is\s*$}{U_$1\$\{1:_0\} : entity \$\{2:work\}\.$1\(\$\{3:arch\}\)};
+
+ # flag if we have found an entity with the keyword
+ if ( lc($1) =~ /\b($key)\b/ and $found == 0 ) {
+ $found = 1 ;
+ }
+
+ # re-set comments interspersed formatted properly
+ $_ =~ s{\s*\-\-}{ \-\-} ;
+
+ # change comments at the end of lines to nothing
+ $_ =~ s{;\s*\-\-.*$}{} ;
+
+ # remove any attributes
+ $_ =~ s{^\s*attribute.*$}{} ;
+
+ # change "X : integer :=" or "X : in std_logic;" line to "X =&gt;"
+ $_ =~ s{^\s+(\w+)\s*\:\s*[^;]+;?\s*$}{ $1\t=&gt; \$\{$i+1:$1\},};
+ # determine the largest length of the generic/signal for fill
+ if (length $1 &gt; $max_w) {
+ $max_w = length $1;
+ }
+ # change "X (" to "X map ("
+ $_ =~ s{^\s+(\))?(\s*;\s*)?(\w+)\s*\(}{$1 $3 map \(};
+ if( $found == 0 ) {
+ return ;
+ }
+ }
+
+ # Reformat generic/signal lines to be filled properly
+ my $fmt = ' %-' . $max_w . "s\t=&gt;\t\$\{%d:%s\},";
+ foreach (@in) {
+ if (m{=\&gt; }) {
+ $_ =~ s{^\s+(\w+)\s*=\&gt;}{};
+ $_ = sprintf $fmt, $1, $i, $1 ;
+ $i = $i + 1 ;
+ }
+ }
+ $in = join("\n", @in) . "\n";
+ # remove ending commas
+ $in =~ s{,\s*\)}{\n \)}g ;
+ # nestle parenthesis where possible
+ $in =~ s{^\s+\)\s*;\s*port\s*([^ ]+)\s*\(\s*$}{ ) port $1 (}ms;
+
+ return $in;
+}
+</string>
+ <key>fallbackInput</key>
+ <string>word</string>
+ <key>input</key>
+ <string>selection</string>
+ <key>keyEquivalent</key>
+ <string>@\</string>
+ <key>name</key>
+ <string>instantiate entity</string>
+ <key>output</key>
+ <string>insertAsSnippet</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>uuid</key>
+ <string>27002B2B-A8A0-4E3A-A8B6-98186AFE3ADA</string>
+</dict>
+</plist>
24 Preferences/Comments.tmPreferences
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Comments</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>shellVariables</key>
+ <array>
+ <dict>
+ <key>name</key>
+ <string>TM_COMMENT_START</string>
+ <key>value</key>
+ <string>-- </string>
+ </dict>
+ </array>
+ </dict>
+ <key>uuid</key>
+ <string>F45C49D9-314E-4145-9E56-0A81A7AE0C99</string>
+</dict>
+</plist>
19 Preferences/Indent Pattern.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Indent Pattern</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>decreaseIndentPattern</key>
+ <string>^\s*(elsif|else|end)\b</string>
+ <key>increaseIndentPattern</key>
+ <string>\b(begin|is|port|elsif|else|loop|generate|then)$</string>
+ </dict>
+ <key>uuid</key>
+ <string>06E42BE3-ADE8-4DDE-9406-CC8A136E4647</string>
+</dict>
+</plist>
53 Preferences/Smart Typing Pairs.tmPreferences
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Smart Typing Pairs</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>highlightPairs</key>
+ <array>
+ <array>
+ <string>"</string>
+ <string>"</string>
+ </array>
+ <array>
+ <string>(</string>
+ <string>)</string>
+ </array>
+ <array>
+ <string>{</string>
+ <string>}</string>
+ </array>
+ <array>
+ <string>[</string>
+ <string>]</string>
+ </array>
+ </array>
+ <key>smartTypingPairs</key>
+ <array>
+ <array>
+ <string>"</string>
+ <string>"</string>
+ </array>
+ <array>
+ <string>(</string>
+ <string>)</string>
+ </array>
+ <array>
+ <string>{</string>
+ <string>}</string>
+ </array>
+ <array>
+ <string>[</string>
+ <string>]</string>
+ </array>
+ </array>
+ </dict>
+ <key>uuid</key>
+ <string>00F75520-7D58-4EFF-A101-A33B92881096</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Architecture.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Architecture</string>
+ <key>scope</key>
+ <string>entity.name.type.architecture.begin.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/(.*)/architecture $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>E1B2C96E-55C4-4D37-A457-AFC9888421BD</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Component Instantiation.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Component Instantiation</string>
+ <key>scope</key>
+ <string>entity.name.section.component_instantiation.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/\s*:\s*/ of / ; s/(.*)/ instantiation $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>5CD226DA-8663-4624-9648-8824AA073E75</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Component.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Component</string>
+ <key>scope</key>
+ <string>entity.name.type.component.begin.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/(.*)/ component $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>7F4A6B1F-E8C0-4AD2-A5A0-B2EFC8F8970E</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Entity Instantiation.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Entity Instantiation</string>
+ <key>scope</key>
+ <string>entity.name.section.entity_instantiation.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/\s*:\s*/ of / ; s/\b(?i:use\s+)\b// ; s/(.*)/ instantiation $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>53F9A02C-CFA1-49D7-8F9A-92785B833D55</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Entity.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Entity</string>
+ <key>scope</key>
+ <string>entity.name.type.entity.begin.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/(.*)/entity $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>D8A327E1-F799-4686-93C0-9FB7C47DA95D</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Function.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Function</string>
+ <key>scope</key>
+ <string>meta.block.function_prototype.vhdl, meta.block.function_definition.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/\b(?i:is)\b.*/;/g ; s/(?i:\bfunction\b)/function/g ; s/;$// ; s/\s+/ /g ; s/\s*/ /</string>
+ </dict>
+ <key>uuid</key>
+ <string>97DF8F16-EC67-4631-99B2-ED0B74952766</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Generate.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Generate</string>
+ <key>scope</key>
+ <string>entity.name.tag.if.generate.begin.vhdl, entity.name.tag.for.generate.begin.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/(.*)/ generate $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>41DDC386-45CA-449F-8B4B-A6E4DAFE2E93</string>
+</dict>
+</plist>
17 Preferences/Symbol List - Ignored Ends.tmPreferences
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Ignored Ends</string>
+ <key>scope</key>
+ <string>entity.name.type.architecture.end.vhdl, entity.name.type.entity.reference.vhdl, entity.name.type.component.end.vhdl, entity.name.section.package.end.vhdl, entity.name.type.entity.end.vhdl, entity.name.tag.if.generate.end.vhdl, entity.name.tag.for.generate.end.vhdl, entity.name.section.process.end.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>0</integer>
+ </dict>
+ <key>uuid</key>
+ <string>CEEDB1A6-81FA-49E9-AF23-5A950A700F7C</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Package Body.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Package Body</string>
+ <key>scope</key>
+ <string>entity.name.section.package_body.begin.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/(.*)/package body $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>BCCFDEFE-D928-42CE-91C2-AB08F903EF45</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Package.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Package</string>
+ <key>scope</key>
+ <string>entity.name.section.package.begin.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/(.*)/package $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>C9F5FF83-B039-4C45-82A5-4F4A995BF479</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Procedure.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Procedure</string>
+ <key>scope</key>
+ <string>meta.block.procedure_prototype.vhdl, meta.block.procedure_definition.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/\b(?i:is)\b.*/;/g ; s/(?i:\bprocedure\b)/procedure/g ; s/;$// ; s/\s+/ /g ; s/\s*/ /</string>
+ </dict>
+ <key>uuid</key>
+ <string>580853BB-7098-4A97-A8E8-19C18BD661EE</string>
+</dict>
+</plist>
24 Preferences/Symbol List - Process.tmPreferences
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Process</string>
+ <key>scope</key>
+ <string>meta.block.process.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>
+ s/\s*(.*?)(?i:\bprocess\b)\s*(\(.*?\))?.*/$1 $2/ ;
+ s/(:)/ / ;
+ s/(.*)/process $1/ ;
+ s/\s+/ /g ;
+ s/(.*)/ $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>9FF2AFE7-8787-409F-9B99-B9C23DB84A99</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Record.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Record</string>
+ <key>scope</key>
+ <string>entity.name.type.record.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/^(.*)$/ record $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>C70E6BA6-54F5-4E39-92D1-C6343D58F12A</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Subtype.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Subtype</string>
+ <key>scope</key>
+ <string>entity.name.type.subtype.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/^(.*)$/ subtype $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>9C7E8BBD-0DA5-4E95-8B82-F22F5D73DF13</string>
+</dict>
+</plist>
19 Preferences/Symbol List - Type.tmPreferences
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>name</key>
+ <string>Symbol List - Type</string>
+ <key>scope</key>
+ <string>entity.name.type.type.vhdl</string>
+ <key>settings</key>
+ <dict>
+ <key>showInSymbolList</key>
+ <integer>1</integer>
+ <key>symbolTransformation</key>
+ <string>s/^(.*)$/ type $1/</string>
+ </dict>
+ <key>uuid</key>
+ <string>7E81C758-73D7-4DD3-8DC4-CEFF33619786</string>
+</dict>
+</plist>
23 Snippets/aprocess.tmSnippet
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>${1:identifier} : process( ${2:clock}, ${3:reset} )
+begin
+ if( ${3:reset} = '1' ) then
+ $0
+ elsif( rising_edge(${2:clock}) ) then
+
+ end if ;
+end process ; -- ${1:identifier}</string>
+ <key>name</key>
+ <string>asynchronous process</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>apro</string>
+ <key>uuid</key>
+ <string>BADAA10C-92E6-408F-999F-8BD76CA1F71A</string>
+</dict>
+</plist>
22 Snippets/architecture.tmSnippet
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>architecture ${1:arch} of ${2:${TM_FILENAME/(.*?)(\..+)/$1/}} is
+
+ signal $0
+
+begin
+
+end architecture ; -- ${1:arch}</string>
+ <key>name</key>
+ <string>architecture</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>arch</string>
+ <key>uuid</key>
+ <string>CF12C87E-3ECC-4184-A422-AF1D5CEA2871</string>
+</dict>
+</plist>
23 Snippets/case.tmSnippet
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>case( ${1:signal_name} ) is
+
+ when ${2:IDLE} =&gt;
+ $0
+
+ when others =&gt;
+
+end case ;</string>
+ <key>name</key>
+ <string>case</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>case</string>
+ <key>uuid</key>
+ <string>EA15B152-C7A8-4BFD-93AD-C86C1F5A417D</string>
+</dict>
+</plist>
17 Snippets/else.tmSnippet
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>else
+ $0</string>
+ <key>name</key>
+ <string>else</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>else</string>
+ <key>uuid</key>
+ <string>07B45658-A0EC-4858-999F-D12B0FB0480C</string>
+</dict>
+</plist>
17 Snippets/elsif.tmSnippet
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>elsif ${1:expression} then
+ $0</string>
+ <key>name</key>
+ <string>elsif</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>elsif</string>
+ <key>uuid</key>
+ <string>373AD021-B1B0-48B5-A0B0-A8589A9B9471</string>
+</dict>
+</plist>
20 Snippets/entity.tmSnippet
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>entity ${1:${TM_FILENAME/(.*?)(\..+)/$1/}} is
+ port (
+ ${0:clock}
+ ) ;
+end entity ; -- ${1:${TM_FILENAME/(.*?)(\..+)/$1/}}</string>
+ <key>name</key>
+ <string>entity</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>ent</string>
+ <key>uuid</key>
+ <string>3FB69040-7659-4F47-8F59-EE36751844AA</string>
+</dict>
+</plist>
30 Snippets/entity_architecture.tmSnippet
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>entity ${1:${TM_FILENAME/(.*?)(\..+)/$1/}} is
+ port (
+ ${0:clock}
+ ) ;
+end entity ; -- ${1:${TM_FILENAME/(.*?)(\..+)/$1/}}
+
+architecture ${2:arch} of ${1:${TM_FILENAME/(.*?)(\..+)/$1/}} is
+
+
+
+begin
+
+
+
+end architecture ; -- ${2:arch}</string>
+ <key>name</key>
+ <string>entity architecture</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>entarch</string>
+ <key>uuid</key>
+ <string>6521BA9D-258F-4473-A3F5-FDDE31946573</string>
+</dict>
+</plist>
18 Snippets/for.tmSnippet
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>${1:identifier} : for ${2:i} in ${3:0} to ${4:10} loop
+ $0
+end loop ; -- ${1:identifier}</string>
+ <key>name</key>
+ <string>for loop</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>for</string>
+ <key>uuid</key>
+ <string>54CBBFE9-F54C-4076-8BE6-7B3E6E2CBDDA</string>
+</dict>
+</plist>
18 Snippets/forg.tmSnippet
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>${1:identifier} : for ${2:i} in ${3:x} to ${4:y} generate
+ $0
+end generate ; -- ${1:identifier}</string>
+ <key>name</key>
+ <string>for generate</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>forg</string>
+ <key>uuid</key>
+ <string>4F5443AD-403B-4B83-9B8B-3971773CFC0C</string>
+</dict>
+</plist>
18 Snippets/if.tmSnippet
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>if ${1:expression} then
+ $0
+end if ;</string>
+ <key>name</key>
+ <string>if</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>if</string>
+ <key>uuid</key>
+ <string>AB151ED3-9580-4E11-98BA-CCF4E63FFE95</string>
+</dict>
+</plist>
18 Snippets/package.tmSnippet
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>package ${1:${TM_FILENAME/(.*?)(\..+)/$1_p/}} is
+ $0
+end package ; -- ${1:${TM_FILENAME/(.*?)(\..+)/$1_p/}} </string>
+ <key>name</key>
+ <string>package</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>pack</string>
+ <key>uuid</key>
+ <string>42FEDCCE-509B-4A34-93D5-3AAE3E2E7BE3</string>
+</dict>
+</plist>
19 Snippets/process.tmSnippet
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>${1:identifier} : process( ${2:sensitivity_list} )
+begin
+ $0
+end process ; -- ${1:identifier}</string>
+ <key>name</key>
+ <string>process</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>pro</string>
+ <key>uuid</key>
+ <string>4A9A658D-8ECC-488D-89AC-B10C6E0E2A7E</string>
+</dict>
+</plist>
16 Snippets/signed downto.tmSnippet
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>signed(${1:x} downto ${2:0}) ;$0</string>
+ <key>name</key>
+ <string>signed downto</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>s</string>
+ <key>uuid</key>
+ <string>37FCC899-97EA-4C79-8AFE-AE6593118D98</string>
+</dict>
+</plist>
16 Snippets/signed range.tmSnippet
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>signed(${1:signal}'range) ;$0</string>
+ <key>name</key>
+ <string>signed range</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>sr</string>
+ <key>uuid</key>
+ <string>FF4E5AF7-D48F-4A47-93BC-4FB7A42F4998</string>
+</dict>
+</plist>
21 Snippets/sprocess.tmSnippet
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>${1:identifier} : process( ${2:clock} )
+begin
+ if( rising_edge(${2:clock}) ) then
+ $0
+ end if ;
+end process ; -- ${1:identifier}</string>
+ <key>name</key>
+ <string>synchronous process</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>spro</string>
+ <key>uuid</key>
+ <string>F41DF05A-C909-406C-B5A7-A2572EC0CAAE</string>
+</dict>
+</plist>
16 Snippets/std_logic_vector downto.tmSnippet
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>std_logic_vector(${1:x} downto ${2:0}) ;$0</string>
+ <key>name</key>
+ <string>std_logic_vector downto</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>slv</string>
+ <key>uuid</key>
+ <string>4FA10D3D-118C-4859-8358-39AFF5324B35</string>
+</dict>
+</plist>
16 Snippets/std_logic_vector range.tmSnippet
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>std_logic_vector(${1:signal}'range) ;$0</string>
+ <key>name</key>
+ <string>std_logic_vector range</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>slvr</string>
+ <key>uuid</key>
+ <string>C853ACC6-BC55-444C-BAC4-9016EDCBAF06</string>
+</dict>
+</plist>
16 Snippets/unsigned downto.tmSnippet
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>unsigned(${1:x} downto ${2:0}) ;$0</string>
+ <key>name</key>
+ <string>unsigned downto</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>u</string>
+ <key>uuid</key>
+ <string>9F51C6FA-CF3F-4BD6-84D9-04A7DFEBEE7D</string>
+</dict>
+</plist>
16 Snippets/unsigned range.tmSnippet
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>unsigned(${1:signal}'range) ;$0</string>
+ <key>name</key>
+ <string>unsigned range</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>ur</string>
+ <key>uuid</key>
+ <string>FE124F8A-9A5C-4A35-8B48-2DFA10B03313</string>
+</dict>
+</plist>
30 Snippets/vhdl template.tmSnippet
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>library ieee ;
+ use ieee.std_logic_1164.all ;
+ use ieee.numeric_std.all ;
+
+entity ${1:${TM_FILENAME/(.*?)(\..+)/$1/}} is
+ port (
+ ${0:clock}
+ ) ;
+end entity ; -- ${1:${TM_FILENAME/(.*?)(\..+)/$1/}}
+
+architecture ${2:arch} of ${1:${TM_FILENAME/(.*?)(\..+)/$1/}} is
+
+begin
+
+end architecture ; -- ${2:arch}</string>
+ <key>name</key>
+ <string>vhdl template</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>vhdl</string>
+ <key>uuid</key>
+ <string>E2C6B170-E06D-45D4-BFAF-BFE0A612742A</string>
+</dict>
+</plist>
18 Snippets/while.tmSnippet
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>content</key>
+ <string>${1:identifier} : while ${2:expression} loop
+ $0
+end loop ; -- ${1:identifier}</string>
+ <key>name</key>
+ <string>while</string>
+ <key>scope</key>
+ <string>source.vhdl</string>
+ <key>tabTrigger</key>
+ <string>while</string>
+ <key>uuid</key>
+ <string>8B4AED98-9634-4B84-A669-6043A8288A99</string>
+</dict>
+</plist>
2,562 Syntaxes/VHDL.tmLanguage
@@ -0,0 +1,2562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>comment</key>
+ <string>VHDL Bundle by Brian Padalino (ocnqnyvab@tznvy.pbz)</string>
+ <key>fileTypes</key>
+ <array>
+ <string>vhd</string>
+ <string>vhdl</string>
+ <string>vho</string>
+ </array>
+ <key>foldingStartMarker</key>
+ <string>(?x)
+ # From the start of the line make sure we are not going into a comment ...
+ ^(
+ ([^-]-?(?!-))*?
+ (
+ # Check for "keyword ... is"
+ (\b(?i:architecture|case|entity|function|package|procedure)\b(.+?)(?i:\bis)\b)
+
+ # Check for if statements
+ |(\b(?i:if)\b(.+?)(?i:generate|then)\b)
+
+ # Check for and while statements
+ |(\b(?i:for|while)(.+?)(?i:loop|generate)\b)
+
+ # Check for keywords that do not require an is after it
+ |(\b(?i:component|process|record)\b[^;]*?$)
+
+ # From the beginning of the line, check for instantiation maps
+ |(^\s*\b(?i:port|generic)\b(?i:\s+map\b)?\s*\()
+ )
+ )
+ </string>
+ <key>foldingStopMarker</key>
+ <string>(?x)
+ # From the start of the line ...
+ ^(
+ (
+ (
+ # Make sure we are not going into a comment ...
+ ([^-]-?(?!-))*?
+ (
+ # The word end to the end of the line
+ (?i:\bend\b).*$\n?
+ )
+ )
+ )
+
+ # ... a close paren followed by an optional semicolon as the only thing on the line
+ |(\s*?\)\s*?;?\s*?$\n?
+ )
+ )
+ </string>
+ <key>keyEquivalent</key>
+ <string>^~V</string>
+ <key>name</key>
+ <string>VHDL</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#block_processing</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ <key>repository</key>
+ <dict>
+ <key>architecture_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+
+ # The word architecture $1
+ \b((?i:architecture))\s+
+
+ # Followed up by a valid $3 or invalid identifier $4
+ (([a-zA-z][a-zA-z0-9_]*)|(.+))(?=\s)\s+
+
+ # The word of $5
+ ((?i:of))\s+
+
+ # Followed by a valid $7 or invalid identifier $8
+ (([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\s*(?i:is))\b
+ </string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.type.architecture.begin.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ <key>5</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>7</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.type.entity.reference.vhdl</string>
+ </dict>
+ <key>8</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>(?x)
+ # The word end $1
+ \b((?i:end))
+
+ # Optional word architecture $3
+ (\s+((?i:architecture)))?
+
+ # Optional same identifier $6 or illegal identifier $7
+ (\s+((\3)|(.+?)))?
+
+ # This will cause the previous to capture until just before the ; or $
+ (?=\s*;)
+ </string>
+ <key>endCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>6</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.type.architecture.end.vhdl</string>
+ </dict>
+ <key>7</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.mismatched.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.architecture</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#function_definition_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#procedure_definition_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#component_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#if_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#process_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#type_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#record_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#for_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#entity_instantiation_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#component_instantiation_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>attribute_list</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>\'\(</string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>\)</string>
+ <key>endCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.attribute_list</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#parenthetical_list</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>block_processing</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#package_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#package_body_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#entity_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#architecture_pattern</string>
+ </dict>
+ </array>
+ </dict>
+ <key>case_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+ # Beginning of line ...
+ ^\s*
+
+ # Optional identifier ... $3 or invalid identifier $4
+ (
+ (
+ ([a-zA-Z][a-zA-Z0-9_]*)
+ |(.+?)
+ )
+ \s*:\s*
+ )?
+
+ # The word case $5
+ \b((?i:case))\b
+ </string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.tag.case.begin.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ <key>5</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>(?x)
+ # The word end $1
+ \b((?i:end))\s*
+
+ # The word case $4 or invalid word $5
+ (\s+(((?i:case))|(.*?)))
+
+ # Optional identifier from before $8 or illegal $9
+ (\s+((\2)|(.*?)))?
+
+ # Ending with a semicolon
+ (?=\s*;)
+ </string>
+ <key>endCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>5</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.case.required.vhdl</string>
+ </dict>
+ <key>8</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.tag.case.end.vhdl</string>
+ </dict>
+ <key>9</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.mismatched.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.case.vhdl</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#control_patterns</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>cleanup</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#comments</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#constants_numeric</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#strings</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#attribute_list</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#syntax_highlighting</string>
+ </dict>
+ </array>
+ </dict>
+ <key>comments</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>match</key>
+ <string>--.*$\n?</string>
+ <key>name</key>
+ <string>comment.line.double-dash.vhdl</string>
+ </dict>
+ </array>
+ </dict>
+ <key>component_instantiation_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+ # From the beginning of the line ...
+ ^\s*
+
+ # Match a valid identifier $1
+ ([a-zA-Z][a-zA-Z0-9_]*)
+
+ # Colon! $2
+ \s*(:)\s*
+
+ # Another valid identifier $3
+ ([a-zA-Z][a-zA-Z0-9_]*)\b
+
+ # Make sure we are just the other word, or the beginning of
+ # a generic or port mapping
+ (?=\s*($|generic|port))
+ </string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.section.component_instantiation.vhdl</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.tag.component.reference.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>;</string>
+ <key>endCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.component_instantiation.vhdl</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#parenthetical_list</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>component_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+ # From the beginning of the line ...
+ ^\s*
+
+ # The word component $1
+ \b((?i:component))\s+
+
+ # A valid identifier $3 or invalid identifier $4
+ (([a-zA-Z_][a-zA-Z0-9_]*)\s*|(.+?))(?=\b(?i:is|port)\b|$|--)
+
+ # Optional word is $6
+ (\b((?i:is\b)))?
+ </string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.type.component.begin.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ <key>6</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>(?x)
+ # The word end $1
+ \b((?:end))\s+
+
+ # The word component $3 or illegal word $4
+ (((?i:component\b))|(.+?))(?=\s*|;)
+
+ # Optional identifier $7 or illegal mismatched $8
+ (\s+((\3)|(.+?)))?(?=\s*;)
+ </string>
+ <key>endCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.component.keyword.required.vhdl</string>
+ </dict>
+ <key>7</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.type.component.end.vhdl</string>
+ </dict>
+ <key>8</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.mismatched.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.component.vhdl</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#generic_list_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#port_list_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#comments</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>constants_numeric</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>match</key>
+ <string>\b([+\-]?[\d_]+\.[\d_]+([eE][+\-]?[\d_]+)?)\b</string>
+ <key>name</key>
+ <string>constant.numeric.floating_point.vhdl</string>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>\b\d+#[\h_]+#\b</string>
+ <key>name</key>
+ <string>constant.numeric.base_pound_number_pound.vhdl</string>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>\b[\d_]+([eE][\d_]+)?\b</string>
+ <key>name</key>
+ <string>constant.numeric.integer.vhdl</string>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>[xX]"[0-9a-fA-F_uUxXzZwWlLhH\-]+"</string>
+ <key>name</key>
+ <string>constant.numeric.quoted.double.string.hex.vhdl</string>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>[oO]"[0-7_uUxXzZwWlLhH\-]+"</string>
+ <key>name</key>
+ <string>constant.numeric.quoted.double.string.octal.vhdl</string>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>[bB]?"[01_uUxXzZwWlLhH\-]+"</string>
+ <key>name</key>
+ <string>constant.numeric.quoted.double.string.binary.vhdl</string>
+ </dict>
+ <dict>
+ <key>captures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.quoted.double.string.vhdl</string>
+ </dict>
+ </dict>
+ <key>match</key>
+ <string>([bBoOxX]".+?")</string>
+ <key>name</key>
+ <string>constant.numeric.quoted.double.string.illegal.vhdl</string>
+ </dict>
+ <dict>
+ <key>match</key>
+ <string>'[01uUxXzZwWlLhH\-]'</string>
+ <key>name</key>
+ <string>constant.numeric.quoted.single.std_logic</string>
+ </dict>
+ </array>
+ </dict>
+ <key>control_patterns</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#case_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#if_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#for_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#while_pattern</string>
+ </dict>
+ </array>
+ </dict>
+ <key>entity_instantiation_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+ # From the beginning of the line
+ ^\s*
+
+ # Component identifier or illegal identifier $1
+ ([a-zA-Z][a-zA-Z0-9_]*)
+
+ # Colon! $2
+ \s*(:)\s*
+
+ # Optional word use $4
+ (((?i:use))\s+)?
+
+ # Required word entity $5
+ ((?i:entity))\s+
+
+ # Optional library unit identifier $8 for invalid identifier $9 followed by a dot $10
+ (
+ (([a-zA-Z][a-zA-Z0-9_]*)|(.+?))
+ (\.)
+ )?
+
+ # Entity name reference $12 or illegal identifier $13
+ (([a-zA-Z][a-zA-Z0-9_]*)|(.+?))
+
+ # Check to see if we are being followed by either open paren, end of line, or port or generic words
+ (?=\s*(\(|$|(?i:port|generic)))
+
+ # Optional architecture elaboration
+ (
+ # Open paren $16
+ \s*(\()\s*
+
+ # Arch identifier $18 or invalid identifier $19
+ (([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\s*\))
+
+ # Close paren $21
+ \s*(\))
+ )?
+ </string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.section.entity_instantiation.vhdl</string>
+ </dict>
+ <key>10</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ <key>12</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.tag.entity.reference.vhdl</string>
+ </dict>
+ <key>13</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ <key>16</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ <key>18</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.tag.architecture.reference.vhdl</string>
+ </dict>
+ <key>19</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ <key>21</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>5</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>8</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.tag.library.reference.vhdl</string>
+ </dict>
+ <key>9</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>;</string>
+ <key>endCaptures</key>
+ <dict>
+ <key>0</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.entity_instantiation.vhdl</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#parenthetical_list</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>entity_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+ # From the beginning of the line ...
+ ^\s*
+
+ # The word entity $1
+ ((?i:entity\b))\s+
+
+ # The identifier $3 or an invalid identifier $4
+ (([a-zA-Z][a-zA-Z\d_]*)|(.+?))(?=\s)
+ </string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.type.entity.begin.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>(?x)
+
+ # The word end $1
+ \b((?i:end\b))
+
+ # Optional word entity $3
+ (\s+((?i:entity)))?
+
+ # Optional identifier match $6 or indentifier mismatch $7
+ (\s+((\3)|(.+?)))?
+
+ # Make sure there is a semicolon following
+ (?=\s*;)
+ </string>
+ <key>endCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>6</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.type.entity.end.vhdl</string>
+ </dict>
+ <key>7</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.mismatched.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.entity.vhdl</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#comments</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#generic_list_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#port_list_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>for_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+ # From the beginning of the line
+ ^\s*
+ (
+ # Check for an identifier $2
+ ([a-zA-Z][a-zA-Z0-9_]*)
+
+ # Followed by a colon $3
+ \s*(:)\s*
+ )?
+
+ # Make sure the next word is not wait
+ (?!(?i:wait\s*))
+
+ # The for keyword $4
+ \b((?i:for))\b
+
+ # Make sure the next word is not all
+ (?!\s*(?i:all))
+
+ </string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>2</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.tag.for.generate.begin.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>punctuation.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>(?x)
+ # The word end $1
+ \b((?i:end))\s+
+ (
+ # Followed by generate or loop $3
+ ((?i:generate|loop))
+
+ # But it really is required $4
+ |(\S+)
+ )\b
+
+ # The matching identifier $7 or an invalid identifier $8
+ (\s+((\2)|(.+?)))?
+
+ # Only space and a semicolon left
+ (?=\s*;)
+ </string>
+ <key>endCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.loop.or.generate.required.vhdl</string>
+ </dict>
+ <key>7</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.tag.for.generate.end.vhdl</string>
+ </dict>
+ <key>8</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.mismatched.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.for.vhdl</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#control_patterns</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#entity_instantiation_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#component_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#component_instantiation_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#process_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>function_definition_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+ # From the beginning of the line
+ ^\s*
+
+ # The word function $1
+ ((?i:function))\s+
+
+ (
+ # A valid normal identifier $3
+ ([a-zA-Z][a-zA-Z\d_]*)
+ # A valid string quoted identifier $4
+ |("\S+")
+ # A valid backslash escaped identifier $5
+ |(\\.+\\)
+ # An invalid identifier $5
+ |(.+?)
+ )
+
+ # Check to make sure we have a list or we return
+ (?=\s*
+ (
+ \(
+ |(?i:\breturn\b)
+ )
+ )
+ </string>
+ <key>beginCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.function.function.begin.vhdl</string>
+ </dict>
+ <key>4</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.function.function.begin.vhdl</string>
+ </dict>
+ <key>5</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.function.function.begin.vhdl</string>
+ </dict>
+ <key>6</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.invalid.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>end</key>
+ <string>(?x)
+ # From the beginning of the line
+ ^\s*
+
+ # The word end $1
+ ((?i:end))
+
+ # Optional word function $3
+ (\s+((?i:function)))?
+
+ # Optional matched identifier $6 or mismatched identifier $7
+ (\s+((\3|\4|\5)|(.+?)))?
+
+ # Ending with whitespace and semicolon
+ (?=\s*;)
+ </string>
+ <key>endCaptures</key>
+ <dict>
+ <key>1</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>3</key>
+ <dict>
+ <key>name</key>
+ <string>keyword.language.vhdl</string>
+ </dict>
+ <key>6</key>
+ <dict>
+ <key>name</key>
+ <string>entity.name.function.function.end.vhdl</string>
+ </dict>
+ <key>7</key>
+ <dict>
+ <key>name</key>
+ <string>invalid.illegal.mismatched.identifier.vhdl</string>
+ </dict>
+ </dict>
+ <key>name</key>
+ <string>meta.block.function_definition.vhdl</string>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>include</key>
+ <string>#control_patterns</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#parenthetical_list</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#type_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#record_pattern</string>
+ </dict>
+ <dict>
+ <key>include</key>
+ <string>#cleanup</string>
+ </dict>
+ </array>
+ </dict>
+ </array>
+ </dict>
+ <key>function_prototype_pattern</key>
+ <dict>
+ <key>patterns</key>
+ <array>
+ <dict>
+ <key>begin</key>
+ <string>(?x)
+ # From the beginning of the line
+ ^\s*
+
+ # The word function $1
+ ((?i:function))\s+
+
<