EControl Ltd.
ENG   RUS  

EControl Syntax Editor SDK

Change log

01.06.2008 (v 2.50)

  • Lexer defined ranges auto-closing feature.
    Each text range may have text that may automatically close this opened text range when inserting new line. For example, to automatically close XML tags next auto-close text is defined for "tag block begin" rule of XML lexer:
    </%s0>
  • Horizontal ruler (at the top of editor). All elements of the ruler are customizable.
  • Multiple "right" margins with custom pen, hint and dragging.
  • Find in tree component (to search entries in tree view, including syntax tree)
  • Smart tags support (TecSmartTagManager component). Smart tags may be associated with text range.
  • Ability to place gutter objects on sub-lines (in word-break mode)
  • Line break gutter object (if defined it is displayed for all sub-lines in word-wrap mode)
  • Emnedded controls support. Now when using TecEmbeddedObjects text source you may insert any controls (buttons, combo boxes, list views, tree views, etc.) directly in text.
  • Aligning functions
  • Ability to insert controls in text (using TecEmbeddedObjects text source)
  • Search command/shortcut in key-mapping dialog
  • Hiperlink highlighter and spell checker supports multiple styles
  • Significantly improved parameter completion (Up-Down scroller, formatting, using grammar rules to extract list of functions).
  • Fixes in Regular expression engine to improve its quality.
  • Other fixes and minor improvements (for details see MANTIS entries).

30.11.2007 (v 2.40)

  • Redesign of all popup controls - auto-completion, templates, parameter hints, characters grid. Base class provides next features:
    - Tool hints - additional hint window, at the selected side of the main popup window. Displays plain text or formatted text (styles, images, columns).
    - Ability to add additional controls and define its proerties at design time. For example, you may add title panel or label, status bar or toolbar.
    - Common set of events and propeties.
  • Auto-completion improvements
    - Options which effects on completion list showing performance, implemented using of virtual items list box style. See updated documentation for details about performance adjusting.
    - Several predefined filtration types.
    - Several predefined sorting types.
    - Using backward reg. expressions as start condition.
    - Ability to fully customize bahavior of auto-completion.
  • Lexers improvements:
    - Line properties in block rules. Line style may be used for drawing line separators and block staples (i.e. they are now customizable).
    - IgnoreAsParent block rule attribute which specifies that ranges of this rule can not be parent ranges (for example, conditional preprocessor blocks)
    - Improved block name formatting syntax (thanks to Hans L. Werschner)
    - Ability to customize (using events)bounds of range to be collapsed and to have block staple.
  • Improved performance of syntax tree view building.
  • Gutter improvements
    - Autosizable line numbers (line numbers band should be defined).
    - Ability to define Cursor for gutter, gutter bands, gutter objects. Moving caret by mouse actions on gutter or bands.
  • MS VS folding style ( line is visible, "..." icon added at the end of line)
  • Virtual caret position. Options soVirtualCaretPos and soUnlimitedCaretPos allows moving caret to any position after end of lines.
  • Keeping search marks (option soKeepSearchMarks) enebles new commands smSearchMarkReset, smSearchMarkNext, smSearchMarkPrev. In this mode search marks (added programmatically or by Find Text dialog) are not reset when moving caret.
  • Moving replace prompt dialog above text to be replaced (AutoPosPrompt)
  • Detailed information about all changes see in updated documentation.
  • Rendering quality options: soExtractAnsiParts, soCorrectNonPrinted.
  • Localizer component (from version 2.26) is added for compatibility only.
  • Other fixes and tweaks.

04.08.2007 (v 2.35)

  • Custom formatting - ability to manually format text (font attributes, fornt and background color, hidden and readonly attributes, font size, name and character set). Formatting is applied to current selection using TSyntaxMemo.SelAttributes object (like in Rich Edit control). Formatting is not stored with text, it may be saved separately in file or any other storage, i.e. it is a text independent formatting. Formatting is applied over syntax highlighting.
    Formatting is available only when using TecEmbeddedObjects as text source. You may programmatically format text using corresponding methods of TecEmbeddedObjects:
    procedure FormatRange(StartPos, EndPos: integer; Style: TSyntaxFormat);
    procedure ClearFormatting(StartPos, EndPos: integer); overload;
    To save load formatting use methods:
    procedure SaveFormatting(Stream: TStream); overload;
    procedure LoadFormatting(Stream: TStream); overload;
    procedure SaveFormatting(const FileName: string); overload;
    procedure LoadFormatting(const FileName: string); overload;
  • Multiple monitors support.
  • Other fixes and tweaks.

17.05.2007 (v 2.32)

  • Packages for Delphi 2007
  • Improved performance. Long lines, scrolling, selection and caret movement.
  • TecSelCharPopup - popup grid with characters (dependend on selected character set) to be inserted in text.
  • Optimized using of character set. Now ANSI tokens are rendered using default charset, font is changed only for non-ANSI tokens . For example, if you have some text in "Courier New" font and only one comment is in Chinese, only this comment will be rendered with unicode font.
  • Zoom property. Allows zooming in/out text.
  • New tools linking. Now all tool components (code completion, parameter completion, templates, auto-replace, insert character) has CommandID property instead of ShortCut property. This allows managing of keystrokes in the same manner for all editor actions using keymapping, using complex keystrokes for tools execution.
  • New commands: smResetSelection, smAlignTokens, smPrint, smPrintSelection, smPrintPreview, smPageSetup, smAutoComplete, smCodeTemplate, smParameterHint, smSelCharacter, smAutoCorrectCur, smAutoCorrectAll.
  • Other fixes and tweaks.

01.04.2007 (v 2.31)

  • TecHotKey edit component, used in key mapping editor to input key combinations.
  • "Smart" paste option TSyntaxMemo.OptionsEx. When "smart" paste is ON editor gets both Unicode and Ansi content of the clipboard, converts them using selected character set and selects best text to be pasted. This allows getting correct text copied from both ANSI and Unicode applications independently on selected keyboard language.
  • New commands: smFindDialog, smFindNext, smFindPrev, smFindAll, smFindFirst, smFindLast, smSearchAgain, smFindCurrentWordNext, smFindCurrentWordPrior, smReplaceDialog, smReplaceNext, smReplacePrev, smReplaceAll, smReplaceFirst, smReplaceLast, smReplaceAgain, smCopyPasteFileEnd, smCopyPasteFileStart, smCutPasteFileEnd, smCutPasteFileStart, smCopyPasteAbove, smCopyPasteBelow.
  • Popup controls sizing managment (code templates, code completion, parameter completion). New properties: Constraints, MinMaxWidth.
  • Other fixes and tweaks.

