packages feed

yi-misc-modes-0.13: src/Yi/Lexer/Whitespace.x

-- -*- haskell -*-

-- Lexer for Whitespace
-- (C) Copyright 2009 Deniz Dogan (mad credz)

{
#define NO_ALEX_CONTEXTS
{-# OPTIONS -w  #-}

module Yi.Lexer.Whitespace ( lexer ) where

import Yi.Lexer.Alex hiding (tokenToStyle)
import Yi.Style (StyleName, withBg, red, green, commentStyle)

}

@space = " "
@tab = \t
@nl = [\r\n]

:-

<0> {
@space+  { c spaceStyle }
@tab+    { c tabStyle }
@nl      ;
.        { c commentStyle }
}

{

spaceStyle :: StyleName
spaceStyle = const $ withBg red

tabStyle :: StyleName
tabStyle = const $ withBg green

type Token = StyleName
type HlState = Int

stateToInit x = 0

initState :: HlState
initState = 0

lexer :: StyleLexerASI HlState Token
lexer = StyleLexer
  { _tokenToStyle = id
  , _styleLexer = commonLexer alexScanToken initState
  }

#include "common.hsinc"

}