Difference between revisions of "User:Martin"

From Free Pascal wiki
Jump to navigationJump to search
Line 6: Line 6:
 
==Plans==
 
==Plans==
 
* Fix bugs
 
* Fix bugs
* Fix more Bugs
 
 
* Clean up and refactor. Someone already put up some ideas here [[Redesign of the SynEdit component]]. And there is more
 
* Clean up and refactor. Someone already put up some ideas here [[Redesign of the SynEdit component]]. And there is more
 
:* Move all gutter code into a structure of Classes: (Started / Partly done / Needs clean up)
 
:* Move all gutter code into a structure of Classes: (Started / Partly done / Needs clean up)
 
:: <s>TGutterManager: To Represent to act as an interface and represent the whole Gutter</s>
 
:: <s>TGutterManager: To Represent to act as an interface and represent the whole Gutter</s>
 
:: <s>TGutterLineNumbers, TGutterFoldInfo, TGutterMarks, TGutterBrkPoints: To draw the individual columns of the Gutter.</s>
 
:: <s>TGutterLineNumbers, TGutterFoldInfo, TGutterMarks, TGutterBrkPoints: To draw the individual columns of the Gutter.</s>
:: This will allow to easily modify or add to the Gutter
 
 
:* Move drawing the Text To it's own class (like the gutter)
 
:* Move drawing the Text To it's own class (like the gutter)
 
:* Create classes for Caret, <s>BlockSelection,</s> ViewPort (Topline,LeftChar, LinesInWindow, WindowWidthInChar)
 
:* Create classes for Caret, <s>BlockSelection,</s> ViewPort (Topline,LeftChar, LinesInWindow, WindowWidthInChar)
Line 17: Line 15:
 
:* Reduce the Calculation overhead. There currently is some internal Data that SynEedit keeps recalculating more often than needed. (This should benefit from The caret and Viewpoint classes)
 
:* Reduce the Calculation overhead. There currently is some internal Data that SynEedit keeps recalculating more often than needed. (This should benefit from The caret and Viewpoint classes)
 
:* Defer the calculation of some of the internal data. Calculate either OnIdle, or OnRequest
 
:* Defer the calculation of some of the internal data. Calculate either OnIdle, or OnRequest
:* Create a Class for tab handling
 
:: This will be based on TSynEditLines, to act as a view on the codebuffer, but may have additional features
 
:* Refactor the way individual components relate to each other.
 
:: Many relationships require to much knowledge. Example, if top line changes it involves knowledge about the caret (it calls EnsureCursorPosVisible, which may move the caret). This is stuff the caret should know to do, not topline. Topline should provide an OnChange Method. So caret can register itself, and then caret can act accordingly. TopLine should not have to bother who or how many others will react to that callback.
 
 
* More folding
 
* More folding
 
:* <s>Class and Class sections (public,private,...) in the Interface Part [[http://bugs.freepascal.org/view.php?id=12139 |Bug 12139]]</s>
 
:* <s>Class and Class sections (public,private,...) in the Interface Part [[http://bugs.freepascal.org/view.php?id=12139 |Bug 12139]]</s>
Line 26: Line 20:
 
:* <s>var/const/type sections</s>
 
:* <s>var/const/type sections</s>
 
:* maybe IFDEF
 
:* maybe IFDEF
:* maybe User-defined  { $REGION}
+
:* User-defined  { $REGION}
 
* Folding: The ability of copy and past code, that contains folded blocks, and keeps them folded when inserted
 
* Folding: The ability of copy and past code, that contains folded blocks, and keeps them folded when inserted
 
* Folding, save with session
 
* Folding, save with session
 
* Handle DoubleWidth char (Chinese, ...)
 
* Handle DoubleWidth char (Chinese, ...)
 
* WordWrap
 
* WordWrap
 +
* Sync Edit: Edit one word in more than one location, updating all locations at the same time
 
* Look at Synedit 2.x (import and maybe export back to them)
 
* Look at Synedit 2.x (import and maybe export back to them)
 
* Allow to have multiple editors open in Lazarus, and have more than one view of the same document.
 
* Allow to have multiple editors open in Lazarus, and have more than one view of the same document.

Revision as of 14:34, 31 January 2009

Hi. My name is Martin Friebe. I am a professional Software Developer. I was born in Germany, and I am now living in London (UK).

I got involved with Lazarus by contributing some patches (Debugger, Synedit, Code-Folding). I am now mainly looking at improving SynEdit.

Plans

  • Move all gutter code into a structure of Classes: (Started / Partly done / Needs clean up)
TGutterManager: To Represent to act as an interface and represent the whole Gutter
TGutterLineNumbers, TGutterFoldInfo, TGutterMarks, TGutterBrkPoints: To draw the individual columns of the Gutter.
  • Move drawing the Text To it's own class (like the gutter)
  • Create classes for Caret, BlockSelection, ViewPort (Topline,LeftChar, LinesInWindow, WindowWidthInChar)
This will help to more clearly define interactions between them (Via OnChangeNotify callbacks)
  • Reduce the Calculation overhead. There currently is some internal Data that SynEedit keeps recalculating more often than needed. (This should benefit from The caret and Viewpoint classes)
  • Defer the calculation of some of the internal data. Calculate either OnIdle, or OnRequest
  • More folding
  • Class and Class sections (public,private,...) in the Interface Part [|Bug 12139]
  • Full Procedure/function at "Procedure xxx;" line
  • var/const/type sections
  • maybe IFDEF
  • User-defined { $REGION}
  • Folding: The ability of copy and past code, that contains folded blocks, and keeps them folded when inserted
  • Folding, save with session
  • Handle DoubleWidth char (Chinese, ...)
  • WordWrap
  • Sync Edit: Edit one word in more than one location, updating all locations at the same time
  • Look at Synedit 2.x (import and maybe export back to them)
  • Allow to have multiple editors open in Lazarus, and have more than one view of the same document.
  • Writing TestCases

Done

  • Fixed Bugs
  • Various debugger patches sent to Marc
  • Refactored CodeFolding: A majority of the folding code has been moved into it's own classes
  • Refactored TrimTrailingSpaces: Moved into it's own class, which acts as a "view" (virtual TextBuffer, between SynEdit, and SynEditTextBuffer)