On 10 October 2013 21:03, Thomas Martitz <thomas.martitz@student.htw-berlin.de> wrote:

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.

Breaks away from the thesis are good, or so I used to tell myself ;-)

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.

Yes please, editing .hpp and .cpp at the same time will be a great step forward.

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

Whilst looking at two places of the same document is also a use-case of split windows, if this restriction allows the initial implementation of a proper split window system more easily then lets start with it.  All I would say is try not to make it too hard to expand later.

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

So long as manual sizing is still available, fine, Geany is not smart enough to always know what width/height I need.
- 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.

Its gotta happen at some point, so long as the changes are sensible and for a good reason then its ok, but I would probably say that means make the change after the next release, so there is no rush on trying to get a big (well big relative to recent ones) API change tested and into the plugins. 


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.

Will look at it and try it as soon as I can, but some guy on IRC keeps prompting for feedback :)

So, any opinions?

For me this is second only to multiple windows as an editing feature that Geany needs, and I expect it is an important step towards multiple windows.



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

Best regards.
Devel mailing list