Difference between revisions of "User:Martin"

From Lazarus wiki
Jump to navigationJump to search
Line 22: Line 22:
 
:: 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.
 
:: 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
:* Class and Class sections (public,private,...) in the Interface Part [[http://bugs.freepascal.org/view.php?id=12139 |Bug 12139]]
+
:* <s>Class and Class sections (public,private,...) in the Interface Part [[http://bugs.freepascal.org/view.php?id=12139 |Bug 12139]]</s>
:* Full Procedure/function at "Procedure xxx;" line
+
:* <s>Full Procedure/function at "Procedure xxx;" line</s>
:* var/const/type sections
+
:* <s>var/const/type sections</s>
 
:* maybe IFDEF
 
:* maybe IFDEF
 
:* maybe User-defined  { $REGION}
 
:* maybe User-defined  { $REGION}

Revision as of 13:07, 2 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.
This will allow to easily modify or add to 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
  • 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
  • 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
  • maybe 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
  • 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)