Hi Phil and Matic,
I have adapted the "MyLexer" code according to your mails. I've added the
"blockStart" and "blockEnd" functions:
--------------------------------------------------------------------------------------
class MyLexer(QsciLexerCustom):
def __init__ ( self , parent):
super (MyLexer, self ). __init__ (parent)
# Initialize styles
# ----------------------------
self .setColor(QColor( "#ff000000" ), 0 ) # Style 0: black
self .setColor(QColor( "#ff7f0000" ), 1 ) # Style 1: red
self .setColor(QColor( "#ff0000bf" ), 2 ) # Style 2: blue
self .setColor(QColor( "#ff007f00" ), 3 ) # Style 3: green
[...]
# Auto indent
# ------------
#self.setAutoIndentStyle(QsciScintilla.AiOpening | QsciScintilla.AiClosing)
self .setAutoIndentStyle(QsciScintilla.AiMaintain)
''''''
def blockStart( self ):
# Define space separated string of indentation symbols
return "{ ( :"
''''''
def blockEnd( self ):
# Define space separated string of indentation symbols
return "} )"
''''''
[...]
''' End class '''
--------------------------------------------------------------------------------------
Unfortunately, it still doesn't work. Do you have any idea why?
Thank you very much for your help. Please feel free to post your answers on the
StackOverflow question:
http://stackoverflow.com/questions/43962669/setautoindentstyle-on-the-qscintilla-lexer-doesnt-work
In this way, many more people can benefit from it ;-)
Kind greetings,
Kristof Mulier
Van: "kukovecmatic" <[email protected]>
Aan: "QScintilla" <[email protected]>
Verzonden: Maandag 15 mei 2017 00:24:01
Onderwerp: [QScintilla] Fw: setAutoIndentStyle doesn't work
> On 14 May 2017, at 11:26 am, [email protected] wrote:
> >
> > Dear QScintilla users,
> >
> > Automatic indentation is a very nice feature offered by QScintilla. When
> > inserting a new line, automatic indentation pushes the cursor to the same
> > indentation level as the previous one. You have two options to switch on
> > this feature: (1) call the function setAutoIndent(True) on the
> > QsciScintilla editor or (2) call the function setAutoIndentStyle(..) on the
> > lexer.
> >
> > The first option works. The second doesn't. For full details on the
> > problem, please take a look at the following StackOverflow question:
> >
> > http://stackoverflow.com/questions/43962669/setautoindentstyle-on-the-qscintilla-lexer-doesnt-work
> >
> >
> > Do you know the answer?
>
> You have to implement the various block method (blockStart(), blockEnd()
> etc).
>
> Phil
Hey Phil,
Tried implementing blockStart() and blockEnd() , but it throws a TypeError if
using for example:
[ https://www.riverbankcomputing.com/mailman/listinfo/qscintilla ]
def blockStart(self):
return "{"
def blockEnd(self):
return "}"
With a bit of trial&error I found that the methods need to return a tuple of
(bytes, int). Why?
Thanks,
Matic
BQ_BEGIN
BQ_END
_______________________________________________
QScintilla mailing list
[email protected]
https://www.riverbankcomputing.com/mailman/listinfo/qscintilla
_______________________________________________
QScintilla mailing list
[email protected]
https://www.riverbankcomputing.com/mailman/listinfo/qscintilla