{ "name": "ide-purescript", "displayName": "PureScript IDE", "description": "PureScript IntelliSense, tooltip, errors, code actions with language-server-purescript/purs IDE server", "version": "0.26.7", "publisher": "nwolverson", "author": { "name": "Nicholas Wolverson" }, "repository": { "type": "git", "url": "https://github.com/nwolverson/vscode-ide-purescript.git" }, "bugs": { "url": "https://github.com/nwolverson/vscode-ide-purescript/issues" }, "icon": "images/ps_avatar2.png", "homepage": "https://github.com/nwolverson/vscode-ide-purescript", "license": "MIT", "engines": { "vscode": "^1.63.0" }, "categories": [ "Other" ], "keywords": [ "purescript", "purs" ], "activationEvents": [ "onLanguage:purescript", "workspaceContains:src/**/*.purs", "workspaceContains:spago.dhall" ], "main": "./dist/client.js", "contributes": { "commands": [ { "command": "purescript.build", "title": "PureScript: Build" }, { "command": "purescript.clean", "title": "PureScript: Clean" }, { "command": "purescript.addImport", "title": "PureScript: Add Import" }, { "command": "purescript.addExplicitImport", "title": "PureScript: Add Explicit Import" }, { "command": "purescript.caseSplit", "title": "PureScript: Case Split" }, { "command": "purescript.addClause", "title": "PureScript: Add Clause" }, { "command": "purescript.restartPscIde", "title": "PureScript: Restart/Reconnect purs IDE server" }, { "command": "purescript.startPscIde", "title": "PureScript: Start/Connect purs IDE server" }, { "command": "purescript.stopPscIde", "title": "PureScript: Stop/Disconnect purs IDE server" }, { "command": "purescript.searchPursuit", "title": "PureScript: Search Pursuit" }, { "command": "purescript.searchPursuitModules", "title": "PureScript: Search Pursuit Modules" } ], "codeActions": [ { "languages": [ "purescript" ], "actions": [ { "kind": "source.organizeImports", "title": "Organize Imports", "description": "Reformat imports according to compiler formatting" } ] } ], "configuration": { "title": "PureScript", "properties": { "purescript.pursExe": { "type": "string", "default": "purs", "description": "Location of purs executable (resolved wrt PATH)", "scope": "resource" }, "purescript.pscIdePort": { "type": [ "integer", "null" ], "description": "Port to use for purs IDE server (whether an existing server or to start a new one). By default a random port is chosen (or an existing port in .psc-ide-port if present), if this is specified no attempt will be made to select an alternative port on failure.", "default": null, "scope": "resource" }, "purescript.autoStartPscIde": { "type": "boolean", "default": true, "description": "Whether to automatically start/connect to purs IDE server when editing a PureScript file (includes connecting to an existing running instance). If this is disabled, various features like autocomplete, tooltips, and other type info will not work until start command is run manually.", "scope": "resource" }, "purescript.packagePath": { "type": "string", "default": "", "description": "Path to installed packages. Will be used to control globs passed to IDE server for source locations. Change requires IDE server restart.", "scope": "resource" }, "purescript.addPscPackageSources": { "type": "boolean", "default": false, "description": "Whether to add psc-package sources to the globs passed to the IDE server for source locations (specifically the output of `psc-package sources`, if this is a psc-package project). Update due to adding packages/changing package set requires psc-ide server restart.", "scope": "resource" }, "purescript.addSpagoSources": { "type": "boolean", "default": true, "description": "Whether to add spago sources to the globs passed to the IDE server for source locations (specifically the output of `spago sources`, if this is a spago project). Update due to adding packages/changing package set requires psc-ide server restart.", "scope": "resource" }, "purescript.sourcePath": { "type": "string", "default": "src", "description": "Path to application source root. Will be used to control globs passed to IDE server for source locations. Change requires IDE server restart.", "scope": "resource" }, "purescript.buildCommand": { "type": "string", "default": "spago build --purs-args --json-errors", "description": "Build command to use with arguments. Not passed to shell. eg `spago build --purs-args --json-errors`", "scope": "resource" }, "purescript.fastRebuild": { "type": "boolean", "default": true, "description": "Enable purs IDE server fast rebuild (rebuilding single files on saving them)", "scope": "resource" }, "purescript.buildOpenedFiles": { "type": "boolean", "default": false, "markdownDescription": "**EXPERIMENTAL** Enable purs IDE server fast rebuild of opened files. This includes both newly opened tabs and those present at startup.", "scope": "resource" }, "purescript.censorWarnings": { "title": "Censor warnings", "description": "The warning codes to censor, both for fast rebuild and a full build. Unrelated to any psa setup. e.g.: [\"ShadowedName\",\"MissingTypeDeclaration\"]", "type": "array", "default": [], "items": { "type": "string" }, "scope": "resource" }, "purescript.autocompleteAllModules": { "type": "boolean", "default": true, "description": "Whether to always autocomplete from all built modules, or just those imported in the file. Suggestions from all modules always available by explicitly triggering autocomplete.", "scope": "resource" }, "purescript.autocompleteAddImport": { "type": "boolean", "default": true, "description": "Whether to automatically add imported identifiers when accepting autocomplete result.", "scope": "resource" }, "purescript.autocompleteLimit": { "type": [ "null", "integer" ], "default": null, "description": "Maximum number of results to fetch for an autocompletion request. May improve performance on large projects.", "scope": "resource" }, "purescript.autocompleteGrouped": { "type": "boolean", "default": true, "description": "Whether to group completions in autocomplete results. Requires compiler 0.11.6", "scope": "resource" }, "purescript.importsPreferredModules": { "type": "array", "items": { "type": "string" }, "default": [ "Prelude" ], "description": "Module to prefer to insert when adding imports which have been re-exported. In order of preference, most preferred first.", "scope": "resource" }, "purescript.preludeModule": { "type": "string", "default": "Prelude", "description": "Module to consider as your default prelude, if an auto-complete suggestion comes from this module it will be imported unqualified.", "scope": "resource" }, "purescript.addNpmPath": { "type": "boolean", "default": false, "description": "Whether to add the local npm bin directory to the PATH for purs IDE server and build command.", "scope": "resource" }, "purescript.fullBuildOnSave": { "type": "boolean", "default": false, "description": "Whether to perform a full build on save with the configured build command (rather than IDE server fast rebuild). This is not generally recommended because it is slow, but it does mean that dependent modules are rebuilt as necessary.", "scope": "resource" }, "purescript.fullBuildOnSaveProgress": { "type": "boolean", "default": true, "description": "Whether to show progress for full build on save (if enabled)", "scope": "resource" }, "purescript.pscIdelogLevel": { "type": "string", "default": "", "description": "Log level for purs IDE server", "scope": "resource" }, "purescript.outputDirectory": { "type": "string", "default": "output/", "description": "Override purs ide output directory (output/ if not specified). This should match up to your build command", "scope": "resource" }, "purescript.trace.server": { "scope": "window", "type": "string", "enum": [ "off", "messages", "verbose" ], "default": "off", "description": "Traces the communication between VSCode and the PureScript language service." }, "purescript.codegenTargets": { "scope": "resource", "type": "array", "default": null, "items": { "type": "string" }, "description": "List of codegen targets to pass to the compiler for rebuild. e.g. js, corefn. If not specified (rather than empty array) this will not be passed and the compiler will default to js. Requires 0.12.1+" }, "purescript.foreignExt": { "scope": "resource", "type": "string", "default": "js", "description": "Extension for foreign files" }, "purescript.diagnosticsOnType": { "scope": "resource", "type": "boolean", "default": false, "description": "**EXPERIMENTAL** Enable rebuilding modules for diagnostics automatically on typing. This may provide quicker feedback on errors, but could interfere with other functionality." }, "purescript.diagnosticsOnTypeDebounce": { "scope": "resource", "type": "integer", "default": 100, "description": "**EXPERIMENTAL**" }, "purescript.diagnosticsOnOpen": { "scope": "resource", "type": "boolean", "default": false, "description": "**EXPERIMENTAL** Enable diagnostics on file open, as per diagnostics on type" }, "purescript.formatter": { "scope": "resource", "type": "string", "enum": [ "none", "purty", "purs-tidy", "pose" ], "markdownEnumDescriptions": [ "No formatting provision", "Use purty. Must be installed - [instructions](https://gitlab.com/joneshf/purty#npm)", "Use purs-tidy. Must be installed - [instructions](https://github.com/natefaubion/purescript-tidy)", "Use pose (prettier plugin). Must be installed - [instructions](https://pose.rowtype.yoga/)" ], "default": "purs-tidy", "description": "Tool to use to for formatting. Must be installed and on PATH (or npm installed with addNpmPath set)" }, "purescript.declarationTypeCodeLens": { "scope": "resource", "type": "boolean", "default": true, "description": "Enable declaration codelens to add types to declarations" }, "purescript.exportsCodeLens": { "scope": "resource", "type": "boolean", "default": true, "description": "Enable declaration codelenses for export management" } } }, "keybindings": [ { "command": "purescript.build", "key": "shift+ctrl+b", "mac": "shift+cmd+b", "when": "editorTextFocus && editorLangId == 'purescript'" } ], "breakpoints": [ { "language": "purescript" } ] }, "scripts": { "vscode:prepublish": "run-s prep tsc:* purs:* \"bundle:* -- --minify\"", "build": "run-s prep tsc:* purs:* \"bundle:* -- --sourcemap\"", "dev": "run-s prep tsc:* purs:* 'bundle:client -- --sourcemap'", "prep": "mkdirp out/src dist", "tsc:ffi": "tsc -p src/VSCode/", "tsc:extension": "tsc -p ./", "purs:build": "spago build", "bundle:client": "esbuild out/src/extension.js --bundle --outfile=dist/client.js --external:vscode --format=cjs --platform=node", "bundle:server": "esbuild purescript-language-server --bundle --outfile=dist/server.js --format=cjs --platform=node", "test": "jest", "link_server": "rm -f dist/server.js && cd dist && ln -s ../../purescript-language-server/server.js server.js" }, "extensionDependencies": [ "nwolverson.language-purescript" ], "devDependencies": { "@types/jest": "^27.4.0", "@types/node": "^17.0.17", "@types/vscode": "^1.63.0", "esbuild": "^0.14.21", "jest": "^27.5.1", "mkdirp": "^1.0.4", "npm-run-all": "^4.1.5", "ts-jest": "^27.1.3", "typescript": "^4.5.5" }, "dependencies": { "purescript-language-server": "^0.18.4", "striptags": "^3.2.0", "vscode-languageclient": "^8.0.0-next.12", "vscode-uri": "^3.0.3", "xhr2": "^0.2.1" } }