Friday, May 27, 2011

MonoDevelop Quick Fixes

Many people requested quick fixes & code analyzation features.

Michael Hutchinson implemented code analyzation quite some time ago, now that we've branched 2.6 we can add new features to master. I've added quick fixes & joined the two systems.

Quick fixes are like refactorings - they change code. But unlike most common refactorings they're much more fine grained and may add code. For example adding a property setter.

When the caret is on a position where a quick fix is available a little icon is showed indicating the fix. In conjunction with the AnalysisCore source code can be highlighted indicating a more pressuring fix which - for example removing code smells.

I've made a little demo of what is currently available in MonoDevelop master:

Link to quick fix demo.

I can need more suggestions for quick fixes & indicators. I'll try to add as many as possible - unfortunately this feature doesn't make it into 2.6. But it's available in master as well as some other exciting features.

Thursday, March 31, 2011

Last minute MonoDevelop design change.

User surveys have shown that MonoDevelop users aren't happy with the text editor syntax highlighting colors. Now we've used an algorithm to determine the best color sheme possible.

I promise that with the new color sheme you won't stop typing.

With the new MonoDevelop color sheme simulations have shown that'll attract twice as much developers (even more female developers). You don't even have to choose the new color sheme - because we'll only support one for 2.6:

Ok here is the new color sheme in action - enjoy:

Any comments ?

If you've not guessed it yet - this is an april fool joke :)

Monday, June 14, 2010

My hack week project

Some people on twitter have requested that mono develop should have something like GhostDoc.

GhostDoc is an automated xml documentation generator for Visual Studio. During the hack week I took the chance to create something similiar - I call the addin DocFood.

I made a litte screen cast showing DocFood in action:

How to obtain DocFood:

+ Obtain a recent MonoDevelop source code (2.4 beta 2 - 2.4 final should work)
+ Set up monodevelop build environment
+ Go to DocFood@GooleCode and download DocFood.tgz.
+ extract the DocFood.tgz into the extras/ directory.
+ Open the .sln file with monodevelop & compile.
+ done.

Or wait for the 2.6 release ... (should show up into the trunk somewhere after 2.4)

Tuesday, May 4, 2010

Web based build bots don't work for me

For MonoDevelop we want a stable trunk - many people use the trunk version of MonoDevelop for their daily work.
Unfortunately I tend to break the trunk from time to time (I think every developer does). Sometimes I just break some unit tests.

Therfore we set up a web based build bot for monodevelop:

This automates the build process & unit testing. In theory this will help all developers to stabilize the trunk.

But my experience said: WRONG

Before we had a build bot a build failure was recognized mostly by Lluis Sanchez (thanks lluis) or some users who informed me in IRC that there is something not working.

Now with the bild bot build failures are recognized mostly by Lluis Sanchez (thanks again) or some users who try to build monodevelop trunk and infom me on IRC that something isn't working.

How can this happen now that we've a build bot ?

-> I have to go to that page and check if I broke something.

This isn't really an improvement ... I have always to manually check, if I broke something.
I always wanted that the build bot send me an e-mail in case of build failure.
... but I think I would've missed that mail as well).

Then I had the idea:

Just write a little monodevelop addin which informs me, if the build bot found something. This way:
  • I would get informed without doing manual checks (-> saves time)
  • I wouldn't svn up a non working version (-> saves more time)
  • Maybe I would be more careful with check ins, if the build bot guard has some form of punishment when I break something (-> may save time for our user)
With this in mind I just wrote a small addin for us monodevelop authors (and maybe other MonkeyWrench users) I call 'Build bot Guard'.

It just displays a little icon in the monodevelop status bar (I like it simple).

If the build is ok it looks like:

When there is something not ok the monkey becomes sad:

Is somebody out there that wants to make the monkey sad ? I doubt that. This is really simple ... just an icon at the bottom.

But I need some more detailed info about the build bot results.
Therefore I added a inform window on the icon click:

So far so good.

But I want to get informed if I broke the build.
(And I don't think that the small icon in the lower right corner informs me well about this)

For doing this the addin needs to know my svn user name - I added a small option panel. (There it's possible to set other MonkeyWrench projects by URL as well.) And if the user broke something a dialog appears:

I really hope that this is enough that I'll fix the trunk ASAP. If I've some more time & there is interrest I'll improve the addin. Maybe even make it more flexible so that it'll be possible to add other web based build bots to it.

Currently the addin has a down side: It can just track ONE project. We need something like user specific project policies. Maybe it's easer that the addin just tracks the solutions by itself. But that's something for future development.

Do you think too that build bots belong INSIDE the IDE ?

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.