Refactor cases to move out let binding
This commit is contained in:
parent
35b2fa4282
commit
dedc72789b
@ -1,29 +1,35 @@
|
||||
module Datalog.LSP.Highlight where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Control.Monad.Trans
|
||||
import Data.Either (fromRight)
|
||||
import Data.Map qualified as M
|
||||
import Data.Text qualified as T
|
||||
import Datalog.LSP.Types (DLogLspM, LSPContext (..))
|
||||
import Datalog.LSP.Utils (currentBufferUri)
|
||||
import Datalog.Parser (SrcLoc (..))
|
||||
import Datalog.Syntax (Atom' (Atom), Program' (..), RelId (RelId), Rule' (..), Term' (..))
|
||||
import Language.LSP.Protocol.Message
|
||||
import Language.LSP.Protocol.Types
|
||||
import Language.LSP.Server
|
||||
import Control.Monad.Trans
|
||||
import Control.Concurrent.STM
|
||||
import qualified Data.Map as M
|
||||
import Datalog.LSP.Utils (currentBufferUri)
|
||||
|
||||
tokenHandler :: Handlers DLogLspM
|
||||
tokenHandler = requestHandler SMethod_TextDocumentSemanticTokensFull $ \req responder -> do
|
||||
LSPContext parseRef <- getConfig
|
||||
p <- lift . readTVarIO $ parseRef
|
||||
case M.lookup (currentBufferUri req) p of
|
||||
Nothing -> responder (Left $ TResponseError (InL LSPErrorCodes_RequestFailed) "Doc not bundle" Nothing)
|
||||
Nothing ->
|
||||
responder (Left $ TResponseError (InL LSPErrorCodes_RequestFailed) "Doc not bundle" Nothing)
|
||||
Just (Left _) ->
|
||||
responder (Left $ TResponseError (InL LSPErrorCodes_RequestFailed) "Failed to parse" Nothing)
|
||||
Just (Right prog) -> do
|
||||
let semanticTokens = fromRight (error "") $ makeSemanticTokens defaultSemanticTokensLegend $ highlightProg prog
|
||||
responder (Right $ InL semanticTokens)
|
||||
responder
|
||||
( Right
|
||||
. InL
|
||||
. fromRight (error "")
|
||||
. makeSemanticTokens defaultSemanticTokensLegend
|
||||
$ highlightProg prog
|
||||
)
|
||||
|
||||
highlightProg :: Program' SrcLoc -> [SemanticTokenAbsolute]
|
||||
highlightProg (Program _ rs) = rs >>= highlightRule
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user