24.03.2007 (v 2.30)

  • MBCS support in ANSI applications. It is dependent on selected character set, i.e. you may work with multibyte character sets in any system locale.
  • IME available in ANSI applications. For correct inserting result of composition you should specify appropriate character set.
  • Full redesign of TSyntKeyMapping.
    • New keyboard processing. Now each command may have any number of associated keystrokes and each keystroke may have any number of shortcuts. Keyboard processing is based on queue of key events. If you have two commands and one command has longer keystroke than second, before execution of first command second command will be executed.
      Properties of keystroke queue: TSyntaxMemo.KeyQueue.MaxInterval - maximal interval between two key down events, TSyntaxMemo.KeyQueue.MaxQueueSize - maximal number of shortcuts in one keystroke.
    • New command properties: Category, Customizable - specifies whether this command will be available at runtime for customizing.
    • New key mapping editor. In runtime it allows only change associated keystrokes, at design time it allows to specify all properties of command, create new commands, oder commands and categories, rename commands and categories, specify keystrokes
    • You may handle command using TSyntKeyMapping.OnExecuteCommand event.
  • TecEmbeddedObjects - text source with embedded images support (not finished).
  • TecPrinter.PrintSelection - allows printing any selection (normal or columnar).
  • TParamCompletion.UseParserResults - uses results of parsing for parameter completion processing.
  • Other fixes and tweaks.

19.11.2006 (v 2.27)

  • Library is devided on two packages.
  • Regular expressions:
    • New predefined classes
      \h - hexadecimal digit
      \H - non-hexadecimal digit
      \l - letter character (any language)
      \L - non-letter character (any language)
      \c - ident character (a-z, A-Z, 0-9, _)
      \C - non-ident character
      \g - latin letter (a-z, A-Z, _)
      \G - non-latin letter
      \k - european digit
      \K - non-european digit
    • Predefined classes \w, \W, \d, \D - for any language
    • New meaning of modifier R. When modifier R is turned off languages support is
      turned off, i.e: \w = \c, \W = \C, \l = \g, \L = \G, \d = \k, \D = \K
    • Fix: correct sub-expressions matching
  • Drag&drop:
    • Automatic drag&drop between TSyntaxMemo controls.
    • Dragging text via standard drag&drop engine.
    • TCustomSyntaxMemo supports IDragTarget, so it is possible to drag text from other applications. To enable this featuer you should initialize OLE (OleInitialize(nil)).
  • OLE drag&drop
    • Propetry DragTypeOLE - switch OLE/VCL drag&drop engine
    • Events OnOleDragEnter, OnOleDragOver, OnOleDrop, OnOleGiveFeedback, OnOleBeginDrag to control OLE drag&drop operations
  • TecDragDrop - simple component to handle custom OLE drag&drop
  • TecMultiReplace - new component - universal text converstions using replacing rules. Use customize dialog to specify multi-replacement rules.
  • TecLocalizer removed from library. It will be available in separate product.
  • TCustomSyntaxMemo.MultiLine property - determines whether the text can appear on single line only.
  • TCustomSyntaxMemo.Charset - chararcter set, used in UNICODE conversions (file i/o, clipboard, ...). Useful in both ANSI and UNICODE builds of the library.
  • Imrpoved autocompletion formating (new tags for column alighn: \Tr\ - right align, \Tc\ - center align, \Tl\ - left alighn) .
  • Formated hints with styles and images. Formating tags are the same as in autocomplete popup.
  • Minor tweaks and fixes

