New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Geany Filetype Plugins #1195
Comments
I have edited the description to remove references about GObject interfaces as well as the Draconian contribution strategy. For the latter, I just wanted to foster active code-based contribution where feasible, but I shouldn't exclude armchair contributions :) |
Meta Issue Description todo:
|
I haven't touched this in a year. If anyone wants to move forward with FT plugins, we should re-open this issue and continue along. |
I want API for plugins! |
@denizzzka if you want to move this forward, please feel free to send any pull requests, I'll re-open/update this issue if people want to work on it. |
This issue is to track the design and implementation of filetype-specific plugin API to allow tighter integration and for plugins to provide advanced IDE functionality to replace or enhance functionality what Geany currently provides in a generic and basic form.
One of the key features of Geany is its lightweight, generally useful language-agnostic support (eg. TM/ctags, generic build commands, customizable default filetype configurations, etc) and it would not be good to start embedding deep knowledge of specific programming languages into the core, this is why it's crucial that such advanced (read: bloated) features remain completely contained in some kind of plugin. No user should pay the cost for such language support for languages they don't use. It's also important that Geany always provide at least its current baseline functionality. Some of the default functionality could indeed be moved into such a plugin, but it should always be the default/fallback and should work out-of-the-box.
I have experimented in the past at trying to integrate libclang into a plugin to provide some of this support for C/C++, but I assume much of it would transfer over to other languages such as using libpython to enhance Python support, or V8 engine to enhance JavaScript.
Requirements
Though there are probably some things I have not thought of, some of the requirements I've come up while experimenting with implementing this kind of advanced language features and run into road-blocks with are as follows:
Allow plugins to provide syntax highlight.
Allow plugins to provide the symbols for the tagbar tree, based on their own knowledge of the current document.
Allow plugins to provide the auto-complete list, given the current location in the document and the part of the word already typed.
Allow plugins to provide a list of calltips to be shown when Geany shows the calltips.
Allow plugins to hook into the build system runner.
Allow plugins to provide diagnostics when build commands are run.
Development/Contribution Strategy
A branch will be pushed to the main Geany Github repository, for example
ft-plugins
, against which all pull requests should be made. This branch will be merged at appropriate/convenient intervals into Geany's stable/development branch (master).Discussion Guidelines
Since Github comments are not an ideal discussion platform and can grow out of control, as well as to include more people, foster broader discussions (bikesheds), and in order to keep this issue nice and clean, I propose that we do most of the discussion not relating to a particular change on the development mailing list. This suggestion is only for this particular Github meta-issue, and need not apply to all related PRs, of course. If nobody minds, I would like to delete extaneous comments on this Github Issue, and keep the comments limited to such stuff as progress reports, meta discussions about the Github issue iself (assignees, labels, milestones), notes about a related PR, etc.
If there is a particular item you wish to discuss, quote it in your mailing list message and provide your suggestions, comments, issues, etc. I propose we choose some unique kind of tag (eg. "FT-plugins") to put in the subject line of each related mailing list thread to improve searchability. This way we can look back in the archives and easily find related discussions regardless whether they all happened to be nested under a single thread.
Please feel free to "add your reaction" (thumbs up or down) whether you like the overal proposal presented here, in principle, even if not some of the details.
The text was updated successfully, but these errors were encountered: