[racket] Anyone familiar with mercurial? Add syntax coloring to github?
> And a terrible shame that you cannot reuse the syntax colorer we
> already have! (but you may find the source code in
> collects/syntax-color/scheme-lexer.rkt to be useful?)
Yes I suppose there's duplication among DrRacket, Quack, pygments, et
al. A central web service could be a neat way to go in some
always-connected future.
Meanwhile, Jens helped me again (thanks!) pointing me to how to
generate the `keywords' and `built-ins' lists using
`namespace-mapped-symbols'. I incorporated that. Noticed and fixed a
few bugs.
I'll marinade in it for a day or two, then consider giving pygments a
pull request.
BTW I'm trying to keep in mind this is a syntax highlighter, not
checker. I want something better than the Scheme highlighter, but
sometimes "the perfect is the enemy of the good". Trying to handle
every number literal variation perfectly, is me probably already
trying too hard.
On Mon, Aug 13, 2012 at 8:53 AM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
> Its great to see someone working on this!
>
> And a terrible shame that you cannot reuse the syntax colorer we
> already have! (but you may find the source code in
> collects/syntax-color/scheme-lexer.rkt to be useful?)
>
> Robby
>
> On Mon, Aug 13, 2012 at 7:46 AM, Greg Hendershott
> <greghendershott at gmail.com> wrote:
>> I spent more time on this, including trying to recognzie all the
>> variations of numbers like these:
>>
>> (values
>> ;; #b
>> #b1.1
>> #b-1.1
>> #b1e1
>> #b1/1
>> #b0/1
>> #b1e-1
>> #b101
>> #b2 ;highlight as error
>>
>> ;; #d
>> #d-1.23
>> #d1.123
>> #d1e3
>> #d1e-22
>> #d1/2
>> #d-1/2
>> #d1
>> #d-1
>> #dZ ;highlight as error
>>
>> ;; No # reader prefix -- same as #d
>> -1.23
>> 1.123
>> 1e3
>> 1e-22
>> 1/2
>> -1/2
>> 1
>> -1
>>
>> ;; #e
>> #e-1.23
>> #e1.123
>> #e1e3
>> #e1e-22
>> #e1
>> #e-1
>> #e1/2
>> #e-1/2
>> #eZ ;highlight as error
>>
>> ;; #i always float
>> #i-1.23
>> #i1.123
>> #i1e3
>> #i1e-22
>> #i1/2
>> #i-1/2
>> #i1
>> #i-1
>> #iZ ;highlight as error
>>
>> ;; #o
>> #o777.777
>> #o-777.777
>> #o777e777
>> #o777e-777
>> #o3/7
>> #o-3/7
>> #o777
>> #o-777
>> #08 ;highlight as error
>>
>> ;; #x
>> #x-f.f
>> #xf.f
>> #x-f
>> #xf
>> #xG ;highlight as error
>>
>> )
>>
>> In this way (Python):
>>
>> ## numbers: Keep in mind Racket reader hash prefixes,
>> ## which can denote the base or the type. These don't map
>> ## neatly onto pygment token types; some judgment calls
>> ## here. Note that none of these regexps attempt to
>> ## exclude identifiers that start with a number, such as a
>> ## variable named "100-Continue".
>>
>> # #b
>> (r'#b[-+]?[01]+\.[01]+', Number.Float),
>> (r'#b[01]+e[-+]?[01]+', Number.Float),
>> (r'#b[-+]?[01]/[01]+', Number),
>> (r'#b[-+]?[01]+', Number.Integer),
>> (r'#b\S*', Error),
>>
>> # #d OR no hash prefix
>> (r'(#d)?[-+]?\d+\.\d+', Number.Float),
>> (r'(#d)?\d+e[-+]?\d+', Number.Float),
>> (r'(#d)?[-+]?\d+/\d+', Number),
>> (r'(#d)?[-+]?\d+', Number.Integer),
>> (r'#d\S*', Error),
>>
>> # #e
>> (r'#e[-+]?\d+\.\d+', Number.Float),
>> (r'#e\d+e[-+]?\d+', Number.Float),
>> (r'#e[-+]?\d+/\d+', Number),
>> (r'#e[-+]?\d+', Number),
>> (r'#e\S*', Error),
>>
>> # #i is always inexact-real, i.e. float
>> (r'#i[-+]?\d+\.\d+', Number.Float),
>> (r'#i\d+e[-+]?\d+', Number.Float),
>> (r'#i[-+]?\d+/\d+', Number.Float),
>> (r'#i[-+]?\d+', Number.Float),
>> (r'#i\S*', Error),
>>
>> # #o
>> (r'#o[-+]?[0-7]+\.[0-7]+', Number.Oct),
>> (r'#o[0-7]+e[-+]?[0-7]+', Number.Oct),
>> (r'#o[-+]?[0-7]+/[0-7]+', Number.Oct),
>> (r'#o[-+]?[0-7]+', Number.Oct),
>> (r'#o\S*', Error),
>>
>> # #x
>> (r'#x[-+]?[0-9a-fA-F]+\.[0-9a-fA-F]+', Number.Hex),
>> # the exponent variation (e.g. #x1e1) is N/A
>> (r'#x[-+]?[0-9a-fA-F]+/[0-9a-fA-F]+', Number.Hex),
>> (r'#x[-+]?[0-9a-fA-F]+', Number.Hex),
>> (r'#x\S*', Error),
>>
>> Talk about brain burn. :)
>>
>> Also, Jens pointed out I should also handle curly braces. () = [] = {}
>>
>> https://bitbucket.org/greghendershott/pygments-main
>>
>> On Sun, Aug 12, 2012 at 6:50 PM, Sam Tobin-Hochstadt <samth at ccs.neu.edu> wrote:
>>> Wonderful! This will make the github experience much nicer.
>>>
>>> On Sun, Aug 12, 2012 at 6:36 PM, Greg Hendershott
>>> <greghendershott at gmail.com> wrote:
>>>> So I followed up on this.
>>>>
>>>> https://bitbucket.org/greghendershott/pygments-main/changeset/240e51e2da13b079482f6b61c215280224f89f06
>>>>
>>>> ~~~~~
>>>> Add RacketLexer.
>>>>
>>>> Previously Racket files were handled by SchemeLexer. Instead, use a
>>>> proper RacketLexer, which handles Racket more appropriately:
>>>>
>>>> 1. Treat square brackets like parentheses.
>>>> 2. Expanded list of keywords.
>>>> 3. Different file extensions, MIME types, etc.
>>>> 4. Handle #:keyword arguments.
>>>> 5. Handle more number literals (e.g. #xFF, #o777, 2e2, #e232, etc.).
>>>> 6. Handle #| ... |# multiline comments (although NOT nested).
>>>> ~~~~~
>>>>
>>>> Before I give them a pull request, I wanted to give folks here a
>>>> chance to critique it (or even flatly veto it).
>>>>
>>>> Again, the goal is that eventually this would flow through to GitHub,
>>>> and improve the readability of Racket repos and gists.
>>>>
>>>> On Thu, Jun 2, 2011 at 12:49 PM, John Clements
>>>> <clements at brinckerhoff.org> wrote:
>>>>>
>>>>> On Jun 2, 2011, at 6:43 AM, Eli Barzilay wrote:
>>>>>
>>>>>> An hour ago, Vincent St-Amour wrote:
>>>>>>> At Thu, 2 Jun 2011 06:30:00 -0400,
>>>>>>> Greg Hendershott wrote:
>>>>>>>> aliases = ['scheme', 'scm', 'ss', 'racket', 'rkt']
>>>>>>>
>>>>>>> rktl would probably fit in there too.
>>>>>>
>>>>>> (This is just in case someone takes it on more seriously: IIRC,
>>>>>> another issue with pygments was either ignoring square brackets, or
>>>>>> highlighting them as errors.)
>>>>>
>>>>> Gosh, sounds complicated. I don't think any of us could handle that!
>>>>>
>>>>>
>>>>> John (goad, goad) Clements
>>>>>
>>>>>
>>>>> _________________________________________________
>>>>> For list-related administrative tasks:
>>>>> http://lists.racket-lang.org/listinfo/users
>>>> ____________________
>>>> Racket Users list:
>>>> http://lists.racket-lang.org/users
>>>
>>>
>>>
>>> --
>>> sam th
>>> samth at ccs.neu.edu
>> ____________________
>> Racket Users list:
>> http://lists.racket-lang.org/users