Lazarus

Announcements => Third party => Topic started by: AlexTP on July 21, 2015, 11:01:31 am

Title: ATSynEdit
Post by: AlexTP on July 21, 2015, 11:01:31 am
No problems were found in comp, and things were added:

- good documentation http://wiki.freepascal.org/ATSynEdit
- key combos (e.g. you can assign to action a combo: [Alt+K, Alt+K, Alt+B] )
- Finder class, it's capable if finding of text and regex
(see doc wiki, part "How to find/replace")
- demo_editor has Find/Replace dialog


https://github.com/Alexey-T/ATSynEdit

Title: Re: ATSynEdit 0.9
Post by: AlexTP on September 04, 2015, 02:11:12 am
Added-
API for auto-complete list
Example of this API usage-- CSS auto-comp. (uses SynWrite data file for css)

http://wiki.freepascal.org/ATSynEdit
Title: Re: ATSynEdit 0.9
Post by: AlexTP on September 06, 2015, 01:43:05 pm
Added full working code which is like Synwrite:
- CSS autocompletion as func
- HTML autocompletion as func

see wiki.
Title: Re: ATSynEdit
Post by: AlexTP on February 22, 2016, 10:24:17 am
Some things added in last months-

- selection hiliting of tokens, doesn't loose font styles (if token was italic, selected token is italic)
- Attribs object, allows to apply color ranges (e.g. hilite brackets)
- URL hiliting
Title: Re: ATSynEdit
Post by: AlexTP on July 21, 2016, 01:48:54 am
Now done work to support RETINA on Mac, i was shocked that Synedit (from Martin) supported Retina already, while my code did not. I found out that I need to paint directly to Canvas. Only then Retina image is ok

Now added DoubleBuffered for this and now ok.. it is False for mac , and can be False for QT (True for QT also good)
Title: Re: ATSynEdit
Post by: AlexTP on April 18, 2018, 07:31:36 am
Last month changes:

Quote
2018.04.18
+ add: event OnClickLink
+ add: OptMouseClickOpensURL
+ add: OptKeyTabIndentsVerticalBlock (default false, was true)

2018.04.13
+ add: global options for Unicode full-width chars, unit ATSynEdit_CharSizer

2018.04.08
+ add: used Hi-dpi resource icons (for foldbar context menu, for mouse middle click), by FTurtle

2018.04.07
+ add: IsCharWord() func uses UnicodeData now, works for all international letters
Title: Re: ATSynEdit
Post by: AlexTP on May 04, 2018, 03:26:59 pm
Update
Implemented tooltip over folded [...] marks.
Added OptFoldTooltipVisible.
Screenshot shows it.
Title: Re: ATSynEdit
Post by: AlexTP on May 07, 2018, 12:03:40 am
Update
Bookmarks have new prop: DeleteOnDelLine. Default is false: don't delete bookmark when its line is deleted.
Made for "breakpoints".
Title: Re: ATSynEdit
Post by: AlexTP on May 10, 2018, 11:18:53 am
Update

Added props FontItalic, FontBold, FontBoldItalic - they are used for font styles in syntax hilited text. If they are empty- not used.
Inspired by Atom.
Title: Re: ATSynEdit
Post by: AlexTP on June 07, 2018, 10:20:32 pm
Updates

added public methods:
    DoConvertTabsToSpaces
    DoConvertSpacesToTabsLeading
    BookmarkSetForLine
    BookmarkToggleForLine
    BookmarkDeleteForLine
    BookmarkDeleteAll
    BookmarkInvertAll
    BookmarkGotoNext
    BookmarkCopyMarkedLines
    BookmarkDeleteMarkedLines
    BookmarkPlaceBookmarksOnCarets
    BookmarkPlaceCaretsOnBookmarks
Title: Re: ATSynEdit
Post by: AlexTP on August 18, 2018, 10:45:51 am
Last updates


2018.08.18
+ add: global vars (instead of ATStrings props):
    GlobalDetectUtf8BufferKb
    GlobalDetectUtf16BufferWords (2..80)
