The latest version of Scintilla has many more filetypes supported than the version currently used by Geany. It's not that hard to port Geany over to using Scintilla 1.75 (I was able to do it this afternoon in about half-an-hour after poking around). This doesn't provide the filetype information used by Geany (e.g. colors, keyword list, etc as defined in filetype.lang) to do the syntax highlighting, but it does put the lexer framework in place, and such information can easily be obtained, maybe from SciTE or the language specification or any other text editor. If I'm right about this, it shouldn't be too hard to add a lot of new languages at once to Geany. Then again, I'm new to Geany's internals, so please correct me if I'm wrong.
Scintilla 1.75 also offers several other improvements. I myself am partial to the fact that it can render indentation guides over blank lines. Does it seem like a good idea to move to this newer version of Scintilla after the 0.13 release?
On Tue, 29 Jan 2008 15:04:46 -0500, Taylor Venable taylor@metasyntax.net wrote:
The latest version of Scintilla has many more filetypes supported than the version currently used by Geany. It's not that hard to port Geany over to using Scintilla 1.75 (I was able to do it this afternoon in
We are already using Scintilla 1.75 in Geany... The embedded Scintilla component is updated mostly soon after a new Scintilla release is out. And we only remove these lexers we don't need and don't use. No need to carry around unused code.
about half-an-hour after poking around). This doesn't provide the
Waste of time, sorry.
filetype information used by Geany (e.g. colors, keyword list, etc as defined in filetype.lang) to do the syntax highlighting, but it does put the lexer framework in place, and such information can easily be obtained, maybe from SciTE or the language specification or any other text editor. If I'm right about this, it shouldn't be too hard to add a lot of new languages at once to Geany. Then again, I'm new to
No, adding(or not removing) the lexers in Scintilla isn't a big deal indeed but all other things related to filetypes in Geany is much more work. In highlighting.c, you need to map the Scintilla style names to the style names used in a data/filetype.foo file which you also have to create. You need to add the filetype in filetypes.c and so on. Adding Scintilla lexers is the easy job.
Scintilla 1.75 also offers several other improvements. I myself am partial to the fact that it can render indentation guides over blank lines. Does it seem like a good idea to move to this newer version of
Not sure what you mean. Did you try Preferences->Display->Show indentation guides?
Regards, Enrico
On Tue, 29 Jan 2008 21:54:50 +0100 Enrico Tröger enrico.troeger@uvena.de wrote:
The embedded Scintilla component is updated mostly soon after a new Scintilla release is out. And we only remove these lexers we don't need and don't use. No need to carry around unused code.
No, adding(or not removing) the lexers in Scintilla isn't a big deal indeed but all other things related to filetypes in Geany is much more work. In highlighting.c, you need to map the Scintilla style names to the style names used in a data/filetype.foo file which you also have to create. You need to add the filetype in filetypes.c and so on.
OK, I didn't realise that these lexers were being purposefully omitted, I thought they were simply not present in whatever version of Scintilla was being used. Although this becomes apparent after checking out SciLexer.h which contains the declarations for all the symbols the left-out lexers provide. I suppose it makes sense to remove support for file types you can't immediately utilize.
I'm slightly curious, though, as to the nature of LexOMS (seems to provide support for Bash?) which is not part of the Scintilla release.
about half-an-hour after poking around). This doesn't provide the
Waste of time, sorry.
Meh, not really. I did get to read some fairly interesting source code. And now that I'm more familiar with how things work, I can get started adding some support for other languages I use (like Smalltalk, Lisp, Erlang) which are in Scintilla but not in Geany. That is, if the project is still interested in providing file types in this way?
Scintilla 1.75 also offers several other improvements. I myself am partial to the fact that it can render indentation guides over blank lines. Does it seem like a good idea to move to this newer version of
Not sure what you mean. Did you try Preferences->Display->Show indentation guides?
I guess I didn't explain that very well, here's an example:
[A]
if (foo) { | bar();
| return 0; }
[B]
if (foo) { | bar(); | | return 0; }
Older versions of Scintilla worked like [A], but 1.75 can work like [B], which I think makes the guide a little more visible (personal preference). There may be a knob that needs to get switched somewhere, though; I know SciTE does this so I'll investigate it for fun.
Hope my many questions aren't too annoying. Geany strikes me as an awesome opportunity to build an ideal universal lightweight tool for programming in any language. I'm trying to get a feel of how I can help it grow, and add the features (like more extensive language support) I think are lacking but within easy reach.
Best regards,
On Tue, 29 Jan 2008 18:58:36 -0500, Taylor Venable taylor@metasyntax.net wrote:
On Tue, 29 Jan 2008 21:54:50 +0100 Enrico Tröger enrico.troeger@uvena.de wrote:
The embedded Scintilla component is updated mostly soon after a new Scintilla release is out. And we only remove these lexers we don't need and don't use. No need to carry around unused code.
No, adding(or not removing) the lexers in Scintilla isn't a big deal indeed but all other things related to filetypes in Geany is much more work. In highlighting.c, you need to map the Scintilla style names to the style names used in a data/filetype.foo file which you also have to create. You need to add the filetype in filetypes.c and so on.
OK, I didn't realise that these lexers were being purposefully omitted, I thought they were simply not present in whatever version of Scintilla was being used. Although this becomes apparent after checking out SciLexer.h which contains the declarations for all the symbols the left-out lexers provide. I suppose it makes sense to remove support for file types you can't immediately utilize.
You mean to remove the #defines in SciLexer.h? I don't think this is a good idea because these #defines doesn't get into the compiled code unless they are actually used. The only impact is on compilation speed but it is probably unnoticeable small. But removing them would heavily increase maintenance work when updating the Scintilla code.
I'm slightly curious, though, as to the nature of LexOMS (seems to provide support for Bash?) which is not part of the Scintilla release.
It's basically a slightly modified LexBash. The OMS filetype was requested by one of the guys behind www.omatrix.com. He heavily asked me to add support for their filetype. So I used LexBash.cxx and modified it a little bit for the OMS format and the result is LexOMS.cxx. Sometime later, I mailed him multiple times but he never answered any mail, so I'm thinking in future we could remove this filetype. But not sure.
about half-an-hour after poking around). This doesn't provide the
Waste of time, sorry.
Meh, not really. I did get to read some fairly interesting source code. And now that I'm more familiar with how things work, I can get started adding some support for other languages I use (like Smalltalk, Lisp, Erlang) which are in Scintilla but not in Geany. That is, if the project is still interested in providing file types in this way?
See below.
Scintilla 1.75 also offers several other improvements. I myself am partial to the fact that it can render indentation guides over blank lines. Does it seem like a good idea to move to this newer version of
Not sure what you mean. Did you try Preferences->Display->Show indentation guides?
I guess I didn't explain that very well, here's an example:
[A]
if (foo) { | bar();
| return 0; }
[B]
if (foo) { | bar(); | | return 0; }
Older versions of Scintilla worked like [A], but 1.75 can work like [B], which I think makes the guide a little more visible (personal
Ok, but the current SVN already does this or am I completely wrong? I also tried it with the 0.12 release and there it also works, see attached screenshot.
Hope my many questions aren't too annoying. Geany strikes me as an awesome opportunity to build an ideal universal lightweight tool for programming in any language. I'm trying to get a feel of how I can help it grow, and add the features (like more extensive language support) I think are lacking but within easy reach.
Well, adding various languages just to have support for them isn't the right way, IMO. See Nick's post(Fri, 25 Jan 2008 13:53:09 +0000) about making the filetype system more flexible.
Regards, Enrico