@hackage / scip

Haskell bindings for the SCIP code intelligence protocol

Latest0.8.1

About

Metadata

  • Last updated , by jupblb
  • License Apache-2.0
  • Maintained by: code-intel@sourcegraph.com

  • Lottery factor: 1

Links

Installation

Tested Compilers

  1. 9.10.3

Readme

scip --- Haskell bindings for SCIP

SCIP (pronounced "skip") is a language-agnostic protocol for indexing source code. This package exposes Haskell types and lenses generated from scip.proto via proto-lens.

Usage

import Data.ProtoLens (decodeMessage)
import qualified Data.ByteString as BS
import qualified Proto.Scip as Scip
import           Proto.Scip_Fields (documents, occurrences, symbol)
import           Lens.Family2 ((^.))

main :: IO ()
main = do
  bytes <- BS.readFile "index.scip"
  case decodeMessage bytes :: Either String Scip.Index of
    Left  err -> putStrLn $ "parse error: " ++ err
    Right idx -> mapM_ print
      [ occ ^. symbol
      | doc <- idx ^. documents
      , occ <- doc ^. occurrences
      ]