Builder Progress Update

It's been a while since I've had the pleasure of updating everyone.
Those that follow my twitter @hergertme get the daily updates and screenshots as they happen.

This is going to be a sort of long post, but it's filled with screenshots.
I hope you enjoy keeping track of Builder as much as I enjoy creating it.

Editor

The editor has gone through a major facelift since you last saw it.
I knew early on that tabs were not going to be a good interaction for our desired use case.
But I had to start somewhere.
Using Builder to build Builder was an important goal of mine.

No More Tabs

In the screenshot below, you'll see that we are no longer using tabs for managing documents.

Like a web browser, it's common for some of us to have ten or twenty documents open at any given time.
Navigating this with tabs is simply more effort than it's worth.
You can't see the tab label and jumping to them with an <Alt>Number accelerator doesn't work when you see documents twelve through twenty in the tab strip.

Keep in mind that in the future, we will add some
accelerators to help move between frequently edited
documents.

Document Switching

We like to borrow from other editors where it makes sense.
That's why we have a decent VIM mode for the editor.
This time, however, we decided to add a feature that is a bit closer to emacs.

Behind the scenes, is the document manager.
It is responsible for tracking all of the open buffers in Builder.

We've tied that into the menu button above the editor so you can switch between open buffers.
Buffers that have been modified are denoted with a dot after the document title.

Split Views

Another feature, grown out of the document manager, the ability to have split views.
We abstracted creating a view for the document so that we can have multiple views into the same buffer.
We still need to do some work here so that the insert mark is not lost between focus changes.
It's all doable, we just need to spend time to get the details perfect.

Fear not, you can do vertical splits too.
I tried having the titlebar duplicated for vertical splits, but it felt rather jarring and clunky.
Therefore, we limit vertical splits to a single buffer.

Editor Setting Overrides

Occasionally you might find yourself needing to change the editor settings for a specific file.
You don't want to change the defaults for the language (in Preferences) because that is slow and annoying.
So this week I introduced the editor tweak popover.
You can use it to change a few of the those common settings without leaving your document.

Editor Markdown

The new split and abstracted document design works well with markdown.
In fact, I'm writing this document using the live preview.
We are still using markdown parser from GNOME Software, so it is a bit limited in what it supports.
It would be nice if someone provided patches to use CommonMark.

Editor HTML

Just like markdown, you have live preview with HTML.
If you do web stuff and you want to use Builder for such work, best to tell me what you want.

Editor Code Assistance

Thankfully we don't have to go reinvent source parsers and diagnostics tools.
gnome-code-assistance already does the heavy lifting for us here.
So we made the choice early on to reuse as much of that as we can.
Also, I hope to add some more services to GCA so they can be reused from Gedit.
For example, I think it makes sense for our auto-completion engine to live there since it already has access to the parser and AST.

Code assistance works for Python too.
It should for anything that GNOME Code Assistance diagnostics engine supports.
So in other words, go help them and make all our projects better.

Editor State Tracking

We now keep track of the buffer's file on disk similar to Gedit.
If the buffer was modified outside of the application you are notified the next time the widget is focused.

Closing Modified Documents

If you try to close modified documents, we will nag you now with a dialog lifted right from Gedit.

Editor Search

Search within the editor is looking pretty good these days.

Style Schemes

I created a style scheme just for Builder that feels very blueprint-like.
It comes in two modes, a light and dark variant.
Neither are finished (in fact I only made the dark variant today).
But I've been pretty happy with the light theme the last couple of weeks.

Preferences

The preferences window got some work too.

Preferences Searching

Searching the preferences window now works.
Tweaks that do not match your search query are hidden from view.
This will look familiar to many of you, I copied the design from GNOME Tweak Tool, but lots of IDE's do this.

Style Scheme Selector

I made a fancy style scheme selector widget for editor styling.
It could use some work, but I think it's easier than the try, look at editor, go back to preferences cycle people are used to.

Global Search

Global search is in it's infancy.
I just started on it the other day, mostly getting plumbing in place.
I'll continue using it the next week or two so I get a feel of what works and what doesn't.
After that, I'll make a bunch of changes and then start pushing that forward faster.

Command Bar

The FireFox-style command bar is in place.
You can use it to execute actions (and even pass GVariant parameters) that are defined in the application.

It's very handy, I'll often run :save while in VIM mode.
: will focus the command bar just like in VIM.
save is the GAction we are executing.

As you might guess, you can even execute some VIM commands from this bar (when in VIM mode).
Try something like :colorscheme tango or :%s/foo/bar/g.

Alex Larsson added tab completion to the command bar a few weeks ago.

Roll the Credits!

I wanted to create something special for those that choose to support me financially while I write Builder.
The campaign will start very, very soon.
Everyone that donates will get their name in the credits (among some other totally awesome perks).

I wanted to create a movie style credits widget.
It was a fun bit of animation hacking.