Difference between revisions of "User:Martin"

From Free Pascal wiki
Jump to navigationJump to search
Line 16: Line 16:
 
</td></tr></table>
 
</td></tr></table>
  
I got involved with Lazarus by contributing some patches (Debugger, Synedit, Code-Folding).
+
 
I am now mainly looking at improving SynEdit and the Debugger
+
I first discovered Lazarus in late 2007. At this time it was version 0.9.24.
 +
 
 +
Having worked mainly on Code and little on visual design (Forms) SynEdit and the debugger had been the 2 areas of Lazarus I had used the most.  Which was the main reason for me getting involved with those two.
 +
 
 +
My first patch was to make stack-frames selectable and allow showing watches/locals from each frame. Marc applied this patch on 9 Jan 2008. A few more debugger related patches followed.
 +
In Summer 2008 I made my first patch for SynEdit. It was committed on 13 June by Mattias. After that my work concentrated on SynEdit, and it was going to be more than a year, before I would return to the debugger. A series of small patches for SynEdit followed.
 +
 
 +
Then in November 2008 I was offered write access to the Lazarus SVN.
 +
 
 +
It was also then when I committed my first bigger contribution: The rewrite of major parts of the code folding. Code folding has developed ever since, and is still receiving new features from time to time.
 +
 
 +
Following this was work on highlighting (e.g. highlight of all occurrences of the word under caret), Syncro Edit (Summer 2009) and many other things.
 +
 
 +
In November 2009 yet another huge piece of work started: Multiply Editor windows, with the ability to edit the same file, in many views. It took several month, and was finally working in March 2010.
 +
 
 +
In October 2010 I finally included the debugger in my work again. 2011 saw a lot of time and work going into the debugger.
 +
 
  
 
==Plans==
 
==Plans==
Line 40: Line 56:
 
:* WordWrap
 
:* WordWrap
 
:* Pascal syntax check as you write
 
:* Pascal syntax check as you write
:* Highlight of none active co0de (IFDEF)
+
:* Highlight of none active code (IFDEF)
 
:* Gutter for error overview (compilation or codetool errors). The gutter shows the full file, mapping the locations like the slider on a scrollbar.
 
:* Gutter for error overview (compilation or codetool errors). The gutter shows the full file, mapping the locations like the slider on a scrollbar.
 
:* <s>Allow to have multiple editors open in Lazarus, and have more than one view of the same document.</s>
 
:* <s>Allow to have multiple editors open in Lazarus, and have more than one view of the same document.</s>
Line 55: Line 71:
 
:* 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
 +
 +
* Debugger ...
  
 
==Done==
 
==Done==

Revision as of 22:31, 4 May 2012

MartinFriebe.jpg

               

About me:

  • Name: Martin Friebe.
  • Location: London, UK
  • Nationality: German
               

My role in Lazarus

  • Joined 2008
  • Main fields: SynEdit, Debugger


I first discovered Lazarus in late 2007. At this time it was version 0.9.24.

Having worked mainly on Code and little on visual design (Forms) SynEdit and the debugger had been the 2 areas of Lazarus I had used the most. Which was the main reason for me getting involved with those two.

My first patch was to make stack-frames selectable and allow showing watches/locals from each frame. Marc applied this patch on 9 Jan 2008. A few more debugger related patches followed. In Summer 2008 I made my first patch for SynEdit. It was committed on 13 June by Mattias. After that my work concentrated on SynEdit, and it was going to be more than a year, before I would return to the debugger. A series of small patches for SynEdit followed.

Then in November 2008 I was offered write access to the Lazarus SVN.

It was also then when I committed my first bigger contribution: The rewrite of major parts of the code folding. Code folding has developed ever since, and is still receiving new features from time to time.

Following this was work on highlighting (e.g. highlight of all occurrences of the word under caret), Syncro Edit (Summer 2009) and many other things.

In November 2009 yet another huge piece of work started: Multiply Editor windows, with the ability to edit the same file, in many views. It took several month, and was finally working in March 2010.

In October 2010 I finally included the debugger in my work again. 2011 saw a lot of time and work going into the debugger.


Plans

  • Features
  • 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}
  • All kind of comments {} (**) //
  • Hide-Fold: Collapse to 0 lines. E.g Fold/Hide single line comment
  • Multi-Line fold header: Currently only the line with the fold keyword (e.g. "procedure" is kept visible.
For Multiline procedure declaration, the whole procedure declaration may be wanted visible. Folding only local var, type and code
  • 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, ...)
  • User definable Mouse Actions / Configuration
  • interactive parms forcode-templates example
  • Sync Edit: Edit one word in more than one location, updating all locations at the same timeexample
  • Persistent Blocks
  • WordWrap
  • Pascal syntax check as you write
  • Highlight of none active code (IFDEF)
  • Gutter for error overview (compilation or codetool errors). The gutter shows the full file, mapping the locations like the slider on a scrollbar.
  • Allow to have multiple editors open in Lazarus, and have more than one view of the same document.
  • Writing TestCases
  • 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 (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
  • Debugger ...

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)