+ add: detection of UTF16 without BOM (LE/BE)
+ add: on folding range (DoRangeFold), caret(s) is fixed, it is was inside that range

2018.08.08
* change: now OnChange not called in LoadFromFile, makes almost no sense

2018.08.06
+ add: Bookmarks object items: added fields Tag (Int64), ShowInBookmarkList (bool)
+ add: methods Bookmark* improved for new fields
+ add: method BookmarkDeleteByTag

2018.08.03
+ add: improved RegExpr unit (similar patch is sent to FreePascal) to support all Unicode word letters in \w

2018.08.02
* deleted deprecated Strings.LinesBm[] prop

2018.07.31
- fix: bug in detecting width of Unicode chars which are "hex"
+ add: detect more Unicode chars as "hex", from Wikipedia "White space characters"

2018.07.07
+ add: commands (from CudaText):
  cCommand_FoldingFoldAtCurLine
  cCommand_FoldingUnfoldAtCurLine
  cCommand_FoldingToggleAtCurLine
 
Title: Re: ATSynEdit
Post by: AlexTP on September 04, 2018, 11:34:43 am
Update

- changed storage of Bookmarks, now instead of BookmarkItem.NNN use BookmarkItem.Data.NNN

- big addon. GutterDecor object. Wiki has text about it
http://wiki.freepascal.org/ATSynEdit#GutterDecor_object
It is idea from Sublime Text which has such display of pair brackets on gutter (with plugin).
Picture from ST3

Title: Re: ATSynEdit
Post by: AlexTP on October 09, 2018, 09:56:28 pm
Added OptIgnoreWordChars, it is like "NumbersOnly with symbol chars too", to input numbers, eg in Go To dialog.
Title: Re: ATSynEdit
Post by: AlexTP on October 10, 2018, 08:41:41 am
2018.10.10
+ add: instead of OptIgnoreWordChars, added event OnCheckInput
* removed: OptIgnoreWordChars
Title: Re: ATSynEdit
Post by: AlexTP on October 22, 2018, 09:15:15 pm
Update

Reworked caret shapes. Now shapes are public props
CaretPropsNormal
CaretPropsOverwrite
CaretPropsReadonly

Deleted props:
OptCaretShapeMMMM

and - caret has props: Width, Height. In pixels or percents.
and - caret height can be >  100%. e.g 200% will paint over upper/lower lines by 50%.

Picture with caret height 300%.
Title: Re: ATSynEdit
Post by: AlexTP on November 12, 2018, 08:01:06 pm
Updates
Quote
2018.11.12
+ add: OptShowStapleHiliteActive (highlight deepest block staple containing caret pos)
+ add: OptShowStapleHiliteActiveAlpha (alpha blend value for active staple)

2018.11.11
+ add: property OptUnprintedSpacesBothEnds
+ add: property OptWrapAddSpace (additional number of spaces for wrapped lines)
+ add: property OptScrollbarHorizontalAddSpace (additional number of spaces to show at end of longest line)
+ add: OptWrapMode has new enum value: cWrapAtWindowOrMargin (auto minimal from 2 values)

2018.11.09
- fix: command "Invert Selection" gave redundant carets at begin/end
+ add: don't use empty CodePage name, always fill it with LConvEncoding.GetDefaultTextEncoding

2018.11.07
+ add: event OnCalcTabSize to support Elastic Tabstops

2018.10.28
+ add: property OptSavingTrimFinalEmptyLines
Title: Re: ATSynEdit
Post by: AlexTP on December 04, 2018, 12:17:23 pm
It was many changes in the last month.


2018.12.02
+ add: reworked Minimap painting, so now it correctly paints spaces/tabs, even if they are inside multiline comments or strings
- fix: fixes for Minimap Tooltip - it must show wrapped lines like editor does

2018.12.01
+ add: Colors.BlockStapleForCaret (if clNone, then color is calculated from Colors.BlockStaple/TextFont)

