LMD 2009 - History LMD IDE-Tools
This documents contains history logs for LMD IDE-Tools 2.0 and corresponding standalone packs.
First official release: 23-September-2008
Major version numbers are:
LMD IDE-Tools 2.0, LMD DesignPack 5.0, LMD ScriptPack 5.0, LMD SyntaxEdit 2.0
[+] Feature added
[*] Feature changed
[-] Bug fixed
[+] New PascalScript Language support added. Unlike the previously MS ActiveScripting based languages this is a 100% native VCL implementation without need of external dlls. The PascalScript engine includes an optimizing byte code compiler and very fast interpreter.
The PascalScript language is a dynamic Variant based script language that supports most of the Delphi Pascal expressions and statements like
- procedure/function declarations
- const/var/out parameters
- global/local variables and constants.
- Extended support of exception handling, e.g. raise, try-except and try-finally statements; real Delphi exceptions are raised internally that allow to test an exception class in handler, e.g. on E: EZeroDivide do.
- The PascalScript CodeObject engine implements a secret interface (in addition to IDispatch) that allows very fast interoperations between connected script controls. Besides that execption processing can be made transparent between connected script controls.
- Native script operators such as 'is', 'in', '@' and set constructors, e.g. [akLeft,akTop] allow to work with imported Delphi objects, instead of provided to ActiveX scripts special functions (e.g. SetMake, SetEmpty, ClassIs, EventMake, ect.). Like for the ActiveScripting based languages import units of your Pascal units can be created. Import units for the VCL are shipped with each copy of ScriptPack.
[+] New three step initialization of ScriptPack Control. New Prepare, Open and Close methods and a State property was added. In addition the new 'Prepared' intermediate state was introduced. In this state all source code is already parsed, but no global code is executed yet (CodeObject is already acessible in this state). This new feature allows circular dependencies between script controls even in case when global code is used (hence handling several scripts at the same time is simplified enormously). In simple cases a call to Prepare method can be ommitted. Finally the ACloseOnRuntimeError parameter was added to the Open method to allow leaving script control opened in the case that runtime errors occured during global code execution.
[+] New exception handling replaces Last ScriptError concept. Script control includes now the encoded source (reference to script control), error line and position information in exception messages (e.g. in string form). The LMDDecodeErrorMessageInfo procedure allows to decode this information for advanced applications.
[+] New optimized Delphi memory manager proxy allows to detect finalized object destructions. E.g. all subsequent access to IDispatch object wrapper will report 'Object has been destroyed' exceptions instead of unsafe Access Violations. This feauture is especially used by working with exceptions in PascalScript, because exception objects are automatically destroyed by the interpreter.
[+] New prepared expressions/statements feature was added to optimize Eval and ExecuteStatement methods. If the same expression/statement need to be executed many times then it is more efficient to Prepare it first and then use Eval and ExecuteStatement overloadeds methods that take prepared objects as parameters. Note: Most speed gain will be seen in native PascalScript implementation, because all other ActiveX script implementations do not support this feature internally.
[+] New Create constructor and Copy method are implicitly generated in wrappers for Delphi record types to allow creating and copying records more naturally.
[-] Because of the new superior integrated exception handling the last script error functionality of previous versions was completely removed from ScriptPack.
LMD SyntaxEdit 2.X
Release 2.08 (XX-June-2009)
[-] Bugfix in Addict support code (some words missed on spellcheck)
[-] Bugfix in Addict support code (backward selection have not checked)
[+-] Minor improvement in html scheme
[+] vsPreciseScrollBar option added to ViewSettings. This option is introduced for WrapMode = wmWrapToWindow or wmWrapToRuler. With this option, vertical scrollbar is more precise on wrapped text, but, editor a bit slower.
Release 2.07 (22-Apr-2009)
[+-] Minor improvement in header template dialog
[-] Redundant assert removed from TLMDPrinter.Create
[-] Minor search/replace bugfix
[-] Minor bugfix for BCB2009 linker bug (TLMDEditViewPrintTask.SetPrinter interferes with some macro)
[-] Bug fixed with text painting (underscores disappear on some fonts, when they are in bold)
Release 2.06 (31-Mar-2009)
[+-] Removed .Net - specific code.
[+-] Performance improvements for text painting (lower CPU usage).
[+] ReadOnly property for TLMDEditView added.
[+] closeInnerSchemes attribute implemented for RegexBlock node in syntax scheme. Useful for better handling <script> subschemes in HTML. See HTML scheme in Megademo for example.
Release 2.05 (13-Feb-2009)
[+] Incremental search feature. See sedIncrementalSearchStart command in the help. Shortcut: Ctrl+E
[+] Line select with click on line numbers bar
[-] Bugfix for GetLineAttributes
[-] Minor bugfixes: fixed code GetLineAttributes event, fixed undo issue with Addict4 auto-replace, assert violation in ScrollToPos.
Release 2.04 (22-Jan-2009)
[+] Auto-completion API added. Completion supported: based on document text, or custom completion, based on events.
See TLMDEditView.CompletionSettings, OnFillCompletionList, OnCompletionReplace, OnCompletionCustomDraw, OnCompletionMeasureItem properties/events.
[+] Easy text highlight API added: HighlightSettings, Add/Remove Highlight.
Useful to highlight some errors or some search results.
See TLMDEditView.HighlightSettings property, and TLMDEditView.AddHighlight, RemoveHighlight, ClearHighlight methods.
[+] UTF8 text auto-detect improved: now it can detect UTF8 without BOM
[+-] TLMDEditView working with Addict4 tested
[+] Function for search/replace arguments synchronization between 2 and more Views added: TLMDEditView.AssignSearchReplaceArgs.
It fixes this issue: Annoying search issue with two edits
[-] Bug fixed: BTS #680
[-] Bug fixed: BTS #674
[-] Bug fixed: Replace operation loops/freezes
[-] Bug fixed: Possible PHP parsing/scheme problem with double single-quotes
[-] Bug fixed: Assertion failure
Release 2.03 (09-Dec-2008)
Release 2.02 (17-Nov-2008)
[+] Variable width fonts supported
[+] Significant performance improvements for big files, with long lines
[+] Property MaxLineLengthToParse added to TLMDEditDocument. It helps to prevent parsing too long lines.
[-] Bug fixed: http://lmd.de/newsgroups/newsgroups.php?art_group=lmd.public.vcl.idetools&article_id=541
[-] Bug fixed: when "print selected area only" option is selected in print dialog, entire text printed
[+-] VisibleCountScroll property changed to GetVisibleCountScroll method
[+] MaxHorizScroll property added to TLMDCustomEditView
[+-] UseLettersToShow property removed from TLMDSpecialChars
[-] Bugfix for ANSI mode (AV on View creation)