Dear all, I came across Geany after several years using Eclipse as IDE for C++ on linux. Eclipse has some nice features but the C++ support is lacking, plus the slowness of the JVM and the huge amount of memory it needs is driving me crazy.
I really like geany as it uses scintilla, the only feature I feel is missing is the intellisense like code competition for C++. I would like to ask if anyone is working on a better code competition for C++. I am not talking about ctags but something more advanced that can give me code hints on the fly without the need of rebuilding the index.
cheers, Simone
On Tue, 16 Nov 2010 17:32:01 +0100 Simone Pellegrini spellegrini@dps.uibk.ac.at wrote:
I really like geany as it uses scintilla, the only feature I feel is missing is the intellisense like code competition for C++. I would like to ask if anyone is working on a better code competition for C++. I am not talking about ctags but something more advanced that can give me code hints on the fly without the need of rebuilding the index.
I don't think anyone's working on that ATM. There was some work to make Geany able to parse tags from memory instead of from disk, but it wasn't finished.
Completing based on scope has some minor support but the stumbling block is parsing local variables.
Nick
Le 17/11/2010 15:54, Nick Treleaven a écrit :
On Tue, 16 Nov 2010 17:32:01 +0100 Simone Pellegrini spellegrini@dps.uibk.ac.at wrote:
I really like geany as it uses scintilla, the only feature I feel is missing is the intellisense like code competition for C++. I would like to ask if anyone is working on a better code competition for C++. I am not talking about ctags but something more advanced that can give me code hints on the fly without the need of rebuilding the index.
I don't think anyone's working on that ATM. There was some work to make Geany able to parse tags from memory instead of from disk, but it wasn't finished.
Well, I had an attempt a while ago to achieve this [1], but I didn't finished it already. I used a small library I written for the occasion, called MIO [2], that replicates C's file IO functions, but allowing to choose between memory or file IO. This makes the tagmanager update quite easy.
BTW almost everything is done, but it needs someone to check whether it actually work in memory and don't do some FILE I/O (if Geany correctly demands memory IO, and if the tagmanager doesn't do extra file IO). Unfortunately, I wasn't sure how to check for this... (just thinking I may add a debug statement in my IO object creation functions)
But I can try to bring this upper in my todo-list, and somebody with better knowledge of the tagmanager (Enrico? Nick? :D) may want to help :)
Regards, Colomban
[1] http://gitorious.org/~ban/geany/bans-geany/commits/mio-tagmanager [2] http://gitorious.org/mio
On 18 November 2010 04:05, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 17/11/2010 15:54, Nick Treleaven a écrit :
On Tue, 16 Nov 2010 17:32:01 +0100 Simone Pellegrini spellegrini@dps.uibk.ac.at wrote:
I really like geany as it uses scintilla, the only feature I feel is missing is the intellisense like code competition for C++. I would like to ask if anyone is working on a better code competition for C++. I am not talking about ctags but something more advanced that can give me code hints on the fly without the need of rebuilding the index.
I don't think anyone's working on that ATM. There was some work to make Geany able to parse tags from memory instead of from disk, but it wasn't finished.
Well, I had an attempt a while ago to achieve this [1], but I didn't finished it already. I used a small library I written for the occasion, called MIO [2], that replicates C's file IO functions, but allowing to choose between memory or file IO. This makes the tagmanager update quite easy.
BTW almost everything is done, but it needs someone to check whether it actually work in memory and don't do some FILE I/O (if Geany correctly demands memory IO, and if the tagmanager doesn't do extra file IO). Unfortunately, I wasn't sure how to check for this... (just thinking I may add a debug statement in my IO object creation functions)
You could try using strace to check what file IO is being done.
Cheers Lex
But I can try to bring this upper in my todo-list, and somebody with better knowledge of the tagmanager (Enrico? Nick? :D) may want to help :)
Regards, Colomban
[1] http://gitorious.org/~ban/geany/bans-geany/commits/mio-tagmanager [2] http://gitorious.org/mio _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
On Thu, 18 Nov 2010 09:34:03 +1100, Lex wrote:
On 18 November 2010 04:05, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 17/11/2010 15:54, Nick Treleaven a écrit :
On Tue, 16 Nov 2010 17:32:01 +0100 Simone Pellegrini spellegrini@dps.uibk.ac.at wrote:
I really like geany as it uses scintilla, the only feature I feel is missing is the intellisense like code competition for C++. I would like to ask if anyone is working on a better code competition for C++. I am not talking about ctags but something more advanced that can give me code hints on the fly without the need of rebuilding the index.
I don't think anyone's working on that ATM. There was some work to make Geany able to parse tags from memory instead of from disk, but it wasn't finished.
Well, I had an attempt a while ago to achieve this [1], but I didn't finished it already. I used a small library I written for the occasion, called MIO [2], that replicates C's file IO functions, but allowing to choose between memory or file IO. This makes the tagmanager update quite easy.
BTW almost everything is done, but it needs someone to check whether it actually work in memory and don't do some FILE I/O (if Geany correctly demands memory IO, and if the tagmanager doesn't do extra file IO). Unfortunately, I wasn't sure how to check for this... (just thinking I may add a debug statement in my IO object creation functions)
You could try using strace to check what file IO is being done.
Yup. Or simply use stat(1) to check the atime (provided the filesystem in use supports atime) of the opened file. Though, Lex' suggestion is more secure and can be easily grepped :).
But I can try to bring this upper in my todo-list, and somebody with better knowledge of the tagmanager (Enrico? Nick? :D) may want to help :)
knowledge? me? no no.
Seriously, this looks interesting! Great idea to create MIO!
Since MIO seems quite small (code-size), we maybe even could distribute as static lib with Geany at the beginning and then a bit later once it used and got stable, separate it as a standalone library. If I only would have more time, I'd like to dig into this...
Regards, Enrico
Le 17/11/2010 23:45, Enrico Tröger a écrit :
On Thu, 18 Nov 2010 09:34:03 +1100, Lex wrote:
On 18 November 2010 04:05, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 17/11/2010 15:54, Nick Treleaven a écrit :
On Tue, 16 Nov 2010 17:32:01 +0100 Simone Pellegrini spellegrini@dps.uibk.ac.at wrote:
I really like geany as it uses scintilla, the only feature I feel is missing is the intellisense like code competition for C++. I would like to ask if anyone is working on a better code competition for C++. I am not talking about ctags but something more advanced that can give me code hints on the fly without the need of rebuilding the index.
I don't think anyone's working on that ATM. There was some work to make Geany able to parse tags from memory instead of from disk, but it wasn't finished.
Well, I had an attempt a while ago to achieve this [1], but I didn't finished it already. I used a small library I written for the occasion, called MIO [2], that replicates C's file IO functions, but allowing to choose between memory or file IO. This makes the tagmanager update quite easy.
BTW almost everything is done, but it needs someone to check whether it actually work in memory and don't do some FILE I/O (if Geany correctly demands memory IO, and if the tagmanager doesn't do extra file IO). Unfortunately, I wasn't sure how to check for this... (just thinking I may add a debug statement in my IO object creation functions)
You could try using strace to check what file IO is being done.
Yes, may be a good idea :) Hope there is not toooooooo much open calls in other places... (I'm a bit scared though :-')
Yup. Or simply use stat(1) to check the atime (provided the filesystem in use supports atime) of the opened file.
IIRC, the problem was that the tag manager seems to use some tempfiles in some cases. And such tempfiles are not acceptable for an in-memory parsing, from which we expect real-time parsing. But it's probably easy to at least move these temp files to memory chunks. Need to be investigated deeper.
Though, Lex' suggestion is more secure and can be easily grepped :).
But I can try to bring this upper in my todo-list, and somebody with better knowledge of the tagmanager (Enrico? Nick? :D) may want to help :)
knowledge? me? no no.
Seriously, this looks interesting! Great idea to create MIO!
Thanks, and happy to see you like it :) (but remember, we spoke of this a while ago ;))
Since MIO seems quite small (code-size), we maybe even could distribute as static lib with Geany at the beginning and then a bit later once it used and got stable, separate it as a standalone library.
I actually wrote it partially thinking about using it as a static library because Geany's policy is not to have much dependencies. But I'm of the "share everything" school, so I feel even better with it as a shared library :) About the stability, even though it would be completely blind to think it is stable regarding the few real-world tests I made, I think the test suite should help a lot for this -- and since all tests passed (and still passes I guess!), it should work quite correctly :)
If I only would have more time, I'd like to dig into this...
Almost the same here... but I'll try to move it up in my todo-list.
Regards, Colomban
On 18 November 2010 11:10, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 17/11/2010 23:45, Enrico Tröger a écrit :
On Thu, 18 Nov 2010 09:34:03 +1100, Lex wrote:
On 18 November 2010 04:05, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 17/11/2010 15:54, Nick Treleaven a écrit :
On Tue, 16 Nov 2010 17:32:01 +0100 Simone Pellegrini spellegrini@dps.uibk.ac.at wrote:
I really like geany as it uses scintilla, the only feature I feel is missing is the intellisense like code competition for C++. I would like to ask if anyone is working on a better code competition for C++. I am not talking about ctags but something more advanced that can give me code hints on the fly without the need of rebuilding the index.
I don't think anyone's working on that ATM. There was some work to make Geany able to parse tags from memory instead of from disk, but it wasn't finished.
Well, I had an attempt a while ago to achieve this [1], but I didn't finished it already. I used a small library I written for the occasion, called MIO [2], that replicates C's file IO functions, but allowing to choose between memory or file IO. This makes the tagmanager update quite easy.
BTW almost everything is done, but it needs someone to check whether it actually work in memory and don't do some FILE I/O (if Geany correctly demands memory IO, and if the tagmanager doesn't do extra file IO). Unfortunately, I wasn't sure how to check for this... (just thinking I may add a debug statement in my IO object creation functions)
You could try using strace to check what file IO is being done.
Yes, may be a good idea :) Hope there is not toooooooo much open calls in other places... (I'm a bit scared though :-')
Well be sure to use -eopen on strace and I'd only have one file at a time open in Geany for the tagmanager to crunch, that way you should only get less than ten files opened unless tagmanager is being naughty.
Cheers Lex
Yup. Or simply use stat(1) to check the atime (provided the filesystem in use supports atime) of the opened file.
IIRC, the problem was that the tag manager seems to use some tempfiles in some cases. And such tempfiles are not acceptable for an in-memory parsing, from which we expect real-time parsing. But it's probably easy to at least move these temp files to memory chunks. Need to be investigated deeper.
Though, Lex' suggestion is more secure and can be easily grepped :).
But I can try to bring this upper in my todo-list, and somebody with better knowledge of the tagmanager (Enrico? Nick? :D) may want to help :)
knowledge? me? no no.
Seriously, this looks interesting! Great idea to create MIO!
Thanks, and happy to see you like it :) (but remember, we spoke of this a while ago ;))
Since MIO seems quite small (code-size), we maybe even could distribute as static lib with Geany at the beginning and then a bit later once it used and got stable, separate it as a standalone library.
I actually wrote it partially thinking about using it as a static library because Geany's policy is not to have much dependencies. But I'm of the "share everything" school, so I feel even better with it as a shared library :) About the stability, even though it would be completely blind to think it is stable regarding the few real-world tests I made, I think the test suite should help a lot for this -- and since all tests passed (and still passes I guess!), it should work quite correctly :)
If I only would have more time, I'd like to dig into this...
Almost the same here... but I'll try to move it up in my todo-list.
Regards, Colomban _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
I think these kind of support for code competition are obsolete and there are new tools popping out that can make the work much more easier.
For example I have been working for a long time with the clang-LLVM compiler. Clang is a C frontend and It offers a very easy interface to do code completition on the fly. It's very impressive the way it works and it's really fast. I have developed myself a small project where I integrated the code completition support on a scintilla based editor and it really takes few lines of code.
If you want I can show the code.
The main problem is whether is a problem for you to have this dependency on clang.
cheers, Simone
On 11/18/2010 01:18 AM, Lex Trotman wrote:
On 18 November 2010 11:10, Colomban Wendlinglists.ban@herbesfolles.org wrote:
Le 17/11/2010 23:45, Enrico Tröger a écrit :
On Thu, 18 Nov 2010 09:34:03 +1100, Lex wrote:
On 18 November 2010 04:05, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 17/11/2010 15:54, Nick Treleaven a écrit :
On Tue, 16 Nov 2010 17:32:01 +0100 Simone Pellegrinispellegrini@dps.uibk.ac.at wrote:
> I really like geany as it uses scintilla, the only feature I feel > is missing is the intellisense like code competition for C++. I > would like to ask if anyone is working on a better code > competition for C++. I am not talking about ctags but something > more advanced that can give me code hints on the fly without the > need of rebuilding the index. I don't think anyone's working on that ATM. There was some work to make Geany able to parse tags from memory instead of from disk, but it wasn't finished.
Well, I had an attempt a while ago to achieve this [1], but I didn't finished it already. I used a small library I written for the occasion, called MIO [2], that replicates C's file IO functions, but allowing to choose between memory or file IO. This makes the tagmanager update quite easy.
BTW almost everything is done, but it needs someone to check whether it actually work in memory and don't do some FILE I/O (if Geany correctly demands memory IO, and if the tagmanager doesn't do extra file IO). Unfortunately, I wasn't sure how to check for this... (just thinking I may add a debug statement in my IO object creation functions)
You could try using strace to check what file IO is being done.
Yes, may be a good idea :) Hope there is not toooooooo much open calls in other places... (I'm a bit scared though :-')
Well be sure to use -eopen on strace and I'd only have one file at a time open in Geany for the tagmanager to crunch, that way you should only get less than ten files opened unless tagmanager is being naughty.
Cheers Lex
Yup. Or simply use stat(1) to check the atime (provided the filesystem in use supports atime) of the opened file.
IIRC, the problem was that the tag manager seems to use some tempfiles in some cases. And such tempfiles are not acceptable for an in-memory parsing, from which we expect real-time parsing. But it's probably easy to at least move these temp files to memory chunks. Need to be investigated deeper.
Though, Lex' suggestion is more secure and can be easily grepped :).
But I can try to bring this upper in my todo-list, and somebody with better knowledge of the tagmanager (Enrico? Nick? :D) may want to help :)
knowledge? me? no no.
Seriously, this looks interesting! Great idea to create MIO!
Thanks, and happy to see you like it :) (but remember, we spoke of this a while ago ;))
Since MIO seems quite small (code-size), we maybe even could distribute as static lib with Geany at the beginning and then a bit later once it used and got stable, separate it as a standalone library.
I actually wrote it partially thinking about using it as a static library because Geany's policy is not to have much dependencies. But I'm of the "share everything" school, so I feel even better with it as a shared library :) About the stability, even though it would be completely blind to think it is stable regarding the few real-world tests I made, I think the test suite should help a lot for this -- and since all tests passed (and still passes I guess!), it should work quite correctly :)
If I only would have more time, I'd like to dig into this...
Almost the same here... but I'll try to move it up in my todo-list.
Regards, Colomban _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
On 18 November 2010 19:12, Simone Pellegrini spellegrini@dps.uibk.ac.at wrote:
I think these kind of support for code competition are obsolete and there are new tools popping out that can make the work much more easier.
For example I have been working for a long time with the clang-LLVM compiler. Clang is a C frontend and It offers a very easy interface to do code completition on the fly. It's very impressive the way it works and it's really fast. I have developed myself a small project where I integrated the code completition support on a scintilla based editor and it really takes few lines of code.
If you want I can show the code.
All contributions welcome, Clang seems a very fast compiler (and very picky about warnings) the few times I've used it.
But this is of course only a solution for C (and is Clangs C++ working yet?). Still it could be added as a plugin i think.
Columbans suggestion applies to any tagmanager language.
The main problem is whether is a problem for you to have this dependency on clang.
Probably not a problem for a plugin to have that dependency.
Cheers Lex
cheers, Simone
On 11/18/2010 01:18 AM, Lex Trotman wrote:
On 18 November 2010 11:10, Colomban Wendlinglists.ban@herbesfolles.org wrote:
Le 17/11/2010 23:45, Enrico Tröger a écrit :
On Thu, 18 Nov 2010 09:34:03 +1100, Lex wrote:
On 18 November 2010 04:05, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 17/11/2010 15:54, Nick Treleaven a écrit : > > On Tue, 16 Nov 2010 17:32:01 +0100 > Simone Pellegrinispellegrini@dps.uibk.ac.at wrote: > >> I really like geany as it uses scintilla, the only feature I feel >> is missing is the intellisense like code competition for C++. I >> would like to ask if anyone is working on a better code >> competition for C++. I am not talking about ctags but something >> more advanced that can give me code hints on the fly without the >> need of rebuilding the index. > > I don't think anyone's working on that ATM. There was some work to > make Geany able to parse tags from memory instead of from disk, but > it wasn't finished.
Well, I had an attempt a while ago to achieve this [1], but I didn't finished it already. I used a small library I written for the occasion, called MIO [2], that replicates C's file IO functions, but allowing to choose between memory or file IO. This makes the tagmanager update quite easy.
BTW almost everything is done, but it needs someone to check whether it actually work in memory and don't do some FILE I/O (if Geany correctly demands memory IO, and if the tagmanager doesn't do extra file IO). Unfortunately, I wasn't sure how to check for this... (just thinking I may add a debug statement in my IO object creation functions)
You could try using strace to check what file IO is being done.
Yes, may be a good idea :) Hope there is not toooooooo much open calls in other places... (I'm a bit scared though :-')
Well be sure to use -eopen on strace and I'd only have one file at a time open in Geany for the tagmanager to crunch, that way you should only get less than ten files opened unless tagmanager is being naughty.
Cheers Lex
Yup. Or simply use stat(1) to check the atime (provided the filesystem in use supports atime) of the opened file.
IIRC, the problem was that the tag manager seems to use some tempfiles in some cases. And such tempfiles are not acceptable for an in-memory parsing, from which we expect real-time parsing. But it's probably easy to at least move these temp files to memory chunks. Need to be investigated deeper.
Though, Lex' suggestion is more secure and can be easily grepped :).
But I can try to bring this upper in my todo-list, and somebody with better knowledge of the tagmanager (Enrico? Nick? :D) may want to help :)
knowledge? me? no no.
Seriously, this looks interesting! Great idea to create MIO!
Thanks, and happy to see you like it :) (but remember, we spoke of this a while ago ;))
Since MIO seems quite small (code-size), we maybe even could distribute as static lib with Geany at the beginning and then a bit later once it used and got stable, separate it as a standalone library.
I actually wrote it partially thinking about using it as a static library because Geany's policy is not to have much dependencies. But I'm of the "share everything" school, so I feel even better with it as a shared library :) About the stability, even though it would be completely blind to think it is stable regarding the few real-world tests I made, I think the test suite should help a lot for this -- and since all tests passed (and still passes I guess!), it should work quite correctly :)
If I only would have more time, I'd like to dig into this...
Almost the same here... but I'll try to move it up in my todo-list.
Regards, Colomban _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
On 11/18/2010 09:24 AM, Lex Trotman wrote:
On 18 November 2010 19:12, Simone Pellegrinispellegrini@dps.uibk.ac.at wrote:
I think these kind of support for code competition are obsolete and there are new tools popping out that can make the work much more easier.
For example I have been working for a long time with the clang-LLVM compiler. Clang is a C frontend and It offers a very easy interface to do code completition on the fly. It's very impressive the way it works and it's really fast. I have developed myself a small project where I integrated the code completition support on a scintilla based editor and it really takes few lines of code.
If you want I can show the code.
All contributions welcome, Clang seems a very fast compiler (and very picky about warnings) the few times I've used it.
But this is of course only a solution for C (and is Clangs C++ working yet?). Still it could be added as a plugin i think.
Clang also supports C++ and ObjectiveC. C++ support is not complete yet but lot of work has been done and soon it will kick ass even for C++ :)
cheers, Simone
Columbans suggestion applies to any tagmanager language.
The main problem is whether is a problem for you to have this dependency on clang.
Probably not a problem for a plugin to have that dependency.
Cheers Lex
cheers, Simone
On 11/18/2010 01:18 AM, Lex Trotman wrote:
On 18 November 2010 11:10, Colomban Wendlinglists.ban@herbesfolles.org wrote:
Le 17/11/2010 23:45, Enrico Tröger a écrit :
On Thu, 18 Nov 2010 09:34:03 +1100, Lex wrote:
On 18 November 2010 04:05, Colomban Wendling lists.ban@herbesfolles.org wrote: > Le 17/11/2010 15:54, Nick Treleaven a écrit : >> On Tue, 16 Nov 2010 17:32:01 +0100 >> Simone Pellegrinispellegrini@dps.uibk.ac.at wrote: >> >>> I really like geany as it uses scintilla, the only feature I feel >>> is missing is the intellisense like code competition for C++. I >>> would like to ask if anyone is working on a better code >>> competition for C++. I am not talking about ctags but something >>> more advanced that can give me code hints on the fly without the >>> need of rebuilding the index. >> I don't think anyone's working on that ATM. There was some work to >> make Geany able to parse tags from memory instead of from disk, but >> it wasn't finished. > Well, I had an attempt a while ago to achieve this [1], but I didn't > finished it already. I used a small library I written for the > occasion, called MIO [2], that replicates C's file IO functions, but > allowing to choose between memory or file IO. This makes the > tagmanager update quite easy. > > BTW almost everything is done, but it needs someone to check whether > it actually work in memory and don't do some FILE I/O (if Geany > correctly demands memory IO, and if the tagmanager doesn't do extra > file IO). Unfortunately, I wasn't sure how to check for this... > (just thinking I may add a debug statement in my IO object creation > functions) You could try using strace to check what file IO is being done.
Yes, may be a good idea :) Hope there is not toooooooo much open calls in other places... (I'm a bit scared though :-')
Well be sure to use -eopen on strace and I'd only have one file at a time open in Geany for the tagmanager to crunch, that way you should only get less than ten files opened unless tagmanager is being naughty.
Cheers Lex
Yup. Or simply use stat(1) to check the atime (provided the filesystem in use supports atime) of the opened file.
IIRC, the problem was that the tag manager seems to use some tempfiles in some cases. And such tempfiles are not acceptable for an in-memory parsing, from which we expect real-time parsing. But it's probably easy to at least move these temp files to memory chunks. Need to be investigated deeper.
Though, Lex' suggestion is more secure and can be easily grepped :).
> But I can try to bring this upper in my todo-list, and somebody with > better knowledge of the tagmanager (Enrico? Nick? :D) may want to > help :)
knowledge? me? no no.
Seriously, this looks interesting! Great idea to create MIO!
Thanks, and happy to see you like it :) (but remember, we spoke of this a while ago ;))
Since MIO seems quite small (code-size), we maybe even could distribute as static lib with Geany at the beginning and then a bit later once it used and got stable, separate it as a standalone library.
I actually wrote it partially thinking about using it as a static library because Geany's policy is not to have much dependencies. But I'm of the "share everything" school, so I feel even better with it as a shared library :) About the stability, even though it would be completely blind to think it is stable regarding the few real-world tests I made, I think the test suite should help a lot for this -- and since all tests passed (and still passes I guess!), it should work quite correctly :)
If I only would have more time, I'd like to dig into this...
Almost the same here... but I'll try to move it up in my todo-list.
Regards, Colomban _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Le 18/11/2010 09:12, Simone Pellegrini a écrit :
I think these kind of support for code competition are obsolete and there are new tools popping out that can make the work much more easier.
For example I have been working for a long time with the clang-LLVM compiler. Clang is a C frontend and It offers a very easy interface to do code completition on the fly. It's very impressive the way it works and it's really fast. I have developed myself a small project where I integrated the code completition support on a scintilla based editor and it really takes few lines of code.
I also thinks that Clang seems really interesting as a live-code-helper tool if integrated to the editor/IDE. Not only for completion, but also for on-the-fly code checking, etc.
This said, and as Lex said, this only applies for C, ObjC, and C++ (AFAIR Clang now compiles boost, so it seems to become usable for C++).
If you want I can show the code.
The main problem is whether is a problem for you to have this dependency on clang.
For Geany itself, it isn't something possible I think; but for a plugin it is not a problem.
If you'd write such a plugin, I'd be really interested :)
Regards, Colomban
On 19 November 2010 00:18, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 18/11/2010 09:12, Simone Pellegrini a écrit :
I think these kind of support for code competition are obsolete and there are new tools popping out that can make the work much more easier.
For example I have been working for a long time with the clang-LLVM compiler. Clang is a C frontend and It offers a very easy interface to do code completition on the fly. It's very impressive the way it works and it's really fast. I have developed myself a small project where I integrated the code completition support on a scintilla based editor and it really takes few lines of code.
I also thinks that Clang seems really interesting as a live-code-helper tool if integrated to the editor/IDE. Not only for completion, but also for on-the-fly code checking, etc.
This said, and as Lex said, this only applies for C, ObjC, and C++ (AFAIR Clang now compiles boost, so it seems to become usable for C++).
Ok, it hadn't got that far last time I tried it.
If you want I can show the code.
The main problem is whether is a problem for you to have this dependency on clang.
For Geany itself, it isn't something possible I think; but for a plugin it is not a problem.
If you'd write such a plugin, I'd be really interested :)
+1
Cheers Lex
Regards, Colomban _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
On 11/18/2010 11:59 PM, Lex Trotman wrote:
On 19 November 2010 00:18, Colomban Wendlinglists.ban@herbesfolles.org wrote:
Le 18/11/2010 09:12, Simone Pellegrini a écrit :
I think these kind of support for code competition are obsolete and there are new tools popping out that can make the work much more easier.
For example I have been working for a long time with the clang-LLVM compiler. Clang is a C frontend and It offers a very easy interface to do code completition on the fly. It's very impressive the way it works and it's really fast. I have developed myself a small project where I integrated the code completition support on a scintilla based editor and it really takes few lines of code.
I also thinks that Clang seems really interesting as a live-code-helper tool if integrated to the editor/IDE. Not only for completion, but also for on-the-fly code checking, etc.
This said, and as Lex said, this only applies for C, ObjC, and C++ (AFAIR Clang now compiles boost, so it seems to become usable for C++).
Ok, it hadn't got that far last time I tried it.
If you want I can show the code.
The main problem is whether is a problem for you to have this dependency on clang.
For Geany itself, it isn't something possible I think; but for a plugin it is not a problem.
If you'd write such a plugin, I'd be really interested :)
+1
Cheers Lex
I see then.
As I said I already have a working example based on scintilla, I would start studying the plugin architecture of Geany then. I ll keep you posted.
cheers, Simone
Regards, Colomban _______________________________________________ Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Geany-devel mailing list Geany-devel@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel
Hi!
Le 18/11/2010 01:18, Lex Trotman a écrit :
You could try using strace to check what file IO is being done.
Yes, may be a good idea :) Hope there is not toooooooo much open calls in other places... (I'm a bit scared though :-')
Well be sure to use -eopen on strace and I'd only have one file at a time open in Geany for the tagmanager to crunch, that way you should only get less than ten files opened unless tagmanager is being naughty.
Thanks, works very well!
So, my patch seems to work fine, no extra IO on tag update :) (at least with C, Python, PHP and SH)
However, there are the following opens at each sidebar update:
open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-namespace.png", O_RDONLY) = 16 open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-class.png", O_RDONLY) = 16 open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-method.png", O_RDONLY) = 16 open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-member.png", O_RDONLY) = 16 open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-struct.png", O_RDONLY) = 16 open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-struct.png", O_RDONLY) = 16 open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-macro.png", O_RDONLY) = 16 open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-var.png", O_RDONLY) = 16 open("/usr/local/share/icons/hicolor/16x16/apps/classviewer-other.png", O_RDONLY) = 16
I've not investigated, but this is probably bad for near-real-time updates.
If I only would have more time, I'd like to dig into this...
Almost the same here... but I'll try to move it up in my todo-list.
I've worked a bit on this (well, not that much indeed, but still), and the point I got last summer seems quite interesting! As said above, the tagmanager seems not to do any more IO on tag update (if we enable buffer updates in Geany, of course), so it should be quite OK.
However, there are still part of the tagamanager that uses plain C file IO calls (fopen, fread & co); but I'm unable to find what exactly should be ported to MIO, and what should not. Either because I don't know what the code actually does, or because the tagamanager creates FILE streams itself, so Geany cannot give it a buffer anyway. Actually, I've ported what I understood parsers are using, and everything that was touched by this modification. So, if anyone has any clues on what else should be ported and what is not needed, please go ahead an either port it or tell me :)
So, 2 patches attached:
First, an update of the patch that ports (a part of) the tagmanager to MIO for it to apply to trunk (no code change, but the patch didn't apply for cosmetic reasons) [1]. It is 0001-First-tagmanager-move-to-MIO-I-O.patch
Second, a toy patch to: 1) activate buffer parsing (a simple #if change) 2) adds IDLE call on editor notification for live parsing. The code is a bit ugly, but that's only to test the thing.
Testing, reviewing & co appreciated :)
An important this that should be done IMHO before live symbol updating could be really done is to avoid flickering in the symbol table. For example, don't clear the whole list and recreate it, but rather simply remove/add the necessary items.
Regards, Colomban
[1] Unfortunately, since the repository I cloned on Gitorious isn't updated since June, I can't use this repository for updates. So I do this on my local copy for now.