28.08.2006 (v 2.26)

  • TecMacroRecorder - records and plays command macros. Save/load macros to file/stream, macros editor dialog, may be customized at design time, allows insert call one macro to another.
    Active - enables playing and recording.
    AllowRecord - enables recording.
    (commands: smMacroRecStart, smMacroRecStop, smMacroRecCancel, smMacroPlay; actions: TecMacroRecord, TecMacroStop, TecMacroCancel, TecMacroPlay ).
  • Improved printing. New features:
    - ColorMode: print and print preview in RGB, gray scale, black-and-white.
    - Header, Footer: specifies header and footer of the page. Allows specifying alignment (left, center, right aligned strings are separated withthe TAB). Supports fields predefined (#PAGE#, #TITLE#, #DATE#, #TIME#, #DATETIME#) and custom (property Fields: TStrings) .
    - Line numbers position (TecSyntPrinter): none, left, right, left on odd pages (even - right), right on odd pages (even - left).
    - Fonts for header, footer, line numbers.
    - Updated "Page Setup" dialogs (header, footer with fields completion; fonts; color mode; line numbers position) .
  • Sorting lines (methods: SortLines, SortSelection, CanSortSelection; commands: smSortAscending, smSortDescending; actions: TecSortAscending, TecSortDescending). For columnar selection SortSelection sorts lines using selected column, otherwise whole string is used for sorting.
  • Dialog "Go to Line Number" (command: smGotoLine; action: TecGotoLine).
  • Line spacings:
    LineSpacing - spacing between lines (default = 1).
    LineSpacingBefore - spacing before paragraph (one line when word wrap is off)
    LineSpacingAfter - spacing after paragraph.
  • Unicode: Hindi language support (thanks to Hans Kalter).
  • Updated behavior of TSyntaxTreeView.GroupIndex. When it is equal to 0 all ranges are displayed (as it was) , when it is not equal to 0 only ranges with (TTagBlockCondition.GroupIndex and TSyntaxTreeView.GroupIndex <> 0) are displaed. It is more flexible type of grouping and it allows include text ranges of one rule in several groups.
  • Bug fixes and minor improvements.

31.07.2006 (v 2.25)

  • TecMemoStateStorage - component that stores runtime state (caret position, scroll position, bookmarks, markers, user ranges...) of the editor.
    Usage:
    - Saving: ecMemoStateStorage1.Assign(SyntaxMemo1)
    - Loading: SyntaxMemo1.Assign(ecMemoStateStorage1)
  • TecSingleInstance - component to manage instances of the application.
  • Unicode corrections:
    - Correct IME window positioning
    - Bi-directional langauges support
  • Drag&drop operations in TSyntaxTreeView. It allows ordering text blocks in the tree view. To enable this mode set TSyntaxTreeView.DragMode = dmAutomatic
  • TCustomSyntaxMemo.BackGround property - specifies cusom background (gradient, images)
  • Other fixes and minor improvements.

25.06.2006 (v 2.24)

  • Performance optimization
    • Using fixed fonts. This allows optimizing some internal rendering and calculation algorithms. New property TSyntaxMemo.MonoFontMode:
      • mfAuto - automaticly detects whether editor may use mono-font mode (checks styles of the editor and styles used by the rules of the linked syntactical analyzer).
      • mfFixed - always uses only fixed fonts (suppresses custom fonts). In this case editor's Font must be with fixed pitch.
      • mfVariable - as in prior versions, i.e. without mono-font optimization.
    • Background block analysis. In this mode block rules are checked in background mode after parsing all the text . It is available only if all parser rules in the lexer and all sub-lexers have not parent restrictions. In this mode editing and scrolling are faster. This mode is automated, that is it is turned on each time when possible.
      To disable background block analysis set property TSyntAnalyzer.AlwaysSyncBlockAnal to True.
    • Using char sets in regular expressions in non-unicode builds.
  • Style improvements
    • "Capitalization effect" (TSyntaxFormat.ChangeCase) - allows rendering as: "Unchanged ", "Uppercase", "Lowercase", "Initial caps".
    • Font styles, Read Only and Hidden flags are now 3-state flags, i.e. they may have 3 states: ON, OFF, UNDEFINED. It gives additional flexibility of style merging. New style property TSyntaxFormat.FormatFlags.
  • Actions and commands for comment and uncomment selected lines: TecCommentLines (smCommentLines), TecUnCommentLines (smUncommentLines). Line comment string is defined in lexer: TSyntAnalyzer.LineComment.
  • Gutter improvements
    • Gradient fill of bands. TGutterBand.Gradient: Boolean and TGutterBand.GradientRight: TColor.
    • TGutter.AutoSize - if True width of the gutter always is equal to the sum of the band widths.
  • TSyntaxMemo.DisableFolding - ignores all folding information without removing it.
  • New commands and actions: TecInSelCollapse, TecInSelExpand, TecToggleFolding; smToggleWordWrap, smToggleFolding, smInSelCollapse, smInSelExpand.
  • New properties of "Parser" rule: TTokenRule.ColumnFrom and TTokenRule.ColumnTo. They limit rule execution dependent on position in line.
  • TecFormPrinter - component to print form. Useful for those application where both form designer and syntax editor are used to share single preview and printing between code and designed form.
  • Other fixes and minor improvements.

27.02.2006 (v 2.22)

  • Correct IME support .
  • TSyntAnalyzer.DefaultStyle is obsolete. New property DefaultStyleName replaces it. Now default style is reference and is optional. If default style is not selected editor's font and background color is used as initial style.
  • Other fixes and minor improvements.

17.01.2006 (v 2.21)

  • New demo: "SQL editor" - demonstrates using text analysis results in auto-completion, using TecSpellChecker to highlight special words (tables and aliases).
  • New: improved syntax of grammar rules - using groups. For example:
    Rule
    IdentList = Ident | Ident ',' IdentList;
    may be replaced with
    IdentList = Ident (',' Ident)*;
  • Minor tweaks and fixes.

05.01.2006 (v 2.20)

  • Sync Edit: The Sync Edit feature lets you simultaneously edit identical identifiers in selected code.
    It is possible to create several sync edit regions. Sync edit regions are stable (as distinct from BDS editor) that is you may keep sync edit regions during editing text out of them.
    TCustomSyntaxMemo.SyncEditing: TSyntSyncEdit - controls sync editing.
    TSyntSyncEdit main members:
    Enabled: Boolean - enables sync edit regions creation.
    SyncRangeStyle: TSyntaxFormat - highlighting style of sync edit region.
    ActiveWordsStyle: TSyntaxFormat - highlighting of currently edited synchronized words.
    InactiveWordsStyle: TSyntaxFormat - highlighting of not currently edited synchronized words.
    function AddCurSelection: Boolean - creates sync edit region for current selection.
    TecSyncEditMode action for creating and deleting sync edit regions.
    Use TSyntaxMemo.OnCanSyncEditevent handler to accept words to be sync edited.
    Example of manipulating of sync edit regions in main demo.
  • Grammar rules: New way to specify token sequence checking used in text range rules. Grammar rules are specified in text form like Backus-Naur Form. Grammar rules are written as a list of separate rules:
    Rule = RuleName '=' Branch_list ';'
    Branch_list = Item_list | Branch_list '|' Item_list
    Item_list = Item | Item_list Item
    Item = RuleName | '"' Term '"' | ''' Term ''' | '<' TokenType '>'
    where:
    "Term" - case insensitive terminal,
    'Term' - case sensitive terminal,
    TokenType - name of token type,
    RuleName - name of grammar rule.
    There is reserved rule name "Skip", that is used to specify skipping sequence. This rule is ececuted after each item processing.
    For example of usage see Pascal lexer, rules "class declaration", "Empty class", "Interface declaration".
    TSyntAnalyzer.Gramma: TGrammaAnalyzer - gramma analysis object.
    TTagBlockCondition.GrammaRuleName: string - refernce to grammar rule. When this property specified only grammar rule test is performed to check rule (conditions is not used).
  • TParamCompletion - code parameter hint. Displays hint window with appropriate parameters for current function. Properties:
    OpenChar: ecChar - character that opens function parameters, default - '('
    CloseChar: ecChar - character that closes function, default - ')'
    Separator: ecChar - character that is used as parameters delimiter in the text, default - ','
    TerminateChar: ecChar - character that terminates search (operator delimiter), default - ';'
    DeclSeparator: Char - character that is used as parameters delimiter in the hint items, default - ';'
    Items: TStrings - list of hints for the current function, single item contains parameters declaration that are separated with the DeclSeparator.
    ParamNumber: integer - currently edited parameter.
    Automatic: Boolean - in automatic mode all text processing provided by the component, that is you should only write OnGetParams event handler to fill Items for the specified function. If Automatic is False you should manually show hint (using procedure ShowAt(pos: integer)), control caret position to set ParamNumber and to hide hint (procedure CloseUp).
  • TDBSyntaxMemo - DB version of syntax editor. New packages is added SyntEditDBxx.dpk, SyntEditDBxxc.bpk, SyntEditNetDBxx.bdsproj that contain this component.
  • Syntax Tree View decoration: Now it is possible in lexer to specify styles and image indexes for syntax tree view entries. New properties of TTagBlockCondition:
    TreeItemStyle: string - style of the tree node that corresponds to text range.
    TreeItemImage: integer - image index of the tree node that corresponds to text range.
    TreeGroupStyle: string - style of the group tree node (group node is created for ranges with specified GroupFmt property).
    TreeGroupImage: integer - image index of the group tree node.
    To test this feature see main demo. Images are loaded from the ecTreeImg.bmp, that should be placed in the same directory as ec_edit.exe.
  • TTagBlockCondition.NoEndRule - text range created and closed at a time, that is initially closed. For example, see "tag attribute" rule in HTML and XML lexer.
    TTagBlockCondition.TokenType - used only for "tag detector" rules; if this property is not equal to -1 it will change token type of the ident token. It may be useful for preparing tokens for grammar analysis.
  • Minor tweaks and fixes.

19.12.2005 (v 2.15)

  • BDS 2006 support (Delphi, C++Builder, .Net)
  • Internal re-design. Editing and rendering performance was considerably improved.
  • Correct line scrolling in word-wrap mode.
  • Fast dynamic highlighting.
  • Fast editing even above folded ranges.
  • Fast collapsed ranges processing.
  • Background hyperlink analysis.
  • Fast tree synchronization.
  • TSyntaxMemo.LineInfo[]: TLineInfo - all information about line (Hidden (r/w), State (r/w), LineCount, Heights[])
  • TSyntaxMemo.LineStateDisplay: TLineStateDisplay- group of properties to specify line state displaying.
  • TSyntaxMemo.DefaultPopup:Boolean - default popup menu (if PopupMenu is not set).
  • TSyntaxMemo.LeftopPos: TPoint - removed. New ScrollPosX, ScrollPosY, TopLine: integer properties are added to controll scrolling position (ScrollPosY- logical scrolling position).
  • Minor tweaks and fixes.

01.11.2005 (v 2.10)

  • TecSpellChecker - active spell checker. Checkes words and highlights errors.
    Style property specifies error highlighting style. You may use this component either with integrated in the library dictionaries (property Dictionary: TecDictionary) or 3-d party libraries (using OnCheckWord or OnCheckText event handlers).
    Also you may use this component for highlighting any text regions with a specified style using AddHltRange method.
  • TecDictionary - manages of dictionaries (word collections). You may load any text file as a dictionary, it will be separated into its words. To optimize loading it is recommended to save dictionaries as sorted word list.
  • THyperlinkHighlighter - highlights hyperlinks with the specified Style. When user clicks hyperlink with pressed Control it executes corresponding shell command. Hyperlinks templates defined by the Rules collection, so you may extend them.
    Also you may use this component for highlighting any text regions atomatically detected using regular expr. templates.
  • New. soBreakOnRightMargin editor's option - word break on right margin.
  • New. TTagBlockCondition.SelfClose attribute - specifies that block rule should close prior text range of the same rule,for example, sections in INI files, case statements in switch operartor in C.
  • TTemplatePopup and TAutoCompletePopup now UNICODE compatible. TSyntaxMemo.Lines now is saved in form resource in UTF8 coding.
  • Internal optimization.
  • Minor tweaks.

21.09.2005 (v 2.04)

  • New. TSyntaxFormat.ReadOnly - now you may make any text region to be read only.
  • New. TCustomSyntaxMemo: InTextImages and InTextImageList - images in the text. In-text image (TInTextImage) has properties: ImageIndex, Position and Hint. They may be defined at design time (for example when you use TSyntaxMemo as List box or Tree View).
  • New. TSyntAnalyzer.RestartFromLineStart - restarts tokenizing from line start, now rule ".*" will be correctly handled.
  • New. TSyntAnalyzer.ParseEndOfLine - do not ignore break line characters when skipping spaces.
  • New. TPropsManager now handles TStrings properties (storing).
  • New. TTextFinder(TSyntFindDialog, ...).OnFind event - allows to control search process.
  • New. TSyntFindDialog.History, TSyntReplaceDialog.ReplHistory.
  • New. TClientSyntAnalyzer. SubLexerRangeCount, SubLexerRanges[] - to access sub-lexer regions.
  • Fix. Bugs in printing sub-system.
  • Fix. Bug in regular expressions (incorrect compiling {n.m} repeaters)

6.09.2005 (v 2.03)

  • Updated EControl Syntax Editor Application. Now it has multi-document interface.
  • Minor tweaks and bug fixing.

28.07.2005 (v 2.02)

  • New. TSyntaxMemo.CollapseStyle - specifies how to display collapsed ranges: line separator (like in previous versions) or text icon (like in Delphi 2005 or MS Visual Studio).
  • New. TSyntaxMemo.DefaultStyles - default styles: selection mark, search results mark, style of the current line, style of the collapsed text icon.
  • New. TSyntaxMemo.FlatScrollBars - specifies flat scroll bar appearance.
  • New. TSyntaxMemo.CollapseBreakColor - color of the line separator of the collapsed regions.
  • New. TTagBlockCondition.CollapseFmt - formated string that is used as collapsed text icon.
  • New. TSyntFindDialog.SelectResult.
  • New. smLeftUp, smSelLeftUp, smColLeftUp commands: move caret left, at line start move caret at the end of previous line.
  • New. Ansi storage formats: tcAnsi_CR, tcAnsi_NL, tcAnsi_CR_NL.
  • Fix. Some routines in ecStrUtils.pas to more correct support UNICODE.
  • Fix. System resource bug in Delphi 2005 for .Net.
  • Fix. Minor tweaks.

03.07.2005 (v 2.01)

  • New. TGutterObject.OnClick event.
  • New. TCustomSyntaxMemo: ResetLineHeights, InvalidateTextRange, TokenAtPos methods.
  • New. TCustomSyntaxMemo: OnMouseEnter, OnMouseLeave events, MouseEnter, MouseLeave protected methods.
  • New. Demo "MouseHighlighting" that demonstrates how to highlight token over mouse and process clicking on token.
  • Fix. Editing problem (when big block staples is on screen) is fixed.
  • Fix. Code templates editing in "Syntax Lexer" dialog.
  • Fix. In "Syntax Lexer" dialog token types selector was cleared when adding new condition.
  • Fix. No selection marks when there was no lexer assigned to the editor.

20.06.2005 (version 2.00)

    New improvements:
  • Advanced code templates syntax.
  • Border styles (TSyntaxFormat). See "Styles" topic.
  • TSyntaxManager.Modified.
  • In TAutoCompletePopup: SortType, OnBeforeComplete, OnAfterComplete.
  • TCustomSyntaxMemo.OnTextChanged
  • TecLocalizer.Charset.
  • Main demo: loads localizing from *.lng files.
  • German localization.
  • TGutter.PopupMenu, TGutterObject.PopupMenu
  • TTokenRule.OnMouseClick for mouse handling on the tokens.
  • soSmartCaret option of the syntax memo.
  • TCustomSyntaxMemo: GetStyleList method and OnGetStyleEntry event. Using OnGetStyleEntry event handler you may perform any custom highlighting (including error highlighting).
  • TSyntaxTreeView.GroupIndex, TTagBlockCondition.GroupIndex. Using this properties you may organize several tree views for a single text.
  • TecSyntPrinter.OnForceNewPage to perform custom page breaking.
  • New methods in TClientSyntAnalyzer: GetTokenStyle, GetDynoStyles, GetBlockStyles, GetSubLexStyles
  • Removed methods from TClientSyntAnalyzer: GetDynoStyle, GetBlockStyle, GetSubLexStyle
  • IecSyntMemoPlugIn.CancelMode removed.
    Fixes:
  • No disabling buttons in "Styles Collection" dialog after deleting all styles.
  • Auto-replace now performed when several non-letter characters inputed (for example, line feed).
  • You can specify Expressions in "Syntax Lexer" dialog for sub-lexer rules even when "Start at the begin of text" or "End at the end of text" flags are checked.
  • TCustomSyntaxMemo.ReplaceText
  • TCustomSyntaxMemo.WordAtPos
  • Search/Replace dialogs (Origine <=> Scope)
  • TCustomSyntaxMemo.ReplaceChar, bug in overwrite mode.
  • Optimized TecLocalizer. Now with list preprocessing, that is more time efficient.
  • OnGutterClick, XY now client coordinates of the mouse (not relative)
  • TSyntaxTreeView after block selection place caret at the block start.

19.05.2005

Help file is updated. (ec_syntedit_help.zip)
It is more complete, but without
  1. TCustomSyntaxMemo methods
  2. ecSyntMemo objects (except TCustomSyntaxMemo)
  3. ecStrUtils
  4. ecActns (actions)

20.04.2005 (version 1.99)

  • TecLocalizer component that allows to localize all library dialogs. It also can be used for any other resources. See main demo for example of using this component
    Now I translate all dialog into Russian. Please, help to localize into other languages. To do this create a copy of english localizers and translate them.
  • TSyntaxMemo.LineSpacing - interval between lines.
  • UndoList moved in TSyntTextSource, so undo list now is shared between connected editors.
  • TSyntTextSource.SyntaxAnalyzer. You can specify single analyzer object for all editors connected to SyntTextSource. It will be more memory and time safe.
  • Fixes in TUserStylesCombo.
  • Protected virtual method TSyntaxMemo.DrawStaple.
  • Minor tweaks.

4.04.2005 (version 1.98)

  • UNICODE support. Any application can be compiled in ANSI or UNICODE version. To compile UNICODE version you must specify EC_UNICODE define in "Propject Options" dialog (page: "Directies/Conditionals", input: "Conditional defines").
    It is not necessary to compile packages with UNICODE support. We will keep recourse (dfm) compatibility between ANSI and UNICODE vesrions.
  • Load/save unicode text (Unicode, Unicode Big Endian, UTF-8) (in both ANSI and UNICODE versions).
    To save text in particular format you have to set TSyntMemoStrings.TextCoding property before saving text.
  • Property TCustomSyntaxMemo.Lines now of TSyntMemoStrings type, so it is not required to cast to TSyntMemoStrings when you want get direct access to Text. (Direct access to FText is a feature that allows easily to work even with very big text).
  • TSyntAutoReplace.CaseConsistancy: Boolean property. This mode only work with IgnoreCase = True and with items without replace part. For example:
    you want auto replace "beginupdate" => "BeginUpdate". You have to do following:
    1. Add Item "BeginUpdate" (without replace part);
    2. Set CaseConsistancy = True;
    3. Set IgnoreCase = True;
  • Minor tweaks.

31.03.2005 (version 1.95)

  1. TSyntAutoReplace - auto replace plug-in. Auto correction of user input.
    Auto replace items are stored as TStrings. Use MaintainCase and IgnoreCase to specify behaviour of auto replace.
  2. TPropsManager - share settings between several objects and save/load to/from ini/registry. This component is independent from library.
    Use component editor "Properties List Editor" with highlighting and auto-completion.
    This editor also can be used as an example of using dynamic auto-completion.
    For sharing properties:
    • Sepcify properties list;
    • Specify template object;
    • Use Add/Remove methods to set list of managed objects;
    • Use UpdateAll method to copy properties from template to managed objects;
    For load/save operations:
    • Sepcify properties list (Properties: TStrings);
    • Specify UseRegistry property;
    • Specify RootKey (registry) or IniFileName (ini files). If IniFileName is empty it will be get from Application exe name;
    • Specify IniSection (for registry it will be key name);
    • Use Add/Remove methods to set list of managed objects;
    • Use SaveProps/LoadProps methods to save/load properties values;
  3. TUserStylesCombo - combo box for selecting user style when formatting text. When you select style from the list current user range is updated or new user range created with the specified style.
  4. Incremental search - like in Delphi IDE.
  5. Lexers menu management is implemented in TSyntaxManager
    • LexersMenu: TMenuItem - menu item where lexes items will be placed.
    • MenuPlainText: string - "Plane text" menu cation. If it is empty there will not be "Plane text" menu item.
    • CurrentLexer: TSyntAnalyzer - currently selected lexer.
    • OnLexerChanged: TNotifyEvent - occurs when lexer menu item is clicked. You must change lexer for current memo.
  6. Optimized clearing procedure of syntax analysis component. Now you can easy edit 5000 kb text as well as 50 Kb.
  7. New demo. In "MDI demo" you can find how to use Properties manager.
  8. Update actions. Almost all actions now have SyntMemo property. If this property is set action will be fired only for this memo even without focus otherwise it will be fired for the current Target.
    New actions:
    • TecIncrementalSearch
    • TecPageSetupAction
    • TecToggleNonPrinted
    • TecToggleWordWrap
    • TecToggleSyntTreeSync
    • TecCustomizeAutoReplace

21.03.2005 (version 1.91)

    New
  1. Print, Bookmark, Customize, Export actions. Thanks to Jens Fudickar.
  2. Public properties LineSelect, ColumnSelect replace by SelectMode: TSyntSelectMode property.
  3. soGreedySelect option of Memo. If this option is set selection will contain extra column/line during column/line selection modes. soKeepSelMode - selection enabled for caret movement commands (like in BRIEF).
  4. ctDisplayDesc, ctRightDesc options of TTemplatePopup.
  5. TTemplatePopup.ExternSource: TSyntAnalyzer property can be used to specify external templates.
  6. mpHideCollapsed print option. When it is set collapsed lines will not be printed.
  7. "Page Setup" dialog.
  8. "Print Preview" form moved to the library.
    Fixes
  1. TAutoCompletePopup.StartString now can be set to empty string.
  2. TPopupControl. PageUp, PageDown, Home, End keys are directed to popup.
  3. Close up popup controls on CM_CANCELMODE.
  4. Bug in scroll range when soFixedLineHeights option is set.
  5. Fixed AV when Ctrl + Mouse click in SyntaxMemo when SyntAnalyzer is not assigned .
  6. Last letter in token/string cutting (when using some fonts or italic style) is corrected. This problem is present even in Delphi 2005 editor.
  7. After call SetSelection next Shift+Arrow extends selection.

15.03.2005 (version 1.90)

  1. New TAutoCompletePopup component. Improved auto completion with starting timer, using custom styles and images for rendering list items. You can assign several code completion components to a single editor. See "demos\AutoComplete" demo.
  2. New TTemplatePopup. Improved Code templates. Now you can combine lexer and application defined templte lists. It is possible to use multiple code template with different key strokes.
  3. New TecSyntPrinter. Output to printer with syntax highlighting.
  4. New TecSyntPreview. Print preview control.
  5. Word wrap.
  6. Support for EM_XXX messages. Now it is possible to use Addictive spellchecker with TSyntaxMemo.
  7. Minor tweaks.

2.03.2005 (version 1.82)

  1. New Block Staples - visual element that is drawn at the left side of the text range.
    To make text range with staple you can set TTagBlockCondition.DrawStaple property to True. To adjust staple parames use properties StaplePen: TPen and StapleOffset: integer of TCustomSyntaxMemo.
    User will able to drag staples using Mouse + Control. Drag staples will cause text range indent/unindent.
  2. New TRTFSyntExport, THTMLSyntExport components. Now RTF export more fast, without using TRichEdit and with correct background color export.
  3. New. Animation for text position pointing. It is used when user jumps to marker or to bookmark. To manage animation use TCustomSyntaxMemo.Animation: TSyntAnimation property.
    You can use animation for custom purpose (using TCustomSyntaxMemo.Animation.Animate method).
  4. New options of TCustomSyntaxMemo:
    1. soHideCursorOnType
      Hides cursor when user type text and cursor within client area.
    2. soScrollLastLine
      When it is true you may scroll to last line of text, otherwise you can scroll to last page. When this ption is off and total text height less then client height vertical scroll bar will be hidden.
  5. Hidden style is improved. If line contains only text with hidden style it will be hidden.
  6. Fix. Bug with TSyntaxManage and TSyntAnalyzer at design time (Access violation) is corrected.
  7. Fix. Now when lines count more 32767 scroll works correctly.
  8. Fix. TCustomSyntaxMemo.Clear and TCustomSyntaxMemo.Lines.Clear works correctly.

21.02.2005 (version 1.80)

  1. User Ranges. Custom formatting, collapsing, ...
    User ranges are intended to allow custom formatting over syntax highlighting. They may be used without Syntax Analyzer.
    User range is a text range that can have style, collapsing capability, top and bottom line separator.
    You can create user ranges in design time using TCustomSyntaxMemo.UserRanges property (collecion)
    or visually in the property editor for TCustomSyntaxMemo.Lines or in the component editor of TSyntaxMemo ("Edit text..." item in the popup menu).
    This editor of text content allows text and user ranges editing.
    User range looks for the Style object in TSyntStyles.Styles and TSyntAnalzer.Formats linked to TCustomSyntaxMemo.
    New TSyntStyles component is a simple style collection holder. It is derived from TLoadableComponent to provide streaming capability. TSyntStyles component can be linked to TCustomSyntaxMemo.UserStyles. Using user ranges and gutter objects you can create original controls (see new Demos).
  2. New options of TSyntaxMemo
    1. soFloatMarkers.
      If it is set markers are linked to text, so they will move with text during editing. Otherwise they are linked to caret position, and stay unchanged during editing. Also markes save scroll position.
    2. soGroupRedo.
      If it is set Redo will involve group of changes.
    3. soUndoAfterSave.
      Stay undo buffer unchanged after save with SaveToFile method.
    4. soDisableSelection.
      Disables any selection.
    5. soAlwaysShowCaret.
      Shows caret in read only mode.
    6. soDrawCurLineFocus.
      Draws focus rectangle around current line when editor have focus.
  3. Now no limits on Bookmarks. Bookmarks are objects derived from TCustomGutterObject. To set bookmark properties (image, hint, position in gutter, line highlighting) use OnSetBookmark event.
  4. New demos.
  5. Minor tweaks and bug fixes.

14.02.2005 (version 1.72)

  1. Search improvement:
    1. Search result are shown with the "Serach match" style that can be specified in Lexer.
    2. Search routines are moved to ecSyntDlg
    3. Search all (show all matches)
    4. SearchAgain, FindNext, FindPrior, FindAll, FindFirst, FindLast methods of TSyntFindDialog can be used for search operations as well as for replace operations.
    5. "Search All" button in search dialog.
    6. "Replace All" button in replace dialog.
    7. "Replace with template". Replace string will be constructed from template. In template you can use Escape charecters (\n \t \r \xA4, \x{A}) and sub-expression strings (\0 \1 \2 ...) like in Regular Expressions. \0 - insert in replace string hole found match, \1 - insert first sub-expression match and so on.
    8. Actions: TecSearchXXX and TecReplaceXXX. When using actions there is no need to set dialog's Control proprty.
  2. Stack-based markers (like in Coderush)
    Markers are stack-based. This means that markers are collected in the reverse order that they were dropped, allowing you to eventually return to the place where you first dropped a marker in the file.
    You can use stack-based markers to work in two places in a file at once (SwapMarker).
    1. TCustomSyntaxMemo methods: DropMarker, CollectMarker, SwapMarker
    2. Commands: smDropMarker, smCollectMarker, smSwapMarker
  3. TSyntaxFormat.Hidden property!
    Cool feature that allows to hide an text, for example, you can hide HTML tags and stay only text, or you can hide all comments and so on.
  4. TSyntAnalyzer.CurentLine style now reference, so it can be customizable in "Syntax Highlighting" dialog
  5. New/updated events:
    1. TCustomSyntaxMemo.OnDrawToken - occurs after painting any text part.
    2. TCustomSyntaxMemo.OnBeforeLineDraw - occurs before painting line.
    3. TCustomSyntaxMemo.OnAfterLineDraw - occurs after painting line.
    4. TCustomSyntaxMemo.OnGutterClick now contains XY: TPoint parameter (relative to gutter rect for line)
    5. TSyntAnalyzer.OnGetToken removed
    6. TTokenRule.OnMatchToken may be used for custom parsing.
    7. TTagBlockCondition.OnBlockCheck may be used for custom block rule checking.
  6. Scroll commands: smScrollPageUp, smScrollPageDown, smScrollPageLeft, smScrollPageRight, smScrollAbsUp, smScrollAbsDown, smScrollAbsLeft, smScrollAbsRight
  7. TCustomSyntaxMemo.ConvertTabs(AStart, AEnd: integer)
    Converts Tab characters in Text to spaces in compliance with Tab positions defined in TabList. This method is call in PasteFromClipboard when TabMode <> tmTabChar.
  8. Minor tweaks and bug fixes.

4.02.2005 (version 1.70)

  • .Net support
  • EControl Regular Expression v 1.0 library (with .Net support) is included.
  • Allows full syntax refresh until specified text size.
  • Minor tweaks.

28.01.2005 (version 1.65)

  • Fix. Some incompatibility with Delphi5 and C++Builder5 is corrected.

25.01.2005 (version 1.65)

  • LexLib now contains more than 30 Lexers.
  • New TSubAnalyzerRule. These rules allow combine several lexers. For example, see C++Builder project and "HTML with scripts" lexers.
  • smCollapseSelection command allows collapse selection.
  • TSyntaxMemo.CollapseLevel specifies Block levels that must be collapsed when "Collapse All" command is selected.
  • smCollapse (collapse Range at Cursor) now collapse nearest Range.
  • Line selection mode (to turn use keyboard or Alt+Ctrl+Mouse)
  • Default Token Styles removed. Now any style must be referenced by rules.
  • TTokenType, TTokenTypes have bean removed. TSyntAnalyzer.TokenTypeNames represents the token types. Now token types customizable. You can specify up to 32 token types.
  • TSyntAnalyzer.BackGround, Font, VertAlignment, CurLineColor have been replaced with DefaultStyle and CurLineStyle.
  • Safe loading (allows to ignore reading errors).
  • Import Styles\Rules command in "Lexer Properties" dialog.
  • Gutter.DoubleBuffered property to remove flicker effects in gutter.
  • smLastChar command (move to the last non space char)
  • Demo have updated (recent files menu, save form placement, save key mapping).
  • New. Command actions.
  • "Syntax Lexer" is now resizable, thanks to Rouslan Sytnik.
  • Divide packages on design and runtime (SyntEditX, SyntEditDclX).
  • Extend command set (smFullCollapse, ...)
  • New option soCallapseEmptyLines (collapse empty lines at the end of block), soAutoSelect (auto select all when get focus)
  • Rendering optimization.
  • Minor tweaks.

12.01.2005 (version 1.61)

  • New tmSmartTab for TSyntaxMemo.TabMode.
  • New TSyntTreeView.AutoSynchronize to synchronize selected item with editor caret position.
  • New TSyntCollectionItem.Enabled, so all styles, token rules, block rules may be disabled without removing.
  • Apply button in "Syntax Lexer" dialog.
  • Now TSyntaxMemo is derived from TCustomControl (I ready it for CLX).
  • Bug fixes.

11.01.2005 (version 1.6)

  • New. TSyntKeyMapping component holds key bindings for editor commands. It is fully customizable at design time. You can create any number of key mappings. To assign key mapping to the editor use TSyntaxMemo.KeyMapping property.
  • Most of boolean properties of TSyntaxMemo were grouped in Options property to ease adjusting of the editor.
  • More accurate style merging.
  • Fix. Column selection now more accurate.
  • Extended editor command set. To see available commands open "Key mapping" dialog.
  • New editor options: soHideSelection, soHideDynamic, soDragText.
  • Collapse range line like in Delphi 2005.
  • New TSyntAnalyzer.SkipSpaces property allows create parser rules for spaces, line breaks.
  • New TTagBlockCondition.CancelNextRules property allows to avoid problem with ranges which end pattern is identical to start one.
  • New TRuleCollectionItem.NotParent property exntends abilities of parent text range checking.
  • New soCallapseEmptyLines options to collapse terminal empty lines of text ranges.
  • Lexer.PL/SQL was very improved, thanks to Jens Fudickar.
  • ...

24.12.2004 (version 1.5)

  • New. Active highlighting depended on caret position. Highlights valid blocks (for example, current procedure, brackets, "begin" .. "end" blocks ...). For customizing active highlighting use following properties of TTagBlockCondition:
    DynHighlight - Type of highlighting (bounds or content of the block);
    HighlightPos - Relative caret position to highlight;
    DynSelectMin - Select nearest block to prevent multiple nested blocks highlighting.
  • New. Hint subsystem. Now hints available for text tokens, expanding button, gutter objects, vertical scroll.
    You can customize hint subsystem via TSyntaxMemo.HintProps property. To perform token hints (for example, hint for variable or type name) you must use OnGetTokenHint event.
  • New. Gutter with multiple bands. Guter objects (markers, images) are now customizable at design time. Line highlighting may be associated with the guter object (like breakpoint or current execution point). Gutter object can have hint and may be linked to the particular band.
    Gutter object can be repeated any time, use event TGutterObject.OnCheckLine event.
    New OnGutterClick event.
  • New. Text auto completion with style like Borland's IDE. You can use only single method StartAutoComplete(Names: TStrings). To define moment when call this method use OnInsertChar event.
  • Now all non printed chars are displayed. To customize it use TSyntaxMemo.NonPrinted property.
  • More properties available for line numbers. Look at the TSyntaxMemo.LineNumbers property.
  • New. You may specify multiple tab posiions like in Borland's IDE via TSyntaxMemo.TabList property.
  • ...

14.12.2004 (version 1.3)

  • Delphi 2005 support.
  • New. TSyntTextSource component that allows to share single text between several Syntax Editors.
  • New. HTML export.
  • New. Now support multiple gutter images and line numbers under images.
  • New. TGutterImageInfo object for control of gutter images. You can assign line highlighting with gutter images (for example, like a break point or current execution line).
  • Current line highlight.
  • Optimized rendering.
  • Idle syntax tree update.
  • New properties:
    TSyntaxMemo.TextSource - link to external text source.
    TSyntaxMemo.BackNumColor - Color of line number if it is under images. If equal clNone => no line number.
    TSyntAnalyzer. Font, Background, VertAlighnment - represents default style. Now TSyntaxMemo.Color - is a color non editing surface and TSyntaxMemo.Font - font if there is no syntax analyzer assigned.
    TSyntAnalyzer.CurLineColor - current line (under caret) background. If equal clNone => no current line highlighting.

8.12.2004 (version 1.2)

  • Critical bug that occurs during editing (exception "list index out of bounds") fixed.
  • Property TSyntaxMemo.CopyAsRTF allows switch mode of coping to clipboard.
  • RTF copy now works with rectangle selection.

6.12.2004 (version 1.2)

  • All units now starts with ec prefix.
  • TTagBlockCondition.Conditions renamed as TTagBlockCondition.ConditionList and custom streaming for TTagBlockCondition has been removed (fix).
  • TLoadableComponent - new base class for TSyntAnalyzer and TSyntaxManager.
  • TSyntaxManager.LastFile replaced with the TLoadableComponent.FileName.

22.11.2004 (version 1.15)

  • ColCombo have been renamed as ecColCombo to escape name conflict with 3d-party components. This module only used in Syntax Editor for VCL v.5 to provide backward compatibility.
  • TSingleTagCondition.CondType = tcMask now works with regular expression to remove using of mask unit (for compatibility with Delphi 6 personal).
  • New method. TSyntaxMemo.ShiftSelection that performs selection block didling (with undo).
  • New method. TSyntaxMemo.RemoveTrailingBlanks removes all trailing blanks in the text (without undo).
  • New property. TSyntaxMemo.KeepCaretInText restricts caret to move out of text.
  • Fix. When Readonly = True, ClearSelection does nothing.

18.11.2004 (version 1.14)

  • TTagBlockCondition.RefToCondEnd property allows change default reference index.
  • TSyntaxTreeView.OnCreateTreeNode event allows customize tree view representation.
  • tcSkip added to TTagConditionType.
  • Some bug fixes.

17.11.2004 (version 1.12)

  • New TRuleCollectionItem.StrictParent property that improves parent block testing.
  • TTagBlockCondition.NameFmt property allows to customize caption of tree nodes in TSyntaxTreeView.
  • TTagBlockCondition.GroupFmt property allows to create custom groups in TSyntaxTreeView.
  • TTagBlockCondition.BlockEnd property are now appropriate for "Range end" rules as reference to the range start rule.
  • New IDL lexer was added.
  • Pascal lexer have been improved.
  • HTML, XML lexer have been adapted tree view exploring.
  • Other lexer also have beed modified.

15.11.2004 (version 1.10)

  • Idle analysis of whole text.
  • TSyntaxTreeView was added to provide easy navigation and text structure view!.
  • To support tree view, property TTagBlockCondition.DisplayInTree was added.
  • Updated find and replace dialogs. Replace dialog now supports regular expressions.
  • Some other code updates.

10.11.2004 (version 1.01)

  • Properties of TCodeTemplate moved to published section (fixed), so they will be saved into file.
  • Inserting code template operation now like Borland IDE (with popup listbox)
  • For working with popup list new methods DropDown, CloseUp and new events OnSetupPopup, OnAcceptPopup were added.
  • LexLib.Pascal. Code templates from Borland IDE were added.
Copyright © EControl Ltd., 2004 - 2009