2018.11.30
* change: renamed props OptShowStapleNNN to OptStapleNNN
+ add: prop OptStapleEdge1, OptStapleEdge2

2018.11.25
+ add: prop UndoAsString
+ add: prop RedoAsString
Title: Re: ATSynEdit
Post by: AlexTP on December 23, 2018, 03:39:12 pm
Package ATSynEdit_Ex updated.
Added TATAdapterSimple, ie simple adapter. This adapter is simple. It simply does this: for line S it fires OnGetLineColor(S, ColorFont, ColorBack) to get 2 colors for line: font and back.
If it gets clNone then line is not hilited.

It can be used eg in FpcUpDeluxe to hilite log lines.
Title: Re: ATSynEdit
Post by: Thaddy on December 23, 2018, 04:50:07 pm
That's a clever feature. I always wanted something like that, for patches...
Title: Re: ATSynEdit
Post by: AlexTP on December 29, 2018, 10:14:32 pm
Cooking feature. Not fully done, polishing it yet.
Smooth per-pixel scrolling.

preview video here:
https://github.com/Alexey-T/CudaText/issues/1762#issuecomment-450520026
Title: Re: ATSynEdit
Post by: AlexTP on December 31, 2018, 11:03:32 am
I think, smooth per-pixel scrolling is done. I 've fixed all issues I've found in last days...
Title: Re: ATSynEdit
Post by: AlexTP on January 22, 2019, 09:38:37 am
Quote
2019.01.21
+ add: Gaps object allows item before the 1st line, with LineIndex=-1
+ add: Gaps items have prop DeleteOnDelLine

