GoScintilla 2.7 adds a targeted search facility as well as a facility for highlighting error lines (typically those which generate compiler errors etc).
The history.txt file lists the detailed changes as of course does the .chm help manual.
In terms of error markers; GoScintilla can highlight any lines deemed to contain errors in much the same way that the PB IDE highlights lines which generate compiler errors.
Please note that error markers are implemented by means of a suitable Scintilla marker and share the same margin as GoScintilla bookmarks. For this reason, it is very important that you read the relevant parts of the GoScintilla user manual if using both bookmarks and error markers with the same document etc.
There is a demo showing the error markers in use.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.6 - 16th June 2012
GoScintilla 2.6 fixes yet another problem with code folding! Doh!
Please see the post on page 18 of this thread which gives a tip in using the 'reStyle' parameter introduced to some functions in version 2.5.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.5 - 5th May 2012
GoScintilla 2.5 adds an optional parameter (restyle = #True) to certain functions which can be used to stop GoScintilla redrawing a control's contents whilst we set/reset individual style parameters. Useful if you are altering styles after loading text into a control, otherwise every single alteration will result in the entire document being restyled which can result in some serious delays if there is a lot of text loaded into the control.
You can of course use the GOSCI_SetState() function to restyle the entire document when you are done making alterations.
No existing code will be broken by these changes.
The help manual has been updated.
Thanks to Tenaja.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.4 - 3rd May 2012
GoScintilla 2.4 fixes a massive bug with code folding.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.3 - 4th Apr 2011
GoScintilla 2.3 fixes a bug with GOSCI_InsertLineOfText(). Thanks to Dobro.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.2 - 7th Sep 2010
GoScintilla 2.2 adds a new keyword style : #GOSCI_OPENFOLDKEYWORDNOPRECEDING. This marks a keyword (or multiple keywords) as an open-fold keyword with the proviso that it will only open a new fold on any given line if this symbol is not preceded by any other open-fold keyword. That is, if the line is not already marked as being the start of a new fold etc.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.1 - 22nd July 2010
GoScintilla 2.1 fixes some bugs, adds a new state option (#GOSCI_RESTYLEDOCUMENT to force a complete restyle of the underlying document) and the ability to copy all lexer settings from one control to another.
The new function GOSCI_CopyLexerFromExistingControl() copies all lexer settings (well, most of them anyhow) from one control to another. This is a hard-copy (by-value) in that a snapshot is taken of the source lexer and copied across to the destination lexer. Any future alterations made to the source lexer will not be subsequently copied across to the destination lexer etc. (unless you use this function again). I have no intention, at this stage, of adding a facility to allow multiple controls to effectively use the same lexer (by reference) as this will force me down a path of 'reference counting' and I don't want to get into that with this library.
It remains to be seen how useful this function will be since it would probably be just as easy to use a generic function to set-up a lexer for your GoScintilla controls anyhow.
The function will copy the following components of a styling lexer :
- all keywords, call-tips, delimiters, separators etc.
- lexer state settings (e.g. #GOSCI_LEXERSTATE_ENABLECODEFOLDING). This means that, for example, if the source lexer has code-completion enabled, then the destination lexer will then inherit this setting.
- user-defined line styling functions.
- style indexes and style definitions (even the default style and line number styling etc).
This includes font definitions, colours and so on.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.0 (beta 4) - 18th May 2010
GoScintilla 2 beta 4 adds a few more demo programs showing how to make use of user-defined line styling functions (demos are taken from this forum thread) and adds a new lexer state bit : #GOSCI_LEXERSTATE_ENABLECLICKANYWHERECODEFOLDING.
This new lexer state (following a suggestion from LCD) allows for code folding regions which can be collapsed by clicking any part of the folding margin etc. The default bit : #GOSCI_LEXERSTATE_ENABLECODEFOLDING requires the user to specifically click the appropriate folding marker.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.0 (beta 3) - 11th May 2010
GoScintilla 2, beta 3 fixes a bug reported by Helpy (page 7 of this thread).
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.0 (beta 2) - 11th May 2010
GoScintilla 2, beta 2 (read, attempt 2!) represents a significant improvement over beta 1 which of course was my first attempt to bring some much needed functionality to the original GoScintilla. We now have code-completion, nested call-tips, bookmarks and auto-indentation.
Beta 1 fell apart (as demonstarted by that swine ts-soft! ) on call-tips and my original implementation fell way short of being useful. Beta 2 corrects that and addresses all of the immediate shortcomings highlighted by that cursed ts-soft! Beta 2 also comes with a completely updated manual (though it may be a little rough around the edges at this moment!)
However, whereas GoScintilla 2 beta 1 would break some existing GoScintilla applications, beta 2 has gone three steps further in that regard and breaks all existing GoScintilla apps! As much a pain for myself as anyone else, so all complaints in this respect will be duly ignored!
GoScintilla 2 is now, effectively, a completely different animal to the original GoScintilla and whilst most existing apps can be converted across quite easily, I have expended absolutely no effort within the new manual (or anywhere else for that matter) discussing how you might best proceed with any such upgrades. Instead, I point you to the numerous demo programs, some of which I had to upgrade myself etc.
GoScintilla 2 has been tested on XP, Vista (x86) and, courtesy of that swine ts-soft, also tested on Ubuntu 10.04 x64. Most of the new facilities offered by GoScintilla 2 will not work under MacOS.
See the "History.txt" file for a complete list of changes that underpin GoScintilla 2.
Please see the nxSoftware site for the download.
===============================================
GoScintilla 2.0 (beta 1) - 3rd May 2010
GoScintilla 2 is a huge upgrade over the original GoScintilla helper library and is perhaps what GoScintilla should have been in the first place. My thanks to Peyman for kicking me where it hurts in order to provide the incentive to finally get around to adding some much needed functionality, and for providing some example code.
GoScintilla 2 offers the following improvements :
- Automatic code-completion.
- Automatic nested call-tips (code-tips).
- Bookmarks.
- Auto-indentation.
- Numerous minor improvements.
And now for the bad news...
- GoScintilla 2 is for Purebasic 4.5 (onwards) only.
I took advantage of some of PB 4.5's new facilities to simplify GoScintilla 2 somewhat and, considering the complexity of GoScintilla now, I do not intend supporting two different versions etc. - Some (but not all) existing code designed for the original GoScintilla will not work with GoScintilla 2. Such breakages were inevitable considering the nature of this upgrade. I have removed some functions/flags and moved things around a little. All of GoScintilla's original functionality remains intact, it is just that you may need to modify your existing code slightly.
Please see the "History.txt" file for a complete list of changes.
Please see the nxSoftware site for the download.
===============================================
Version 1.0 - 7th January 2010
Fixed a bug with the Lexer and have included a second version of the "block comments" advanced demo program (as requested by Justin).
Please see the nxSoftware site for the download.
===============================================
Version 1.0 beta 4 - 30th November 2009
This update has been motivated by a desire to allow for automatic code folding of multi-word keywords such as "Function" and "End Function" etc.
GoScintilla's lexer will only work with single word keywords and thus cannot natively support combinations such as "End Function" as representing a close-fold terminal.
Extending GoScintilla's lexer to allow this is not an option as it will slow things down (in my judgement) too much. Instead, we can make use of a user-defined line styling function to supplement the lexer's capabilities.
- Added functions : GOSCI_DecFoldLevel(id) and GOSCI_IncFoldLevel(id) to be used within a user-defined line styling function only.
- Added an additional demo program "Multiword" to demonstrate how to use a very simple user-defined line styling function together with the new functions to implement code folding on the aforementioned "Function" and "End Function" etc.
===============================================
Version 1.0 beta 2 - 27th November 2009
Having just integrated GoScintilla into an existing project, I found myself making the following changes ;
- Fixed a bug with GOSCI_Create() (it wasn't returning any value!)
- Added function : GOSCI_ReplaceSelectedText(id, text$, blnScrollCaretIntoView=#False).
- Modified the GOSCI_SetText() function by the addition of an optional parameter; clearUndoStack (default #False).
Set to non-zero to have the undo stack cleared so that this operation cannot be undone. - Added a new get/set attribute : #GOSCI_WRAPLINES. Turn wrapping lines on/off.
- Added a new get/set attribute : #GOSCI_WRAPLINESVISUALMARKER. Give wrapped lines a visual marker.
- By default, all delimiter characters are also regarded as separators. This can now be over-ruled when adding delimiter keywords by using the new #GOSCI_NONSEPARATINGDELIMITER flag.
This was added to allow one type of delimiter to be styled as part of another delimiter.
E.g. imagine the situation with Purebasic syntax in which we may opt to declare both the # and $ symbols as delimiters in order to style constants and string variables appropriately.
What happens then with the symbol #StringConstant$ ?
The first version of GoScintilla would apply one style to #StringConstant and another style to $ !
By making the $ symbol a non-separating delimiter, however, #StringConstant$ would now be styled correctly as befitting a constant.
Please see the nxSoftware site for the download.
===============================================
Purebasic 4.4 only.
Hi,
GoScintilla is a freely available wrapper around some of the Scintilla API offering easy access to the kinds of functions we would expect from an editing component; adding lines of text, setting fonts, retrieving text etc.
More importantly, however, is the fact that GoScintilla comes with a powerful lexer which can easily be configured for just about any kind of syntax styling and/or code folding. The lexers made available by the developer(s) of the Scintilla library are very specific in that they are configured (in most cases) for a single language syntax only. GoScintilla's lexer is generic and very configurable (and very easy to configure). Those parts of the Scintilla API dealing with syntax styling and code-folding are quite fiddly (and quirky!) and thus I found myself in need of a tool like GoScintilla to make things easier.
A quick screenshot of GoScintilla in action styling some PB type code :
The download package includes the full source, a couple of demos and a full .chm user manual.
Getting the most out of GoScintilla does require a careful read through the manual and, for advanced uses, careful study of the advanced demos.
Please visit the nxSoftware site for more details and the full download.