takoeight0821 / sisku

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sisku

The Polyglot API Search Engine, based on LSP.

Features

Token-based search for signatures.

Token-based search for signatures

Fuzzy search for documentations.

Fuzzy search for documentations

Installation

Prerequisites

Download the source code

git clone https://github.com/takoeight0821/sisku
cd sisku

Build sisku and Install

stack install

Build sisku-elm and Install

cd sisku-elm
npm install
./install.sh

install.sh runs npx parcel build src/index.html and copies the artifact to $XDG_DATA_HOME/sisku/static. If XDG_DATA_HOME is not set, the artifact will be copied to $HOME/.local/share/sisku/static.

Usage

First, create a configuration file, sisku_config.json, and specify the project ID and the language server settings.

$ cat sisku_config.json
{
	"projectId": "com.github.takoeight0821.sisku",
	"lspSettingMap": {
		"haskell": {
			"language": "haskell",
			"root_uri_patterns": [
				"package.yaml"
			],
			"exclude_patterns": [
				"dist-newstyle/**/*.hs"
			],
			"command": "haskell-language-server-wrapper --lsp",
			"extensions": [
				".hs"
			]
		},
		"rust": {
			"language": "rust",
			"root_uri_patterns": [
				"Cargo.toml"
			],
			"exclude_patterns": [],
			"command": "rust-analyzer",
			"extensions": [
				".rs"
			]
		}
	}
}

Then, generate a Sisku index file using the language server. Index files will be stored as $XDG_DATA_HOME/sisku/hovercraft/<projectId>.json.

sisku index-lsp

Launch Sisku server.

sisku serve -p 8080

Access the Sisku interface at http://localhost:8080/

Sisku interface

Configuaration

The default name of the configuration file is sisku_config.json. You can also specify the configuration file by --config option.

sisku index-lsp --config sisku_config.json

This is the list of config fields:

  • projectId (type: string)

      The identifier of the project. It must be unique across all projects indexed in Sisku.
    
  • lspSettingMap (type: object)

      Keys are only used internally, so it can be anything that is not duplicated.
    
  • lspSettingMap..language (type: string)

      Language name
    
  • lspSettingMap..root_uri_patterns (type: string[])

      Patterns with file or directory names for finding root_uri.
    
      (See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#initializeParams )
    
  • lspSettingMap..exclude_patterns (type: string[])

      Patterns specifying files to be excluded from indexing.
    
  • lspSettingMap..command (type: string)

      Command to launch a Language Server
    
  • lspSettingMap..extensions (type: string[])

      List of source code extensions.
    

Comparation

Sisku (current) Sisku (in future) Hoogle Google
Supported Language Haskell(HLS), Rust(rust-analyzer) are tested ALl language supporting LSP Haskell All
Search Algorithm Edit distance Signature match & Full-text search Type match Full-text search
Extensibility ✅ (Only language server is required) ✅ (Language server + some plugin (probably)) ?

About

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Haskell 98.1%Language:Dockerfile 1.9%