The Polyglot API Search Engine, based on LSP.
Token-based search for signatures.
Fuzzy search for documentations.
git clone https://github.com/takoeight0821/sisku
cd siskustack installcd sisku-elm
npm install
./install.shinstall.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.
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-lspLaunch Sisku server.
sisku serve -p 8080Access the Sisku interface at http://localhost:8080/
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.jsonThis 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.
| Sisku (current) | Sisku (in future) | Hoogle | ||
|---|---|---|---|---|
| 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)) | ❌ | ? |


