Re: [Builder] Emacs mode and keybindings



On 03/04/2015 09:22 PM, Christian Hergert wrote:
For those that are curious, I've been implementing this over the last
day, and it is wonderful.

Some things are still going to be a bit annoying to implement, but the
vast majority flows together well.

Very declarative, and very easy to see what we support and what we don't
(yet). Also, its going to be many thousands of lines removed in exchange
for few lines that non-C programmers can contribute to.

https://git.gnome.org/browse/gnome-builder/plain/data/keybindings/vim.css?h=wip/libide

If you have the wip/libide branch and want to test this, check out the
`test-ide-source-view` program.

  ./test-ide-source-view libide/ide.c --vim
  ./test-ide-source-view libide/ide.c --emacs

The test program will load the project from configure.ac, so you get all
the project management features in the test editor.

 - Line tracking comes from IdeGitVcs.
 - Diagnostics come from IdeClangDiagnosticProvider.
 - Build flags come from IdeAutotoolsBuildSystem/IdeMakecache.

We try to avoid recalculating line diffs except for certain scenarios we
know will invalidate the cache. This helps saves a bunch of battery.

IdeMakecache is pretty neat, it's based on ideas from
gnome-code-assistance to extract build flags from makefiles (using make
-p -n -s and make -s -i -n -W). However, we go a bit further and cache
the output into a large text file, mmap() it, and aggressively cache
results. It's doing wonders for my battery.

IdeUnsavedFiles is used to track unsaved file buffers. This means less
copies of the contents of a GtkTextBuffer passed around. We can coalesce
those into a single GBytes. Also, it allows us to save to drafts upon
close. This will help us get rid of close dialogs.

There is a *bunch* of other stuff in libide, but that isn't that
relevant to what this email started as (testing the source-view).

-- Christian


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]