Friday, November 20, 2009

More bubble fun

Ok I've now overworked the bubble drawing. And scrapped my old approach with the virtual lines.

I need to add an ability to influence the line height & drawing. But the gui is somewhat working. I'll continue next week to finish the bubble thing. The coordinate translation may be a bit tricky.

Error bubbles in MonoDevelop

MonoDevelop will have error bubbles in the next version. Currently it looks like this.

The changes are not committed yet, but I want to give an update on what I'm currently working.

Currently the coordinate translation doesn't work correctly - it'll take some days before I commit it. I hope it'll look good at this time :)


Sunday, October 11, 2009

Living during SVN downtime

We had a svn downtime at the weekend and I decided to work on something different. I was bored because I don't like to work on monodevelop without svn.
I've decided to do something useful and made a little hex editor user control using spare parts of the text editor control and it was very fun.
















The control feels fast (at least compared to the other hex editors I tested). It could re-use red-black tree for data storage and almost all data structures used by the text editor.

Some of the code changed, for example it's no longer needed to have locations as line/columns.
Instead just the offset is used (btw. all calculations done by the hex editor are much simpler than in the text editor). It still needs some work, for example the undo/redo logic and cut&paste needs to be 'translated'. But this should be easy - I may do it during the next svn downtime :)














From the user point of view it feels like the monodevelop text editor. It re-uses some of the drawing code and event handler logic.
  • Styling (could share style files with the text editor)
  • "Margin" model
  • Caret blinking/drawing
  • Bookmarks
  • Mouse behavior (selection etc.)
  • It can do bookmarks, selection, zooming, group bytes, words, longs
After the 2.2 release I'll include a hex editor view in monodevelop. From time to time I need to view the hex code of files, then I can do this without leaving monodevelop.

I wonder if anybody dares to make a stand alone version of the monodevelop hex editor and text editor. Both controls can easily be re-used in a standalone application.

Wednesday, August 5, 2009

Code Generation Popup

One feature I always wanted to have is the code generation pop up. I'm currently working on the refactoring part of MonoDevelop and I take the chance implementing the code generation popup.
This is a real time saver, if you know how to use it.
What can it do for you ? It can:
  • Create constructors and initialize members
  • Create properties
  • Create event OnXXX methods
  • Create ToString() method
  • Create Equals & HashCode
See the Quick Code Generation entry in the mono develop wiki for more details on that feature.

Wednesday, July 29, 2009

Twitter

I've now created a twitter account. I'll post there more up to date infos what I'm currently developing. My username there is mikrueger.

Thursday, July 9, 2009

Refactoring, refactoring, refactoring

I'm in the process improving the refactoring in MonoDevelop.

I hope that refactoring in MonoDevelop will be in a good shape 'really soon' (maybe in 1-2 months). I've looked at other tools eclipse, netbeans, intellij and michael hutchinson pointed me to some VS.NET plugins that add refactoring to VS.NET.

I've created a new refactoring plug in and have thrown any refactoring stuff in there, we've a basic refactoring infrastructure. The refactoring system is based on single changes. That means that refactorings generate a list of replacement operations which the user can view in a preview dialog (mostly the same as eclipse). However this preview dialog doesn't make sense for very small inline refactorings - they can be done without any dialog.

Now I'm improving the infrastructure by writing some small refactorings. I first thought writing extract method is enough. But that isn't the case, other refactorings need different stuff. Therefore I'll implement some more. Wanna help ?

I try to get my wife on board to help out with refactorings. She helped me to improve the refactoring infrastructure quite a bit (but the infrastructure needs some evolvement before I can write it down). And she tries to implement some refactorings. It's really helpful to have someone which I can see working with mono develop. Some of the more advanced mono develop editing features alienate users ... that's something I need to think over.
The features are really cool but are unpredictable for developers who don't know them.

I was a bit lazy with writing new features in the last few weeks, but I think that adding some refactorins is worth introducing a ton of new bugs. The other IDEs offer a wide range of refactorings that I found really useful - stay tuned for some cool refactorings the next few weeks.