[Geany-Devel] splitwindow2

Thomas Martitz thomas.martitz at xxxxx
Thu Oct 10 10:03:42 UTC 2013


Hello,

I just wanted to let you know that I'm working on a new splitwindow 
implementation and I would like to have early input. But, also as a 
warning, I'm progressing only slowly because I'm at the final phase of 
my master thesis which currently needs more attention that Geany hacking.

Anyway, we all know about the limitations of the splitwindow plugin. 
They include (not a complete list):
- the other view can only have one document
- you cannot undo/redo: you need to select the tab in the main notebook 
to do that
- state is not saved/restored across Geany restarts
- it's completely awkward because the other view shows a doc that's also 
in the main view, editing in the other view will change the main view at 
the same time.
- you cannot toggle between the views with a keybinding (e.g. ctrl+tab)
- weird focus behavior
- more...

My plan is to reimplement splitwindow using a different approach: by 
having two real, independemt notebooks, one primary and one seconary.

New docs will be opened in the primary one by default, but can be moved 
to the secondary one at will. This means that no document can be shown 
in both at the same time which makes it a loss less awkward. It also 
lets us lift the other limitations:
- undo/redo will work
- state can be saved across restarts (config file format will probably 
need some changes for this)
- toggling with keybindings between views can work
- you can arbitrarily assign docs to views using different methods

The nice things about splitwindow that should be probably be kept:
- chose between horizontal and vertical split
- automatic sizing of the views
- anything else?

Unfortunately Geany's core is pretty hardcoded as to assume one (and 
only one) notebook for documents. This means that for this various 
changes to Geany core are necessasry, some of which may be difficult to 
do without breaking the plugin API/ABI. Some are gonna hate this but I'm 
not currently planning do this as a plugin because the core needs a lot 
of changes anyway for breaking the single notebook assumption. But I'm 
very open for discussion which is why I'm writing this early.

I already have an experimental version up and running that doesn't even 
require all that much changes[1] and it seems to work nicely. See 
this[2] screenshot.

So, any opinions?

[1]: https://github.com/kugel-/geany/tree/splitwindow2
[2]: http://www.alice-dsl.net/simonemartitz/default/splitwindow2.png

Best regards.


More information about the Devel mailing list