Hi, before submitting "official" feature requests I thought someone could comment some points (or maybe this *is* a feature request). Just my personal notes approaching geany after years of kate and vim. I hope I'll have the time (in months) to download geany source and take a look inside, maybe submitting a patch or something.
* line wrapping: changing the options in settings changes the default from now on, if I already have tens of files opened without the option enabled there is no way to set line wrapping for every doc, right? I had to edit the project file, select the lines of opened files and (with vim): " :'<,'>s/0;//1;//g ". So, the request is: some way to toggle line wrapping for every already opened document?
* is it easy to implement a "reload all" function (useful especially when working with a versioning system and multiple files change)?
* why don't you use a standard tag format (e.g. exubertant-ctags)? there could be plenty of tags ready to use, made with a more flexible tool
* maybe an "import project" function would be useful, scanning a directory (recursively?) and opening/adding to project every listed file
* a "project" in geany is just a session, am I right? Is there any way to have a project with many files while having just a subset open?
* it is a bit awkward to disable localization by setting and env variable; means creating a script and changing e.g. system menu links. Localization should be easily deactivable, especially when a language is not completely translated (or a bit inaccurate)
* a predefined context action for a file or selection could be sending the text to a pastebin; there are scripts that do it automatically for sprunge (maybe also for pastebin), i.e. "$ filename > sprunge"
* "go to next error" doesn't always work. Unfortunately I didn't write down the case in which this didn't worked :( If it happens again, I'll submit a proper communication
* in filetype_extensions.conf, both C and C++ have .h extension; in a project with both C and C++ files, geany was not able to recognize which header was a c++ header and which one was a C header. Maybe one could check the extension of a file with the same name? (i.e. if there is a fname.cpp, fname.h must be C++ too, etc.)
* it would be nice to have a function that switches to the correspondent header file, opened or not (opening a new tab in case is not)
Thanks... I hope I'm not too wrong.
Cheers Eugenio
Hi,
Some fast and partial answers:
Le 10/05/2011 00:39, Eugenio Rustico a écrit :
Hi, before submitting "official" feature requests I thought someone could comment some points (or maybe this *is* a feature request). Just my personal notes approaching geany after years of kate and vim. I hope I'll have the time (in months) to download geany source and take a look inside, maybe submitting a patch or something.
- line wrapping: changing the options in settings changes the default
from now on, if I already have tens of files opened without the option enabled there is no way to set line wrapping for every doc, right? I had to edit the project file, select the lines of opened files and (with vim): " :'<,'>s/0;//1;//g ". So, the request is: some way to toggle line wrapping for every already opened document?
Maybe, but there was a recent discussion on geany-devel IIRC about a quite similar topic (it was line breaking, but still), and a valid point IMHO is that this feature is not really useful for programming languages, where line breaking means something particular, so maybe a per-language preferences would be the way to go?
- is it easy to implement a "reload all" function (useful especially
when working with a versioning system and multiple files change)?
It'd be quite easy, but is this really useful? I mean, normally Geany tells you if a file changed when it gets the focus, so is it really useful to reload all the files you aren't modifying? OK tags may need updating.
- maybe an "import project" function would be useful, scanning a
directory (recursively?) and opening/adding to project every listed file
I think Jiří Techet's GProject plugin might be of some interest for this (I haven't tried it yet though). The plugin isn't already part of GeanyPlugins, but AFAIK it'll become soon, and you can use it before anyway.
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
As above, I guess GProject might help you.
- it is a bit awkward to disable localization by setting and env
variable; means creating a script and changing e.g. system menu links. Localization should be easily deactivable, especially when a language is not completely translated (or a bit inaccurate)
I'm not sure disabling the localization is something useful enough to be integrated to Geany: as you said you could simply set the proper LANG and you're done. And if a translation is wrong/partial, maybe fixing it is the better solution? :)
- a predefined context action for a file or selection could be sending
the text to a pastebin; there are scripts that do it automatically for sprunge (maybe also for pastebin), i.e. "$ filename > sprunge"
AFAIK there's a plugin on the road for this. Ask Matthew Brush -- or wait for a replay from him.
- in filetype_extensions.conf, both C and C++ have .h extension; in a
project with both C and C++ files, geany was not able to recognize which header was a c++ header and which one was a C header. Maybe one could check the extension of a file with the same name? (i.e. if there is a fname.cpp, fname.h must be C++ too, etc.)
That's an interesting suggestion, we could investigate a bit.
- it would be nice to have a function that switches to the
correspondent header file, opened or not (opening a new tab in case is not)
I think there is a plugin that provides the feature, but I don't remember which one. Maybe GProject?
Thanks... I hope I'm not too wrong.
There's generally noting wrong in asking questions :)
Cheers, Colomban
2011/5/10 Colomban Wendling lists.ban@herbesfolles.org:
- line wrapping:
IMHO is that this feature is not really useful for programming languages, where line breaking means something particular, so maybe a per-language preferences would be the way to go?
I don't know... I think it is more an "editor" property, independent from language/project/etc, and that there should be a global parameter affecting all open files.
- is it easy to implement a "reload all" function (useful especially
when working with a versioning system and multiple files change)?
It'd be quite easy, but is this really useful? I mean, normally Geany tells you if a file changed when it gets the focus, so is it really useful to reload all the files you aren't modifying?
I often checkout branches with many file changes, so for me it is quite annoying... consider also that "cancel" is the default choice, even if the buffer was unchanged :)
I think Jiří Techet's GProject plugin might be of some interest for this
Thanks, I'll give it a try.
- it is a bit awkward to disable localization by setting and env
variable; means creating a script and changing e.g. system menu links. Localization should be easily deactivable, especially when a language is not completely translated (or a bit inaccurate)
I'm not sure disabling the localization is something useful enough to be integrated to Geany: as you said you could simply set the proper LANG and you're done.
But the LANG env check *is* integrated in geany... :) It is just a bit more tricky than i.e. a command line parameter. Maybe uninstalling a language? Moving a file?
And if a translation is wrong/partial, maybe fixing it is the better solution? :)
Sure, it's in my TODO list :) (though in general I prefer untranslated interfaces)
Oh, and I forgot: what about some "go to next funcion" (like clicking on next symbol) keyboard shortcut? (the equivalent of vim's "[[" / "]]" )
So, the rule of the thumb answer for this email is: plugins!
Cheers Eugenio
On 10 May 2011 09:21, Eugenio Rustico jfrusciante@tiscali.it wrote:
2011/5/10 Colomban Wendling lists.ban@herbesfolles.org:
- line wrapping:
IMHO is that this feature is not really useful for programming languages, where line breaking means something particular, so maybe a per-language preferences would be the way to go?
I don't know... I think it is more an "editor" property, independent from language/project/etc, and that there should be a global parameter affecting all open files.
Yes, for line wrapping (which is what you asked for) that might be ok, line wrapping is only a display feature. For line breaking (which adds eols to the file) it is unacceptable as a global parameter.
- is it easy to implement a "reload all" function (useful especially
when working with a versioning system and multiple files change)?
It'd be quite easy, but is this really useful? I mean, normally Geany tells you if a file changed when it gets the focus, so is it really useful to reload all the files you aren't modifying?
Told you there might be some discussion :-). I can see your use-case, the problem is how risky is it, what are the chances that it will make it too easy for the user to do the wrong thing for other use-cases.
[...]
But the LANG env check *is* integrated in geany... :) It is just a bit more tricky than i.e. a command line parameter. Maybe uninstalling a language? Moving a file?
Providing that the set_locale( LC_ALL, "" ) call is the only place I don't think it would be too hard to replace "" with a command line value if its present. But I don't know if thats all that is needed?
[...]
Oh, and I forgot: what about some "go to next funcion" (like clicking on next symbol) keyboard shortcut? (the equivalent of vim's "[[" / "]]" )
So, the rule of the thumb answer for this email is: plugins!
Well it is for things that are language specific, like finding a function. While some such capabilities have been hard coded in the past (eg go to matching brace) the general approach these days is to keep language or use-case specific features out of the core unless they can be configured to support multiple languages. The idea is to keep Geany as small as possible and let users add only the features that they need for the languages they use.
Cheers Lex
Le 10/05/2011 01:39, Lex Trotman a écrit :
On 10 May 2011 09:21, Eugenio Rustico jfrusciante@tiscali.it wrote: [...]
But the LANG env check *is* integrated in geany... :) It is just a bit more tricky than i.e. a command line parameter. Maybe uninstalling a language? Moving a file?
Yeah, if you want to can remove .mo files (even though I'm not convinced is a clean solution), they are the translations. Look into $prefix/share/locale/<lang>/LC_MESSAGES/geany.mo
Providing that the set_locale( LC_ALL, "" ) call is the only place I don't think it would be too hard to replace "" with a command line value if its present. But I don't know if thats all that is needed?
Not sure it'd be really easy to do, since IIRC we set locale before parsing arguments to let e.g. --help be translated. And again, I'm not sure there's much use case for this... if one wants all hes app use the C locale, just set the system locale.
Providing that the set_locale( LC_ALL, "" ) call is the only place I don't think it would be too hard to replace "" with a command line value if its present. But I don't know if thats all that is needed?
Not sure it'd be really easy to do, since IIRC we set locale before parsing arguments to let e.g. --help be translated.
Hmm, potential problem all right.
And again, I'm not sure there's much use case for this... if one wants all hes app use the C locale, just set the system locale.
Yes, perhaps its easier to have a script that sets LANG and runs Geany, call that from the desktop menu and alias geany to it for the command line.
Cheers Lex
Le 10/05/2011 02:10, Lex Trotman a écrit :
And again, I'm not sure there's much use case for this... if one wants all hes app use the C locale, just set the system locale.
Yes, perhaps its easier to have a script that sets LANG and runs Geany, call that from the desktop menu and alias geany to it for the command line.
Or even call that wrapper "geany" and put it in a directory that comes before /usr (or /usr/local or whatever) in the PATH; so no need to modify anything ;)
On Tue, May 10, 2011 at 10:18 AM, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 10/05/2011 02:10, Lex Trotman a écrit :
And again, I'm not sure there's much use case for this... if one wants all hes app use the C locale, just set the system locale.
Yes, perhaps its easier to have a script that sets LANG and runs Geany, call that from the desktop menu and alias geany to it for the command line.
Or even call that wrapper "geany" and put it in a directory that comes before /usr (or /usr/local or whatever) in the PATH; so no need to modify anything ;) _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
My two cents from the list of features requested.
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
Would like definitely the current geany projects is not all that useful. Should be a standard geany feature to have project management.
Sayth
Additional
My two cents from the list of features requested.
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
Would like definitely the current geany projects is not all that useful. Should be a standard geany feature to have project management.
what do you define as "project management"?
Cheers Lex
On Tue, May 10, 2011 at 1:12 PM, Lex Trotman elextr@gmail.com wrote:
My two cents from the list of features requested.
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
Would like definitely the current geany projects is not all that useful. Should be a standard geany feature to have project management.
what do you define as "project management"?
Cheers Lex _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
Project file and source files language libraries and spec file for rake junit for testing etc.
Sayth.
On 10 May 2011 17:19, Sayth Renshaw flebber.crue@gmail.com wrote:
On Tue, May 10, 2011 at 1:12 PM, Lex Trotman elextr@gmail.com wrote:
My two cents from the list of features requested.
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
Would like definitely the current geany projects is not all that useful. Should be a standard geany feature to have project management.
what do you define as "project management"?
Cheers Lex _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
Project file and source files language libraries and spec file for rake junit for testing etc.
Sorry, I don't really understand what you mean, all I can get from that is that you want to use the specific applications rake and junit.
For rake you can simply re-configure the Make build items to use rake commands, and one of them to run the java ... command needed to run junit.
You clearly have something in mind, can you expand on it please.
Cheers Lex
On Tue, May 10, 2011 at 6:19 PM, Lex Trotman elextr@gmail.com wrote:
On 10 May 2011 17:19, Sayth Renshaw flebber.crue@gmail.com wrote:
On Tue, May 10, 2011 at 1:12 PM, Lex Trotman elextr@gmail.com wrote:
My two cents from the list of features requested.
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
Would like definitely the current geany projects is not all that useful. Should be a standard geany feature to have project management.
what do you define as "project management"?
Cheers Lex _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
Project file and source files language libraries and spec file for rake junit for testing etc.
Sorry, I don't really understand what you mean, all I can get from that is that you want to use the specific applications rake and junit.
For rake you can simply re-configure the Make build items to use rake commands, and one of them to run the java ... command needed to run junit.
You clearly have something in mind, can you expand on it please.
Cheers Lex _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
The best thing about geany is that it is powerful because it is simple intuitive and just works.
The closest parallel I can think of is eproject and ecb from emacs.
A project should be a directory with a collection of files that you are managing.
So if I had a project called "new_Project"
new_Project Source_Files main.rb does_Something.rb Something.rhtml (Optional) Spec files(Project Specific) - you have acknlowledged above. Junit/Rake files etc
Sayth
The best thing about geany is that it is powerful because it is simple intuitive and just works.
The closest parallel I can think of is eproject and ecb from emacs.
I haven't used these, but a quick look at the docs doesn't suggest anything very revolutionary. Most of what these do is covered (as best I can tell) by Geany capabilities or plugins.
BTW have you checked on what the plugins can do for you? As you say above the Geany philosophy is KISS, so things are put in plugins so that users can choose the parts they want, they are not forced to load a lot of functionality they don't want. And in a tool supporting lots of computer languages that is important, when I am doing C I don't want that Ruby rubbish, but when I am doing Ruby ...
Of course that needs people to look at the plugins, but other than more enthusiastically urging users to do that, I am not sure how to document them as part of Geany as some are provided (with many thanks) from outside the Geany team.
As mentioned earlier in the thread, there is also another "project" plugin coming that claims to do file handling and filtering for *very* large projects.
A project should be a directory with a collection of files that you are managing.
So if I had a project called "new_Project"
new_Project Source_Files main.rb does_Something.rb Something.rhtml (Optional) Spec files(Project Specific) - you have acknlowledged above. Junit/Rake files etc
Also, you do know that you can define commands in the project settings, and they are only applied when that project is open? This allows you to have different commands for projects in different languages or which use different tools. I even have had a project with two project files one for windows and one for Linux with differing commands, I am not aware of that available anywhere else.
Cheers Lex
On Tue, May 10, 2011 at 9:28 PM, Lex Trotman elextr@gmail.com wrote:
The best thing about geany is that it is powerful because it is simple intuitive and just works.
The closest parallel I can think of is eproject and ecb from emacs.
I haven't used these, but a quick look at the docs doesn't suggest anything very revolutionary. Most of what these do is covered (as best I can tell) by Geany capabilities or plugins.
BTW have you checked on what the plugins can do for you? As you say above the Geany philosophy is KISS, so things are put in plugins so that users can choose the parts they want, they are not forced to load a lot of functionality they don't want. And in a tool supporting lots of computer languages that is important, when I am doing C I don't want that Ruby rubbish, but when I am doing Ruby ...
Of course that needs people to look at the plugins, but other than more enthusiastically urging users to do that, I am not sure how to document them as part of Geany as some are provided (with many thanks) from outside the Geany team.
As mentioned earlier in the thread, there is also another "project" plugin coming that claims to do file handling and filtering for *very* large projects.
A project should be a directory with a collection of files that you are managing.
So if I had a project called "new_Project"
new_Project Source_Files main.rb does_Something.rb Something.rhtml (Optional) Spec files(Project Specific) - you have acknlowledged above. Junit/Rake files etc
Also, you do know that you can define commands in the project settings, and they are only applied when that project is open? This allows you to have different commands for projects in different languages or which use different tools. I even have had a project with two project files one for windows and one for Linux with differing commands, I am not aware of that available anywhere else.
Cheers Lex _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
Also, you do know that you can define commands in the project settings, and they are only applied when that project is open? This allows you to have different commands for projects in different languages or which use different tools. I even have had a project with two project files one for windows and one for Linux with differing commands, I am not aware of that available anywhere else.
Seriously :- ) , no, wow no idea will have a look.
I saw an email previously about a wiki, this may understand all the options available.
Sayth
On Tue, May 10, 2011 at 10:42 PM, Sayth Renshaw flebber.crue@gmail.com wrote:
On Tue, May 10, 2011 at 9:28 PM, Lex Trotman elextr@gmail.com wrote:
The best thing about geany is that it is powerful because it is simple intuitive and just works.
The closest parallel I can think of is eproject and ecb from emacs.
I haven't used these, but a quick look at the docs doesn't suggest anything very revolutionary. Most of what these do is covered (as best I can tell) by Geany capabilities or plugins.
BTW have you checked on what the plugins can do for you? As you say above the Geany philosophy is KISS, so things are put in plugins so that users can choose the parts they want, they are not forced to load a lot of functionality they don't want. And in a tool supporting lots of computer languages that is important, when I am doing C I don't want that Ruby rubbish, but when I am doing Ruby ...
Of course that needs people to look at the plugins, but other than more enthusiastically urging users to do that, I am not sure how to document them as part of Geany as some are provided (with many thanks) from outside the Geany team.
As mentioned earlier in the thread, there is also another "project" plugin coming that claims to do file handling and filtering for *very* large projects.
A project should be a directory with a collection of files that you are managing.
So if I had a project called "new_Project"
new_Project Source_Files main.rb does_Something.rb Something.rhtml (Optional) Spec files(Project Specific) - you have acknlowledged above. Junit/Rake files etc
Also, you do know that you can define commands in the project settings, and they are only applied when that project is open? This allows you to have different commands for projects in different languages or which use different tools. I even have had a project with two project files one for windows and one for Linux with differing commands, I am not aware of that available anywhere else.
Cheers Lex _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
Also, you do know that you can define commands in the project settings, and they are only applied when that project is open? This allows you to have different commands for projects in different languages or which use different tools. I even have had a project with two project files one for windows and one for Linux with differing commands, I am not aware of that available anywhere else.
Seriously :- ) , no, wow no idea will have a look.
I saw an email previously about a wiki, this may understand all the options available.
Sayth
A quick thought maybe plugins being browsed and installed via the plugin manager would give greater access to user contributed and developer contributed content.
Sayth
A quick thought maybe plugins being browsed and installed via the plugin manager would give greater access to user contributed and developer contributed content.
The plugin manager doesn't install anything, it just selects which plugins are loaded into Geany and lets you set their preferences. It can see all plugins that are installed.
A plugin browser that looked over the network (say like Firefox) requires all plugins to be in the same place. That is not the case, because plugins can be provided by external sources. To try to get some consistency, a plugins package has recently been created to group some of them, but not all developers can or wish to meet the requirements or schedules for that package so their plugins are not part of the package. The Geany website points to the plugins website that tries to keep track of all the plugins we know of. All the plugins I referred to before are part of the Geany-plugins package.
Cheers Lex
On 10 May 2011 22:42, Sayth Renshaw flebber.crue@gmail.com wrote:
On Tue, May 10, 2011 at 9:28 PM, Lex Trotman elextr@gmail.com wrote:
The best thing about geany is that it is powerful because it is simple intuitive and just works.
The closest parallel I can think of is eproject and ecb from emacs.
I haven't used these, but a quick look at the docs doesn't suggest anything very revolutionary. Most of what these do is covered (as best I can tell) by Geany capabilities or plugins.
BTW have you checked on what the plugins can do for you? As you say above the Geany philosophy is KISS, so things are put in plugins so that users can choose the parts they want, they are not forced to load a lot of functionality they don't want. And in a tool supporting lots of computer languages that is important, when I am doing C I don't want that Ruby rubbish, but when I am doing Ruby ...
Of course that needs people to look at the plugins, but other than more enthusiastically urging users to do that, I am not sure how to document them as part of Geany as some are provided (with many thanks) from outside the Geany team.
As mentioned earlier in the thread, there is also another "project" plugin coming that claims to do file handling and filtering for *very* large projects.
A project should be a directory with a collection of files that you are managing.
So if I had a project called "new_Project"
new_Project Source_Files main.rb does_Something.rb Something.rhtml (Optional) Spec files(Project Specific) - you have acknlowledged above. Junit/Rake files etc
Also, you do know that you can define commands in the project settings, and they are only applied when that project is open? This allows you to have different commands for projects in different languages or which use different tools. I even have had a project with two project files one for windows and one for Linux with differing commands, I am not aware of that available anywhere else.
Cheers Lex _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
Also, you do know that you can define commands in the project settings, and they are only applied when that project is open? This allows you to have different commands for projects in different languages or which use different tools. I even have had a project with two project files one for windows and one for Linux with differing commands, I am not aware of that available anywhere else.
Seriously :- ) , no, wow no idea will have a look.
I saw an email previously about a wiki, this may understand all the options available.
Weeeell, why are people more likely to read the wiki than the manual? :-)
All the build system capability is in the manual. Because it is very flexible it is maybe the most complex user visible part of Geany so careful reading is needed.
Cheers Lex
Sayth _______________________________________________ Geany mailing list Geany@uvena.de https://lists.uvena.de/cgi-bin/mailman/listinfo/geany
On 05/09/11 16:05, Colomban Wendling wrote:
Hi,
Some fast and partial answers:
Le 10/05/2011 00:39, Eugenio Rustico a écrit :
- a predefined context action for a file or selection could be sending
the text to a pastebin; there are scripts that do it automatically for sprunge (maybe also for pastebin), i.e. "$ filename> sprunge"
AFAIK there's a plugin on the road for this. Ask Matthew Brush -- or wait for a replay from him.
Aside from using the external command + pastebin script mentioned by others, James Geboski is working on nice plugin for pastebins with much more features over at: http://git.jgeboski.org/?p=geany-pastebin.git;a=summary
I'm not 100% what the state of this is, but IIRC it's basically working, maybe ask James.
Cheers, Matthew Brush
On Tue, May 10, 2011 at 01:05, Colomban Wendling lists.ban@herbesfolles.org wrote:
Hi,
Some fast and partial answers:
Le 10/05/2011 00:39, Eugenio Rustico a écrit :
- maybe an "import project" function would be useful, scanning a
directory (recursively?) and opening/adding to project every listed file
I think Jiří Techet's GProject plugin might be of some interest for this (I haven't tried it yet though). The plugin isn't already part of GeanyPlugins, but AFAIK it'll become soon, and you can use it before anyway.
Yes, this is what the plugin really does - you specify patterns of files that should be added to the project and see all of them in a tree in the sidebar. You can get the sources here:
http://gitorious.org/gproject/gproject
Make sure you use Geany from SVN - the plugin wouldn't work correctly otherwise.
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
As above, I guess GProject might help you.
Right.
- it would be nice to have a function that switches to the
correspondent header file, opened or not (opening a new tab in case is not)
I think there is a plugin that provides the feature, but I don't remember which one. Maybe GProject?
Yes. You can configure what files are considered to be headers/sources independently for every project in a separate project tab. You can also assign a keybinding for swapping headers/sources.
Cheers,
Jiri
On 10 May 2011 08:39, Eugenio Rustico jfrusciante@tiscali.it wrote:
Hi, before submitting "official" feature requests I thought someone could comment some points (or maybe this *is* a feature request). Just my personal notes approaching geany after years of kate and vim. I hope I'll have the time (in months) to download geany source and take a look inside, maybe submitting a patch or something.
Welcome.
- line wrapping: changing the options in settings changes the default
from now on, if I already have tens of files opened without the option enabled there is no way to set line wrapping for every doc, right? I had to edit the project file, select the lines of opened files and (with vim): " :'<,'>s/0;//1;//g ". So, the request is: some way to toggle line wrapping for every already opened document?
Not at the moment.
- is it easy to implement a "reload all" function (useful especially
when working with a versioning system and multiple files change)?
Well, its possible, but there would likely be discussion along the lines of the comments I made in the previous email before it was accepted (or not) into Geany.
- why don't you use a standard tag format (e.g. exubertant-ctags)?
there could be plenty of tags ready to use, made with a more flexible tool
IIUC tagmanager code was based on exuberant tags originally, but it has now diverged somewhat, again IIUC exuberant tags was unmaintained for a while. Recently features like in-memory parsing have been added so we can no longer synchronise. Of course its always possible to add the capability to read other tags formats.
- maybe an "import project" function would be useful, scanning a
directory (recursively?) and opening/adding to project every listed file
There will shortly (right Jiří) be a new project plugin that might provide many of the features you want, it is targeted at large projects with lots of files.
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
As you say "project" mostly means a separate session, but it does contain some other settings. In general this is good in my opinion, it doesn't get in the way, unlike other IDEs that do more with their projects but also apply restrictions to how they are used, eg Kdevelop is so wedded to Cmake/make the the only way to run any other command is to have a makefile with it in.
Some settings like the project build settings apply to all the files in the tree (well actually they apply to anything they want to apply to, but tree is what most people make them to apply to).
- it is a bit awkward to disable localization by setting and env
variable; means creating a script and changing e.g. system menu links. Localization should be easily deactivable, especially when a language is not completely translated (or a bit inaccurate)
This is controlled by the localisation libraries (gettext etc). It might be possible to set it once at startup but I am not an expert. That would mean a command line option.
- a predefined context action for a file or selection could be sending
the text to a pastebin; there are scripts that do it automatically for sprunge (maybe also for pastebin), i.e. "$ filename > sprunge"
Not sure what you want, if it requires running an external command, remember that you can define context commands that send text to external commands.
- "go to next error" doesn't always work. Unfortunately I didn't write
down the case in which this didn't worked :( If it happens again, I'll submit a proper communication
Please do, I have to admit I don't use it, I look at the error messages in the message window and click on them to go to the compiler's wild guess at where the error is.
- in filetype_extensions.conf, both C and C++ have .h extension; in a
project with both C and C++ files, geany was not able to recognize which header was a c++ header and which one was a C header. Maybe one could check the extension of a file with the same name? (i.e. if there is a fname.cpp, fname.h must be C++ too, etc.)
Probably better to look for a comment inside the file, eg emacs -*- C++ -*- or vim's equivalent (or both). The matching .c/.cpp file isn't always open or in the same directory as the .h file. It has been proposed before (including by me), but no one (including me :-) has cared enough to implement it.
And as I have ranted here before :-) C++ headers should be .hpp and its *very* unfortunate that Stroustrup chose to keep .h since C++ headers can contain features unacceptable to C. But if its your own software and you have the choice...
- it would be nice to have a function that switches to the
correspondent header file, opened or not (opening a new tab in case is not)
I think Jiří's project plugin can do that, it is a very language specific feature, so it would have to be controlled by the filetype.* files, maybe by listing pairs of extensions.
Thanks... I hope I'm not too wrong.
Cheers Lex
On Tue, May 10, 2011 at 01:22, Lex Trotman elextr@gmail.com wrote:
On 10 May 2011 08:39, Eugenio Rustico jfrusciante@tiscali.it wrote:
- why don't you use a standard tag format (e.g. exubertant-ctags)?
there could be plenty of tags ready to use, made with a more flexible tool
IIUC tagmanager code was based on exuberant tags originally, but it has now diverged somewhat, again IIUC exuberant tags was unmaintained for a while. Recently features like in-memory parsing have been added so we can no longer synchronise. Of course its always possible to add the capability to read other tags formats.
Yes, tagmanager was based on some pre- ctags 5.1 version which is more 9 years old now. I have a branch here
http://gitorious.org/~techy/geany/gproject-geany/commits/tm_cleanup2
which brings the ctags part of tagmanager as close to current SVN version of ctags as possible. I updated only the core parts of ctags, not the parsers, because I know there have been many tunings made by Geany to some of them. Recently I've rebased on top of the changes made by Colomban (MIO introduction). I've also #if 0'd a lot of code not needed by Geany so it's much clearer what's used by Geany and what not (e.g. some of the Colomban's changes were completely useless because they affected code that's never called in Geany). I've been waiting until my other baby-patches get reviewed before posting this monster-series of patches in order not to scare maintainers too much.
Anyway, back to the original question - I too would like to use the ctags format instead of the strange binary format Geany uses so this is one of the things I may have a look at myself in the future.
Cheers,
Jiri
On 05/10/11 15:11, Jiří Techet wrote:
version of ctags as possible. I updated only the core parts of ctags, not the parsers, because I know there have been many tunings made by Geany to some of them. Recently I've rebased on top of the changes made by Colomban (MIO introduction). I've also #if 0'd a lot of code not needed by Geany so it's much clearer what's used by Geany and what not (e.g. some of the Colomban's changes were completely useless because they affected code that's never called in Geany). I've been
Hi Jiří,
Since you seem to know the TM code pretty well, I wonder if you'd like to help me (or tell me how to) add support for tags inside of functions for C (and similar languages).
In a lousy attempt at doing this the other night, the first time I ever looked at the TM code, I managed to get all the function local variables into the Symbol sidebar tree, however, they all end up under the "Variables" node lumped all together and also included more than just variables (ie. func parameters,etc). Ideally, I think the symbols should end up in the tree nested under the function where they are declared in.
FWIW, the change I made to get the symbols in the Symbol treeview was here[1] by adding another fall-through case under 'case DECL_ENUM' for 'case DECL_FUNCTION'.
Any hints or help would be much appreciated.
P.S. Apologies if this has been discussed already, I don't know how to search the mailing list archives.
[1] http://git.geany.org/geany/tree/tagmanager/c.c#n2838
Cheers, Matthew Brush
On Wed, May 11, 2011 at 00:29, Matthew Brush mbrush@codebrainz.ca wrote:
On 05/10/11 15:11, Jiří Techet wrote:
version of ctags as possible. I updated only the core parts of ctags, not the parsers, because I know there have been many tunings made by Geany to some of them. Recently I've rebased on top of the changes made by Colomban (MIO introduction). I've also #if 0'd a lot of code not needed by Geany so it's much clearer what's used by Geany and what not (e.g. some of the Colomban's changes were completely useless because they affected code that's never called in Geany). I've been
Hi Jiří,
Since you seem to know the TM code pretty well, I wonder if you'd like to help me (or tell me how to) add support for tags inside of functions for C (and similar languages).
In a lousy attempt at doing this the other night, the first time I ever looked at the TM code, I managed to get all the function local variables into the Symbol sidebar tree, however, they all end up under the "Variables" node lumped all together and also included more than just variables (ie. func parameters,etc). Ideally, I think the symbols should end up in the tree nested under the function where they are declared in.
FWIW, the change I made to get the symbols in the Symbol treeview was here[1] by adding another fall-through case under 'case DECL_ENUM' for 'case DECL_FUNCTION'.
Any hints or help would be much appreciated.
P.S. Apologies if this has been discussed already, I don't know how to search the mailing list archives.
[1] http://git.geany.org/geany/tree/tagmanager/c.c#n2838
Cheers, Matthew Brush
Hi Matthew,
I'm not really an expert on the parsers themselves - as I wrote, in my branch I updated everything except for the parsers (and did my best to avoid the scary c.c in particular).
Anyway, I'll try to help with what I know. The function which passes the information about the found tag to the tag manager is
void makeTagEntry (const tagEntryInfo *const tag);
and the tagEntryInfo struct contains all the necessary information about the tag. In ctags this function writes a line into the tags file; in Geany it passes the tag information to the tag manager which builds the tree in the sidebar. I believe the information about parents/children in the tree is determined by
const char* scope [2];
of tagEntryInfo. Have a look at addOtherFields() and findScopeHierarchy() which are called from makeTag(). I believe that if you update the scope for local variables to point to the function they are declared in might do the trick. However I don't know anything about tag manager itself (those files with tm_ prefix) so I'm not sure if you'll need to update them as well or if updating c.c is enough.
Hope this helped at least a bit.
Cheers,
Jiri
builds the tree in the sidebar. I believe the information about parents/children in the tree is determined by
const char* scope [2];
of tagEntryInfo. Have a look at addOtherFields() and findScopeHierarchy() which are called from makeTag(). I believe that if you update the scope for local variables to point to the function they are declared in might do the trick. However I don't know anything
Hi Matthew,
Since the scope of members of structs is determined properly, FWIW you might check how that is done.
Cheers Lex
On 05/10/11 15:11, Jiří Techet wrote:
Yes, tagmanager was based on some pre- ctags 5.1 version which is more 9 years old now. I have a branch here
http://gitorious.org/~techy/geany/gproject-geany/commits/tm_cleanup2
which brings the ctags part of tagmanager as close to current SVN version of ctags as possible. I updated only the core parts of ctags, not the parsers, because I know there have been many tunings made by Geany to some of them. Recently I've rebased on top of the changes made by Colomban (MIO introduction). I've also #if 0'd a lot of code not needed by Geany so it's much clearer what's used by Geany and what not (e.g. some of the Colomban's changes were completely useless because they affected code that's never called in Geany). I've been
Not sure if you've seen this[1], to quote the source where I found that "...the patched and up-to-date version of ctags. It ships with Anjuta's package.". It would be cool to merge their fork into the mix as well.
[1] http://git.gnome.org/browse/anjuta/tree/plugins/symbol-db/anjuta-tags
Cheers, Matthew Brush
2011/5/26 Matthew Brush mbrush@codebrainz.ca:
Not sure if you've seen this[1], to quote the source where I found that "...the patched and up-to-date version of ctags. It ships with Anjuta's package.". It would be cool to merge their fork into the mix as well.
[1] http://git.gnome.org/browse/anjuta/tree/plugins/symbol-db/anjuta-tags
I don't know what it is based on, but the best completion I've found in an open source ide is in code::blocks. I say "best" in terms of usability rather than tag parsing (maybe it is also correlated): as I open an existing file it automatically parses its tags and the includes (even stdlib, and also cuda library if I just add path to global settings), without explicitly doing anything.
Eugenio
On Thu, May 26, 2011 at 10:26, Eugenio Rustico jfrusciante@tiscali.it wrote:
2011/5/26 Matthew Brush mbrush@codebrainz.ca:
Not sure if you've seen this[1], to quote the source where I found that "...the patched and up-to-date version of ctags. It ships with Anjuta's package.". It would be cool to merge their fork into the mix as well.
[1] http://git.gnome.org/browse/anjuta/tree/plugins/symbol-db/anjuta-tags
I don't know what it is based on, but the best completion I've found in an open source ide is in code::blocks. I say "best" in terms of usability rather than tag parsing (maybe it is also correlated): as I open an existing file it automatically parses its tags and the includes (even stdlib, and also cuda library if I just add path to global settings), without explicitly doing anything.
They made it by themselves, I actually fixed a few invalid memory access bugs for it two years ago (when I didn't know that Geany exists). The problem of the parser is that it's only for C/C++ but Geany supports many more languages.
Jiri
On Thu, May 26, 2011 at 09:35, Matthew Brush mbrush@codebrainz.ca wrote:
On 05/10/11 15:11, Jiří Techet wrote:
Yes, tagmanager was based on some pre- ctags 5.1 version which is more 9 years old now. I have a branch here
http://gitorious.org/~techy/geany/gproject-geany/commits/tm_cleanup2
which brings the ctags part of tagmanager as close to current SVN version of ctags as possible. I updated only the core parts of ctags, not the parsers, because I know there have been many tunings made by Geany to some of them. Recently I've rebased on top of the changes made by Colomban (MIO introduction). I've also #if 0'd a lot of code not needed by Geany so it's much clearer what's used by Geany and what not (e.g. some of the Colomban's changes were completely useless because they affected code that's never called in Geany). I've been
Not sure if you've seen this[1], to quote the source where I found that "...the patched and up-to-date version of ctags. It ships with Anjuta's package.". It would be cool to merge their fork into the mix as well.
[1] http://git.gnome.org/browse/anjuta/tree/plugins/symbol-db/anjuta-tags
Yes, I've seen it. But the plugin works differently to Geany. Their ctags version in Anjuta is identical to the mainline version - they first run the ctags on the sources and then parse the result and store it to their internal database. Geany's ctags version adds the tags into the tag list immediately when they are found so the ctags sources need to be modified slightly for that (and as a result it doesn't need the code that writes the tags into the output file).
So in order to use Anjuta's version, you'd have to use the whole symbol-db plugins which in my opinion isn't a good choice for Geany because it looks rather heavy-weight (persistent storage of the tags into sqlite database and quite a lot of extra sources).
Cheers,
Jiri
On 05/29/11 16:55, Jiří Techet wrote:
On Thu, May 26, 2011 at 09:35, Matthew Brushmbrush@codebrainz.ca wrote:
On 05/10/11 15:11, Jiří Techet wrote:
Yes, tagmanager was based on some pre- ctags 5.1 version which is more 9 years old now. I have a branch here
http://gitorious.org/~techy/geany/gproject-geany/commits/tm_cleanup2
which brings the ctags part of tagmanager as close to current SVN version of ctags as possible. I updated only the core parts of ctags, not the parsers, because I know there have been many tunings made by Geany to some of them. Recently I've rebased on top of the changes made by Colomban (MIO introduction). I've also #if 0'd a lot of code not needed by Geany so it's much clearer what's used by Geany and what not (e.g. some of the Colomban's changes were completely useless because they affected code that's never called in Geany). I've been
Not sure if you've seen this[1], to quote the source where I found that "...the patched and up-to-date version of ctags. It ships with Anjuta's package.". It would be cool to merge their fork into the mix as well.
[1] http://git.gnome.org/browse/anjuta/tree/plugins/symbol-db/anjuta-tags
Yes, I've seen it. But the plugin works differently to Geany. Their ctags version in Anjuta is identical to the mainline version - they first run the ctags on the sources and then parse the result and store it to their internal database. Geany's ctags version adds the tags into the tag list immediately when they are found so the ctags sources need to be modified slightly for that (and as a result it doesn't need the code that writes the tags into the output file).
So in order to use Anjuta's version, you'd have to use the whole symbol-db plugins which in my opinion isn't a good choice for Geany because it looks rather heavy-weight (persistent storage of the tags into sqlite database and quite a lot of extra sources).
Sorry, I just meant that maybe you should rebase the Geany stuff on anjuta-tags instead of the unmaintained Exuberant Ctags like you mentioned you were doing, since Anjuta seems to have fixed bugs and added lexers since development on Exuberant Ctags stopped (2009?).
Cheers, Matthew Brush
Eugenio Rustico wrote:
[...]
- is it easy to implement a "reload all" function (useful especially
when working with a versioning system and multiple files change)?
If you're working with an open (standard -- session) project, just close the project and reopen it.
[...]
- a "project" in geany is just a session, am I right? Is there any way
to have a project with many files while having just a subset open?
Look at one of the project plugins.
[...]
- a predefined context action for a file or selection could be sending
the text to a pastebin; there are scripts that do it automatically for sprunge (maybe also for pastebin), i.e. "$ filename > sprunge"
Set up a script and add it to custom commands:
http://www.geany.org/manual/current/index.html#sending-text-through-custom-c... ( http://tinyurl.com/3weawvw )
You can also bind a keystroke to each of the first three custom commands.