[Geany-Devel] Devel Digest, Vol 93, Issue 3

Per Löwgren per.lowgren at xxxxx
Wed Dec 16 15:09:29 UTC 2015


Hello,

I reply to all of your posts in one message. Hope that's ok.

Basically, the terminology Djynn use is:
* workspace: a set of projects
* project: a set of files, organised into a directory tree, that may or may
not be opened
* session: a set of opened documents in the editor

In Geany, a project is the configuration of the project, including editing
and building.


> I've got what might be a stupid question, but couldn't your plugin
> integrate with Geany projects the other way around, e.g. your plugin
> reacts to project open/close rather than making Geany react to your
> plugin's project open/close?

It's actually a good question, however, opening a project in Djynn means to
view the files in that project in the tree-view; while opening a project in
Geany means to change configurations according to that project. So, in
Djynn, when I want to open a Geany project, I double click on it in the
projectmanager tree-view, instead of selecting it in the project menu.


> I must admit I didn't try your plugin, but there are a few other plugins
> enhancing Geany's project support, and AFAIU they do this by listening
> to Geany project open/close and add their own logic to that.

That's a great idea! I'll see what I can come up with.


> Adding `document_close_all()` sounds reasonable indeed.  Out of
> curiosity, why do you need it?

Well, actually, I've found a solution for `document_close_all()`, this
works as well:
while((doc=document_get_current())!=NULL) document_close(doc);

In answer to your question: The session manager; it switches between
sessions, and stores many sessions. When switching between sessions, all
opened documents are stored in the present session's file; then all opened
documents are closed; then the documents in the next session are opened.


> Sounds like reasonable usage, I think you can just open Geany pull request
> to make these public. To make a function public, you just need to:
>
> 1. Prefix the implementation with GEANY_API_SYMBOL.
> 2. Add some user-visible API documentation with a docstring (see other API
> functions in the code to have an idea how it should look)
> 3. Move the function declarations above GEANY_PRIVATE in the header.
>
> That's about it.

That would work on my computer, but not on Launchpad, or for anyone else.

For the moment I'll disable the project functions, that's ok.


> As it usually works, the best presents have to come from yourself, there
> will be just socks and pyjamas under the Christmas tree :-).

I'd actually need just that, comfy socks and a pyjamas would be really
nice, perhaps I'll buy that for myself :-)


> If I understand the project part of the plugin (haven't tried it either),
> it tries to simplify switching between projects and organizing projects
> into workspaces. In the screenshot here
>
> http://plugins.geany.org/djynn.html
>
> it seems that the second combo serves switching between projects in a
> workspace so it's the plugin which decides whether a project should be
> opened/closed rather than Geany. This functionality cannot be done with
> listening to the signals only so access to project_open()/close() makes
> sense here.

That's true. Though opening the Geany project could actually trigger the
project in the Djynn tree-view opening to visible, and close other project
folders.


> The other thing is the plugin itself is a bit too "All the stuff I need in
> Geany" and it would be better break the functionality into individual
> plugins, or extending existing plugins or adding the functionality
directly
> to Geany.

Yes, more or less, I've yet to find a use for base58 encoding, but the rest
is used all the time :-) When I began working on Djynn in 2012 it was part
of a library (https://code.google.com/p/libamanita/wiki/djynn), and I
didn't intend it to be anything more than "what I need in Geany".

I could probably break Djynn into several plugins, but it would become a
lot more maintenance work handling many projects instead of one. I'm open
to extending existing plugins or adding directly to Geany.

The Project Organizer is an interesting plugin, they are similar, but works
very differently. If we can agree on a common "vision", I'd happily
contribute to that. Djynn has regex pattern add files on a per directory
basis, i.e. you can add a directory and tell to search files according to
pattern, and recurse into subfolders, but you can still have fixed files
added too; e.g. you can add files from the project source directory, and
also add `~/.config/project/file.conf` etc.

Then there is commenting, encoding and line ordering; that could be broken
into three plugins, or preferably one "Extended editing" or something
similar; there are no other plugins that suggest merging that I can see.

If there is anything you would add directly to Geany, let me know.

Regards,
Per
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.geany.org/pipermail/devel/attachments/20151216/a225fd6d/attachment.html>


More information about the Devel mailing list