Hi, Sorry for the late reply.
Unfortunately, the GLMTextPresentation does not support But, if you went so far, it would actually be cool if you could try to add it :) Cheers, Doru On Mon, Mar 18, 2013 at 11:50 AM, Jesus Nuñez <[email protected]>wrote: > Hello everybody, > > The following code highlights prolog code statically making use of > PPTextHighlighter, I leave the code to share with the community since it > might be of help to someone else. > > Could someone point out how can this be converted to its dynamic > counterpart?; The keystroke handler for GLMTextPresentation and what model > is currently being used for instance to highlight smalltalk code would be > very much appreciated. > > From http://bergel.eu/download/Dyla2010/dyla10_submission_4.pdf I know > that it might be neccesary a fuzzy highlighter as is written at the end of > the code, and it is probably the right object to use but I can not figure > out where to plug it. > > Thank beforehand, > > Jesus > > | text textRenderer textShower | > > text := 'p(Q,R):-q(R), unify_st(X, smalltalk_code), r(T). > q(Q):-d(R). > q(Q).'. > > textRenderer := [ > PPTextHighlighter new > parser: PPPrologParser new; > color: 'small_atom' with: Color blue muchDarker; > bold: 'small_atom'; > color: 'unify_st' with: Color green muchDarker; > bold: 'unify_st'; > color: 'string' with: Color gray muchDarker; > color: 'number' with: Color gray muchDarker; > color: 'boolean' with: Color gray muchDarker; > highlight: text asText. > ]. > " __ > | > <Renders IN> > | > W > GLMTextPresentation > | > <Renders IN> > | > W > GLMMorphicRenderer > " > > textShower := GLMMorphicRenderer new. > (textShower open: ( > GLMTextPresentation new display: textRenderer; renderGlamorouslyOn: > textShower; yourself )) window title: 'Prolog Editor'. > > > > "Here I created a highlighter through the transform method of the grammar" > > grammar := PPPrologParser new. > highlighter := grammar transform: [ :parser | > Transcript show: parser. > parser class = TokenParser > ifTrue: [ parser ==> [ :token | > textShower model highlight: token style range: token interval ] ] > ifFalse: [ parser ] ]. > > text := 'p(Q,R):-q(R), unify_st(X, smalltalk_code), r(T). > q(Q):-d(R). > q(Q).'. > > pp := highlighter parse: text asText. > > -- www.tudorgirba.com "Every thing has its own flow"