2019.01.20
* change: to fix hanging of timers (by LCL), now on Unix component uses TfpTimer, ie threads. App must enable define UseCThreads (see how it's used in the begin of .lpr file), otherwise you'll get runtime error on start.

2019.01.16
- fix: OptScrollLineCommandsKeepCaretOnScreen worked wrong

2019.01.14
+ add: rework dragging of Minimap's highlighted rect; now it must feel like Sublime

2019.01.13
+ add: OptAutoIndentBetterBracketsCurly (make additional indented line if caret was inside {} )
+ add: OptAutoIndentBetterBracketsRound
+ add: OptAutoIndentBetterBracketsSquare

2019.01.12
- fix: when caret on file end, command "scroll line up" caused caret jump

2019.01.06
+ add: Strings object new method LoadFromStrings()
+ add: Finder has new method DoAction_ExtractAll (for CudaText)
Title: Re: ATSynEdit
Post by: AlexTP on February 22, 2019, 09:54:42 am
Quote
2019.02.06
+ add: Gaps items have new Color property

2019.02.04
+ add: event OnChangeModified

2019.02.01
+ add: property EncodingName

2019.01.31
+ add: new object Strings.Bookmarks2 - it holds list of "background bookmarks", which have lower paint priority than usual bookmarks - they are used to colorize entire line w/o placing bookmark on it

2019.01.27
* change: renamed most TATSyn*** objects to TAT*** (e.g. TATSynWrapInfo -> TATWrapInfo)
+ add: objects Attribs/DimRanges now use binary search to find items. Big speedup if lot of items in Attribs.

2019.01.26
* reverted usage of fpTimer, now not used
Title: Re: ATSynEdit
Post by: AlexTP on May 08, 2019, 10:02:39 pm
Updates
Quote
2019.05.07
+ add: global variables EditorScale, EditorScaleFont (in percents)
+ add: property OptRulerHeightPercents
+ add: property OptRulerFontSizePercents
+ add: property OptRulerTopIndentPercents
+ add: property OptMicromapWidthPercents
+ add: property OptNumbersIndentPercents
* deleted: OptRulerSize
* deleted: OptRulerFontSize
* deleted: OptRulerTextIndent
* deleted: OptMicromapWidth
* deleted: OptNumbersIndentLeft, OptNumbersIndentRight
* deleted: OptNumbersFontSize
* deleted: OptCharSpacingX

2019.04.30
+ add: property Strings.UndoEmpty
+ add: property Strings.RedoEmpty

2019.04.26
+ add: property OptRulerMarkSizeCaret

2019.04.17
+ add: property OptZebraActive
+ add: property OptZebraAlphaBlend

2019.04.11
+ add: improved Gaps, they must not break smooth vertical scrolling (80% done)

2019.04.07
+ add: property OptShowMouseSelFrame (show dotted frame during mouse selection)
+ add: commands "selection: remove first caret", "selection: remove last caret"
Title: Re: ATSynEdit
Post by: AlexTP on June 05, 2019, 12:49:14 pm
ATSynEdit now supports Emoji (ie surrogate unicode chars).
Title: Re: ATSynEdit
Post by: AlexTP on June 13, 2019, 10:35:30 am
Quote
2019.06.12
+ add: Finder has property OptTokens (enum: all, comments, strings, comments+strings, except comments, ...)
+ add: Finder has event OnGetToken (to implement checks for OptTokens)

2019.06.04
+ refactor: split all IME code to "adapter" atsynedit_adapter_ime
+ add: IME window position must be near caret
+ add: IME window must hide on mouse click
- fix: caret pos was incorrect on lines with Emoji

2019.05.20
+ add: OptAutoIndentRegexRule (if line matches this regex, then Enter will add additional indent to new line)

2019.05.16
* change: required package ATFlatControls. This was needed to not have copy of ATScrollbar unit (renamed to ATSynEdit_Scrollbar), that unit is complex and had recent updates. It's hard to keep copy sync'ed. DRY principle.

2019.05.14
* renamed props GutterBand* to longer names

2019.05.12
+ add: feature like in EmEditor: double-click selects not only whole word, but also spaces and symbol-chars
* change: replaced OptMouse2ClickSelectsLine to OptMouse2ClickAction enum
* change: OptScrollbarsNewArrowsKind has renamed its type and has new values
Title: Re: ATSynEdit
Post by: AlexTP on September 13, 2019, 08:16:07 pm
Many changes.

Maybe ATSynEdit is the only text editor component which can highlight unprinted symbols only in selection?

Quote
2019.09.13
+ add: OptUnprintedSpacesOnlyInSelection

2019.09.10
+ add: OptMinimapHiliteLinesWithSelection (it uses Colors.CurrentLineBG)

2019.06.12
+ add: Finder has property OptTokens (enum: all, comments, strings, comments+strings, except comments, ...)
+ add: Finder has event OnGetToken (to implement checks for OptTokens)

2019.06.04
+ refactor: split all IME code to "adapter" atsynedit_adapter_ime
+ add: IME window position must be near caret
+ add: IME window must hide on mouse click
- fix: caret pos was incorrect on lines with Emoji

2019.05.20
+ add: OptAutoIndentRegexRule (if line matches this regex, then Enter will add additional indent to new line)
Title: Re: ATSynEdit
Post by: AlexTP on October 24, 2019, 09:45:18 pm
Micromap object is a new feature.
https://wiki.freepascal.org/ATSynEdit#Micromap_object
Title: Re: ATSynEdit
Post by: AlexTP on February 24, 2020, 01:30:28 pm
2020.02.21
+ add: reworked strings storage system TATStrings:
  a) it takes less memory for ASCII text lines
  b) for lines with non-ASCII chars, it takes more memory, but it works much faster, so scrolling in smoother
+ add: much faster rendering at the end of huge lines (>1M)
+ add: much faster toggling Wrap mode on huge lines
+ add: on long lines (>500), editor ignores CJK char sizes

2020.02.15
+ add: used Alexey Torgashin's patches to Sorokin's TRegExpr

2020.02.13
+ add: OptMaxLineLenToTokenize=4000

2019.12.17
+ add: finder: added method Action_FindAll (collect all matches in a list)

2019.12.11
+ add: supported encodings UTF-32LE, UTF-32BE

TinyPortal © 2005-2018