Releases: Remillard/VHDL-Mode
Version 1.8.12
- For VHDL-2008 support, added the keyword
case?to syntax and
beautification. (Issue #162) - Fixed the syntax for a return inside of a function body. (Issue #161)
- Fixed the scoping on variable assignment in a particular case where the
left hand side contained a slice with internal expressions (it worked for
signal assignments.) (Issue #163) - Fixed scoping when typecasting is used on the left hand side of a mapping
in a port instantiation. (Issue #158)
Version 1.8.11
-
A user reported that beautification was strange inside of a
block
construct, specifically with an instantiation. As it turns out there were
multiple issues. First, in syntax, the block construct required the ending
label and this is technically optional, so I made the syntax close correctly
when ablockdoes not end with its label. The opening label for a block
IS mandatory per the LRM however.Secondly, the instantiation beautification error was due to the fact that in a
blockthegeneric mapconstruct ends differently than anywhere else. I'd
done a trick with the beautification engine where it ignoredgeneric mapin
lieu ofgenericbecause of that difference in ending structure. The
example provided by the user had ageneric mapin the instantiation so
it was ignored and strange things happened with beautification. I created
a branching structure in the beautification engine for block (as I've done
for other lexical structures) sogeneric mapno longer gets ignored in the
concurrent section.A reminder about
blockusage and syntax. The LRM does indicate theis
is an optional word however for my purposes it is not optional.block
may have a guard expression and I need a delimeter to mark the place between
the guard expression and the declarative region. I believe I put in a
snippet for this for a prior issue and put theisin there.
Version 1.8.10
-
I think I've got case/when alignment structures more or less sorted out and
no one had to die or anything this time around. Assignments followed by
positional arguments should align correctly in that order most of the time,
and thenwhen choice =>should align correctly followed by assignments on
those lines. Hopefully that settles the matter once and for all, but I'll
take another crack at it if something goes pear shaped.Just a note, all you folks who are putting a ton of things on the same
when choice =>line for compactness, there is a limit to this and I think
I've reached it. If you are getting beautification results you don't like
because you've put entire paragraphs on the same line after awhen choice =>
just put it on the next few lines please. Your code maintainer will thank
you someday (or at least won't curse your name overmuch.) -
Added basic support for aggregate assignment. The location of this paren
group is in a tricky spot (due to the way the syntax file is setup looking
for lexical contexts) so it really is just basic support. I don't think
symbols or identifiers inside the paren group will scope as finely grained
as in other places in the code, but at least it won't flag as an invalid
closing paren anymore. I might be able to get something more sophisticated
in place with more experimentation since this might be the only VHDL construct
that starts with opening parenthesis.
Version 1.8.9
- Tweaked beautification rules to permit putting an entire
if/then/end if
statement on the same line aswhen <choice> =>. - Altered language syntax rules to attempt to scope the typecast
'mark for
known types. This was done because an autogenerated bit of code came up
withstd_logic'('0')which really confused the syntax rules. - Adjusted the order of some alignment to make long lists of when choices with
in-line assignments all line up properly.
Version 1.8.8
- Gently adjusted some scope names primarily surrounding words that often
define the beginning and ending of code blocks. Some color schemes might
now show these better (and many won't if they don't utilize that scope.)
In other places some constructs were better specified (such asloop
becomingkeyword.control.flow.loopinstead of a more generic
keyword.other). - Added support for entity generic type. It should scope, beautify, and
properly copy with instance copying and testbench creation. Thanks to
@dkAlex on the Sublime Forum for providing a really nice bug report with
sample code and screenshots and everything.
Version 1.8.7
- Fixed a long-time bug (Issue #104) finally. This issue involved a subtle
issue with how single quote character literals were captured in the syntax
file. I'd been using a "not a character" construct to distinguish a single
quoted character literal from a singleton single quote used for attributes
or typecasting. However this would consume the "not a character" which
caused some problems with scoping the character consumed especially if it
was a parenthesis. The actual solution was to use a look-forward and make
sure this was a character literal before capturing a character literal.
In any event, this bug has been around for awhile any my apologies to
@lenigoor, @Sv3n and anyone else impacted by it.
Version 1.8.6
- Per request, added the
blockconstruct to both syntax and beautification.
Apologies for not catching this sooner as I do try for complete coverage of
the language. One caveat, while the LRM defines the keywordisas optional,
I cannot support that variation in syntax. I need to separate valid
constructs in the guard expression region and the declarative region and the
keywordisis my separator between the two. Issue #133. Thanks to
@rolpks for finding this. - Also tweaked the snippet for
blockto make it of better use by putting
the entire guard expression portion into a tab (so that the user may
simply hit delete if no guard expression is desired -- probably most of the
time) and adding a space for declarative region. - Block commenting did not beautify well as my comment ignoring method is
centered around line comments. Added some basic block comment support to
beautification but be aware it's pretty basic currently until I can come up
with a different model for handling it (or rather for everything else to
ignore this text.) Issue #134 - Fixed a problem I noticed with if-generate beautification. It wouldn't
de-indent correctly and now it does.
Version 1.8.5
- Probably should have done this a long time ago, however I've added a number
of commands to the right-click context menu under the "VHDL Mode" subheading.
Unfortunately the subheading will remain visible no matter what, however
the commands will not show if you aren't editing a VHDL source file. - The "paste" commands will show the name of the object last copied in the
menu. If there has been no copy performed, the menu items will not show.
Version 1.8.4
- Fixed an urgent bug reported by dkalex on the Sublime Text forums where
paste as testbench would fail if the entity had generics inside. (Issue #130)
I'd used a deque object "is not None" to check for objects and it turns out
deque objects are never None, even if empty.
Version 1.8.3
- Fixed another bug in the messages.json file which shows the changes that were
altered in the version. I don't know if it'll display anything for prior
revisions so please feel free to visit
https://github.com/Remillard/VHDL-Mode/releases
for the change notes for the past few releases. They mirror what I put into
this file. - Fixed a problem with the regex for the assignment operator when working with
multiline statements. (Issue #125). - Fixed a problem with the regex of when to ignore a
whenstatement for case
statements, but also properly acceptwhenin assignments. (Issue #126) - Tweaked a few snippets for better usability.
- Fine tuned subprogram beautification particularly around the closing paren
of the interface declaration (Issue #89). - Fixed function syntax for operator overloading. (Issue #128)
- Fixed range keyword syntax not being scoped in an interface declaration
(Issue #127) - Fixed scope error for
assertfor sequential statements. (Issue #124) - Fixed issue with subprogram copying. My apologies to all who may have needed
that feature as the bug had stuck around for a long time. I believe it's
fixed now though. (Issue #90) - Fixed a little problem that re-emerged with the recent release of Sublime
where my post-beautification viewport shift fix was no longer working. Had
to add a little more delay in the shift to get past the screen repaint that
happens when the buffer is replaced.