Releases: shabiel/VPE
VPE v15.2
Install Instructions (first time)
Load the .RSA file into your M implementation, and run ^XV.
Upgrade Instructions (from v13-15)
If you are upgrading from v13-15, make sure no users are in VPE. Load the .RSA file into your M implementation. Outside of VPE, run DO UPGRADE^XV
. Then DO ^XV
to start.
Upgrade Instructions (from v12 and earlier)
Load the .RSA file. Run ^XV. Exit VPE (H) and at the MUMPS prompt (not while in VPE) enter the following:
M ^XVEMS("ID")=^%ZVEMS("ID")
M ^XVEMS("QU")=^%ZVEMS("QU")
You can still run the old VPE v12 using X ^%ZVEMS; as the new VPE runs in a different namespace.
ESC-R on Tags Warning
Due to issue #63, if you edit a routine and use ESC-R to jump to tags, you will not be able to save the routine if you make changes to it as VPE thinks another copy is open. We were asked by Greg to include this information in the release notes until we can get this fixed. This is not a new problem in this release; it has been a problem since version 14.0.
Authors for version 15.2
Sam Habiel (SMH) & David Wicksell (DLW)
Major Improvements in 15.2
- In ..E/..VRR, provide a dynamically updated [TAG+OFFSET^ROUTINE] display
- First line routine format update to comply with latest SAC
- Syntax Higlighting Caché Terminal Support and bug fixes
- XINDEX now indexes buffer copy, not saved copy, of routine
- Prompt (>>) does not get to timeout anymore
- ESC-G/VGL Fixes/Improvements
- ESC-R fixes
- UPGRADE^XV for automated upgrade of VPE between versions
- Lots of other fixes
For full details, see the Changes.md file at the root of the repository.
VPE v15.1
Install Instructions (first time)
Load the .RSA file into your M implementation, and run ^XV.
Upgrade Instructions (from v13-14)
If you are upgrading from v13-14, and have saved user QWIKs, you need to follow the following instructions:
- Make sure all users have halted off VPE Shell
- Merge User QWIKS and IDs from ^XVEMS("QU") and ^XVEMS("ID") to a scratch global
- Delete routines XVEM*, XVS*, XVVM*, and XV
- Kill global ^XVEMS
- Load VPE_XXPX.RSA routines from the disk
- Do ^XV to install and start VPE
- Merge Saved user QWIKS and IDs from scratch global to ^XVEMS("QU") and ^XVEMS("ID")
- Run ..PARAM to adjust your parameters if you wish
Upgrade Instructions (from v12 and earlier)
- Load the .RSA file
- Run ^XV
- At the MUMPS prompt (not while in VPE) enter the following:
M ^XVEMS("ID")=^%ZVEMS("ID")
M ^XVEMS("QU")=^%ZVEMS("QU")
You can still run the old VPE v12 using X ^%ZVEMS; as the new VPE runs in a different namespace.
Authors for version 15.1
Sam Habiel (SMH) & David Wicksell (DLW)
Changes for version 15.1
Changes with * have Integration Tests.
- Code to save routines is now VPE's own built in code. Previously code to save
routines was obtained from Fileman if it is installed. This was found because
Fileman had a bug in saving % routine on GTM/YDB. Use of Fileman in preference
to VPE is not in accordance with VPE's VistA indepdendent philosophy.* (DLW) - Due to a bug in how a logical condition apropos De Morgan's Law, ZLINK was
not invoked on GTM/YDB when saving a routine. This bug was introduced in
v13.0; the code was correct in v12 (the pre-XV version).* (DLW) - If a routine contained over 999 lines, the line counter at the top didn't
show the number correctly. This is now fixed.* (test not active as it takes
too long to run) (DLW) - Syntax highlighting parameters have been improved: ESC key aborts changes;
selected colors can be seen in real time while selecting them.* (DLW) - Parameter selection for width and height are limited at the lower bound of
80 x 24 as the routine editor is glitchy with a lower selection.* (DLW) - Previously VPE had a facility for automatically stripping spaces, but only
when the backspace key was pressed. This interfered with Syntax Highlighting;
so this feature was removed; this aside from the fact that this behavior is
very counterintuitive and undocumented. Future enhancements may add stripping
of trailing spaces when saving a routine. (DLW) - General improvements to Syntax Highlighting code introduced in 15.0. (DLW)
- New features and bug fixes of ESC-G to from 14.0: (SMH)
- As previously ESC-G at ^ will get you the full global reference until the
ending parentheses.* - ESC-G at the opening parentheses will display the global data under the
global name only.* - ESC-G at any comma of the subscripts will get you the global up to the
subscripts before the comma.* - Fixed help text for ..E/..VRR to describe how to use ESC-G with these
changes. - (bug fix): ESC-G resolves $ expression (ISVs, intrinsic functions, or
extrinsic functions) inside of global references. $J is kept, anything
else is discarded.* - (bug fix): Expressions with nested parentheses inside a global reference
(e.g.$P($G(RXFL(RX)),"^",0)
) are discarded correctly.* - In all the above cases, ESC-G tries to substitute any expressions or
variables (with the exception of $J as mentioned above) with the
continuation character (:) when sending the input into ..VGL.*
- As previously ESC-G at ^ will get you the full global reference until the
- Removed upper limit on ID. Previously, in VistA instances such as the CPRS
Demo (aka VEHU), you couldn't log-in with users with DUZ in the billions
because VPE did not allow that. Fixes Issue #23.* (SMH) - Upgrade and Uninstall instructions printed to the user upon installation were
not correct. They are now fixed. (SMH) - Tell user about old VPE if it is installed during installation.* (SMH)
- Branched to routines didn't ZLINK when saved because they did not use the
correct entry point for saving. This is now fixed.* (SMH) - Prevent ESC-ESC from exiting the routine save dialog. This is contrary to
VPE philosophy, where all dialogs are escapable using ESC-ESC. However, in
this specific case, many new users held the ESC key for too long when trying
to save a routine, with the result that they lost the routine when they
escaped from the save dialog. Fixes Issue #29.* (SMH) - Remove VGL/VEDD drill down restriction. If you invoke VGL or VEDD from the
Menubar from ..E/..VRR after having branched down two routines, you were
prevented. Fixes #39. (SMH) - In VGL, display global references being shown next to the session number; and
show the global if we are telling the user that there is no data. These
improvements were made to address the fact that ESC-G in the routine editor
auto-resolved what global it was by substituting variables, but it was not
obvious to the end user what did ESC-G finally select as the global to
search.* (SMH)
Notes from DLW regarding Syntax Highlighting and catching errors in code:
I made a decision not to try to catch every error, but just the main, obvious
ones, and only if I could do so without significantly complicating the code.
With this code, I have to balance how strict the parsing is, with
performance. If I add really strict parsing logic, and try to make it
into basically a reference grammar parser for MUMPS, then it probably
will not run fast enough for an editor. That's not to say that making it
much more strict, and keeping good performance is impossible, just that
it would be hard.
For example, I chose to be pretty strict with commands, so that it is
good about flagging errors for commands that don't exist (except for
ones that start with a Z, which I basically leave alone). But, for
intrinsic functions and ISVs, I didn't do that. It only checks to make
sure they follow the rules for identifiers from the standard, but not
that they are a function or ISV that exists. I was planning a future
upgrade to improve the error highlighting of the code, but wanted to get
something out there that was useful, and performed well enough that
people would enjoy using it.
So, to summarize, the syntax highlighter should always color all
syntax elements correctly, and it should never flag as an error, valid M
syntax (all bets are off if you use ISC extensions like COS). But it
isn't going to catch every error, though I'm hoping to improve that over
time. So if you try to abuse it, you'll be able to find
less-than-perfect results.
VPE v15.0
Authors for version 15.0
- David Wicksell
Changes for version 15.0
- Syntax Higlighting in editor and viewer (not turned on by default; go to ..PARAM to turn it on)
- Add END key support for YottaDB/GT.M on Linux
- Fix bug with routine branching support
- Fix routine size support for YottaDB/GT.M on Linux
- Add new shell parameter documentation for screen sizing
- Add enhancements to auto margin screen handling in ..PARAM
VPE v14.2
VPE v14.1
Changes for version 14.1
- Code implementing backspace/delete dichotomy in VPE parameters did not work
correctly. This is what Kevin found and fixed. - Fileman files automatically installed without any questions being asked when
you run VPE via ^XV. - Relicensing code to Apache 2.0.
- Tiny changes here and there to please XINDEX. Almost all of VPE now passes
XINDEX.
VPE v14.0
VPE V14.0
MUMPS V1 Support
This release adds a new supported M implementation to VPE, that of Mumps V1. Mumps V1 must compiled from source with the SAMTERM define set to 1. You will need to edit the mumps.h to do that (search for SAMTERM). This changes Read terminator behavior in MV1 to be consistent with what VistA expects.
Bug Fixes (and minor enhancements)
Editor
- Routine names > 8 chars print fully on top of buffer
- ESC-R now hows to how handle long tags and long routines names (> 8 char)
- ESC-R now can jump to labels, not just [label]^routine.
- Don't warn if a routine contains a long label (> 8 chars)
- ..VRR QWIK can now take a tag of the shell like ..E (e.g.
..VRR XUSRB CVC
). - ESC-G now displays globals from the editor. This is not exactly new functionality, but apparently it hasn't worked for a while now.
- Routine editing lock was not removed after routines were edited for the first level of routine editing.
Other
- VPE error trap now tells you where the error happened using $ST(-1).
- New routine creator should not have an 8 char limit for routine name.
- ..LOCKTAB QWIK implementation for GT.M
- ..DOS QWIK (zsystem) implementation for GT.M
VPE v13.2
New and Fixes in this release:
- Routine editor will clear $EC when it starts. Previously, having an active
error aborted the save, potentially leading you to lose the changes you made. - Now can have up to 1024 routine buffers open. Previously, the limit was 4.
- V13.0 introduced a bug where VPE does not remember your previous routine
name. This was due to a check on a global that was removed. This check
itself was removed and now VPE remembers the last routine you were editing. - At the first column, you can now insert a space in addition to a tab. A
space in the first column will behave the same as the tab, advancing the
cursor to the line body from the label line. Previously, only a tab was
allowed. A pleasant side effect of this is that correctly formatted M code can
be directly pasted into VPE. - ZR QWIK (ZREMOVE) now deletes routines on GT.M. Previously, it only worked
on DSM variants. - Two changes for Routine Search:
* Routine Search was prevented from running if you were 2 levels down in the
routine editor. This restriction has been removed.
* RSEARCH QWIK invokes VPE's native (and superior!) routine search rather
than the one provided by the M implementation. - E QWIK or VRR QWIK (Edit/Read Routine) when invoked with invalid routine
names (such as a routine called "&") when into an infinite loop and
overflowed the stack. This has been fixed. This has nothing to do with 13.1's
error code fixes; rather it's a GOTO gone wild in the original VPE code. - Standalone VPE now just asks for User ID only. Previously, it asked for your
DUZ as well, which didn't make any sense in a non-VISTA context.
VPE v13.1
The following was fixed over the previous version:
- Automargin outside of screen operations
- Unused routines removed (old editor and timeout screensaver routine)
- All error traps are M95 standard and use VPE code to teardown data structures
- Routine search (RS from Editor) now works on GT.M, not just DSM variants (used to rely on ZLOAD).
- QWIK arguments should not be uppercases (e.g. '..e test' edited the routine TEST, which is not appropriate)
VPE v13.0
- VPE has been renamedspaced from VEE, ZVE, and %ZVE to XVV and ZVE (Most done
by DLW; SMH did the % Routines renamespacing; SMH refactored all of the code
embedded in the %ZVEMS Globals into routines starting with XVS. All
renamespacing done via rename, mv, and sed Unix Commands.) - New system QWIK: ZINSERT called via ..ZI. Allows you to paste an entire
routine in. (Author: DLW for GT.M; Cache Support and bug fixes: SMH). - Remove install question about Manager UCI. This is installed in a user namespace now. (SMH).
- Remove warnings about Global Protection. This is installed in a user namespace now. (SMH).
- Cache is listed as a supported system when installing (SMH).
- Automatic installation of VPE if it is not already installed (SMH).
- Main Error Trap for VPE is now fixed permanently to prevent crashes (SMH).
- Like MSC Fileman, ask for DUZ or User Name rather than Access Code on first
start if VISTA is installed (SMH). - Automargin code for Cache and GT.M. Any full screen editor or viewer will
automatically take up your whole terminal screen. You are no longer limited
to 80 x 24. Previously, you could change that using your parameters. Now,
it is automatically resized for you (SMH). Automargin code was redone by SMH
from work by George Timson in a %ZIS3 posted on the Hardhats Google Group. - GT.M Save Routines is very robust now and should never fail; however, it
will always save to the first directory in $ZROUTINES even if the routine was
loaded from another directory; unlike the native "ZED" editor behavior. This
still needs to be fixed. Code taken from Kernel-GTM project. (SMH). - Routine name size is unlimited (SMH; with help from Lloyd Milligan from his
website); previously, it was limited to 8 characters. - XINDEX invocation from Routine editor is now fixed (SMH).
- VGL was blocked from Routine editor if user doesn't have DUZ(0)="@", even
though VGL can be invoked independently by the same user. This block was
removed (SMH)